@rubytech/create-sitedesk-code 0.1.340

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 (2951) 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__/base-toolchain-deps.test.js +67 -0
  4. package/dist/__tests__/brand-fonts.test.js +102 -0
  5. package/dist/__tests__/brew-install.test.js +151 -0
  6. package/dist/__tests__/brew-resolve.test.js +138 -0
  7. package/dist/__tests__/bundler-rewrite-platform-lib.test.js +68 -0
  8. package/dist/__tests__/cdp-port-no-silent-fallback.test.js +53 -0
  9. package/dist/__tests__/claude-ptys-slice.test.js +25 -0
  10. package/dist/__tests__/cloudflared-slice.test.js +20 -0
  11. package/dist/__tests__/cloudflared-version-pin.test.js +24 -0
  12. package/dist/__tests__/entitlement-flag.test.js +43 -0
  13. package/dist/__tests__/init-logging.test.js +85 -0
  14. package/dist/__tests__/install-immutability.test.js +55 -0
  15. package/dist/__tests__/installer-settings-permissions.test.js +220 -0
  16. package/dist/__tests__/installer-specialist-registration.test.js +116 -0
  17. package/dist/__tests__/launchd-plist.test.js +195 -0
  18. package/dist/__tests__/macos-darwin-branch.test.js +83 -0
  19. package/dist/__tests__/macos-version.test.js +96 -0
  20. package/dist/__tests__/peer-brand-detect.test.js +103 -0
  21. package/dist/__tests__/platform-detect.test.js +50 -0
  22. package/dist/__tests__/platform-port-stamp.test.js +28 -0
  23. package/dist/__tests__/plugin-install.test.js +145 -0
  24. package/dist/__tests__/port-canonicalisation.test.js +200 -0
  25. package/dist/__tests__/preflight-port-classifier.test.js +330 -0
  26. package/dist/__tests__/premium-bundle-gate.test.js +59 -0
  27. package/dist/__tests__/premium-mcp-discover.test.js +127 -0
  28. package/dist/__tests__/samba-provision.test.js +294 -0
  29. package/dist/__tests__/snap-chromium.test.js +115 -0
  30. package/dist/__tests__/tier-flag.test.js +53 -0
  31. package/dist/__tests__/watchdog-deferred-arming.test.js +64 -0
  32. package/dist/apt-resolve.js +73 -0
  33. package/dist/brew-install.js +180 -0
  34. package/dist/brew-resolve.js +68 -0
  35. package/dist/bundler-rewrite-platform-lib.js +29 -0
  36. package/dist/index.js +4418 -0
  37. package/dist/init-logging.js +28 -0
  38. package/dist/install-immutability.js +59 -0
  39. package/dist/launchd-plist.js +68 -0
  40. package/dist/lib/plugin-install.js +126 -0
  41. package/dist/lib/premium-mcp-discover.js +41 -0
  42. package/dist/macos-version.js +53 -0
  43. package/dist/peer-brand-detect.js +39 -0
  44. package/dist/permissions-seed.js +147 -0
  45. package/dist/pinned-binaries.js +12 -0
  46. package/dist/platform-detect.js +36 -0
  47. package/dist/port-resolution.js +209 -0
  48. package/dist/preflight-port-classifier.js +222 -0
  49. package/dist/samba-provision.js +275 -0
  50. package/dist/snap-chromium.js +88 -0
  51. package/dist/specialist-registration.js +78 -0
  52. package/dist/tier-flag.js +85 -0
  53. package/dist/uninstall.js +952 -0
  54. package/package.json +35 -0
  55. package/payload/platform/.docs/search-surface-contract.md +58 -0
  56. package/payload/platform/config/brand-registry.json +28 -0
  57. package/payload/platform/config/brand.json +82 -0
  58. package/payload/platform/docs/superpowers/plans/2026-06-02-task-610-follower-202-retry.md +372 -0
  59. package/payload/platform/docs/superpowers/plans/2026-06-04-public-agent-knowledge-delivery.md +230 -0
  60. package/payload/platform/docs/superpowers/specs/2026-06-02-task-610-follower-202-retry-design.md +116 -0
  61. package/payload/platform/lib/account-enumeration/dist/__tests__/enumerate.test.d.ts +2 -0
  62. package/payload/platform/lib/account-enumeration/dist/__tests__/enumerate.test.d.ts.map +1 -0
  63. package/payload/platform/lib/account-enumeration/dist/__tests__/enumerate.test.js +88 -0
  64. package/payload/platform/lib/account-enumeration/dist/__tests__/enumerate.test.js.map +1 -0
  65. package/payload/platform/lib/account-enumeration/dist/__tests__/validate-env.test.d.ts +2 -0
  66. package/payload/platform/lib/account-enumeration/dist/__tests__/validate-env.test.d.ts.map +1 -0
  67. package/payload/platform/lib/account-enumeration/dist/__tests__/validate-env.test.js +55 -0
  68. package/payload/platform/lib/account-enumeration/dist/__tests__/validate-env.test.js.map +1 -0
  69. package/payload/platform/lib/account-enumeration/dist/index.d.ts +82 -0
  70. package/payload/platform/lib/account-enumeration/dist/index.d.ts.map +1 -0
  71. package/payload/platform/lib/account-enumeration/dist/index.js +185 -0
  72. package/payload/platform/lib/account-enumeration/dist/index.js.map +1 -0
  73. package/payload/platform/lib/account-enumeration/src/__tests__/enumerate.test.ts +94 -0
  74. package/payload/platform/lib/account-enumeration/src/__tests__/validate-env.test.ts +57 -0
  75. package/payload/platform/lib/account-enumeration/src/index.ts +218 -0
  76. package/payload/platform/lib/account-enumeration/tsconfig.json +8 -0
  77. package/payload/platform/lib/admin-access-password/__tests__/index.test.ts +142 -0
  78. package/payload/platform/lib/admin-access-password/dist/index.d.ts +49 -0
  79. package/payload/platform/lib/admin-access-password/dist/index.d.ts.map +1 -0
  80. package/payload/platform/lib/admin-access-password/dist/index.js +198 -0
  81. package/payload/platform/lib/admin-access-password/dist/index.js.map +1 -0
  82. package/payload/platform/lib/admin-access-password/src/index.ts +176 -0
  83. package/payload/platform/lib/admin-access-password/tsconfig.json +8 -0
  84. package/payload/platform/lib/admin-conversation-purge/dist/index.d.ts +54 -0
  85. package/payload/platform/lib/admin-conversation-purge/dist/index.d.ts.map +1 -0
  86. package/payload/platform/lib/admin-conversation-purge/dist/index.js +84 -0
  87. package/payload/platform/lib/admin-conversation-purge/dist/index.js.map +1 -0
  88. package/payload/platform/lib/admin-conversation-purge/src/index.ts +120 -0
  89. package/payload/platform/lib/admin-conversation-purge/tsconfig.json +8 -0
  90. package/payload/platform/lib/admins-write/dist/index.d.ts +86 -0
  91. package/payload/platform/lib/admins-write/dist/index.d.ts.map +1 -0
  92. package/payload/platform/lib/admins-write/dist/index.js +245 -0
  93. package/payload/platform/lib/admins-write/dist/index.js.map +1 -0
  94. package/payload/platform/lib/admins-write/src/index.ts +305 -0
  95. package/payload/platform/lib/admins-write/tsconfig.json +8 -0
  96. package/payload/platform/lib/aeo-llms-txt-writer/dist/index.d.ts +33 -0
  97. package/payload/platform/lib/aeo-llms-txt-writer/dist/index.d.ts.map +1 -0
  98. package/payload/platform/lib/aeo-llms-txt-writer/dist/index.js +119 -0
  99. package/payload/platform/lib/aeo-llms-txt-writer/dist/index.js.map +1 -0
  100. package/payload/platform/lib/aeo-llms-txt-writer/src/index.ts +172 -0
  101. package/payload/platform/lib/aeo-llms-txt-writer/tsconfig.json +8 -0
  102. package/payload/platform/lib/anthropic-key/dist/index.d.ts +22 -0
  103. package/payload/platform/lib/anthropic-key/dist/index.d.ts.map +1 -0
  104. package/payload/platform/lib/anthropic-key/dist/index.js +232 -0
  105. package/payload/platform/lib/anthropic-key/dist/index.js.map +1 -0
  106. package/payload/platform/lib/brand-templating/dist/index.d.ts +18 -0
  107. package/payload/platform/lib/brand-templating/dist/index.d.ts.map +1 -0
  108. package/payload/platform/lib/brand-templating/dist/index.js +69 -0
  109. package/payload/platform/lib/brand-templating/dist/index.js.map +1 -0
  110. package/payload/platform/lib/brand-templating/src/index.ts +76 -0
  111. package/payload/platform/lib/brand-templating/tsconfig.json +8 -0
  112. package/payload/platform/lib/device-url/dist/index.d.ts +44 -0
  113. package/payload/platform/lib/device-url/dist/index.d.ts.map +1 -0
  114. package/payload/platform/lib/device-url/dist/index.js +68 -0
  115. package/payload/platform/lib/device-url/dist/index.js.map +1 -0
  116. package/payload/platform/lib/device-url/src/index.ts +78 -0
  117. package/payload/platform/lib/device-url/tsconfig.json +8 -0
  118. package/payload/platform/lib/embed-client/dist/index.d.ts +6 -0
  119. package/payload/platform/lib/embed-client/dist/index.d.ts.map +1 -0
  120. package/payload/platform/lib/embed-client/dist/index.js +93 -0
  121. package/payload/platform/lib/embed-client/dist/index.js.map +1 -0
  122. package/payload/platform/lib/embed-client/src/index.ts +101 -0
  123. package/payload/platform/lib/embed-client/tsconfig.json +8 -0
  124. package/payload/platform/lib/entitlement/PUBKEY-HASH.txt +1 -0
  125. package/payload/platform/lib/entitlement/dist/canonicalize.d.ts +26 -0
  126. package/payload/platform/lib/entitlement/dist/canonicalize.d.ts.map +1 -0
  127. package/payload/platform/lib/entitlement/dist/canonicalize.js +54 -0
  128. package/payload/platform/lib/entitlement/dist/canonicalize.js.map +1 -0
  129. package/payload/platform/lib/entitlement/dist/index.d.ts +76 -0
  130. package/payload/platform/lib/entitlement/dist/index.d.ts.map +1 -0
  131. package/payload/platform/lib/entitlement/dist/index.js +293 -0
  132. package/payload/platform/lib/entitlement/dist/index.js.map +1 -0
  133. package/payload/platform/lib/entitlement/rubytech-pubkey.pem +3 -0
  134. package/payload/platform/lib/graph-mcp/dist/__tests__/cypher-validate-write.test.d.ts +2 -0
  135. package/payload/platform/lib/graph-mcp/dist/__tests__/cypher-validate-write.test.d.ts.map +1 -0
  136. package/payload/platform/lib/graph-mcp/dist/__tests__/cypher-validate-write.test.js +97 -0
  137. package/payload/platform/lib/graph-mcp/dist/__tests__/cypher-validate-write.test.js.map +1 -0
  138. package/payload/platform/lib/graph-mcp/dist/__tests__/cypher-validate.test.d.ts +2 -0
  139. package/payload/platform/lib/graph-mcp/dist/__tests__/cypher-validate.test.d.ts.map +1 -0
  140. package/payload/platform/lib/graph-mcp/dist/__tests__/cypher-validate.test.js +112 -0
  141. package/payload/platform/lib/graph-mcp/dist/__tests__/cypher-validate.test.js.map +1 -0
  142. package/payload/platform/lib/graph-mcp/dist/__tests__/schema-cache.test.d.ts +2 -0
  143. package/payload/platform/lib/graph-mcp/dist/__tests__/schema-cache.test.d.ts.map +1 -0
  144. package/payload/platform/lib/graph-mcp/dist/__tests__/schema-cache.test.js +163 -0
  145. package/payload/platform/lib/graph-mcp/dist/__tests__/schema-cache.test.js.map +1 -0
  146. package/payload/platform/lib/graph-mcp/dist/__tests__/schema-cypher-parser.test.d.ts +2 -0
  147. package/payload/platform/lib/graph-mcp/dist/__tests__/schema-cypher-parser.test.d.ts.map +1 -0
  148. package/payload/platform/lib/graph-mcp/dist/__tests__/schema-cypher-parser.test.js +89 -0
  149. package/payload/platform/lib/graph-mcp/dist/__tests__/schema-cypher-parser.test.js.map +1 -0
  150. package/payload/platform/lib/graph-mcp/dist/__tests__/warnings-envelope.test.d.ts +2 -0
  151. package/payload/platform/lib/graph-mcp/dist/__tests__/warnings-envelope.test.d.ts.map +1 -0
  152. package/payload/platform/lib/graph-mcp/dist/__tests__/warnings-envelope.test.js +140 -0
  153. package/payload/platform/lib/graph-mcp/dist/__tests__/warnings-envelope.test.js.map +1 -0
  154. package/payload/platform/lib/graph-mcp/dist/cypher-rewrite-stamp.d.ts +37 -0
  155. package/payload/platform/lib/graph-mcp/dist/cypher-rewrite-stamp.d.ts.map +1 -0
  156. package/payload/platform/lib/graph-mcp/dist/cypher-rewrite-stamp.js +333 -0
  157. package/payload/platform/lib/graph-mcp/dist/cypher-rewrite-stamp.js.map +1 -0
  158. package/payload/platform/lib/graph-mcp/dist/cypher-shim-read.d.ts +85 -0
  159. package/payload/platform/lib/graph-mcp/dist/cypher-shim-read.d.ts.map +1 -0
  160. package/payload/platform/lib/graph-mcp/dist/cypher-shim-read.js +93 -0
  161. package/payload/platform/lib/graph-mcp/dist/cypher-shim-read.js.map +1 -0
  162. package/payload/platform/lib/graph-mcp/dist/cypher-shim-write.d.ts +71 -0
  163. package/payload/platform/lib/graph-mcp/dist/cypher-shim-write.d.ts.map +1 -0
  164. package/payload/platform/lib/graph-mcp/dist/cypher-shim-write.js +168 -0
  165. package/payload/platform/lib/graph-mcp/dist/cypher-shim-write.js.map +1 -0
  166. package/payload/platform/lib/graph-mcp/dist/cypher-validate.d.ts +50 -0
  167. package/payload/platform/lib/graph-mcp/dist/cypher-validate.d.ts.map +1 -0
  168. package/payload/platform/lib/graph-mcp/dist/cypher-validate.js +197 -0
  169. package/payload/platform/lib/graph-mcp/dist/cypher-validate.js.map +1 -0
  170. package/payload/platform/lib/graph-mcp/dist/index.d.ts +26 -0
  171. package/payload/platform/lib/graph-mcp/dist/index.d.ts.map +1 -0
  172. package/payload/platform/lib/graph-mcp/dist/index.js +845 -0
  173. package/payload/platform/lib/graph-mcp/dist/index.js.map +1 -0
  174. package/payload/platform/lib/graph-mcp/dist/schema-cache.d.ts +76 -0
  175. package/payload/platform/lib/graph-mcp/dist/schema-cache.d.ts.map +1 -0
  176. package/payload/platform/lib/graph-mcp/dist/schema-cache.js +218 -0
  177. package/payload/platform/lib/graph-mcp/dist/schema-cache.js.map +1 -0
  178. package/payload/platform/lib/graph-mcp/dist/schema-cypher-parser.d.ts +42 -0
  179. package/payload/platform/lib/graph-mcp/dist/schema-cypher-parser.d.ts.map +1 -0
  180. package/payload/platform/lib/graph-mcp/dist/schema-cypher-parser.js +87 -0
  181. package/payload/platform/lib/graph-mcp/dist/schema-cypher-parser.js.map +1 -0
  182. package/payload/platform/lib/graph-mcp/src/__tests__/cypher-validate-write.test.ts +150 -0
  183. package/payload/platform/lib/graph-mcp/src/__tests__/cypher-validate.test.ts +141 -0
  184. package/payload/platform/lib/graph-mcp/src/__tests__/schema-cache.test.ts +169 -0
  185. package/payload/platform/lib/graph-mcp/src/__tests__/schema-cypher-parser.test.ts +99 -0
  186. package/payload/platform/lib/graph-mcp/src/__tests__/warnings-envelope.test.ts +151 -0
  187. package/payload/platform/lib/graph-mcp/src/cypher-rewrite-stamp.ts +349 -0
  188. package/payload/platform/lib/graph-mcp/src/cypher-shim-read.ts +141 -0
  189. package/payload/platform/lib/graph-mcp/src/cypher-shim-write.ts +240 -0
  190. package/payload/platform/lib/graph-mcp/src/cypher-validate.ts +249 -0
  191. package/payload/platform/lib/graph-mcp/src/index.ts +1074 -0
  192. package/payload/platform/lib/graph-mcp/src/schema-cache.ts +243 -0
  193. package/payload/platform/lib/graph-mcp/src/schema-cypher-parser.ts +84 -0
  194. package/payload/platform/lib/graph-mcp/tsconfig.json +8 -0
  195. package/payload/platform/lib/graph-search/dist/boosts.d.ts +39 -0
  196. package/payload/platform/lib/graph-search/dist/boosts.d.ts.map +1 -0
  197. package/payload/platform/lib/graph-search/dist/boosts.js +57 -0
  198. package/payload/platform/lib/graph-search/dist/boosts.js.map +1 -0
  199. package/payload/platform/lib/graph-search/dist/dedup.d.ts +29 -0
  200. package/payload/platform/lib/graph-search/dist/dedup.d.ts.map +1 -0
  201. package/payload/platform/lib/graph-search/dist/dedup.js +97 -0
  202. package/payload/platform/lib/graph-search/dist/dedup.js.map +1 -0
  203. package/payload/platform/lib/graph-search/dist/index.d.ts +342 -0
  204. package/payload/platform/lib/graph-search/dist/index.d.ts.map +1 -0
  205. package/payload/platform/lib/graph-search/dist/index.js +848 -0
  206. package/payload/platform/lib/graph-search/dist/index.js.map +1 -0
  207. package/payload/platform/lib/graph-search/dist/query-expansion.d.ts +37 -0
  208. package/payload/platform/lib/graph-search/dist/query-expansion.d.ts.map +1 -0
  209. package/payload/platform/lib/graph-search/dist/query-expansion.js +101 -0
  210. package/payload/platform/lib/graph-search/dist/query-expansion.js.map +1 -0
  211. package/payload/platform/lib/graph-search/dist/route.d.ts +29 -0
  212. package/payload/platform/lib/graph-search/dist/route.d.ts.map +1 -0
  213. package/payload/platform/lib/graph-search/dist/route.js +53 -0
  214. package/payload/platform/lib/graph-search/dist/route.js.map +1 -0
  215. package/payload/platform/lib/graph-search/dist/rrf-fusion.d.ts +31 -0
  216. package/payload/platform/lib/graph-search/dist/rrf-fusion.d.ts.map +1 -0
  217. package/payload/platform/lib/graph-search/dist/rrf-fusion.js +57 -0
  218. package/payload/platform/lib/graph-search/dist/rrf-fusion.js.map +1 -0
  219. package/payload/platform/lib/graph-search/src/__tests__/bm25-label-gate.test.ts +88 -0
  220. package/payload/platform/lib/graph-search/src/__tests__/bm25-only.test.ts +129 -0
  221. package/payload/platform/lib/graph-search/src/__tests__/bm25-strong-bypass-threshold.test.ts +126 -0
  222. package/payload/platform/lib/graph-search/src/__tests__/boosts.test.ts +59 -0
  223. package/payload/platform/lib/graph-search/src/__tests__/brochure-threshold.test.ts +136 -0
  224. package/payload/platform/lib/graph-search/src/__tests__/dedup.test.ts +83 -0
  225. package/payload/platform/lib/graph-search/src/__tests__/escape-and-normalise.test.ts +53 -0
  226. package/payload/platform/lib/graph-search/src/__tests__/expand-batch.test.ts +206 -0
  227. package/payload/platform/lib/graph-search/src/__tests__/fulltext-coverage.test.ts +348 -0
  228. package/payload/platform/lib/graph-search/src/__tests__/hybrid.test.ts +355 -0
  229. package/payload/platform/lib/graph-search/src/__tests__/route.test.ts +62 -0
  230. package/payload/platform/lib/graph-search/src/__tests__/rrf-fusion.test.ts +39 -0
  231. package/payload/platform/lib/graph-search/src/__tests__/vector-index-coverage.test.ts +198 -0
  232. package/payload/platform/lib/graph-search/src/__tests__/vector-threshold.test.ts +170 -0
  233. package/payload/platform/lib/graph-search/src/boosts.ts +61 -0
  234. package/payload/platform/lib/graph-search/src/dedup.ts +108 -0
  235. package/payload/platform/lib/graph-search/src/index.ts +1144 -0
  236. package/payload/platform/lib/graph-search/src/route.ts +70 -0
  237. package/payload/platform/lib/graph-search/src/rrf-fusion.ts +62 -0
  238. package/payload/platform/lib/graph-search/tsconfig.json +9 -0
  239. package/payload/platform/lib/graph-search/vitest.config.ts +9 -0
  240. package/payload/platform/lib/graph-style/dist/index.d.ts +84 -0
  241. package/payload/platform/lib/graph-style/dist/index.d.ts.map +1 -0
  242. package/payload/platform/lib/graph-style/dist/index.js +378 -0
  243. package/payload/platform/lib/graph-style/dist/index.js.map +1 -0
  244. package/payload/platform/lib/graph-style/src/__tests__/parity.test.ts +332 -0
  245. package/payload/platform/lib/graph-style/src/index.ts +382 -0
  246. package/payload/platform/lib/graph-style/tsconfig.json +9 -0
  247. package/payload/platform/lib/graph-style/vitest.config.ts +9 -0
  248. package/payload/platform/lib/graph-trash/dist/index.d.ts +106 -0
  249. package/payload/platform/lib/graph-trash/dist/index.d.ts.map +1 -0
  250. package/payload/platform/lib/graph-trash/dist/index.js +340 -0
  251. package/payload/platform/lib/graph-trash/dist/index.js.map +1 -0
  252. package/payload/platform/lib/graph-trash/package.json +7 -0
  253. package/payload/platform/lib/graph-trash/src/index.ts +493 -0
  254. package/payload/platform/lib/graph-trash/tsconfig.json +8 -0
  255. package/payload/platform/lib/graph-write/dist/__tests__/account-id-gate.test.d.ts +2 -0
  256. package/payload/platform/lib/graph-write/dist/__tests__/account-id-gate.test.d.ts.map +1 -0
  257. package/payload/platform/lib/graph-write/dist/__tests__/account-id-gate.test.js +165 -0
  258. package/payload/platform/lib/graph-write/dist/__tests__/account-id-gate.test.js.map +1 -0
  259. package/payload/platform/lib/graph-write/dist/__tests__/action-provenance-gate.test.d.ts +2 -0
  260. package/payload/platform/lib/graph-write/dist/__tests__/action-provenance-gate.test.d.ts.map +1 -0
  261. package/payload/platform/lib/graph-write/dist/__tests__/action-provenance-gate.test.js +263 -0
  262. package/payload/platform/lib/graph-write/dist/__tests__/action-provenance-gate.test.js.map +1 -0
  263. package/payload/platform/lib/graph-write/dist/__tests__/audit.test.d.ts +2 -0
  264. package/payload/platform/lib/graph-write/dist/__tests__/audit.test.d.ts.map +1 -0
  265. package/payload/platform/lib/graph-write/dist/__tests__/audit.test.js +147 -0
  266. package/payload/platform/lib/graph-write/dist/__tests__/audit.test.js.map +1 -0
  267. package/payload/platform/lib/graph-write/dist/audit.d.ts +84 -0
  268. package/payload/platform/lib/graph-write/dist/audit.d.ts.map +1 -0
  269. package/payload/platform/lib/graph-write/dist/audit.js +129 -0
  270. package/payload/platform/lib/graph-write/dist/audit.js.map +1 -0
  271. package/payload/platform/lib/graph-write/dist/conversation-provenance.d.ts +30 -0
  272. package/payload/platform/lib/graph-write/dist/conversation-provenance.d.ts.map +1 -0
  273. package/payload/platform/lib/graph-write/dist/conversation-provenance.js +88 -0
  274. package/payload/platform/lib/graph-write/dist/conversation-provenance.js.map +1 -0
  275. package/payload/platform/lib/graph-write/dist/index.d.ts +151 -0
  276. package/payload/platform/lib/graph-write/dist/index.d.ts.map +1 -0
  277. package/payload/platform/lib/graph-write/dist/index.js +380 -0
  278. package/payload/platform/lib/graph-write/dist/index.js.map +1 -0
  279. package/payload/platform/lib/graph-write/src/__tests__/account-id-gate.test.ts +189 -0
  280. package/payload/platform/lib/graph-write/src/__tests__/action-provenance-gate.test.ts +279 -0
  281. package/payload/platform/lib/graph-write/src/__tests__/audit.test.ts +162 -0
  282. package/payload/platform/lib/graph-write/src/audit.ts +182 -0
  283. package/payload/platform/lib/graph-write/src/conversation-provenance.ts +148 -0
  284. package/payload/platform/lib/graph-write/src/index.ts +494 -0
  285. package/payload/platform/lib/graph-write/tsconfig.json +8 -0
  286. package/payload/platform/lib/mcp-eager/dist/index.d.ts +41 -0
  287. package/payload/platform/lib/mcp-eager/dist/index.d.ts.map +1 -0
  288. package/payload/platform/lib/mcp-eager/dist/index.js +50 -0
  289. package/payload/platform/lib/mcp-eager/dist/index.js.map +1 -0
  290. package/payload/platform/lib/mcp-eager/package.json +7 -0
  291. package/payload/platform/lib/mcp-eager/src/index.ts +80 -0
  292. package/payload/platform/lib/mcp-eager/tsconfig.json +8 -0
  293. package/payload/platform/lib/mcp-lifeline/dist/index.d.ts +8 -0
  294. package/payload/platform/lib/mcp-lifeline/dist/index.d.ts.map +1 -0
  295. package/payload/platform/lib/mcp-lifeline/dist/index.js +71 -0
  296. package/payload/platform/lib/mcp-lifeline/dist/index.js.map +1 -0
  297. package/payload/platform/lib/mcp-lifeline/package.json +7 -0
  298. package/payload/platform/lib/mcp-lifeline/src/__tests__/lifeline.test.ts +146 -0
  299. package/payload/platform/lib/mcp-lifeline/src/index.ts +78 -0
  300. package/payload/platform/lib/mcp-lifeline/tsconfig.json +9 -0
  301. package/payload/platform/lib/mcp-lifeline/vitest.config.ts +9 -0
  302. package/payload/platform/lib/mcp-spawn-tee/dist/index.d.ts +41 -0
  303. package/payload/platform/lib/mcp-spawn-tee/dist/index.d.ts.map +1 -0
  304. package/payload/platform/lib/mcp-spawn-tee/dist/index.js +193 -0
  305. package/payload/platform/lib/mcp-spawn-tee/dist/index.js.map +1 -0
  306. package/payload/platform/lib/mcp-spawn-tee/src/__tests__/spawn-tee.test.ts +148 -0
  307. package/payload/platform/lib/mcp-spawn-tee/src/index.ts +198 -0
  308. package/payload/platform/lib/mcp-spawn-tee/tsconfig.json +9 -0
  309. package/payload/platform/lib/mcp-stderr-tee/dist/index.d.ts +51 -0
  310. package/payload/platform/lib/mcp-stderr-tee/dist/index.d.ts.map +1 -0
  311. package/payload/platform/lib/mcp-stderr-tee/dist/index.js +196 -0
  312. package/payload/platform/lib/mcp-stderr-tee/dist/index.js.map +1 -0
  313. package/payload/platform/lib/mcp-stderr-tee/package.json +7 -0
  314. package/payload/platform/lib/mcp-stderr-tee/src/index.ts +206 -0
  315. package/payload/platform/lib/mcp-stderr-tee/tsconfig.json +8 -0
  316. package/payload/platform/lib/models/dist/index.d.ts +58 -0
  317. package/payload/platform/lib/models/dist/index.d.ts.map +1 -0
  318. package/payload/platform/lib/models/dist/index.js +110 -0
  319. package/payload/platform/lib/models/dist/index.js.map +1 -0
  320. package/payload/platform/lib/models/src/index.ts +118 -0
  321. package/payload/platform/lib/models/tsconfig.json +8 -0
  322. package/payload/platform/lib/oauth-llm/dist/index.d.ts +116 -0
  323. package/payload/platform/lib/oauth-llm/dist/index.d.ts.map +1 -0
  324. package/payload/platform/lib/oauth-llm/dist/index.js +386 -0
  325. package/payload/platform/lib/oauth-llm/dist/index.js.map +1 -0
  326. package/payload/platform/lib/obsidian-parser/dist/index.d.ts +98 -0
  327. package/payload/platform/lib/obsidian-parser/dist/index.d.ts.map +1 -0
  328. package/payload/platform/lib/obsidian-parser/dist/index.js +480 -0
  329. package/payload/platform/lib/obsidian-parser/dist/index.js.map +1 -0
  330. package/payload/platform/lib/obsidian-parser/src/index.ts +572 -0
  331. package/payload/platform/lib/obsidian-parser/tsconfig.json +8 -0
  332. package/payload/platform/lib/persistent-components/dist/index.d.ts +20 -0
  333. package/payload/platform/lib/persistent-components/dist/index.d.ts.map +1 -0
  334. package/payload/platform/lib/persistent-components/dist/index.js +31 -0
  335. package/payload/platform/lib/persistent-components/dist/index.js.map +1 -0
  336. package/payload/platform/lib/persistent-components/src/index.ts +27 -0
  337. package/payload/platform/lib/persistent-components/tsconfig.json +8 -0
  338. package/payload/platform/lib/require-port-env/dist/index.d.ts +31 -0
  339. package/payload/platform/lib/require-port-env/dist/index.d.ts.map +1 -0
  340. package/payload/platform/lib/require-port-env/dist/index.js +52 -0
  341. package/payload/platform/lib/require-port-env/dist/index.js.map +1 -0
  342. package/payload/platform/lib/require-port-env/src/index.ts +56 -0
  343. package/payload/platform/lib/require-port-env/tsconfig.json +8 -0
  344. package/payload/platform/lib/screening-patterns/dist/index.d.ts +29 -0
  345. package/payload/platform/lib/screening-patterns/dist/index.d.ts.map +1 -0
  346. package/payload/platform/lib/screening-patterns/dist/index.js +48 -0
  347. package/payload/platform/lib/screening-patterns/dist/index.js.map +1 -0
  348. package/payload/platform/lib/task-secrets/dist/index.d.ts +40 -0
  349. package/payload/platform/lib/task-secrets/dist/index.d.ts.map +1 -0
  350. package/payload/platform/lib/task-secrets/dist/index.js +44 -0
  351. package/payload/platform/lib/task-secrets/dist/index.js.map +1 -0
  352. package/payload/platform/lib/task-secrets/src/__tests__/redact-secrets.test.ts +127 -0
  353. package/payload/platform/lib/task-secrets/src/index.ts +77 -0
  354. package/payload/platform/lib/task-secrets/tsconfig.json +9 -0
  355. package/payload/platform/lib/task-secrets/vitest.config.ts +9 -0
  356. package/payload/platform/neo4j/edge-annotations.json +158 -0
  357. package/payload/platform/neo4j/schema.cypher +2041 -0
  358. package/payload/platform/package-lock.json +4093 -0
  359. package/payload/platform/package.json +31 -0
  360. package/payload/platform/plugins/.claude-plugin/marketplace.json +163 -0
  361. package/payload/platform/plugins/admin/.claude-plugin/plugin.json +21 -0
  362. package/payload/platform/plugins/admin/PLUGIN.md +180 -0
  363. package/payload/platform/plugins/admin/hooks/__tests__/archive-ingest-surface-gate.test.sh +191 -0
  364. package/payload/platform/plugins/admin/hooks/__tests__/askuserquestion-investigate-gate.test.sh +176 -0
  365. package/payload/platform/plugins/admin/hooks/__tests__/hook-emit-stale-lock-ttl.test.sh +102 -0
  366. package/payload/platform/plugins/admin/hooks/__tests__/hook-emit.test.sh +75 -0
  367. package/payload/platform/plugins/admin/hooks/__tests__/post-tool-use-agent.test.sh +173 -0
  368. package/payload/platform/plugins/admin/hooks/__tests__/prompt-optimiser-compliance.test.sh +242 -0
  369. package/payload/platform/plugins/admin/hooks/__tests__/prompt-optimiser-directive.test.sh +191 -0
  370. package/payload/platform/plugins/admin/hooks/admin-authoring-observer.sh +155 -0
  371. package/payload/platform/plugins/admin/hooks/archive-ingest-surface-gate.sh +224 -0
  372. package/payload/platform/plugins/admin/hooks/askuserquestion-investigate-gate.sh +257 -0
  373. package/payload/platform/plugins/admin/hooks/lib/hook-emit.sh +143 -0
  374. package/payload/platform/plugins/admin/hooks/lib/maxy-mcp-plugins.txt +17 -0
  375. package/payload/platform/plugins/admin/hooks/mcp-tool-missing.sh +94 -0
  376. package/payload/platform/plugins/admin/hooks/post-tool-use-agent.sh +155 -0
  377. package/payload/platform/plugins/admin/hooks/prompt-optimiser-compliance.sh +213 -0
  378. package/payload/platform/plugins/admin/hooks/prompt-optimiser-directive.sh +166 -0
  379. package/payload/platform/plugins/admin/hooks/webfetch-preflight.mjs +363 -0
  380. package/payload/platform/plugins/admin/lib/mcp-spawn-tee/index.js +193 -0
  381. package/payload/platform/plugins/admin/lib/mcp-spawn-tee/package.json +3 -0
  382. package/payload/platform/plugins/admin/mcp/dist/__tests__/admin-authoring-skill-gate.test.d.ts +2 -0
  383. package/payload/platform/plugins/admin/mcp/dist/__tests__/admin-authoring-skill-gate.test.d.ts.map +1 -0
  384. package/payload/platform/plugins/admin/mcp/dist/__tests__/admin-authoring-skill-gate.test.js +86 -0
  385. package/payload/platform/plugins/admin/mcp/dist/__tests__/admin-authoring-skill-gate.test.js.map +1 -0
  386. package/payload/platform/plugins/admin/mcp/dist/__tests__/admin-identity-authenticate.test.d.ts +2 -0
  387. package/payload/platform/plugins/admin/mcp/dist/__tests__/admin-identity-authenticate.test.d.ts.map +1 -0
  388. package/payload/platform/plugins/admin/mcp/dist/__tests__/admin-identity-authenticate.test.js +34 -0
  389. package/payload/platform/plugins/admin/mcp/dist/__tests__/admin-identity-authenticate.test.js.map +1 -0
  390. package/payload/platform/plugins/admin/mcp/dist/__tests__/capabilities-here.test.d.ts +2 -0
  391. package/payload/platform/plugins/admin/mcp/dist/__tests__/capabilities-here.test.d.ts.map +1 -0
  392. package/payload/platform/plugins/admin/mcp/dist/__tests__/capabilities-here.test.js +171 -0
  393. package/payload/platform/plugins/admin/mcp/dist/__tests__/capabilities-here.test.js.map +1 -0
  394. package/payload/platform/plugins/admin/mcp/dist/__tests__/e-sign-discoverable.test.d.ts +2 -0
  395. package/payload/platform/plugins/admin/mcp/dist/__tests__/e-sign-discoverable.test.d.ts.map +1 -0
  396. package/payload/platform/plugins/admin/mcp/dist/__tests__/e-sign-discoverable.test.js +54 -0
  397. package/payload/platform/plugins/admin/mcp/dist/__tests__/e-sign-discoverable.test.js.map +1 -0
  398. package/payload/platform/plugins/admin/mcp/dist/__tests__/plugin-read-skill-resolution.test.d.ts +2 -0
  399. package/payload/platform/plugins/admin/mcp/dist/__tests__/plugin-read-skill-resolution.test.d.ts.map +1 -0
  400. package/payload/platform/plugins/admin/mcp/dist/__tests__/plugin-read-skill-resolution.test.js +91 -0
  401. package/payload/platform/plugins/admin/mcp/dist/__tests__/plugin-read-skill-resolution.test.js.map +1 -0
  402. package/payload/platform/plugins/admin/mcp/dist/__tests__/public-hostname.test.d.ts +2 -0
  403. package/payload/platform/plugins/admin/mcp/dist/__tests__/public-hostname.test.d.ts.map +1 -0
  404. package/payload/platform/plugins/admin/mcp/dist/__tests__/public-hostname.test.js +98 -0
  405. package/payload/platform/plugins/admin/mcp/dist/__tests__/public-hostname.test.js.map +1 -0
  406. package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-load-required-inputs.test.d.ts +2 -0
  407. package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-load-required-inputs.test.d.ts.map +1 -0
  408. package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-load-required-inputs.test.js +141 -0
  409. package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-load-required-inputs.test.js.map +1 -0
  410. package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-load.test.d.ts +2 -0
  411. package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-load.test.d.ts.map +1 -0
  412. package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-load.test.js +88 -0
  413. package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-load.test.js.map +1 -0
  414. package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-no-prescribed-role.test.d.ts +2 -0
  415. package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-no-prescribed-role.test.d.ts.map +1 -0
  416. package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-no-prescribed-role.test.js +50 -0
  417. package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-no-prescribed-role.test.js.map +1 -0
  418. package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-search.test.d.ts +2 -0
  419. package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-search.test.d.ts.map +1 -0
  420. package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-search.test.js +106 -0
  421. package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-search.test.js.map +1 -0
  422. package/payload/platform/plugins/admin/mcp/dist/content-producer-authoring-skills.d.ts +2 -0
  423. package/payload/platform/plugins/admin/mcp/dist/content-producer-authoring-skills.d.ts.map +1 -0
  424. package/payload/platform/plugins/admin/mcp/dist/content-producer-authoring-skills.js +41 -0
  425. package/payload/platform/plugins/admin/mcp/dist/content-producer-authoring-skills.js.map +1 -0
  426. package/payload/platform/plugins/admin/mcp/dist/index.d.ts +2 -0
  427. package/payload/platform/plugins/admin/mcp/dist/index.d.ts.map +1 -0
  428. package/payload/platform/plugins/admin/mcp/dist/index.js +3294 -0
  429. package/payload/platform/plugins/admin/mcp/dist/index.js.map +1 -0
  430. package/payload/platform/plugins/admin/mcp/dist/lib/catalogue-census.d.ts +14 -0
  431. package/payload/platform/plugins/admin/mcp/dist/lib/catalogue-census.d.ts.map +1 -0
  432. package/payload/platform/plugins/admin/mcp/dist/lib/catalogue-census.js +50 -0
  433. package/payload/platform/plugins/admin/mcp/dist/lib/catalogue-census.js.map +1 -0
  434. package/payload/platform/plugins/admin/mcp/dist/lib/neo4j.d.ts +5 -0
  435. package/payload/platform/plugins/admin/mcp/dist/lib/neo4j.d.ts.map +1 -0
  436. package/payload/platform/plugins/admin/mcp/dist/lib/neo4j.js +40 -0
  437. package/payload/platform/plugins/admin/mcp/dist/lib/neo4j.js.map +1 -0
  438. package/payload/platform/plugins/admin/mcp/dist/lib/onboarding.d.ts +39 -0
  439. package/payload/platform/plugins/admin/mcp/dist/lib/onboarding.d.ts.map +1 -0
  440. package/payload/platform/plugins/admin/mcp/dist/lib/onboarding.js +249 -0
  441. package/payload/platform/plugins/admin/mcp/dist/lib/onboarding.js.map +1 -0
  442. package/payload/platform/plugins/admin/mcp/dist/lib/public-hostname.d.ts +15 -0
  443. package/payload/platform/plugins/admin/mcp/dist/lib/public-hostname.d.ts.map +1 -0
  444. package/payload/platform/plugins/admin/mcp/dist/lib/public-hostname.js +73 -0
  445. package/payload/platform/plugins/admin/mcp/dist/lib/public-hostname.js.map +1 -0
  446. package/payload/platform/plugins/admin/mcp/dist/skill-resolution.d.ts +56 -0
  447. package/payload/platform/plugins/admin/mcp/dist/skill-resolution.d.ts.map +1 -0
  448. package/payload/platform/plugins/admin/mcp/dist/skill-resolution.js +358 -0
  449. package/payload/platform/plugins/admin/mcp/dist/skill-resolution.js.map +1 -0
  450. package/payload/platform/plugins/admin/mcp/dist/tools/__tests__/account-lifecycle.test.d.ts +2 -0
  451. package/payload/platform/plugins/admin/mcp/dist/tools/__tests__/account-lifecycle.test.d.ts.map +1 -0
  452. package/payload/platform/plugins/admin/mcp/dist/tools/__tests__/account-lifecycle.test.js +57 -0
  453. package/payload/platform/plugins/admin/mcp/dist/tools/__tests__/account-lifecycle.test.js.map +1 -0
  454. package/payload/platform/plugins/admin/mcp/dist/tools/account-lifecycle.d.ts +34 -0
  455. package/payload/platform/plugins/admin/mcp/dist/tools/account-lifecycle.d.ts.map +1 -0
  456. package/payload/platform/plugins/admin/mcp/dist/tools/account-lifecycle.js +78 -0
  457. package/payload/platform/plugins/admin/mcp/dist/tools/account-lifecycle.js.map +1 -0
  458. package/payload/platform/plugins/admin/mcp/dist/tools/admin-identity-authenticate.d.ts +6 -0
  459. package/payload/platform/plugins/admin/mcp/dist/tools/admin-identity-authenticate.d.ts.map +1 -0
  460. package/payload/platform/plugins/admin/mcp/dist/tools/admin-identity-authenticate.js +32 -0
  461. package/payload/platform/plugins/admin/mcp/dist/tools/admin-identity-authenticate.js.map +1 -0
  462. package/payload/platform/plugins/admin/mcp/dist/tools/capabilities-here.d.ts +28 -0
  463. package/payload/platform/plugins/admin/mcp/dist/tools/capabilities-here.d.ts.map +1 -0
  464. package/payload/platform/plugins/admin/mcp/dist/tools/capabilities-here.js +68 -0
  465. package/payload/platform/plugins/admin/mcp/dist/tools/capabilities-here.js.map +1 -0
  466. package/payload/platform/plugins/admin/mcp/dist/tools/publish-site.d.ts +34 -0
  467. package/payload/platform/plugins/admin/mcp/dist/tools/publish-site.d.ts.map +1 -0
  468. package/payload/platform/plugins/admin/mcp/dist/tools/publish-site.js +176 -0
  469. package/payload/platform/plugins/admin/mcp/dist/tools/publish-site.js.map +1 -0
  470. package/payload/platform/plugins/admin/mcp/package.json +23 -0
  471. package/payload/platform/plugins/admin/mcp/vitest.config.ts +9 -0
  472. package/payload/platform/plugins/admin/references/chat-ui-guide.md +31 -0
  473. package/payload/platform/plugins/admin/references/publish-site-routing.md +44 -0
  474. package/payload/platform/plugins/admin/skills/a4-print-documents/SKILL.md +243 -0
  475. package/payload/platform/plugins/admin/skills/access-manager/SKILL.md +33 -0
  476. package/payload/platform/plugins/admin/skills/access-manager/references/operations.md +176 -0
  477. package/payload/platform/plugins/admin/skills/admin-user-management/SKILL.md +57 -0
  478. package/payload/platform/plugins/admin/skills/business-profile/SKILL.md +55 -0
  479. package/payload/platform/plugins/admin/skills/capabilities-here/SKILL.md +33 -0
  480. package/payload/platform/plugins/admin/skills/datetime/SKILL.md +151 -0
  481. package/payload/platform/plugins/admin/skills/deck-pages/SKILL.md +412 -0
  482. package/payload/platform/plugins/admin/skills/file-presentation/SKILL.md +49 -0
  483. package/payload/platform/plugins/admin/skills/insight/SKILL.md +24 -0
  484. package/payload/platform/plugins/admin/skills/investigate/SKILL.md +320 -0
  485. package/payload/platform/plugins/admin/skills/plainly/SKILL.md +149 -0
  486. package/payload/platform/plugins/admin/skills/plainly/references/worked-examples.md +114 -0
  487. package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +4181 -0
  488. package/payload/platform/plugins/admin/skills/plugin-management/SKILL.md +101 -0
  489. package/payload/platform/plugins/admin/skills/professional-document/SKILL.md +186 -0
  490. package/payload/platform/plugins/admin/skills/public-agent-manager/SKILL.md +258 -0
  491. package/payload/platform/plugins/admin/skills/publish-site/SKILL.md +42 -0
  492. package/payload/platform/plugins/admin/skills/qr-code/SKILL.md +38 -0
  493. package/payload/platform/plugins/admin/skills/qr-code/references/data-formats.md +113 -0
  494. package/payload/platform/plugins/admin/skills/session-management/SKILL.md +64 -0
  495. package/payload/platform/plugins/admin/skills/skill-builder/SKILL.md +115 -0
  496. package/payload/platform/plugins/admin/skills/skill-builder/references/lean-pattern.md +110 -0
  497. package/payload/platform/plugins/admin/skills/skill-builder/references/pdf-generation.md +30 -0
  498. package/payload/platform/plugins/admin/skills/specialist-management/SKILL.md +47 -0
  499. package/payload/platform/plugins/admin/skills/stream-log-review/SKILL.md +73 -0
  500. package/payload/platform/plugins/admin/skills/stream-log-review/references/analysis-patterns.md +193 -0
  501. package/payload/platform/plugins/admin/skills/superpowers-sprint/SKILL.md +363 -0
  502. package/payload/platform/plugins/admin/skills/task/SKILL.md +316 -0
  503. package/payload/platform/plugins/admin/skills/unzip-attachment/SKILL.md +84 -0
  504. package/payload/platform/plugins/admin/skills/unzip-attachment/__tests__/preflight.sh +148 -0
  505. package/payload/platform/plugins/admin/skills/unzip-attachment/references/safety.md +116 -0
  506. package/payload/platform/plugins/admin/skills/update-knowledge/SKILL.md +54 -0
  507. package/payload/platform/plugins/admin/skills/upgrade/SKILL.md +36 -0
  508. package/payload/platform/plugins/aeo/.claude-plugin/plugin.json +21 -0
  509. package/payload/platform/plugins/aeo/PLUGIN.md +80 -0
  510. package/payload/platform/plugins/aeo/lib/mcp-spawn-tee/index.js +193 -0
  511. package/payload/platform/plugins/aeo/lib/mcp-spawn-tee/package.json +3 -0
  512. package/payload/platform/plugins/aeo/mcp/dist/__tests__/audit-heuristics.test.d.ts +2 -0
  513. package/payload/platform/plugins/aeo/mcp/dist/__tests__/audit-heuristics.test.d.ts.map +1 -0
  514. package/payload/platform/plugins/aeo/mcp/dist/__tests__/audit-heuristics.test.js +121 -0
  515. package/payload/platform/plugins/aeo/mcp/dist/__tests__/audit-heuristics.test.js.map +1 -0
  516. package/payload/platform/plugins/aeo/mcp/dist/__tests__/schema-mapping.test.d.ts +2 -0
  517. package/payload/platform/plugins/aeo/mcp/dist/__tests__/schema-mapping.test.d.ts.map +1 -0
  518. package/payload/platform/plugins/aeo/mcp/dist/__tests__/schema-mapping.test.js +129 -0
  519. package/payload/platform/plugins/aeo/mcp/dist/__tests__/schema-mapping.test.js.map +1 -0
  520. package/payload/platform/plugins/aeo/mcp/dist/index.d.ts +2 -0
  521. package/payload/platform/plugins/aeo/mcp/dist/index.d.ts.map +1 -0
  522. package/payload/platform/plugins/aeo/mcp/dist/index.js +189 -0
  523. package/payload/platform/plugins/aeo/mcp/dist/index.js.map +1 -0
  524. package/payload/platform/plugins/aeo/mcp/dist/lib/audit-heuristics.d.ts +27 -0
  525. package/payload/platform/plugins/aeo/mcp/dist/lib/audit-heuristics.d.ts.map +1 -0
  526. package/payload/platform/plugins/aeo/mcp/dist/lib/audit-heuristics.js +274 -0
  527. package/payload/platform/plugins/aeo/mcp/dist/lib/audit-heuristics.js.map +1 -0
  528. package/payload/platform/plugins/aeo/mcp/dist/lib/neo4j.d.ts +5 -0
  529. package/payload/platform/plugins/aeo/mcp/dist/lib/neo4j.d.ts.map +1 -0
  530. package/payload/platform/plugins/aeo/mcp/dist/lib/neo4j.js +38 -0
  531. package/payload/platform/plugins/aeo/mcp/dist/lib/neo4j.js.map +1 -0
  532. package/payload/platform/plugins/aeo/mcp/dist/lib/schema-mapping.d.ts +48 -0
  533. package/payload/platform/plugins/aeo/mcp/dist/lib/schema-mapping.d.ts.map +1 -0
  534. package/payload/platform/plugins/aeo/mcp/dist/lib/schema-mapping.js +254 -0
  535. package/payload/platform/plugins/aeo/mcp/dist/lib/schema-mapping.js.map +1 -0
  536. package/payload/platform/plugins/aeo/mcp/dist/tools/aeo-audit-page.d.ts +25 -0
  537. package/payload/platform/plugins/aeo/mcp/dist/tools/aeo-audit-page.d.ts.map +1 -0
  538. package/payload/platform/plugins/aeo/mcp/dist/tools/aeo-audit-page.js +78 -0
  539. package/payload/platform/plugins/aeo/mcp/dist/tools/aeo-audit-page.js.map +1 -0
  540. package/payload/platform/plugins/aeo/mcp/dist/tools/aeo-emit-jsonld.d.ts +18 -0
  541. package/payload/platform/plugins/aeo/mcp/dist/tools/aeo-emit-jsonld.d.ts.map +1 -0
  542. package/payload/platform/plugins/aeo/mcp/dist/tools/aeo-emit-jsonld.js +56 -0
  543. package/payload/platform/plugins/aeo/mcp/dist/tools/aeo-emit-jsonld.js.map +1 -0
  544. package/payload/platform/plugins/aeo/mcp/dist/tools/aeo-write-llms-txt.d.ts +9 -0
  545. package/payload/platform/plugins/aeo/mcp/dist/tools/aeo-write-llms-txt.d.ts.map +1 -0
  546. package/payload/platform/plugins/aeo/mcp/dist/tools/aeo-write-llms-txt.js +11 -0
  547. package/payload/platform/plugins/aeo/mcp/dist/tools/aeo-write-llms-txt.js.map +1 -0
  548. package/payload/platform/plugins/aeo/mcp/package.json +22 -0
  549. package/payload/platform/plugins/aeo/mcp/vitest.config.ts +9 -0
  550. package/payload/platform/plugins/aeo/skills/structured-answer/SKILL.md +55 -0
  551. package/payload/platform/plugins/browser/.claude-plugin/plugin.json +21 -0
  552. package/payload/platform/plugins/browser/PLUGIN.md +114 -0
  553. package/payload/platform/plugins/browser/lib/mcp-spawn-tee/index.js +193 -0
  554. package/payload/platform/plugins/browser/lib/mcp-spawn-tee/package.json +3 -0
  555. package/payload/platform/plugins/browser/mcp/dist/index.d.ts +2 -0
  556. package/payload/platform/plugins/browser/mcp/dist/index.d.ts.map +1 -0
  557. package/payload/platform/plugins/browser/mcp/dist/index.js +165 -0
  558. package/payload/platform/plugins/browser/mcp/dist/index.js.map +1 -0
  559. package/payload/platform/plugins/browser/mcp/dist/lib/cdp-actions.d.ts +98 -0
  560. package/payload/platform/plugins/browser/mcp/dist/lib/cdp-actions.d.ts.map +1 -0
  561. package/payload/platform/plugins/browser/mcp/dist/lib/cdp-actions.js +455 -0
  562. package/payload/platform/plugins/browser/mcp/dist/lib/cdp-actions.js.map +1 -0
  563. package/payload/platform/plugins/browser/mcp/dist/lib/cdp-render.d.ts +44 -0
  564. package/payload/platform/plugins/browser/mcp/dist/lib/cdp-render.d.ts.map +1 -0
  565. package/payload/platform/plugins/browser/mcp/dist/lib/cdp-render.js +89 -0
  566. package/payload/platform/plugins/browser/mcp/dist/lib/cdp-render.js.map +1 -0
  567. package/payload/platform/plugins/browser/mcp/dist/lib/cdp-session.d.ts +153 -0
  568. package/payload/platform/plugins/browser/mcp/dist/lib/cdp-session.d.ts.map +1 -0
  569. package/payload/platform/plugins/browser/mcp/dist/lib/cdp-session.js +401 -0
  570. package/payload/platform/plugins/browser/mcp/dist/lib/cdp-session.js.map +1 -0
  571. package/payload/platform/plugins/browser/mcp/package.json +19 -0
  572. package/payload/platform/plugins/business-assistant/.claude-plugin/plugin.json +8 -0
  573. package/payload/platform/plugins/business-assistant/PLUGIN.md +66 -0
  574. package/payload/platform/plugins/business-assistant/references/crm.md +118 -0
  575. package/payload/platform/plugins/business-assistant/references/document-management.md +96 -0
  576. package/payload/platform/plugins/business-assistant/references/escalation.md +126 -0
  577. package/payload/platform/plugins/business-assistant/references/invoicing.md +163 -0
  578. package/payload/platform/plugins/business-assistant/references/profiling.md +50 -0
  579. package/payload/platform/plugins/business-assistant/references/scheduling.md +127 -0
  580. package/payload/platform/plugins/business-assistant/references/site-lead-intake.md +52 -0
  581. package/payload/platform/plugins/business-assistant/references/task-management.md +163 -0
  582. package/payload/platform/plugins/business-assistant/skills/e-sign/SKILL.md +680 -0
  583. package/payload/platform/plugins/cloudflare/.claude-plugin/plugin.json +8 -0
  584. package/payload/platform/plugins/cloudflare/PLUGIN.md +62 -0
  585. package/payload/platform/plugins/cloudflare/mcp/dist/index.d.ts +2 -0
  586. package/payload/platform/plugins/cloudflare/mcp/dist/index.d.ts.map +1 -0
  587. package/payload/platform/plugins/cloudflare/mcp/dist/index.js +24 -0
  588. package/payload/platform/plugins/cloudflare/mcp/dist/index.js.map +1 -0
  589. package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.d.ts +283 -0
  590. package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.d.ts.map +1 -0
  591. package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.js +1155 -0
  592. package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.js.map +1 -0
  593. package/payload/platform/plugins/cloudflare/mcp/dist/lib/setup-orchestrator.d.ts +90 -0
  594. package/payload/platform/plugins/cloudflare/mcp/dist/lib/setup-orchestrator.d.ts.map +1 -0
  595. package/payload/platform/plugins/cloudflare/mcp/dist/lib/setup-orchestrator.js +551 -0
  596. package/payload/platform/plugins/cloudflare/mcp/dist/lib/setup-orchestrator.js.map +1 -0
  597. package/payload/platform/plugins/cloudflare/mcp/package.json +18 -0
  598. package/payload/platform/plugins/cloudflare/mcp/vitest.config.ts +10 -0
  599. package/payload/platform/plugins/cloudflare/references/api.md +255 -0
  600. package/payload/platform/plugins/cloudflare/references/d1-data-capture.md +165 -0
  601. package/payload/platform/plugins/cloudflare/references/dashboard-guide.md +184 -0
  602. package/payload/platform/plugins/cloudflare/references/hosting-sites.md +68 -0
  603. package/payload/platform/plugins/cloudflare/references/manual-setup.md +710 -0
  604. package/payload/platform/plugins/cloudflare/references/reset-guide.md +137 -0
  605. package/payload/platform/plugins/cloudflare/references/serving-published-sites.md +73 -0
  606. package/payload/platform/plugins/cloudflare/references/web-analytics.md +64 -0
  607. package/payload/platform/plugins/cloudflare/skills/cloudflare/SKILL.md +91 -0
  608. package/payload/platform/plugins/contacts/.claude-plugin/plugin.json +21 -0
  609. package/payload/platform/plugins/contacts/PLUGIN.md +62 -0
  610. package/payload/platform/plugins/contacts/lib/mcp-spawn-tee/index.js +193 -0
  611. package/payload/platform/plugins/contacts/lib/mcp-spawn-tee/package.json +3 -0
  612. package/payload/platform/plugins/contacts/mcp/dist/index.d.ts +2 -0
  613. package/payload/platform/plugins/contacts/mcp/dist/index.d.ts.map +1 -0
  614. package/payload/platform/plugins/contacts/mcp/dist/index.js +467 -0
  615. package/payload/platform/plugins/contacts/mcp/dist/index.js.map +1 -0
  616. package/payload/platform/plugins/contacts/mcp/dist/lib/neo4j.d.ts +5 -0
  617. package/payload/platform/plugins/contacts/mcp/dist/lib/neo4j.d.ts.map +1 -0
  618. package/payload/platform/plugins/contacts/mcp/dist/lib/neo4j.js +40 -0
  619. package/payload/platform/plugins/contacts/mcp/dist/lib/neo4j.js.map +1 -0
  620. package/payload/platform/plugins/contacts/mcp/dist/lib/resolve-person.d.ts +33 -0
  621. package/payload/platform/plugins/contacts/mcp/dist/lib/resolve-person.d.ts.map +1 -0
  622. package/payload/platform/plugins/contacts/mcp/dist/lib/resolve-person.js +53 -0
  623. package/payload/platform/plugins/contacts/mcp/dist/lib/resolve-person.js.map +1 -0
  624. package/payload/platform/plugins/contacts/mcp/dist/tools/__tests__/contact-lookup.test.d.ts +2 -0
  625. package/payload/platform/plugins/contacts/mcp/dist/tools/__tests__/contact-lookup.test.d.ts.map +1 -0
  626. package/payload/platform/plugins/contacts/mcp/dist/tools/__tests__/contact-lookup.test.js +71 -0
  627. package/payload/platform/plugins/contacts/mcp/dist/tools/__tests__/contact-lookup.test.js.map +1 -0
  628. package/payload/platform/plugins/contacts/mcp/dist/tools/__tests__/group-create.test.d.ts +2 -0
  629. package/payload/platform/plugins/contacts/mcp/dist/tools/__tests__/group-create.test.d.ts.map +1 -0
  630. package/payload/platform/plugins/contacts/mcp/dist/tools/__tests__/group-create.test.js +112 -0
  631. package/payload/platform/plugins/contacts/mcp/dist/tools/__tests__/group-create.test.js.map +1 -0
  632. package/payload/platform/plugins/contacts/mcp/dist/tools/__tests__/group-manage.test.d.ts +2 -0
  633. package/payload/platform/plugins/contacts/mcp/dist/tools/__tests__/group-manage.test.d.ts.map +1 -0
  634. package/payload/platform/plugins/contacts/mcp/dist/tools/__tests__/group-manage.test.js +102 -0
  635. package/payload/platform/plugins/contacts/mcp/dist/tools/__tests__/group-manage.test.js.map +1 -0
  636. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-create.d.ts +23 -0
  637. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-create.d.ts.map +1 -0
  638. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-create.js +123 -0
  639. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-create.js.map +1 -0
  640. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-delete.d.ts +28 -0
  641. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-delete.d.ts.map +1 -0
  642. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-delete.js +39 -0
  643. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-delete.js.map +1 -0
  644. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-erase.d.ts +52 -0
  645. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-erase.d.ts.map +1 -0
  646. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-erase.js +181 -0
  647. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-erase.js.map +1 -0
  648. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-export.d.ts +52 -0
  649. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-export.d.ts.map +1 -0
  650. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-export.js +122 -0
  651. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-export.js.map +1 -0
  652. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-list.d.ts +23 -0
  653. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-list.d.ts.map +1 -0
  654. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-list.js +49 -0
  655. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-list.js.map +1 -0
  656. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-lookup.d.ts +22 -0
  657. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-lookup.d.ts.map +1 -0
  658. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-lookup.js +77 -0
  659. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-lookup.js.map +1 -0
  660. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-update.d.ts +14 -0
  661. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-update.d.ts.map +1 -0
  662. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-update.js +43 -0
  663. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-update.js.map +1 -0
  664. package/payload/platform/plugins/contacts/mcp/dist/tools/group-create.d.ts +18 -0
  665. package/payload/platform/plugins/contacts/mcp/dist/tools/group-create.d.ts.map +1 -0
  666. package/payload/platform/plugins/contacts/mcp/dist/tools/group-create.js +100 -0
  667. package/payload/platform/plugins/contacts/mcp/dist/tools/group-create.js.map +1 -0
  668. package/payload/platform/plugins/contacts/mcp/dist/tools/group-manage.d.ts +15 -0
  669. package/payload/platform/plugins/contacts/mcp/dist/tools/group-manage.d.ts.map +1 -0
  670. package/payload/platform/plugins/contacts/mcp/dist/tools/group-manage.js +73 -0
  671. package/payload/platform/plugins/contacts/mcp/dist/tools/group-manage.js.map +1 -0
  672. package/payload/platform/plugins/contacts/mcp/package.json +21 -0
  673. package/payload/platform/plugins/deep-research/.claude-plugin/plugin.json +8 -0
  674. package/payload/platform/plugins/deep-research/PLUGIN.md +19 -0
  675. package/payload/platform/plugins/deep-research/recipes/README.md +36 -0
  676. package/payload/platform/plugins/deep-research/skills/academic-verify/SKILL.md +77 -0
  677. package/payload/platform/plugins/deep-research/skills/book-mirror/SKILL.md +70 -0
  678. package/payload/platform/plugins/deep-research/skills/data-research/SKILL.md +110 -0
  679. package/payload/platform/plugins/deep-research/skills/deep-research/SKILL.md +48 -0
  680. package/payload/platform/plugins/deep-research/skills/deep-research/references/citation-styles.md +52 -0
  681. package/payload/platform/plugins/deep-research/skills/deep-research/references/research-modes.md +22 -0
  682. package/payload/platform/plugins/deep-research/skills/deep-research/references/search-strategy.md +24 -0
  683. package/payload/platform/plugins/deep-research/skills/strategic-reading/SKILL.md +71 -0
  684. package/payload/platform/plugins/docs/.claude-plugin/plugin.json +8 -0
  685. package/payload/platform/plugins/docs/PLUGIN.md +58 -0
  686. package/payload/platform/plugins/docs/references/access-control.md +84 -0
  687. package/payload/platform/plugins/docs/references/admin-identity-gate.md +77 -0
  688. package/payload/platform/plugins/docs/references/admin-session.md +181 -0
  689. package/payload/platform/plugins/docs/references/admin-ui.md +397 -0
  690. package/payload/platform/plugins/docs/references/aeo.md +87 -0
  691. package/payload/platform/plugins/docs/references/attachments.md +44 -0
  692. package/payload/platform/plugins/docs/references/cloudflare.md +102 -0
  693. package/payload/platform/plugins/docs/references/contacts-guide.md +94 -0
  694. package/payload/platform/plugins/docs/references/deployment.md +323 -0
  695. package/payload/platform/plugins/docs/references/getting-started.md +95 -0
  696. package/payload/platform/plugins/docs/references/graph.md +163 -0
  697. package/payload/platform/plugins/docs/references/internals.md +547 -0
  698. package/payload/platform/plugins/docs/references/investigate-and-task-skills.md +9 -0
  699. package/payload/platform/plugins/docs/references/linkedin-extension.md +49 -0
  700. package/payload/platform/plugins/docs/references/memory-guide.md +163 -0
  701. package/payload/platform/plugins/docs/references/neo4j.md +72 -0
  702. package/payload/platform/plugins/docs/references/outlook-guide.md +69 -0
  703. package/payload/platform/plugins/docs/references/platform.md +190 -0
  704. package/payload/platform/plugins/docs/references/plugins-guide.md +189 -0
  705. package/payload/platform/plugins/docs/references/projects-guide.md +94 -0
  706. package/payload/platform/plugins/docs/references/quickbooks.md +29 -0
  707. package/payload/platform/plugins/docs/references/samba.md +93 -0
  708. package/payload/platform/plugins/docs/references/session-retrospective.md +14 -0
  709. package/payload/platform/plugins/docs/references/settings.md +82 -0
  710. package/payload/platform/plugins/docs/references/slides.md +31 -0
  711. package/payload/platform/plugins/docs/references/telegram-guide.md +58 -0
  712. package/payload/platform/plugins/docs/references/troubleshooting.md +291 -0
  713. package/payload/platform/plugins/docs/references/visitor-graph.md +83 -0
  714. package/payload/platform/plugins/docs/references/voice-mirror-guide.md +72 -0
  715. package/payload/platform/plugins/docs/superpowers/plans/2026-06-01-memory-edge.md +589 -0
  716. package/payload/platform/plugins/email/.claude-plugin/plugin.json +21 -0
  717. package/payload/platform/plugins/email/PLUGIN.md +112 -0
  718. package/payload/platform/plugins/email/lib/mcp-spawn-tee/index.js +193 -0
  719. package/payload/platform/plugins/email/lib/mcp-spawn-tee/package.json +3 -0
  720. package/payload/platform/plugins/email/mcp/dist/__tests__/attachment-resolve.test.d.ts +2 -0
  721. package/payload/platform/plugins/email/mcp/dist/__tests__/attachment-resolve.test.d.ts.map +1 -0
  722. package/payload/platform/plugins/email/mcp/dist/__tests__/attachment-resolve.test.js +92 -0
  723. package/payload/platform/plugins/email/mcp/dist/__tests__/attachment-resolve.test.js.map +1 -0
  724. package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft-edit.test.d.ts +2 -0
  725. package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft-edit.test.d.ts.map +1 -0
  726. package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft-edit.test.js +71 -0
  727. package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft-edit.test.js.map +1 -0
  728. package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft-send.test.d.ts +2 -0
  729. package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft-send.test.d.ts.map +1 -0
  730. package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft-send.test.js +95 -0
  731. package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft-send.test.js.map +1 -0
  732. package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft.test.d.ts +2 -0
  733. package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft.test.d.ts.map +1 -0
  734. package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft.test.js +129 -0
  735. package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft.test.js.map +1 -0
  736. package/payload/platform/plugins/email/mcp/dist/__tests__/email-setup.test.d.ts +2 -0
  737. package/payload/platform/plugins/email/mcp/dist/__tests__/email-setup.test.d.ts.map +1 -0
  738. package/payload/platform/plugins/email/mcp/dist/__tests__/email-setup.test.js +113 -0
  739. package/payload/platform/plugins/email/mcp/dist/__tests__/email-setup.test.js.map +1 -0
  740. package/payload/platform/plugins/email/mcp/dist/__tests__/imap-drafts.test.d.ts +2 -0
  741. package/payload/platform/plugins/email/mcp/dist/__tests__/imap-drafts.test.d.ts.map +1 -0
  742. package/payload/platform/plugins/email/mcp/dist/__tests__/imap-drafts.test.js +165 -0
  743. package/payload/platform/plugins/email/mcp/dist/__tests__/imap-drafts.test.js.map +1 -0
  744. package/payload/platform/plugins/email/mcp/dist/__tests__/imap-probe.test.d.ts +2 -0
  745. package/payload/platform/plugins/email/mcp/dist/__tests__/imap-probe.test.d.ts.map +1 -0
  746. package/payload/platform/plugins/email/mcp/dist/__tests__/imap-probe.test.js +69 -0
  747. package/payload/platform/plugins/email/mcp/dist/__tests__/imap-probe.test.js.map +1 -0
  748. package/payload/platform/plugins/email/mcp/dist/__tests__/mail-options.test.d.ts +2 -0
  749. package/payload/platform/plugins/email/mcp/dist/__tests__/mail-options.test.d.ts.map +1 -0
  750. package/payload/platform/plugins/email/mcp/dist/__tests__/mail-options.test.js +46 -0
  751. package/payload/platform/plugins/email/mcp/dist/__tests__/mail-options.test.js.map +1 -0
  752. package/payload/platform/plugins/email/mcp/dist/__tests__/providers.test.d.ts +2 -0
  753. package/payload/platform/plugins/email/mcp/dist/__tests__/providers.test.d.ts.map +1 -0
  754. package/payload/platform/plugins/email/mcp/dist/__tests__/providers.test.js +110 -0
  755. package/payload/platform/plugins/email/mcp/dist/__tests__/providers.test.js.map +1 -0
  756. package/payload/platform/plugins/email/mcp/dist/__tests__/recipient-filter.test.d.ts +2 -0
  757. package/payload/platform/plugins/email/mcp/dist/__tests__/recipient-filter.test.d.ts.map +1 -0
  758. package/payload/platform/plugins/email/mcp/dist/__tests__/recipient-filter.test.js +57 -0
  759. package/payload/platform/plugins/email/mcp/dist/__tests__/recipient-filter.test.js.map +1 -0
  760. package/payload/platform/plugins/email/mcp/dist/__tests__/send-raw.test.d.ts +2 -0
  761. package/payload/platform/plugins/email/mcp/dist/__tests__/send-raw.test.d.ts.map +1 -0
  762. package/payload/platform/plugins/email/mcp/dist/__tests__/send-raw.test.js +38 -0
  763. package/payload/platform/plugins/email/mcp/dist/__tests__/send-raw.test.js.map +1 -0
  764. package/payload/platform/plugins/email/mcp/dist/__tests__/setup-probe.test.d.ts +2 -0
  765. package/payload/platform/plugins/email/mcp/dist/__tests__/setup-probe.test.d.ts.map +1 -0
  766. package/payload/platform/plugins/email/mcp/dist/__tests__/setup-probe.test.js +56 -0
  767. package/payload/platform/plugins/email/mcp/dist/__tests__/setup-probe.test.js.map +1 -0
  768. package/payload/platform/plugins/email/mcp/dist/__tests__/smtp-probe.test.d.ts +2 -0
  769. package/payload/platform/plugins/email/mcp/dist/__tests__/smtp-probe.test.d.ts.map +1 -0
  770. package/payload/platform/plugins/email/mcp/dist/__tests__/smtp-probe.test.js +46 -0
  771. package/payload/platform/plugins/email/mcp/dist/__tests__/smtp-probe.test.js.map +1 -0
  772. package/payload/platform/plugins/email/mcp/dist/index.d.ts +2 -0
  773. package/payload/platform/plugins/email/mcp/dist/index.d.ts.map +1 -0
  774. package/payload/platform/plugins/email/mcp/dist/index.js +522 -0
  775. package/payload/platform/plugins/email/mcp/dist/index.js.map +1 -0
  776. package/payload/platform/plugins/email/mcp/dist/lib/attachment-archive.d.ts +39 -0
  777. package/payload/platform/plugins/email/mcp/dist/lib/attachment-archive.d.ts.map +1 -0
  778. package/payload/platform/plugins/email/mcp/dist/lib/attachment-archive.js +0 -0
  779. package/payload/platform/plugins/email/mcp/dist/lib/attachment-archive.js.map +1 -0
  780. package/payload/platform/plugins/email/mcp/dist/lib/attachment-resolve.d.ts +31 -0
  781. package/payload/platform/plugins/email/mcp/dist/lib/attachment-resolve.d.ts.map +1 -0
  782. package/payload/platform/plugins/email/mcp/dist/lib/attachment-resolve.js +103 -0
  783. package/payload/platform/plugins/email/mcp/dist/lib/attachment-resolve.js.map +1 -0
  784. package/payload/platform/plugins/email/mcp/dist/lib/claude-bridge.d.ts +17 -0
  785. package/payload/platform/plugins/email/mcp/dist/lib/claude-bridge.d.ts.map +1 -0
  786. package/payload/platform/plugins/email/mcp/dist/lib/claude-bridge.js +186 -0
  787. package/payload/platform/plugins/email/mcp/dist/lib/claude-bridge.js.map +1 -0
  788. package/payload/platform/plugins/email/mcp/dist/lib/compose.d.ts +47 -0
  789. package/payload/platform/plugins/email/mcp/dist/lib/compose.d.ts.map +1 -0
  790. package/payload/platform/plugins/email/mcp/dist/lib/compose.js +75 -0
  791. package/payload/platform/plugins/email/mcp/dist/lib/compose.js.map +1 -0
  792. package/payload/platform/plugins/email/mcp/dist/lib/conversation-archive-dispatch.d.ts +30 -0
  793. package/payload/platform/plugins/email/mcp/dist/lib/conversation-archive-dispatch.d.ts.map +1 -0
  794. package/payload/platform/plugins/email/mcp/dist/lib/conversation-archive-dispatch.js +305 -0
  795. package/payload/platform/plugins/email/mcp/dist/lib/conversation-archive-dispatch.js.map +1 -0
  796. package/payload/platform/plugins/email/mcp/dist/lib/conversation-archive-lookup.d.ts +19 -0
  797. package/payload/platform/plugins/email/mcp/dist/lib/conversation-archive-lookup.d.ts.map +1 -0
  798. package/payload/platform/plugins/email/mcp/dist/lib/conversation-archive-lookup.js +51 -0
  799. package/payload/platform/plugins/email/mcp/dist/lib/conversation-archive-lookup.js.map +1 -0
  800. package/payload/platform/plugins/email/mcp/dist/lib/credentials.d.ts +89 -0
  801. package/payload/platform/plugins/email/mcp/dist/lib/credentials.d.ts.map +1 -0
  802. package/payload/platform/plugins/email/mcp/dist/lib/credentials.js +245 -0
  803. package/payload/platform/plugins/email/mcp/dist/lib/credentials.js.map +1 -0
  804. package/payload/platform/plugins/email/mcp/dist/lib/embedding.d.ts +2 -0
  805. package/payload/platform/plugins/email/mcp/dist/lib/embedding.d.ts.map +1 -0
  806. package/payload/platform/plugins/email/mcp/dist/lib/embedding.js +24 -0
  807. package/payload/platform/plugins/email/mcp/dist/lib/embedding.js.map +1 -0
  808. package/payload/platform/plugins/email/mcp/dist/lib/graph.d.ts +29 -0
  809. package/payload/platform/plugins/email/mcp/dist/lib/graph.d.ts.map +1 -0
  810. package/payload/platform/plugins/email/mcp/dist/lib/graph.js +18 -0
  811. package/payload/platform/plugins/email/mcp/dist/lib/graph.js.map +1 -0
  812. package/payload/platform/plugins/email/mcp/dist/lib/imap.d.ts +352 -0
  813. package/payload/platform/plugins/email/mcp/dist/lib/imap.d.ts.map +1 -0
  814. package/payload/platform/plugins/email/mcp/dist/lib/imap.js +1021 -0
  815. package/payload/platform/plugins/email/mcp/dist/lib/imap.js.map +1 -0
  816. package/payload/platform/plugins/email/mcp/dist/lib/ingest-batch.d.ts +31 -0
  817. package/payload/platform/plugins/email/mcp/dist/lib/ingest-batch.d.ts.map +1 -0
  818. package/payload/platform/plugins/email/mcp/dist/lib/ingest-batch.js +15 -0
  819. package/payload/platform/plugins/email/mcp/dist/lib/ingest-batch.js.map +1 -0
  820. package/payload/platform/plugins/email/mcp/dist/lib/neo4j.d.ts +5 -0
  821. package/payload/platform/plugins/email/mcp/dist/lib/neo4j.d.ts.map +1 -0
  822. package/payload/platform/plugins/email/mcp/dist/lib/neo4j.js +40 -0
  823. package/payload/platform/plugins/email/mcp/dist/lib/neo4j.js.map +1 -0
  824. package/payload/platform/plugins/email/mcp/dist/lib/providers.d.ts +71 -0
  825. package/payload/platform/plugins/email/mcp/dist/lib/providers.d.ts.map +1 -0
  826. package/payload/platform/plugins/email/mcp/dist/lib/providers.js +782 -0
  827. package/payload/platform/plugins/email/mcp/dist/lib/providers.js.map +1 -0
  828. package/payload/platform/plugins/email/mcp/dist/lib/screening.d.ts +29 -0
  829. package/payload/platform/plugins/email/mcp/dist/lib/screening.d.ts.map +1 -0
  830. package/payload/platform/plugins/email/mcp/dist/lib/screening.js +105 -0
  831. package/payload/platform/plugins/email/mcp/dist/lib/screening.js.map +1 -0
  832. package/payload/platform/plugins/email/mcp/dist/lib/setup-probe.d.ts +42 -0
  833. package/payload/platform/plugins/email/mcp/dist/lib/setup-probe.d.ts.map +1 -0
  834. package/payload/platform/plugins/email/mcp/dist/lib/setup-probe.js +72 -0
  835. package/payload/platform/plugins/email/mcp/dist/lib/setup-probe.js.map +1 -0
  836. package/payload/platform/plugins/email/mcp/dist/lib/smtp.d.ts +61 -0
  837. package/payload/platform/plugins/email/mcp/dist/lib/smtp.d.ts.map +1 -0
  838. package/payload/platform/plugins/email/mcp/dist/lib/smtp.js +140 -0
  839. package/payload/platform/plugins/email/mcp/dist/lib/smtp.js.map +1 -0
  840. package/payload/platform/plugins/email/mcp/dist/scripts/email-auto-respond.d.ts +38 -0
  841. package/payload/platform/plugins/email/mcp/dist/scripts/email-auto-respond.d.ts.map +1 -0
  842. package/payload/platform/plugins/email/mcp/dist/scripts/email-auto-respond.js +817 -0
  843. package/payload/platform/plugins/email/mcp/dist/scripts/email-auto-respond.js.map +1 -0
  844. package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.d.ts +30 -0
  845. package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.d.ts.map +1 -0
  846. package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.js +215 -0
  847. package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.js.map +1 -0
  848. package/payload/platform/plugins/email/mcp/dist/scripts/send-transactional.d.ts +2 -0
  849. package/payload/platform/plugins/email/mcp/dist/scripts/send-transactional.d.ts.map +1 -0
  850. package/payload/platform/plugins/email/mcp/dist/scripts/send-transactional.js +55 -0
  851. package/payload/platform/plugins/email/mcp/dist/scripts/send-transactional.js.map +1 -0
  852. package/payload/platform/plugins/email/mcp/dist/tools/email-auto-respond-config.d.ts +19 -0
  853. package/payload/platform/plugins/email/mcp/dist/tools/email-auto-respond-config.d.ts.map +1 -0
  854. package/payload/platform/plugins/email/mcp/dist/tools/email-auto-respond-config.js +151 -0
  855. package/payload/platform/plugins/email/mcp/dist/tools/email-auto-respond-config.js.map +1 -0
  856. package/payload/platform/plugins/email/mcp/dist/tools/email-classify.d.ts +6 -0
  857. package/payload/platform/plugins/email/mcp/dist/tools/email-classify.d.ts.map +1 -0
  858. package/payload/platform/plugins/email/mcp/dist/tools/email-classify.js +89 -0
  859. package/payload/platform/plugins/email/mcp/dist/tools/email-classify.js.map +1 -0
  860. package/payload/platform/plugins/email/mcp/dist/tools/email-draft-edit.d.ts +9 -0
  861. package/payload/platform/plugins/email/mcp/dist/tools/email-draft-edit.d.ts.map +1 -0
  862. package/payload/platform/plugins/email/mcp/dist/tools/email-draft-edit.js +23 -0
  863. package/payload/platform/plugins/email/mcp/dist/tools/email-draft-edit.js.map +1 -0
  864. package/payload/platform/plugins/email/mcp/dist/tools/email-draft-send.d.ts +8 -0
  865. package/payload/platform/plugins/email/mcp/dist/tools/email-draft-send.d.ts.map +1 -0
  866. package/payload/platform/plugins/email/mcp/dist/tools/email-draft-send.js +52 -0
  867. package/payload/platform/plugins/email/mcp/dist/tools/email-draft-send.js.map +1 -0
  868. package/payload/platform/plugins/email/mcp/dist/tools/email-draft.d.ts +7 -0
  869. package/payload/platform/plugins/email/mcp/dist/tools/email-draft.d.ts.map +1 -0
  870. package/payload/platform/plugins/email/mcp/dist/tools/email-draft.js +17 -0
  871. package/payload/platform/plugins/email/mcp/dist/tools/email-draft.js.map +1 -0
  872. package/payload/platform/plugins/email/mcp/dist/tools/email-fetch.d.ts +15 -0
  873. package/payload/platform/plugins/email/mcp/dist/tools/email-fetch.d.ts.map +1 -0
  874. package/payload/platform/plugins/email/mcp/dist/tools/email-fetch.js +54 -0
  875. package/payload/platform/plugins/email/mcp/dist/tools/email-fetch.js.map +1 -0
  876. package/payload/platform/plugins/email/mcp/dist/tools/email-graph-query.d.ts +24 -0
  877. package/payload/platform/plugins/email/mcp/dist/tools/email-graph-query.d.ts.map +1 -0
  878. package/payload/platform/plugins/email/mcp/dist/tools/email-graph-query.js +293 -0
  879. package/payload/platform/plugins/email/mcp/dist/tools/email-graph-query.js.map +1 -0
  880. package/payload/platform/plugins/email/mcp/dist/tools/email-ingest.d.ts +20 -0
  881. package/payload/platform/plugins/email/mcp/dist/tools/email-ingest.d.ts.map +1 -0
  882. package/payload/platform/plugins/email/mcp/dist/tools/email-ingest.js +195 -0
  883. package/payload/platform/plugins/email/mcp/dist/tools/email-ingest.js.map +1 -0
  884. package/payload/platform/plugins/email/mcp/dist/tools/email-otp-extract.d.ts +15 -0
  885. package/payload/platform/plugins/email/mcp/dist/tools/email-otp-extract.d.ts.map +1 -0
  886. package/payload/platform/plugins/email/mcp/dist/tools/email-otp-extract.js +144 -0
  887. package/payload/platform/plugins/email/mcp/dist/tools/email-otp-extract.js.map +1 -0
  888. package/payload/platform/plugins/email/mcp/dist/tools/email-read.d.ts +14 -0
  889. package/payload/platform/plugins/email/mcp/dist/tools/email-read.d.ts.map +1 -0
  890. package/payload/platform/plugins/email/mcp/dist/tools/email-read.js +94 -0
  891. package/payload/platform/plugins/email/mcp/dist/tools/email-read.js.map +1 -0
  892. package/payload/platform/plugins/email/mcp/dist/tools/email-reply.d.ts +13 -0
  893. package/payload/platform/plugins/email/mcp/dist/tools/email-reply.d.ts.map +1 -0
  894. package/payload/platform/plugins/email/mcp/dist/tools/email-reply.js +71 -0
  895. package/payload/platform/plugins/email/mcp/dist/tools/email-reply.js.map +1 -0
  896. package/payload/platform/plugins/email/mcp/dist/tools/email-search.d.ts +15 -0
  897. package/payload/platform/plugins/email/mcp/dist/tools/email-search.d.ts.map +1 -0
  898. package/payload/platform/plugins/email/mcp/dist/tools/email-search.js +77 -0
  899. package/payload/platform/plugins/email/mcp/dist/tools/email-search.js.map +1 -0
  900. package/payload/platform/plugins/email/mcp/dist/tools/email-send.d.ts +13 -0
  901. package/payload/platform/plugins/email/mcp/dist/tools/email-send.d.ts.map +1 -0
  902. package/payload/platform/plugins/email/mcp/dist/tools/email-send.js +36 -0
  903. package/payload/platform/plugins/email/mcp/dist/tools/email-send.js.map +1 -0
  904. package/payload/platform/plugins/email/mcp/dist/tools/email-setup.d.ts +22 -0
  905. package/payload/platform/plugins/email/mcp/dist/tools/email-setup.d.ts.map +1 -0
  906. package/payload/platform/plugins/email/mcp/dist/tools/email-setup.js +202 -0
  907. package/payload/platform/plugins/email/mcp/dist/tools/email-setup.js.map +1 -0
  908. package/payload/platform/plugins/email/mcp/dist/tools/email-status.d.ts +6 -0
  909. package/payload/platform/plugins/email/mcp/dist/tools/email-status.d.ts.map +1 -0
  910. package/payload/platform/plugins/email/mcp/dist/tools/email-status.js +43 -0
  911. package/payload/platform/plugins/email/mcp/dist/tools/email-status.js.map +1 -0
  912. package/payload/platform/plugins/email/mcp/package.json +24 -0
  913. package/payload/platform/plugins/email/mcp/vitest.config.ts +9 -0
  914. package/payload/platform/plugins/email/references/email-reference.md +181 -0
  915. package/payload/platform/plugins/email/skills/email-composition/SKILL.md +208 -0
  916. package/payload/platform/plugins/email/skills/email-ingest/SKILL.md +89 -0
  917. package/payload/platform/plugins/graph/.claude-plugin/plugin.json +8 -0
  918. package/payload/platform/plugins/graph/PLUGIN.md +39 -0
  919. package/payload/platform/plugins/graph-viewer/.claude-plugin/plugin.json +8 -0
  920. package/payload/platform/plugins/graph-viewer/PLUGIN.md +56 -0
  921. package/payload/platform/plugins/graph-viewer/mcp/dist/index.d.ts +7 -0
  922. package/payload/platform/plugins/graph-viewer/mcp/dist/index.d.ts.map +1 -0
  923. package/payload/platform/plugins/graph-viewer/mcp/dist/index.js +70 -0
  924. package/payload/platform/plugins/graph-viewer/mcp/dist/index.js.map +1 -0
  925. package/payload/platform/plugins/graph-viewer/mcp/dist/lib/neo4j.d.ts +5 -0
  926. package/payload/platform/plugins/graph-viewer/mcp/dist/lib/neo4j.d.ts.map +1 -0
  927. package/payload/platform/plugins/graph-viewer/mcp/dist/lib/neo4j.js +43 -0
  928. package/payload/platform/plugins/graph-viewer/mcp/dist/lib/neo4j.js.map +1 -0
  929. package/payload/platform/plugins/graph-viewer/mcp/dist/render/draw.d.ts +28 -0
  930. package/payload/platform/plugins/graph-viewer/mcp/dist/render/draw.d.ts.map +1 -0
  931. package/payload/platform/plugins/graph-viewer/mcp/dist/render/draw.js +73 -0
  932. package/payload/platform/plugins/graph-viewer/mcp/dist/render/draw.js.map +1 -0
  933. package/payload/platform/plugins/graph-viewer/mcp/dist/render/layout.d.ts +40 -0
  934. package/payload/platform/plugins/graph-viewer/mcp/dist/render/layout.d.ts.map +1 -0
  935. package/payload/platform/plugins/graph-viewer/mcp/dist/render/layout.js +117 -0
  936. package/payload/platform/plugins/graph-viewer/mcp/dist/render/layout.js.map +1 -0
  937. package/payload/platform/plugins/graph-viewer/mcp/dist/tools/graph-render.d.ts +45 -0
  938. package/payload/platform/plugins/graph-viewer/mcp/dist/tools/graph-render.d.ts.map +1 -0
  939. package/payload/platform/plugins/graph-viewer/mcp/dist/tools/graph-render.js +199 -0
  940. package/payload/platform/plugins/graph-viewer/mcp/dist/tools/graph-render.js.map +1 -0
  941. package/payload/platform/plugins/graph-viewer/mcp/package.json +25 -0
  942. package/payload/platform/plugins/graph-viewer/mcp/vitest.config.ts +8 -0
  943. package/payload/platform/plugins/graph-viewer/skills/render-graph/SKILL.md +43 -0
  944. package/payload/platform/plugins/linkedin-extension/.claude-plugin/plugin.json +8 -0
  945. package/payload/platform/plugins/linkedin-extension/PLUGIN.md +58 -0
  946. package/payload/platform/plugins/linkedin-extension/extension/README.md +44 -0
  947. package/payload/platform/plugins/linkedin-extension/extension/__tests__/fixtures/profile.html +34 -0
  948. package/payload/platform/plugins/linkedin-extension/extension/__tests__/fixtures/thread.html +36 -0
  949. package/payload/platform/plugins/linkedin-extension/extension/assets/pill.css +52 -0
  950. package/payload/platform/plugins/linkedin-extension/extension/background/sw.js +60 -0
  951. package/payload/platform/plugins/linkedin-extension/extension/content/extractors.js +127 -0
  952. package/payload/platform/plugins/linkedin-extension/extension/content/profile.js +82 -0
  953. package/payload/platform/plugins/linkedin-extension/extension/content/thread.js +84 -0
  954. package/payload/platform/plugins/linkedin-extension/extension/manifest.json +32 -0
  955. package/payload/platform/plugins/linkedin-extension/extension/options/options.html +33 -0
  956. package/payload/platform/plugins/linkedin-extension/extension/options/options.js +30 -0
  957. package/payload/platform/plugins/linkedin-extension/skills/linkedin-extension/SKILL.md +93 -0
  958. package/payload/platform/plugins/linkedin-import/.claude-plugin/plugin.json +8 -0
  959. package/payload/platform/plugins/linkedin-import/PLUGIN.md +27 -0
  960. package/payload/platform/plugins/linkedin-import/skills/linkedin-import/SKILL.md +119 -0
  961. package/payload/platform/plugins/linkedin-import/skills/linkedin-import/references/connections.md +135 -0
  962. package/payload/platform/plugins/linkedin-import/skills/linkedin-import/references/profile.md +94 -0
  963. package/payload/platform/plugins/memory/.claude-plugin/plugin.json +21 -0
  964. package/payload/platform/plugins/memory/PLUGIN.md +290 -0
  965. package/payload/platform/plugins/memory/bin/conversation-archive-ingest.mjs +616 -0
  966. package/payload/platform/plugins/memory/bin/conversation-archive-ingest.sh +106 -0
  967. package/payload/platform/plugins/memory/lib/mcp-spawn-tee/index.js +193 -0
  968. package/payload/platform/plugins/memory/lib/mcp-spawn-tee/package.json +3 -0
  969. package/payload/platform/plugins/memory/mcp/dist/index.d.ts +2 -0
  970. package/payload/platform/plugins/memory/mcp/dist/index.d.ts.map +1 -0
  971. package/payload/platform/plugins/memory/mcp/dist/index.js +2479 -0
  972. package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -0
  973. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-revision.test.d.ts +2 -0
  974. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-revision.test.d.ts.map +1 -0
  975. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-revision.test.js +68 -0
  976. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-revision.test.js.map +1 -0
  977. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-rewriter-operator-hint.test.d.ts +2 -0
  978. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-rewriter-operator-hint.test.d.ts.map +1 -0
  979. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-rewriter-operator-hint.test.js +90 -0
  980. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-rewriter-operator-hint.test.js.map +1 -0
  981. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/document-sectioniser.test.d.ts +2 -0
  982. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/document-sectioniser.test.d.ts.map +1 -0
  983. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/document-sectioniser.test.js +41 -0
  984. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/document-sectioniser.test.js.map +1 -0
  985. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/graph-write-embed-net.test.d.ts +2 -0
  986. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/graph-write-embed-net.test.d.ts.map +1 -0
  987. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/graph-write-embed-net.test.js +90 -0
  988. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/graph-write-embed-net.test.js.map +1 -0
  989. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/graph-write-gate-label.test.d.ts +2 -0
  990. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/graph-write-gate-label.test.d.ts.map +1 -0
  991. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/graph-write-gate-label.test.js +30 -0
  992. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/graph-write-gate-label.test.js.map +1 -0
  993. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/graph-write-gate-property.test.d.ts +2 -0
  994. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/graph-write-gate-property.test.d.ts.map +1 -0
  995. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/graph-write-gate-property.test.js +25 -0
  996. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/graph-write-gate-property.test.js.map +1 -0
  997. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/label-delete-gate.test.d.ts +2 -0
  998. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/label-delete-gate.test.d.ts.map +1 -0
  999. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/label-delete-gate.test.js +62 -0
  1000. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/label-delete-gate.test.js.map +1 -0
  1001. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/label-origin-gate.test.d.ts +2 -0
  1002. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/label-origin-gate.test.d.ts.map +1 -0
  1003. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/label-origin-gate.test.js +50 -0
  1004. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/label-origin-gate.test.js.map +1 -0
  1005. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/live-schema-source.test.d.ts +2 -0
  1006. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/live-schema-source.test.d.ts.map +1 -0
  1007. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/live-schema-source.test.js +154 -0
  1008. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/live-schema-source.test.js.map +1 -0
  1009. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/llm-classifier.test.d.ts +2 -0
  1010. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/llm-classifier.test.d.ts.map +1 -0
  1011. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/llm-classifier.test.js +226 -0
  1012. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/llm-classifier.test.js.map +1 -0
  1013. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/neo4j-password-path.test.d.ts +2 -0
  1014. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/neo4j-password-path.test.d.ts.map +1 -0
  1015. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/neo4j-password-path.test.js +57 -0
  1016. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/neo4j-password-path.test.js.map +1 -0
  1017. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-backlinks.test.d.ts +2 -0
  1018. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-backlinks.test.d.ts.map +1 -0
  1019. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-backlinks.test.js +24 -0
  1020. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-backlinks.test.js.map +1 -0
  1021. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-prune-revisions.test.d.ts +2 -0
  1022. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-prune-revisions.test.d.ts.map +1 -0
  1023. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-prune-revisions.test.js +51 -0
  1024. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-prune-revisions.test.js.map +1 -0
  1025. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-tag-normalisation.test.d.ts +2 -0
  1026. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-tag-normalisation.test.d.ts.map +1 -0
  1027. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-tag-normalisation.test.js +51 -0
  1028. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-tag-normalisation.test.js.map +1 -0
  1029. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/relationship-patterns.test.d.ts +2 -0
  1030. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/relationship-patterns.test.d.ts.map +1 -0
  1031. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/relationship-patterns.test.js +146 -0
  1032. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/relationship-patterns.test.js.map +1 -0
  1033. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/relative-date.test.d.ts +2 -0
  1034. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/relative-date.test.d.ts.map +1 -0
  1035. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/relative-date.test.js +68 -0
  1036. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/relative-date.test.js.map +1 -0
  1037. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/resolve-active-vertical.test.d.ts +2 -0
  1038. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/resolve-active-vertical.test.d.ts.map +1 -0
  1039. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/resolve-active-vertical.test.js +116 -0
  1040. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/resolve-active-vertical.test.js.map +1 -0
  1041. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-cypher-drift.test.d.ts +2 -0
  1042. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-cypher-drift.test.d.ts.map +1 -0
  1043. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-cypher-drift.test.js +71 -0
  1044. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-cypher-drift.test.js.map +1 -0
  1045. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-doc-contradictions.test.d.ts +2 -0
  1046. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-doc-contradictions.test.d.ts.map +1 -0
  1047. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-doc-contradictions.test.js +214 -0
  1048. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-doc-contradictions.test.js.map +1 -0
  1049. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-loader.test.d.ts +2 -0
  1050. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-loader.test.d.ts.map +1 -0
  1051. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-loader.test.js +245 -0
  1052. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-loader.test.js.map +1 -0
  1053. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-validator.test.d.ts +2 -0
  1054. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-validator.test.d.ts.map +1 -0
  1055. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-validator.test.js +642 -0
  1056. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-validator.test.js.map +1 -0
  1057. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-write-path-task802.test.d.ts +2 -0
  1058. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-write-path-task802.test.d.ts.map +1 -0
  1059. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-write-path-task802.test.js +113 -0
  1060. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-write-path-task802.test.js.map +1 -0
  1061. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/timeline-extractor.test.d.ts +2 -0
  1062. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/timeline-extractor.test.d.ts.map +1 -0
  1063. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/timeline-extractor.test.js +111 -0
  1064. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/timeline-extractor.test.js.map +1 -0
  1065. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/typed-edge-schema.test.d.ts +2 -0
  1066. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/typed-edge-schema.test.d.ts.map +1 -0
  1067. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/typed-edge-schema.test.js +85 -0
  1068. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/typed-edge-schema.test.js.map +1 -0
  1069. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/vector-indexed-labels-drift.test.d.ts +2 -0
  1070. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/vector-indexed-labels-drift.test.d.ts.map +1 -0
  1071. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/vector-indexed-labels-drift.test.js +27 -0
  1072. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/vector-indexed-labels-drift.test.js.map +1 -0
  1073. package/payload/platform/plugins/memory/mcp/dist/lib/attachments.d.ts +37 -0
  1074. package/payload/platform/plugins/memory/mcp/dist/lib/attachments.d.ts.map +1 -0
  1075. package/payload/platform/plugins/memory/mcp/dist/lib/attachments.js +69 -0
  1076. package/payload/platform/plugins/memory/mcp/dist/lib/attachments.js.map +1 -0
  1077. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-revision.d.ts +91 -0
  1078. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-revision.d.ts.map +1 -0
  1079. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-revision.js +39 -0
  1080. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-revision.js.map +1 -0
  1081. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-rewriter.d.ts +60 -0
  1082. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-rewriter.d.ts.map +1 -0
  1083. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-rewriter.js +169 -0
  1084. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-rewriter.js.map +1 -0
  1085. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/email.d.ts +3 -0
  1086. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/email.d.ts.map +1 -0
  1087. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/email.js +61 -0
  1088. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/email.js.map +1 -0
  1089. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/index.d.ts +7 -0
  1090. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/index.d.ts.map +1 -0
  1091. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/index.js +36 -0
  1092. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/index.js.map +1 -0
  1093. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/timestamp-scanner.d.ts +49 -0
  1094. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/timestamp-scanner.d.ts.map +1 -0
  1095. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/timestamp-scanner.js +35 -0
  1096. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/timestamp-scanner.js.map +1 -0
  1097. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/types.d.ts +47 -0
  1098. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/types.d.ts.map +1 -0
  1099. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/types.js +38 -0
  1100. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/types.js.map +1 -0
  1101. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/whatsapp-text.d.ts +3 -0
  1102. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/whatsapp-text.d.ts.map +1 -0
  1103. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/whatsapp-text.js +155 -0
  1104. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/whatsapp-text.js.map +1 -0
  1105. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/x-dm.d.ts +3 -0
  1106. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/x-dm.d.ts.map +1 -0
  1107. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/x-dm.js +101 -0
  1108. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/x-dm.js.map +1 -0
  1109. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/delta-cursor.d.ts +11 -0
  1110. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/delta-cursor.d.ts.map +1 -0
  1111. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/delta-cursor.js +20 -0
  1112. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/delta-cursor.js.map +1 -0
  1113. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/derive-keys.d.ts +16 -0
  1114. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/derive-keys.d.ts.map +1 -0
  1115. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/derive-keys.js +43 -0
  1116. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/derive-keys.js.map +1 -0
  1117. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/sender-bind.d.ts +16 -0
  1118. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/sender-bind.d.ts.map +1 -0
  1119. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/sender-bind.js +60 -0
  1120. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/sender-bind.js.map +1 -0
  1121. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/sessionize.d.ts +9 -0
  1122. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/sessionize.d.ts.map +1 -0
  1123. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/sessionize.js +32 -0
  1124. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/sessionize.js.map +1 -0
  1125. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/to-turn-text.d.ts +3 -0
  1126. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/to-turn-text.d.ts.map +1 -0
  1127. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/to-turn-text.js +29 -0
  1128. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/to-turn-text.js.map +1 -0
  1129. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/turn-text-cache-path.d.ts +8 -0
  1130. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/turn-text-cache-path.d.ts.map +1 -0
  1131. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/turn-text-cache-path.js +27 -0
  1132. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/turn-text-cache-path.js.map +1 -0
  1133. package/payload/platform/plugins/memory/mcp/dist/lib/document-chunker.d.ts +45 -0
  1134. package/payload/platform/plugins/memory/mcp/dist/lib/document-chunker.d.ts.map +1 -0
  1135. package/payload/platform/plugins/memory/mcp/dist/lib/document-chunker.js +125 -0
  1136. package/payload/platform/plugins/memory/mcp/dist/lib/document-chunker.js.map +1 -0
  1137. package/payload/platform/plugins/memory/mcp/dist/lib/document-hierarchy.d.ts +9 -0
  1138. package/payload/platform/plugins/memory/mcp/dist/lib/document-hierarchy.d.ts.map +1 -0
  1139. package/payload/platform/plugins/memory/mcp/dist/lib/document-hierarchy.js +61 -0
  1140. package/payload/platform/plugins/memory/mcp/dist/lib/document-hierarchy.js.map +1 -0
  1141. package/payload/platform/plugins/memory/mcp/dist/lib/document-sectioniser.d.ts +10 -0
  1142. package/payload/platform/plugins/memory/mcp/dist/lib/document-sectioniser.d.ts.map +1 -0
  1143. package/payload/platform/plugins/memory/mcp/dist/lib/document-sectioniser.js +47 -0
  1144. package/payload/platform/plugins/memory/mcp/dist/lib/document-sectioniser.js.map +1 -0
  1145. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/index.d.ts +44 -0
  1146. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/index.d.ts.map +1 -0
  1147. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/index.js +14 -0
  1148. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/index.js.map +1 -0
  1149. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-backlinks.d.ts +15 -0
  1150. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-backlinks.d.ts.map +1 -0
  1151. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-backlinks.js +37 -0
  1152. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-backlinks.js.map +1 -0
  1153. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-citation-audit.d.ts +3 -0
  1154. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-citation-audit.d.ts.map +1 -0
  1155. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-citation-audit.js +16 -0
  1156. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-citation-audit.js.map +1 -0
  1157. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-dead-edges.d.ts +19 -0
  1158. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-dead-edges.d.ts.map +1 -0
  1159. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-dead-edges.js +39 -0
  1160. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-dead-edges.js.map +1 -0
  1161. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-orphans.d.ts +19 -0
  1162. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-orphans.d.ts.map +1 -0
  1163. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-orphans.js +42 -0
  1164. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-orphans.js.map +1 -0
  1165. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-prune-revisions.d.ts +21 -0
  1166. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-prune-revisions.d.ts.map +1 -0
  1167. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-prune-revisions.js +27 -0
  1168. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-prune-revisions.js.map +1 -0
  1169. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-stale-truth.d.ts +18 -0
  1170. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-stale-truth.d.ts.map +1 -0
  1171. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-stale-truth.js +60 -0
  1172. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-stale-truth.js.map +1 -0
  1173. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-tag-normalisation.d.ts +25 -0
  1174. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-tag-normalisation.d.ts.map +1 -0
  1175. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-tag-normalisation.js +90 -0
  1176. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-tag-normalisation.js.map +1 -0
  1177. package/payload/platform/plugins/memory/mcp/dist/lib/embeddings.d.ts +2 -0
  1178. package/payload/platform/plugins/memory/mcp/dist/lib/embeddings.d.ts.map +1 -0
  1179. package/payload/platform/plugins/memory/mcp/dist/lib/embeddings.js +6 -0
  1180. package/payload/platform/plugins/memory/mcp/dist/lib/embeddings.js.map +1 -0
  1181. package/payload/platform/plugins/memory/mcp/dist/lib/filter-token.d.ts +36 -0
  1182. package/payload/platform/plugins/memory/mcp/dist/lib/filter-token.d.ts.map +1 -0
  1183. package/payload/platform/plugins/memory/mcp/dist/lib/filter-token.js +86 -0
  1184. package/payload/platform/plugins/memory/mcp/dist/lib/filter-token.js.map +1 -0
  1185. package/payload/platform/plugins/memory/mcp/dist/lib/graph-prune.d.ts +41 -0
  1186. package/payload/platform/plugins/memory/mcp/dist/lib/graph-prune.d.ts.map +1 -0
  1187. package/payload/platform/plugins/memory/mcp/dist/lib/graph-prune.js +113 -0
  1188. package/payload/platform/plugins/memory/mcp/dist/lib/graph-prune.js.map +1 -0
  1189. package/payload/platform/plugins/memory/mcp/dist/lib/graph-write-gate.d.ts +76 -0
  1190. package/payload/platform/plugins/memory/mcp/dist/lib/graph-write-gate.d.ts.map +1 -0
  1191. package/payload/platform/plugins/memory/mcp/dist/lib/graph-write-gate.js +148 -0
  1192. package/payload/platform/plugins/memory/mcp/dist/lib/graph-write-gate.js.map +1 -0
  1193. package/payload/platform/plugins/memory/mcp/dist/lib/kd-classify-gate.d.ts +41 -0
  1194. package/payload/platform/plugins/memory/mcp/dist/lib/kd-classify-gate.d.ts.map +1 -0
  1195. package/payload/platform/plugins/memory/mcp/dist/lib/kd-classify-gate.js +69 -0
  1196. package/payload/platform/plugins/memory/mcp/dist/lib/kd-classify-gate.js.map +1 -0
  1197. package/payload/platform/plugins/memory/mcp/dist/lib/label-delete-gate.d.ts +18 -0
  1198. package/payload/platform/plugins/memory/mcp/dist/lib/label-delete-gate.d.ts.map +1 -0
  1199. package/payload/platform/plugins/memory/mcp/dist/lib/label-delete-gate.js +31 -0
  1200. package/payload/platform/plugins/memory/mcp/dist/lib/label-delete-gate.js.map +1 -0
  1201. package/payload/platform/plugins/memory/mcp/dist/lib/label-origin-gate.d.ts +18 -0
  1202. package/payload/platform/plugins/memory/mcp/dist/lib/label-origin-gate.d.ts.map +1 -0
  1203. package/payload/platform/plugins/memory/mcp/dist/lib/label-origin-gate.js +35 -0
  1204. package/payload/platform/plugins/memory/mcp/dist/lib/label-origin-gate.js.map +1 -0
  1205. package/payload/platform/plugins/memory/mcp/dist/lib/live-schema-source.d.ts +119 -0
  1206. package/payload/platform/plugins/memory/mcp/dist/lib/live-schema-source.d.ts.map +1 -0
  1207. package/payload/platform/plugins/memory/mcp/dist/lib/live-schema-source.js +208 -0
  1208. package/payload/platform/plugins/memory/mcp/dist/lib/live-schema-source.js.map +1 -0
  1209. package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.d.ts +248 -0
  1210. package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.d.ts.map +1 -0
  1211. package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.js +824 -0
  1212. package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.js.map +1 -0
  1213. package/payload/platform/plugins/memory/mcp/dist/lib/llm-ranker.d.ts +63 -0
  1214. package/payload/platform/plugins/memory/mcp/dist/lib/llm-ranker.d.ts.map +1 -0
  1215. package/payload/platform/plugins/memory/mcp/dist/lib/llm-ranker.js +210 -0
  1216. package/payload/platform/plugins/memory/mcp/dist/lib/llm-ranker.js.map +1 -0
  1217. package/payload/platform/plugins/memory/mcp/dist/lib/log-ingest.d.ts +65 -0
  1218. package/payload/platform/plugins/memory/mcp/dist/lib/log-ingest.d.ts.map +1 -0
  1219. package/payload/platform/plugins/memory/mcp/dist/lib/log-ingest.js +182 -0
  1220. package/payload/platform/plugins/memory/mcp/dist/lib/log-ingest.js.map +1 -0
  1221. package/payload/platform/plugins/memory/mcp/dist/lib/neo4j.d.ts +19 -0
  1222. package/payload/platform/plugins/memory/mcp/dist/lib/neo4j.d.ts.map +1 -0
  1223. package/payload/platform/plugins/memory/mcp/dist/lib/neo4j.js +76 -0
  1224. package/payload/platform/plugins/memory/mcp/dist/lib/neo4j.js.map +1 -0
  1225. package/payload/platform/plugins/memory/mcp/dist/lib/relationship-patterns.d.ts +66 -0
  1226. package/payload/platform/plugins/memory/mcp/dist/lib/relationship-patterns.d.ts.map +1 -0
  1227. package/payload/platform/plugins/memory/mcp/dist/lib/relationship-patterns.js +102 -0
  1228. package/payload/platform/plugins/memory/mcp/dist/lib/relationship-patterns.js.map +1 -0
  1229. package/payload/platform/plugins/memory/mcp/dist/lib/relative-date.d.ts +13 -0
  1230. package/payload/platform/plugins/memory/mcp/dist/lib/relative-date.d.ts.map +1 -0
  1231. package/payload/platform/plugins/memory/mcp/dist/lib/relative-date.js +191 -0
  1232. package/payload/platform/plugins/memory/mcp/dist/lib/relative-date.js.map +1 -0
  1233. package/payload/platform/plugins/memory/mcp/dist/lib/resolve-active-vertical.d.ts +33 -0
  1234. package/payload/platform/plugins/memory/mcp/dist/lib/resolve-active-vertical.d.ts.map +1 -0
  1235. package/payload/platform/plugins/memory/mcp/dist/lib/resolve-active-vertical.js +44 -0
  1236. package/payload/platform/plugins/memory/mcp/dist/lib/resolve-active-vertical.js.map +1 -0
  1237. package/payload/platform/plugins/memory/mcp/dist/lib/schema-loader.d.ts +200 -0
  1238. package/payload/platform/plugins/memory/mcp/dist/lib/schema-loader.d.ts.map +1 -0
  1239. package/payload/platform/plugins/memory/mcp/dist/lib/schema-loader.js +607 -0
  1240. package/payload/platform/plugins/memory/mcp/dist/lib/schema-loader.js.map +1 -0
  1241. package/payload/platform/plugins/memory/mcp/dist/lib/schema-validator.d.ts +92 -0
  1242. package/payload/platform/plugins/memory/mcp/dist/lib/schema-validator.d.ts.map +1 -0
  1243. package/payload/platform/plugins/memory/mcp/dist/lib/schema-validator.js +243 -0
  1244. package/payload/platform/plugins/memory/mcp/dist/lib/schema-validator.js.map +1 -0
  1245. package/payload/platform/plugins/memory/mcp/dist/lib/section-types.d.ts +127 -0
  1246. package/payload/platform/plugins/memory/mcp/dist/lib/section-types.d.ts.map +1 -0
  1247. package/payload/platform/plugins/memory/mcp/dist/lib/section-types.js +56 -0
  1248. package/payload/platform/plugins/memory/mcp/dist/lib/section-types.js.map +1 -0
  1249. package/payload/platform/plugins/memory/mcp/dist/lib/timeline-extractor.d.ts +19 -0
  1250. package/payload/platform/plugins/memory/mcp/dist/lib/timeline-extractor.d.ts.map +1 -0
  1251. package/payload/platform/plugins/memory/mcp/dist/lib/timeline-extractor.js +179 -0
  1252. package/payload/platform/plugins/memory/mcp/dist/lib/timeline-extractor.js.map +1 -0
  1253. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-pass.d.ts +35 -0
  1254. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-pass.d.ts.map +1 -0
  1255. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-pass.js +28 -0
  1256. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-pass.js.map +1 -0
  1257. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-schema.d.ts +29 -0
  1258. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-schema.d.ts.map +1 -0
  1259. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-schema.js +160 -0
  1260. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-schema.js.map +1 -0
  1261. package/payload/platform/plugins/memory/mcp/dist/lib/uuid.d.ts +3 -0
  1262. package/payload/platform/plugins/memory/mcp/dist/lib/uuid.d.ts.map +1 -0
  1263. package/payload/platform/plugins/memory/mcp/dist/lib/uuid.js +12 -0
  1264. package/payload/platform/plugins/memory/mcp/dist/lib/uuid.js.map +1 -0
  1265. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/_helpers/emit-capture.d.ts +22 -0
  1266. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/_helpers/emit-capture.d.ts.map +1 -0
  1267. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/_helpers/emit-capture.js +44 -0
  1268. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/_helpers/emit-capture.js.map +1 -0
  1269. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/build-text-representation-bound.test.d.ts +2 -0
  1270. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/build-text-representation-bound.test.d.ts.map +1 -0
  1271. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/build-text-representation-bound.test.js +20 -0
  1272. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/build-text-representation-bound.test.js.map +1 -0
  1273. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights-emit.test.d.ts +2 -0
  1274. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights-emit.test.d.ts.map +1 -0
  1275. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights-emit.test.js +68 -0
  1276. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights-emit.test.js.map +1 -0
  1277. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights.test.d.ts +7 -0
  1278. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights.test.d.ts.map +1 -0
  1279. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights.test.js +298 -0
  1280. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights.test.js.map +1 -0
  1281. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-enrich-rejection-emit.test.d.ts +2 -0
  1282. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-enrich-rejection-emit.test.d.ts.map +1 -0
  1283. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-enrich-rejection-emit.test.js +48 -0
  1284. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-enrich-rejection-emit.test.js.map +1 -0
  1285. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-enrich-rejection.test.d.ts +2 -0
  1286. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-enrich-rejection.test.d.ts.map +1 -0
  1287. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-enrich-rejection.test.js +184 -0
  1288. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-enrich-rejection.test.js.map +1 -0
  1289. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-preference-embed.test.d.ts +2 -0
  1290. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-preference-embed.test.d.ts.map +1 -0
  1291. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-preference-embed.test.js +67 -0
  1292. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-preference-embed.test.js.map +1 -0
  1293. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-memory-expunge-emit.test.d.ts +2 -0
  1294. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-memory-expunge-emit.test.d.ts.map +1 -0
  1295. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-memory-expunge-emit.test.js +53 -0
  1296. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-memory-expunge-emit.test.js.map +1 -0
  1297. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-normalisers-source-agnosticism.test.d.ts +2 -0
  1298. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-normalisers-source-agnosticism.test.d.ts.map +1 -0
  1299. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-normalisers-source-agnosticism.test.js +75 -0
  1300. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-normalisers-source-agnosticism.test.js.map +1 -0
  1301. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-normalisers-whatsapp-text.test.d.ts +2 -0
  1302. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-normalisers-whatsapp-text.test.d.ts.map +1 -0
  1303. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-normalisers-whatsapp-text.test.js +109 -0
  1304. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-normalisers-whatsapp-text.test.js.map +1 -0
  1305. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/embeddings-cap.test.d.ts +2 -0
  1306. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/embeddings-cap.test.d.ts.map +1 -0
  1307. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/embeddings-cap.test.js +34 -0
  1308. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/embeddings-cap.test.js.map +1 -0
  1309. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/graph-prune-denylist-add-emit.test.d.ts +2 -0
  1310. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/graph-prune-denylist-add-emit.test.d.ts.map +1 -0
  1311. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/graph-prune-denylist-add-emit.test.js +40 -0
  1312. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/graph-prune-denylist-add-emit.test.js.map +1 -0
  1313. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/graph-prune-denylist-remove-emit.test.d.ts +2 -0
  1314. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/graph-prune-denylist-remove-emit.test.d.ts.map +1 -0
  1315. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/graph-prune-denylist-remove-emit.test.js +39 -0
  1316. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/graph-prune-denylist-remove-emit.test.js.map +1 -0
  1317. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/kd-classify-account-dir.test.d.ts +2 -0
  1318. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/kd-classify-account-dir.test.d.ts.map +1 -0
  1319. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/kd-classify-account-dir.test.js +31 -0
  1320. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/kd-classify-account-dir.test.js.map +1 -0
  1321. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/log-ingest.test.d.ts +2 -0
  1322. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/log-ingest.test.d.ts.map +1 -0
  1323. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/log-ingest.test.js +241 -0
  1324. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/log-ingest.test.js.map +1 -0
  1325. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-section-writer.test.d.ts +2 -0
  1326. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-section-writer.test.d.ts.map +1 -0
  1327. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-section-writer.test.js +61 -0
  1328. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-section-writer.test.js.map +1 -0
  1329. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write-emit.test.d.ts +2 -0
  1330. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write-emit.test.d.ts.map +1 -0
  1331. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write-emit.test.js +88 -0
  1332. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write-emit.test.js.map +1 -0
  1333. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write.test.d.ts +2 -0
  1334. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write.test.d.ts.map +1 -0
  1335. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write.test.js +106 -0
  1336. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write.test.js.map +1 -0
  1337. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-classify-emit.test.d.ts +2 -0
  1338. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-classify-emit.test.d.ts.map +1 -0
  1339. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-classify-emit.test.js +58 -0
  1340. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-classify-emit.test.js.map +1 -0
  1341. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-compiled-truth-history.test.d.ts +2 -0
  1342. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-compiled-truth-history.test.d.ts.map +1 -0
  1343. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-compiled-truth-history.test.js +129 -0
  1344. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-compiled-truth-history.test.js.map +1 -0
  1345. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-emit.test.d.ts +2 -0
  1346. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-emit.test.d.ts.map +1 -0
  1347. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-emit.test.js +64 -0
  1348. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-emit.test.js.map +1 -0
  1349. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-reserved-label.test.d.ts +2 -0
  1350. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-reserved-label.test.d.ts.map +1 -0
  1351. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-reserved-label.test.js +141 -0
  1352. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-reserved-label.test.js.map +1 -0
  1353. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edge.test.d.ts +2 -0
  1354. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edge.test.d.ts.map +1 -0
  1355. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edge.test.js +164 -0
  1356. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edge.test.js.map +1 -0
  1357. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edit-attachment-emit.test.d.ts +2 -0
  1358. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edit-attachment-emit.test.d.ts.map +1 -0
  1359. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edit-attachment-emit.test.js +70 -0
  1360. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edit-attachment-emit.test.js.map +1 -0
  1361. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-admin-conversation.test.d.ts +2 -0
  1362. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-admin-conversation.test.d.ts.map +1 -0
  1363. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-admin-conversation.test.js +168 -0
  1364. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-admin-conversation.test.js.map +1 -0
  1365. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-emit.test.d.ts +2 -0
  1366. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-emit.test.d.ts.map +1 -0
  1367. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-emit.test.js +48 -0
  1368. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-emit.test.js.map +1 -0
  1369. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-reserved-label.test.d.ts +2 -0
  1370. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-reserved-label.test.d.ts.map +1 -0
  1371. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-reserved-label.test.js +86 -0
  1372. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-reserved-label.test.js.map +1 -0
  1373. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-body-server-sliced.test.d.ts +2 -0
  1374. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-body-server-sliced.test.d.ts.map +1 -0
  1375. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-body-server-sliced.test.js +134 -0
  1376. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-body-server-sliced.test.js.map +1 -0
  1377. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-chat-body-server-sliced.test.d.ts +2 -0
  1378. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-chat-body-server-sliced.test.d.ts.map +1 -0
  1379. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-chat-body-server-sliced.test.js +124 -0
  1380. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-chat-body-server-sliced.test.js.map +1 -0
  1381. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-emit.test.d.ts +2 -0
  1382. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-emit.test.d.ts.map +1 -0
  1383. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-emit.test.js +74 -0
  1384. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-emit.test.js.map +1 -0
  1385. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-extract-emit.test.d.ts +2 -0
  1386. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-extract-emit.test.d.ts.map +1 -0
  1387. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-extract-emit.test.js +47 -0
  1388. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-extract-emit.test.js.map +1 -0
  1389. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-inline-rewrite.test.d.ts +2 -0
  1390. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-inline-rewrite.test.d.ts.map +1 -0
  1391. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-inline-rewrite.test.js +66 -0
  1392. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-inline-rewrite.test.js.map +1 -0
  1393. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-section-properties-strip.test.d.ts +2 -0
  1394. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-section-properties-strip.test.d.ts.map +1 -0
  1395. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-section-properties-strip.test.js +104 -0
  1396. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-section-properties-strip.test.js.map +1 -0
  1397. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-web-emit.test.d.ts +2 -0
  1398. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-web-emit.test.d.ts.map +1 -0
  1399. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-web-emit.test.js +65 -0
  1400. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-web-emit.test.js.map +1 -0
  1401. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest.test.d.ts +2 -0
  1402. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest.test.d.ts.map +1 -0
  1403. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest.test.js +175 -0
  1404. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest.test.js.map +1 -0
  1405. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-lookup-by-name.test.d.ts +2 -0
  1406. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-lookup-by-name.test.d.ts.map +1 -0
  1407. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-lookup-by-name.test.js +174 -0
  1408. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-lookup-by-name.test.js.map +1 -0
  1409. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex-emit.test.d.ts +2 -0
  1410. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex-emit.test.d.ts.map +1 -0
  1411. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex-emit.test.js +43 -0
  1412. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex-emit.test.js.map +1 -0
  1413. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex.test.d.ts +2 -0
  1414. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex.test.d.ts.map +1 -0
  1415. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex.test.js +87 -0
  1416. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex.test.js.map +1 -0
  1417. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-rename-attachment-emit.test.d.ts +2 -0
  1418. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-rename-attachment-emit.test.d.ts.map +1 -0
  1419. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-rename-attachment-emit.test.js +65 -0
  1420. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-rename-attachment-emit.test.js.map +1 -0
  1421. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-report-tools.test.d.ts +2 -0
  1422. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-report-tools.test.d.ts.map +1 -0
  1423. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-report-tools.test.js +115 -0
  1424. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-report-tools.test.js.map +1 -0
  1425. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-restore-emit.test.d.ts +2 -0
  1426. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-restore-emit.test.d.ts.map +1 -0
  1427. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-restore-emit.test.js +49 -0
  1428. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-restore-emit.test.js.map +1 -0
  1429. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-search-fields.test.d.ts +2 -0
  1430. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-search-fields.test.d.ts.map +1 -0
  1431. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-search-fields.test.js +128 -0
  1432. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-search-fields.test.js.map +1 -0
  1433. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-search-threshold.test.d.ts +2 -0
  1434. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-search-threshold.test.d.ts.map +1 -0
  1435. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-search-threshold.test.js +34 -0
  1436. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-search-threshold.test.js.map +1 -0
  1437. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-by-name.test.d.ts +2 -0
  1438. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-by-name.test.d.ts.map +1 -0
  1439. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-by-name.test.js +125 -0
  1440. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-by-name.test.js.map +1 -0
  1441. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.d.ts +2 -0
  1442. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.d.ts.map +1 -0
  1443. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.js +79 -0
  1444. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.js.map +1 -0
  1445. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-operator-hint.test.d.ts +2 -0
  1446. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-operator-hint.test.d.ts.map +1 -0
  1447. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-operator-hint.test.js +329 -0
  1448. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-operator-hint.test.js.map +1 -0
  1449. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-compiled-truth-rejection.test.d.ts +2 -0
  1450. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-compiled-truth-rejection.test.d.ts.map +1 -0
  1451. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-compiled-truth-rejection.test.js +39 -0
  1452. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-compiled-truth-rejection.test.js.map +1 -0
  1453. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.d.ts +2 -0
  1454. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.d.ts.map +1 -0
  1455. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.js +81 -0
  1456. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.js.map +1 -0
  1457. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-timeline-learned-at.test.d.ts +2 -0
  1458. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-timeline-learned-at.test.d.ts.map +1 -0
  1459. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-timeline-learned-at.test.js +30 -0
  1460. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-timeline-learned-at.test.js.map +1 -0
  1461. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-delete-emit.test.d.ts +2 -0
  1462. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-delete-emit.test.d.ts.map +1 -0
  1463. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-delete-emit.test.js +62 -0
  1464. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-delete-emit.test.js.map +1 -0
  1465. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-emit.test.d.ts +2 -0
  1466. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-emit.test.d.ts.map +1 -0
  1467. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-emit.test.js +76 -0
  1468. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-emit.test.js.map +1 -0
  1469. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-not-applicable.test.d.ts +2 -0
  1470. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-not-applicable.test.d.ts.map +1 -0
  1471. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-not-applicable.test.js +88 -0
  1472. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-not-applicable.test.js.map +1 -0
  1473. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-personfields-open.test.d.ts +2 -0
  1474. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-personfields-open.test.d.ts.map +1 -0
  1475. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-personfields-open.test.js +151 -0
  1476. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-personfields-open.test.js.map +1 -0
  1477. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.d.ts +114 -0
  1478. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.d.ts.map +1 -0
  1479. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.js +415 -0
  1480. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.js.map +1 -0
  1481. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-enrich-rejection.d.ts +41 -0
  1482. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-enrich-rejection.d.ts.map +1 -0
  1483. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-enrich-rejection.js +124 -0
  1484. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-enrich-rejection.js.map +1 -0
  1485. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-list-chunks.d.ts +43 -0
  1486. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-list-chunks.d.ts.map +1 -0
  1487. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-list-chunks.js +96 -0
  1488. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-list-chunks.js.map +1 -0
  1489. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-memory-expunge.d.ts +8 -0
  1490. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-memory-expunge.d.ts.map +1 -0
  1491. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-memory-expunge.js +15 -0
  1492. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-memory-expunge.js.map +1 -0
  1493. package/payload/platform/plugins/memory/mcp/dist/tools/graph-prune-denylist-add.d.ts +7 -0
  1494. package/payload/platform/plugins/memory/mcp/dist/tools/graph-prune-denylist-add.d.ts.map +1 -0
  1495. package/payload/platform/plugins/memory/mcp/dist/tools/graph-prune-denylist-add.js +32 -0
  1496. package/payload/platform/plugins/memory/mcp/dist/tools/graph-prune-denylist-add.js.map +1 -0
  1497. package/payload/platform/plugins/memory/mcp/dist/tools/graph-prune-denylist-list.d.ts +7 -0
  1498. package/payload/platform/plugins/memory/mcp/dist/tools/graph-prune-denylist-list.d.ts.map +1 -0
  1499. package/payload/platform/plugins/memory/mcp/dist/tools/graph-prune-denylist-list.js +7 -0
  1500. package/payload/platform/plugins/memory/mcp/dist/tools/graph-prune-denylist-list.js.map +1 -0
  1501. package/payload/platform/plugins/memory/mcp/dist/tools/graph-prune-denylist-remove.d.ts +7 -0
  1502. package/payload/platform/plugins/memory/mcp/dist/tools/graph-prune-denylist-remove.d.ts.map +1 -0
  1503. package/payload/platform/plugins/memory/mcp/dist/tools/graph-prune-denylist-remove.js +31 -0
  1504. package/payload/platform/plugins/memory/mcp/dist/tools/graph-prune-denylist-remove.js.map +1 -0
  1505. package/payload/platform/plugins/memory/mcp/dist/tools/image-fetch.d.ts +15 -0
  1506. package/payload/platform/plugins/memory/mcp/dist/tools/image-fetch.d.ts.map +1 -0
  1507. package/payload/platform/plugins/memory/mcp/dist/tools/image-fetch.js +64 -0
  1508. package/payload/platform/plugins/memory/mcp/dist/tools/image-fetch.js.map +1 -0
  1509. package/payload/platform/plugins/memory/mcp/dist/tools/kd-classify.d.ts +11 -0
  1510. package/payload/platform/plugins/memory/mcp/dist/tools/kd-classify.d.ts.map +1 -0
  1511. package/payload/platform/plugins/memory/mcp/dist/tools/kd-classify.js +92 -0
  1512. package/payload/platform/plugins/memory/mcp/dist/tools/kd-classify.js.map +1 -0
  1513. package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.d.ts +202 -0
  1514. package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.d.ts.map +1 -0
  1515. package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.js +1084 -0
  1516. package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.js.map +1 -0
  1517. package/payload/platform/plugins/memory/mcp/dist/tools/memory-brain-capture-recent.d.ts +35 -0
  1518. package/payload/platform/plugins/memory/mcp/dist/tools/memory-brain-capture-recent.d.ts.map +1 -0
  1519. package/payload/platform/plugins/memory/mcp/dist/tools/memory-brain-capture-recent.js +80 -0
  1520. package/payload/platform/plugins/memory/mcp/dist/tools/memory-brain-capture-recent.js.map +1 -0
  1521. package/payload/platform/plugins/memory/mcp/dist/tools/memory-classify.d.ts +34 -0
  1522. package/payload/platform/plugins/memory/mcp/dist/tools/memory-classify.d.ts.map +1 -0
  1523. package/payload/platform/plugins/memory/mcp/dist/tools/memory-classify.js +62 -0
  1524. package/payload/platform/plugins/memory/mcp/dist/tools/memory-classify.js.map +1 -0
  1525. package/payload/platform/plugins/memory/mcp/dist/tools/memory-compiled-truth-history.d.ts +41 -0
  1526. package/payload/platform/plugins/memory/mcp/dist/tools/memory-compiled-truth-history.d.ts.map +1 -0
  1527. package/payload/platform/plugins/memory/mcp/dist/tools/memory-compiled-truth-history.js +73 -0
  1528. package/payload/platform/plugins/memory/mcp/dist/tools/memory-compiled-truth-history.js.map +1 -0
  1529. package/payload/platform/plugins/memory/mcp/dist/tools/memory-delete.d.ts +65 -0
  1530. package/payload/platform/plugins/memory/mcp/dist/tools/memory-delete.d.ts.map +1 -0
  1531. package/payload/platform/plugins/memory/mcp/dist/tools/memory-delete.js +151 -0
  1532. package/payload/platform/plugins/memory/mcp/dist/tools/memory-delete.js.map +1 -0
  1533. package/payload/platform/plugins/memory/mcp/dist/tools/memory-dream-run.d.ts +48 -0
  1534. package/payload/platform/plugins/memory/mcp/dist/tools/memory-dream-run.d.ts.map +1 -0
  1535. package/payload/platform/plugins/memory/mcp/dist/tools/memory-dream-run.js +197 -0
  1536. package/payload/platform/plugins/memory/mcp/dist/tools/memory-dream-run.js.map +1 -0
  1537. package/payload/platform/plugins/memory/mcp/dist/tools/memory-edge.d.ts +30 -0
  1538. package/payload/platform/plugins/memory/mcp/dist/tools/memory-edge.d.ts.map +1 -0
  1539. package/payload/platform/plugins/memory/mcp/dist/tools/memory-edge.js +75 -0
  1540. package/payload/platform/plugins/memory/mcp/dist/tools/memory-edge.js.map +1 -0
  1541. package/payload/platform/plugins/memory/mcp/dist/tools/memory-edit-attachment.d.ts +16 -0
  1542. package/payload/platform/plugins/memory/mcp/dist/tools/memory-edit-attachment.d.ts.map +1 -0
  1543. package/payload/platform/plugins/memory/mcp/dist/tools/memory-edit-attachment.js +95 -0
  1544. package/payload/platform/plugins/memory/mcp/dist/tools/memory-edit-attachment.js.map +1 -0
  1545. package/payload/platform/plugins/memory/mcp/dist/tools/memory-empty-trash.d.ts +50 -0
  1546. package/payload/platform/plugins/memory/mcp/dist/tools/memory-empty-trash.d.ts.map +1 -0
  1547. package/payload/platform/plugins/memory/mcp/dist/tools/memory-empty-trash.js +104 -0
  1548. package/payload/platform/plugins/memory/mcp/dist/tools/memory-empty-trash.js.map +1 -0
  1549. package/payload/platform/plugins/memory/mcp/dist/tools/memory-find-candidates.d.ts +58 -0
  1550. package/payload/platform/plugins/memory/mcp/dist/tools/memory-find-candidates.d.ts.map +1 -0
  1551. package/payload/platform/plugins/memory/mcp/dist/tools/memory-find-candidates.js +125 -0
  1552. package/payload/platform/plugins/memory/mcp/dist/tools/memory-find-candidates.js.map +1 -0
  1553. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-extract.d.ts +37 -0
  1554. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-extract.d.ts.map +1 -0
  1555. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-extract.js +97 -0
  1556. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-extract.js.map +1 -0
  1557. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-web.d.ts +32 -0
  1558. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-web.d.ts.map +1 -0
  1559. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-web.js +116 -0
  1560. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-web.js.map +1 -0
  1561. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.d.ts +194 -0
  1562. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.d.ts.map +1 -0
  1563. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.js +1303 -0
  1564. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.js.map +1 -0
  1565. package/payload/platform/plugins/memory/mcp/dist/tools/memory-list-attachments.d.ts +19 -0
  1566. package/payload/platform/plugins/memory/mcp/dist/tools/memory-list-attachments.d.ts.map +1 -0
  1567. package/payload/platform/plugins/memory/mcp/dist/tools/memory-list-attachments.js +125 -0
  1568. package/payload/platform/plugins/memory/mcp/dist/tools/memory-list-attachments.js.map +1 -0
  1569. package/payload/platform/plugins/memory/mcp/dist/tools/memory-lookup-by-name.d.ts +16 -0
  1570. package/payload/platform/plugins/memory/mcp/dist/tools/memory-lookup-by-name.d.ts.map +1 -0
  1571. package/payload/platform/plugins/memory/mcp/dist/tools/memory-lookup-by-name.js +68 -0
  1572. package/payload/platform/plugins/memory/mcp/dist/tools/memory-lookup-by-name.js.map +1 -0
  1573. package/payload/platform/plugins/memory/mcp/dist/tools/memory-node-exists.d.ts +28 -0
  1574. package/payload/platform/plugins/memory/mcp/dist/tools/memory-node-exists.d.ts.map +1 -0
  1575. package/payload/platform/plugins/memory/mcp/dist/tools/memory-node-exists.js +46 -0
  1576. package/payload/platform/plugins/memory/mcp/dist/tools/memory-node-exists.js.map +1 -0
  1577. package/payload/platform/plugins/memory/mcp/dist/tools/memory-rank.d.ts +61 -0
  1578. package/payload/platform/plugins/memory/mcp/dist/tools/memory-rank.d.ts.map +1 -0
  1579. package/payload/platform/plugins/memory/mcp/dist/tools/memory-rank.js +102 -0
  1580. package/payload/platform/plugins/memory/mcp/dist/tools/memory-rank.js.map +1 -0
  1581. package/payload/platform/plugins/memory/mcp/dist/tools/memory-read-attachment.d.ts +12 -0
  1582. package/payload/platform/plugins/memory/mcp/dist/tools/memory-read-attachment.d.ts.map +1 -0
  1583. package/payload/platform/plugins/memory/mcp/dist/tools/memory-read-attachment.js +100 -0
  1584. package/payload/platform/plugins/memory/mcp/dist/tools/memory-read-attachment.js.map +1 -0
  1585. package/payload/platform/plugins/memory/mcp/dist/tools/memory-reindex.d.ts +9 -0
  1586. package/payload/platform/plugins/memory/mcp/dist/tools/memory-reindex.d.ts.map +1 -0
  1587. package/payload/platform/plugins/memory/mcp/dist/tools/memory-reindex.js +127 -0
  1588. package/payload/platform/plugins/memory/mcp/dist/tools/memory-reindex.js.map +1 -0
  1589. package/payload/platform/plugins/memory/mcp/dist/tools/memory-rename-attachment.d.ts +13 -0
  1590. package/payload/platform/plugins/memory/mcp/dist/tools/memory-rename-attachment.d.ts.map +1 -0
  1591. package/payload/platform/plugins/memory/mcp/dist/tools/memory-rename-attachment.js +67 -0
  1592. package/payload/platform/plugins/memory/mcp/dist/tools/memory-rename-attachment.js.map +1 -0
  1593. package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-list.d.ts +28 -0
  1594. package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-list.d.ts.map +1 -0
  1595. package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-list.js +64 -0
  1596. package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-list.js.map +1 -0
  1597. package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-read-latest.d.ts +24 -0
  1598. package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-read-latest.d.ts.map +1 -0
  1599. package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-read-latest.js +49 -0
  1600. package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-read-latest.js.map +1 -0
  1601. package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-write.d.ts +34 -0
  1602. package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-write.d.ts.map +1 -0
  1603. package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-write.js +99 -0
  1604. package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-write.js.map +1 -0
  1605. package/payload/platform/plugins/memory/mcp/dist/tools/memory-restore.d.ts +24 -0
  1606. package/payload/platform/plugins/memory/mcp/dist/tools/memory-restore.d.ts.map +1 -0
  1607. package/payload/platform/plugins/memory/mcp/dist/tools/memory-restore.js +47 -0
  1608. package/payload/platform/plugins/memory/mcp/dist/tools/memory-restore.js.map +1 -0
  1609. package/payload/platform/plugins/memory/mcp/dist/tools/memory-review-queue.d.ts +29 -0
  1610. package/payload/platform/plugins/memory/mcp/dist/tools/memory-review-queue.d.ts.map +1 -0
  1611. package/payload/platform/plugins/memory/mcp/dist/tools/memory-review-queue.js +67 -0
  1612. package/payload/platform/plugins/memory/mcp/dist/tools/memory-review-queue.js.map +1 -0
  1613. package/payload/platform/plugins/memory/mcp/dist/tools/memory-search.d.ts +7 -0
  1614. package/payload/platform/plugins/memory/mcp/dist/tools/memory-search.d.ts.map +1 -0
  1615. package/payload/platform/plugins/memory/mcp/dist/tools/memory-search.js +184 -0
  1616. package/payload/platform/plugins/memory/mcp/dist/tools/memory-search.js.map +1 -0
  1617. package/payload/platform/plugins/memory/mcp/dist/tools/memory-signals-recent.d.ts +35 -0
  1618. package/payload/platform/plugins/memory/mcp/dist/tools/memory-signals-recent.d.ts.map +1 -0
  1619. package/payload/platform/plugins/memory/mcp/dist/tools/memory-signals-recent.js +73 -0
  1620. package/payload/platform/plugins/memory/mcp/dist/tools/memory-signals-recent.js.map +1 -0
  1621. package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.d.ts +29 -0
  1622. package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.d.ts.map +1 -0
  1623. package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.js +22 -0
  1624. package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.js.map +1 -0
  1625. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update-by-name.d.ts +15 -0
  1626. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update-by-name.d.ts.map +1 -0
  1627. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update-by-name.js +45 -0
  1628. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update-by-name.js.map +1 -0
  1629. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.d.ts +16 -0
  1630. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.d.ts.map +1 -0
  1631. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.js +194 -0
  1632. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.js.map +1 -0
  1633. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.d.ts +47 -0
  1634. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.d.ts.map +1 -0
  1635. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js +397 -0
  1636. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js.map +1 -0
  1637. package/payload/platform/plugins/memory/mcp/dist/tools/obsidian-vault-import.d.ts +127 -0
  1638. package/payload/platform/plugins/memory/mcp/dist/tools/obsidian-vault-import.d.ts.map +1 -0
  1639. package/payload/platform/plugins/memory/mcp/dist/tools/obsidian-vault-import.js +477 -0
  1640. package/payload/platform/plugins/memory/mcp/dist/tools/obsidian-vault-import.js.map +1 -0
  1641. package/payload/platform/plugins/memory/mcp/dist/tools/profile-delete.d.ts +24 -0
  1642. package/payload/platform/plugins/memory/mcp/dist/tools/profile-delete.d.ts.map +1 -0
  1643. package/payload/platform/plugins/memory/mcp/dist/tools/profile-delete.js +35 -0
  1644. package/payload/platform/plugins/memory/mcp/dist/tools/profile-delete.js.map +1 -0
  1645. package/payload/platform/plugins/memory/mcp/dist/tools/profile-read.d.ts +46 -0
  1646. package/payload/platform/plugins/memory/mcp/dist/tools/profile-read.d.ts.map +1 -0
  1647. package/payload/platform/plugins/memory/mcp/dist/tools/profile-read.js +423 -0
  1648. package/payload/platform/plugins/memory/mcp/dist/tools/profile-read.js.map +1 -0
  1649. package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.d.ts +65 -0
  1650. package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.d.ts.map +1 -0
  1651. package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.js +395 -0
  1652. package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.js.map +1 -0
  1653. package/payload/platform/plugins/memory/mcp/dist/tools/session-retrospective-skip-rate.d.ts +30 -0
  1654. package/payload/platform/plugins/memory/mcp/dist/tools/session-retrospective-skip-rate.d.ts.map +1 -0
  1655. package/payload/platform/plugins/memory/mcp/dist/tools/session-retrospective-skip-rate.js +130 -0
  1656. package/payload/platform/plugins/memory/mcp/dist/tools/session-retrospective-skip-rate.js.map +1 -0
  1657. package/payload/platform/plugins/memory/mcp/package.json +23 -0
  1658. package/payload/platform/plugins/memory/mcp/scripts/boot-smoke.sh +69 -0
  1659. package/payload/platform/plugins/memory/mcp/scripts/generate-edge-docs.ts +75 -0
  1660. package/payload/platform/plugins/memory/mcp/scripts/graph/accept.sh +217 -0
  1661. package/payload/platform/plugins/memory/mcp/scripts/graph/fixture.cypher +59 -0
  1662. package/payload/platform/plugins/memory/mcp/vitest.config.ts +53 -0
  1663. package/payload/platform/plugins/memory/references/graph-primitives.md +394 -0
  1664. package/payload/platform/plugins/memory/references/schema-base.md +338 -0
  1665. package/payload/platform/plugins/memory/references/schema-construction.md +96 -0
  1666. package/payload/platform/plugins/memory/references/schema-creator.md +35 -0
  1667. package/payload/platform/plugins/memory/references/schema-estate-agent.md +154 -0
  1668. package/payload/platform/plugins/memory/references/schema-food-beverage.md +32 -0
  1669. package/payload/platform/plugins/memory/references/schema-hospitality.md +31 -0
  1670. package/payload/platform/plugins/memory/references/schema-knowledge-work.md +80 -0
  1671. package/payload/platform/plugins/memory/references/schema-logistics.md +30 -0
  1672. package/payload/platform/plugins/memory/references/schema-professional-services.md +33 -0
  1673. package/payload/platform/plugins/memory/references/schema-retail.md +33 -0
  1674. package/payload/platform/plugins/memory/references/schema-trades.md +36 -0
  1675. package/payload/platform/plugins/memory/references/transcript-formats/circleback.md +49 -0
  1676. package/payload/platform/plugins/memory/references/transcript-formats/granola.md +50 -0
  1677. package/payload/platform/plugins/memory/references/transcript-formats/otter.md +50 -0
  1678. package/payload/platform/plugins/memory/skills/archive-crawler/SKILL.md +69 -0
  1679. package/payload/platform/plugins/memory/skills/challenge/SKILL.md +54 -0
  1680. package/payload/platform/plugins/memory/skills/concept-synthesis/SKILL.md +81 -0
  1681. package/payload/platform/plugins/memory/skills/connect/SKILL.md +58 -0
  1682. package/payload/platform/plugins/memory/skills/conversation-archive/SKILL.md +193 -0
  1683. package/payload/platform/plugins/memory/skills/conversation-archive-enrich/SKILL.md +207 -0
  1684. package/payload/platform/plugins/memory/skills/conversation-archive-mcp/SKILL.md +170 -0
  1685. package/payload/platform/plugins/memory/skills/conversational-memory/SKILL.md +115 -0
  1686. package/payload/platform/plugins/memory/skills/document-ingest/SKILL.md +331 -0
  1687. package/payload/platform/plugins/memory/skills/emerge/SKILL.md +89 -0
  1688. package/payload/platform/plugins/notion-import/.claude-plugin/plugin.json +8 -0
  1689. package/payload/platform/plugins/notion-import/PLUGIN.md +27 -0
  1690. package/payload/platform/plugins/notion-import/skills/notion-import/SKILL.md +114 -0
  1691. package/payload/platform/plugins/notion-import/skills/notion-import/references/attachments.md +55 -0
  1692. package/payload/platform/plugins/notion-import/skills/notion-import/references/databases.md +83 -0
  1693. package/payload/platform/plugins/notion-import/skills/notion-import/references/page-tree.md +61 -0
  1694. package/payload/platform/plugins/notion-import/skills/notion-import/references/workspace-export.md +41 -0
  1695. package/payload/platform/plugins/obsidian-import/.claude-plugin/plugin.json +8 -0
  1696. package/payload/platform/plugins/obsidian-import/PLUGIN.md +39 -0
  1697. package/payload/platform/plugins/obsidian-import/skills/obsidian-import/SKILL.md +92 -0
  1698. package/payload/platform/plugins/obsidian-import/skills/obsidian-import/references/attachments.md +80 -0
  1699. package/payload/platform/plugins/obsidian-import/skills/obsidian-import/references/daily-notes.md +31 -0
  1700. package/payload/platform/plugins/obsidian-import/skills/obsidian-import/references/vault-structure.md +46 -0
  1701. package/payload/platform/plugins/obsidian-import/skills/obsidian-import/references/wikilinks.md +70 -0
  1702. package/payload/platform/plugins/outlook/.claude-plugin/plugin.json +21 -0
  1703. package/payload/platform/plugins/outlook/PLUGIN.md +74 -0
  1704. package/payload/platform/plugins/outlook/lib/mcp-spawn-tee/index.js +193 -0
  1705. package/payload/platform/plugins/outlook/lib/mcp-spawn-tee/package.json +3 -0
  1706. package/payload/platform/plugins/outlook/mcp/dist/__tests__/graph-client.test.d.ts +2 -0
  1707. package/payload/platform/plugins/outlook/mcp/dist/__tests__/graph-client.test.d.ts.map +1 -0
  1708. package/payload/platform/plugins/outlook/mcp/dist/__tests__/graph-client.test.js +94 -0
  1709. package/payload/platform/plugins/outlook/mcp/dist/__tests__/graph-client.test.js.map +1 -0
  1710. package/payload/platform/plugins/outlook/mcp/dist/__tests__/log.test.d.ts +2 -0
  1711. package/payload/platform/plugins/outlook/mcp/dist/__tests__/log.test.d.ts.map +1 -0
  1712. package/payload/platform/plugins/outlook/mcp/dist/__tests__/log.test.js +31 -0
  1713. package/payload/platform/plugins/outlook/mcp/dist/__tests__/log.test.js.map +1 -0
  1714. package/payload/platform/plugins/outlook/mcp/dist/__tests__/pkce-flow.test.d.ts +2 -0
  1715. package/payload/platform/plugins/outlook/mcp/dist/__tests__/pkce-flow.test.d.ts.map +1 -0
  1716. package/payload/platform/plugins/outlook/mcp/dist/__tests__/pkce-flow.test.js +213 -0
  1717. package/payload/platform/plugins/outlook/mcp/dist/__tests__/pkce-flow.test.js.map +1 -0
  1718. package/payload/platform/plugins/outlook/mcp/dist/__tests__/token-store.test.d.ts +2 -0
  1719. package/payload/platform/plugins/outlook/mcp/dist/__tests__/token-store.test.d.ts.map +1 -0
  1720. package/payload/platform/plugins/outlook/mcp/dist/__tests__/token-store.test.js +130 -0
  1721. package/payload/platform/plugins/outlook/mcp/dist/__tests__/token-store.test.js.map +1 -0
  1722. package/payload/platform/plugins/outlook/mcp/dist/auth/pkce-flow.d.ts +65 -0
  1723. package/payload/platform/plugins/outlook/mcp/dist/auth/pkce-flow.d.ts.map +1 -0
  1724. package/payload/platform/plugins/outlook/mcp/dist/auth/pkce-flow.js +261 -0
  1725. package/payload/platform/plugins/outlook/mcp/dist/auth/pkce-flow.js.map +1 -0
  1726. package/payload/platform/plugins/outlook/mcp/dist/auth/token-store.d.ts +61 -0
  1727. package/payload/platform/plugins/outlook/mcp/dist/auth/token-store.d.ts.map +1 -0
  1728. package/payload/platform/plugins/outlook/mcp/dist/auth/token-store.js +170 -0
  1729. package/payload/platform/plugins/outlook/mcp/dist/auth/token-store.js.map +1 -0
  1730. package/payload/platform/plugins/outlook/mcp/dist/index.d.ts +18 -0
  1731. package/payload/platform/plugins/outlook/mcp/dist/index.d.ts.map +1 -0
  1732. package/payload/platform/plugins/outlook/mcp/dist/index.js +184 -0
  1733. package/payload/platform/plugins/outlook/mcp/dist/index.js.map +1 -0
  1734. package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.d.ts +60 -0
  1735. package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.d.ts.map +1 -0
  1736. package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.js +189 -0
  1737. package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.js.map +1 -0
  1738. package/payload/platform/plugins/outlook/mcp/dist/lib/log.d.ts +23 -0
  1739. package/payload/platform/plugins/outlook/mcp/dist/lib/log.d.ts.map +1 -0
  1740. package/payload/platform/plugins/outlook/mcp/dist/lib/log.js +53 -0
  1741. package/payload/platform/plugins/outlook/mcp/dist/lib/log.js.map +1 -0
  1742. package/payload/platform/plugins/outlook/mcp/dist/tools/account-register.d.ts +26 -0
  1743. package/payload/platform/plugins/outlook/mcp/dist/tools/account-register.d.ts.map +1 -0
  1744. package/payload/platform/plugins/outlook/mcp/dist/tools/account-register.js +50 -0
  1745. package/payload/platform/plugins/outlook/mcp/dist/tools/account-register.js.map +1 -0
  1746. package/payload/platform/plugins/outlook/mcp/dist/tools/calendar-event.d.ts +12 -0
  1747. package/payload/platform/plugins/outlook/mcp/dist/tools/calendar-event.d.ts.map +1 -0
  1748. package/payload/platform/plugins/outlook/mcp/dist/tools/calendar-event.js +32 -0
  1749. package/payload/platform/plugins/outlook/mcp/dist/tools/calendar-event.js.map +1 -0
  1750. package/payload/platform/plugins/outlook/mcp/dist/tools/calendar-list.d.ts +59 -0
  1751. package/payload/platform/plugins/outlook/mcp/dist/tools/calendar-list.d.ts.map +1 -0
  1752. package/payload/platform/plugins/outlook/mcp/dist/tools/calendar-list.js +54 -0
  1753. package/payload/platform/plugins/outlook/mcp/dist/tools/calendar-list.js.map +1 -0
  1754. package/payload/platform/plugins/outlook/mcp/dist/tools/contacts-list.d.ts +14 -0
  1755. package/payload/platform/plugins/outlook/mcp/dist/tools/contacts-list.d.ts.map +1 -0
  1756. package/payload/platform/plugins/outlook/mcp/dist/tools/contacts-list.js +45 -0
  1757. package/payload/platform/plugins/outlook/mcp/dist/tools/contacts-list.js.map +1 -0
  1758. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-list.d.ts +15 -0
  1759. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-list.d.ts.map +1 -0
  1760. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-list.js +48 -0
  1761. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-list.js.map +1 -0
  1762. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-search.d.ts +8 -0
  1763. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-search.d.ts.map +1 -0
  1764. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-search.js +49 -0
  1765. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-search.js.map +1 -0
  1766. package/payload/platform/plugins/outlook/mcp/dist/tools/mailbox-info.d.ts +19 -0
  1767. package/payload/platform/plugins/outlook/mcp/dist/tools/mailbox-info.d.ts.map +1 -0
  1768. package/payload/platform/plugins/outlook/mcp/dist/tools/mailbox-info.js +58 -0
  1769. package/payload/platform/plugins/outlook/mcp/dist/tools/mailbox-info.js.map +1 -0
  1770. package/payload/platform/plugins/outlook/mcp/package.json +20 -0
  1771. package/payload/platform/plugins/outlook/mcp/scripts/verify-doc-impl.sh +109 -0
  1772. package/payload/platform/plugins/outlook/references/auth.md +118 -0
  1773. package/payload/platform/plugins/outlook/references/graph-surfaces.md +114 -0
  1774. package/payload/platform/plugins/outlook/skills/outlook/SKILL.md +67 -0
  1775. package/payload/platform/plugins/projects/.claude-plugin/plugin.json +8 -0
  1776. package/payload/platform/plugins/projects/PLUGIN.md +101 -0
  1777. package/payload/platform/plugins/projects/references/investigation.md +63 -0
  1778. package/payload/platform/plugins/projects/references/meeting-to-tasks.md +34 -0
  1779. package/payload/platform/plugins/projects/references/prioritization.md +43 -0
  1780. package/payload/platform/plugins/projects/references/retrospective.md +71 -0
  1781. package/payload/platform/plugins/projects/references/review.md +51 -0
  1782. package/payload/platform/plugins/projects/references/risk-premortem.md +34 -0
  1783. package/payload/platform/plugins/projects/references/sprint.md +172 -0
  1784. package/payload/platform/plugins/projects/references/stakeholder-map.md +43 -0
  1785. package/payload/platform/plugins/prompt-optimiser/.claude-plugin/plugin.json +8 -0
  1786. package/payload/platform/plugins/prompt-optimiser/PLUGIN.md +14 -0
  1787. package/payload/platform/plugins/prompt-optimiser/skills/prompt-optimiser/SKILL.md +321 -0
  1788. package/payload/platform/plugins/prompt-optimiser/skills/prompt-optimiser/__tests__/restatement-ladder.test.sh +21 -0
  1789. package/payload/platform/plugins/quickbooks/.claude-plugin/plugin.json +21 -0
  1790. package/payload/platform/plugins/quickbooks/PLUGIN.md +91 -0
  1791. package/payload/platform/plugins/quickbooks/lib/mcp-spawn-tee/index.js +193 -0
  1792. package/payload/platform/plugins/quickbooks/lib/mcp-spawn-tee/package.json +3 -0
  1793. package/payload/platform/plugins/quickbooks/mcp/dist/index.d.ts +2 -0
  1794. package/payload/platform/plugins/quickbooks/mcp/dist/index.d.ts.map +1 -0
  1795. package/payload/platform/plugins/quickbooks/mcp/dist/index.js +219 -0
  1796. package/payload/platform/plugins/quickbooks/mcp/dist/index.js.map +1 -0
  1797. package/payload/platform/plugins/quickbooks/mcp/dist/lib/oauth.d.ts +37 -0
  1798. package/payload/platform/plugins/quickbooks/mcp/dist/lib/oauth.d.ts.map +1 -0
  1799. package/payload/platform/plugins/quickbooks/mcp/dist/lib/oauth.js +75 -0
  1800. package/payload/platform/plugins/quickbooks/mcp/dist/lib/oauth.js.map +1 -0
  1801. package/payload/platform/plugins/quickbooks/mcp/dist/lib/qbo-client.d.ts +39 -0
  1802. package/payload/platform/plugins/quickbooks/mcp/dist/lib/qbo-client.d.ts.map +1 -0
  1803. package/payload/platform/plugins/quickbooks/mcp/dist/lib/qbo-client.js +178 -0
  1804. package/payload/platform/plugins/quickbooks/mcp/dist/lib/qbo-client.js.map +1 -0
  1805. package/payload/platform/plugins/quickbooks/mcp/dist/lib/secrets.d.ts +36 -0
  1806. package/payload/platform/plugins/quickbooks/mcp/dist/lib/secrets.d.ts.map +1 -0
  1807. package/payload/platform/plugins/quickbooks/mcp/dist/lib/secrets.js +107 -0
  1808. package/payload/platform/plugins/quickbooks/mcp/dist/lib/secrets.js.map +1 -0
  1809. package/payload/platform/plugins/quickbooks/mcp/package.json +19 -0
  1810. package/payload/platform/plugins/quickbooks/skills/quickbooks/SKILL.md +37 -0
  1811. package/payload/platform/plugins/replicate/.claude-plugin/plugin.json +21 -0
  1812. package/payload/platform/plugins/replicate/PLUGIN.md +49 -0
  1813. package/payload/platform/plugins/replicate/lib/mcp-spawn-tee/index.js +193 -0
  1814. package/payload/platform/plugins/replicate/lib/mcp-spawn-tee/package.json +3 -0
  1815. package/payload/platform/plugins/replicate/mcp/dist/index.d.ts +2 -0
  1816. package/payload/platform/plugins/replicate/mcp/dist/index.d.ts.map +1 -0
  1817. package/payload/platform/plugins/replicate/mcp/dist/index.js +126 -0
  1818. package/payload/platform/plugins/replicate/mcp/dist/index.js.map +1 -0
  1819. package/payload/platform/plugins/replicate/mcp/dist/lib/replicate-key.d.ts +15 -0
  1820. package/payload/platform/plugins/replicate/mcp/dist/lib/replicate-key.d.ts.map +1 -0
  1821. package/payload/platform/plugins/replicate/mcp/dist/lib/replicate-key.js +73 -0
  1822. package/payload/platform/plugins/replicate/mcp/dist/lib/replicate-key.js.map +1 -0
  1823. package/payload/platform/plugins/replicate/mcp/dist/tools/image-generate.d.ts +14 -0
  1824. package/payload/platform/plugins/replicate/mcp/dist/tools/image-generate.d.ts.map +1 -0
  1825. package/payload/platform/plugins/replicate/mcp/dist/tools/image-generate.js +201 -0
  1826. package/payload/platform/plugins/replicate/mcp/dist/tools/image-generate.js.map +1 -0
  1827. package/payload/platform/plugins/replicate/mcp/package.json +21 -0
  1828. package/payload/platform/plugins/sales/.claude-plugin/plugin.json +8 -0
  1829. package/payload/platform/plugins/sales/PLUGIN.md +106 -0
  1830. package/payload/platform/plugins/sales/references/close-tracking.md +69 -0
  1831. package/payload/platform/plugins/sales/references/comparisons.md +99 -0
  1832. package/payload/platform/plugins/sales/references/competitive-positioning.md +51 -0
  1833. package/payload/platform/plugins/sales/references/faq.md +73 -0
  1834. package/payload/platform/plugins/sales/references/objection-handling.md +157 -0
  1835. package/payload/platform/plugins/sales/references/pricing.md +101 -0
  1836. package/payload/platform/plugins/scheduling/.claude-plugin/plugin.json +21 -0
  1837. package/payload/platform/plugins/scheduling/PLUGIN.md +153 -0
  1838. package/payload/platform/plugins/scheduling/lib/mcp-spawn-tee/index.js +193 -0
  1839. package/payload/platform/plugins/scheduling/lib/mcp-spawn-tee/package.json +3 -0
  1840. package/payload/platform/plugins/scheduling/mcp/dist/__tests__/time-resolve-description.test.d.ts +2 -0
  1841. package/payload/platform/plugins/scheduling/mcp/dist/__tests__/time-resolve-description.test.d.ts.map +1 -0
  1842. package/payload/platform/plugins/scheduling/mcp/dist/__tests__/time-resolve-description.test.js +16 -0
  1843. package/payload/platform/plugins/scheduling/mcp/dist/__tests__/time-resolve-description.test.js.map +1 -0
  1844. package/payload/platform/plugins/scheduling/mcp/dist/index.d.ts +2 -0
  1845. package/payload/platform/plugins/scheduling/mcp/dist/index.d.ts.map +1 -0
  1846. package/payload/platform/plugins/scheduling/mcp/dist/index.js +440 -0
  1847. package/payload/platform/plugins/scheduling/mcp/dist/index.js.map +1 -0
  1848. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/getUserTimezone.test.d.ts +2 -0
  1849. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/getUserTimezone.test.d.ts.map +1 -0
  1850. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/getUserTimezone.test.js +119 -0
  1851. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/getUserTimezone.test.js.map +1 -0
  1852. package/payload/platform/plugins/scheduling/mcp/dist/lib/embedding.d.ts +2 -0
  1853. package/payload/platform/plugins/scheduling/mcp/dist/lib/embedding.d.ts.map +1 -0
  1854. package/payload/platform/plugins/scheduling/mcp/dist/lib/embedding.js +19 -0
  1855. package/payload/platform/plugins/scheduling/mcp/dist/lib/embedding.js.map +1 -0
  1856. package/payload/platform/plugins/scheduling/mcp/dist/lib/ics-graph-ingest.d.ts +80 -0
  1857. package/payload/platform/plugins/scheduling/mcp/dist/lib/ics-graph-ingest.d.ts.map +1 -0
  1858. package/payload/platform/plugins/scheduling/mcp/dist/lib/ics-graph-ingest.js +410 -0
  1859. package/payload/platform/plugins/scheduling/mcp/dist/lib/ics-graph-ingest.js.map +1 -0
  1860. package/payload/platform/plugins/scheduling/mcp/dist/lib/ics.d.ts +63 -0
  1861. package/payload/platform/plugins/scheduling/mcp/dist/lib/ics.d.ts.map +1 -0
  1862. package/payload/platform/plugins/scheduling/mcp/dist/lib/ics.js +471 -0
  1863. package/payload/platform/plugins/scheduling/mcp/dist/lib/ics.js.map +1 -0
  1864. package/payload/platform/plugins/scheduling/mcp/dist/lib/neo4j.d.ts +30 -0
  1865. package/payload/platform/plugins/scheduling/mcp/dist/lib/neo4j.d.ts.map +1 -0
  1866. package/payload/platform/plugins/scheduling/mcp/dist/lib/neo4j.js +89 -0
  1867. package/payload/platform/plugins/scheduling/mcp/dist/lib/neo4j.js.map +1 -0
  1868. package/payload/platform/plugins/scheduling/mcp/dist/lib/time-format.d.ts +48 -0
  1869. package/payload/platform/plugins/scheduling/mcp/dist/lib/time-format.d.ts.map +1 -0
  1870. package/payload/platform/plugins/scheduling/mcp/dist/lib/time-format.js +140 -0
  1871. package/payload/platform/plugins/scheduling/mcp/dist/lib/time-format.js.map +1 -0
  1872. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.d.ts +24 -0
  1873. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.d.ts.map +1 -0
  1874. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js +572 -0
  1875. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js.map +1 -0
  1876. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-archive-ics.d.ts +20 -0
  1877. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-archive-ics.d.ts.map +1 -0
  1878. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-archive-ics.js +63 -0
  1879. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-archive-ics.js.map +1 -0
  1880. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-cancel.d.ts +7 -0
  1881. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-cancel.d.ts.map +1 -0
  1882. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-cancel.js +23 -0
  1883. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-cancel.js.map +1 -0
  1884. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.d.ts +25 -0
  1885. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.d.ts.map +1 -0
  1886. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js +121 -0
  1887. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js.map +1 -0
  1888. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-export-ics.d.ts +9 -0
  1889. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-export-ics.d.ts.map +1 -0
  1890. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-export-ics.js +77 -0
  1891. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-export-ics.js.map +1 -0
  1892. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.d.ts +25 -0
  1893. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.d.ts.map +1 -0
  1894. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.js +53 -0
  1895. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.js.map +1 -0
  1896. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-import-ics.d.ts +8 -0
  1897. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-import-ics.d.ts.map +1 -0
  1898. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-import-ics.js +48 -0
  1899. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-import-ics.js.map +1 -0
  1900. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-list.d.ts +20 -0
  1901. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-list.d.ts.map +1 -0
  1902. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-list.js +76 -0
  1903. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-list.js.map +1 -0
  1904. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.d.ts +18 -0
  1905. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.d.ts.map +1 -0
  1906. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js +167 -0
  1907. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js.map +1 -0
  1908. package/payload/platform/plugins/scheduling/mcp/package.json +23 -0
  1909. package/payload/platform/plugins/scheduling/mcp/vitest.config.ts +9 -0
  1910. package/payload/platform/plugins/scheduling/skills/briefing/SKILL.md +88 -0
  1911. package/payload/platform/plugins/scheduling/skills/daily-prep/SKILL.md +63 -0
  1912. package/payload/platform/plugins/slides/.claude-plugin/plugin.json +8 -0
  1913. package/payload/platform/plugins/slides/LICENSE +21 -0
  1914. package/payload/platform/plugins/slides/PLUGIN.md +18 -0
  1915. package/payload/platform/plugins/slides/PROVENANCE.md +40 -0
  1916. package/payload/platform/plugins/slides/commands/add-slide.md +29 -0
  1917. package/payload/platform/plugins/slides/commands/slides-claus.md +39 -0
  1918. package/payload/platform/plugins/slides/commands/slides-new-component.md +39 -0
  1919. package/payload/platform/plugins/slides/commands/slides-outline.md +43 -0
  1920. package/payload/platform/plugins/slides/commands/slides-review.md +52 -0
  1921. package/payload/platform/plugins/slides/commands/slides-theme.md +64 -0
  1922. package/payload/platform/plugins/slides/commands/slides.md +59 -0
  1923. package/payload/platform/plugins/slides/skills/deck-system/REFERENCE.md +581 -0
  1924. package/payload/platform/plugins/slides/skills/deck-system/SKILL.md +611 -0
  1925. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING-board.md +426 -0
  1926. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING-claus.md +185 -0
  1927. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING-mbb.md +450 -0
  1928. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING-product-launch.md +579 -0
  1929. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING-sales.md +464 -0
  1930. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING-sequoia.md +489 -0
  1931. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING.md +273 -0
  1932. package/payload/platform/plugins/slides/skills/deck-system/deck-craft.html +1371 -0
  1933. package/payload/platform/plugins/slides/skills/deck-system/deck-solid.html +1667 -0
  1934. package/payload/platform/plugins/slides/skills/deck-system/deck.html +1359 -0
  1935. package/payload/platform/plugins/substack-import/.claude-plugin/plugin.json +8 -0
  1936. package/payload/platform/plugins/substack-import/PLUGIN.md +34 -0
  1937. package/payload/platform/plugins/substack-import/skills/substack-import/SKILL.md +183 -0
  1938. package/payload/platform/plugins/substack-import/skills/substack-import/references/archive-shape.md +68 -0
  1939. package/payload/platform/plugins/substack-import/skills/substack-import/references/attachments.md +72 -0
  1940. package/payload/platform/plugins/substack-import/skills/substack-import/references/engagement.md +61 -0
  1941. package/payload/platform/plugins/substack-import/skills/substack-import/references/posts.md +80 -0
  1942. package/payload/platform/plugins/substack-import/skills/substack-import/references/subscribers.md +74 -0
  1943. package/payload/platform/plugins/telegram/.claude-plugin/plugin.json +21 -0
  1944. package/payload/platform/plugins/telegram/PLUGIN.md +58 -0
  1945. package/payload/platform/plugins/telegram/lib/mcp-spawn-tee/index.js +193 -0
  1946. package/payload/platform/plugins/telegram/lib/mcp-spawn-tee/package.json +3 -0
  1947. package/payload/platform/plugins/telegram/mcp/dist/index.d.ts +2 -0
  1948. package/payload/platform/plugins/telegram/mcp/dist/index.d.ts.map +1 -0
  1949. package/payload/platform/plugins/telegram/mcp/dist/index.js +253 -0
  1950. package/payload/platform/plugins/telegram/mcp/dist/index.js.map +1 -0
  1951. package/payload/platform/plugins/telegram/mcp/dist/lib/account-token.d.ts +6 -0
  1952. package/payload/platform/plugins/telegram/mcp/dist/lib/account-token.d.ts.map +1 -0
  1953. package/payload/platform/plugins/telegram/mcp/dist/lib/account-token.js +20 -0
  1954. package/payload/platform/plugins/telegram/mcp/dist/lib/account-token.js.map +1 -0
  1955. package/payload/platform/plugins/telegram/mcp/dist/lib/account-write.d.ts +21 -0
  1956. package/payload/platform/plugins/telegram/mcp/dist/lib/account-write.d.ts.map +1 -0
  1957. package/payload/platform/plugins/telegram/mcp/dist/lib/account-write.js +52 -0
  1958. package/payload/platform/plugins/telegram/mcp/dist/lib/account-write.js.map +1 -0
  1959. package/payload/platform/plugins/telegram/mcp/dist/lib/telegram.d.ts +41 -0
  1960. package/payload/platform/plugins/telegram/mcp/dist/lib/telegram.d.ts.map +1 -0
  1961. package/payload/platform/plugins/telegram/mcp/dist/lib/telegram.js +70 -0
  1962. package/payload/platform/plugins/telegram/mcp/dist/lib/telegram.js.map +1 -0
  1963. package/payload/platform/plugins/telegram/mcp/dist/tools/message-history.d.ts +16 -0
  1964. package/payload/platform/plugins/telegram/mcp/dist/tools/message-history.d.ts.map +1 -0
  1965. package/payload/platform/plugins/telegram/mcp/dist/tools/message-history.js +68 -0
  1966. package/payload/platform/plugins/telegram/mcp/dist/tools/message-history.js.map +1 -0
  1967. package/payload/platform/plugins/telegram/mcp/dist/tools/message.d.ts +20 -0
  1968. package/payload/platform/plugins/telegram/mcp/dist/tools/message.d.ts.map +1 -0
  1969. package/payload/platform/plugins/telegram/mcp/dist/tools/message.js +37 -0
  1970. package/payload/platform/plugins/telegram/mcp/dist/tools/message.js.map +1 -0
  1971. package/payload/platform/plugins/telegram/mcp/package.json +19 -0
  1972. package/payload/platform/plugins/telegram/references/setup-guide.md +53 -0
  1973. package/payload/platform/plugins/telegram/skills/configure/SKILL.md +79 -0
  1974. package/payload/platform/plugins/url-get/.claude-plugin/plugin.json +21 -0
  1975. package/payload/platform/plugins/url-get/PLUGIN.md +91 -0
  1976. package/payload/platform/plugins/url-get/lib/mcp-spawn-tee/index.js +193 -0
  1977. package/payload/platform/plugins/url-get/lib/mcp-spawn-tee/package.json +3 -0
  1978. package/payload/platform/plugins/url-get/mcp/dist/index.d.ts +9 -0
  1979. package/payload/platform/plugins/url-get/mcp/dist/index.d.ts.map +1 -0
  1980. package/payload/platform/plugins/url-get/mcp/dist/index.js +53 -0
  1981. package/payload/platform/plugins/url-get/mcp/dist/index.js.map +1 -0
  1982. package/payload/platform/plugins/url-get/mcp/dist/lib/summarise.d.ts +8 -0
  1983. package/payload/platform/plugins/url-get/mcp/dist/lib/summarise.d.ts.map +1 -0
  1984. package/payload/platform/plugins/url-get/mcp/dist/lib/summarise.js +83 -0
  1985. package/payload/platform/plugins/url-get/mcp/dist/lib/summarise.js.map +1 -0
  1986. package/payload/platform/plugins/url-get/mcp/dist/tools/url-get.d.ts +21 -0
  1987. package/payload/platform/plugins/url-get/mcp/dist/tools/url-get.d.ts.map +1 -0
  1988. package/payload/platform/plugins/url-get/mcp/dist/tools/url-get.js +133 -0
  1989. package/payload/platform/plugins/url-get/mcp/dist/tools/url-get.js.map +1 -0
  1990. package/payload/platform/plugins/url-get/mcp/package.json +22 -0
  1991. package/payload/platform/plugins/whatsapp/.claude-plugin/plugin.json +21 -0
  1992. package/payload/platform/plugins/whatsapp/PLUGIN.md +112 -0
  1993. package/payload/platform/plugins/whatsapp/lib/mcp-spawn-tee/index.js +193 -0
  1994. package/payload/platform/plugins/whatsapp/lib/mcp-spawn-tee/package.json +3 -0
  1995. package/payload/platform/plugins/whatsapp/mcp/dist/__tests__/boot-without-env.test.d.ts +2 -0
  1996. package/payload/platform/plugins/whatsapp/mcp/dist/__tests__/boot-without-env.test.d.ts.map +1 -0
  1997. package/payload/platform/plugins/whatsapp/mcp/dist/__tests__/boot-without-env.test.js +58 -0
  1998. package/payload/platform/plugins/whatsapp/mcp/dist/__tests__/boot-without-env.test.js.map +1 -0
  1999. package/payload/platform/plugins/whatsapp/mcp/dist/__tests__/format-login-start.test.d.ts +2 -0
  2000. package/payload/platform/plugins/whatsapp/mcp/dist/__tests__/format-login-start.test.d.ts.map +1 -0
  2001. package/payload/platform/plugins/whatsapp/mcp/dist/__tests__/format-login-start.test.js +16 -0
  2002. package/payload/platform/plugins/whatsapp/mcp/dist/__tests__/format-login-start.test.js.map +1 -0
  2003. package/payload/platform/plugins/whatsapp/mcp/dist/call-api.d.ts +14 -0
  2004. package/payload/platform/plugins/whatsapp/mcp/dist/call-api.d.ts.map +1 -0
  2005. package/payload/platform/plugins/whatsapp/mcp/dist/call-api.js +42 -0
  2006. package/payload/platform/plugins/whatsapp/mcp/dist/call-api.js.map +1 -0
  2007. package/payload/platform/plugins/whatsapp/mcp/dist/format.d.ts +7 -0
  2008. package/payload/platform/plugins/whatsapp/mcp/dist/format.d.ts.map +1 -0
  2009. package/payload/platform/plugins/whatsapp/mcp/dist/format.js +21 -0
  2010. package/payload/platform/plugins/whatsapp/mcp/dist/format.js.map +1 -0
  2011. package/payload/platform/plugins/whatsapp/mcp/dist/index.d.ts +8 -0
  2012. package/payload/platform/plugins/whatsapp/mcp/dist/index.d.ts.map +1 -0
  2013. package/payload/platform/plugins/whatsapp/mcp/dist/index.js +436 -0
  2014. package/payload/platform/plugins/whatsapp/mcp/dist/index.js.map +1 -0
  2015. package/payload/platform/plugins/whatsapp/mcp/package.json +21 -0
  2016. package/payload/platform/plugins/whatsapp/mcp/vitest.config.ts +9 -0
  2017. package/payload/platform/plugins/whatsapp/references/channels-whatsapp.md +307 -0
  2018. package/payload/platform/plugins/whatsapp/skills/connect-whatsapp/SKILL.md +86 -0
  2019. package/payload/platform/plugins/whatsapp/skills/manage-whatsapp-config/SKILL.md +90 -0
  2020. package/payload/platform/plugins/work/.claude-plugin/plugin.json +21 -0
  2021. package/payload/platform/plugins/work/.mcp.json +13 -0
  2022. package/payload/platform/plugins/work/PLUGIN.md +124 -0
  2023. package/payload/platform/plugins/work/lib/mcp-spawn-tee/index.js +193 -0
  2024. package/payload/platform/plugins/work/lib/mcp-spawn-tee/package.json +3 -0
  2025. package/payload/platform/plugins/work/mcp/dist/cli/project-create-cli.d.ts +2 -0
  2026. package/payload/platform/plugins/work/mcp/dist/cli/project-create-cli.d.ts.map +1 -0
  2027. package/payload/platform/plugins/work/mcp/dist/cli/project-create-cli.js +78 -0
  2028. package/payload/platform/plugins/work/mcp/dist/cli/project-create-cli.js.map +1 -0
  2029. package/payload/platform/plugins/work/mcp/dist/index.d.ts +2 -0
  2030. package/payload/platform/plugins/work/mcp/dist/index.d.ts.map +1 -0
  2031. package/payload/platform/plugins/work/mcp/dist/index.js +547 -0
  2032. package/payload/platform/plugins/work/mcp/dist/index.js.map +1 -0
  2033. package/payload/platform/plugins/work/mcp/dist/lib/embeddings.d.ts +7 -0
  2034. package/payload/platform/plugins/work/mcp/dist/lib/embeddings.d.ts.map +1 -0
  2035. package/payload/platform/plugins/work/mcp/dist/lib/embeddings.js +24 -0
  2036. package/payload/platform/plugins/work/mcp/dist/lib/embeddings.js.map +1 -0
  2037. package/payload/platform/plugins/work/mcp/dist/lib/neo4j.d.ts +5 -0
  2038. package/payload/platform/plugins/work/mcp/dist/lib/neo4j.d.ts.map +1 -0
  2039. package/payload/platform/plugins/work/mcp/dist/lib/neo4j.js +40 -0
  2040. package/payload/platform/plugins/work/mcp/dist/lib/neo4j.js.map +1 -0
  2041. package/payload/platform/plugins/work/mcp/dist/tools/project-complete.d.ts +17 -0
  2042. package/payload/platform/plugins/work/mcp/dist/tools/project-complete.d.ts.map +1 -0
  2043. package/payload/platform/plugins/work/mcp/dist/tools/project-complete.js +76 -0
  2044. package/payload/platform/plugins/work/mcp/dist/tools/project-complete.js.map +1 -0
  2045. package/payload/platform/plugins/work/mcp/dist/tools/project-create.d.ts +29 -0
  2046. package/payload/platform/plugins/work/mcp/dist/tools/project-create.d.ts.map +1 -0
  2047. package/payload/platform/plugins/work/mcp/dist/tools/project-create.js +235 -0
  2048. package/payload/platform/plugins/work/mcp/dist/tools/project-create.js.map +1 -0
  2049. package/payload/platform/plugins/work/mcp/dist/tools/project-get.d.ts +40 -0
  2050. package/payload/platform/plugins/work/mcp/dist/tools/project-get.d.ts.map +1 -0
  2051. package/payload/platform/plugins/work/mcp/dist/tools/project-get.js +125 -0
  2052. package/payload/platform/plugins/work/mcp/dist/tools/project-get.js.map +1 -0
  2053. package/payload/platform/plugins/work/mcp/dist/tools/project-list.d.ts +26 -0
  2054. package/payload/platform/plugins/work/mcp/dist/tools/project-list.d.ts.map +1 -0
  2055. package/payload/platform/plugins/work/mcp/dist/tools/project-list.js +81 -0
  2056. package/payload/platform/plugins/work/mcp/dist/tools/project-list.js.map +1 -0
  2057. package/payload/platform/plugins/work/mcp/dist/tools/project-update.d.ts +19 -0
  2058. package/payload/platform/plugins/work/mcp/dist/tools/project-update.d.ts.map +1 -0
  2059. package/payload/platform/plugins/work/mcp/dist/tools/project-update.js +102 -0
  2060. package/payload/platform/plugins/work/mcp/dist/tools/project-update.js.map +1 -0
  2061. package/payload/platform/plugins/work/mcp/dist/tools/session-list.d.ts +20 -0
  2062. package/payload/platform/plugins/work/mcp/dist/tools/session-list.d.ts.map +1 -0
  2063. package/payload/platform/plugins/work/mcp/dist/tools/session-list.js +37 -0
  2064. package/payload/platform/plugins/work/mcp/dist/tools/session-list.js.map +1 -0
  2065. package/payload/platform/plugins/work/mcp/dist/tools/session-name.d.ts +12 -0
  2066. package/payload/platform/plugins/work/mcp/dist/tools/session-name.d.ts.map +1 -0
  2067. package/payload/platform/plugins/work/mcp/dist/tools/session-name.js +28 -0
  2068. package/payload/platform/plugins/work/mcp/dist/tools/session-name.js.map +1 -0
  2069. package/payload/platform/plugins/work/mcp/dist/tools/work-complete.d.ts +16 -0
  2070. package/payload/platform/plugins/work/mcp/dist/tools/work-complete.d.ts.map +1 -0
  2071. package/payload/platform/plugins/work/mcp/dist/tools/work-complete.js +33 -0
  2072. package/payload/platform/plugins/work/mcp/dist/tools/work-complete.js.map +1 -0
  2073. package/payload/platform/plugins/work/mcp/dist/tools/work-create.d.ts +63 -0
  2074. package/payload/platform/plugins/work/mcp/dist/tools/work-create.d.ts.map +1 -0
  2075. package/payload/platform/plugins/work/mcp/dist/tools/work-create.js +141 -0
  2076. package/payload/platform/plugins/work/mcp/dist/tools/work-create.js.map +1 -0
  2077. package/payload/platform/plugins/work/mcp/dist/tools/work-get.d.ts +19 -0
  2078. package/payload/platform/plugins/work/mcp/dist/tools/work-get.d.ts.map +1 -0
  2079. package/payload/platform/plugins/work/mcp/dist/tools/work-get.js +51 -0
  2080. package/payload/platform/plugins/work/mcp/dist/tools/work-get.js.map +1 -0
  2081. package/payload/platform/plugins/work/mcp/dist/tools/work-list.d.ts +18 -0
  2082. package/payload/platform/plugins/work/mcp/dist/tools/work-list.d.ts.map +1 -0
  2083. package/payload/platform/plugins/work/mcp/dist/tools/work-list.js +66 -0
  2084. package/payload/platform/plugins/work/mcp/dist/tools/work-list.js.map +1 -0
  2085. package/payload/platform/plugins/work/mcp/dist/tools/work-ready.d.ts +21 -0
  2086. package/payload/platform/plugins/work/mcp/dist/tools/work-ready.d.ts.map +1 -0
  2087. package/payload/platform/plugins/work/mcp/dist/tools/work-ready.js +54 -0
  2088. package/payload/platform/plugins/work/mcp/dist/tools/work-ready.js.map +1 -0
  2089. package/payload/platform/plugins/work/mcp/dist/tools/work-relate.d.ts +12 -0
  2090. package/payload/platform/plugins/work/mcp/dist/tools/work-relate.d.ts.map +1 -0
  2091. package/payload/platform/plugins/work/mcp/dist/tools/work-relate.js +59 -0
  2092. package/payload/platform/plugins/work/mcp/dist/tools/work-relate.js.map +1 -0
  2093. package/payload/platform/plugins/work/mcp/dist/tools/work-update.d.ts +32 -0
  2094. package/payload/platform/plugins/work/mcp/dist/tools/work-update.d.ts.map +1 -0
  2095. package/payload/platform/plugins/work/mcp/dist/tools/work-update.js +112 -0
  2096. package/payload/platform/plugins/work/mcp/dist/tools/work-update.js.map +1 -0
  2097. package/payload/platform/plugins/work/mcp/package.json +20 -0
  2098. package/payload/platform/plugins/work/skills/execute-task/SKILL.md +103 -0
  2099. package/payload/platform/plugins/workflows/.claude-plugin/plugin.json +21 -0
  2100. package/payload/platform/plugins/workflows/.mcp.json +12 -0
  2101. package/payload/platform/plugins/workflows/PLUGIN.md +160 -0
  2102. package/payload/platform/plugins/workflows/lib/mcp-spawn-tee/index.js +193 -0
  2103. package/payload/platform/plugins/workflows/lib/mcp-spawn-tee/package.json +3 -0
  2104. package/payload/platform/plugins/workflows/mcp/dist/index.d.ts +2 -0
  2105. package/payload/platform/plugins/workflows/mcp/dist/index.d.ts.map +1 -0
  2106. package/payload/platform/plugins/workflows/mcp/dist/index.js +440 -0
  2107. package/payload/platform/plugins/workflows/mcp/dist/index.js.map +1 -0
  2108. package/payload/platform/plugins/workflows/mcp/dist/lib/active-runs.d.ts +38 -0
  2109. package/payload/platform/plugins/workflows/mcp/dist/lib/active-runs.d.ts.map +1 -0
  2110. package/payload/platform/plugins/workflows/mcp/dist/lib/active-runs.js +83 -0
  2111. package/payload/platform/plugins/workflows/mcp/dist/lib/active-runs.js.map +1 -0
  2112. package/payload/platform/plugins/workflows/mcp/dist/lib/embeddings.d.ts +2 -0
  2113. package/payload/platform/plugins/workflows/mcp/dist/lib/embeddings.d.ts.map +1 -0
  2114. package/payload/platform/plugins/workflows/mcp/dist/lib/embeddings.js +19 -0
  2115. package/payload/platform/plugins/workflows/mcp/dist/lib/embeddings.js.map +1 -0
  2116. package/payload/platform/plugins/workflows/mcp/dist/lib/llm-call.d.ts +151 -0
  2117. package/payload/platform/plugins/workflows/mcp/dist/lib/llm-call.d.ts.map +1 -0
  2118. package/payload/platform/plugins/workflows/mcp/dist/lib/llm-call.js +299 -0
  2119. package/payload/platform/plugins/workflows/mcp/dist/lib/llm-call.js.map +1 -0
  2120. package/payload/platform/plugins/workflows/mcp/dist/lib/neo4j.d.ts +5 -0
  2121. package/payload/platform/plugins/workflows/mcp/dist/lib/neo4j.d.ts.map +1 -0
  2122. package/payload/platform/plugins/workflows/mcp/dist/lib/neo4j.js +40 -0
  2123. package/payload/platform/plugins/workflows/mcp/dist/lib/neo4j.js.map +1 -0
  2124. package/payload/platform/plugins/workflows/mcp/dist/lib/step-resolver.d.ts +66 -0
  2125. package/payload/platform/plugins/workflows/mcp/dist/lib/step-resolver.d.ts.map +1 -0
  2126. package/payload/platform/plugins/workflows/mcp/dist/lib/step-resolver.js +187 -0
  2127. package/payload/platform/plugins/workflows/mcp/dist/lib/step-resolver.js.map +1 -0
  2128. package/payload/platform/plugins/workflows/mcp/dist/lib/validate-capabilities.d.ts +25 -0
  2129. package/payload/platform/plugins/workflows/mcp/dist/lib/validate-capabilities.d.ts.map +1 -0
  2130. package/payload/platform/plugins/workflows/mcp/dist/lib/validate-capabilities.js +56 -0
  2131. package/payload/platform/plugins/workflows/mcp/dist/lib/validate-capabilities.js.map +1 -0
  2132. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-create.d.ts +33 -0
  2133. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-create.d.ts.map +1 -0
  2134. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-create.js +130 -0
  2135. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-create.js.map +1 -0
  2136. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-delete.d.ts +28 -0
  2137. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-delete.d.ts.map +1 -0
  2138. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-delete.js +57 -0
  2139. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-delete.js.map +1 -0
  2140. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-execute.d.ts +51 -0
  2141. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-execute.d.ts.map +1 -0
  2142. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-execute.js +382 -0
  2143. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-execute.js.map +1 -0
  2144. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-get.d.ts +24 -0
  2145. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-get.d.ts.map +1 -0
  2146. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-get.js +48 -0
  2147. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-get.js.map +1 -0
  2148. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-list.d.ts +16 -0
  2149. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-list.d.ts.map +1 -0
  2150. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-list.js +44 -0
  2151. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-list.js.map +1 -0
  2152. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-runs.d.ts +28 -0
  2153. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-runs.d.ts.map +1 -0
  2154. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-runs.js +71 -0
  2155. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-runs.js.map +1 -0
  2156. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-update.d.ts +11 -0
  2157. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-update.d.ts.map +1 -0
  2158. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-update.js +150 -0
  2159. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-update.js.map +1 -0
  2160. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-validate.d.ts +13 -0
  2161. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-validate.d.ts.map +1 -0
  2162. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-validate.js +53 -0
  2163. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-validate.js.map +1 -0
  2164. package/payload/platform/plugins/workflows/mcp/package.json +20 -0
  2165. package/payload/platform/plugins/workflows/mcp/test-runner.mjs +710 -0
  2166. package/payload/platform/plugins/workflows/mcp/test-workflows.sh +77 -0
  2167. package/payload/platform/plugins/workflows/skills/workflow-manager/SKILL.md +95 -0
  2168. package/payload/platform/plugins/x-import/.claude-plugin/plugin.json +8 -0
  2169. package/payload/platform/plugins/x-import/PLUGIN.md +33 -0
  2170. package/payload/platform/plugins/x-import/references/archive-shape.md +124 -0
  2171. package/payload/platform/plugins/x-import/references/transcript-shape.md +121 -0
  2172. package/payload/platform/plugins/x-import/skills/x-import/SKILL.md +123 -0
  2173. package/payload/platform/scripts/__tests__/agents-md-bootstrap.test.sh +111 -0
  2174. package/payload/platform/scripts/__tests__/check-no-raw-mcp-registrations.test.sh +57 -0
  2175. package/payload/platform/scripts/__tests__/check-no-task-id-leaks.test.sh +153 -0
  2176. package/payload/platform/scripts/__tests__/first-token-creates-stream-log.test.sh +37 -0
  2177. package/payload/platform/scripts/__tests__/logs-read-prefix.sh +237 -0
  2178. package/payload/platform/scripts/__tests__/prompt-optimiser-audit.test.sh +59 -0
  2179. package/payload/platform/scripts/__tests__/provision-role-stamp.test.sh +40 -0
  2180. package/payload/platform/scripts/__tests__/resume-tunnel.test.sh +641 -0
  2181. package/payload/platform/scripts/__tests__/sweep-durability.test.sh +103 -0
  2182. package/payload/platform/scripts/admin-conversation-recover.mjs +386 -0
  2183. package/payload/platform/scripts/admin-persist-audit.ts +211 -0
  2184. package/payload/platform/scripts/backfill-bypass-permissions.sh +58 -0
  2185. package/payload/platform/scripts/check-architecture-skill-no-drift.mjs +114 -0
  2186. package/payload/platform/scripts/check-canonical-tool-names.mjs +110 -0
  2187. package/payload/platform/scripts/check-cypher-int-params.mjs +277 -0
  2188. package/payload/platform/scripts/check-no-conversation-id-leaks.mjs +165 -0
  2189. package/payload/platform/scripts/check-no-direct-clipboard.mjs +54 -0
  2190. package/payload/platform/scripts/check-no-esm-require.mjs +164 -0
  2191. package/payload/platform/scripts/check-no-legacy-spawn-route.mjs +37 -0
  2192. package/payload/platform/scripts/check-no-raw-mcp-registrations.mjs +70 -0
  2193. package/payload/platform/scripts/check-no-task-id-leaks.mjs +201 -0
  2194. package/payload/platform/scripts/check-plugin-references.mjs +256 -0
  2195. package/payload/platform/scripts/check-plugin-tools-mcp-consistency.mjs +136 -0
  2196. package/payload/platform/scripts/check-roles-doc-completeness.mjs +96 -0
  2197. package/payload/platform/scripts/check-routing-prose-bash.mjs +134 -0
  2198. package/payload/platform/scripts/check-skill-frontmatter.mjs +142 -0
  2199. package/payload/platform/scripts/check-skill-load-coverage.mjs +100 -0
  2200. package/payload/platform/scripts/check-specialist-tool-surface.mjs +323 -0
  2201. package/payload/platform/scripts/conversation-id-allowlist.txt +142 -0
  2202. package/payload/platform/scripts/dedupe-userprofile-ghosts.sh +388 -0
  2203. package/payload/platform/scripts/generate-canonical-tool-names.mjs +63 -0
  2204. package/payload/platform/scripts/generate-entitlement-fixture.mjs +152 -0
  2205. package/payload/platform/scripts/identity-forbidden-token-check.mjs +87 -0
  2206. package/payload/platform/scripts/installer-device-verify.sh +358 -0
  2207. package/payload/platform/scripts/lib/__tests__/admin-skills-bootstrap.test.sh +64 -0
  2208. package/payload/platform/scripts/lib/admin-skills-bootstrap.sh +109 -0
  2209. package/payload/platform/scripts/lib/agents-md-bootstrap.sh +49 -0
  2210. package/payload/platform/scripts/lib/canonical-tool-names.mjs +88 -0
  2211. package/payload/platform/scripts/lib/provision-account-dir.sh +316 -0
  2212. package/payload/platform/scripts/lib/read-brand-json.sh +69 -0
  2213. package/payload/platform/scripts/lib/resolve-account-dir.sh +131 -0
  2214. package/payload/platform/scripts/log-adherence-check.sh +125 -0
  2215. package/payload/platform/scripts/logs-read-jsonl.test.sh +307 -0
  2216. package/payload/platform/scripts/logs-read.sh +980 -0
  2217. package/payload/platform/scripts/logs-read.test.sh +159 -0
  2218. package/payload/platform/scripts/prompt-optimiser-audit.sh +82 -0
  2219. package/payload/platform/scripts/redact-install-logs.sh +87 -0
  2220. package/payload/platform/scripts/resume-tunnel.sh +280 -0
  2221. package/payload/platform/scripts/rss-sampler.sh +58 -0
  2222. package/payload/platform/scripts/seed-neo4j.sh +211 -0
  2223. package/payload/platform/scripts/setup-account.sh +55 -0
  2224. package/payload/platform/scripts/smoke-boot-services.sh +413 -0
  2225. package/payload/platform/scripts/test-laptop-vnc-boot.sh +88 -0
  2226. package/payload/platform/scripts/verify-skill-tool-surface.sh +389 -0
  2227. package/payload/platform/scripts/vnc.sh +476 -0
  2228. package/payload/platform/scripts/wifi-provision-server/server.js +743 -0
  2229. package/payload/platform/scripts/wifi-provision.sh +492 -0
  2230. package/payload/platform/services/claude-session-manager/dist/admin-identity-audit.d.ts +39 -0
  2231. package/payload/platform/services/claude-session-manager/dist/admin-identity-audit.d.ts.map +1 -0
  2232. package/payload/platform/services/claude-session-manager/dist/admin-identity-audit.js +133 -0
  2233. package/payload/platform/services/claude-session-manager/dist/admin-identity-audit.js.map +1 -0
  2234. package/payload/platform/services/claude-session-manager/dist/agent-identity-locator.d.ts +23 -0
  2235. package/payload/platform/services/claude-session-manager/dist/agent-identity-locator.d.ts.map +1 -0
  2236. package/payload/platform/services/claude-session-manager/dist/agent-identity-locator.js +29 -0
  2237. package/payload/platform/services/claude-session-manager/dist/agent-identity-locator.js.map +1 -0
  2238. package/payload/platform/services/claude-session-manager/dist/auth-snapshot.d.ts +4 -0
  2239. package/payload/platform/services/claude-session-manager/dist/auth-snapshot.d.ts.map +1 -0
  2240. package/payload/platform/services/claude-session-manager/dist/auth-snapshot.js +50 -0
  2241. package/payload/platform/services/claude-session-manager/dist/auth-snapshot.js.map +1 -0
  2242. package/payload/platform/services/claude-session-manager/dist/brand-foreign-filter.d.ts +30 -0
  2243. package/payload/platform/services/claude-session-manager/dist/brand-foreign-filter.d.ts.map +1 -0
  2244. package/payload/platform/services/claude-session-manager/dist/brand-foreign-filter.js +86 -0
  2245. package/payload/platform/services/claude-session-manager/dist/brand-foreign-filter.js.map +1 -0
  2246. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.d.ts +7 -0
  2247. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.d.ts.map +1 -0
  2248. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.d.ts +5 -0
  2249. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.d.ts.map +1 -0
  2250. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js +226 -0
  2251. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js.map +1 -0
  2252. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.js +23 -0
  2253. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.js.map +1 -0
  2254. package/payload/platform/services/claude-session-manager/dist/channel-mcp.d.ts +15 -0
  2255. package/payload/platform/services/claude-session-manager/dist/channel-mcp.d.ts.map +1 -0
  2256. package/payload/platform/services/claude-session-manager/dist/channel-mcp.js +34 -0
  2257. package/payload/platform/services/claude-session-manager/dist/channel-mcp.js.map +1 -0
  2258. package/payload/platform/services/claude-session-manager/dist/channel-targets.d.ts +26 -0
  2259. package/payload/platform/services/claude-session-manager/dist/channel-targets.d.ts.map +1 -0
  2260. package/payload/platform/services/claude-session-manager/dist/channel-targets.js +19 -0
  2261. package/payload/platform/services/claude-session-manager/dist/channel-targets.js.map +1 -0
  2262. package/payload/platform/services/claude-session-manager/dist/config.d.ts +73 -0
  2263. package/payload/platform/services/claude-session-manager/dist/config.d.ts.map +1 -0
  2264. package/payload/platform/services/claude-session-manager/dist/config.js +290 -0
  2265. package/payload/platform/services/claude-session-manager/dist/config.js.map +1 -0
  2266. package/payload/platform/services/claude-session-manager/dist/fs-watcher.d.ts +150 -0
  2267. package/payload/platform/services/claude-session-manager/dist/fs-watcher.d.ts.map +1 -0
  2268. package/payload/platform/services/claude-session-manager/dist/fs-watcher.js +913 -0
  2269. package/payload/platform/services/claude-session-manager/dist/fs-watcher.js.map +1 -0
  2270. package/payload/platform/services/claude-session-manager/dist/hooks-discovery.d.ts +7 -0
  2271. package/payload/platform/services/claude-session-manager/dist/hooks-discovery.d.ts.map +1 -0
  2272. package/payload/platform/services/claude-session-manager/dist/hooks-discovery.js +90 -0
  2273. package/payload/platform/services/claude-session-manager/dist/hooks-discovery.js.map +1 -0
  2274. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts +56 -0
  2275. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -0
  2276. package/payload/platform/services/claude-session-manager/dist/http-server.js +2797 -0
  2277. package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -0
  2278. package/payload/platform/services/claude-session-manager/dist/index.d.ts +2 -0
  2279. package/payload/platform/services/claude-session-manager/dist/index.d.ts.map +1 -0
  2280. package/payload/platform/services/claude-session-manager/dist/index.js +784 -0
  2281. package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -0
  2282. package/payload/platform/services/claude-session-manager/dist/input-postcondition.d.ts +22 -0
  2283. package/payload/platform/services/claude-session-manager/dist/input-postcondition.d.ts.map +1 -0
  2284. package/payload/platform/services/claude-session-manager/dist/input-postcondition.js +50 -0
  2285. package/payload/platform/services/claude-session-manager/dist/input-postcondition.js.map +1 -0
  2286. package/payload/platform/services/claude-session-manager/dist/install-log-sink.d.ts +2 -0
  2287. package/payload/platform/services/claude-session-manager/dist/install-log-sink.d.ts.map +1 -0
  2288. package/payload/platform/services/claude-session-manager/dist/install-log-sink.js +6 -0
  2289. package/payload/platform/services/claude-session-manager/dist/install-log-sink.js.map +1 -0
  2290. package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.d.ts +49 -0
  2291. package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.d.ts.map +1 -0
  2292. package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.js +169 -0
  2293. package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.js.map +1 -0
  2294. package/payload/platform/services/claude-session-manager/dist/jsonl-observer.d.ts +30 -0
  2295. package/payload/platform/services/claude-session-manager/dist/jsonl-observer.d.ts.map +1 -0
  2296. package/payload/platform/services/claude-session-manager/dist/jsonl-observer.js +204 -0
  2297. package/payload/platform/services/claude-session-manager/dist/jsonl-observer.js.map +1 -0
  2298. package/payload/platform/services/claude-session-manager/dist/jsonl-path.d.ts +67 -0
  2299. package/payload/platform/services/claude-session-manager/dist/jsonl-path.d.ts.map +1 -0
  2300. package/payload/platform/services/claude-session-manager/dist/jsonl-path.js +141 -0
  2301. package/payload/platform/services/claude-session-manager/dist/jsonl-path.js.map +1 -0
  2302. package/payload/platform/services/claude-session-manager/dist/jsonl-tail.d.ts +81 -0
  2303. package/payload/platform/services/claude-session-manager/dist/jsonl-tail.d.ts.map +1 -0
  2304. package/payload/platform/services/claude-session-manager/dist/jsonl-tail.js +503 -0
  2305. package/payload/platform/services/claude-session-manager/dist/jsonl-tail.js.map +1 -0
  2306. package/payload/platform/services/claude-session-manager/dist/liveness-divergence.d.ts +19 -0
  2307. package/payload/platform/services/claude-session-manager/dist/liveness-divergence.d.ts.map +1 -0
  2308. package/payload/platform/services/claude-session-manager/dist/liveness-divergence.js +38 -0
  2309. package/payload/platform/services/claude-session-manager/dist/liveness-divergence.js.map +1 -0
  2310. package/payload/platform/services/claude-session-manager/dist/log-sink.d.ts +12 -0
  2311. package/payload/platform/services/claude-session-manager/dist/log-sink.d.ts.map +1 -0
  2312. package/payload/platform/services/claude-session-manager/dist/log-sink.js +48 -0
  2313. package/payload/platform/services/claude-session-manager/dist/log-sink.js.map +1 -0
  2314. package/payload/platform/services/claude-session-manager/dist/mcp-tools-probe.d.ts +38 -0
  2315. package/payload/platform/services/claude-session-manager/dist/mcp-tools-probe.d.ts.map +1 -0
  2316. package/payload/platform/services/claude-session-manager/dist/mcp-tools-probe.js +131 -0
  2317. package/payload/platform/services/claude-session-manager/dist/mcp-tools-probe.js.map +1 -0
  2318. package/payload/platform/services/claude-session-manager/dist/permission-mode-tail.d.ts +22 -0
  2319. package/payload/platform/services/claude-session-manager/dist/permission-mode-tail.d.ts.map +1 -0
  2320. package/payload/platform/services/claude-session-manager/dist/permission-mode-tail.js +71 -0
  2321. package/payload/platform/services/claude-session-manager/dist/permission-mode-tail.js.map +1 -0
  2322. package/payload/platform/services/claude-session-manager/dist/pty-census.d.ts +40 -0
  2323. package/payload/platform/services/claude-session-manager/dist/pty-census.d.ts.map +1 -0
  2324. package/payload/platform/services/claude-session-manager/dist/pty-census.js +125 -0
  2325. package/payload/platform/services/claude-session-manager/dist/pty-census.js.map +1 -0
  2326. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts +684 -0
  2327. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -0
  2328. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +2245 -0
  2329. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -0
  2330. package/payload/platform/services/claude-session-manager/dist/public-agent-reachability.d.ts +40 -0
  2331. package/payload/platform/services/claude-session-manager/dist/public-agent-reachability.d.ts.map +1 -0
  2332. package/payload/platform/services/claude-session-manager/dist/public-agent-reachability.js +123 -0
  2333. package/payload/platform/services/claude-session-manager/dist/public-agent-reachability.js.map +1 -0
  2334. package/payload/platform/services/claude-session-manager/dist/public-tool-audit.d.ts +33 -0
  2335. package/payload/platform/services/claude-session-manager/dist/public-tool-audit.d.ts.map +1 -0
  2336. package/payload/platform/services/claude-session-manager/dist/public-tool-audit.js +149 -0
  2337. package/payload/platform/services/claude-session-manager/dist/public-tool-audit.js.map +1 -0
  2338. package/payload/platform/services/claude-session-manager/dist/rc-child-log.d.ts +13 -0
  2339. package/payload/platform/services/claude-session-manager/dist/rc-child-log.d.ts.map +1 -0
  2340. package/payload/platform/services/claude-session-manager/dist/rc-child-log.js +52 -0
  2341. package/payload/platform/services/claude-session-manager/dist/rc-child-log.js.map +1 -0
  2342. package/payload/platform/services/claude-session-manager/dist/rc-daemon.d.ts +175 -0
  2343. package/payload/platform/services/claude-session-manager/dist/rc-daemon.d.ts.map +1 -0
  2344. package/payload/platform/services/claude-session-manager/dist/rc-daemon.js +644 -0
  2345. package/payload/platform/services/claude-session-manager/dist/rc-daemon.js.map +1 -0
  2346. package/payload/platform/services/claude-session-manager/dist/rc-life.d.ts +4 -0
  2347. package/payload/platform/services/claude-session-manager/dist/rc-life.d.ts.map +1 -0
  2348. package/payload/platform/services/claude-session-manager/dist/rc-life.js +16 -0
  2349. package/payload/platform/services/claude-session-manager/dist/rc-life.js.map +1 -0
  2350. package/payload/platform/services/claude-session-manager/dist/rc-script-spawn.d.ts +80 -0
  2351. package/payload/platform/services/claude-session-manager/dist/rc-script-spawn.d.ts.map +1 -0
  2352. package/payload/platform/services/claude-session-manager/dist/rc-script-spawn.js +306 -0
  2353. package/payload/platform/services/claude-session-manager/dist/rc-script-spawn.js.map +1 -0
  2354. package/payload/platform/services/claude-session-manager/dist/reaper.d.ts +28 -0
  2355. package/payload/platform/services/claude-session-manager/dist/reaper.d.ts.map +1 -0
  2356. package/payload/platform/services/claude-session-manager/dist/reaper.js +118 -0
  2357. package/payload/platform/services/claude-session-manager/dist/reaper.js.map +1 -0
  2358. package/payload/platform/services/claude-session-manager/dist/reseat-ledger.d.ts +49 -0
  2359. package/payload/platform/services/claude-session-manager/dist/reseat-ledger.d.ts.map +1 -0
  2360. package/payload/platform/services/claude-session-manager/dist/reseat-ledger.js +148 -0
  2361. package/payload/platform/services/claude-session-manager/dist/reseat-ledger.js.map +1 -0
  2362. package/payload/platform/services/claude-session-manager/dist/scope-record.d.ts +11 -0
  2363. package/payload/platform/services/claude-session-manager/dist/scope-record.d.ts.map +1 -0
  2364. package/payload/platform/services/claude-session-manager/dist/scope-record.js +63 -0
  2365. package/payload/platform/services/claude-session-manager/dist/scope-record.js.map +1 -0
  2366. package/payload/platform/services/claude-session-manager/dist/session-sidecar.d.ts +130 -0
  2367. package/payload/platform/services/claude-session-manager/dist/session-sidecar.d.ts.map +1 -0
  2368. package/payload/platform/services/claude-session-manager/dist/session-sidecar.js +291 -0
  2369. package/payload/platform/services/claude-session-manager/dist/session-sidecar.js.map +1 -0
  2370. package/payload/platform/services/claude-session-manager/dist/session-store.d.ts +49 -0
  2371. package/payload/platform/services/claude-session-manager/dist/session-store.d.ts.map +1 -0
  2372. package/payload/platform/services/claude-session-manager/dist/session-store.js +52 -0
  2373. package/payload/platform/services/claude-session-manager/dist/session-store.js.map +1 -0
  2374. package/payload/platform/services/claude-session-manager/dist/settings-permission-mode.d.ts +12 -0
  2375. package/payload/platform/services/claude-session-manager/dist/settings-permission-mode.d.ts.map +1 -0
  2376. package/payload/platform/services/claude-session-manager/dist/settings-permission-mode.js +57 -0
  2377. package/payload/platform/services/claude-session-manager/dist/settings-permission-mode.js.map +1 -0
  2378. package/payload/platform/services/claude-session-manager/dist/sidecar-store.d.ts +45 -0
  2379. package/payload/platform/services/claude-session-manager/dist/sidecar-store.d.ts.map +1 -0
  2380. package/payload/platform/services/claude-session-manager/dist/sidecar-store.js +118 -0
  2381. package/payload/platform/services/claude-session-manager/dist/sidecar-store.js.map +1 -0
  2382. package/payload/platform/services/claude-session-manager/dist/spawn-rate-limiter.d.ts +28 -0
  2383. package/payload/platform/services/claude-session-manager/dist/spawn-rate-limiter.d.ts.map +1 -0
  2384. package/payload/platform/services/claude-session-manager/dist/spawn-rate-limiter.js +77 -0
  2385. package/payload/platform/services/claude-session-manager/dist/spawn-rate-limiter.js.map +1 -0
  2386. package/payload/platform/services/claude-session-manager/dist/specialist-drift.d.ts +60 -0
  2387. package/payload/platform/services/claude-session-manager/dist/specialist-drift.d.ts.map +1 -0
  2388. package/payload/platform/services/claude-session-manager/dist/specialist-drift.js +203 -0
  2389. package/payload/platform/services/claude-session-manager/dist/specialist-drift.js.map +1 -0
  2390. package/payload/platform/services/claude-session-manager/dist/stuck-turn.d.ts +70 -0
  2391. package/payload/platform/services/claude-session-manager/dist/stuck-turn.d.ts.map +1 -0
  2392. package/payload/platform/services/claude-session-manager/dist/stuck-turn.js +213 -0
  2393. package/payload/platform/services/claude-session-manager/dist/stuck-turn.js.map +1 -0
  2394. package/payload/platform/services/claude-session-manager/dist/system-prompt.d.ts +157 -0
  2395. package/payload/platform/services/claude-session-manager/dist/system-prompt.d.ts.map +1 -0
  2396. package/payload/platform/services/claude-session-manager/dist/system-prompt.js +482 -0
  2397. package/payload/platform/services/claude-session-manager/dist/system-prompt.js.map +1 -0
  2398. package/payload/platform/services/claude-session-manager/dist/systemd-scope.d.ts +164 -0
  2399. package/payload/platform/services/claude-session-manager/dist/systemd-scope.d.ts.map +1 -0
  2400. package/payload/platform/services/claude-session-manager/dist/systemd-scope.js +296 -0
  2401. package/payload/platform/services/claude-session-manager/dist/systemd-scope.js.map +1 -0
  2402. package/payload/platform/services/claude-session-manager/dist/systemd-spawn.d.ts +83 -0
  2403. package/payload/platform/services/claude-session-manager/dist/systemd-spawn.d.ts.map +1 -0
  2404. package/payload/platform/services/claude-session-manager/dist/systemd-spawn.js +345 -0
  2405. package/payload/platform/services/claude-session-manager/dist/systemd-spawn.js.map +1 -0
  2406. package/payload/platform/services/claude-session-manager/dist/tool-surface.d.ts +69 -0
  2407. package/payload/platform/services/claude-session-manager/dist/tool-surface.d.ts.map +1 -0
  2408. package/payload/platform/services/claude-session-manager/dist/tool-surface.js +373 -0
  2409. package/payload/platform/services/claude-session-manager/dist/tool-surface.js.map +1 -0
  2410. package/payload/platform/services/claude-session-manager/dist/types.d.ts +41 -0
  2411. package/payload/platform/services/claude-session-manager/dist/types.d.ts.map +1 -0
  2412. package/payload/platform/services/claude-session-manager/dist/types.js +2 -0
  2413. package/payload/platform/services/claude-session-manager/dist/types.js.map +1 -0
  2414. package/payload/platform/services/claude-session-manager/dist/url-capture.d.ts +12 -0
  2415. package/payload/platform/services/claude-session-manager/dist/url-capture.d.ts.map +1 -0
  2416. package/payload/platform/services/claude-session-manager/dist/url-capture.js +79 -0
  2417. package/payload/platform/services/claude-session-manager/dist/url-capture.js.map +1 -0
  2418. package/payload/platform/services/claude-session-manager/dist/user-title-store.d.ts +39 -0
  2419. package/payload/platform/services/claude-session-manager/dist/user-title-store.d.ts.map +1 -0
  2420. package/payload/platform/services/claude-session-manager/dist/user-title-store.js +138 -0
  2421. package/payload/platform/services/claude-session-manager/dist/user-title-store.js.map +1 -0
  2422. package/payload/platform/services/claude-session-manager/dist/wa-channel-mcp.d.ts +36 -0
  2423. package/payload/platform/services/claude-session-manager/dist/wa-channel-mcp.d.ts.map +1 -0
  2424. package/payload/platform/services/claude-session-manager/dist/wa-channel-mcp.js +63 -0
  2425. package/payload/platform/services/claude-session-manager/dist/wa-channel-mcp.js.map +1 -0
  2426. package/payload/platform/services/claude-session-manager/dist/wa-channel-store.d.ts +29 -0
  2427. package/payload/platform/services/claude-session-manager/dist/wa-channel-store.d.ts.map +1 -0
  2428. package/payload/platform/services/claude-session-manager/dist/wa-channel-store.js +124 -0
  2429. package/payload/platform/services/claude-session-manager/dist/wa-channel-store.js.map +1 -0
  2430. package/payload/platform/services/claude-session-manager/dist/webchat-channel-mcp.d.ts +35 -0
  2431. package/payload/platform/services/claude-session-manager/dist/webchat-channel-mcp.d.ts.map +1 -0
  2432. package/payload/platform/services/claude-session-manager/dist/webchat-channel-mcp.js +52 -0
  2433. package/payload/platform/services/claude-session-manager/dist/webchat-channel-mcp.js.map +1 -0
  2434. package/payload/platform/services/claude-session-manager/dist/webchat-channel-store.d.ts +29 -0
  2435. package/payload/platform/services/claude-session-manager/dist/webchat-channel-store.d.ts.map +1 -0
  2436. package/payload/platform/services/claude-session-manager/dist/webchat-channel-store.js +121 -0
  2437. package/payload/platform/services/claude-session-manager/dist/webchat-channel-store.js.map +1 -0
  2438. package/payload/platform/services/claude-session-manager/package.json +22 -0
  2439. package/payload/platform/services/claude-session-manager/scripts/stash-cleanup.sh +410 -0
  2440. package/payload/platform/services/claude-session-manager/vitest.config.ts +14 -0
  2441. package/payload/platform/services/webchat-channel/dist/instructions.d.ts +9 -0
  2442. package/payload/platform/services/webchat-channel/dist/instructions.d.ts.map +1 -0
  2443. package/payload/platform/services/webchat-channel/dist/instructions.js +106 -0
  2444. package/payload/platform/services/webchat-channel/dist/instructions.js.map +1 -0
  2445. package/payload/platform/services/webchat-channel/dist/notification.d.ts +89 -0
  2446. package/payload/platform/services/webchat-channel/dist/notification.d.ts.map +1 -0
  2447. package/payload/platform/services/webchat-channel/dist/notification.js +118 -0
  2448. package/payload/platform/services/webchat-channel/dist/notification.js.map +1 -0
  2449. package/payload/platform/services/webchat-channel/dist/permission.d.ts +46 -0
  2450. package/payload/platform/services/webchat-channel/dist/permission.d.ts.map +1 -0
  2451. package/payload/platform/services/webchat-channel/dist/permission.js +56 -0
  2452. package/payload/platform/services/webchat-channel/dist/permission.js.map +1 -0
  2453. package/payload/platform/services/webchat-channel/dist/server.d.ts +40 -0
  2454. package/payload/platform/services/webchat-channel/dist/server.d.ts.map +1 -0
  2455. package/payload/platform/services/webchat-channel/dist/server.js +329 -0
  2456. package/payload/platform/services/webchat-channel/dist/server.js.map +1 -0
  2457. package/payload/platform/services/webchat-channel/dist/turn-follow.d.ts +28 -0
  2458. package/payload/platform/services/webchat-channel/dist/turn-follow.d.ts.map +1 -0
  2459. package/payload/platform/services/webchat-channel/dist/turn-follow.js +188 -0
  2460. package/payload/platform/services/webchat-channel/dist/turn-follow.js.map +1 -0
  2461. package/payload/platform/services/webchat-channel/package.json +20 -0
  2462. package/payload/platform/services/whatsapp-channel/dist/jsonl-watch.d.ts +10 -0
  2463. package/payload/platform/services/whatsapp-channel/dist/jsonl-watch.d.ts.map +1 -0
  2464. package/payload/platform/services/whatsapp-channel/dist/jsonl-watch.js +70 -0
  2465. package/payload/platform/services/whatsapp-channel/dist/jsonl-watch.js.map +1 -0
  2466. package/payload/platform/services/whatsapp-channel/dist/notification.d.ts +194 -0
  2467. package/payload/platform/services/whatsapp-channel/dist/notification.d.ts.map +1 -0
  2468. package/payload/platform/services/whatsapp-channel/dist/notification.js +265 -0
  2469. package/payload/platform/services/whatsapp-channel/dist/notification.js.map +1 -0
  2470. package/payload/platform/services/whatsapp-channel/dist/server.d.ts +57 -0
  2471. package/payload/platform/services/whatsapp-channel/dist/server.d.ts.map +1 -0
  2472. package/payload/platform/services/whatsapp-channel/dist/server.js +625 -0
  2473. package/payload/platform/services/whatsapp-channel/dist/server.js.map +1 -0
  2474. package/payload/platform/services/whatsapp-channel/dist/targets.d.ts +100 -0
  2475. package/payload/platform/services/whatsapp-channel/dist/targets.d.ts.map +1 -0
  2476. package/payload/platform/services/whatsapp-channel/dist/targets.js +154 -0
  2477. package/payload/platform/services/whatsapp-channel/dist/targets.js.map +1 -0
  2478. package/payload/platform/services/whatsapp-channel/dist/turn-follow.d.ts +22 -0
  2479. package/payload/platform/services/whatsapp-channel/dist/turn-follow.d.ts.map +1 -0
  2480. package/payload/platform/services/whatsapp-channel/dist/turn-follow.js +163 -0
  2481. package/payload/platform/services/whatsapp-channel/dist/turn-follow.js.map +1 -0
  2482. package/payload/platform/services/whatsapp-channel/package.json +20 -0
  2483. package/payload/platform/templates/account.json +14 -0
  2484. package/payload/platform/templates/agents/admin/AGENTS.md +23 -0
  2485. package/payload/platform/templates/agents/admin/IDENTITY.md +65 -0
  2486. package/payload/platform/templates/agents/admin/LEARNINGS.md +3 -0
  2487. package/payload/platform/templates/agents/admin/SOUL.md +1 -0
  2488. package/payload/platform/templates/agents/public/IDENTITY.md +19 -0
  2489. package/payload/platform/templates/specialists/.claude-plugin/plugin.json +4 -0
  2490. package/payload/platform/templates/specialists/agents/citation-auditor.md +37 -0
  2491. package/payload/platform/templates/specialists/agents/coding-assistant.md +73 -0
  2492. package/payload/platform/templates/specialists/agents/compiled-truth-rewriter.md +42 -0
  2493. package/payload/platform/templates/specialists/agents/content-producer.md +65 -0
  2494. package/payload/platform/templates/specialists/agents/data-manager.md +29 -0
  2495. package/payload/platform/templates/specialists/agents/database-operator.md +25 -0
  2496. package/payload/platform/templates/specialists/agents/librarian.md +70 -0
  2497. package/payload/platform/templates/specialists/agents/personal-assistant.md +62 -0
  2498. package/payload/platform/templates/specialists/agents/project-manager.md +63 -0
  2499. package/payload/platform/templates/specialists/agents/public-session-reviewer.md +40 -0
  2500. package/payload/platform/templates/specialists/agents/research-assistant.md +73 -0
  2501. package/payload/platform/templates/specialists/agents/typed-edge-classifier.md +37 -0
  2502. package/payload/platform/templates/systemd/edge.service.template +38 -0
  2503. package/payload/platform/tsconfig.base.json +18 -0
  2504. package/payload/premium-plugins/.claude-plugin/marketplace.json +28 -0
  2505. package/payload/premium-plugins/sitedesk/.claude-plugin/plugin.json +8 -0
  2506. package/payload/premium-plugins/sitedesk/BUNDLE.md +35 -0
  2507. package/payload/premium-plugins/sitedesk/PLUGIN.md +18 -0
  2508. package/payload/premium-plugins/sitedesk/agents/sitedesk--site-manager.md +45 -0
  2509. package/payload/premium-plugins/sitedesk/agents/worker-checkin/IDENTITY.md +11 -0
  2510. package/payload/premium-plugins/sitedesk/agents/worker-checkin/SOUL.md +7 -0
  2511. package/payload/premium-plugins/sitedesk/agents/worker-checkin/template.json +9 -0
  2512. package/payload/premium-plugins/sitedesk/plugins/.claude-plugin/marketplace.json +18 -0
  2513. package/payload/premium-plugins/sitedesk/plugins/sitedesk-job/.claude-plugin/plugin.json +8 -0
  2514. package/payload/premium-plugins/sitedesk/plugins/sitedesk-job/PLUGIN.md +46 -0
  2515. package/payload/premium-plugins/sitedesk/plugins/sitedesk-job/skills/quotation/SKILL.md +79 -0
  2516. package/payload/premium-plugins/sitedesk/plugins/sitedesk-job/skills/quotation/references/learning-from-history.md +51 -0
  2517. package/payload/premium-plugins/sitedesk/plugins/sitedesk-job/skills/quotation/references/maintenance.md +32 -0
  2518. package/payload/premium-plugins/sitedesk/plugins/sitedesk-job/skills/quotation/references/manual-definition.md +42 -0
  2519. package/payload/premium-plugins/sitedesk/plugins/sitedesk-job/skills/quotation/references/quote-engine.md +122 -0
  2520. package/payload/premium-plugins/sitedesk/plugins/sitedesk-job/skills/quotation/references/quote-generation.md +110 -0
  2521. package/payload/premium-plugins/sitedesk/plugins/sitedesk-job/skills/quotation/references/quoting.md +86 -0
  2522. package/payload/premium-plugins/sitedesk/plugins/sitedesk-job/skills/quotation/references/verification.md +39 -0
  2523. package/payload/premium-plugins/sitedesk/plugins/sitedesk-job/skills/timesheet/SKILL.md +47 -0
  2524. package/payload/premium-plugins/sitedesk/plugins/sitedesk-job/skills/timesheet/references/checkin-contract.md +31 -0
  2525. package/payload/premium-plugins/sitedesk/plugins/sitedesk-job/skills/timesheet/references/documents.md +28 -0
  2526. package/payload/premium-plugins/sitedesk/plugins/sitedesk-job/skills/timesheet/references/roll-up.md +38 -0
  2527. package/payload/premium-plugins/sitedesk/plugins/sitedesk-job/skills/timesheet/references/setup.md +20 -0
  2528. package/payload/premium-plugins/sitedesk/plugins/sitedesk-job/skills/timesheet/rollup.mjs +90 -0
  2529. package/payload/premium-plugins/sitedesk/plugins/sitedesk-job/skills/timesheet/rollup.test.mjs +106 -0
  2530. package/payload/premium-plugins/sitedesk/plugins/sitedesk-job/skills/valuation/SKILL.md +108 -0
  2531. package/payload/premium-plugins/sitedesk/plugins/sitedesk-job/skills/valuation/references/contract-template.md +34 -0
  2532. package/payload/premium-plugins/sitedesk/plugins/sitedesk-job/skills/valuation/references/document-learning.md +63 -0
  2533. package/payload/premium-plugins/sitedesk/plugins/sitedesk-job/skills/valuation/references/document-verification.md +52 -0
  2534. package/payload/premium-plugins/sitedesk/plugins/sitedesk-job/skills/valuation/references/document.md +108 -0
  2535. package/payload/premium-plugins/sitedesk/plugins/sitedesk-job/skills/valuation/references/issue-flow.md +117 -0
  2536. package/payload/premium-plugins/sitedesk/plugins/sitedesk-job/skills/valuation/references/job-folder.md +91 -0
  2537. package/payload/premium-plugins/sitedesk/plugins/sitedesk-job/skills/valuation/references/roll-up.md +73 -0
  2538. package/payload/premium-plugins/sitedesk/plugins/sitedesk-job/skills/valuation/rollup.mjs +147 -0
  2539. package/payload/premium-plugins/sitedesk/plugins/sitedesk-media/.claude-plugin/plugin.json +8 -0
  2540. package/payload/premium-plugins/sitedesk/plugins/sitedesk-media/PLUGIN.md +49 -0
  2541. package/payload/premium-plugins/sitedesk/plugins/sitedesk-media/README.md +70 -0
  2542. package/payload/premium-plugins/sitedesk/plugins/sitedesk-media/commands/make-media.md +13 -0
  2543. package/payload/premium-plugins/sitedesk/plugins/sitedesk-media/skills/brand-extract/SKILL.md +86 -0
  2544. package/payload/premium-plugins/sitedesk/plugins/sitedesk-media/skills/make-media/SKILL.md +75 -0
  2545. package/payload/premium-plugins/sitedesk/plugins/sitedesk-media/skills/make-media/references/intake-and-questions.md +74 -0
  2546. package/payload/premium-plugins/sitedesk/plugins/sitedesk-media/skills/microsite/SKILL.md +88 -0
  2547. package/payload/premium-plugins/sitedesk/plugins/sitedesk-media/skills/microsite/references/placeholders.md +96 -0
  2548. package/payload/premium-plugins/sitedesk/plugins/sitedesk-media/skills/microsite/references/sections.md +48 -0
  2549. package/payload/premium-plugins/sitedesk/plugins/sitedesk-media/skills/microsite/templates/index.html +1004 -0
  2550. package/payload/premium-plugins/sitedesk/plugins/sitedesk-media/skills/microsite/templates/llms.txt +32 -0
  2551. package/payload/premium-plugins/sitedesk/plugins/sitedesk-media/skills/socials/SKILL.md +133 -0
  2552. package/payload/premium-plugins/sitedesk/plugins/sitedesk-media/skills/socials/references/pii-strip.md +64 -0
  2553. package/payload/premium-plugins/sitedesk/plugins/sitedesk-media/skills/socials/references/sources.md +96 -0
  2554. package/payload/premium-plugins/sitedesk/plugins/sitedesk-media/skills/socials/templates/og.html +92 -0
  2555. package/payload/premium-plugins/sitedesk/plugins/sitedesk-media/skills/socials/templates/social-posts.md +47 -0
  2556. package/payload/premium-plugins/sitedesk/plugins/sitedesk-media/skills/socials/templates/socials.html +87 -0
  2557. package/payload/premium-plugins/teaching/.claude-plugin/plugin.json +8 -0
  2558. package/payload/premium-plugins/teaching/PLUGIN.md +58 -0
  2559. package/payload/premium-plugins/teaching/skills/interactive-tutor/SKILL.md +59 -0
  2560. package/payload/premium-plugins/teaching/skills/interactive-tutor/references/assessment.md +70 -0
  2561. package/payload/premium-plugins/teaching/skills/interactive-tutor/references/classroom-conduct.md +43 -0
  2562. package/payload/premium-plugins/teaching/skills/interactive-tutor/references/teaching-modes.md +83 -0
  2563. package/payload/premium-plugins/teaching/skills/lesson-planner/SKILL.md +48 -0
  2564. package/payload/premium-plugins/teaching/skills/lesson-planner/references/context-gathering.md +41 -0
  2565. package/payload/premium-plugins/teaching/skills/lesson-planner/references/plan-structure.md +94 -0
  2566. package/payload/premium-plugins/teaching/skills/study-pack-builder/SKILL.md +52 -0
  2567. package/payload/premium-plugins/teaching/skills/study-pack-builder/references/disaggregation.md +49 -0
  2568. package/payload/premium-plugins/teaching/skills/study-pack-builder/references/materials.md +116 -0
  2569. package/payload/premium-plugins/venture-studio/.claude-plugin/plugin.json +8 -0
  2570. package/payload/premium-plugins/venture-studio/PLUGIN.md +128 -0
  2571. package/payload/premium-plugins/venture-studio/bin/scaffold.sh +116 -0
  2572. package/payload/premium-plugins/venture-studio/skills/brand-pack/SKILL.md +256 -0
  2573. package/payload/premium-plugins/venture-studio/skills/brand-pack/references/color-psychology.md +118 -0
  2574. package/payload/premium-plugins/venture-studio/skills/investor-data-room/SKILL.md +390 -0
  2575. package/payload/premium-plugins/venture-studio/skills/investor-data-room/references/business-plan-template.md +64 -0
  2576. package/payload/premium-plugins/venture-studio/skills/investor-data-room/references/competitive-battlecard.md +37 -0
  2577. package/payload/premium-plugins/venture-studio/skills/investor-data-room/references/competitor-analysis.md +32 -0
  2578. package/payload/premium-plugins/venture-studio/skills/investor-data-room/references/compliance-research-checklist.md +53 -0
  2579. package/payload/premium-plugins/venture-studio/skills/investor-data-room/references/data-room-structure.md +88 -0
  2580. package/payload/premium-plugins/venture-studio/skills/investor-data-room/references/deck-blueprint-template.md +39 -0
  2581. package/payload/premium-plugins/venture-studio/skills/investor-data-room/references/design-tokens-application.md +79 -0
  2582. package/payload/premium-plugins/venture-studio/skills/investor-data-room/references/html-pdf-pipeline.md +236 -0
  2583. package/payload/premium-plugins/venture-studio/skills/investor-data-room/references/internal-workings-scrub.md +33 -0
  2584. package/payload/premium-plugins/venture-studio/skills/investor-data-room/references/monetization-strategy.md +35 -0
  2585. package/payload/premium-plugins/venture-studio/skills/investor-data-room/references/pricing-strategy.md +37 -0
  2586. package/payload/premium-plugins/venture-studio/skills/investor-data-room/references/strategy-frameworks.md +46 -0
  2587. package/payload/premium-plugins/venture-studio/skills/investor-data-room/references/termsheet-template.md +88 -0
  2588. package/payload/premium-plugins/venture-studio/skills/investor-data-room/templates/prospectus/index.html +1565 -0
  2589. package/payload/premium-plugins/venture-studio/skills/investor-data-room/templates/prospectus/render-pdf.mjs +91 -0
  2590. package/payload/premium-plugins/venture-studio/skills/investor-data-room/templates/prospectus/term_sheet.html +715 -0
  2591. package/payload/premium-plugins/venture-studio/skills/legal-essentials/SKILL.md +65 -0
  2592. package/payload/premium-plugins/venture-studio/skills/office-hours/SKILL.md +587 -0
  2593. package/payload/premium-plugins/venture-studio/skills/prototype-host/SKILL.md +179 -0
  2594. package/payload/premium-plugins/venture-studio/skills/prototype-host/references/cloudflared-ingress-edit.md +81 -0
  2595. package/payload/premium-plugins/venture-studio/skills/prototype-host/references/scaffold-frameworks.md +60 -0
  2596. package/payload/premium-plugins/venture-studio/skills/prototype-host/references/systemd-user-service.md +104 -0
  2597. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/SKILL.md +342 -0
  2598. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/aarrr-metrics.md +275 -0
  2599. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/assumption-testing.md +93 -0
  2600. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/boolean-search.md +308 -0
  2601. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/build-measure-learn.md +262 -0
  2602. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/business-model-canvas.md +171 -0
  2603. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/commitment-signals.md +246 -0
  2604. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/design-thinking.md +183 -0
  2605. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/earlyvangelist.md +190 -0
  2606. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/first-principles.md +58 -0
  2607. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/fishbone.md +114 -0
  2608. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/five-whys.md +43 -0
  2609. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/ice-scoring.md +237 -0
  2610. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/innovation-accounting.md +290 -0
  2611. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/jtbd.md +105 -0
  2612. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/landing-page.md +361 -0
  2613. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/market-sizing.md +58 -0
  2614. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/market-type.md +167 -0
  2615. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/mom-test.md +193 -0
  2616. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/mvp-types.md +200 -0
  2617. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/og-images.md +239 -0
  2618. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/pareto.md +103 -0
  2619. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/persona-development.md +291 -0
  2620. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/pivot-types.md +225 -0
  2621. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/positioning-statement.md +179 -0
  2622. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/prd.md +363 -0
  2623. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/pre-mortem.md +74 -0
  2624. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/problem-validation.md +253 -0
  2625. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/product-market-fit.md +256 -0
  2626. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/research-synthesis.md +276 -0
  2627. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/strategy-red-team.md +41 -0
  2628. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/three-engines-of-growth.md +248 -0
  2629. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/validation-tests.md +89 -0
  2630. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/value-proposition-canvas.md +121 -0
  2631. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/win-loss-analysis.md +242 -0
  2632. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/workflow-mapping.md +271 -0
  2633. package/payload/premium-plugins/writer-craft/.claude-plugin/plugin.json +21 -0
  2634. package/payload/premium-plugins/writer-craft/PLUGIN.md +134 -0
  2635. package/payload/premium-plugins/writer-craft/agents/writer-craft--manuscript-reviewer.md +96 -0
  2636. package/payload/premium-plugins/writer-craft/lib/mcp-lifeline/dist/index.d.ts +8 -0
  2637. package/payload/premium-plugins/writer-craft/lib/mcp-lifeline/dist/index.d.ts.map +1 -0
  2638. package/payload/premium-plugins/writer-craft/lib/mcp-lifeline/dist/index.js +71 -0
  2639. package/payload/premium-plugins/writer-craft/lib/mcp-lifeline/dist/index.js.map +1 -0
  2640. package/payload/premium-plugins/writer-craft/lib/mcp-lifeline/package.json +7 -0
  2641. package/payload/premium-plugins/writer-craft/lib/mcp-spawn-tee/index.js +193 -0
  2642. package/payload/premium-plugins/writer-craft/lib/mcp-spawn-tee/package.json +3 -0
  2643. package/payload/premium-plugins/writer-craft/lib/mcp-stderr-tee/dist/index.d.ts +51 -0
  2644. package/payload/premium-plugins/writer-craft/lib/mcp-stderr-tee/dist/index.d.ts.map +1 -0
  2645. package/payload/premium-plugins/writer-craft/lib/mcp-stderr-tee/dist/index.js +196 -0
  2646. package/payload/premium-plugins/writer-craft/lib/mcp-stderr-tee/dist/index.js.map +1 -0
  2647. package/payload/premium-plugins/writer-craft/lib/mcp-stderr-tee/package.json +7 -0
  2648. package/payload/premium-plugins/writer-craft/mcp/dist/cli/ingest-session-text.d.ts +3 -0
  2649. package/payload/premium-plugins/writer-craft/mcp/dist/cli/ingest-session-text.d.ts.map +1 -0
  2650. package/payload/premium-plugins/writer-craft/mcp/dist/cli/ingest-session-text.js +58 -0
  2651. package/payload/premium-plugins/writer-craft/mcp/dist/cli/ingest-session-text.js.map +1 -0
  2652. package/payload/premium-plugins/writer-craft/mcp/dist/index.d.ts +3 -0
  2653. package/payload/premium-plugins/writer-craft/mcp/dist/index.d.ts.map +1 -0
  2654. package/payload/premium-plugins/writer-craft/mcp/dist/index.js +403 -0
  2655. package/payload/premium-plugins/writer-craft/mcp/dist/index.js.map +1 -0
  2656. package/payload/premium-plugins/writer-craft/mcp/dist/lib/neo4j.d.ts +14 -0
  2657. package/payload/premium-plugins/writer-craft/mcp/dist/lib/neo4j.d.ts.map +1 -0
  2658. package/payload/premium-plugins/writer-craft/mcp/dist/lib/neo4j.js +47 -0
  2659. package/payload/premium-plugins/writer-craft/mcp/dist/lib/neo4j.js.map +1 -0
  2660. package/payload/premium-plugins/writer-craft/mcp/dist/lib/voice-corpus.d.ts +117 -0
  2661. package/payload/premium-plugins/writer-craft/mcp/dist/lib/voice-corpus.d.ts.map +1 -0
  2662. package/payload/premium-plugins/writer-craft/mcp/dist/lib/voice-corpus.js +138 -0
  2663. package/payload/premium-plugins/writer-craft/mcp/dist/lib/voice-corpus.js.map +1 -0
  2664. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-distil-profile.d.ts +90 -0
  2665. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-distil-profile.d.ts.map +1 -0
  2666. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-distil-profile.js +609 -0
  2667. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-distil-profile.js.map +1 -0
  2668. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-ingest-session-text.d.ts +19 -0
  2669. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-ingest-session-text.d.ts.map +1 -0
  2670. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-ingest-session-text.js +124 -0
  2671. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-ingest-session-text.js.map +1 -0
  2672. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-record-feedback.d.ts +38 -0
  2673. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-record-feedback.d.ts.map +1 -0
  2674. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-record-feedback.js +93 -0
  2675. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-record-feedback.js.map +1 -0
  2676. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-retrieve-conditioning.d.ts +61 -0
  2677. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-retrieve-conditioning.d.ts.map +1 -0
  2678. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-retrieve-conditioning.js +171 -0
  2679. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-retrieve-conditioning.js.map +1 -0
  2680. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-tag-content.d.ts +35 -0
  2681. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-tag-content.d.ts.map +1 -0
  2682. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-tag-content.js +127 -0
  2683. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-tag-content.js.map +1 -0
  2684. package/payload/premium-plugins/writer-craft/mcp/package-lock.json +1327 -0
  2685. package/payload/premium-plugins/writer-craft/mcp/package.json +19 -0
  2686. package/payload/premium-plugins/writer-craft/mcp/scripts/smoke.mjs +420 -0
  2687. package/payload/premium-plugins/writer-craft/mcp/src/index.ts +457 -0
  2688. package/payload/premium-plugins/writer-craft/mcp/src/lib/neo4j.ts +56 -0
  2689. package/payload/premium-plugins/writer-craft/mcp/src/lib/voice-corpus.ts +154 -0
  2690. package/payload/premium-plugins/writer-craft/mcp/src/tools/voice-distil-profile.ts +833 -0
  2691. package/payload/premium-plugins/writer-craft/mcp/src/tools/voice-ingest-session-text.ts +153 -0
  2692. package/payload/premium-plugins/writer-craft/mcp/src/tools/voice-record-feedback.ts +148 -0
  2693. package/payload/premium-plugins/writer-craft/mcp/src/tools/voice-retrieve-conditioning.ts +270 -0
  2694. package/payload/premium-plugins/writer-craft/mcp/src/tools/voice-tag-content.ts +181 -0
  2695. package/payload/premium-plugins/writer-craft/mcp/tsconfig.json +8 -0
  2696. package/payload/premium-plugins/writer-craft/skills/citation-style/SKILL.md +94 -0
  2697. package/payload/premium-plugins/writer-craft/skills/citation-style/references/book-and-chapter-models.md +77 -0
  2698. package/payload/premium-plugins/writer-craft/skills/citation-style/references/citation-rules.md +103 -0
  2699. package/payload/premium-plugins/writer-craft/skills/citation-style/references/journal-article-models.md +74 -0
  2700. package/payload/premium-plugins/writer-craft/skills/citation-style/references/other-source-models.md +146 -0
  2701. package/payload/premium-plugins/writer-craft/skills/citation-style/references/reference-list-rules.md +70 -0
  2702. package/payload/premium-plugins/writer-craft/skills/editorial-practice/SKILL.md +108 -0
  2703. package/payload/premium-plugins/writer-craft/skills/editorial-practice/references/copyediting.md +73 -0
  2704. package/payload/premium-plugins/writer-craft/skills/editorial-practice/references/developmental-editing.md +85 -0
  2705. package/payload/premium-plugins/writer-craft/skills/editorial-practice/references/genre-specific-editing.md +78 -0
  2706. package/payload/premium-plugins/writer-craft/skills/editorial-practice/references/line-editing.md +55 -0
  2707. package/payload/premium-plugins/writer-craft/skills/editorial-practice/references/self-editing.md +89 -0
  2708. package/payload/premium-plugins/writer-craft/skills/persuasive-storytelling/SKILL.md +114 -0
  2709. package/payload/premium-plugins/writer-craft/skills/persuasive-storytelling/references/audience-analysis.md +73 -0
  2710. package/payload/premium-plugins/writer-craft/skills/persuasive-storytelling/references/crafting-persuasive-story.md +76 -0
  2711. package/payload/premium-plugins/writer-craft/skills/persuasive-storytelling/references/persuasion-case-studies.md +67 -0
  2712. package/payload/premium-plugins/writer-craft/skills/persuasive-storytelling/references/transformation-framework.md +86 -0
  2713. package/payload/premium-plugins/writer-craft/skills/point-of-view/SKILL.md +97 -0
  2714. package/payload/premium-plugins/writer-craft/skills/point-of-view/references/indirect-narration.md +72 -0
  2715. package/payload/premium-plugins/writer-craft/skills/point-of-view/references/pov-types-and-voice.md +91 -0
  2716. package/payload/premium-plugins/writer-craft/skills/point-of-view/references/protagonist-filter.md +71 -0
  2717. package/payload/premium-plugins/writer-craft/skills/point-of-view/references/tense-and-person.md +85 -0
  2718. package/payload/premium-plugins/writer-craft/skills/prose-craft/SKILL.md +100 -0
  2719. package/payload/premium-plugins/writer-craft/skills/prose-craft/references/punctuation-and-grammar.md +72 -0
  2720. package/payload/premium-plugins/writer-craft/skills/prose-craft/references/repetition.md +71 -0
  2721. package/payload/premium-plugins/writer-craft/skills/prose-craft/references/sound-and-rhythm.md +64 -0
  2722. package/payload/premium-plugins/writer-craft/skills/prose-craft/references/word-economy.md +93 -0
  2723. package/payload/premium-plugins/writer-craft/skills/reader-engagement/SKILL.md +100 -0
  2724. package/payload/premium-plugins/writer-craft/skills/reader-engagement/references/cause-effect-setup-payoff.md +79 -0
  2725. package/payload/premium-plugins/writer-craft/skills/reader-engagement/references/conflict-escalation.md +81 -0
  2726. package/payload/premium-plugins/writer-craft/skills/reader-engagement/references/hooking-readers.md +67 -0
  2727. package/payload/premium-plugins/writer-craft/skills/reader-engagement/references/neurochemistry-of-engagement.md +94 -0
  2728. package/payload/premium-plugins/writer-craft/skills/review-manuscript/SKILL.md +111 -0
  2729. package/payload/premium-plugins/writer-craft/skills/review-manuscript/references/review-manuscript-checklist.md +119 -0
  2730. package/payload/premium-plugins/writer-craft/skills/review-prose/SKILL.md +99 -0
  2731. package/payload/premium-plugins/writer-craft/skills/review-prose/references/prose-review-checklist.md +112 -0
  2732. package/payload/premium-plugins/writer-craft/skills/review-scene/SKILL.md +99 -0
  2733. package/payload/premium-plugins/writer-craft/skills/review-scene/references/scene-analysis-framework.md +95 -0
  2734. package/payload/premium-plugins/writer-craft/skills/story-architecture/SKILL.md +106 -0
  2735. package/payload/premium-plugins/writer-craft/skills/story-architecture/references/blueprinting-and-scene-cards.md +118 -0
  2736. package/payload/premium-plugins/writer-craft/skills/story-architecture/references/inner-issue-and-protagonist-goal.md +66 -0
  2737. package/payload/premium-plugins/writer-craft/skills/story-architecture/references/misbelief-desire-worldview.md +87 -0
  2738. package/payload/premium-plugins/writer-craft/skills/story-architecture/references/origin-scenes-and-escalation.md +82 -0
  2739. package/payload/premium-plugins/writer-craft/skills/story-blueprint/SKILL.md +133 -0
  2740. package/payload/premium-plugins/writer-craft/skills/story-blueprint/references/blueprinting-exercises.md +118 -0
  2741. package/payload/premium-plugins/writer-craft/skills/story-blueprint/references/blueprinting-process.md +128 -0
  2742. package/payload/premium-plugins/writer-craft/skills/voice-mirror/SKILL.md +241 -0
  2743. package/payload/server/adminuser-self-heal-LC7HZAC6.js +54 -0
  2744. package/payload/server/chunk-NE7G5GT7.js +5807 -0
  2745. package/payload/server/chunk-PFF6I7KP.js +31 -0
  2746. package/payload/server/maxy-edge.js +832 -0
  2747. package/payload/server/package.json +11 -0
  2748. package/payload/server/power-health.cjs +129 -0
  2749. package/payload/server/public/assets/AdminLoginScreens-CHTeh_Vu.js +1 -0
  2750. package/payload/server/public/assets/AdminLoginScreens-CWMpccrR.css +1 -0
  2751. package/payload/server/public/assets/AdminShell-DjoP7YoA.js +1 -0
  2752. package/payload/server/public/assets/Checkbox-D58GsKoQ.js +1 -0
  2753. package/payload/server/public/assets/OperatorConversations-CDdp2nVn.css +1 -0
  2754. package/payload/server/public/assets/OperatorConversations-RmqANYz8.js +9 -0
  2755. package/payload/server/public/assets/_baseFor-DVaNaTfF.js +1 -0
  2756. package/payload/server/public/assets/admin-LGICBqil.js +1 -0
  2757. package/payload/server/public/assets/admin-types-CJrGd46U.js +1 -0
  2758. package/payload/server/public/assets/arc-CxLB9WCE.js +1 -0
  2759. package/payload/server/public/assets/architecture-YZFGNWBL-DN-MYxff.js +1 -0
  2760. package/payload/server/public/assets/architectureDiagram-Q4EWVU46-D-EdJPSY.js +36 -0
  2761. package/payload/server/public/assets/array-8_H1156C.js +1 -0
  2762. package/payload/server/public/assets/blockDiagram-DXYQGD6D-CXx9RgCm.js +132 -0
  2763. package/payload/server/public/assets/browser-CRgweVtw.js +1 -0
  2764. package/payload/server/public/assets/c4Diagram-AHTNJAMY-RFBXEe0B.js +10 -0
  2765. package/payload/server/public/assets/channel-y27xl53N.js +1 -0
  2766. package/payload/server/public/assets/chat-CXPRTVW7.js +1 -0
  2767. package/payload/server/public/assets/chunk-2KRD3SAO-DBqAFwK9.js +1 -0
  2768. package/payload/server/public/assets/chunk-336JU56O-DdnFEz6R.js +2 -0
  2769. package/payload/server/public/assets/chunk-426QAEUC-D8Iwaegm.js +1 -0
  2770. package/payload/server/public/assets/chunk-4BX2VUAB-cnw-3Gbs.js +1 -0
  2771. package/payload/server/public/assets/chunk-4TB4RGXK-BnqJ0bDc.js +206 -0
  2772. package/payload/server/public/assets/chunk-55IACEB6-BwyHvvzo.js +1 -0
  2773. package/payload/server/public/assets/chunk-5FUZZQ4R-DXA9U02I.js +62 -0
  2774. package/payload/server/public/assets/chunk-5PVQY5BW-D78bZ_8D.js +2 -0
  2775. package/payload/server/public/assets/chunk-67CJDMHE-CtE_Mgv7.js +1 -0
  2776. package/payload/server/public/assets/chunk-7N4EOEYR-CUZDaySl.js +1 -0
  2777. package/payload/server/public/assets/chunk-AA7GKIK3-CYQ3jO4X.js +1 -0
  2778. package/payload/server/public/assets/chunk-BSJP7CBP-BbA_HyTR.js +1 -0
  2779. package/payload/server/public/assets/chunk-CIAEETIT-D7_YqRhG.js +1 -0
  2780. package/payload/server/public/assets/chunk-EDXVE4YY-B23LrtSw.js +1 -0
  2781. package/payload/server/public/assets/chunk-ENJZ2VHE-D3fTHYKN.js +10 -0
  2782. package/payload/server/public/assets/chunk-FMBD7UC4-DFAA2tyh.js +15 -0
  2783. package/payload/server/public/assets/chunk-FOC6F5B3-BF4IHvlI.js +1 -0
  2784. package/payload/server/public/assets/chunk-ICPOFSXX-DBUGemHy.js +122 -0
  2785. package/payload/server/public/assets/chunk-K5T4RW27-rMMs08Eh.js +94 -0
  2786. package/payload/server/public/assets/chunk-KGLVRYIC-BD2r8R2G.js +1 -0
  2787. package/payload/server/public/assets/chunk-LIHQZDEY-D4sYTTwM.js +1 -0
  2788. package/payload/server/public/assets/chunk-ORNJ4GCN-CAs_uFzb.js +1 -0
  2789. package/payload/server/public/assets/chunk-OYMX7WX6-Fkp-2ORc.js +231 -0
  2790. package/payload/server/public/assets/chunk-Pqm5yXtL.js +1 -0
  2791. package/payload/server/public/assets/chunk-QZHKN3VN-qHqDpwz3.js +1 -0
  2792. package/payload/server/public/assets/chunk-U2HBQHQK-D_pxZh25.js +70 -0
  2793. package/payload/server/public/assets/chunk-X2U36JSP-CeVmvvRf.js +1 -0
  2794. package/payload/server/public/assets/chunk-XPW4576I-iWP54fKp.js +32 -0
  2795. package/payload/server/public/assets/chunk-YZCP3GAM-CNtbWJNN.js +1 -0
  2796. package/payload/server/public/assets/chunk-ZZ45TVLE-BmlFjU_9.js +1 -0
  2797. package/payload/server/public/assets/classDiagram-6PBFFD2Q-DgVoYWhO.js +1 -0
  2798. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-C0WNP3uN.js +1 -0
  2799. package/payload/server/public/assets/clone-D50F_pvg.js +1 -0
  2800. package/payload/server/public/assets/cormorant-cyrillic-300-normal-CzPHYadL.woff +0 -0
  2801. package/payload/server/public/assets/cormorant-cyrillic-300-normal-DFUoTmrg.woff2 +0 -0
  2802. package/payload/server/public/assets/cormorant-cyrillic-400-normal-C8QS47vb.woff2 +0 -0
  2803. package/payload/server/public/assets/cormorant-cyrillic-400-normal-D3EsxgFc.woff +0 -0
  2804. package/payload/server/public/assets/cormorant-cyrillic-500-normal-B7dJQtg-.woff +0 -0
  2805. package/payload/server/public/assets/cormorant-cyrillic-500-normal-BLlg2W5x.woff2 +0 -0
  2806. package/payload/server/public/assets/cormorant-cyrillic-ext-300-normal-BXl3lXsi.woff2 +0 -0
  2807. package/payload/server/public/assets/cormorant-cyrillic-ext-300-normal-DmxSOTe3.woff +0 -0
  2808. package/payload/server/public/assets/cormorant-cyrillic-ext-400-normal-Bgrpe4p1.woff +0 -0
  2809. package/payload/server/public/assets/cormorant-cyrillic-ext-400-normal-BlcaxZtM.woff2 +0 -0
  2810. package/payload/server/public/assets/cormorant-cyrillic-ext-500-normal-CdQuyvtc.woff +0 -0
  2811. package/payload/server/public/assets/cormorant-cyrillic-ext-500-normal-pZw22qtS.woff2 +0 -0
  2812. package/payload/server/public/assets/cormorant-latin-300-normal-CJ5dfen0.woff2 +0 -0
  2813. package/payload/server/public/assets/cormorant-latin-300-normal-DQZObO_3.woff +0 -0
  2814. package/payload/server/public/assets/cormorant-latin-400-normal-BGH8Vunh.woff2 +0 -0
  2815. package/payload/server/public/assets/cormorant-latin-400-normal-C3_-2Ua-.woff +0 -0
  2816. package/payload/server/public/assets/cormorant-latin-500-normal-Dj3SQ6fR.woff +0 -0
  2817. package/payload/server/public/assets/cormorant-latin-500-normal-EBdSCOD3.woff2 +0 -0
  2818. package/payload/server/public/assets/cormorant-latin-ext-300-normal-CkiUx0UG.woff +0 -0
  2819. package/payload/server/public/assets/cormorant-latin-ext-300-normal-De3D72RL.woff2 +0 -0
  2820. package/payload/server/public/assets/cormorant-latin-ext-400-normal-DuQ88yz3.woff2 +0 -0
  2821. package/payload/server/public/assets/cormorant-latin-ext-400-normal-DuXFa1Dr.woff +0 -0
  2822. package/payload/server/public/assets/cormorant-latin-ext-500-normal-AH9qog1s.woff2 +0 -0
  2823. package/payload/server/public/assets/cormorant-latin-ext-500-normal-DAuUCO41.woff +0 -0
  2824. package/payload/server/public/assets/cormorant-vietnamese-300-normal-BVqIp_mg.woff2 +0 -0
  2825. package/payload/server/public/assets/cormorant-vietnamese-300-normal-CEMS9Pw-.woff +0 -0
  2826. package/payload/server/public/assets/cormorant-vietnamese-400-normal-C-RiYxEf.woff2 +0 -0
  2827. package/payload/server/public/assets/cormorant-vietnamese-400-normal-DmUuA7Y2.woff +0 -0
  2828. package/payload/server/public/assets/cormorant-vietnamese-500-normal-DsPuwQHi.woff2 +0 -0
  2829. package/payload/server/public/assets/cormorant-vietnamese-500-normal-tGBW_mI7.woff +0 -0
  2830. package/payload/server/public/assets/cose-bilkent-S5V4N54A-C7YmF1Pg.js +1 -0
  2831. package/payload/server/public/assets/cytoscape.esm-h10p_6j-.js +321 -0
  2832. package/payload/server/public/assets/dagre-BAmiDDtR.js +1 -0
  2833. package/payload/server/public/assets/dagre-KV5264BT-Ca3ESJhc.js +4 -0
  2834. package/payload/server/public/assets/data-CttrzhfL.js +1 -0
  2835. package/payload/server/public/assets/defaultLocale-pD7tFa1r.js +1 -0
  2836. package/payload/server/public/assets/diagram-5BDNPKRD-BgT1ORf2.js +10 -0
  2837. package/payload/server/public/assets/diagram-G4DWMVQ6-BTaUIiem.js +24 -0
  2838. package/payload/server/public/assets/diagram-MMDJMWI5-Bdb2g6Uo.js +43 -0
  2839. package/payload/server/public/assets/diagram-TYMM5635-CkLGC0zZ.js +24 -0
  2840. package/payload/server/public/assets/dist-Bkbhs3jw.js +1 -0
  2841. package/payload/server/public/assets/dm-sans-latin-400-normal-BwCSEQnW.woff +0 -0
  2842. package/payload/server/public/assets/dm-sans-latin-400-normal-CW0RaeGs.woff2 +0 -0
  2843. package/payload/server/public/assets/dm-sans-latin-500-normal-B9HHJjqV.woff2 +0 -0
  2844. package/payload/server/public/assets/dm-sans-latin-500-normal-Dr3UlScf.woff +0 -0
  2845. package/payload/server/public/assets/dm-sans-latin-ext-400-normal-BjWJ59Pq.woff +0 -0
  2846. package/payload/server/public/assets/dm-sans-latin-ext-400-normal-BtiwyxMk.woff2 +0 -0
  2847. package/payload/server/public/assets/dm-sans-latin-ext-500-normal-BJfUCQsA.woff2 +0 -0
  2848. package/payload/server/public/assets/dm-sans-latin-ext-500-normal-DR84L5F-.woff +0 -0
  2849. package/payload/server/public/assets/erDiagram-SMLLAGMA-D_sj4DMg.js +85 -0
  2850. package/payload/server/public/assets/flatten-E2Sr0FeD.js +1 -0
  2851. package/payload/server/public/assets/flowDiagram-DWJPFMVM-iLERoZTe.js +162 -0
  2852. package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-D60hjMBy.js +292 -0
  2853. package/payload/server/public/assets/gitGraph-7Q5UKJZL-D-L2yzYf.js +1 -0
  2854. package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-Di0XM6fi.js +106 -0
  2855. package/payload/server/public/assets/graph-CIBba84R.js +51 -0
  2856. package/payload/server/public/assets/graph-labels-Bi0fu8Ns.js +1 -0
  2857. package/payload/server/public/assets/graphlib-C8fUP7uV.js +1 -0
  2858. package/payload/server/public/assets/info-OMHHGYJF-BQn6jndO.js +1 -0
  2859. package/payload/server/public/assets/infoDiagram-42DDH7IO-BwMdbiXg.js +2 -0
  2860. package/payload/server/public/assets/init-CwJ4b81e.js +1 -0
  2861. package/payload/server/public/assets/isEmpty-CLz-UprQ.js +1 -0
  2862. package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-CwgI4B5Z.js +70 -0
  2863. package/payload/server/public/assets/jetbrains-mono-cyrillic-400-normal-BEIGL1Tu.woff2 +0 -0
  2864. package/payload/server/public/assets/jetbrains-mono-cyrillic-400-normal-ugxPyKxw.woff +0 -0
  2865. package/payload/server/public/assets/jetbrains-mono-cyrillic-500-normal-DJqRU3vO.woff +0 -0
  2866. package/payload/server/public/assets/jetbrains-mono-cyrillic-500-normal-DmUKJPL_.woff2 +0 -0
  2867. package/payload/server/public/assets/jetbrains-mono-greek-400-normal-B9oWc5Lo.woff +0 -0
  2868. package/payload/server/public/assets/jetbrains-mono-greek-400-normal-C190GLew.woff2 +0 -0
  2869. package/payload/server/public/assets/jetbrains-mono-greek-500-normal-D7SFKleX.woff +0 -0
  2870. package/payload/server/public/assets/jetbrains-mono-greek-500-normal-JpySY46c.woff2 +0 -0
  2871. package/payload/server/public/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff +0 -0
  2872. package/payload/server/public/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2 +0 -0
  2873. package/payload/server/public/assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2 +0 -0
  2874. package/payload/server/public/assets/jetbrains-mono-latin-500-normal-CJOVTJB7.woff +0 -0
  2875. package/payload/server/public/assets/jetbrains-mono-latin-ext-400-normal-Bc8Ftmh3.woff2 +0 -0
  2876. package/payload/server/public/assets/jetbrains-mono-latin-ext-400-normal-fXTG6kC5.woff +0 -0
  2877. package/payload/server/public/assets/jetbrains-mono-latin-ext-500-normal-Cut-4mMH.woff2 +0 -0
  2878. package/payload/server/public/assets/jetbrains-mono-latin-ext-500-normal-ckzbgY84.woff +0 -0
  2879. package/payload/server/public/assets/jetbrains-mono-vietnamese-400-normal-CqNFfHCs.woff +0 -0
  2880. package/payload/server/public/assets/jetbrains-mono-vietnamese-500-normal-DNRqzVM1.woff +0 -0
  2881. package/payload/server/public/assets/journeyDiagram-VCZTEJTY-CxBu-tze.js +139 -0
  2882. package/payload/server/public/assets/kanban-definition-6JOO6SKY-D2qlheA5.js +89 -0
  2883. package/payload/server/public/assets/katex-DJPjIBAI.js +257 -0
  2884. package/payload/server/public/assets/line-Bdod7uzQ.js +1 -0
  2885. package/payload/server/public/assets/linear-BiVe6QzC.js +1 -0
  2886. package/payload/server/public/assets/mermaid-parser.core-xZN7hC6M.js +4 -0
  2887. package/payload/server/public/assets/mermaid.core-D0IylAac.js +11 -0
  2888. package/payload/server/public/assets/mindmap-definition-QFDTVHPH-J_Szhwf1.js +96 -0
  2889. package/payload/server/public/assets/operator-mwkYv8g5.js +1 -0
  2890. package/payload/server/public/assets/ordinal-5RtyPJVt.js +1 -0
  2891. package/payload/server/public/assets/packet-4T2RLAQJ-DmkQBx4h.js +1 -0
  2892. package/payload/server/public/assets/page-BpxHz1N-.js +30 -0
  2893. package/payload/server/public/assets/path-CK8wrAxY.js +1 -0
  2894. package/payload/server/public/assets/pie-ZZUOXDRM-DDnxYUBm.js +1 -0
  2895. package/payload/server/public/assets/pieDiagram-DEJITSTG-CV5DxUVx.js +30 -0
  2896. package/payload/server/public/assets/preload-helper-Bf_JiD2A.js +1 -0
  2897. package/payload/server/public/assets/public-CiUboUwu.js +1 -0
  2898. package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-BsFMVizF.js +7 -0
  2899. package/payload/server/public/assets/radar-PYXPWWZC-7H4k0ChM.js +1 -0
  2900. package/payload/server/public/assets/reduce-B3Mw_0s1.js +1 -0
  2901. package/payload/server/public/assets/requirementDiagram-MS252O5E-C5eRRvGc.js +84 -0
  2902. package/payload/server/public/assets/rough.esm-Dwml_la6.js +1 -0
  2903. package/payload/server/public/assets/sankeyDiagram-XADWPNL6-CJYv5gpw.js +10 -0
  2904. package/payload/server/public/assets/sequenceDiagram-FGHM5R23-B25563_2.js +157 -0
  2905. package/payload/server/public/assets/src-BKOAoFQc.js +1 -0
  2906. package/payload/server/public/assets/stateDiagram-FHFEXIEX-BLyNJYOA.js +1 -0
  2907. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-BSVuxZxz.js +1 -0
  2908. package/payload/server/public/assets/timeline-definition-GMOUNBTQ-D-HgOM6Q.js +120 -0
  2909. package/payload/server/public/assets/treeView-SZITEDCU-BLXWTQtW.js +1 -0
  2910. package/payload/server/public/assets/treemap-W4RFUUIX-DiePDF5d.js +1 -0
  2911. package/payload/server/public/assets/vennDiagram-DHZGUBPP-Cw1JElYp.js +34 -0
  2912. package/payload/server/public/assets/wardley-RL74JXVD-OSUWK5LN.js +1 -0
  2913. package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-BqMWzEko.js +20 -0
  2914. package/payload/server/public/assets/xychartDiagram-5P7HB3ND-DBp71TLT.js +7 -0
  2915. package/payload/server/public/brand/claude.png +0 -0
  2916. package/payload/server/public/brand/maxy-black.png +0 -0
  2917. package/payload/server/public/brand/maxy-monochrome.png +0 -0
  2918. package/payload/server/public/brand/maxy.png +0 -0
  2919. package/payload/server/public/brand/sitedesk-black.png +0 -0
  2920. package/payload/server/public/brand/sitedesk-favicon-180.png +0 -0
  2921. package/payload/server/public/brand/sitedesk-favicon-32.png +0 -0
  2922. package/payload/server/public/brand/sitedesk-favicon-512.png +0 -0
  2923. package/payload/server/public/brand/sitedesk-horizontal-dark.png +0 -0
  2924. package/payload/server/public/brand/sitedesk-horizontal.png +0 -0
  2925. package/payload/server/public/brand/sitedesk-icon.svg +8 -0
  2926. package/payload/server/public/brand/sitedesk-monochrome.png +0 -0
  2927. package/payload/server/public/brand/sitedesk-square.png +0 -0
  2928. package/payload/server/public/brand/sitedesk-stacked.png +0 -0
  2929. package/payload/server/public/brand/sitedesk-white.png +0 -0
  2930. package/payload/server/public/brand/star.png +0 -0
  2931. package/payload/server/public/brand-constants.json +8 -0
  2932. package/payload/server/public/brand-defaults.css +12 -0
  2933. package/payload/server/public/browser.html +17 -0
  2934. package/payload/server/public/chat.html +20 -0
  2935. package/payload/server/public/consent.css +97 -0
  2936. package/payload/server/public/consent.js +259 -0
  2937. package/payload/server/public/data.html +17 -0
  2938. package/payload/server/public/favicon.ico +0 -0
  2939. package/payload/server/public/graph.html +19 -0
  2940. package/payload/server/public/index.html +22 -0
  2941. package/payload/server/public/operator.html +23 -0
  2942. package/payload/server/public/privacy.html +129 -0
  2943. package/payload/server/public/public.html +21 -0
  2944. package/payload/server/public/robots.txt +5 -0
  2945. package/payload/server/public/sw.js +24 -0
  2946. package/payload/server/public/v.js +244 -0
  2947. package/payload/server/public/vnc-popout.html +63 -0
  2948. package/payload/server/public/whatsapp-wallpaper.webp +0 -0
  2949. package/payload/server/server-init-line-stamper.cjs +26 -0
  2950. package/payload/server/server-init.cjs +251 -0
  2951. package/payload/server/server.js +21647 -0
@@ -0,0 +1,2245 @@
1
+ // Spawn a `claude --verbose` PTY child and resolve once the fs-watcher
2
+ // reports the PID file Claude Code writes at process init
3
+ // (`${CLAUDE_CONFIG_DIR}/sessions/<pid>.json` for entrypoint=cli). That
4
+ // file carries the intrinsic sessionId, bridgeSessionId, agent, status
5
+ // and cwd directly — earlier and more authoritatively than the
6
+ // `/remote-control` URL banner. URL capture still runs in parallel so
7
+ // the operator-facing iframe URL is populated, but it no longer gates
8
+ // /spawn's response.
9
+ //
10
+ // The manager mints zero session ids. Both the intrinsic id and the
11
+ // bridgeSessionId come from Claude Code's own state files.
12
+ //
13
+ // Task 147 — a specialist spawn (e.g. `database-operator`, dispatched by
14
+ // the admin via the Task tool) is structurally identical to a Sidebar
15
+ // "New session" spawn. Same /spawn body shape; a specialist spawn only
16
+ // differs by overrides on the body (`specialist`, `model`,
17
+ // `initialMessage`). No specialist-specific preflight, no
18
+ // specialist-specific tool-surface gate, no `originatingSessionId`
19
+ // discriminator, no per-specialist env stamp.
20
+ // The PTY's own first-use error is the contract for tool absence.
21
+ // Auto-archive on end_turn for the database-operator specialist is
22
+ // applied in `http-server.ts` based on the resolved `specialist` value.
23
+ //
24
+ // Spawn failure surfaces (return 500 with `stderrTail`):
25
+ // which-claude-not-found, pty-spawn-failed, pid-file-timeout,
26
+ // host-context-unresolved, identity-unresolved, mcp-config-write-failed,
27
+ // consent-waiver-missing (0-byte waiver / unmapped mode),
28
+ // startup-prompt-block (un-waived first-run dialog).
29
+ import { mkdirSync, writeFileSync, existsSync, readFileSync, readdirSync } from 'node:fs';
30
+ import { tmpdir } from 'node:os';
31
+ import { dirname, join } from 'node:path';
32
+ import { randomUUID } from 'node:crypto';
33
+ import { defaultSystemctlRunner, scopeUnitName, stopScopeUnit, } from './systemd-scope.js';
34
+ import { startUrlCapture } from './url-capture.js';
35
+ import { buildWebchatChannelMcpServers, buildWebchatChannelArgv, webchatChannelMcpConfigPath, WEBCHAT_CHANNEL_REPLY_TOOL, } from './webchat-channel-mcp.js';
36
+ import { isDevChannelPrompt } from './wa-channel-mcp.js';
37
+ import { jsonlPathForSessionId, sidecarPathForSessionId, permissionModeLogPathForSessionId, projectsDirForCwd, } from './jsonl-path.js';
38
+ import { readSidecar, writeSidecar, updateSidecar } from './session-sidecar.js';
39
+ import { probeMcpServerTools, } from './mcp-tools-probe.js';
40
+ // CSI (Cursor / Style) escape sequence: ESC `[` <args> <final-letter>.
41
+ const PTY_TAIL_CSI = /\x1b\[[0-9;?]*[A-Za-z]/g;
42
+ const PTY_TAIL_BYTES = 4 * 1024;
43
+ const PTY_TAIL_LOG_BYTES = 1024;
44
+ function attachPtyTail(pty) {
45
+ let buf = '';
46
+ let sub = pty.onData((data) => {
47
+ buf += data.replace(PTY_TAIL_CSI, '');
48
+ if (buf.length > PTY_TAIL_BYTES)
49
+ buf = buf.slice(buf.length - PTY_TAIL_BYTES);
50
+ });
51
+ return {
52
+ getTail: () => buf,
53
+ dispose: () => {
54
+ if (sub) {
55
+ sub.dispose();
56
+ sub = null;
57
+ }
58
+ },
59
+ };
60
+ }
61
+ function formatTailForLog(tail) {
62
+ const trimmed = tail.length > PTY_TAIL_LOG_BYTES ? tail.slice(-PTY_TAIL_LOG_BYTES) : tail;
63
+ return JSON.stringify(trimmed);
64
+ }
65
+ // Task 574 — a headless spawn that stops at a first-run interactive dialog
66
+ // (bypass-permissions disclaimer, auto-mode consent, or any future gate) never
67
+ // writes a PID file, so waitForPid hangs the full timeout. This scanner names
68
+ // the dialog within milliseconds. The load-bearing signal is the confirm/cancel
69
+ // footer, which only modal dialogs print — the normal REPL `❯` prompt never
70
+ // does, so there is no false positive on a healthy boot. The dev-channel prompt
71
+ // is excluded: the existing keystroke auto-confirm (in spawnClaudeSession) owns
72
+ // it.
73
+ class StartupPromptError extends Error {
74
+ title;
75
+ constructor(title) {
76
+ super(`startup-prompt-block: ${title}`);
77
+ this.title = title;
78
+ this.name = 'StartupPromptError';
79
+ }
80
+ }
81
+ function startupPromptTitle(stripped) {
82
+ const lines = stripped
83
+ .split(/\r?\n/)
84
+ .map((l) => l.replace(/[^\x20-\x7E]/g, '').trim())
85
+ .filter(Boolean);
86
+ const pick = lines.find((l) => l.includes('?')) ?? lines.find((l) => /[A-Za-z]{3}/.test(l)) ?? 'unknown';
87
+ return pick.slice(0, 80);
88
+ }
89
+ function watchForStartupPrompt(pty) {
90
+ let buf = '';
91
+ let sub = null;
92
+ let reject = null;
93
+ const promise = new Promise((_, rej) => { reject = rej; });
94
+ sub = pty.onData((data) => {
95
+ buf += data.replace(PTY_TAIL_CSI, '').replace(/\x1b\][^\x07\x1b]*(?:\x07|\x1b\\)?/g, '');
96
+ if (buf.length > PTY_TAIL_BYTES)
97
+ buf = buf.slice(buf.length - PTY_TAIL_BYTES);
98
+ const flat = buf.replace(/[^A-Za-z]/g, '').toLowerCase();
99
+ const hasConfirm = flat.includes('entertoconfirm') || flat.includes('esctocancel');
100
+ if (!hasConfirm)
101
+ return;
102
+ if (isDevChannelPrompt(buf))
103
+ return;
104
+ const title = startupPromptTitle(buf);
105
+ if (sub) {
106
+ sub.dispose();
107
+ sub = null;
108
+ }
109
+ reject?.(new StartupPromptError(title));
110
+ });
111
+ return {
112
+ promise,
113
+ // Null `reject` too: once the race has settled (waitForPid won), a PTY
114
+ // data event queued before dispose must not fire a now-pointless reject.
115
+ // (Promise.race already holds a reaction on `promise`, so this was never an
116
+ // unhandled rejection — this just drops the dead call.)
117
+ dispose: () => { if (sub) {
118
+ sub.dispose();
119
+ sub = null;
120
+ } reject = null; },
121
+ };
122
+ }
123
+ import { composeAppendSystemPrompt, } from './system-prompt.js';
124
+ import { discoverHooks } from './hooks-discovery.js';
125
+ import { CC_NATIVE_TOOLS } from './specialist-drift.js';
126
+ import { SPAWN_PERMISSION_MODES } from '../../../lib/models/dist/index.js';
127
+ // Task 609 — deny-basis sentinel for dontAsk public spawns whose resolved
128
+ // allowlist is empty. Follows the mcp__<server>__<tool> allowlist grammar;
129
+ // server `none` is never registered in any brand's .mcp.json, so the token
130
+ // matches no real tool and grants nothing. It is absent from CC_NATIVE_TOOLS,
131
+ // so an allowlist anchored on it stays native-excluding. Its only job is to
132
+ // make `--allowed-tools` present and non-empty so dontAsk fails closed.
133
+ const DONTASK_DENY_BASIS = 'mcp__none__deny-basis';
134
+ // Task 612 / 615 — every public spawn gets ZERO tool surface (webchat,
135
+ // whatsapp, telegram). Measured on realagent-code (claude 2.1.160, brand
136
+ // settings.json permissions.allow:["*"]): a per-spawn permissions.deny in the
137
+ // same --settings as the prompt-skip keys is the ONLY lever that beats the
138
+ // brand allow:["*"] — a global deny:["*"] is a no-op (the `*`-vs-`*` collision
139
+ // resolves to allow). Bare tool names gate command tools (Bash/Skill/Task) but
140
+ // are no-ops for file/path tools, which need a Tool(//**) path form;
141
+ // deny:["Read(//**)"] is absolute over any allow, so no attachment Read
142
+ // carve-out survives (the carve-out is dropped — see Task 613). A server-scoped
143
+ // mcp__<srv>__* wildcard gates the one MCP surface a public spawn could
144
+ // otherwise expose (the memory plugin, short prefix mcp__memory__). The deny
145
+ // list is enumerative and maintained in lockstep with CC_NATIVE_TOOLS (the
146
+ // pty-spawner-public-deny audit test reconciles them).
147
+ /** File tools that need a `Tool(//**)` path form alongside their bare name —
148
+ * a bare deny of these is a no-op against a path-argument call. */
149
+ const CC_FILE_PATH_TOOLS = [
150
+ 'Read', 'Write', 'Edit', 'MultiEdit', 'Glob', 'Grep', 'LS', 'NotebookRead', 'NotebookEdit',
151
+ ];
152
+ /** Harness/agent-framework tools that exist in a live public spawn but are NOT
153
+ * in CC_NATIVE_TOOLS, so they are listed here and denied by bare name. Two
154
+ * sources: the deferred-load set (`deferred_tools_delta.addedNames` — the
155
+ * Cron, Enter/Exit, and Task families, Monitor, PushNotification,
156
+ * RemoteTrigger, plus `ToolSearch`) and the EAGER agent-framework tools
157
+ * `ScheduleWakeup` +
158
+ * `Workflow`, which the Task 612 on-device acceptance probe found still
159
+ * reachable after the deferred set was denied — `Workflow` spawns subagents,
160
+ * so leaving it open is a privilege-escalation hole, not merely extra surface.
161
+ * `LSP` (language-server code intelligence) was added by Task 614: a real
162
+ * `claude` capture exposes it, and the deny-list reconciliation test
163
+ * (public-deny-reconciliation.test.ts) flagged it as reachable-but-undenied.
164
+ *
165
+ * Maintainer note: this list and CC_FILE_PATH_TOOLS are name-only. The
166
+ * reconciliation test catches a NEW tool's bare-name omission, but a flat
167
+ * registry cannot reveal which tools take a path argument — so classifying a
168
+ * brand-new tool as a file tool that also needs a `(//**)` path form in
169
+ * CC_FILE_PATH_TOOLS remains a maintainer responsibility (Task 614). */
170
+ const CC_HARNESS_TOOLS = [
171
+ 'ToolSearch', 'Monitor', 'PushNotification', 'RemoteTrigger',
172
+ 'ScheduleWakeup', 'Workflow', 'LSP',
173
+ 'EnterPlanMode', 'ExitPlanMode', 'EnterWorktree', 'ExitWorktree',
174
+ 'CronCreate', 'CronDelete', 'CronList',
175
+ 'TaskCreate', 'TaskGet', 'TaskList', 'TaskOutput', 'TaskStop', 'TaskUpdate',
176
+ ];
177
+ /** Server-scoped MCP wildcard(s) for the public surface. The only MCP server a
178
+ * public spawn could register is the memory plugin (short prefix). */
179
+ const PUBLIC_DENY_MCP = ['mcp__memory__*'];
180
+ /** The per-spawn `permissions.deny` set for a public session (any channel):
181
+ * every CC native tool by bare name, a `(//**)` path form for every file tool,
182
+ * every harness tool by bare name, and the memory MCP server wildcard. Sorted
183
+ * and deduped so the emitted argv is stable and the audit test can compare. */
184
+ export function buildPublicDeny() {
185
+ const entries = [
186
+ ...CC_NATIVE_TOOLS,
187
+ ...CC_HARNESS_TOOLS,
188
+ ...CC_FILE_PATH_TOOLS.map((t) => `${t}(//**)`),
189
+ ...PUBLIC_DENY_MCP,
190
+ ];
191
+ return [...new Set(entries)].sort();
192
+ }
193
+ // Task 455 — two-layer alive invariant for the `livePtys` map.
194
+ //
195
+ // Layer 1: PURGE-ON-EXIT. Both the natural-exit handler
196
+ // (`handlePtyNaturalExit`) and the operator-request stop (`stopSession`)
197
+ // delete the tracker from `livePtys` once its claude child has gone.
198
+ // The delete is guarded by an identity check so a respawn that has
199
+ // already replaced the entry under the same sessionId is never
200
+ // clobbered.
201
+ //
202
+ // Layer 2: FILTER-ON-LOOKUP. Every reader that asks "is there a live
203
+ // PTY for this sessionId?" — `isLive`, `livePidForSession`, the
204
+ // `stopSession` lookup — goes through `resolveLiveTracker`, which
205
+ // returns the entry only when it is present AND `exited` is false.
206
+ // Layer 2 is the load-bearing layer: it handles the case where a
207
+ // future write path sets `t.exited = true` without deleting (the
208
+ // failure shape this task was filed against). Layer 1 hardens the
209
+ // purge for callers that read `livePtys` directly, but the stop
210
+ // route never does — every stop-relevant read flows through Layer 2.
211
+ //
212
+ // `priorExitedBySessionId` is the per-sessionId count of PTYs that
213
+ // have exited inside this manager-process lifetime. It is bumped
214
+ // by `handlePtyNaturalExit` and read by the /stop route's
215
+ // observability line so the operator can see respawn history
216
+ // when investigating a "stop did nothing" report.
217
+ const livePtys = new Map();
218
+ const priorExitedBySessionId = new Map();
219
+ /** Task 558 — track when each tracker was registered (manager-process
220
+ * wall clock, ms). The post-archive sweep uses this as the lower
221
+ * bound for `heldSinceArchiveMs`: the master cannot have been held
222
+ * longer than the manager has known about its tracker. Module-scoped
223
+ * so the existing PtyTracker shape stays unchanged. */
224
+ const trackerRegisteredAt = new Map();
225
+ /** Task 455 — canonical alive resolver. Returns the tracker for
226
+ * `sessionId` only when an entry exists AND it has not been marked
227
+ * exited. Module-private; the public readers below thread through
228
+ * it so the alive contract has exactly one definition site. */
229
+ function resolveLiveTracker(sessionId) {
230
+ const t = livePtys.get(sessionId);
231
+ if (!t || t.exited)
232
+ return null;
233
+ return t;
234
+ }
235
+ /** Returns true when the manager has a live PtyHandle for `sessionId`.
236
+ * False for exited rows (the tracker is removed) and for sessions the
237
+ * manager never spawned (e.g. a JSONL-only archived row). */
238
+ export function isLive(sessionId) {
239
+ return resolveLiveTracker(sessionId) !== null;
240
+ }
241
+ /** Task 271 — read-only PID accessor for the live PTY at `sessionId`.
242
+ * Returns the PID when a tracker exists and has not exited, null
243
+ * otherwise. Used by the /promote refusal path so the 409 payload can
244
+ * identify the live process the operator must end first. Mirrors
245
+ * `isLive`'s encapsulation rule: returns a primitive, not the handle. */
246
+ export function livePidForSession(sessionId) {
247
+ return resolveLiveTracker(sessionId)?.pid ?? null;
248
+ }
249
+ /** Task-962 — classify an already-live child as busy vs wedged from signals the
250
+ * watcher already tracks, so a recovery respawn never kills a child that is
251
+ * merely slow. Busy = ANY recent sign of progress within `staleMs`: the PID
252
+ * file reports status 'busy', the PID file was refreshed (`updatedAt`), or the
253
+ * session JSONL was written (`jsonlMtimeMs`). Wedged = all of those are stale.
254
+ * Pure: the http-server recover branch reads the signals and calls this. */
255
+ export function classifyLiveness(input) {
256
+ const fresh = (t) => t != null && t > input.now - input.staleMs;
257
+ if (input.status === 'busy')
258
+ return 'busy';
259
+ if (fresh(input.jsonlMtimeMs))
260
+ return 'busy';
261
+ if (fresh(input.updatedAt))
262
+ return 'busy';
263
+ return 'wedged';
264
+ }
265
+ /** Task 455 — count of prior PTYs that exited for this sessionId within
266
+ * this manager-process lifetime. Read by the /stop route to surface a
267
+ * one-line observability hit when the count is > 0, so operators can
268
+ * see respawn history without changing the success-path log shape. */
269
+ export function priorExitedCountForSession(sessionId) {
270
+ return priorExitedBySessionId.get(sessionId) ?? 0;
271
+ }
272
+ /** Test seam — read-only access to the tracker for a given session.
273
+ * Production routes never call this; they use the dedicated mutation
274
+ * exports (`writeInputToPty`, `killSession`, `onPtyExit`, etc.) so
275
+ * the PtyHandle stays encapsulated inside the module. */
276
+ export function getPtyTrackerForTests(sessionId) {
277
+ return livePtys.get(sessionId);
278
+ }
279
+ /** Register a callback to fire when the PTY for `sessionId` exits.
280
+ * Returns true when the tracker exists (callback was wired); false
281
+ * when no live PTY is tracked for that id (the caller's contract
282
+ * fires regardless — e.g. `attachPublicAudit` skips on no-tracker).
283
+ * Routes call this instead of reaching into the tracker for `.pty`. */
284
+ export function onPtyExit(sessionId, cb) {
285
+ const t = livePtys.get(sessionId);
286
+ if (!t)
287
+ return false;
288
+ t.pty.onExit(cb);
289
+ return true;
290
+ }
291
+ /** Iterate every live tracker. Used by index.ts's shutdown loop to
292
+ * SIGTERM each PTY synchronously, and by checkSlotsAndMaybeEvict's
293
+ * LRU search to walk specialists when the cap is hit. */
294
+ export function forEachLivePty(cb) {
295
+ for (const t of livePtys.values())
296
+ cb(t);
297
+ }
298
+ /** Count of live trackers. Surfaced by /healthz so the operator can
299
+ * see process-side liveness without scanning the watcher's row index. */
300
+ export function livePtyCount() {
301
+ return livePtys.size;
302
+ }
303
+ /** Task 702 — the sessionIds of every owned PTY that has not exited. The
304
+ * truthful "this process is running" set for sessions this manager spawned
305
+ * or adopted. Reattached survivor scopes (status=detached) are NOT here —
306
+ * the /live-sessions endpoint unions them in from the watcher. */
307
+ export function liveSessionIds() {
308
+ const out = [];
309
+ for (const t of livePtys.values()) {
310
+ if (!t.exited)
311
+ out.push({ sessionId: t.sessionId, pid: t.pid });
312
+ }
313
+ return out;
314
+ }
315
+ /** Test-only — clear the tracker map between vitest cases. Production
316
+ * never invokes this; the only legitimate eviction is PTY exit.
317
+ * Task 455 — also clears `priorExitedBySessionId` so tests that
318
+ * predate the exit-history counter (and only call this reset) do
319
+ * not leak counter state across vitest file boundaries. */
320
+ export function __resetPtyTrackerForTests() {
321
+ livePtys.clear();
322
+ priorExitedBySessionId.clear();
323
+ trackerRegisteredAt.clear();
324
+ }
325
+ /** Test-only — clear the exit-history counter between vitest cases.
326
+ * Production never invokes this; the counter resets naturally on
327
+ * manager restart. `__resetPtyTrackerForTests` clears this map too;
328
+ * this narrower export is retained for tests that want to reset
329
+ * only the counter without touching the live tracker map. */
330
+ export function __resetExitHistoryForTests() {
331
+ priorExitedBySessionId.clear();
332
+ }
333
+ /** Test-only — directly register a tracker without going through
334
+ * `spawnClaudeSession`. Used by FD-release / natural-exit tests that
335
+ * need to construct a known PtyHandle + tracker pair and exercise
336
+ * `killSession` / `handlePtyNaturalExit` against it. */
337
+ export function __registerPtyTrackerForTests(tracker) {
338
+ livePtys.set(tracker.sessionId, tracker);
339
+ trackerRegisteredAt.set(tracker.sessionId, Date.now());
340
+ }
341
+ /** Task 171 — specialists whose `--agent <name>` spawn has no human in the
342
+ * loop: no operator browser tab, no chat channel, no `claude.ai/code/session_<id>`
343
+ * URL to open. For these, `--remote-control` is dead weight (one outbound
344
+ * WebSocket to Anthropic per spawn plus a PTY-byte regex that never matches)
345
+ * and the URL-capture handler is not attached. Membership is by specialist
346
+ * name — the values that `SpawnArgs.specialist` carries — sourced from
347
+ * archive Task 085 (specialist plumbing) and this task. New headless
348
+ * specialists register their name here; channel-facing specialists
349
+ * (content-producer, librarian, personal-assistant, project-manager,
350
+ * research-assistant) stay out.
351
+ */
352
+ export const HEADLESS_ROLES = new Set([
353
+ 'database-operator',
354
+ 'citation-auditor',
355
+ 'typed-edge-classifier',
356
+ 'compiled-truth-rewriter',
357
+ ]);
358
+ export const PERMISSION_MODES = SPAWN_PERMISSION_MODES;
359
+ /** Task 165 — read the agent's `tools:` frontmatter line from
360
+ * `$CLAUDE_CONFIG_DIR/agents/<specialist>.md`. Loud-fails when the file
361
+ * is missing or when no `tools:` line exists in the frontmatter, since
362
+ * either case means `--agent <name>` would silently fall back to the
363
+ * admin surface — the exact defect Task 165 closes. Returns the tool
364
+ * names in the order they were declared (the caller sorts before
365
+ * emitting argv). */
366
+ export function readSpecialistTools(claudeConfigDir, specialist) {
367
+ const path = join(claudeConfigDir, 'agents', `${specialist}.md`);
368
+ let raw;
369
+ try {
370
+ raw = readFileSync(path, 'utf8');
371
+ }
372
+ catch (err) {
373
+ const msg = err instanceof Error ? err.message : String(err);
374
+ throw new Error(`[pty-spawner] specialist-agent-file-missing path=${path} err=${msg}`);
375
+ }
376
+ // Frontmatter delimited by lines that contain only `---`. Read tools:
377
+ // line within the first delimited block.
378
+ const lines = raw.split(/\r?\n/);
379
+ if (lines[0]?.trim() !== '---') {
380
+ throw new Error(`[pty-spawner] specialist-agent-no-frontmatter path=${path}`);
381
+ }
382
+ let toolsLine = null;
383
+ for (let i = 1; i < lines.length; i++) {
384
+ const line = lines[i];
385
+ if (line.trim() === '---')
386
+ break;
387
+ const m = line.match(/^tools:\s*(.+)$/);
388
+ if (m) {
389
+ toolsLine = m[1];
390
+ break;
391
+ }
392
+ }
393
+ if (toolsLine === null) {
394
+ throw new Error(`[pty-spawner] specialist-agent-no-tools-line path=${path}`);
395
+ }
396
+ return toolsLine
397
+ .split(',')
398
+ .map((t) => t.trim())
399
+ .filter((t) => t.length > 0);
400
+ }
401
+ export function expandPlaceholders(raw, vars) {
402
+ return raw.replace(/\$\{([A-Z_][A-Z0-9_]*)\}/g, (m, name) => {
403
+ return Object.prototype.hasOwnProperty.call(vars, name) ? vars[name] : m;
404
+ });
405
+ }
406
+ /** Task 215 — pull the `<server>` segment out of a qualified MCP tool name
407
+ * the way Claude Code's plugin-tool registry surfaces it. Two shapes
408
+ * exist in the wild:
409
+ *
410
+ * - Long prefix: `mcp__plugin_<plugin>_<server>__<tool>` — emitted by
411
+ * Claude Code when an MCP server is registered via plugin manifest
412
+ * (post-Task-209 native plugin-system path; what `--agent <name>`
413
+ * specialist spawns receive in Registry #1).
414
+ * - Short prefix: `mcp__<server>__<tool>` — emitted by Claude Code when
415
+ * an MCP server is registered via `--mcp-config <path>` (admin operator
416
+ * spawns; what Registry #2 produces directly).
417
+ *
418
+ * Both must resolve to the same `<server>` slug so the probe can match
419
+ * the qualified name against `toolSurface.mcpServers` keys, which the
420
+ * manager populates from PLUGIN.md basenames in `tool-surface.ts`. The
421
+ * pre-Task-215 inline regex `/^mcp__(.+?)__/` extracted `plugin_<plugin>_<server>`
422
+ * from the long-prefix shape (lazy match stops at the first `__`),
423
+ * which never matched any tool-surface key — the failure mode this
424
+ * helper closes.
425
+ *
426
+ * Returns `null` for any name that matches neither shape. The caller
427
+ * surfaces those names through the inventory line's `unparseable-tools=`
428
+ * field so a malformed agent-frontmatter entry can't masquerade as a
429
+ * missing server. */
430
+ export function extractServerNameFromQualifiedTool(qualified) {
431
+ // Long prefix has the literal `plugin` marker between `mcp__` and the
432
+ // plugin slug — Claude Code stamps it for every plugin-manifest MCP
433
+ // server, even when plugin and server slugs are equal (the common
434
+ // maxy case: plugin=memory, server=memory).
435
+ const longMatch = qualified.match(/^mcp__plugin_([^_]+)_([^_]+)__/);
436
+ if (longMatch)
437
+ return longMatch[2];
438
+ // Short prefix has no `plugin` marker; the first segment IS the server
439
+ // slug. Used by admin's `--mcp-config` registrations and by any
440
+ // historical fixture that predates the plugin-manifest rename.
441
+ const shortMatch = qualified.match(/^mcp__([^_]+)__/);
442
+ if (shortMatch)
443
+ return shortMatch[1];
444
+ return null;
445
+ }
446
+ /** Task 215 — classify the agent's frontmatter `tools:` list against the
447
+ * manager's tool-surface registry. Used by both the per-spawn `.mcp.json`
448
+ * writer (admin) and the tool-inventory probe (specialist). Returns the
449
+ * set of server names to spawn AND the two diagnostic sets the inventory
450
+ * line surfaces when non-empty: tokens that didn't parse at all
451
+ * (`unparseableTools`) and parseable tokens whose server isn't in the
452
+ * registry (`missingServers`). Both diagnostic sets are empty in the
453
+ * healthy case, so the existing log line shape stays unchanged for
454
+ * passing spawns. */
455
+ export function classifySpecialistTools(tools, toolSurfaceServers) {
456
+ const matchedServers = new Set();
457
+ const unparseable = [];
458
+ const missingSet = new Set();
459
+ for (const t of tools) {
460
+ const server = extractServerNameFromQualifiedTool(t);
461
+ if (server === null) {
462
+ unparseable.push(t);
463
+ continue;
464
+ }
465
+ if (toolSurfaceServers.has(server)) {
466
+ matchedServers.add(server);
467
+ }
468
+ else if (!missingSet.has(server)) {
469
+ missingSet.add(server);
470
+ }
471
+ }
472
+ return {
473
+ matchedServers,
474
+ unparseableTools: unparseable,
475
+ missingServers: Array.from(missingSet),
476
+ };
477
+ }
478
+ /** Builds the placeholder map for per-spawn `mcp.json` env substitution.
479
+ * Exported for Task 142 unit coverage that asserts `PLATFORM_PORT` and
480
+ * `MAXY_BRAND_PORT` resolve from the manager process env, and for
481
+ * Task 476 unit coverage that asserts SESSION_ID equals the passed
482
+ * sessionId and never the accountId. */
483
+ export function buildMcpPlaceholders(p, env = process.env) {
484
+ const platformPort = env.PLATFORM_PORT;
485
+ const maxyBrandPort = env.MAXY_BRAND_PORT;
486
+ if (!platformPort) {
487
+ throw new Error('[claude-session-manager] PLATFORM_PORT not set — manager unit must stamp it (Task 142)');
488
+ }
489
+ if (!maxyBrandPort) {
490
+ throw new Error('[claude-session-manager] MAXY_BRAND_PORT not set — manager unit must stamp it');
491
+ }
492
+ // Task 205 — USER_ID lands in lockstep with ACCOUNT_ID. Empty string on
493
+ // silent-compaction / recorder spawns; never undefined, so JSON
494
+ // serialization of mcp.json yields a stable shape.
495
+ //
496
+ // Task 476 — SESSION_ID is the spawner-minted UUID, passed to claude via
497
+ // `--session-id` (fresh) or `--resume` (restored) so the value the
498
+ // plugin reads matches the value claude writes to its PID file and
499
+ // JSONL. The previous revision aliased this from the senderId field,
500
+ // which on admin spawns equals the accountId — every admin MCP child
501
+ // therefore read SESSION_ID === accountId and stamped that onto every
502
+ // graph write.
503
+ //
504
+ // Task 487 — AGENT_SLUG carries provenance ('admin' for the admin
505
+ // operator, so writes stamp `createdByAgent="admin"`); AGENT_SLUG_SCOPE
506
+ // carries read-scope (empty for the admin operator, so memory-search
507
+ // stays wide-open). They were one var until Task 487 split them.
508
+ // Task 492 — CDP_PORT reaches the `browser` plugin's MCP server so it can
509
+ // attach to the per-brand VNC Chromium. Unlike PLATFORM_PORT/MAXY_BRAND_PORT
510
+ // this does NOT throw when absent: buildMcpPlaceholders runs for every spawn,
511
+ // so a throw would break all agents brand-wide if the stamp ever regressed.
512
+ // CDP is Pi-only — a laptop native-display install has no VNC Chromium — so
513
+ // an empty value is a legitimate state where browser-render returns a loud
514
+ // cdp-unreachable, contained to that one tool.
515
+ return {
516
+ PLATFORM_ROOT: p.platformRoot,
517
+ PREMIUM_PLUGINS_ROOT: join(dirname(p.platformRoot), 'premium-plugins'),
518
+ // Task 714 — the account's data directory, the value plugins (url-get,
519
+ // email, memory) read as ACCOUNT_DIR. Same formula spawn-context/url-get use.
520
+ ACCOUNT_DIR: join(dirname(p.platformRoot), 'data', 'accounts', p.accountId),
521
+ ACCOUNT_ID: p.accountId,
522
+ USER_ID: p.userId ?? '',
523
+ SESSION_ID: p.sessionId,
524
+ AGENT_SLUG: p.agentSlug,
525
+ AGENT_SLUG_SCOPE: p.agentScopeSlug,
526
+ LOG_DIR: p.logDir,
527
+ PLATFORM_PORT: platformPort,
528
+ MAXY_BRAND_PORT: maxyBrandPort,
529
+ CDP_PORT: env.CDP_PORT ?? '',
530
+ };
531
+ }
532
+ function writePerSpawnMcpConfig(p) {
533
+ const serversForRole = [];
534
+ if (p.specialistTools !== null) {
535
+ // Task 165 — specialist spawn. Project the agent's `tools:`
536
+ // frontmatter to the set of plugin namespaces it references; include
537
+ // only those MCP servers. A specialist that only writes graph
538
+ // (database-operator: memory, contacts, work) does not get the
539
+ // dozens of other admin servers stamped into its mcp.json.
540
+ //
541
+ // Task 215 — uses `classifySpecialistTools` so post-Task-209
542
+ // long-prefix names (`mcp__plugin_<plugin>_<server>__<tool>`) resolve
543
+ // to their `<server>` slug rather than the legacy lazy-regex capture
544
+ // of `plugin_<plugin>_<server>`. This branch is dead for production
545
+ // (Task 207 dropped `.mcp.json` writes for specialists) but the
546
+ // classifier keeps it correct for any future caller and for tests
547
+ // that exercise the legacy path.
548
+ const { matchedServers } = classifySpecialistTools(p.specialistTools, p.toolSurface.mcpServers);
549
+ for (const [name, desc] of p.toolSurface.mcpServers) {
550
+ if (matchedServers.has(name))
551
+ serversForRole.push([name, desc]);
552
+ }
553
+ }
554
+ else if (p.role === 'admin') {
555
+ for (const [name, desc] of p.toolSurface.mcpServers)
556
+ serversForRole.push([name, desc]);
557
+ }
558
+ // Task 615 — the public agent is toolless by construction. Its per-spawn
559
+ // `.mcp.json` registers ZERO servers; booting any MCP child for a surface
560
+ // whose `--allowed-tools` is empty and whose permissions.deny blocks every
561
+ // tool wastes a process and would surface tools in inventory probes the
562
+ // session can never call. (No `else` branch: serversForRole stays empty.)
563
+ // Task 142 — placeholder set includes PLATFORM_PORT (internal loopback,
564
+ // == MAXY_UI_INTERNAL_PORT) and MAXY_BRAND_PORT (brand-public). Both
565
+ // are stamped on the manager systemd unit by
566
+ // `buildClaudeSessionManagerUnitFile`, so the manager process inherits
567
+ // them and the substitution can never silently fall back.
568
+ const placeholders = buildMcpPlaceholders(p);
569
+ const mcpServers = {};
570
+ for (const [name, desc] of serversForRole) {
571
+ const entry = {
572
+ command: expandPlaceholders(desc.command, placeholders),
573
+ args: desc.args.map((a) => expandPlaceholders(a, placeholders)),
574
+ };
575
+ if (desc.env) {
576
+ const env = {};
577
+ for (const [k, v] of Object.entries(desc.env))
578
+ env[k] = expandPlaceholders(v, placeholders);
579
+ entry.env = env;
580
+ }
581
+ mcpServers[name] = entry;
582
+ }
583
+ const payload = JSON.stringify({ mcpServers }, null, 2);
584
+ // Task 476 — filename uses the minted sessionId so two concurrent
585
+ // spawns never collide. Pre-476 this used `bridgeSuffixHint` (==
586
+ // senderId, == accountId on admin spawns), which DID collide between
587
+ // parallel admin sessions for the same account.
588
+ const fileName = `maxy-mcp-${p.sessionId.replace(/[^A-Za-z0-9_-]/g, '_')}.json`;
589
+ const target = join(p.targetDir, fileName);
590
+ try {
591
+ mkdirSync(p.targetDir, { recursive: true });
592
+ writeFileSync(target, payload, 'utf8');
593
+ }
594
+ catch (err) {
595
+ const msg = err instanceof Error ? err.message : String(err);
596
+ p.logger(`mcp-config-write-failed target=${target} err=${JSON.stringify(msg)}`);
597
+ return { ok: false, detail: msg };
598
+ }
599
+ const resolvedServers = new Map();
600
+ for (const [name, entry] of Object.entries(mcpServers)) {
601
+ resolvedServers.set(name, {
602
+ command: entry.command,
603
+ args: entry.args,
604
+ env: entry.env,
605
+ });
606
+ }
607
+ return {
608
+ ok: true,
609
+ path: target,
610
+ bytes: Buffer.byteLength(payload, 'utf8'),
611
+ serverCount: serversForRole.length,
612
+ resolvedServers,
613
+ };
614
+ }
615
+ /** Task 600 — minimum MemAvailable (MB) required to admit a new specialist
616
+ * spawn. Calibrated for the 16GB minimum device spec: 4GB reserve keeps
617
+ * room for one more heavy claude.exe session (~5GB peak) plus OS headroom. */
618
+ const MIN_ADMISSION_MB = 4096;
619
+ /** Read MemAvailable from /proc/meminfo and return in MB.
620
+ * Returns null when /proc/meminfo does not exist (non-Linux). */
621
+ function defaultReadMemAvailableMb() {
622
+ const MEMINFO_PATH = '/proc/meminfo';
623
+ try {
624
+ const content = readFileSync(MEMINFO_PATH, 'utf-8');
625
+ const match = content.match(/^MemAvailable:\s+(\d+)\s+kB/m);
626
+ if (!match)
627
+ return null;
628
+ return Math.floor(Number(match[1]) / 1024);
629
+ }
630
+ catch {
631
+ return null;
632
+ }
633
+ }
634
+ /** Pre-spawn slot accounting. Returns either a rejection (caller should
635
+ * surface as 503) or undefined when the spawn may proceed. Eviction of an
636
+ * idle specialist row, when needed, happens here too. Operator
637
+ * (non-specialist) spawns are exempt from both guards. */
638
+ function checkSlotsAndMaybeEvict(deps, args) {
639
+ const isSpecialistSpawn = typeof args.specialist === 'string' && args.specialist.length > 0;
640
+ if (!isSpecialistSpawn)
641
+ return undefined;
642
+ // Task 600 — memory gate: reject before touching PTY slots if the host
643
+ // does not have enough free RAM to safely accommodate another heavy session.
644
+ const readMem = deps.readMemAvailableMb ?? defaultReadMemAvailableMb;
645
+ const memAvailableMb = readMem();
646
+ if (memAvailableMb !== null && memAvailableMb < MIN_ADMISSION_MB) {
647
+ deps.logger(`[pty-cap] low-memory account=${deps.accountId} memAvailableMb=${memAvailableMb} thresholdMb=${MIN_ADMISSION_MB} rejected-specialist=${args.senderId}`);
648
+ return { kind: 'low-memory', memAvailableMb, thresholdMb: MIN_ADMISSION_MB };
649
+ }
650
+ const liveRows = deps.watcher.all().filter((r) => r.state === 'live');
651
+ const specialistRows = liveRows.filter((r) => r.agent !== null);
652
+ if (specialistRows.length >= deps.specialistCap) {
653
+ const idleOldest = specialistRows
654
+ .filter((r) => r.status === 'idle' && !existsSync(jsonlPathForSessionId(deps.spawnCwd, r.sessionId)))
655
+ .sort((a, b) => a.updatedAt - b.updatedAt)[0];
656
+ if (!idleOldest) {
657
+ deps.logger(`[pty-cap] specialist-cap-reached account=${deps.accountId} current=${specialistRows.length} cap=${deps.specialistCap} evicted=none`);
658
+ return { kind: 'specialist-cap-reached', currentCount: specialistRows.length, cap: deps.specialistCap };
659
+ }
660
+ const victim = livePtys.get(idleOldest.sessionId);
661
+ if (victim && !victim.exited) {
662
+ // Task 250 — eviction routes through systemctl stop of the scope
663
+ // unit, matching the operator-stop and reaper paths. Without this,
664
+ // an evicted specialist would only die when the manager process
665
+ // closes its master fd (and the SIGHUP wrap inside the scope makes
666
+ // it not die at all). systemctl stop gives systemd the cgroup-level
667
+ // SIGTERM→SIGKILL escalation, with TimeoutStopSec=5 as the ceiling.
668
+ // Task 451 — stopScopeUnit is async; eviction is fire-and-forget by
669
+ // design. The evicted scope is still active (the victim hasn't
670
+ // exited), so the in-cgroup TimeoutStopSec handles SIGTERM→SIGKILL.
671
+ // We don't await, but `.catch` avoids an unhandled-rejection warning.
672
+ // The pid is intentionally omitted: post-flight verify is reserved
673
+ // for the post-restart boot-seed and stopSession paths where the
674
+ // scope may already be collapsed.
675
+ const run = deps.runSystemctl ?? defaultSystemctlRunner;
676
+ void stopScopeUnit(run, victim.scopeUnitToken).catch(() => { });
677
+ }
678
+ livePtys.delete(idleOldest.sessionId);
679
+ trackerRegisteredAt.delete(idleOldest.sessionId);
680
+ deps.logger(`[pty-cap] specialist-cap-reached account=${deps.accountId} current=${specialistRows.length} cap=${deps.specialistCap} evicted=${idleOldest.sessionId} pty-tracker-size=${livePtys.size}`);
681
+ }
682
+ if (liveRows.length >= deps.totalPtyCap - deps.operatorReserve) {
683
+ deps.logger(`[pty-cap] operator-slots-reserved total=${liveRows.length} reserve=${deps.operatorReserve} totalCap=${deps.totalPtyCap} rejected-specialist=${args.senderId}`);
684
+ return {
685
+ kind: 'operator-slots-reserved',
686
+ total: liveRows.length,
687
+ reserve: deps.operatorReserve,
688
+ totalCap: deps.totalPtyCap,
689
+ };
690
+ }
691
+ return undefined;
692
+ }
693
+ /** Task 215 — single source of truth for matching probe results against
694
+ * the frontmatter allowlist. Builds the `offered` set with BOTH short
695
+ * and long prefix shapes so an agent file's `mcp__plugin_<plugin>_<server>__<tool>`
696
+ * declaration intersects with the probe's per-tool reply regardless of
697
+ * which Claude Code registry path registers the server at runtime.
698
+ * `mcpListedCount` is incremented per actual tool, not per prefix variant
699
+ * — the two prefixes refer to the same underlying tool. */
700
+ function buildOfferedSet(result) {
701
+ const offered = new Set();
702
+ let mcpListedCount = 0;
703
+ for (const [serverName, tools] of result) {
704
+ for (const tool of tools) {
705
+ offered.add(`mcp__${serverName}__${tool}`);
706
+ offered.add(`mcp__plugin_${serverName}_${serverName}__${tool}`);
707
+ mcpListedCount++;
708
+ }
709
+ }
710
+ return { offered, mcpListedCount };
711
+ }
712
+ /** Task 215 — render the optional `unparseable-tools=` and `missing-servers=`
713
+ * fields. Empty inputs return an empty string so the inventory line stays
714
+ * exactly the legacy shape when the spawn is healthy (no need to teach
715
+ * every operator-side grep to skip blank fields). */
716
+ function buildDiagnosticFields(unparseable, missing) {
717
+ let out = '';
718
+ if (unparseable.length > 0)
719
+ out += ` unparseable-tools=${unparseable.join(',')}`;
720
+ if (missing.length > 0)
721
+ out += ` missing-servers=${missing.join(',')}`;
722
+ return out;
723
+ }
724
+ /** Task 178 — fire-and-forget aggregator. Probes each MCP server in the
725
+ * spawn's resolved mcp.json for its `tools/list` reply, then emits one
726
+ * `[pty-spawn-tool-inventory]` line per spawn. Specialist spawns only —
727
+ * operator spawns have no agent frontmatter and the failure shape this
728
+ * closes the gap on is recorder-specific. The function never throws;
729
+ * probe errors emit a `[pty-spawn-tool-inventory-failed]` line on the
730
+ * same logger so the gap is itself observable.
731
+ *
732
+ * Task 215 — accepts `unparseableTools` and `missingServers` from the
733
+ * caller's classifier so the line surfaces both diagnostic classes when
734
+ * non-empty. The two paths catch different defects: an unparseable token
735
+ * signals a malformed frontmatter entry; a missing server signals a typo
736
+ * or a stale plugin name that no longer maps to a tool-surface registry
737
+ * key. */
738
+ function emitToolInventoryAsync(p) {
739
+ p.readMcpToolInventory({ servers: p.resolvedServers, timeoutMs: p.timeoutMs })
740
+ .then((result) => {
741
+ const { offered, mcpListedCount } = buildOfferedSet(result);
742
+ const exposed = [];
743
+ const notExposed = [];
744
+ for (const name of p.frontmatterAllowlist) {
745
+ if (offered.has(name))
746
+ exposed.push(name);
747
+ else
748
+ notExposed.push(name);
749
+ }
750
+ // Task 207 — `argv-tools=0` is now the literal truth for specialist
751
+ // spawns (no `--allowed-tools` push). The frontmatter list is implied
752
+ // by `exposed.length + notExposed.length`; the load-bearing signal is
753
+ // `mcp-listed-tools` (does the agent's plugin namespace resolve via
754
+ // plugin-system?) and `not-exposed` (does it match what the agent
755
+ // declared?). When both reach the brief's target values, the
756
+ // recorder turn produces real `tool_use` blocks.
757
+ const diag = buildDiagnosticFields(p.unparseableTools, p.missingServers);
758
+ p.logger(`[pty-spawn-tool-inventory] sessionId=${p.sessionId} specialist=${p.specialist} argv-tools=0 mcp-listed-tools=${mcpListedCount} exposed=${exposed.join(',')} not-exposed=${notExposed.join(',')}${diag}`);
759
+ })
760
+ .catch((err) => {
761
+ const msg = err instanceof Error ? err.message : String(err);
762
+ p.logger(`[pty-spawn-tool-inventory-failed] sessionId=${p.sessionId} specialist=${p.specialist} err=${JSON.stringify(msg)}`);
763
+ });
764
+ }
765
+ const finalSnapshotState = new Map();
766
+ /** Watchdog ceiling for "model never produced a first turn" — if no
767
+ * `[recorder-turn]` lands within this window, the watchdog fires the
768
+ * final snapshot with `reason=first-turn-timeout`. 60 s is the same
769
+ * order-of-magnitude as the PID-file timeout and well below typical
770
+ * operator patience; tunable in tests via `__setFirstTurnTimeoutMsForTests`. */
771
+ const DEFAULT_FIRST_TURN_TIMEOUT_MS = 60_000;
772
+ let firstTurnTimeoutMs = DEFAULT_FIRST_TURN_TIMEOUT_MS;
773
+ /** Test seam. Production never calls this; the `__` prefix matches the
774
+ * in-repo convention for non-API helpers. */
775
+ export function __setFirstTurnTimeoutMsForTests(ms) {
776
+ firstTurnTimeoutMs = ms;
777
+ }
778
+ export function __resetFirstTurnTimeoutMsForTests() {
779
+ firstTurnTimeoutMs = DEFAULT_FIRST_TURN_TIMEOUT_MS;
780
+ }
781
+ /** Task 215 — fire the `[pty-spawn-tool-inventory-final]` line once per
782
+ * specialist spawn. Idempotent: a second call (e.g. watchdog races a
783
+ * late recorder-turn) is a no-op via the `fired` guard. Re-runs the
784
+ * probe against the same resolvedServers map the spawn-time probe used,
785
+ * so the line reports what the probe would observe AT first-turn
786
+ * time — the timing question Phase 1 of Task 215 was filed to answer.
787
+ *
788
+ * The probe is async and the PTY can exit while it's in flight. Both the
789
+ * `.then` and `.catch` paths gate emission on `finalSnapshotState.has`
790
+ * to suppress phantom lines for sessions whose PTY-exit cleanup ran
791
+ * while the probe was still running. The captured `state` reference
792
+ * still holds the logger, so the emission would mechanically work — but
793
+ * it would lie about a dead session, which is worse than no line. */
794
+ function fireFinalSnapshot(sessionId, reason) {
795
+ const state = finalSnapshotState.get(sessionId);
796
+ if (!state || state.fired)
797
+ return;
798
+ state.fired = true;
799
+ if (state.watchdog) {
800
+ clearTimeout(state.watchdog);
801
+ state.watchdog = null;
802
+ }
803
+ state.readMcpToolInventory({ servers: state.resolvedServers, timeoutMs: state.timeoutMs })
804
+ .then((result) => {
805
+ if (!finalSnapshotState.has(sessionId))
806
+ return;
807
+ const { offered, mcpListedCount } = buildOfferedSet(result);
808
+ const exposed = [];
809
+ const notExposed = [];
810
+ for (const name of state.frontmatterAllowlist) {
811
+ if (offered.has(name))
812
+ exposed.push(name);
813
+ else
814
+ notExposed.push(name);
815
+ }
816
+ const msSinceSpawn = Date.now() - state.spawnedAt;
817
+ const diag = buildDiagnosticFields(state.unparseableTools, state.missingServers);
818
+ state.logger(`[pty-spawn-tool-inventory-final] sessionId=${sessionId} specialist=${state.specialist} mcp-listed-tools=${mcpListedCount} exposed=${exposed.join(',')} not-exposed=${notExposed.join(',')} ms-since-spawn=${msSinceSpawn} reason=${reason}${diag}`);
819
+ })
820
+ .catch((err) => {
821
+ if (!finalSnapshotState.has(sessionId))
822
+ return;
823
+ const msg = err instanceof Error ? err.message : String(err);
824
+ state.logger(`[pty-spawn-tool-inventory-final-failed] sessionId=${sessionId} specialist=${state.specialist} reason=${reason} err=${JSON.stringify(msg)}`);
825
+ });
826
+ }
827
+ /** Test seam — clear any leftover per-spawn state between tests so a
828
+ * failing test doesn't pollute the next one's Map. Production never
829
+ * invokes this; the only legitimate eviction path is PTY exit. */
830
+ export function __clearFinalSnapshotStateForTests() {
831
+ for (const state of finalSnapshotState.values()) {
832
+ if (state.watchdog)
833
+ clearTimeout(state.watchdog);
834
+ }
835
+ finalSnapshotState.clear();
836
+ }
837
+ export async function spawnClaudeSession(deps, args) {
838
+ const rejection = checkSlotsAndMaybeEvict(deps, args);
839
+ if (rejection) {
840
+ return { ok: false, rejected: rejection };
841
+ }
842
+ const startedAt = new Date().toISOString();
843
+ const start = Date.now();
844
+ // Task 476 — mint the canonical sessionId before any argv work. One
845
+ // UUID end-to-end: passed to claude via `--session-id <uuid>` (fresh)
846
+ // or `--resume <uuid>` (restored); substituted into `${SESSION_ID}` in
847
+ // the per-spawn mcp.json; used as the systemd scope unit token (Task
848
+ // 250); keyed onto the sidecar; returned to the caller. Resume spawns
849
+ // re-use the prior canonical sessionId. The PID file claude writes is
850
+ // asserted (fresh spawns only — see Task 258 comment below) to carry
851
+ // this same UUID; mismatch fails the spawn loudly.
852
+ const sessionId = args.resumeClaudeSessionId ?? randomUUID();
853
+ const sessionIdSource = args.resumeClaudeSessionId ? 'resume' : 'minted';
854
+ const unitToken = sessionId;
855
+ // Task 476/487 — two slugs, one derivation:
856
+ // - agentSlug (provenance → ${AGENT_SLUG}): specialist name on subagent
857
+ // spawns, public agent slug on public spawns, and the 'admin' sentinel
858
+ // on the admin operator spawn so writes stamp `createdByAgent="admin"`
859
+ // instead of "unknown".
860
+ // - agentScopeSlug (read-scope → ${AGENT_SLUG_SCOPE}): the same slug for
861
+ // specialist/public, but EMPTY for the admin operator so memory-search
862
+ // stays wide-open (a non-empty slug activates the `$agentSlug IN
863
+ // node.agents` filter in graph-search). This reproduces the pre-487
864
+ // AGENT_SLUG value exactly — read-scope is unchanged for every role.
865
+ // Specialist/public spawns share one slug for both concerns; only the
866
+ // admin operator (no specialist, no public slug) splits 'admin' vs ''.
867
+ const agentSlug = args.specialist ?? args.agentSlug ?? 'admin';
868
+ const agentScopeSlug = args.specialist ?? args.agentSlug ?? '';
869
+ const composedHost = deps.tunnelUrlOverride !== undefined
870
+ ? { ...deps.host, tunnelUrl: deps.tunnelUrlOverride }
871
+ : deps.host;
872
+ // Task 165 — when the spawn is a specialist subagent (`--agent <name>`),
873
+ // the agent file at `$CLAUDE_CONFIG_DIR/agents/<name>.md` IS the prompt.
874
+ // Do not stack admin IDENTITY / SOUL / about-owner / plugin manifests on
875
+ // top: that scaffolding caused the recorder to behave as the admin agent
876
+ // on every turn since Task 147. Operator (non-specialist) spawns retain
877
+ // the full composer.
878
+ const isSpecialistSpawn = typeof args.specialist === 'string' && args.specialist.length > 0;
879
+ let appendSystemPrompt = '';
880
+ // The compose-system-prompt block carries per-section byte counts the
881
+ // [pty-spawn] log line emits later in this function. When the spawn is
882
+ // a specialist subagent we skip composeAppendSystemPrompt entirely, so
883
+ // those byte counts are zero — the agent file IS the prompt.
884
+ let composedBytes = { identity: 0, soul: 0, knowledge: 0, aboutOwner: 0, dormantPlugins: 0 };
885
+ if (!isSpecialistSpawn) {
886
+ const composed = composeAppendSystemPrompt(composedHost,
887
+ // Task 638 — a public spawn composes from agents/<slug>; the slug is
888
+ // args.agentSlug (Task 346), falling back to the bundled default public
889
+ // agent 'public' when a public spawn arrives with no slug. Admin reads
890
+ // agents/admin and carries no slug.
891
+ args.role === 'public'
892
+ ? { accountDir: deps.accountDir, role: 'public', agentSlug: args.agentSlug ?? 'public' }
893
+ : { accountDir: deps.accountDir, role: 'admin' }, {
894
+ aboutOwner: args.aboutOwner,
895
+ dormantPlugins: args.dormantPlugins,
896
+ activePlugins: args.activePlugins,
897
+ specialistDomains: args.specialistDomains,
898
+ // role=public spawns surface the visitor's session_key as
899
+ // `<chat-session>` so first-party-link skills (Task 336 property-card
900
+ // click redirect) can correlate the click log to the recommend-fire
901
+ // log. Admin spawns have no visitor identity — sentinel suppressed.
902
+ chatSessionKey: args.role === 'public' ? args.senderId : undefined,
903
+ // Task 939 — gated-visitor read-back. Surfaced only on public spawns;
904
+ // admin and open-mode public (no previousContext) suppress the section.
905
+ previousContext: args.role === 'public' ? args.previousContext : undefined,
906
+ });
907
+ if (!composed.ok) {
908
+ if (composed.reason === 'host-unresolved') {
909
+ const stderrTail = deps.host.lanIPv4Diagnostic ?? 'append-system-prompt unresolved';
910
+ deps.logger(`spawn-failed reason=host-context-unresolved stderr-tail=${JSON.stringify(stderrTail)}`);
911
+ return { ok: false, reason: 'host-context-unresolved', stderrTail };
912
+ }
913
+ const sep = composed.detail.lastIndexOf(':');
914
+ const file = sep > 0 ? composed.detail.slice(0, sep) : composed.detail;
915
+ const err = sep > 0 ? composed.detail.slice(sep + 1) : '';
916
+ // Task 618 — public dud refusals (empty/missing SOUL or KNOWLEDGE) carry
917
+ // their own reason so creation/Test-Greet names the file to author. The
918
+ // visitor sees an unavailable state; the dud is never served.
919
+ if (composed.reason === 'soul-empty' ||
920
+ composed.reason === 'knowledge-missing' ||
921
+ composed.reason === 'knowledge-empty') {
922
+ deps.logger(`[pty-spawn] spawn-failed reason=${composed.reason} role=public slug=${agentSlug} file=${file} err=${err}`);
923
+ return { ok: false, reason: composed.reason, stderrTail: composed.detail };
924
+ }
925
+ deps.logger(`[pty-spawn] spawn-failed reason=identity-unresolved accountDir=${deps.accountDir} role=${args.role} file=${file} err=${err}`);
926
+ return { ok: false, reason: 'identity-unresolved', stderrTail: composed.detail };
927
+ }
928
+ appendSystemPrompt = composed.block;
929
+ composedBytes = {
930
+ identity: composed.identityBytes,
931
+ soul: composed.soulBytes,
932
+ knowledge: composed.knowledgeBytes,
933
+ aboutOwner: composed.aboutOwnerBytes,
934
+ dormantPlugins: composed.dormantPluginsBytes,
935
+ };
936
+ deps.logger(`compose-system-prompt-ok role=${args.role} accountDir=${deps.accountDir} appendSystemPromptBytes=${Buffer.byteLength(appendSystemPrompt, 'utf8')} identityBytes=${composed.identityBytes} soulBytes=${composed.soulBytes} knowledgeBytes=${composed.knowledgeBytes} aboutOwnerBytes=${composed.aboutOwnerBytes} dormantPluginsBytes=${composed.dormantPluginsBytes} pluginManifestBytes=${composed.pluginManifestBytes} specialistDomainsBytes=${composed.specialistDomainsBytes} chatSessionBytes=${composed.chatSessionBytes}`);
937
+ // Task 618 — one structured line per public compose carries the byte
938
+ // counts so "did KNOWLEDGE reach the prompt?" is answerable from logs
939
+ // without reproduction. knowledgeBytes=0 cannot occur on a successful
940
+ // public spawn (empty ⇒ refusal), so a 0 here would itself be the anomaly.
941
+ if (args.role === 'public') {
942
+ deps.logger(`[pty-spawn] op=public-prompt-compose role=public slug=${agentSlug} identityBytes=${composed.identityBytes} soulBytes=${composed.soulBytes} knowledgeBytes=${composed.knowledgeBytes}`);
943
+ }
944
+ }
945
+ else {
946
+ deps.logger(`compose-system-prompt-skipped role=${args.role} specialist=${args.specialist} reason=agent-file-is-the-prompt`);
947
+ }
948
+ // Task 171 — headless specialists drop --remote-control and the
949
+ // URL-capture handler. The flag is load-bearing only for spawns whose
950
+ // session_<id> URL an operator opens in a browser.
951
+ //
952
+ // Task 500 — public/visitor spawns also drop --remote-control. Visitors
953
+ // drive the conversation through the channel-pty bridge, never the
954
+ // session_<id> RC URL, so the flag is dead weight (one idle outbound
955
+ // WebSocket per visitor). Admin interactive sessions now run under the
956
+ // per-account `claude rc` daemon, not per-spawn --remote-control.
957
+ const headless = isSpecialistSpawn && HEADLESS_ROLES.has(args.specialist);
958
+ const remoteControl = !headless && args.role !== 'public';
959
+ const argv = ['--verbose'];
960
+ if (remoteControl)
961
+ argv.push('--remote-control');
962
+ if (!isSpecialistSpawn) {
963
+ argv.push('--append-system-prompt', appendSystemPrompt);
964
+ }
965
+ if (args.resumeClaudeSessionId) {
966
+ argv.push('--resume', args.resumeClaudeSessionId);
967
+ }
968
+ else {
969
+ // Task 476 — pass the minted sessionId to claude so its PID file and
970
+ // JSONL carry the same UUID the spawner already stamped into
971
+ // mcp.json, the sidecar key, and the systemd unit token. Without
972
+ // this, claude mints its own and the spawner had to scrape the PID
973
+ // file to learn it.
974
+ argv.push('--session-id', sessionId);
975
+ }
976
+ if (args.specialist) {
977
+ argv.push('--agent', args.specialist);
978
+ }
979
+ if (args.model) {
980
+ argv.push('--model', args.model);
981
+ }
982
+ if (args.channels && args.channels.length > 0) {
983
+ for (const ch of args.channels) {
984
+ argv.push('--channels', ch);
985
+ }
986
+ }
987
+ // Task 165 — specialist spawn narrows `--allowed-tools` to the agent's
988
+ // frontmatter `tools:` list, not the admin surface. Pre-165, every
989
+ // specialist (recorder, etc.) was launched with the full 131-tool admin
990
+ // allowlist, defeating the agent file's gate. Operator spawns retain
991
+ // the role-based surface.
992
+ let specialistTools = null;
993
+ let strippedCount = 0;
994
+ if (isSpecialistSpawn) {
995
+ try {
996
+ specialistTools = readSpecialistTools(deps.claudeConfigDir, args.specialist);
997
+ }
998
+ catch (err) {
999
+ const detail = err instanceof Error ? err.message : String(err);
1000
+ deps.logger(`spawn-failed reason=identity-unresolved detail=${JSON.stringify(detail)}`);
1001
+ return { ok: false, reason: 'identity-unresolved', stderrTail: detail };
1002
+ }
1003
+ // Task 173 — brand-excluded tools from boot-time drift land in
1004
+ // deps.specialistToolStripList. Drop them before they reach argv so
1005
+ // the spawn does not pass a `--allowed-tools` name whose MCP server
1006
+ // is absent from this brand. The strip is per-specialist and exact-
1007
+ // match by tool name; the drift assertion has already determined
1008
+ // which tools belong here.
1009
+ const stripSet = deps.specialistToolStripList?.get(args.specialist);
1010
+ if (stripSet && stripSet.size > 0) {
1011
+ const filtered = specialistTools.filter((t) => !stripSet.has(t));
1012
+ strippedCount = specialistTools.length - filtered.length;
1013
+ specialistTools = filtered;
1014
+ }
1015
+ }
1016
+ // Task 207 — specialist spawns no longer push `--allowed-tools` argv.
1017
+ // `--agent <name>` resolves the agent file's `tools:` frontmatter
1018
+ // natively against Claude Code's plugin-tool registry (registry #1);
1019
+ // the argv push was Task 165's belt-and-suspenders mirror that became
1020
+ // load-bearing in the wrong direction after Task 203's `mcp__plugin_…`
1021
+ // rename: the per-spawn `.mcp.json` registered servers under the
1022
+ // bare-name namespace, so the renamed argv filter found zero matches
1023
+ // and collapsed registry #2 to empty. Specialist agent-frontmatter
1024
+ // tools are still READ above (jsonlTail.register consumes the array,
1025
+ // strip-list observability still fires) but never reach argv.
1026
+ // Operator (non-specialist) spawns retain the role-based push.
1027
+ // Task 615 — every public spawn (any channel) gets ZERO tools. The per-spawn
1028
+ // permissions.deny below is the authority; the allowlist exposes nothing and
1029
+ // the attachment Read scope is dropped. Replaces the Task 346 liveMemory
1030
+ // toggle, which only ever narrowed the public memory surface and is removed.
1031
+ const isPublic = args.role === 'public';
1032
+ const allowed = specialistTools !== null
1033
+ ? Array.from(new Set(specialistTools)).sort()
1034
+ : (() => {
1035
+ // Task 615 — expose nothing for any public spawn. The Task 609 sentinel
1036
+ // below keeps --allowed-tools non-empty so dontAsk stays fail-closed.
1037
+ // Task 756 — a public spawn with the webchat channel attached exposes
1038
+ // exactly one tool: the channel reply tool. dontAsk auto-denies every
1039
+ // other tool (the deny set is belt-and-suspenders over that), so the
1040
+ // visitor can reply and do nothing else.
1041
+ if (isPublic)
1042
+ return args.webchatChannel ? [WEBCHAT_CHANNEL_REPLY_TOOL] : [];
1043
+ // Task 579 — the admin operator spawn unions in every Claude Code
1044
+ // native tool. The PLUGIN.md-derived `toolSurface.admin` covers only
1045
+ // MCP tools; without this union, `--allowed-tools` is set explicitly
1046
+ // to that subset and the CLI silently denies the built-ins (LS,
1047
+ // Glob, Read, Bash, …), so the admin seat could not enumerate its
1048
+ // own disk.
1049
+ const unioned = new Set(deps.toolSurface.admin);
1050
+ for (const t of CC_NATIVE_TOOLS)
1051
+ unioned.add(t);
1052
+ return Array.from(unioned).sort();
1053
+ })();
1054
+ if (isSpecialistSpawn) {
1055
+ deps.logger(`pty-spawn-allowlist specialist=${args.specialist} source=native-agent-flag count=skipped stripped=${strippedCount}`);
1056
+ }
1057
+ else {
1058
+ for (const tool of allowed) {
1059
+ argv.push('--allowed-tools', tool);
1060
+ }
1061
+ const excludedSample = args.role === 'public'
1062
+ ? Array.from(deps.toolSurface.admin).filter((t) => !deps.toolSurface.public.has(t)).sort().slice(0, 5).join(',')
1063
+ : '';
1064
+ // Task 615 — every public spawn resolves an empty allowlist and denies the
1065
+ // whole surface, so report the closed posture; the authority is the
1066
+ // op=public-deny-injected line.
1067
+ const memoryField = isPublic ? ` memory=denied(zero-tool-surface)` : '';
1068
+ deps.logger(`tool-allowlist role=${args.role} count=${allowed.length} excluded=${excludedSample}${memoryField}`);
1069
+ }
1070
+ // Task 485 — observability for the gated/open public-spawn split. Mode
1071
+ // is inferred from the presence of the slice token (caller's bridge has
1072
+ // already gated the spawn on the cookie + accessMode). admin spawns are
1073
+ // skipped — the line is only meaningful on `role=public`.
1074
+ if (args.role === 'public') {
1075
+ const mode = args.sliceToken && args.sliceToken.length > 0 ? 'gated' : 'open';
1076
+ const sliceField = args.sliceToken && args.sliceToken.length > 0
1077
+ ? args.sliceToken.slice(0, 8)
1078
+ : 'none';
1079
+ const personField = args.personId && args.personId.length > 0 ? args.personId : 'none';
1080
+ deps.logger(`[pty-spawn] role=public mode=${mode} sliceToken=${sliceField} personId=${personField}`);
1081
+ }
1082
+ // Task 222 — the admin memory-write/update revoke that Task 213 implemented
1083
+ // at this CLI boundary moved to a PreToolUse hook, which Task 575 then
1084
+ // deleted entirely. Delegation boundaries (admin direct vs Task subagent)
1085
+ // are now governed at the doctrine layer via IDENTITY.md. The CLI
1086
+ // `--disallowed-tools` flag was load-bearing in the wrong direction: it
1087
+ // filters the tool surface of the spawned Claude Code process AND every
1088
+ // in-window Task subagent spawned from it, so the
1089
+ // admin-delegates-graph-write-to-database-operator contract introduced
1090
+ // by Task 214 stopped working — database-operator's frontmatter listed
1091
+ // the writers, but the inherited CLI deny stripped them.
1092
+ //
1093
+ // Task 207 — `--permission-mode bypassPermissions` for specialist spawns
1094
+ // when the caller has not explicitly set one. Headless specialists have
1095
+ // no operator to consent to write-tool invocations; default mode blocks
1096
+ // them with `Claude requested permissions to use mcp__plugin_…, but you
1097
+ // haven't granted it yet` and the recorder turn ends with zero writes.
1098
+ // Operator (non-specialist) spawns keep default mode — the operator IS
1099
+ // the consenter.
1100
+ //
1101
+ // Task 211 / 232 / 236 — modes whose first-time entry shows a consent
1102
+ // dialog pre-accept it by passing `--settings` (the `flagSettings`
1103
+ // source in Claude Code's settings precedence chain) with the
1104
+ // matching documented skip-prompt key. Without it the PTY hangs at the
1105
+ // prompt until the fs-watcher pid-file 30 s timeout kills it. The
1106
+ // Claude Code binary ships two such keys (`strings $(which claude) |
1107
+ // grep '^skip[A-Z][a-zA-Z]*Prompt$'`):
1108
+ //
1109
+ // bypassPermissions → skipDangerousModePermissionPrompt
1110
+ // ("Yes, I accept / No, exit" disclaimer)
1111
+ // every other mode → skipAutoPermissionPrompt
1112
+ // ("Enable auto mode?" first-time consent)
1113
+ //
1114
+ // Task 576 — claude v2.1.158 surfaces the auto-mode consent on
1115
+ // default-mode launches too, not only on `--permission-mode=auto`.
1116
+ // Default-mode PTYs hung at the prompt with `flag-settings-bytes=0`
1117
+ // until the fs-watcher killed them at the 30 s timeout.
1118
+ //
1119
+ // Task 605 — the brand's `settings.json` ships `permissions.defaultMode:
1120
+ // bypassPermissions`. When the spawn argv omits `--permission-mode`
1121
+ // (the `default` branch below skips it) Claude Code falls back to that
1122
+ // `userSettings` value and the session is actually elevated to bypass —
1123
+ // surfacing the dangerous-mode disclaimer, NOT the auto-mode prompt. A
1124
+ // `default`-mode spawn that only waived `skipAutoPermissionPrompt` hung
1125
+ // at the disclaimer until the 30 s timeout (public chat `cafe65db`).
1126
+ // Because the effective mode at the binary depends on settings the
1127
+ // spawner does not read, every mode now waives BOTH prompts — a skip
1128
+ // key for a prompt that does not appear is a no-op. The waiver MUST
1129
+ // stay per-spawn — writing it into the brand's
1130
+ // `~/.<brand>/.claude/settings.json` (the `userSettings` source) would
1131
+ // permanently waive the disclaimer for every Claude Code session under
1132
+ // the brand. Task 232 added the bypass row; Task 236 added the auto
1133
+ // row; Task 576 broadened to default/plan/acceptEdits; Task 605 made
1134
+ // every mode waive both prompts. New keys land here by extending the
1135
+ // map; no other call site needs to change.
1136
+ // Task 506 — public web-chat sessions face untrusted internet input and
1137
+ // have no operator to answer a permission prompt. Left in `default` mode
1138
+ // they inherit the brand `settings.json` `permissions.defaultMode:
1139
+ // bypassPermissions` (seeded by Task 583 for the claude.ai/code admin
1140
+ // surface), which skips all permission checks and grants the anonymous
1141
+ // visitor full native tools (Bash/Write/Edit/Read) auto-approved — a
1142
+ // fail-OPEN RCE-class exposure, and the agent flails with those tools until
1143
+ // the 120 s webchat turn-timeout fires. `dontAsk` is fail-CLOSED: it never
1144
+ // prompts and auto-denies any tool not in `--allowed-tools`, and the
1145
+ // explicit `--permission-mode dontAsk` flag overrides the brand
1146
+ // `defaultMode`. Verified on the device (claude 2.1.160, when the brand seed
1147
+ // still carried `allow: ["*"]`, since dropped by Task 664): `dontAsk` denies
1148
+ // Bash even with a wildcard allow present. The gate is central here (the single spawn
1149
+ // chokepoint) rather than threaded per-caller, and is scoped to
1150
+ // `webchat` — WhatsApp/Telegram share the profile but stay `default`
1151
+ // pending a separate decision (Task 506 scope). An explicit
1152
+ // `args.permissionMode` (operator-selected) still wins.
1153
+ // Task 612 / 615 — every public spawn is an anonymous, zero-tool surface; it
1154
+ // is pinned to the strictest mode and is NOT operator-overridable. Forcing
1155
+ // dontAsk here (rather than letting `args.permissionMode` win, as Task 506
1156
+ // allowed) keeps the empty-allowlist 609 sentinel reachable and prevents a
1157
+ // future caller from downgrading the surface to bypassPermissions, which would
1158
+ // skip the per-spawn permissions.deny entirely. Other roles keep the
1159
+ // operator-selected mode.
1160
+ // Task 956 — admin sessions are fixed to bypassPermissions on every spawn,
1161
+ // independent of any caller-supplied or stored mode (the /chat composer no
1162
+ // longer carries a mode lever). Specialists keep their bypass default; public
1163
+ // stays fail-closed dontAsk; any other role keeps the caller-selected mode.
1164
+ const effectiveMode = isSpecialistSpawn
1165
+ ? (args.permissionMode ?? 'bypassPermissions')
1166
+ : isPublic
1167
+ ? 'dontAsk'
1168
+ : args.role === 'admin'
1169
+ ? 'bypassPermissions'
1170
+ : (args.permissionMode ?? 'default');
1171
+ const BOTH_PROMPTS = '{"skipDangerousModePermissionPrompt":true,"skipAutoPermissionPrompt":true}';
1172
+ const FLAG_SETTINGS_BY_MODE = {
1173
+ bypassPermissions: BOTH_PROMPTS,
1174
+ auto: BOTH_PROMPTS,
1175
+ default: BOTH_PROMPTS,
1176
+ plan: BOTH_PROMPTS,
1177
+ acceptEdits: BOTH_PROMPTS,
1178
+ dontAsk: BOTH_PROMPTS,
1179
+ };
1180
+ let flagSettingsValue = FLAG_SETTINGS_BY_MODE[effectiveMode] ?? '';
1181
+ // Task 574 — every mode is mapped to a both-prompts waiver above, so an
1182
+ // empty value can only mean a new PermissionMode reached the type without a
1183
+ // FLAG_SETTINGS_BY_MODE row. Spawning it would hang at the un-waived consent
1184
+ // dialog until the 30 s pid-file timeout. Refuse loudly instead — a
1185
+ // consent-mode spawn with flag-settings-bytes=0 must never be a silent path.
1186
+ if (flagSettingsValue === '') {
1187
+ deps.logger(`spawn-config-error reason=consent-waiver-missing mode=${effectiveMode}`);
1188
+ return {
1189
+ ok: false,
1190
+ reason: 'consent-waiver-missing',
1191
+ stderrTail: `consent waiver missing: mode=${effectiveMode} has no FLAG_SETTINGS_BY_MODE entry`,
1192
+ };
1193
+ }
1194
+ // Task 612 / 615 — merge the zero-tool-surface permissions.deny into the SAME
1195
+ // --settings that carries the prompt-skip keys. Measured (2.1.160): a per-spawn
1196
+ // deny beats even a brand-wide wildcard allow — the only lever that did. The
1197
+ // brand seed no longer carries `allow:["*"]` (Task 664), so this deny is now
1198
+ // defensive over an empty allow rather than the sole counter-lever; it stays
1199
+ // because deny beats any allow form and a future caller could re-add one. The
1200
+ // gate binds on role=public (every channel), not on effectiveMode — an operator
1201
+ // who hand-picks a non-dontAsk mode for a public spawn still gets the closed
1202
+ // surface.
1203
+ if (isPublic) {
1204
+ const base = flagSettingsValue ? JSON.parse(flagSettingsValue) : {};
1205
+ const deny = buildPublicDeny();
1206
+ base.permissions = { ...(base.permissions ?? {}), deny };
1207
+ flagSettingsValue = JSON.stringify(base);
1208
+ deps.logger(`op=public-deny-injected count=${deny.length} tools=${deny.join(',')}`);
1209
+ }
1210
+ if (effectiveMode !== 'default') {
1211
+ argv.push('--permission-mode', effectiveMode);
1212
+ }
1213
+ if (flagSettingsValue) {
1214
+ argv.push('--settings', flagSettingsValue);
1215
+ }
1216
+ // Task 278 — when auto is requested, capture the binary's
1217
+ // `[auto-mode] verifyAutoModeGateAccess: enabledState=...` debug line
1218
+ // so the manager can derive `effectivePermissionMode` and surface a
1219
+ // downgrade in the admin UI. The 2.1.150 binary writes `auto` to the
1220
+ // JSONL `permission-mode` record whether or not it actually entered
1221
+ // auto at runtime, so the JSONL is not a usable signal source. The
1222
+ // `--debug=auto-mode` category filter narrows the file to one line per
1223
+ // gate-check (about 237 bytes). Task 476 — sessionId is now known up
1224
+ // front, so the debug file is written directly to its canonical
1225
+ // `<sessionId>.permission-mode.log` path; the prior pending-path +
1226
+ // post-waitForPid rename dance (Task 278) collapsed once unitToken
1227
+ // and sessionId unified. Non-auto spawns are untouched.
1228
+ if (effectiveMode === 'auto') {
1229
+ const projectsDir = projectsDirForCwd(deps.spawnCwd);
1230
+ mkdirSync(projectsDir, { recursive: true });
1231
+ const permissionModeLogPath = permissionModeLogPathForSessionId(deps.spawnCwd, sessionId);
1232
+ writeFileSync(permissionModeLogPath, '');
1233
+ argv.push('--debug=auto-mode', `--debug-file=${permissionModeLogPath}`);
1234
+ }
1235
+ // Single MCP channel (Task 502). Admin and specialist spawns take platform
1236
+ // MCPs only from installed plugins (long prefix `mcp__plugin_<p>_<p>__<t>`),
1237
+ // never the per-spawn `.mcp.json` — registering the same server through both
1238
+ // channels let the plugin channel win the name collision while the
1239
+ // instructions referenced the short per-spawn name, so short-prefix calls
1240
+ // failed until the model guessed the long name. Per-account env (ACCOUNT_ID,
1241
+ // USER_ID, NEO4J_URI, NEO4J_PASSWORD, PLATFORM_ROOT, CLAUDE_CONFIG_DIR) rides
1242
+ // the PTY env block below. Public spawns keep the per-spawn write so the
1243
+ // toolless visitor boots ZERO MCP servers (Task 615): the written file carries
1244
+ // an empty `mcpServers`, and `--strict-mcp-config` below blocks auto-discovery
1245
+ // of any project `.mcp.json`, so no server reaches an anonymous visitor.
1246
+ let mcpConfigResult = null;
1247
+ if (args.role === 'public' && !isSpecialistSpawn) {
1248
+ mcpConfigResult = writePerSpawnMcpConfig({
1249
+ role: args.role,
1250
+ toolSurface: deps.toolSurface,
1251
+ accountId: deps.accountId,
1252
+ userId: args.userId,
1253
+ platformRoot: deps.platformRoot,
1254
+ logDir: deps.logDir,
1255
+ sessionId,
1256
+ agentSlug,
1257
+ agentScopeSlug,
1258
+ targetDir: deps.mcpConfigDir ?? tmpdir(),
1259
+ logger: deps.logger,
1260
+ specialistTools,
1261
+ });
1262
+ if (!mcpConfigResult.ok) {
1263
+ return { ok: false, reason: 'mcp-config-write-failed', stderrTail: mcpConfigResult.detail };
1264
+ }
1265
+ argv.push('--mcp-config', mcpConfigResult.path);
1266
+ // Task 205 — surface whether the placeholder map received a non-empty
1267
+ // USER_ID. Silent-compaction / recorder spawns legitimately stamp empty;
1268
+ // a cookie-auth admin spawn with userId-present=no is a regression and
1269
+ // names exactly which spawn produced the `MissingUserIdError` later.
1270
+ deps.logger(`pty-spawn-mcp-config-env userId-present=${args.userId && args.userId.length > 0 ? 'yes' : 'no'}`);
1271
+ // Task 756 — attach the webchat native channel to this public spawn. The
1272
+ // empty per-spawn config above contributes no servers; this ADDS the
1273
+ // channel server as a second `--mcp-config` (additive, both under the
1274
+ // `--strict-mcp-config` below), so the visitor's only MCP server — and via
1275
+ // the reply-only `--allowed-tools`, its only tool — is the channel reply
1276
+ // tool. The dev-channels flag activates the non-allowlisted custom channel.
1277
+ if (args.webchatChannel) {
1278
+ const channelPath = webchatChannelMcpConfigPath(sessionId, deps.mcpConfigDir ?? tmpdir());
1279
+ const servers = buildWebchatChannelMcpServers({
1280
+ sessionId,
1281
+ key: args.webchatChannel.key,
1282
+ gatewayUrl: args.webchatChannel.gatewayUrl,
1283
+ serverPath: args.webchatChannel.serverPath,
1284
+ role: 'public',
1285
+ });
1286
+ writeFileSync(channelPath, JSON.stringify({ mcpServers: servers }, null, 2), 'utf8');
1287
+ argv.push(...buildWebchatChannelArgv(channelPath));
1288
+ deps.logger(`op=webchat-public-channel key=${args.webchatChannel.key.slice(0, 8)} path=${channelPath}`);
1289
+ }
1290
+ }
1291
+ // Task 502 — every pty-spawn passes `--strict-mcp-config` so Claude Code uses
1292
+ // only explicit MCP sources and never auto-discovers a project `.mcp.json`.
1293
+ // Admin + specialist spawns therefore take platform MCPs solely from installed
1294
+ // plugins (long prefix); public spawns add their restricted `--mcp-config`
1295
+ // above. The `claude rc` daemon no longer writes a project `.mcp.json` (its
1296
+ // composer sessions ride installed plugins via the daemon child env), so there
1297
+ // is no short-prefix project file left to collide with the long names.
1298
+ argv.push('--strict-mcp-config');
1299
+ const dirsToAdd = [...deps.agentsDirs[args.role]];
1300
+ if (args.role === 'admin' && existsSync(deps.perAccountSpecialistsDir)) {
1301
+ dirsToAdd.push(deps.perAccountSpecialistsDir);
1302
+ }
1303
+ for (const d of dirsToAdd) {
1304
+ argv.push('--add-dir', d);
1305
+ deps.logger(`pty-spawn-agents-dir role=${args.role} path=${d}`);
1306
+ }
1307
+ if (mcpConfigResult) {
1308
+ deps.logger(`pty-spawn-mcp-config servers=${mcpConfigResult.serverCount} tools=${allowed.length} bytes=${mcpConfigResult.bytes} path=${mcpConfigResult.path}`);
1309
+ }
1310
+ else {
1311
+ // Admin + specialist spawns omit the per-spawn .mcp.json (Task 502 / 207);
1312
+ // their MCP registration is the installed-plugin channel (long prefix),
1313
+ // visible via the plugin-manifest log chain at session start, not here.
1314
+ deps.logger(`pty-spawn-mcp-config role=${args.role} specialist=${args.specialist ?? 'none'} source=installed-plugins`);
1315
+ }
1316
+ // Task 612 / 615 — every public spawn denies all native Read via the per-spawn
1317
+ // permissions.deny (no path-scoped carve-out can survive an absolute Read deny),
1318
+ // so no attachment --add-dir + Read scope is pushed on any public channel;
1319
+ // redelivering uploads off native Read is Task 613.
1320
+ // Task 609 — a public spawn runs in dontAsk (Task 506 / 615), which
1321
+ // fail-closes only against tools NOT in an explicit --allowed-tools. The
1322
+ // public surface now resolves empty on every channel (Task 615), so the loops
1323
+ // above push NO --allowed-tools flag, leaving dontAsk nothing to deny against.
1324
+ // Historically (pre-664) the brand settings.json allow:["*"] then re-opened
1325
+ // every native tool to an anonymous visitor (fail-OPEN, the c11777df repro);
1326
+ // the brand allow is now [] (Task 664), but this anchor is kept regardless so
1327
+ // the closed posture does not depend on the brand seed shape. Anchor the
1328
+ // closed posture with one non-native deny-basis token: its MCP server `none` is never
1329
+ // registered, so it grants nothing while making --allowed-tools present and
1330
+ // non-empty. Native exclusion is checked by bare name against CC_NATIVE_TOOLS.
1331
+ // Must precede the `--` prompt sentinel below, which ends option parsing. The
1332
+ // guard binds on effectiveMode === 'dontAsk', not the channel — every public
1333
+ // spawn resolves to dontAsk, and an operator-selected dontAsk admin spawn is
1334
+ // anchored too; both are the correct fail-closed invariant.
1335
+ if (effectiveMode === 'dontAsk') {
1336
+ const emittedAllowed = [];
1337
+ for (let k = 0; k < argv.length - 1; k++) {
1338
+ if (argv[k] === '--allowed-tools')
1339
+ emittedAllowed.push(argv[k + 1]);
1340
+ }
1341
+ if (emittedAllowed.length === 0) {
1342
+ argv.push('--allowed-tools', DONTASK_DENY_BASIS);
1343
+ emittedAllowed.push(DONTASK_DENY_BASIS);
1344
+ }
1345
+ const nativeExcluded = !emittedAllowed.some((t) => CC_NATIVE_TOOLS.has(t));
1346
+ deps.logger(`op=dontask-allowlist-guard count=${emittedAllowed.length} nativeExcluded=${nativeExcluded}`);
1347
+ // Brief-mandated backstop. Unreachable while the anchor above is
1348
+ // unconditional; it exists so a future change that conditions the anchor
1349
+ // away cannot silently reintroduce a fail-open dontAsk launch.
1350
+ if (emittedAllowed.length === 0) {
1351
+ deps.logger(`spawn-config-error reason=dontask-empty-allowlist sessionId=${sessionId} channel=${args.channel}`);
1352
+ return { ok: false, reason: 'dontask-empty-allowlist', stderrTail: 'dontAsk spawn produced an empty --allowed-tools (Task 609)' };
1353
+ }
1354
+ }
1355
+ // Task 153 / 162 — trailing positional `prompt`. The claude CLI signature
1356
+ // is `claude [options] [command] [prompt]`; when set, the string becomes
1357
+ // the session's first user turn at PTY startup. The POSIX `--` sentinel
1358
+ // ends options parsing so the preceding variadic flags (`--add-dir`,
1359
+ // `--allowed-tools`) cannot swallow the prompt as another value.
1360
+ const promptBytes = Buffer.byteLength(args.initialMessage ?? '', 'utf8');
1361
+ let promptPositional = false;
1362
+ if (args.initialMessage && args.initialMessage.length > 0) {
1363
+ argv.push('--', args.initialMessage);
1364
+ promptPositional = true;
1365
+ }
1366
+ const hooksResolved = discoverHooks(deps.spawnCwd, process.env.CLAUDE_CONFIG_DIR);
1367
+ // Task 205 — `userId` slug on the spawn-start line lets the operator
1368
+ // pair a spawn with the subsequent jsonl. `absent` only on documented
1369
+ // silent-compaction / recorder paths. Slice pattern matches the UI
1370
+ // route's spawn-request-in log (claude-sessions.ts).
1371
+ const userIdSlug = args.userId ? args.userId.slice(0, 8) : 'absent';
1372
+ // Task 207 — assemble the PTY env once so the spawn-start log can name
1373
+ // the explicit specialist-env keys before the spawn fires. The keys-only
1374
+ // surface lets `grep env-keys=` on server.log confirm the contract at
1375
+ // spawn time without leaking secret values into logs.
1376
+ const spawnEnv = {
1377
+ ...process.env,
1378
+ TERM: 'xterm-256color',
1379
+ MAXY_SESSION_ROLE: args.role,
1380
+ MAXY_HIDDEN_SPAWN: args.hidden ? '1' : '0',
1381
+ // Task 147 — stamps the spawn's specialist name (empty for the admin
1382
+ // and Sidebar "New session" spawns). Hooks (`admin-authoring-observer`)
1383
+ // and row tracking read it to tell a specialist spawn from the admin.
1384
+ // No standalone per-specialist env flag.
1385
+ MAXY_SPECIALIST: args.specialist ?? '',
1386
+ // Task 205 — admin operator's userId on the MCP child env so
1387
+ // scheduling, memory, time-resolve etc. can key UserProfile reads
1388
+ // by (accountId, userId). Empty string on silent-compaction /
1389
+ // recorder paths; MCP module init must stay boot-tolerant per
1390
+ // the Task 202 contract, so handlers refuse at first use rather
1391
+ // than refusing at boot.
1392
+ USER_ID: args.userId ?? '',
1393
+ // Task 210 — disable Claude Code's default-on auto-memory feature
1394
+ // on every spawn this manager creates. Operator knowledge writes
1395
+ // are owned by `database-operator`, which the admin dispatches via
1396
+ // the Task tool inside the live session; the auto-memory directory at
1397
+ // `<configDir>/projects/<slug>/memory/` is a competing parallel
1398
+ // store that defeats the graph contract. The env knob is named
1399
+ // in the claude binary's strings table and contracts that, when
1400
+ // set, claude will not read from or write to the auto-memory dir.
1401
+ CLAUDE_CODE_DISABLE_AUTO_MEMORY: '1',
1402
+ };
1403
+ // Task 207 — specialist spawns inherit per-account env explicitly so
1404
+ // plugin-system MCP children get a deterministic context without the
1405
+ // per-spawn `.mcp.json` (dropped above). `{...process.env}` already
1406
+ // covers the production case where the manager systemd unit sets
1407
+ // these — the explicit overwrite documents the contract, plumbs the
1408
+ // values through `deps` so unit tests can inject them, and surfaces
1409
+ // them on the `env-keys=` log line below. Operator spawns are unchanged;
1410
+ // their per-spawn `.mcp.json` continues to inject these via placeholders.
1411
+ //
1412
+ // Task 210 — `CLAUDE_CODE_DISABLE_AUTO_MEMORY` is a harness-control
1413
+ // flag set on every spawn (operator + specialist), so it leads the
1414
+ // env-keys list and the `env-keys=` field is always emitted. This
1415
+ // lets `grep env-keys=CLAUDE_CODE_DISABLE_AUTO_MEMORY server.log`
1416
+ // prove the auto-memory disable is in effect on the most recent
1417
+ // spawn without inspecting the binary's behaviour.
1418
+ const envKeys = ['CLAUDE_CODE_DISABLE_AUTO_MEMORY'];
1419
+ // Task 654 — public spawns no longer stamp any read-scope env. Every
1420
+ // `role=public` spawn is toolless (buildPublicDeny denies mcp__memory__*),
1421
+ // so the old `ALLOWED_SCOPES`/`ACCESS_SLICE_TOKEN`/`ACCESS_PERSON_ID` stamps
1422
+ // had no reader and the public BM25 read path they fed has been retired.
1423
+ //
1424
+ // Task 485 — the session-end reviewer dispatches database-operator (via Task)
1425
+ // for every write, and that subagent inherits RECORDER_SLICE_TOKEN so its
1426
+ // memory-write stamps sliceToken + scope=user on every created node, and
1427
+ // memory-update loud-fails on cross-slice mutation. The reviewer itself reads
1428
+ // nothing from the graph — its <transcript> and <prior-writes> inputs are
1429
+ // pre-injected into the dispatch prompt — so no read-scope env is stamped.
1430
+ if (args.specialist === 'public-session-reviewer' && args.sliceToken && args.sliceToken.length > 0) {
1431
+ spawnEnv.RECORDER_SLICE_TOKEN = args.sliceToken;
1432
+ envKeys.push('RECORDER_SLICE_TOKEN');
1433
+ }
1434
+ // Task 502 — admin operator spawns now take platform MCPs from installed
1435
+ // plugins (no per-spawn `.mcp.json`), so the per-account + per-spawn env that
1436
+ // the admin `.mcp.json` used to inject via placeholders must instead ride the
1437
+ // PTY process env: Claude Code substitutes `${ACCOUNT_ID}` / `${SESSION_ID}` /
1438
+ // `${AGENT_SLUG}` / `${AGENT_SLUG_SCOPE}` etc. in each installed plugin's
1439
+ // PLUGIN.md `mcp:` block from this spawnEnv. The same is true for every
1440
+ // specialist spawn (Task 207/476/487). Without these stamps, plugin MCP
1441
+ // children boot with empty context — graph writes record
1442
+ // `createdBySession=unknown` / `createdByAgent=unknown`, and per-account
1443
+ // handlers refuse at first use. Public operator spawns keep the per-spawn
1444
+ // `.mcp.json` placeholder path, so they are excluded here. For specialists
1445
+ // agentSlug === agentScopeSlug (the specialist name).
1446
+ if (isSpecialistSpawn || args.role === 'admin') {
1447
+ spawnEnv.ACCOUNT_ID = deps.accountId;
1448
+ spawnEnv.PLATFORM_ROOT = deps.platformRoot;
1449
+ // Task 714 — ACCOUNT_DIR completes the per-account env: url-get/email/memory
1450
+ // read it. Same formula as the placeholder map and spawn-context.
1451
+ spawnEnv.ACCOUNT_DIR = join(dirname(deps.platformRoot), 'data', 'accounts', deps.accountId);
1452
+ spawnEnv.CLAUDE_CONFIG_DIR = deps.claudeConfigDir;
1453
+ spawnEnv.NEO4J_URI = deps.brandedNeo4jUri ?? '';
1454
+ spawnEnv.NEO4J_PASSWORD = deps.brandedNeo4jPassword ?? '';
1455
+ spawnEnv.SESSION_ID = sessionId;
1456
+ spawnEnv.AGENT_SLUG = agentSlug;
1457
+ spawnEnv.AGENT_SLUG_SCOPE = agentScopeSlug;
1458
+ envKeys.push('ACCOUNT_ID', 'USER_ID', 'PLATFORM_ROOT', 'CLAUDE_CONFIG_DIR', 'NEO4J_URI', 'NEO4J_PASSWORD', 'SESSION_ID', 'AGENT_SLUG', 'AGENT_SLUG_SCOPE', 'ACCOUNT_DIR');
1459
+ }
1460
+ // Task 382 — stamp SESSION_NODE_ID on both admin AND specialist spawn
1461
+ // envs so the memory/contacts MCP wrappers see the active conversation's
1462
+ // sessionId and auto-inject the inbound :PRODUCED edge on writes to
1463
+ // gated labels (:Person, :Organization, etc.). The same env-var name covers
1464
+ // both branches because the wrapper contract is single. Skipped when the
1465
+ // arg is absent — autonomous spawns (cron, scheduled-task) without a parent
1466
+ // conversation must thread `producedByTaskId` via `work-create` instead.
1467
+ if (typeof args.conversationNodeId === 'string' && args.conversationNodeId.length > 0) {
1468
+ spawnEnv.SESSION_NODE_ID = args.conversationNodeId;
1469
+ envKeys.push('SESSION_NODE_ID');
1470
+ }
1471
+ const envKeysField = ` env-keys=${envKeys.join(',')}`;
1472
+ deps.logger(`pty-spawn-start claudeBin=${deps.claudeBin} argv-count=${argv.length} append-system-prompt-bytes=${Buffer.byteLength(appendSystemPrompt, 'utf8')} permission-mode=${args.permissionMode ?? 'default'} flag-settings-bytes=${Buffer.byteLength(flagSettingsValue, 'utf8')} resume=${args.resumeClaudeSessionId ? 'yes' : 'no'} sessionId=${sessionId.slice(0, 8)} session-id-source=${sessionIdSource} agentSlug=${agentSlug || '-'} specialist=${args.specialist ?? 'none'} prompt-positional=${promptPositional ? 'yes' : 'no'} prompt-bytes=${promptBytes} userId=${userIdSlug} hooksResolved=${hooksResolved.join(',') || 'none'}${envKeysField}`);
1473
+ const ptySpawnStart = Date.now();
1474
+ let pty;
1475
+ try {
1476
+ pty = deps.spawnPty(deps.claudeBin, argv, spawnEnv, unitToken);
1477
+ }
1478
+ catch (err) {
1479
+ const e = err;
1480
+ const reason = e.code === 'ENOENT' ? 'which-claude-not-found' : 'pty-spawn-failed';
1481
+ const stderrTail = e.message?.slice(-200) ?? '';
1482
+ deps.logger(`spawn-failed reason=${reason} stderr-tail=${JSON.stringify(stderrTail)} pty-spawn-ms=${Date.now() - ptySpawnStart}`);
1483
+ return { ok: false, reason, stderrTail };
1484
+ }
1485
+ deps.logger(`pty-spawned pid=${pty.pid} ms=${Date.now() - ptySpawnStart}`);
1486
+ // Task 476 — register the minted sessionId with the watcher BEFORE
1487
+ // waitForPid fires. Production fs-watcher ignores the hook (it learns
1488
+ // sessionId from claude's PID file, which already carries this same
1489
+ // UUID because `--session-id` was passed). Test mocks use it to
1490
+ // build the synthetic row's sessionId, so the equality assertion
1491
+ // below passes without each test harvesting `--session-id` from argv.
1492
+ deps.watcher.registerPidSessionId?.(pty.pid, sessionId);
1493
+ const tail = attachPtyTail(pty);
1494
+ // Task 756 — auto-confirm the one-time development-channels prompt on this
1495
+ // /spawn PTY. rc-spawn confirms it in http-server.ts; the public webchat
1496
+ // spawn takes the spawnClaudeSession path instead, which never loaded a
1497
+ // dev channel before, so without this the `--dangerously-load-development-
1498
+ // channels` prompt hangs the boot until pid-bind-timeout. Armed only when a
1499
+ // channel is attached; fires Enter once (mirror of the rc-spawn confirm,
1500
+ // sharing the channel-agnostic isDevChannelPrompt detector). Bounded startup
1501
+ // keystroke only — inbound stays a channel event.
1502
+ if (args.webchatChannel) {
1503
+ let devChannelConfirmed = false;
1504
+ let devChannelScan = '';
1505
+ const devSub = pty.onData((data) => {
1506
+ if (devChannelConfirmed)
1507
+ return;
1508
+ devChannelScan += data;
1509
+ if (devChannelScan.length > 4096)
1510
+ devChannelScan = devChannelScan.slice(devChannelScan.length - 4096);
1511
+ if (isDevChannelPrompt(devChannelScan)) {
1512
+ devChannelConfirmed = true;
1513
+ devChannelScan = '';
1514
+ pty.write('\r');
1515
+ devSub.dispose();
1516
+ deps.logger(`op=webchat-public-dev-channel-confirmed pid=${pty.pid}`);
1517
+ }
1518
+ });
1519
+ }
1520
+ // URL capture runs in parallel; its result is patched onto the
1521
+ // sidecar when (if) it fires. The spawn promise does not block on
1522
+ // it. A timeout here is logged but not a failure — the operator's
1523
+ // iframe URL falls back to UI-side construction from bridgeSessionId.
1524
+ //
1525
+ // Task 171 — headless spawns never emit the `/remote-control is active`
1526
+ // banner (the flag is absent), so the handler is not attached and no
1527
+ // PTY bytes are consumed by a regex that will never match. Task 500 —
1528
+ // same for public spawns (remoteControl is false), so the gate keys off
1529
+ // `remoteControl`, not `headless`.
1530
+ //
1531
+ // Task 260 — `capturedUrl` is the value SpawnedSession returns to the
1532
+ // caller (the route includes it in the immediate /spawn response when
1533
+ // the banner happens to land before the spawn promise resolves). The
1534
+ // canonical surface is the sidecar; the captured value is also written
1535
+ // there via `updateSidecar` so the watcher's row picks it up.
1536
+ let capturedUrl = null;
1537
+ // Mutable holder so the URL callback can find the row once sessionId
1538
+ // is known. The PID-file event below sets sessionIdRef.current.
1539
+ const sessionIdRef = { current: null };
1540
+ if (remoteControl) {
1541
+ startUrlCapture({
1542
+ pty,
1543
+ timeoutMs: deps.urlCaptureTimeoutMs,
1544
+ logger: deps.logger,
1545
+ onUrl: (url) => {
1546
+ capturedUrl = url;
1547
+ deps.logger(`url-captured pid=${pty.pid} url=${url}`);
1548
+ const sid = sessionIdRef.current;
1549
+ if (!sid)
1550
+ return;
1551
+ const sidecarPath = sidecarPathForSessionId(deps.spawnCwd, sid);
1552
+ const written = updateSidecar(sidecarPath, { url }, deps.logger);
1553
+ if (!written) {
1554
+ deps.logger(`[session-sidecar] url-update-skipped sessionId=${sid.slice(0, 8)} reason=sidecar-missing`);
1555
+ return;
1556
+ }
1557
+ // Force the watcher to re-read the sidecar so its row index
1558
+ // surfaces the new URL to /events and /list. fs.watch does not
1559
+ // fire for sidecar writes (we only watch *.jsonl and PID files).
1560
+ deps.watcher.refreshSidecar(sid);
1561
+ deps.onUrlCaptured?.(sid);
1562
+ },
1563
+ onTimeout: () => {
1564
+ deps.logger(`url-capture-timeout pid=${pty.pid} ms=${Date.now() - start}`);
1565
+ },
1566
+ });
1567
+ }
1568
+ // Wait for the watcher's PID-file event. The watcher resolves
1569
+ // synchronously if the file already exists (race-safe boot scan).
1570
+ // Task 476 — this wait is now a "claude has booted" signal, NOT the
1571
+ // source of truth for sessionId. The spawner minted the sessionId at
1572
+ // the top of pty-spawn and passed it to claude via `--session-id`
1573
+ // (fresh) or `--resume` (resume); the assertion below confirms claude
1574
+ // honoured it on fresh spawns. Task 258 still applies on resume:
1575
+ // `claude --resume` can briefly write a fresh mint to its PID file
1576
+ // before rewriting (per Task 186) to the prior canonical id. Resume
1577
+ // spawns therefore tolerate the transient — equality is guaranteed
1578
+ // by --resume semantics so the assertion would only false-positive on
1579
+ // the race.
1580
+ const startupPrompt = watchForStartupPrompt(pty);
1581
+ let row;
1582
+ try {
1583
+ row = await Promise.race([
1584
+ deps.watcher.waitForPid(pty.pid, deps.pidFileTimeoutMs),
1585
+ startupPrompt.promise,
1586
+ ]);
1587
+ }
1588
+ catch (err) {
1589
+ pty.kill('SIGKILL');
1590
+ const stderrTail = tail.getTail();
1591
+ tail.dispose();
1592
+ startupPrompt.dispose();
1593
+ if (err instanceof StartupPromptError) {
1594
+ deps.logger(`spawn-failed reason=startup-prompt-block pid=${pty.pid} prompt=${JSON.stringify(err.title)} captureTail=${Buffer.byteLength(stderrTail, 'utf8')}`);
1595
+ return { ok: false, reason: 'startup-prompt-block', stderrTail };
1596
+ }
1597
+ const detail = err instanceof Error ? err.message : String(err);
1598
+ deps.logger(`spawn-failed reason=pid-file-timeout pid=${pty.pid} detail=${JSON.stringify(detail)} stderr-tail=${formatTailForLog(stderrTail)}`);
1599
+ return { ok: false, reason: 'pid-file-timeout', stderrTail };
1600
+ }
1601
+ startupPrompt.dispose();
1602
+ // Task 476 — sessionId was minted at the top of pty-spawn and passed
1603
+ // to claude via `--session-id` / `--resume`. The PID file's sessionId
1604
+ // is asserted equal on fresh spawns; resume spawns tolerate a brief
1605
+ // transient mismatch (Task 258: claude --resume can briefly write a
1606
+ // fresh mint to the PID file before rewriting to the prior canonical
1607
+ // id). A mismatch on a fresh spawn means the claude binary did not
1608
+ // honour `--session-id` and is a loud spawn-failure, not silent
1609
+ // rebinding.
1610
+ if (sessionIdSource === 'minted' && row.sessionId !== sessionId) {
1611
+ pty.kill('SIGKILL');
1612
+ tail.dispose();
1613
+ deps.logger(`spawn-failed reason=pid-file-session-mismatch minted=${sessionId.slice(0, 8)} pid-file=${row.sessionId.slice(0, 8)} pid=${pty.pid}`);
1614
+ return { ok: false, reason: 'pid-file-session-mismatch', stderrTail: `pid-file sessionId=${row.sessionId} != minted=${sessionId}` };
1615
+ }
1616
+ sessionIdRef.current = sessionId;
1617
+ const specialist = args.specialist ?? row.agent ?? null;
1618
+ const hidden = args.hidden === true;
1619
+ // Task 260 — write the sidecar BEFORE registering the tracker. The
1620
+ // sidecar is the canonical record of spawn metadata; the watcher
1621
+ // row will read it the moment the JSONL CREATE event fires (the
1622
+ // first user turn flush). If the write fails — disk full, RO mount,
1623
+ // unexpected eperm — refuse the spawn loudly rather than launch a
1624
+ // metadata-less PTY that the wire payload could not honour. The
1625
+ // PTY is killed in the catch so no orphan claude child remains.
1626
+ //
1627
+ // Task 342 — on a resume spawn, `claude --resume` does NOT reprint
1628
+ // the `/remote-control is active` banner, so `capturedUrl` stays
1629
+ // null and writing the sidecar fresh would wipe the URL captured
1630
+ // during the original spawn. Read the prior sidecar and carry
1631
+ // forward the URL when capture didn't fire. Field-by-field audit:
1632
+ // only `url` is preserved — all other fields are either operator-
1633
+ // settable on the resume body (senderId/role/channel/permissionMode/
1634
+ // model/hidden/specialist) or re-derived by tails
1635
+ // (effectivePermissionMode). `startedAt` re-stamps to this PTY's
1636
+ // start time, the pre-existing behaviour.
1637
+ const sidecarPath = sidecarPathForSessionId(deps.spawnCwd, sessionId);
1638
+ const priorSidecar = args.resumeClaudeSessionId
1639
+ ? readSidecar(sidecarPath, deps.logger).sidecar
1640
+ : null;
1641
+ const resolvedUrl = capturedUrl ?? priorSidecar?.url ?? null;
1642
+ const urlSource = capturedUrl ? 'captured' : priorSidecar?.url ? 'prior-sidecar' : 'none';
1643
+ deps.logger(`sidecar-url-source sessionId=${sessionId.slice(0, 8)} url-source=${urlSource} resume=${args.resumeClaudeSessionId ? 'yes' : 'no'}`);
1644
+ const sidecar = {
1645
+ senderId: args.senderId,
1646
+ role: args.role,
1647
+ channel: args.channel,
1648
+ url: resolvedUrl,
1649
+ startedAt,
1650
+ permissionMode: args.permissionMode ?? null,
1651
+ // Task 278 — null until `permission-mode-tail.ts` consumes the first
1652
+ // `[auto-mode] verifyAutoModeGateAccess` debug line from the file
1653
+ // we just renamed above (when effectiveMode === 'auto'). On non-auto
1654
+ // spawns no capture exists, so the field stays null forever and the
1655
+ // pane renders the requested mode plain.
1656
+ effectivePermissionMode: null,
1657
+ model: args.model ?? null,
1658
+ hidden,
1659
+ specialist,
1660
+ // Task 451 — persist the scope token so boot-seed can reattach the
1661
+ // surviving scope to this row after a manager restart, even when the
1662
+ // unit token is a fresh-spawn UUID that does not equal `sessionId`.
1663
+ scopeUnitToken: unitToken,
1664
+ // Task 863 — public-webchat visitor identity from the AccessSession,
1665
+ // threaded through `/spawn`. Null for every non-public spawn. Persisted so
1666
+ // the admin Sessions panel can resolve the visitor's display name.
1667
+ personId: args.personId ?? null,
1668
+ // Task 865 — admin-webchat author identity. The /spawn path is the public
1669
+ // visitor path, never an admin webchat session, so this is always null
1670
+ // here; admin-webchat identity is written on the /rc-spawn path.
1671
+ adminUserId: null,
1672
+ // Task 933 — resolved admin display name. The /spawn path is the public
1673
+ // visitor path, never an admin webchat session, so this is always null
1674
+ // here; admin-webchat identity is written on the /rc-spawn path.
1675
+ authenticatedName: null,
1676
+ // Task 884 — open-mode ownership anchor + per-agent scope. `args.agentSlug`
1677
+ // is the resolved public agent slug already threaded for argv; persist it
1678
+ // for all public spawns. `visitorId` is present only for open-mode public
1679
+ // spawns (the maxy_visitor cookie).
1680
+ visitorId: args.visitorId ?? null,
1681
+ agentSlug: args.role === 'public' ? (args.agentSlug ?? null) : null,
1682
+ // Task 550 — composer bridge ULIDs are appended by the http-server's
1683
+ // pid-file watcher subscription on /rc-spawn binds. A resume that
1684
+ // already had bridgeIds keeps them; a fresh spawn starts empty.
1685
+ bridgeIds: priorSidecar?.bridgeIds ?? [],
1686
+ };
1687
+ try {
1688
+ writeSidecar(sidecarPath, sidecar, deps.logger);
1689
+ }
1690
+ catch (err) {
1691
+ const detail = err instanceof Error ? err.message : String(err);
1692
+ pty.kill('SIGKILL');
1693
+ const stderrTail = tail.getTail();
1694
+ tail.dispose();
1695
+ deps.logger(`spawn-failed reason=sidecar-write-failed sessionId=${sessionId.slice(0, 8)} path=${sidecarPath} err=${JSON.stringify(detail)} stderr-tail=${formatTailForLog(stderrTail)}`);
1696
+ return { ok: false, reason: 'sidecar-write-failed', stderrTail };
1697
+ }
1698
+ // Task 260 — the watcher's row was built BEFORE we wrote the sidecar
1699
+ // (waitForPid resolved first), so its sidecar fields are still null.
1700
+ // Force a re-read so subsequent /list and /events calls see the
1701
+ // freshly-written senderId/role/channel/etc. Some test fixtures use
1702
+ // a hand-built watcher mock that predates `refreshSidecar` on the
1703
+ // interface — the optional-chain keeps them working without a forced
1704
+ // sweep update.
1705
+ deps.watcher.refreshSidecar?.(sessionId);
1706
+ const tracker = {
1707
+ sessionId,
1708
+ bridgeSessionId: row.bridgeSessionId ?? `session_${sessionId}`,
1709
+ bridgeSuffix: row.bridgeSuffix ?? sessionId,
1710
+ pid: pty.pid,
1711
+ pty,
1712
+ exited: false,
1713
+ fdReleased: false,
1714
+ hidden,
1715
+ specialist,
1716
+ scopeUnitToken: unitToken,
1717
+ };
1718
+ livePtys.set(sessionId, tracker);
1719
+ trackerRegisteredAt.set(sessionId, Date.now());
1720
+ deps.logger(`[pty-tracker] op=spawn sessionId=${sessionId.slice(0, 8)} pid=${pty.pid} size=${livePtys.size}`);
1721
+ if (hidden) {
1722
+ deps.logger(`hidden-spawn specialist=${specialist ?? 'none'} sessionId=${sessionId} pid=${pty.pid}`);
1723
+ }
1724
+ // PTY exit: mark exited; the watcher will fire a delete event when
1725
+ // claude removes its PID file, which the http-server subscriber
1726
+ // translates into an archived row (JSONL still on disk if any turn ran).
1727
+ pty.onExit((e) => {
1728
+ const stderrTail = tail.getTail();
1729
+ tail.dispose();
1730
+ handlePtyNaturalExit({ logger: deps.logger }, tracker, e, stderrTail);
1731
+ });
1732
+ const responseMs = Date.now() - start;
1733
+ deps.logger(`spawn-response-returned sessionId=${sessionId} pid=${pty.pid} ms=${responseMs}`);
1734
+ deps.logger(`spawn pid=${pty.pid} sessionId=${sessionId} senderId=${args.senderId} role=${args.role} channel=${args.channel} permissionMode=${args.permissionMode ?? 'default'} model=${args.model ?? 'none'} remoteControl=${remoteControl} latency-ms=${responseMs}`);
1735
+ deps.logger(`[pty-spawn] sessionId=${sessionId} appendSystemPromptBytes=${Buffer.byteLength(appendSystemPrompt, 'utf8')} identityBytes=${composedBytes.identity} soulBytes=${composedBytes.soul} knowledgeBytes=${composedBytes.knowledge} aboutOwnerBytes=${composedBytes.aboutOwner} dormantPluginsBytes=${composedBytes.dormantPlugins} accountDir=${deps.accountDir} role=${args.role} specialist=${args.specialist ?? 'none'} hostname=${deps.host.hostname} lanIPv4=${deps.host.lanIPv4} adminUrl=${deps.host.adminUrl} tunnelUrl=${composedHost.tunnelUrl ?? 'none'}`);
1736
+ // Task 178 — emit [pty-spawn-tool-inventory] for specialist spawns. The
1737
+ // probe runs in parallel with the real claude child's own MCP handshake
1738
+ // and is fire-and-forget: it never blocks the spawn response, and its
1739
+ // own failures emit a [pty-spawn-tool-inventory-failed] line. Operator
1740
+ // (admin/public) spawns have no agent frontmatter — the failure shape
1741
+ // this closes the gap on is recorder-specific (Task 174 §3).
1742
+ //
1743
+ // Task 207 — descriptors come from `deps.toolSurface.mcpServers`
1744
+ // directly (narrowed to the plugin namespaces the agent file's
1745
+ // `tools:` frontmatter references) instead of the per-spawn `.mcp.json`
1746
+ // that this task drops for specialists. The probe still spawns its
1747
+ // own MCP children to query `tools/list`; it does not — and cannot —
1748
+ // inspect Claude Code's internal plugin-tool registry. `argv-tools` is
1749
+ // now 0 for specialists (no `--allowed-tools` push); `mcp-listed-tools`
1750
+ // continues to reflect what each MCP server actually offers. The
1751
+ // not-exposed = (frontmatter ∖ offered) computation still surfaces
1752
+ // namespace-mismatch regressions.
1753
+ if (isSpecialistSpawn && specialistTools !== null) {
1754
+ // Task 476 — the probe spawns transient MCP children to call
1755
+ // tools/list. They share the same placeholder map as the live
1756
+ // spawn so any write a plugin performs during boot lands with the
1757
+ // same SESSION_ID + AGENT_SLUG as the live children would.
1758
+ const placeholders = buildMcpPlaceholders({
1759
+ platformRoot: deps.platformRoot,
1760
+ accountId: deps.accountId,
1761
+ userId: args.userId,
1762
+ sessionId,
1763
+ agentSlug,
1764
+ agentScopeSlug,
1765
+ logDir: deps.logDir,
1766
+ });
1767
+ // Task 215 — classify the frontmatter list once. `matchedServers` is
1768
+ // the set of `toolSurface.mcpServers` keys to spawn for the probe;
1769
+ // `unparseableTools` and `missingServers` ride downstream into both
1770
+ // the spawn-time and end-of-first-turn inventory lines, so a future
1771
+ // namespace drift (or an agent file with a typo) can be told apart
1772
+ // from a real MCP boot failure by reading server.log alone.
1773
+ const { matchedServers, unparseableTools, missingServers } = classifySpecialistTools(specialistTools, deps.toolSurface.mcpServers);
1774
+ const resolvedServers = new Map();
1775
+ for (const [name, desc] of deps.toolSurface.mcpServers) {
1776
+ if (!matchedServers.has(name))
1777
+ continue;
1778
+ const probeEnv = desc.env
1779
+ ? Object.fromEntries(Object.entries(desc.env).map(([k, v]) => [k, expandPlaceholders(v, placeholders)]))
1780
+ : undefined;
1781
+ resolvedServers.set(name, {
1782
+ command: expandPlaceholders(desc.command, placeholders),
1783
+ args: desc.args.map((a) => expandPlaceholders(a, placeholders)),
1784
+ env: probeEnv,
1785
+ });
1786
+ }
1787
+ const readInventory = deps.readMcpToolInventory
1788
+ ?? ((req) => probeMcpServerTools({
1789
+ servers: req.servers,
1790
+ baseEnv: process.env,
1791
+ timeoutMs: req.timeoutMs,
1792
+ }));
1793
+ const inventoryTimeoutMs = deps.toolInventoryProbeTimeoutMs ?? 5_000;
1794
+ emitToolInventoryAsync({
1795
+ sessionId: sessionId,
1796
+ specialist: args.specialist,
1797
+ frontmatterAllowlist: specialistTools,
1798
+ resolvedServers,
1799
+ unparseableTools,
1800
+ missingServers,
1801
+ readMcpToolInventory: readInventory,
1802
+ timeoutMs: inventoryTimeoutMs,
1803
+ logger: deps.logger,
1804
+ });
1805
+ // Task 215 — register the per-spawn state that the JsonlTail callback
1806
+ // (or the watchdog timer) needs to fire the final snapshot. State is
1807
+ // module-scoped so a stale entry past PTY exit is a leak; the exit
1808
+ // handler below explicitly clears it. The watchdog covers the failure
1809
+ // mode where the model emits zero useful content (the exact defect
1810
+ // this task investigates): without the timer, a spawn that never
1811
+ // produces a first turn would never emit a final snapshot, and the
1812
+ // operator would have no signal at all for the broken case.
1813
+ finalSnapshotState.set(sessionId, {
1814
+ specialist: args.specialist,
1815
+ frontmatterAllowlist: specialistTools,
1816
+ resolvedServers,
1817
+ unparseableTools,
1818
+ missingServers,
1819
+ readMcpToolInventory: readInventory,
1820
+ timeoutMs: inventoryTimeoutMs,
1821
+ logger: deps.logger,
1822
+ spawnedAt: Date.now(),
1823
+ fired: false,
1824
+ watchdog: setTimeout(() => fireFinalSnapshot(sessionId, 'first-turn-timeout'), firstTurnTimeoutMs),
1825
+ });
1826
+ }
1827
+ // Task 183 — register the specialist spawn with the JSONL tail. The
1828
+ // tail's state must exist BEFORE any JSONL modify event fires so the
1829
+ // first init-shaped record produces Line 1. Task 207 — `--allowed-tools`
1830
+ // is no longer pushed for specialists, so `argvTools` is the empty array
1831
+ // for them; `toolsArgvMissingFromExposed` becomes a no-op, which is the
1832
+ // correct semantic (nothing was launched on argv, so nothing can be
1833
+ // missing). Operator spawns do not register; the tail emits nothing for
1834
+ // them.
1835
+ //
1836
+ // Task 215 — `onFirstTurn` fires the `[pty-spawn-tool-inventory-final]`
1837
+ // snapshot when the model emits its first non-thinking assistant
1838
+ // record. Paired with the watchdog timer set above (in the Task-178
1839
+ // probe block); whichever fires first wins, the other is a no-op via
1840
+ // the `fired` guard inside `fireFinalSnapshot`.
1841
+ if (isSpecialistSpawn && deps.jsonlTail) {
1842
+ deps.jsonlTail.register(sessionId, {
1843
+ specialist: args.specialist,
1844
+ argvTools: [],
1845
+ onFirstTurn: () => fireFinalSnapshot(sessionId, 'first-turn'),
1846
+ });
1847
+ pty.onExit(() => deps.jsonlTail?.unregister(sessionId));
1848
+ }
1849
+ // Task 215 — PTY-exit cleanup for the final-snapshot state runs
1850
+ // INDEPENDENTLY of the JsonlTail wiring. When `deps.jsonlTail` is
1851
+ // undefined (test fixtures, partial-mock deployments), state was
1852
+ // still registered above in the Task-178 probe block, and the
1853
+ // watchdog timer needs to be canceled on exit to prevent a leak
1854
+ // that fires `[pty-spawn-tool-inventory-final] reason=first-turn-timeout`
1855
+ // against a long-dead session 60 s later.
1856
+ if (isSpecialistSpawn && specialistTools !== null) {
1857
+ pty.onExit(() => {
1858
+ const state = finalSnapshotState.get(sessionId);
1859
+ if (state?.watchdog)
1860
+ clearTimeout(state.watchdog);
1861
+ finalSnapshotState.delete(sessionId);
1862
+ });
1863
+ }
1864
+ deps.onSessionReady?.(tracker);
1865
+ return {
1866
+ ok: true,
1867
+ session: {
1868
+ sessionId,
1869
+ pid: pty.pid,
1870
+ startedAt,
1871
+ url: capturedUrl,
1872
+ tracker,
1873
+ },
1874
+ };
1875
+ }
1876
+ /** Task 176 — natural-exit handler. Fires when the claude child exits on
1877
+ * its own (operator `/quit`, SIGINT in the PTY, crash, network drop on
1878
+ * `--remote-control`), with no operator `/stop` and no auto-archive in
1879
+ * flight. Mirrors `killSession`'s post-Task-170 fd-release + tracker
1880
+ * removal contract on the second exit branch the original task
1881
+ * explicitly out-of-scoped. Without this, the master fd lingers in
1882
+ * node-pty's internal socket until V8 GC finalises the IPty object,
1883
+ * and the tracker entry survives until manager shutdown — so the
1884
+ * shutdown loop SIGTERMs PIDs that already logged `process-exited`.
1885
+ *
1886
+ * Side-effect order is load-bearing: set `exited` first so any
1887
+ * concurrent `killSession` sees the already-exited branch; release the
1888
+ * fd second (idempotent on a destroyed socket via the try/catch in
1889
+ * `releasePtyMasterFd`); drop the tracker third (Map.delete on a
1890
+ * missing key is a no-op, so the operator-request follow-up that
1891
+ * races us is harmless). The log line carries the same `master-fd=...`
1892
+ * suffix the operator-request path emits — every `kill … pid=<n>`
1893
+ * line in `server.log` now ends in `master-fd=...`, no exceptions.
1894
+ *
1895
+ * Exported so `__tests__/stop-session-fd-release.test.ts` can verify
1896
+ * the contract end-to-end without re-implementing the handler in test
1897
+ * code. */
1898
+ export function handlePtyNaturalExit(deps, tracker, exit, stderrTail) {
1899
+ tracker.exited = true;
1900
+ // Task 455 — bump the exit-history counter as the second side effect,
1901
+ // immediately after marking the tracker exited. Doing it here (rather
1902
+ // than at the bottom) means a later throw between flag-set and the
1903
+ // log line — `releasePtyMasterFd` is rescued today, but defense in
1904
+ // depth shouldn't rely on that staying true forever — cannot suppress
1905
+ // the observability signal the /stop route needs to surface respawn
1906
+ // history. The counter tracks "how many earlier PTYs of this sessionId
1907
+ // have already exited" relative to any future stop and is unconditional
1908
+ // on the delete-on-identity race below.
1909
+ priorExitedBySessionId.set(tracker.sessionId, (priorExitedBySessionId.get(tracker.sessionId) ?? 0) + 1);
1910
+ // Skip if a racing `killSession` already released the fd — second
1911
+ // destroy() on a destroyed node-pty socket throws "socket already
1912
+ // destroyed" and would turn this line's suffix into a false
1913
+ // `master-fd=close-failed`.
1914
+ const fdSuffix = tracker.fdReleased ? 'master-fd=closed' : releasePtyMasterFd(tracker);
1915
+ if (fdSuffix === 'master-fd=closed')
1916
+ tracker.fdReleased = true;
1917
+ // Task 260 — only remove the tracker entry if it is still OUR tracker.
1918
+ // A subsequent spawn could have replaced the entry under the same
1919
+ // sessionId (LRU recycle in production; cross-fixture sessionId
1920
+ // collision in tests).
1921
+ if (livePtys.get(tracker.sessionId) === tracker) {
1922
+ livePtys.delete(tracker.sessionId);
1923
+ trackerRegisteredAt.delete(tracker.sessionId);
1924
+ }
1925
+ deps.logger(`kill pid=${tracker.pid} reason=process-exited exit-code=${exit.exitCode} signal=${exit.signal ?? 'none'} stderr-tail=${formatTailForLog(stderrTail)} ${fdSuffix}`);
1926
+ deps.logger(`[pty-tracker] op=exit sessionId=${tracker.sessionId.slice(0, 8)} pid=${tracker.pid} size=${livePtys.size}`);
1927
+ }
1928
+ /** Release the pty master fd by destroying node-pty's internal socket.
1929
+ * Without this, the fd lingers until V8 GC finalizes the IPty object —
1930
+ * non-deterministic and accumulates under load. Returns the trailing
1931
+ * log suffix ("master-fd=closed" on success, "master-fd=close-failed
1932
+ * err=..." on throw). The throw path is rescued so a destroy failure
1933
+ * on a corner-case socket state cannot turn a logically-successful
1934
+ * stop into a 500. Task 170. */
1935
+ function releasePtyMasterFd(t) {
1936
+ try {
1937
+ t.pty.destroy?.();
1938
+ return 'master-fd=closed';
1939
+ }
1940
+ catch (err) {
1941
+ const msg = err instanceof Error ? err.message : String(err);
1942
+ return `master-fd=close-failed err=${JSON.stringify(msg)}`;
1943
+ }
1944
+ }
1945
+ /** Task 558 — `op=archive-release` shape. The operator-archive (UI End
1946
+ * click → `/stop`) is the canonical and ONLY master-fd release point
1947
+ * for an rc-spawn or operator session. This helper performs the release
1948
+ * with full verification:
1949
+ *
1950
+ * 1. Snapshot `/proc/self/fd` BEFORE the destroy (set of fd numbers).
1951
+ * 2. Run `releasePtyMasterFd` — captures `master-fd=<closed|close-failed>`.
1952
+ * 3. Snapshot `/proc/self/fd` AFTER. The set-difference is the
1953
+ * released fd number(s); the single-fd case is the happy path.
1954
+ * 4. Delete the tracker from `livePtys` + `trackerRegisteredAt` if
1955
+ * identity still matches (LRU-recycle guard).
1956
+ * 5. Emit `[rc-spawn] op=archive-release sessionId=… pid=…
1957
+ * master-fd=<status> fdBefore=N fdAfter=N fdDelta=N
1958
+ * removedFds=<list> trackerRemoved=<bool> verified=<bool>`.
1959
+ *
1960
+ * `verified=true` iff `master-fd=closed` AND `fdDelta>=1` AND
1961
+ * `trackerRemoved=true`. `master-fd=close-failed` is logged at error
1962
+ * level (`[rc-spawn-error]` prefix) — never swallowed; the next
1963
+ * post-archive sweep is the catch-net for that surface.
1964
+ *
1965
+ * Procfs absent (darwin dev Mac): `readOpenFdSet()` returns an empty
1966
+ * Set, so `fdBefore`/`fdAfter`/`fdDelta` all report 0 and `verified`
1967
+ * collapses to `master-fd=closed && trackerRemoved`. The verification
1968
+ * is best-effort on platforms without procfs — the manager process
1969
+ * itself only runs on linux in production. */
1970
+ function archiveReleaseTracker(deps, t, sessionId) {
1971
+ const fdBeforeSet = readOpenFdSet();
1972
+ const suffix = t.fdReleased ? 'master-fd=closed' : releasePtyMasterFd(t);
1973
+ if (suffix === 'master-fd=closed')
1974
+ t.fdReleased = true;
1975
+ const fdAfterSet = readOpenFdSet();
1976
+ let trackerRemoved = false;
1977
+ if (livePtys.get(sessionId) === t) {
1978
+ livePtys.delete(sessionId);
1979
+ trackerRegisteredAt.delete(sessionId);
1980
+ trackerRemoved = true;
1981
+ }
1982
+ const fdBefore = fdBeforeSet.size;
1983
+ const fdAfter = fdAfterSet.size;
1984
+ const fdDelta = fdBefore - fdAfter;
1985
+ const removed = [];
1986
+ for (const fd of fdBeforeSet)
1987
+ if (!fdAfterSet.has(fd))
1988
+ removed.push(fd);
1989
+ const verified = suffix === 'master-fd=closed' && fdDelta >= 1 && trackerRemoved;
1990
+ const prefix = suffix.startsWith('master-fd=close-failed') ? '[rc-spawn-error]' : '[rc-spawn]';
1991
+ deps.logger(`${prefix} op=archive-release sessionId=${sessionId.slice(0, 8)} pid=${t.pid} ${suffix} fdBefore=${fdBefore} fdAfter=${fdAfter} fdDelta=${fdDelta} removedFds=${removed.length === 0 ? 'none' : removed.join(',')} trackerRemoved=${trackerRemoved} verified=${verified}`);
1992
+ return { suffix, verified };
1993
+ }
1994
+ /** Task 250 + 260 — operator-request stop. Issues `systemctl --user
1995
+ * stop --no-block <scope>` against the PTY's scope unit (Task 250)
1996
+ * instead of `pty.kill('SIGTERM')`; the scope's TimeoutStopSec=5 handles
1997
+ * SIGTERM→SIGKILL escalation inside its own cgroup. Idempotent: a
1998
+ * no-such-unit response (exit code 5) is treated as success because
1999
+ * claude exited naturally and systemd retired the scope. The master fd
2000
+ * is still released locally — fd ownership stays with the manager
2001
+ * process and must be cleaned up there, irrespective of which process
2002
+ * killed claude.
2003
+ *
2004
+ * Task 260 — looks up the tracker in the module-scoped `livePtys` map
2005
+ * (the metadata-rich SessionStore is gone). Deletes by identity (only
2006
+ * if `livePtys.get(sessionId) === t`) so an LRU recycle or a
2007
+ * cross-fixture sessionId collision in tests never clobbers a live
2008
+ * PTY whose tracker was registered after the current call resolved. */
2009
+ export async function stopSession(deps, sessionId) {
2010
+ // Task 455 — alive filter: an entry with `exited=true` that somehow
2011
+ // survived in `livePtys` is treated as a miss, so the stop never
2012
+ // targets a stale pid. The natural-exit handler also purges on its
2013
+ // own (layer 1); this filter is layer 2 of the two-layer invariant
2014
+ // documented above the `livePtys` declaration.
2015
+ const t = resolveLiveTracker(sessionId);
2016
+ if (!t) {
2017
+ // Task 427 — row-scope fallback. The PTY survived a manager restart
2018
+ // (Task 250) and was reattached to its `SessionRow` by the boot-seed,
2019
+ // but `livePtys` is module-scoped and is never repopulated. When the
2020
+ // caller supplies the row's scope unit token, stop the scope directly
2021
+ // — there is no master fd to release because the current manager
2022
+ // never opened one for this process. A true miss (no row, no token)
2023
+ // still returns `no-store-entry`.
2024
+ const rowToken = deps.rowScopeUnitToken ?? null;
2025
+ if (rowToken === null) {
2026
+ return { existed: false, path: 'no-store-entry', scopeOutcome: 'no-store-entry', exitCode: null };
2027
+ }
2028
+ const start = Date.now();
2029
+ const unit = scopeUnitName(rowToken);
2030
+ const run = deps.runSystemctl ?? defaultSystemctlRunner;
2031
+ const stop = await stopScopeUnit(run, rowToken, {
2032
+ pid: deps.rowPid ?? null,
2033
+ killGraceMs: deps.killGraceMs,
2034
+ });
2035
+ if (stop.outcome === 'error') {
2036
+ deps.logger(`[stop-session] systemd-scope-stop unit=${unit} outcome=error exit-code=${stop.exitCode} ms=${Date.now() - start} sessionId=${sessionId} path=row-scope stderr=${JSON.stringify(stop.stderr.slice(-200))}`);
2037
+ return { existed: true, path: 'row-scope', scopeOutcome: 'error', exitCode: stop.exitCode };
2038
+ }
2039
+ deps.logger(`[stop-session] systemd-scope-stop unit=${unit} outcome=${stop.outcome} ms=${Date.now() - start} sessionId=${sessionId} path=row-scope`);
2040
+ return {
2041
+ existed: true,
2042
+ path: 'row-scope',
2043
+ scopeOutcome: stop.outcome,
2044
+ exitCode: stop.outcome === 'already-gone' ? stop.exitCode : 0,
2045
+ };
2046
+ }
2047
+ const start = Date.now();
2048
+ const unit = scopeUnitName(t.scopeUnitToken);
2049
+ if (t.exited) {
2050
+ // Task 176 short-circuit: if the natural-exit handler already
2051
+ // released the fd, skip the second destroy() — on real node-pty it
2052
+ // would throw "socket already destroyed" and we'd emit a false
2053
+ // `master-fd=close-failed`. Defense in depth still holds: if the
2054
+ // earlier destroy threw, fdReleased stays false and we retry here.
2055
+ //
2056
+ // Task 455 — the `resolveLiveTracker` filter above makes this
2057
+ // branch unreachable on entry: an exited tracker never resolves.
2058
+ // The check is kept as belt-and-braces in case `t.exited` flips
2059
+ // to true during a future `await` inserted into the happy path.
2060
+ const { suffix: fdSuffix } = archiveReleaseTracker({ logger: deps.logger }, t, sessionId);
2061
+ deps.logger(`[stop-session] systemd-scope-stop unit=${unit} outcome=already-exited ms=${Date.now() - start} sessionId=${sessionId} pid=${t.pid} ${fdSuffix}`);
2062
+ deps.logger(`[pty-tracker] op=exit sessionId=${sessionId.slice(0, 8)} pid=${t.pid} size=${livePtys.size}`);
2063
+ return { existed: true, path: 'liveptys', scopeOutcome: 'already-gone', exitCode: null };
2064
+ }
2065
+ const run = deps.runSystemctl ?? defaultSystemctlRunner;
2066
+ const stop = await stopScopeUnit(run, t.scopeUnitToken, {
2067
+ pid: t.pid,
2068
+ killGraceMs: deps.killGraceMs,
2069
+ });
2070
+ if (stop.outcome === 'error') {
2071
+ deps.logger(`[stop-session] systemd-scope-stop unit=${unit} outcome=error exit-code=${stop.exitCode} ms=${Date.now() - start} sessionId=${sessionId} pid=${t.pid} stderr=${JSON.stringify(stop.stderr.slice(-200))}`);
2072
+ return { existed: true, path: 'liveptys', scopeOutcome: 'error', exitCode: stop.exitCode };
2073
+ }
2074
+ // outcome=ok or already-gone — both mean the scope is on its way out (or
2075
+ // already retired). Release the manager-side master fd and drop the
2076
+ // tracker entry; the watcher will observe Claude Code's PID-file delete
2077
+ // shortly and emit the archive transition. Task 558 routes the release
2078
+ // through `archiveReleaseTracker` so every operator-stop emits a
2079
+ // verified `op=archive-release` line — the only window a real
2080
+ // master-fd leak can exist.
2081
+ const { suffix: fdSuffix } = archiveReleaseTracker({ logger: deps.logger }, t, sessionId);
2082
+ deps.logger(`[stop-session] systemd-scope-stop unit=${unit} outcome=${stop.outcome} ms=${Date.now() - start} sessionId=${sessionId} pid=${t.pid} ${fdSuffix}`);
2083
+ deps.logger(`[pty-tracker] op=exit sessionId=${sessionId.slice(0, 8)} pid=${t.pid} size=${livePtys.size}`);
2084
+ return {
2085
+ existed: true,
2086
+ path: 'liveptys',
2087
+ scopeOutcome: stop.outcome,
2088
+ exitCode: stop.outcome === 'already-gone' ? stop.exitCode : 0,
2089
+ };
2090
+ }
2091
+ /** Task 260 — alias preserved during the http-server callsite rename
2092
+ * in this branch. The canonical export name is `stopSession` (Task 250). */
2093
+ export const killSession = stopSession;
2094
+ /** Task 557 — open file-descriptor count for the manager process. Reads
2095
+ * `/proc/self/fd` directly. Returns -1 on platforms that don't expose
2096
+ * procfs (darwin dev Mac) or on read failure. Used by `[fd-census]`
2097
+ * log lines so an rc-spawn leak is visible as `openFds` rising while
2098
+ * `livePtys` stays flat across successive spawns. */
2099
+ export function openFdCount() {
2100
+ try {
2101
+ return readdirSync('/proc/self/fd').length;
2102
+ }
2103
+ catch {
2104
+ return -1;
2105
+ }
2106
+ }
2107
+ /** Task 558 — set-valued companion to `openFdCount`. Returns the set of
2108
+ * fd numbers (as strings) in `/proc/self/fd`. Empty Set on platforms
2109
+ * without procfs (darwin) or on read failure — distinguishable from a
2110
+ * genuinely-empty fd set because the manager process always holds at
2111
+ * least stdin/stdout/stderr. Callers that need to identify a specific
2112
+ * closed fd take the set-difference (before − after). */
2113
+ function readOpenFdSet() {
2114
+ try {
2115
+ return new Set(readdirSync('/proc/self/fd'));
2116
+ }
2117
+ catch {
2118
+ return new Set();
2119
+ }
2120
+ }
2121
+ export function runPostArchiveSweep(deps) {
2122
+ const now = (deps.now ?? Date.now)();
2123
+ const liveSessionIds = deps.liveSessionIds();
2124
+ const liveSessionSet = new Set(liveSessionIds);
2125
+ let archivedWithMaster = 0;
2126
+ let escalated = 0;
2127
+ for (const [sessionId, tracker] of livePtys.entries()) {
2128
+ if (!deps.isArchived(sessionId))
2129
+ continue;
2130
+ archivedWithMaster++;
2131
+ const archivedAt = deps.archivedAtMs(sessionId) ?? trackerRegisteredAt.get(sessionId) ?? now;
2132
+ const heldSinceArchiveMs = Math.max(0, now - archivedAt);
2133
+ deps.logger(`[fd-audit] op=orphan-master sessionId=${sessionId.slice(0, 8)} pid=${tracker.pid} archivedAt=${archivedAt} heldSinceArchiveMs=${heldSinceArchiveMs} fd=unknown`);
2134
+ if (heldSinceArchiveMs >= deps.ageEscalateMs) {
2135
+ escalated++;
2136
+ deps.logger(`[fd-audit] op=orphan-master-escalate sessionId=${sessionId.slice(0, 8)} fd=unknown heldSinceArchiveMs=${heldSinceArchiveMs}`);
2137
+ }
2138
+ }
2139
+ let orphanLiveSessionsNoMaster = 0;
2140
+ for (const sessionId of liveSessionIds) {
2141
+ if (!livePtys.has(sessionId))
2142
+ orphanLiveSessionsNoMaster++;
2143
+ }
2144
+ let archivedSessions = 0;
2145
+ for (const sessionId of livePtys.keys())
2146
+ if (deps.isArchived(sessionId))
2147
+ archivedSessions++;
2148
+ const summary = {
2149
+ archivedSessions,
2150
+ orphanMasters: archivedWithMaster,
2151
+ liveTrackers: livePtys.size,
2152
+ liveSessions: liveSessionSet.size,
2153
+ archivedWithMaster,
2154
+ orphanLiveSessionsNoMaster,
2155
+ escalated,
2156
+ };
2157
+ deps.logger(`[fd-audit] op=post-archive-sweep archivedSessions=${summary.archivedSessions} orphanMasters=${summary.orphanMasters} openFds=${openFdCount()} livePtys=${summary.liveTrackers}`);
2158
+ deps.logger(`[fd-audit] op=master-reconcile liveTrackers=${summary.liveTrackers} liveSessions=${summary.liveSessions} archivedWithMaster=${summary.archivedWithMaster} orphanLiveSessionsNoMaster=${summary.orphanLiveSessionsNoMaster}`);
2159
+ return summary;
2160
+ }
2161
+ /** Task 557 — register an rc-spawn PTY in the live tracker map so the
2162
+ * master fd has a defined owner and release path. Mirrors the tracker
2163
+ * shape `spawnClaudeSession` writes (Task 260), but skips the spawn
2164
+ * pipeline's sidecar/watcher/url-capture concerns — `/rc-spawn` is
2165
+ * fire-and-forget; claude registers itself with claude.ai/code as a
2166
+ * Remote Control entry without manager-side bookkeeping. The `pty.onExit`
2167
+ * hook lands on `handlePtyNaturalExit`, which marks the tracker exited,
2168
+ * releases the fd, and deletes the entry — closing the leak gap the
2169
+ * Task 552 non-PTY scope path created when it stopped registering a
2170
+ * tracker at all. */
2171
+ export function registerRcSpawnPty(deps, sessionId, pty, unitToken) {
2172
+ const tracker = {
2173
+ sessionId,
2174
+ bridgeSessionId: `session_${sessionId}`,
2175
+ bridgeSuffix: sessionId,
2176
+ pid: pty.pid,
2177
+ pty,
2178
+ exited: false,
2179
+ fdReleased: false,
2180
+ hidden: false,
2181
+ specialist: null,
2182
+ scopeUnitToken: unitToken,
2183
+ };
2184
+ livePtys.set(sessionId, tracker);
2185
+ trackerRegisteredAt.set(sessionId, Date.now());
2186
+ deps.logger(`[pty-tracker] op=spawn sessionId=${sessionId.slice(0, 8)} pid=${pty.pid} size=${livePtys.size}`);
2187
+ pty.onExit((e) => {
2188
+ handlePtyNaturalExit(deps, tracker, e, '');
2189
+ });
2190
+ return tracker;
2191
+ }
2192
+ /** Task 558 — the rc-spawn `op=fd-release trigger=session-ready` path
2193
+ * (Task 557) is gone: the master IS the live session, not a reclaimable
2194
+ * spawn artifact. The tracker is now released only by `handlePtyNaturalExit`
2195
+ * (the slave exited on its own) or by `stopSession`'s `op=archive-release`
2196
+ * (operator teardown). This export remains only because tests under
2197
+ * `__tests__/` reach for it directly; its body is the same idempotent
2198
+ * release-and-detach, called solely from those tests. Once those tests
2199
+ * switch to the `op=archive-release` shape (Task 558 verification), this
2200
+ * export can go. */
2201
+ export function releaseAndUnregisterRcSpawnPty(deps, tracker, trigger) {
2202
+ const suffix = tracker.fdReleased ? 'master-fd=closed' : releasePtyMasterFd(tracker);
2203
+ if (suffix === 'master-fd=closed')
2204
+ tracker.fdReleased = true;
2205
+ if (livePtys.get(tracker.sessionId) === tracker) {
2206
+ livePtys.delete(tracker.sessionId);
2207
+ trackerRegisteredAt.delete(tracker.sessionId);
2208
+ }
2209
+ deps.logger(`[pty-tracker] op=detach sessionId=${tracker.sessionId.slice(0, 8)} pid=${tracker.pid} trigger=${trigger} size=${livePtys.size}`);
2210
+ return { suffix, openFds: openFdCount() };
2211
+ }
2212
+ export function writeInputToPty(sessionId, text, logger, channel) {
2213
+ const t = livePtys.get(sessionId);
2214
+ if (!t)
2215
+ return { ok: false, error: 'not-found' };
2216
+ if (t.exited)
2217
+ return { ok: false, error: 'exited' };
2218
+ const bytes = Buffer.byteLength(text, 'utf8');
2219
+ // Task 668 — every input is delivered as one bracketed-paste then submit,
2220
+ // regardless of length or embedded newlines. Claude's TUI auto-detects a
2221
+ // fast burst of bytes as a paste; a bare `pty.write(text + '\r')` then has
2222
+ // its trailing `\r` absorbed as paste-internal content, so the text lands
2223
+ // in the input line but no turn submits (the next message's write flushes
2224
+ // the stale buffer — the off-by-one relay seen on channel-admin). Wrapping
2225
+ // in DEC bracketed-paste markers (\e[200~ ... \e[201~) puts the `\r`
2226
+ // OUTSIDE the paste boundary, so it is always an unambiguous submit
2227
+ // keystroke. Task 122 introduced this for multi-line `text`; the prior
2228
+ // single-line raw branch assumed single-line input was always the short
2229
+ // (24-byte) Sidebar timestamp stimulus, which broke once long single-line
2230
+ // WhatsApp DMs took the same `/input` path. The wrap submits at any length,
2231
+ // so the timestamp stimulus is unaffected.
2232
+ const multiline = text.includes('\n');
2233
+ const submitMode = 'bracketed-paste';
2234
+ try {
2235
+ t.pty.write(`\x1b[200~${text}\x1b[201~\r`);
2236
+ }
2237
+ catch (err) {
2238
+ const msg = err instanceof Error ? err.message : String(err);
2239
+ logger(`input-failed pid=${t.pid} sessionId=${sessionId} message=${msg}`);
2240
+ return { ok: false, error: 'write-failed', detail: msg };
2241
+ }
2242
+ logger(`input pid=${t.pid} sessionId=${sessionId} bytes=${bytes} channel=${channel ?? 'unknown'} multiline=${multiline} submit-mode=${submitMode}`);
2243
+ return { ok: true, bytes };
2244
+ }
2245
+ //# sourceMappingURL=pty-spawner.js.map