@soleri/core 2.10.0 → 2.12.0

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 (511) hide show
  1. package/dist/agency/agency-manager.d.ts +47 -0
  2. package/dist/agency/agency-manager.d.ts.map +1 -0
  3. package/dist/agency/agency-manager.js +281 -0
  4. package/dist/agency/agency-manager.js.map +1 -0
  5. package/dist/agency/index.d.ts +3 -0
  6. package/dist/agency/index.d.ts.map +1 -0
  7. package/dist/agency/index.js +2 -0
  8. package/dist/agency/index.js.map +1 -0
  9. package/dist/agency/types.d.ts +69 -0
  10. package/dist/agency/types.d.ts.map +1 -0
  11. package/dist/agency/types.js +5 -0
  12. package/dist/agency/types.js.map +1 -0
  13. package/dist/brain/brain.d.ts +0 -1
  14. package/dist/brain/brain.d.ts.map +1 -1
  15. package/dist/brain/brain.js +24 -0
  16. package/dist/brain/brain.js.map +1 -1
  17. package/dist/brain/intelligence.d.ts +5 -1
  18. package/dist/brain/intelligence.d.ts.map +1 -1
  19. package/dist/brain/intelligence.js +83 -0
  20. package/dist/brain/intelligence.js.map +1 -1
  21. package/dist/brain/types.d.ts +21 -0
  22. package/dist/brain/types.d.ts.map +1 -1
  23. package/dist/chat/agent-loop-types.d.ts +82 -0
  24. package/dist/chat/agent-loop-types.d.ts.map +1 -0
  25. package/dist/chat/agent-loop-types.js +8 -0
  26. package/dist/chat/agent-loop-types.js.map +1 -0
  27. package/dist/chat/agent-loop.d.ts +19 -0
  28. package/dist/chat/agent-loop.d.ts.map +1 -0
  29. package/dist/chat/agent-loop.js +261 -0
  30. package/dist/chat/agent-loop.js.map +1 -0
  31. package/dist/chat/auth-manager.d.ts +49 -0
  32. package/dist/chat/auth-manager.d.ts.map +1 -0
  33. package/dist/chat/auth-manager.js +152 -0
  34. package/dist/chat/auth-manager.js.map +1 -0
  35. package/dist/chat/browser-session.d.ts +86 -0
  36. package/dist/chat/browser-session.d.ts.map +1 -0
  37. package/dist/chat/browser-session.js +143 -0
  38. package/dist/chat/browser-session.js.map +1 -0
  39. package/dist/chat/cancellation.d.ts +54 -0
  40. package/dist/chat/cancellation.d.ts.map +1 -0
  41. package/dist/chat/cancellation.js +80 -0
  42. package/dist/chat/cancellation.js.map +1 -0
  43. package/dist/chat/chat-session.d.ts +86 -0
  44. package/dist/chat/chat-session.d.ts.map +1 -0
  45. package/dist/chat/chat-session.js +252 -0
  46. package/dist/chat/chat-session.js.map +1 -0
  47. package/dist/chat/file-handler.d.ts +63 -0
  48. package/dist/chat/file-handler.d.ts.map +1 -0
  49. package/dist/chat/file-handler.js +182 -0
  50. package/dist/chat/file-handler.js.map +1 -0
  51. package/dist/chat/fragment-buffer.d.ts +49 -0
  52. package/dist/chat/fragment-buffer.d.ts.map +1 -0
  53. package/dist/chat/fragment-buffer.js +130 -0
  54. package/dist/chat/fragment-buffer.js.map +1 -0
  55. package/dist/chat/index.d.ts +24 -0
  56. package/dist/chat/index.d.ts.map +1 -0
  57. package/dist/chat/index.js +15 -0
  58. package/dist/chat/index.js.map +1 -0
  59. package/dist/chat/mcp-bridge.d.ts +60 -0
  60. package/dist/chat/mcp-bridge.d.ts.map +1 -0
  61. package/dist/chat/mcp-bridge.js +111 -0
  62. package/dist/chat/mcp-bridge.js.map +1 -0
  63. package/dist/chat/notifications.d.ts +82 -0
  64. package/dist/chat/notifications.d.ts.map +1 -0
  65. package/dist/chat/notifications.js +119 -0
  66. package/dist/chat/notifications.js.map +1 -0
  67. package/dist/chat/output-compressor.d.ts +30 -0
  68. package/dist/chat/output-compressor.d.ts.map +1 -0
  69. package/dist/chat/output-compressor.js +95 -0
  70. package/dist/chat/output-compressor.js.map +1 -0
  71. package/dist/chat/queue.d.ts +91 -0
  72. package/dist/chat/queue.d.ts.map +1 -0
  73. package/dist/chat/queue.js +146 -0
  74. package/dist/chat/queue.js.map +1 -0
  75. package/dist/chat/response-chunker.d.ts +29 -0
  76. package/dist/chat/response-chunker.d.ts.map +1 -0
  77. package/dist/chat/response-chunker.js +163 -0
  78. package/dist/chat/response-chunker.js.map +1 -0
  79. package/dist/chat/self-update.d.ts +62 -0
  80. package/dist/chat/self-update.d.ts.map +1 -0
  81. package/dist/chat/self-update.js +90 -0
  82. package/dist/chat/self-update.js.map +1 -0
  83. package/dist/chat/types.d.ts +105 -0
  84. package/dist/chat/types.d.ts.map +1 -0
  85. package/dist/chat/types.js +8 -0
  86. package/dist/chat/types.js.map +1 -0
  87. package/dist/chat/voice.d.ts +39 -0
  88. package/dist/chat/voice.d.ts.map +1 -0
  89. package/dist/chat/voice.js +80 -0
  90. package/dist/chat/voice.js.map +1 -0
  91. package/dist/claudemd/compose.d.ts +31 -0
  92. package/dist/claudemd/compose.d.ts.map +1 -0
  93. package/dist/claudemd/compose.js +105 -0
  94. package/dist/claudemd/compose.js.map +1 -0
  95. package/dist/claudemd/index.d.ts +5 -0
  96. package/dist/claudemd/index.d.ts.map +1 -0
  97. package/dist/claudemd/index.js +3 -0
  98. package/dist/claudemd/index.js.map +1 -0
  99. package/dist/claudemd/inject.d.ts +31 -0
  100. package/dist/claudemd/inject.d.ts.map +1 -0
  101. package/dist/claudemd/inject.js +157 -0
  102. package/dist/claudemd/inject.js.map +1 -0
  103. package/dist/claudemd/types.d.ts +41 -0
  104. package/dist/claudemd/types.d.ts.map +1 -0
  105. package/dist/claudemd/types.js +5 -0
  106. package/dist/claudemd/types.js.map +1 -0
  107. package/dist/context/context-engine.d.ts +31 -0
  108. package/dist/context/context-engine.d.ts.map +1 -0
  109. package/dist/context/context-engine.js +245 -0
  110. package/dist/context/context-engine.js.map +1 -0
  111. package/dist/context/index.d.ts +3 -0
  112. package/dist/context/index.d.ts.map +1 -0
  113. package/dist/context/index.js +2 -0
  114. package/dist/context/index.js.map +1 -0
  115. package/dist/context/types.d.ts +54 -0
  116. package/dist/context/types.d.ts.map +1 -0
  117. package/dist/context/types.js +5 -0
  118. package/dist/context/types.js.map +1 -0
  119. package/dist/enforcement/adapters/claude-code.d.ts +18 -0
  120. package/dist/enforcement/adapters/claude-code.d.ts.map +1 -0
  121. package/dist/enforcement/adapters/claude-code.js +106 -0
  122. package/dist/enforcement/adapters/claude-code.js.map +1 -0
  123. package/dist/enforcement/adapters/index.d.ts +2 -0
  124. package/dist/enforcement/adapters/index.d.ts.map +1 -0
  125. package/dist/enforcement/adapters/index.js +2 -0
  126. package/dist/enforcement/adapters/index.js.map +1 -0
  127. package/dist/enforcement/index.d.ts +4 -0
  128. package/dist/enforcement/index.d.ts.map +1 -0
  129. package/dist/enforcement/index.js +3 -0
  130. package/dist/enforcement/index.js.map +1 -0
  131. package/dist/enforcement/registry.d.ts +23 -0
  132. package/dist/enforcement/registry.d.ts.map +1 -0
  133. package/dist/enforcement/registry.js +63 -0
  134. package/dist/enforcement/registry.js.map +1 -0
  135. package/dist/enforcement/types.d.ts +51 -0
  136. package/dist/enforcement/types.d.ts.map +1 -0
  137. package/dist/enforcement/types.js +8 -0
  138. package/dist/enforcement/types.js.map +1 -0
  139. package/dist/facades/facade-factory.d.ts +10 -3
  140. package/dist/facades/facade-factory.d.ts.map +1 -1
  141. package/dist/facades/facade-factory.js +94 -5
  142. package/dist/facades/facade-factory.js.map +1 -1
  143. package/dist/facades/types.d.ts +15 -1
  144. package/dist/facades/types.d.ts.map +1 -1
  145. package/dist/facades/types.js +6 -0
  146. package/dist/facades/types.js.map +1 -1
  147. package/dist/health/health-registry.d.ts +40 -0
  148. package/dist/health/health-registry.d.ts.map +1 -0
  149. package/dist/health/health-registry.js +134 -0
  150. package/dist/health/health-registry.js.map +1 -0
  151. package/dist/health/index.d.ts +5 -0
  152. package/dist/health/index.d.ts.map +1 -0
  153. package/dist/health/index.js +3 -0
  154. package/dist/health/index.js.map +1 -0
  155. package/dist/health/vault-integrity.d.ts +13 -0
  156. package/dist/health/vault-integrity.d.ts.map +1 -0
  157. package/dist/health/vault-integrity.js +49 -0
  158. package/dist/health/vault-integrity.js.map +1 -0
  159. package/dist/index.d.ts +67 -6
  160. package/dist/index.d.ts.map +1 -1
  161. package/dist/index.js +51 -3
  162. package/dist/index.js.map +1 -1
  163. package/dist/intake/intake-pipeline.d.ts +0 -7
  164. package/dist/intake/intake-pipeline.d.ts.map +1 -1
  165. package/dist/intake/intake-pipeline.js +1 -1
  166. package/dist/intake/intake-pipeline.js.map +1 -1
  167. package/dist/intelligence/loader.d.ts.map +1 -1
  168. package/dist/intelligence/loader.js +51 -5
  169. package/dist/intelligence/loader.js.map +1 -1
  170. package/dist/intelligence/types.d.ts +1 -0
  171. package/dist/intelligence/types.d.ts.map +1 -1
  172. package/dist/migrations/index.d.ts +6 -0
  173. package/dist/migrations/index.d.ts.map +1 -0
  174. package/dist/migrations/index.js +5 -0
  175. package/dist/migrations/index.js.map +1 -0
  176. package/dist/migrations/migration-runner.d.ts +51 -0
  177. package/dist/migrations/migration-runner.d.ts.map +1 -0
  178. package/dist/migrations/migration-runner.js +141 -0
  179. package/dist/migrations/migration-runner.js.map +1 -0
  180. package/dist/packs/index.d.ts +10 -0
  181. package/dist/packs/index.d.ts.map +1 -0
  182. package/dist/packs/index.js +8 -0
  183. package/dist/packs/index.js.map +1 -0
  184. package/dist/packs/lockfile.d.ts +97 -0
  185. package/dist/packs/lockfile.d.ts.map +1 -0
  186. package/dist/packs/lockfile.js +129 -0
  187. package/dist/packs/lockfile.js.map +1 -0
  188. package/dist/packs/pack-installer.d.ts +41 -0
  189. package/dist/packs/pack-installer.d.ts.map +1 -0
  190. package/dist/packs/pack-installer.js +253 -0
  191. package/dist/packs/pack-installer.js.map +1 -0
  192. package/dist/packs/resolver.d.ts +51 -0
  193. package/dist/packs/resolver.d.ts.map +1 -0
  194. package/dist/packs/resolver.js +195 -0
  195. package/dist/packs/resolver.js.map +1 -0
  196. package/dist/packs/types.d.ts +186 -0
  197. package/dist/packs/types.d.ts.map +1 -0
  198. package/dist/packs/types.js +69 -0
  199. package/dist/packs/types.js.map +1 -0
  200. package/dist/persistence/postgres-provider.d.ts +42 -7
  201. package/dist/persistence/postgres-provider.d.ts.map +1 -1
  202. package/dist/persistence/postgres-provider.js +187 -46
  203. package/dist/persistence/postgres-provider.js.map +1 -1
  204. package/dist/playbooks/index.d.ts +2 -0
  205. package/dist/playbooks/index.d.ts.map +1 -1
  206. package/dist/playbooks/index.js +2 -0
  207. package/dist/playbooks/index.js.map +1 -1
  208. package/dist/playbooks/playbook-executor.d.ts +100 -0
  209. package/dist/playbooks/playbook-executor.d.ts.map +1 -0
  210. package/dist/playbooks/playbook-executor.js +207 -0
  211. package/dist/playbooks/playbook-executor.js.map +1 -0
  212. package/dist/plugins/index.d.ts +7 -0
  213. package/dist/plugins/index.d.ts.map +1 -0
  214. package/dist/plugins/index.js +7 -0
  215. package/dist/plugins/index.js.map +1 -0
  216. package/dist/plugins/plugin-loader.d.ts +28 -0
  217. package/dist/plugins/plugin-loader.d.ts.map +1 -0
  218. package/dist/plugins/plugin-loader.js +150 -0
  219. package/dist/plugins/plugin-loader.js.map +1 -0
  220. package/dist/plugins/plugin-registry.d.ts +58 -0
  221. package/dist/plugins/plugin-registry.d.ts.map +1 -0
  222. package/dist/plugins/plugin-registry.js +157 -0
  223. package/dist/plugins/plugin-registry.js.map +1 -0
  224. package/dist/plugins/types.d.ts +180 -0
  225. package/dist/plugins/types.d.ts.map +1 -0
  226. package/dist/plugins/types.js +48 -0
  227. package/dist/plugins/types.js.map +1 -0
  228. package/dist/runtime/admin-extra-ops.d.ts.map +1 -1
  229. package/dist/runtime/admin-extra-ops.js +181 -8
  230. package/dist/runtime/admin-extra-ops.js.map +1 -1
  231. package/dist/runtime/capture-ops.d.ts.map +1 -1
  232. package/dist/runtime/capture-ops.js +106 -7
  233. package/dist/runtime/capture-ops.js.map +1 -1
  234. package/dist/runtime/deprecation.d.ts +33 -0
  235. package/dist/runtime/deprecation.d.ts.map +1 -0
  236. package/dist/runtime/deprecation.js +41 -0
  237. package/dist/runtime/deprecation.js.map +1 -0
  238. package/dist/runtime/domain-ops.d.ts.map +1 -1
  239. package/dist/runtime/domain-ops.js +21 -2
  240. package/dist/runtime/domain-ops.js.map +1 -1
  241. package/dist/runtime/facades/admin-facade.d.ts.map +1 -1
  242. package/dist/runtime/facades/admin-facade.js +12 -1
  243. package/dist/runtime/facades/admin-facade.js.map +1 -1
  244. package/dist/runtime/facades/agency-facade.d.ts +7 -0
  245. package/dist/runtime/facades/agency-facade.d.ts.map +1 -0
  246. package/dist/runtime/facades/agency-facade.js +103 -0
  247. package/dist/runtime/facades/agency-facade.js.map +1 -0
  248. package/dist/runtime/facades/brain-facade.d.ts.map +1 -1
  249. package/dist/runtime/facades/brain-facade.js +58 -0
  250. package/dist/runtime/facades/brain-facade.js.map +1 -1
  251. package/dist/runtime/facades/chat-facade.d.ts +7 -0
  252. package/dist/runtime/facades/chat-facade.d.ts.map +1 -0
  253. package/dist/runtime/facades/chat-facade.js +808 -0
  254. package/dist/runtime/facades/chat-facade.js.map +1 -0
  255. package/dist/runtime/facades/context-facade.d.ts +7 -0
  256. package/dist/runtime/facades/context-facade.d.ts.map +1 -0
  257. package/dist/runtime/facades/context-facade.js +45 -0
  258. package/dist/runtime/facades/context-facade.js.map +1 -0
  259. package/dist/runtime/facades/index.d.ts.map +1 -1
  260. package/dist/runtime/facades/index.js +18 -0
  261. package/dist/runtime/facades/index.js.map +1 -1
  262. package/dist/runtime/facades/vault-facade.d.ts.map +1 -1
  263. package/dist/runtime/facades/vault-facade.js +247 -1
  264. package/dist/runtime/facades/vault-facade.js.map +1 -1
  265. package/dist/runtime/feature-flags.d.ts +18 -0
  266. package/dist/runtime/feature-flags.d.ts.map +1 -0
  267. package/dist/runtime/feature-flags.js +90 -0
  268. package/dist/runtime/feature-flags.js.map +1 -0
  269. package/dist/runtime/orchestrate-ops.d.ts.map +1 -1
  270. package/dist/runtime/orchestrate-ops.js +13 -0
  271. package/dist/runtime/orchestrate-ops.js.map +1 -1
  272. package/dist/runtime/pack-ops.d.ts +9 -0
  273. package/dist/runtime/pack-ops.d.ts.map +1 -0
  274. package/dist/runtime/pack-ops.js +76 -0
  275. package/dist/runtime/pack-ops.js.map +1 -0
  276. package/dist/runtime/playbook-ops.d.ts +3 -7
  277. package/dist/runtime/playbook-ops.d.ts.map +1 -1
  278. package/dist/runtime/playbook-ops.js +101 -10
  279. package/dist/runtime/playbook-ops.js.map +1 -1
  280. package/dist/runtime/plugin-ops.d.ts +9 -0
  281. package/dist/runtime/plugin-ops.d.ts.map +1 -0
  282. package/dist/runtime/plugin-ops.js +235 -0
  283. package/dist/runtime/plugin-ops.js.map +1 -0
  284. package/dist/runtime/runtime.d.ts.map +1 -1
  285. package/dist/runtime/runtime.js +72 -5
  286. package/dist/runtime/runtime.js.map +1 -1
  287. package/dist/runtime/telemetry-ops.d.ts +10 -0
  288. package/dist/runtime/telemetry-ops.d.ts.map +1 -0
  289. package/dist/runtime/telemetry-ops.js +53 -0
  290. package/dist/runtime/telemetry-ops.js.map +1 -0
  291. package/dist/runtime/types.d.ts +35 -0
  292. package/dist/runtime/types.d.ts.map +1 -1
  293. package/dist/runtime/vault-sharing-ops.d.ts +13 -0
  294. package/dist/runtime/vault-sharing-ops.d.ts.map +1 -0
  295. package/dist/runtime/vault-sharing-ops.js +345 -0
  296. package/dist/runtime/vault-sharing-ops.js.map +1 -0
  297. package/dist/streams/index.d.ts +1 -1
  298. package/dist/streams/index.d.ts.map +1 -1
  299. package/dist/streams/index.js +1 -1
  300. package/dist/streams/index.js.map +1 -1
  301. package/dist/streams/replayable-stream.d.ts +13 -1
  302. package/dist/streams/replayable-stream.d.ts.map +1 -1
  303. package/dist/streams/replayable-stream.js +27 -3
  304. package/dist/streams/replayable-stream.js.map +1 -1
  305. package/dist/text/similarity.d.ts +0 -1
  306. package/dist/text/similarity.d.ts.map +1 -1
  307. package/dist/text/similarity.js +1 -1
  308. package/dist/text/similarity.js.map +1 -1
  309. package/dist/transport/http-server.d.ts +56 -0
  310. package/dist/transport/http-server.d.ts.map +1 -0
  311. package/dist/transport/http-server.js +210 -0
  312. package/dist/transport/http-server.js.map +1 -0
  313. package/dist/transport/index.d.ts +11 -0
  314. package/dist/transport/index.d.ts.map +1 -0
  315. package/dist/transport/index.js +10 -0
  316. package/dist/transport/index.js.map +1 -0
  317. package/dist/transport/lsp-server.d.ts +140 -0
  318. package/dist/transport/lsp-server.d.ts.map +1 -0
  319. package/dist/transport/lsp-server.js +239 -0
  320. package/dist/transport/lsp-server.js.map +1 -0
  321. package/dist/transport/rate-limiter.d.ts +35 -0
  322. package/dist/transport/rate-limiter.d.ts.map +1 -0
  323. package/dist/transport/rate-limiter.js +72 -0
  324. package/dist/transport/rate-limiter.js.map +1 -0
  325. package/dist/transport/session-manager.d.ts +49 -0
  326. package/dist/transport/session-manager.d.ts.map +1 -0
  327. package/dist/transport/session-manager.js +83 -0
  328. package/dist/transport/session-manager.js.map +1 -0
  329. package/dist/transport/token-auth.d.ts +29 -0
  330. package/dist/transport/token-auth.d.ts.map +1 -0
  331. package/dist/transport/token-auth.js +84 -0
  332. package/dist/transport/token-auth.js.map +1 -0
  333. package/dist/transport/types.d.ts +61 -0
  334. package/dist/transport/types.d.ts.map +1 -0
  335. package/dist/transport/types.js +5 -0
  336. package/dist/transport/types.js.map +1 -0
  337. package/dist/transport/ws-server.d.ts +78 -0
  338. package/dist/transport/ws-server.d.ts.map +1 -0
  339. package/dist/transport/ws-server.js +342 -0
  340. package/dist/transport/ws-server.js.map +1 -0
  341. package/dist/vault/git-vault-sync.d.ts +107 -0
  342. package/dist/vault/git-vault-sync.d.ts.map +1 -0
  343. package/dist/vault/git-vault-sync.js +251 -0
  344. package/dist/vault/git-vault-sync.js.map +1 -0
  345. package/dist/vault/knowledge-review.d.ts +67 -0
  346. package/dist/vault/knowledge-review.d.ts.map +1 -0
  347. package/dist/vault/knowledge-review.js +133 -0
  348. package/dist/vault/knowledge-review.js.map +1 -0
  349. package/dist/vault/obsidian-sync.d.ts +94 -0
  350. package/dist/vault/obsidian-sync.d.ts.map +1 -0
  351. package/dist/vault/obsidian-sync.js +247 -0
  352. package/dist/vault/obsidian-sync.js.map +1 -0
  353. package/dist/vault/scope-detector.d.ts +31 -0
  354. package/dist/vault/scope-detector.d.ts.map +1 -0
  355. package/dist/vault/scope-detector.js +182 -0
  356. package/dist/vault/scope-detector.js.map +1 -0
  357. package/dist/vault/vault-branching.d.ts +71 -0
  358. package/dist/vault/vault-branching.d.ts.map +1 -0
  359. package/dist/vault/vault-branching.js +180 -0
  360. package/dist/vault/vault-branching.js.map +1 -0
  361. package/dist/vault/vault-manager.d.ts +89 -0
  362. package/dist/vault/vault-manager.d.ts.map +1 -0
  363. package/dist/vault/vault-manager.js +199 -0
  364. package/dist/vault/vault-manager.js.map +1 -0
  365. package/dist/vault/vault-types.d.ts +30 -0
  366. package/dist/vault/vault-types.d.ts.map +1 -0
  367. package/dist/vault/vault-types.js +10 -0
  368. package/dist/vault/vault-types.js.map +1 -0
  369. package/dist/vault/vault.d.ts +10 -0
  370. package/dist/vault/vault.d.ts.map +1 -1
  371. package/dist/vault/vault.js +36 -3
  372. package/dist/vault/vault.js.map +1 -1
  373. package/package.json +1 -1
  374. package/src/__tests__/admin-extra-ops.test.ts +31 -11
  375. package/src/__tests__/agency-manager.test.ts +374 -0
  376. package/src/__tests__/agent-loop.test.ts +256 -0
  377. package/src/__tests__/capture-ops.test.ts +275 -0
  378. package/src/__tests__/chat-differentiators.test.ts +251 -0
  379. package/src/__tests__/chat-enhanced.test.ts +390 -0
  380. package/src/__tests__/chat-transport.test.ts +665 -0
  381. package/src/__tests__/claudemd.test.ts +282 -0
  382. package/src/__tests__/context-engine.test.ts +256 -0
  383. package/src/__tests__/core-ops.test.ts +97 -5
  384. package/src/__tests__/deprecation.test.ts +78 -0
  385. package/src/__tests__/enforcement.test.ts +153 -0
  386. package/src/__tests__/facade-factory.test.ts +271 -0
  387. package/src/__tests__/feature-flags.test.ts +138 -0
  388. package/src/__tests__/git-vault-sync.test.ts +230 -0
  389. package/src/__tests__/health-registry.test.ts +173 -0
  390. package/src/__tests__/knowledge-review.test.ts +104 -0
  391. package/src/__tests__/lsp-transport.test.ts +442 -0
  392. package/src/__tests__/migration-runner.test.ts +170 -0
  393. package/src/__tests__/normalize.test.ts +10 -0
  394. package/src/__tests__/obsidian-sync.test.ts +354 -0
  395. package/src/__tests__/pack-lockfile.test.ts +261 -0
  396. package/src/__tests__/pack-ops.test.ts +146 -0
  397. package/src/__tests__/pack-system.test.ts +423 -0
  398. package/src/__tests__/playbook-executor.test.ts +249 -0
  399. package/src/__tests__/playbook-ops-execution.test.ts +189 -0
  400. package/src/__tests__/plugin-ops.test.ts +411 -0
  401. package/src/__tests__/plugin-system.test.ts +509 -0
  402. package/src/__tests__/postgres-provider.test.ts +64 -6
  403. package/src/__tests__/replayable-stream.test.ts +112 -1
  404. package/src/__tests__/scope-detector.test.ts +121 -0
  405. package/src/__tests__/session-lifecycle.test.ts +259 -0
  406. package/src/__tests__/transport.test.ts +758 -0
  407. package/src/__tests__/vault-branching.test.ts +274 -0
  408. package/src/__tests__/vault-connect.test.ts +179 -0
  409. package/src/__tests__/vault-integrity.test.ts +71 -0
  410. package/src/__tests__/vault-manager.test.ts +238 -0
  411. package/src/__tests__/vault-scaling.test.ts +281 -0
  412. package/src/__tests__/vault-sharing.test.ts +270 -0
  413. package/src/__tests__/ws-transport.test.ts +479 -0
  414. package/src/agency/agency-manager.ts +326 -0
  415. package/src/agency/index.ts +13 -0
  416. package/src/agency/types.ts +88 -0
  417. package/src/brain/brain.ts +27 -11
  418. package/src/brain/intelligence.ts +103 -0
  419. package/src/brain/types.ts +26 -0
  420. package/src/chat/agent-loop-types.ts +99 -0
  421. package/src/chat/agent-loop.ts +357 -0
  422. package/src/chat/auth-manager.ts +171 -0
  423. package/src/chat/browser-session.ts +188 -0
  424. package/src/chat/cancellation.ts +99 -0
  425. package/src/chat/chat-session.ts +283 -0
  426. package/src/chat/file-handler.ts +230 -0
  427. package/src/chat/fragment-buffer.ts +160 -0
  428. package/src/chat/index.ts +72 -0
  429. package/src/chat/mcp-bridge.ts +135 -0
  430. package/src/chat/notifications.ts +164 -0
  431. package/src/chat/output-compressor.ts +116 -0
  432. package/src/chat/queue.ts +208 -0
  433. package/src/chat/response-chunker.ts +200 -0
  434. package/src/chat/self-update.ts +117 -0
  435. package/src/chat/types.ts +126 -0
  436. package/src/chat/voice.ts +134 -0
  437. package/src/claudemd/compose.ts +142 -0
  438. package/src/claudemd/index.ts +17 -0
  439. package/src/claudemd/inject.ts +170 -0
  440. package/src/claudemd/types.ts +45 -0
  441. package/src/context/context-engine.ts +302 -0
  442. package/src/context/index.ts +11 -0
  443. package/src/context/types.ts +69 -0
  444. package/src/enforcement/adapters/claude-code.ts +135 -0
  445. package/src/enforcement/adapters/index.ts +1 -0
  446. package/src/enforcement/index.ts +10 -0
  447. package/src/enforcement/registry.ts +82 -0
  448. package/src/enforcement/types.ts +56 -0
  449. package/src/facades/facade-factory.ts +138 -5
  450. package/src/facades/types.ts +21 -0
  451. package/src/health/health-registry.ts +165 -0
  452. package/src/health/index.ts +11 -0
  453. package/src/health/vault-integrity.ts +66 -0
  454. package/src/index.ts +294 -2
  455. package/src/intake/intake-pipeline.ts +1 -1
  456. package/src/intelligence/loader.ts +58 -5
  457. package/src/intelligence/types.ts +1 -0
  458. package/src/migrations/index.ts +6 -0
  459. package/src/migrations/migration-runner.ts +185 -0
  460. package/src/packs/index.ts +20 -0
  461. package/src/packs/lockfile.ts +180 -0
  462. package/src/packs/pack-installer.ts +289 -0
  463. package/src/packs/resolver.ts +237 -0
  464. package/src/packs/types.ts +125 -0
  465. package/src/persistence/postgres-provider.ts +211 -58
  466. package/src/playbooks/index.ts +11 -0
  467. package/src/playbooks/playbook-executor.ts +301 -0
  468. package/src/plugins/index.ts +19 -0
  469. package/src/plugins/plugin-loader.ts +183 -0
  470. package/src/plugins/plugin-registry.ts +187 -0
  471. package/src/plugins/types.ts +119 -0
  472. package/src/runtime/admin-extra-ops.ts +193 -8
  473. package/src/runtime/capture-ops.ts +113 -8
  474. package/src/runtime/deprecation.ts +58 -0
  475. package/src/runtime/domain-ops.ts +21 -2
  476. package/src/runtime/facades/admin-facade.ts +16 -1
  477. package/src/runtime/facades/agency-facade.ts +111 -0
  478. package/src/runtime/facades/brain-facade.ts +60 -0
  479. package/src/runtime/facades/chat-facade.ts +918 -0
  480. package/src/runtime/facades/context-facade.ts +55 -0
  481. package/src/runtime/facades/index.ts +22 -1
  482. package/src/runtime/facades/vault-facade.ts +261 -1
  483. package/src/runtime/feature-flags.ts +101 -0
  484. package/src/runtime/orchestrate-ops.ts +13 -0
  485. package/src/runtime/pack-ops.ts +85 -0
  486. package/src/runtime/playbook-ops.ts +113 -9
  487. package/src/runtime/plugin-ops.ts +258 -0
  488. package/src/runtime/runtime.ts +84 -5
  489. package/src/runtime/telemetry-ops.ts +57 -0
  490. package/src/runtime/types.ts +35 -0
  491. package/src/runtime/vault-sharing-ops.ts +372 -0
  492. package/src/streams/index.ts +1 -1
  493. package/src/streams/replayable-stream.ts +34 -3
  494. package/src/text/similarity.ts +1 -1
  495. package/src/transport/http-server.ts +269 -0
  496. package/src/transport/index.ts +48 -0
  497. package/src/transport/lsp-server.ts +401 -0
  498. package/src/transport/rate-limiter.ts +97 -0
  499. package/src/transport/session-manager.ts +120 -0
  500. package/src/transport/token-auth.ts +96 -0
  501. package/src/transport/types.ts +66 -0
  502. package/src/transport/ws-server.ts +415 -0
  503. package/src/vault/git-vault-sync.ts +318 -0
  504. package/src/vault/knowledge-review.ts +221 -0
  505. package/src/vault/obsidian-sync.ts +346 -0
  506. package/src/vault/scope-detector.ts +219 -0
  507. package/src/vault/vault-branching.ts +264 -0
  508. package/src/vault/vault-manager.ts +237 -0
  509. package/src/vault/vault-types.ts +50 -0
  510. package/src/vault/vault.ts +41 -3
  511. package/src/governance/index.ts +0 -18
@@ -0,0 +1,111 @@
1
+ /**
2
+ * MCP Tool Bridge — intercepts MCP tool registrations and executes locally.
3
+ *
4
+ * Ported from Salvador's mcp-bridge.ts with improvements:
5
+ * - Simpler API (no Zod dependency — accepts JSON Schema directly)
6
+ * - Optional allowlist for tool filtering
7
+ * - Generic output compression hook
8
+ *
9
+ * Used by Telegram (and other chat transports) to bridge the agent's MCP tools
10
+ * into the agent loop without network round-trips.
11
+ */
12
+ const DEFAULT_MAX_OUTPUT = 10_000; // 10KB
13
+ export class McpToolBridge {
14
+ tools = new Map();
15
+ allowlist;
16
+ compressor;
17
+ maxOutput;
18
+ constructor(options) {
19
+ this.allowlist = options?.allowlist ? new Set(options.allowlist) : null;
20
+ this.compressor = options?.compressor ?? null;
21
+ this.maxOutput = options?.maxOutput ?? DEFAULT_MAX_OUTPUT;
22
+ }
23
+ /**
24
+ * Register a tool. If an allowlist is set, only allowed tools are registered.
25
+ */
26
+ register(tool) {
27
+ if (this.allowlist && !this.allowlist.has(tool.name))
28
+ return;
29
+ this.tools.set(tool.name, tool);
30
+ }
31
+ /**
32
+ * Register multiple tools at once.
33
+ */
34
+ registerAll(tools) {
35
+ for (const tool of tools) {
36
+ this.register(tool);
37
+ }
38
+ }
39
+ /**
40
+ * Check if a tool is registered.
41
+ */
42
+ has(name) {
43
+ return this.tools.has(name);
44
+ }
45
+ /**
46
+ * Get registered tools as AgentTool array (for the agent loop).
47
+ */
48
+ getTools() {
49
+ return [...this.tools.values()].map((t) => ({
50
+ name: t.name,
51
+ description: t.description,
52
+ inputSchema: t.inputSchema,
53
+ }));
54
+ }
55
+ /**
56
+ * Execute a tool by name.
57
+ */
58
+ async execute(name, input) {
59
+ const tool = this.tools.get(name);
60
+ if (!tool) {
61
+ return {
62
+ output: `Unknown tool: ${name}`,
63
+ isError: true,
64
+ };
65
+ }
66
+ try {
67
+ const rawResult = await tool.handler(input);
68
+ let output = typeof rawResult === 'string' ? rawResult : JSON.stringify(rawResult);
69
+ // Apply compression if available
70
+ if (this.compressor) {
71
+ output = this.compressor(name, output, this.maxOutput);
72
+ }
73
+ // Truncate if still too long
74
+ if (output.length > this.maxOutput) {
75
+ output = output.slice(0, this.maxOutput) + `\n... (truncated at ${this.maxOutput} chars)`;
76
+ }
77
+ return { output, isError: false };
78
+ }
79
+ catch (error) {
80
+ return {
81
+ output: `Tool error: ${error instanceof Error ? error.message : String(error)}`,
82
+ isError: true,
83
+ };
84
+ }
85
+ }
86
+ /**
87
+ * Create a ToolExecutor function for use with the agent loop.
88
+ */
89
+ createExecutor() {
90
+ return (name, input) => this.execute(name, input);
91
+ }
92
+ /**
93
+ * Number of registered tools.
94
+ */
95
+ get size() {
96
+ return this.tools.size;
97
+ }
98
+ /**
99
+ * List registered tool names.
100
+ */
101
+ listTools() {
102
+ return [...this.tools.keys()];
103
+ }
104
+ /**
105
+ * Clear all registered tools.
106
+ */
107
+ clear() {
108
+ this.tools.clear();
109
+ }
110
+ }
111
+ //# sourceMappingURL=mcp-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-bridge.js","sourceRoot":"","sources":["../../src/chat/mcp-bridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Notification Engine — pluggable background polling with debounce.
3
+ *
4
+ * Generic notification system for chat transports. Register check functions
5
+ * that run at configurable intervals. Built-in debounce prevents spam.
6
+ *
7
+ * Transport-specific delivery (Telegram, Discord, etc.) is handled via
8
+ * the onNotify callback.
9
+ */
10
+ export interface NotificationCheck {
11
+ /** Unique check ID. */
12
+ id: string;
13
+ /** Human-readable label. */
14
+ label: string;
15
+ /** The check function. Returns null if nothing to notify, or a message string. */
16
+ check: () => Promise<string | null>;
17
+ /** Cooldown between notifications for this check (ms). Default: 4 hours. */
18
+ cooldownMs?: number;
19
+ /** Optional time window — only run during these hours (0-23). */
20
+ activeHours?: {
21
+ start: number;
22
+ end: number;
23
+ };
24
+ }
25
+ export interface NotificationEngineConfig {
26
+ /** Polling interval in ms. Default: 30 minutes. */
27
+ intervalMs?: number;
28
+ /** Callback to deliver a notification. */
29
+ onNotify: (checkId: string, message: string) => Promise<void>;
30
+ /** Default cooldown for checks that don't specify one. Default: 4 hours. */
31
+ defaultCooldownMs?: number;
32
+ }
33
+ export interface NotificationStats {
34
+ /** Number of registered checks. */
35
+ checks: number;
36
+ /** Whether the engine is running. */
37
+ running: boolean;
38
+ /** Total notifications sent. */
39
+ sent: number;
40
+ /** Last poll timestamp. */
41
+ lastPollAt: number | null;
42
+ }
43
+ export declare class NotificationEngine {
44
+ private checks;
45
+ private lastNotified;
46
+ private timer;
47
+ private sent;
48
+ private lastPollAt;
49
+ private readonly intervalMs;
50
+ private readonly defaultCooldownMs;
51
+ private readonly onNotify;
52
+ constructor(config: NotificationEngineConfig);
53
+ /**
54
+ * Register a notification check.
55
+ */
56
+ register(check: NotificationCheck): void;
57
+ /**
58
+ * Unregister a check.
59
+ */
60
+ unregister(id: string): boolean;
61
+ /**
62
+ * Start the polling loop. Runs an initial check after a short delay.
63
+ */
64
+ start(): void;
65
+ /**
66
+ * Stop the polling loop.
67
+ */
68
+ stop(): void;
69
+ /**
70
+ * Run all checks once (called automatically by the polling loop).
71
+ */
72
+ poll(): Promise<number>;
73
+ /**
74
+ * Get engine stats.
75
+ */
76
+ stats(): NotificationStats;
77
+ /**
78
+ * Check if enough time has passed since last notification for this check.
79
+ */
80
+ private shouldNotify;
81
+ }
82
+ //# sourceMappingURL=notifications.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../../src/chat/notifications.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,MAAM,WAAW,iBAAiB;IAChC,uBAAuB;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,kFAAkF;IAClF,KAAK,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACpC,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iEAAiE;IACjE,WAAW,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9C;AAED,MAAM,WAAW,wBAAwB;IACvC,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,4EAA4E;IAC5E,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAOD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAwC;IACtD,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsD;gBAEnE,MAAM,EAAE,wBAAwB;IAM5C;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI;IAIxC;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI/B;;OAEG;IACH,KAAK,IAAI,IAAI;IASb;;OAEG;IACH,IAAI,IAAI,IAAI;IAOZ;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAsC7B;;OAEG;IACH,KAAK,IAAI,iBAAiB;IAS1B;;OAEG;IACH,OAAO,CAAC,YAAY;CAKrB"}
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Notification Engine — pluggable background polling with debounce.
3
+ *
4
+ * Generic notification system for chat transports. Register check functions
5
+ * that run at configurable intervals. Built-in debounce prevents spam.
6
+ *
7
+ * Transport-specific delivery (Telegram, Discord, etc.) is handled via
8
+ * the onNotify callback.
9
+ */
10
+ // ─── Engine ───────────────────────────────────────────────────────────
11
+ const DEFAULT_INTERVAL_MS = 30 * 60 * 1000; // 30 minutes
12
+ const DEFAULT_COOLDOWN_MS = 4 * 60 * 60 * 1000; // 4 hours
13
+ export class NotificationEngine {
14
+ checks = new Map();
15
+ lastNotified = new Map();
16
+ timer = null;
17
+ sent = 0;
18
+ lastPollAt = null;
19
+ intervalMs;
20
+ defaultCooldownMs;
21
+ onNotify;
22
+ constructor(config) {
23
+ this.intervalMs = config.intervalMs ?? DEFAULT_INTERVAL_MS;
24
+ this.defaultCooldownMs = config.defaultCooldownMs ?? DEFAULT_COOLDOWN_MS;
25
+ this.onNotify = config.onNotify;
26
+ }
27
+ /**
28
+ * Register a notification check.
29
+ */
30
+ register(check) {
31
+ this.checks.set(check.id, check);
32
+ }
33
+ /**
34
+ * Unregister a check.
35
+ */
36
+ unregister(id) {
37
+ return this.checks.delete(id);
38
+ }
39
+ /**
40
+ * Start the polling loop. Runs an initial check after a short delay.
41
+ */
42
+ start() {
43
+ if (this.timer)
44
+ return; // Already running
45
+ // Initial check after 10 seconds
46
+ setTimeout(() => this.poll(), 10_000);
47
+ this.timer = setInterval(() => this.poll(), this.intervalMs);
48
+ }
49
+ /**
50
+ * Stop the polling loop.
51
+ */
52
+ stop() {
53
+ if (this.timer) {
54
+ clearInterval(this.timer);
55
+ this.timer = null;
56
+ }
57
+ }
58
+ /**
59
+ * Run all checks once (called automatically by the polling loop).
60
+ */
61
+ async poll() {
62
+ this.lastPollAt = Date.now();
63
+ let notified = 0;
64
+ for (const [id, check] of this.checks) {
65
+ try {
66
+ // Time window check
67
+ if (check.activeHours) {
68
+ const hour = new Date().getHours();
69
+ const { start, end } = check.activeHours;
70
+ if (start <= end) {
71
+ if (hour < start || hour >= end)
72
+ continue;
73
+ }
74
+ else {
75
+ // Wraps midnight (e.g., 22-6)
76
+ if (hour < start && hour >= end)
77
+ continue;
78
+ }
79
+ }
80
+ // Cooldown check
81
+ if (!this.shouldNotify(id, check.cooldownMs ?? this.defaultCooldownMs)) {
82
+ continue;
83
+ }
84
+ const message = await check.check();
85
+ if (message) {
86
+ await this.onNotify(id, message);
87
+ this.lastNotified.set(id, Date.now());
88
+ this.sent++;
89
+ notified++;
90
+ }
91
+ }
92
+ catch {
93
+ // Individual check failure is non-critical
94
+ }
95
+ }
96
+ return notified;
97
+ }
98
+ /**
99
+ * Get engine stats.
100
+ */
101
+ stats() {
102
+ return {
103
+ checks: this.checks.size,
104
+ running: this.timer !== null,
105
+ sent: this.sent,
106
+ lastPollAt: this.lastPollAt,
107
+ };
108
+ }
109
+ /**
110
+ * Check if enough time has passed since last notification for this check.
111
+ */
112
+ shouldNotify(checkId, cooldownMs) {
113
+ const last = this.lastNotified.get(checkId);
114
+ if (!last)
115
+ return true;
116
+ return Date.now() - last >= cooldownMs;
117
+ }
118
+ }
119
+ //# sourceMappingURL=notifications.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notifications.js","sourceRoot":"","sources":["../../src/chat/notifications.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Output Compressor — compress verbose tool outputs for chat contexts.
3
+ *
4
+ * Unlike Salvador's 30+ domain-specific compressors, this provides:
5
+ * 1. A generic JSON compressor (extracts key fields, truncates arrays)
6
+ * 2. A registry for domain-specific compressors (pluggable)
7
+ *
8
+ * Domain packs can register their own compressors for their tools.
9
+ */
10
+ import type { OutputCompressor } from './agent-loop-types.js';
11
+ type ToolCompressor = (output: string, maxLength: number) => string;
12
+ /**
13
+ * Register a compressor for a specific tool name (or prefix).
14
+ */
15
+ export declare function registerCompressor(toolNameOrPrefix: string, compressor: ToolCompressor): void;
16
+ /**
17
+ * Clear all registered compressors.
18
+ */
19
+ export declare function clearCompressors(): void;
20
+ /**
21
+ * Create a generic output compressor. Uses registered compressors for known tools,
22
+ * falls back to JSON-aware truncation.
23
+ */
24
+ export declare function createOutputCompressor(options?: {
25
+ maxLength?: number;
26
+ maxArrayItems?: number;
27
+ maxStringLength?: number;
28
+ }): OutputCompressor;
29
+ export {};
30
+ //# sourceMappingURL=output-compressor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output-compressor.d.ts","sourceRoot":"","sources":["../../src/chat/output-compressor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAQ9D,KAAK,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;AAIpE;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,GAAG,IAAI,CAE7F;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAID;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,CAAC,EAAE;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GAAG,gBAAgB,CAiCnB"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Output Compressor — compress verbose tool outputs for chat contexts.
3
+ *
4
+ * Unlike Salvador's 30+ domain-specific compressors, this provides:
5
+ * 1. A generic JSON compressor (extracts key fields, truncates arrays)
6
+ * 2. A registry for domain-specific compressors (pluggable)
7
+ *
8
+ * Domain packs can register their own compressors for their tools.
9
+ */
10
+ const DEFAULT_MAX_LENGTH = 4000;
11
+ const DEFAULT_MAX_ARRAY_ITEMS = 5;
12
+ const DEFAULT_MAX_STRING_LENGTH = 500;
13
+ const compressorRegistry = new Map();
14
+ /**
15
+ * Register a compressor for a specific tool name (or prefix).
16
+ */
17
+ export function registerCompressor(toolNameOrPrefix, compressor) {
18
+ compressorRegistry.set(toolNameOrPrefix, compressor);
19
+ }
20
+ /**
21
+ * Clear all registered compressors.
22
+ */
23
+ export function clearCompressors() {
24
+ compressorRegistry.clear();
25
+ }
26
+ // ─── Generic Compressor ─────────────────────────────────────────────
27
+ /**
28
+ * Create a generic output compressor. Uses registered compressors for known tools,
29
+ * falls back to JSON-aware truncation.
30
+ */
31
+ export function createOutputCompressor(options) {
32
+ const maxLength = options?.maxLength ?? DEFAULT_MAX_LENGTH;
33
+ const maxArrayItems = options?.maxArrayItems ?? DEFAULT_MAX_ARRAY_ITEMS;
34
+ const maxStringLength = options?.maxStringLength ?? DEFAULT_MAX_STRING_LENGTH;
35
+ return (toolName, output, overrideMax) => {
36
+ const limit = overrideMax ?? maxLength;
37
+ // Check registered compressors (exact match, then prefix match)
38
+ const exact = compressorRegistry.get(toolName);
39
+ if (exact)
40
+ return exact(output, limit);
41
+ for (const [prefix, compressor] of compressorRegistry) {
42
+ if (toolName.startsWith(prefix)) {
43
+ return compressor(output, limit);
44
+ }
45
+ }
46
+ // Already short enough
47
+ if (output.length <= limit)
48
+ return output;
49
+ // Try JSON-aware compression
50
+ try {
51
+ const parsed = JSON.parse(output);
52
+ const compressed = compressValue(parsed, maxArrayItems, maxStringLength);
53
+ const result = JSON.stringify(compressed, null, 2);
54
+ if (result.length <= limit)
55
+ return result;
56
+ return result.slice(0, limit) + '\n... (compressed, truncated)';
57
+ }
58
+ catch {
59
+ // Not JSON — plain text truncation
60
+ return output.slice(0, limit) + '\n... (truncated)';
61
+ }
62
+ };
63
+ }
64
+ // ─── JSON Compression ───────────────────────────────────────────────
65
+ function compressValue(value, maxArrayItems, maxStringLength) {
66
+ if (value === null || value === undefined)
67
+ return value;
68
+ if (typeof value === 'string') {
69
+ if (value.length > maxStringLength) {
70
+ return value.slice(0, maxStringLength) + `... (+${value.length - maxStringLength} chars)`;
71
+ }
72
+ return value;
73
+ }
74
+ if (typeof value === 'number' || typeof value === 'boolean')
75
+ return value;
76
+ if (Array.isArray(value)) {
77
+ const truncated = value
78
+ .slice(0, maxArrayItems)
79
+ .map((item) => compressValue(item, maxArrayItems, maxStringLength));
80
+ if (value.length > maxArrayItems) {
81
+ truncated.push(`... +${value.length - maxArrayItems} more`);
82
+ }
83
+ return truncated;
84
+ }
85
+ if (typeof value === 'object') {
86
+ const obj = value;
87
+ const result = {};
88
+ for (const [key, val] of Object.entries(obj)) {
89
+ result[key] = compressValue(val, maxArrayItems, maxStringLength);
90
+ }
91
+ return result;
92
+ }
93
+ return value;
94
+ }
95
+ //# sourceMappingURL=output-compressor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output-compressor.js","sourceRoot":"","sources":["../../src/chat/output-compressor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Message Queue — disk-based message passing for zero-cost chat relay.
3
+ *
4
+ * The queue bot writes incoming messages to inbox/. Claude Code (or any
5
+ * processor) reads them, generates responses, and writes to outbox/.
6
+ * The outbox poller sends replies back through the chat transport.
7
+ *
8
+ * Directory structure:
9
+ * ~/.{agentId}/queue/
10
+ * inbox/ ← bot writes, processor reads
11
+ * outbox/ ← processor writes, bot reads and sends
12
+ */
13
+ export interface QueuedMessage {
14
+ /** Unique message ID: `{chatId}-{timestamp}`. */
15
+ id: string;
16
+ /** Chat/channel ID. */
17
+ chatId: string;
18
+ /** Sender user ID. */
19
+ userId: string;
20
+ /** Sender username (if available). */
21
+ username?: string;
22
+ /** Message type. */
23
+ type: 'text' | 'voice' | 'photo';
24
+ /** Text content (for text messages or transcribed voice). */
25
+ text?: string;
26
+ /** Voice metadata. */
27
+ voice?: {
28
+ fileId: string;
29
+ duration: number;
30
+ };
31
+ /** Photo metadata. */
32
+ photo?: {
33
+ fileId: string;
34
+ caption?: string;
35
+ };
36
+ /** ISO timestamp. */
37
+ timestamp: string;
38
+ }
39
+ export interface QueuedResponse {
40
+ /** Original message ID this responds to. */
41
+ messageId: string;
42
+ /** Target chat ID. */
43
+ chatId: string;
44
+ /** Response text. */
45
+ text: string;
46
+ /** ISO timestamp. */
47
+ timestamp: string;
48
+ }
49
+ export interface QueueConfig {
50
+ /** Base directory for queue (e.g., ~/.{agentId}/queue). */
51
+ queueDir: string;
52
+ }
53
+ export declare class MessageQueue {
54
+ private readonly inboxDir;
55
+ private readonly outboxDir;
56
+ constructor(config: QueueConfig);
57
+ /**
58
+ * Enqueue an incoming message to inbox.
59
+ */
60
+ enqueue(msg: Omit<QueuedMessage, 'id' | 'timestamp'>): QueuedMessage;
61
+ /**
62
+ * Read all pending inbox messages, sorted by timestamp.
63
+ */
64
+ readInbox(): QueuedMessage[];
65
+ /**
66
+ * Get the number of pending inbox messages.
67
+ */
68
+ inboxCount(): number;
69
+ /**
70
+ * Remove a message from inbox (after processing).
71
+ */
72
+ removeFromInbox(messageId: string): boolean;
73
+ /**
74
+ * Write a response to outbox.
75
+ */
76
+ sendResponse(messageId: string, chatId: string, text: string): QueuedResponse;
77
+ /**
78
+ * Read and remove all pending outbox responses.
79
+ */
80
+ drainOutbox(): QueuedResponse[];
81
+ /**
82
+ * Get outbox count.
83
+ */
84
+ outboxCount(): number;
85
+ /**
86
+ * Format inbox as readable text (for MCP tool output).
87
+ */
88
+ formatInbox(): string;
89
+ private listJsonFiles;
90
+ }
91
+ //# sourceMappingURL=queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../src/chat/queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAcH,MAAM,WAAW,aAAa;IAC5B,iDAAiD;IACjD,EAAE,EAAE,MAAM,CAAC;IACX,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,sBAAsB;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB;IACpB,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IACjC,6DAA6D;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sBAAsB;IACtB,KAAK,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,sBAAsB;IACtB,KAAK,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,qBAAqB;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,4CAA4C;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,sBAAsB;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAC;CAClB;AAID,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,MAAM,EAAE,WAAW;IAO/B;;OAEG;IACH,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,GAAG,WAAW,CAAC,GAAG,aAAa;IASpE;;OAEG;IACH,SAAS,IAAI,aAAa,EAAE;IAkB5B;;OAEG;IACH,UAAU,IAAI,MAAM;IAIpB;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAY3C;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc;IAc7E;;OAEG;IACH,WAAW,IAAI,cAAc,EAAE;IAoB/B;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,WAAW,IAAI,MAAM;IAkBrB,OAAO,CAAC,aAAa;CAStB"}