@soleri/core 2.9.0 → 2.11.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 (503) 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 +14 -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/types.d.ts +1 -0
  168. package/dist/intelligence/types.d.ts.map +1 -1
  169. package/dist/migrations/index.d.ts +6 -0
  170. package/dist/migrations/index.d.ts.map +1 -0
  171. package/dist/migrations/index.js +5 -0
  172. package/dist/migrations/index.js.map +1 -0
  173. package/dist/migrations/migration-runner.d.ts +51 -0
  174. package/dist/migrations/migration-runner.d.ts.map +1 -0
  175. package/dist/migrations/migration-runner.js +141 -0
  176. package/dist/migrations/migration-runner.js.map +1 -0
  177. package/dist/packs/index.d.ts +10 -0
  178. package/dist/packs/index.d.ts.map +1 -0
  179. package/dist/packs/index.js +8 -0
  180. package/dist/packs/index.js.map +1 -0
  181. package/dist/packs/lockfile.d.ts +97 -0
  182. package/dist/packs/lockfile.d.ts.map +1 -0
  183. package/dist/packs/lockfile.js +129 -0
  184. package/dist/packs/lockfile.js.map +1 -0
  185. package/dist/packs/pack-installer.d.ts +41 -0
  186. package/dist/packs/pack-installer.d.ts.map +1 -0
  187. package/dist/packs/pack-installer.js +253 -0
  188. package/dist/packs/pack-installer.js.map +1 -0
  189. package/dist/packs/resolver.d.ts +51 -0
  190. package/dist/packs/resolver.d.ts.map +1 -0
  191. package/dist/packs/resolver.js +195 -0
  192. package/dist/packs/resolver.js.map +1 -0
  193. package/dist/packs/types.d.ts +186 -0
  194. package/dist/packs/types.d.ts.map +1 -0
  195. package/dist/packs/types.js +69 -0
  196. package/dist/packs/types.js.map +1 -0
  197. package/dist/persistence/postgres-provider.d.ts +42 -7
  198. package/dist/persistence/postgres-provider.d.ts.map +1 -1
  199. package/dist/persistence/postgres-provider.js +187 -46
  200. package/dist/persistence/postgres-provider.js.map +1 -1
  201. package/dist/planning/gap-analysis.d.ts.map +1 -1
  202. package/dist/planning/gap-analysis.js +3 -1
  203. package/dist/planning/gap-analysis.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/facades/admin-facade.d.ts.map +1 -1
  239. package/dist/runtime/facades/admin-facade.js +12 -1
  240. package/dist/runtime/facades/admin-facade.js.map +1 -1
  241. package/dist/runtime/facades/agency-facade.d.ts +7 -0
  242. package/dist/runtime/facades/agency-facade.d.ts.map +1 -0
  243. package/dist/runtime/facades/agency-facade.js +103 -0
  244. package/dist/runtime/facades/agency-facade.js.map +1 -0
  245. package/dist/runtime/facades/brain-facade.d.ts.map +1 -1
  246. package/dist/runtime/facades/brain-facade.js +58 -0
  247. package/dist/runtime/facades/brain-facade.js.map +1 -1
  248. package/dist/runtime/facades/chat-facade.d.ts +7 -0
  249. package/dist/runtime/facades/chat-facade.d.ts.map +1 -0
  250. package/dist/runtime/facades/chat-facade.js +808 -0
  251. package/dist/runtime/facades/chat-facade.js.map +1 -0
  252. package/dist/runtime/facades/context-facade.d.ts +7 -0
  253. package/dist/runtime/facades/context-facade.d.ts.map +1 -0
  254. package/dist/runtime/facades/context-facade.js +45 -0
  255. package/dist/runtime/facades/context-facade.js.map +1 -0
  256. package/dist/runtime/facades/index.d.ts.map +1 -1
  257. package/dist/runtime/facades/index.js +18 -0
  258. package/dist/runtime/facades/index.js.map +1 -1
  259. package/dist/runtime/facades/vault-facade.d.ts.map +1 -1
  260. package/dist/runtime/facades/vault-facade.js +247 -1
  261. package/dist/runtime/facades/vault-facade.js.map +1 -1
  262. package/dist/runtime/feature-flags.d.ts +18 -0
  263. package/dist/runtime/feature-flags.d.ts.map +1 -0
  264. package/dist/runtime/feature-flags.js +90 -0
  265. package/dist/runtime/feature-flags.js.map +1 -0
  266. package/dist/runtime/pack-ops.d.ts +9 -0
  267. package/dist/runtime/pack-ops.d.ts.map +1 -0
  268. package/dist/runtime/pack-ops.js +76 -0
  269. package/dist/runtime/pack-ops.js.map +1 -0
  270. package/dist/runtime/playbook-ops.d.ts +3 -7
  271. package/dist/runtime/playbook-ops.d.ts.map +1 -1
  272. package/dist/runtime/playbook-ops.js +101 -10
  273. package/dist/runtime/playbook-ops.js.map +1 -1
  274. package/dist/runtime/plugin-ops.d.ts +9 -0
  275. package/dist/runtime/plugin-ops.d.ts.map +1 -0
  276. package/dist/runtime/plugin-ops.js +235 -0
  277. package/dist/runtime/plugin-ops.js.map +1 -0
  278. package/dist/runtime/runtime.d.ts.map +1 -1
  279. package/dist/runtime/runtime.js +72 -5
  280. package/dist/runtime/runtime.js.map +1 -1
  281. package/dist/runtime/telemetry-ops.d.ts +10 -0
  282. package/dist/runtime/telemetry-ops.d.ts.map +1 -0
  283. package/dist/runtime/telemetry-ops.js +53 -0
  284. package/dist/runtime/telemetry-ops.js.map +1 -0
  285. package/dist/runtime/types.d.ts +35 -0
  286. package/dist/runtime/types.d.ts.map +1 -1
  287. package/dist/runtime/vault-sharing-ops.d.ts +13 -0
  288. package/dist/runtime/vault-sharing-ops.d.ts.map +1 -0
  289. package/dist/runtime/vault-sharing-ops.js +345 -0
  290. package/dist/runtime/vault-sharing-ops.js.map +1 -0
  291. package/dist/streams/index.d.ts +1 -1
  292. package/dist/streams/index.d.ts.map +1 -1
  293. package/dist/streams/index.js +1 -1
  294. package/dist/streams/index.js.map +1 -1
  295. package/dist/streams/replayable-stream.d.ts +13 -1
  296. package/dist/streams/replayable-stream.d.ts.map +1 -1
  297. package/dist/streams/replayable-stream.js +27 -3
  298. package/dist/streams/replayable-stream.js.map +1 -1
  299. package/dist/text/similarity.d.ts +0 -1
  300. package/dist/text/similarity.d.ts.map +1 -1
  301. package/dist/text/similarity.js +1 -1
  302. package/dist/text/similarity.js.map +1 -1
  303. package/dist/transport/http-server.d.ts +56 -0
  304. package/dist/transport/http-server.d.ts.map +1 -0
  305. package/dist/transport/http-server.js +210 -0
  306. package/dist/transport/http-server.js.map +1 -0
  307. package/dist/transport/index.d.ts +11 -0
  308. package/dist/transport/index.d.ts.map +1 -0
  309. package/dist/transport/index.js +10 -0
  310. package/dist/transport/index.js.map +1 -0
  311. package/dist/transport/lsp-server.d.ts +140 -0
  312. package/dist/transport/lsp-server.d.ts.map +1 -0
  313. package/dist/transport/lsp-server.js +239 -0
  314. package/dist/transport/lsp-server.js.map +1 -0
  315. package/dist/transport/rate-limiter.d.ts +35 -0
  316. package/dist/transport/rate-limiter.d.ts.map +1 -0
  317. package/dist/transport/rate-limiter.js +72 -0
  318. package/dist/transport/rate-limiter.js.map +1 -0
  319. package/dist/transport/session-manager.d.ts +49 -0
  320. package/dist/transport/session-manager.d.ts.map +1 -0
  321. package/dist/transport/session-manager.js +83 -0
  322. package/dist/transport/session-manager.js.map +1 -0
  323. package/dist/transport/token-auth.d.ts +29 -0
  324. package/dist/transport/token-auth.d.ts.map +1 -0
  325. package/dist/transport/token-auth.js +84 -0
  326. package/dist/transport/token-auth.js.map +1 -0
  327. package/dist/transport/types.d.ts +61 -0
  328. package/dist/transport/types.d.ts.map +1 -0
  329. package/dist/transport/types.js +5 -0
  330. package/dist/transport/types.js.map +1 -0
  331. package/dist/transport/ws-server.d.ts +78 -0
  332. package/dist/transport/ws-server.d.ts.map +1 -0
  333. package/dist/transport/ws-server.js +342 -0
  334. package/dist/transport/ws-server.js.map +1 -0
  335. package/dist/vault/git-vault-sync.d.ts +107 -0
  336. package/dist/vault/git-vault-sync.d.ts.map +1 -0
  337. package/dist/vault/git-vault-sync.js +251 -0
  338. package/dist/vault/git-vault-sync.js.map +1 -0
  339. package/dist/vault/knowledge-review.d.ts +67 -0
  340. package/dist/vault/knowledge-review.d.ts.map +1 -0
  341. package/dist/vault/knowledge-review.js +133 -0
  342. package/dist/vault/knowledge-review.js.map +1 -0
  343. package/dist/vault/obsidian-sync.d.ts +94 -0
  344. package/dist/vault/obsidian-sync.d.ts.map +1 -0
  345. package/dist/vault/obsidian-sync.js +247 -0
  346. package/dist/vault/obsidian-sync.js.map +1 -0
  347. package/dist/vault/scope-detector.d.ts +31 -0
  348. package/dist/vault/scope-detector.d.ts.map +1 -0
  349. package/dist/vault/scope-detector.js +182 -0
  350. package/dist/vault/scope-detector.js.map +1 -0
  351. package/dist/vault/vault-branching.d.ts +71 -0
  352. package/dist/vault/vault-branching.d.ts.map +1 -0
  353. package/dist/vault/vault-branching.js +180 -0
  354. package/dist/vault/vault-branching.js.map +1 -0
  355. package/dist/vault/vault-manager.d.ts +89 -0
  356. package/dist/vault/vault-manager.d.ts.map +1 -0
  357. package/dist/vault/vault-manager.js +199 -0
  358. package/dist/vault/vault-manager.js.map +1 -0
  359. package/dist/vault/vault-types.d.ts +30 -0
  360. package/dist/vault/vault-types.d.ts.map +1 -0
  361. package/dist/vault/vault-types.js +10 -0
  362. package/dist/vault/vault-types.js.map +1 -0
  363. package/dist/vault/vault.d.ts +10 -0
  364. package/dist/vault/vault.d.ts.map +1 -1
  365. package/dist/vault/vault.js +36 -3
  366. package/dist/vault/vault.js.map +1 -1
  367. package/package.json +1 -1
  368. package/src/__tests__/admin-extra-ops.test.ts +31 -11
  369. package/src/__tests__/agency-manager.test.ts +374 -0
  370. package/src/__tests__/agent-loop.test.ts +256 -0
  371. package/src/__tests__/capture-ops.test.ts +275 -0
  372. package/src/__tests__/chat-differentiators.test.ts +251 -0
  373. package/src/__tests__/chat-enhanced.test.ts +390 -0
  374. package/src/__tests__/chat-transport.test.ts +665 -0
  375. package/src/__tests__/claudemd.test.ts +282 -0
  376. package/src/__tests__/context-engine.test.ts +256 -0
  377. package/src/__tests__/core-ops.test.ts +97 -5
  378. package/src/__tests__/deprecation.test.ts +78 -0
  379. package/src/__tests__/enforcement.test.ts +153 -0
  380. package/src/__tests__/facade-factory.test.ts +271 -0
  381. package/src/__tests__/feature-flags.test.ts +138 -0
  382. package/src/__tests__/git-vault-sync.test.ts +230 -0
  383. package/src/__tests__/health-registry.test.ts +173 -0
  384. package/src/__tests__/knowledge-review.test.ts +104 -0
  385. package/src/__tests__/lsp-transport.test.ts +442 -0
  386. package/src/__tests__/migration-runner.test.ts +170 -0
  387. package/src/__tests__/normalize.test.ts +10 -0
  388. package/src/__tests__/obsidian-sync.test.ts +354 -0
  389. package/src/__tests__/pack-lockfile.test.ts +261 -0
  390. package/src/__tests__/pack-ops.test.ts +146 -0
  391. package/src/__tests__/pack-system.test.ts +423 -0
  392. package/src/__tests__/playbook-executor.test.ts +249 -0
  393. package/src/__tests__/playbook-ops-execution.test.ts +189 -0
  394. package/src/__tests__/plugin-ops.test.ts +411 -0
  395. package/src/__tests__/plugin-system.test.ts +509 -0
  396. package/src/__tests__/postgres-provider.test.ts +64 -6
  397. package/src/__tests__/replayable-stream.test.ts +112 -1
  398. package/src/__tests__/scope-detector.test.ts +121 -0
  399. package/src/__tests__/session-lifecycle.test.ts +259 -0
  400. package/src/__tests__/transport.test.ts +758 -0
  401. package/src/__tests__/vault-branching.test.ts +274 -0
  402. package/src/__tests__/vault-connect.test.ts +179 -0
  403. package/src/__tests__/vault-integrity.test.ts +71 -0
  404. package/src/__tests__/vault-manager.test.ts +238 -0
  405. package/src/__tests__/vault-scaling.test.ts +281 -0
  406. package/src/__tests__/vault-sharing.test.ts +270 -0
  407. package/src/__tests__/ws-transport.test.ts +479 -0
  408. package/src/agency/agency-manager.ts +326 -0
  409. package/src/agency/index.ts +13 -0
  410. package/src/agency/types.ts +88 -0
  411. package/src/brain/brain.ts +15 -11
  412. package/src/brain/intelligence.ts +103 -0
  413. package/src/brain/types.ts +26 -0
  414. package/src/chat/agent-loop-types.ts +99 -0
  415. package/src/chat/agent-loop.ts +357 -0
  416. package/src/chat/auth-manager.ts +171 -0
  417. package/src/chat/browser-session.ts +188 -0
  418. package/src/chat/cancellation.ts +99 -0
  419. package/src/chat/chat-session.ts +283 -0
  420. package/src/chat/file-handler.ts +230 -0
  421. package/src/chat/fragment-buffer.ts +160 -0
  422. package/src/chat/index.ts +72 -0
  423. package/src/chat/mcp-bridge.ts +135 -0
  424. package/src/chat/notifications.ts +164 -0
  425. package/src/chat/output-compressor.ts +116 -0
  426. package/src/chat/queue.ts +208 -0
  427. package/src/chat/response-chunker.ts +200 -0
  428. package/src/chat/self-update.ts +117 -0
  429. package/src/chat/types.ts +126 -0
  430. package/src/chat/voice.ts +134 -0
  431. package/src/claudemd/compose.ts +142 -0
  432. package/src/claudemd/index.ts +17 -0
  433. package/src/claudemd/inject.ts +170 -0
  434. package/src/claudemd/types.ts +45 -0
  435. package/src/context/context-engine.ts +302 -0
  436. package/src/context/index.ts +11 -0
  437. package/src/context/types.ts +69 -0
  438. package/src/enforcement/adapters/claude-code.ts +135 -0
  439. package/src/enforcement/adapters/index.ts +1 -0
  440. package/src/enforcement/index.ts +10 -0
  441. package/src/enforcement/registry.ts +82 -0
  442. package/src/enforcement/types.ts +56 -0
  443. package/src/facades/facade-factory.ts +138 -5
  444. package/src/facades/types.ts +21 -0
  445. package/src/health/health-registry.ts +165 -0
  446. package/src/health/index.ts +11 -0
  447. package/src/health/vault-integrity.ts +66 -0
  448. package/src/index.ts +294 -2
  449. package/src/intake/intake-pipeline.ts +1 -1
  450. package/src/intelligence/types.ts +1 -0
  451. package/src/migrations/index.ts +6 -0
  452. package/src/migrations/migration-runner.ts +185 -0
  453. package/src/packs/index.ts +20 -0
  454. package/src/packs/lockfile.ts +180 -0
  455. package/src/packs/pack-installer.ts +289 -0
  456. package/src/packs/resolver.ts +237 -0
  457. package/src/packs/types.ts +125 -0
  458. package/src/persistence/postgres-provider.ts +211 -58
  459. package/src/planning/gap-analysis.ts +52 -7
  460. package/src/playbooks/index.ts +11 -0
  461. package/src/playbooks/playbook-executor.ts +301 -0
  462. package/src/plugins/index.ts +19 -0
  463. package/src/plugins/plugin-loader.ts +183 -0
  464. package/src/plugins/plugin-registry.ts +187 -0
  465. package/src/plugins/types.ts +119 -0
  466. package/src/runtime/admin-extra-ops.ts +193 -8
  467. package/src/runtime/capture-ops.ts +113 -8
  468. package/src/runtime/deprecation.ts +58 -0
  469. package/src/runtime/facades/admin-facade.ts +16 -1
  470. package/src/runtime/facades/agency-facade.ts +111 -0
  471. package/src/runtime/facades/brain-facade.ts +60 -0
  472. package/src/runtime/facades/chat-facade.ts +918 -0
  473. package/src/runtime/facades/context-facade.ts +55 -0
  474. package/src/runtime/facades/index.ts +22 -1
  475. package/src/runtime/facades/vault-facade.ts +261 -1
  476. package/src/runtime/feature-flags.ts +101 -0
  477. package/src/runtime/pack-ops.ts +85 -0
  478. package/src/runtime/playbook-ops.ts +113 -9
  479. package/src/runtime/plugin-ops.ts +258 -0
  480. package/src/runtime/runtime.ts +84 -5
  481. package/src/runtime/telemetry-ops.ts +57 -0
  482. package/src/runtime/types.ts +35 -0
  483. package/src/runtime/vault-sharing-ops.ts +372 -0
  484. package/src/streams/index.ts +1 -1
  485. package/src/streams/replayable-stream.ts +34 -3
  486. package/src/text/similarity.ts +1 -1
  487. package/src/transport/http-server.ts +269 -0
  488. package/src/transport/index.ts +48 -0
  489. package/src/transport/lsp-server.ts +401 -0
  490. package/src/transport/rate-limiter.ts +97 -0
  491. package/src/transport/session-manager.ts +120 -0
  492. package/src/transport/token-auth.ts +96 -0
  493. package/src/transport/types.ts +66 -0
  494. package/src/transport/ws-server.ts +415 -0
  495. package/src/vault/git-vault-sync.ts +318 -0
  496. package/src/vault/knowledge-review.ts +221 -0
  497. package/src/vault/obsidian-sync.ts +346 -0
  498. package/src/vault/scope-detector.ts +219 -0
  499. package/src/vault/vault-branching.ts +264 -0
  500. package/src/vault/vault-manager.ts +237 -0
  501. package/src/vault/vault-types.ts +50 -0
  502. package/src/vault/vault.ts +41 -3
  503. package/src/governance/index.ts +0 -18
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Self-Update Manager — restart context persistence for chat-driven updates.
3
+ *
4
+ * Manages the restart lifecycle: save context before exit, load on startup,
5
+ * confirm success or trigger rollback. The actual process exit and rebuild
6
+ * are handled by the supervisor — this module only manages the context.
7
+ *
8
+ * Exit code 75 signals the supervisor to rebuild before restarting.
9
+ */
10
+ import { readFileSync, writeFileSync, unlinkSync, mkdirSync } from 'node:fs';
11
+ import { dirname } from 'node:path';
12
+ /** Exit code that tells the supervisor to rebuild before restart. */
13
+ export const RESTART_EXIT_CODE = 75;
14
+ export class SelfUpdateManager {
15
+ contextPath;
16
+ constructor(contextPath) {
17
+ this.contextPath = contextPath;
18
+ }
19
+ /**
20
+ * Save restart context and exit with code 75.
21
+ * The supervisor handles rebuild + restart.
22
+ * Returns the context (useful for testing — in production, process.exit fires).
23
+ */
24
+ requestRestart(chatId, reason = 'manual', commitSha) {
25
+ const context = {
26
+ reason,
27
+ chatId,
28
+ commitSha,
29
+ requestedAt: Date.now(),
30
+ };
31
+ try {
32
+ this.saveContext(context);
33
+ return { initiated: true, context };
34
+ }
35
+ catch (e) {
36
+ return {
37
+ initiated: false,
38
+ error: e instanceof Error ? e.message : String(e),
39
+ };
40
+ }
41
+ }
42
+ /**
43
+ * Save restart context to disk.
44
+ */
45
+ saveContext(context) {
46
+ mkdirSync(dirname(this.contextPath), { recursive: true });
47
+ writeFileSync(this.contextPath, JSON.stringify(context, null, 2), 'utf-8');
48
+ }
49
+ /**
50
+ * Load restart context from disk (if any).
51
+ * Returns null if no pending restart context exists.
52
+ */
53
+ loadContext() {
54
+ try {
55
+ const raw = readFileSync(this.contextPath, 'utf-8');
56
+ return JSON.parse(raw);
57
+ }
58
+ catch {
59
+ return null;
60
+ }
61
+ }
62
+ /**
63
+ * Clear restart context (call after successful startup confirmation).
64
+ */
65
+ clearContext() {
66
+ try {
67
+ unlinkSync(this.contextPath);
68
+ }
69
+ catch {
70
+ // File doesn't exist — that's fine
71
+ }
72
+ }
73
+ /**
74
+ * Check if there's a pending restart context.
75
+ */
76
+ hasPendingRestart() {
77
+ return this.loadContext() !== null;
78
+ }
79
+ /**
80
+ * Sanitize a commit message for safe shell usage.
81
+ * Allows alphanumeric, spaces, basic punctuation. Max 120 chars.
82
+ */
83
+ static sanitizeCommitMessage(msg) {
84
+ return msg
85
+ .replace(/[^\w\s.,!?:;()\-/'"#@]/g, '')
86
+ .trim()
87
+ .slice(0, 120);
88
+ }
89
+ }
90
+ //# sourceMappingURL=self-update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"self-update.js","sourceRoot":"","sources":["../../src/chat/self-update.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qEAAqE;AACrE,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAsBpC,MAAM,OAAO,iBAAiB;IACC;IAA7B,YAA6B,WAAmB;QAAnB,gBAAW,GAAX,WAAW,CAAQ;IAAG,CAAC;IAEpD;;;;OAIG;IACH,cAAc,CACZ,MAAc,EACd,SAAmC,QAAQ,EAC3C,SAAkB;QAElB,MAAM,OAAO,GAAmB;YAC9B,MAAM;YACN,MAAM;YACN,SAAS;YACT,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;SACxB,CAAC;QAEF,IAAI,CAAC;YACH,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1B,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QACtC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO;gBACL,SAAS,EAAE,KAAK;gBAChB,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;aAClD,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,OAAuB;QACjC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC7E,CAAC;IAED;;;OAGG;IACH,WAAW;QACT,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACpD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAmB,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,YAAY;QACV,IAAI,CAAC;YACH,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,mCAAmC;QACrC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,OAAO,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC;IACrC,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,qBAAqB,CAAC,GAAW;QACtC,OAAO,GAAG;aACP,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC;aACtC,IAAI,EAAE;aACN,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACnB,CAAC;CACF"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Chat transport types — generic primitives for conversational agent transports.
3
+ *
4
+ * Works for Telegram, Discord, Slack, or any chat-based interface.
5
+ * Transport-specific wiring (Grammy, discord.js, etc.) belongs in forge templates.
6
+ */
7
+ export type ChatRole = 'user' | 'assistant' | 'system' | 'tool';
8
+ export interface ChatMessage {
9
+ role: ChatRole;
10
+ content: string;
11
+ /** Optional structured content blocks (e.g. tool_use, tool_result, image). */
12
+ blocks?: unknown[];
13
+ /** Unix timestamp ms. */
14
+ timestamp: number;
15
+ /** Transport-specific metadata (message ID, chat ID, etc.). */
16
+ meta?: Record<string, unknown>;
17
+ }
18
+ export interface ChatSession {
19
+ /** Unique session ID (typically the chat/channel ID from the transport). */
20
+ id: string;
21
+ /** Conversation messages. */
22
+ messages: ChatMessage[];
23
+ /** Unix timestamp ms when the session was created. */
24
+ createdAt: number;
25
+ /** Unix timestamp ms of the last activity. */
26
+ lastActiveAt: number;
27
+ /** Custom metadata (personality state, counters, etc.). */
28
+ meta?: Record<string, unknown>;
29
+ }
30
+ export interface ChatSessionConfig {
31
+ /** Directory for session persistence. */
32
+ storageDir: string;
33
+ /** TTL in ms for inactivity expiry. Default: 7_200_000 (2 hours). */
34
+ ttlMs?: number;
35
+ /** Max messages before compaction triggers. Default: 100. */
36
+ compactionThreshold?: number;
37
+ /** Messages to keep after compaction. Default: 40. */
38
+ compactionKeep?: number;
39
+ }
40
+ export interface Fragment {
41
+ /** The message text. */
42
+ text: string;
43
+ /** Transport message ID (for ordering). */
44
+ messageId: number | string;
45
+ /** Unix timestamp ms when received. */
46
+ receivedAt: number;
47
+ }
48
+ export interface FragmentBufferConfig {
49
+ /** Character threshold to start buffering. Default: 4000. */
50
+ startThreshold?: number;
51
+ /** Max gap in ms between fragments before auto-flush. Default: 1500. */
52
+ maxGapMs?: number;
53
+ /** Maximum number of fragments to merge. Default: 12. */
54
+ maxParts?: number;
55
+ /** Maximum total bytes before force-flush. Default: 50_000. */
56
+ maxTotalBytes?: number;
57
+ }
58
+ export type MarkupFormat = 'html' | 'markdown' | 'plain';
59
+ export interface ChunkConfig {
60
+ /** Max characters per chunk. Default: 4000. */
61
+ maxChunkSize?: number;
62
+ /** Output markup format. Default: 'html'. */
63
+ format?: MarkupFormat;
64
+ }
65
+ export interface ChatAuthConfig {
66
+ /** Path to auth persistence file. */
67
+ storagePath: string;
68
+ /** Passphrase required for authentication. If unset, auth is disabled. */
69
+ passphrase?: string;
70
+ /** Allowed user IDs. If empty or unset, any authenticated user is allowed. */
71
+ allowedUsers?: (string | number)[];
72
+ /** Rate limit: max failed attempts before temporary lockout. Default: 5. */
73
+ maxFailedAttempts?: number;
74
+ /** Lockout duration in ms. Default: 300_000 (5 minutes). */
75
+ lockoutMs?: number;
76
+ }
77
+ export interface AuthRecord {
78
+ userId: string | number;
79
+ authenticatedAt: number;
80
+ }
81
+ export interface AuthState {
82
+ authenticated: AuthRecord[];
83
+ failedAttempts: Map<string, {
84
+ count: number;
85
+ lastAttempt: number;
86
+ }>;
87
+ }
88
+ export interface ChatManagerConfig {
89
+ session: ChatSessionConfig;
90
+ fragment?: FragmentBufferConfig;
91
+ chunk?: ChunkConfig;
92
+ auth?: ChatAuthConfig;
93
+ }
94
+ export interface ChatManagerStatus {
95
+ activeSessions: number;
96
+ authenticatedUsers: number;
97
+ pendingFragments: number;
98
+ config: {
99
+ ttlMs: number;
100
+ compactionThreshold: number;
101
+ maxChunkSize: number;
102
+ authEnabled: boolean;
103
+ };
104
+ }
105
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/chat/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Chat transport types — generic primitives for conversational agent transports.
3
+ *
4
+ * Works for Telegram, Discord, Slack, or any chat-based interface.
5
+ * Transport-specific wiring (Grammy, discord.js, etc.) belongs in forge templates.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/chat/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Voice — transcription and text-to-speech via pure HTTP (no SDK deps).
3
+ *
4
+ * Supports OpenAI Whisper for transcription and OpenAI TTS for speech synthesis.
5
+ * Graceful degradation when API keys are missing.
6
+ */
7
+ export interface VoiceConfig {
8
+ /** OpenAI API key for Whisper transcription and TTS. */
9
+ openaiApiKey?: string;
10
+ /** TTS voice ID. Default: 'onyx'. */
11
+ ttsVoice?: string;
12
+ /** TTS model. Default: 'tts-1'. */
13
+ ttsModel?: string;
14
+ /** Whisper model. Default: 'whisper-1'. */
15
+ whisperModel?: string;
16
+ }
17
+ export interface TranscriptionResult {
18
+ /** Transcribed text. */
19
+ text: string;
20
+ /** Whether transcription was successful. */
21
+ success: boolean;
22
+ }
23
+ export interface SpeechResult {
24
+ /** Audio data as Buffer (MP3). */
25
+ audio: Buffer;
26
+ /** Whether synthesis was successful. */
27
+ success: boolean;
28
+ }
29
+ /**
30
+ * Transcribe audio using OpenAI Whisper API.
31
+ * Returns a fallback message if no API key is configured.
32
+ */
33
+ export declare function transcribeAudio(audioBuffer: Buffer, config: VoiceConfig, filename?: string): Promise<TranscriptionResult>;
34
+ /**
35
+ * Synthesize speech from text using OpenAI TTS API.
36
+ * Returns null if no API key is configured.
37
+ */
38
+ export declare function synthesizeSpeech(text: string, config: VoiceConfig): Promise<SpeechResult | null>;
39
+ //# sourceMappingURL=voice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voice.d.ts","sourceRoot":"","sources":["../../src/chat/voice.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,WAAW;IAC1B,wDAAwD;IACxD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,OAAO,EAAE,OAAO,CAAC;CAClB;AAID;;;GAGG;AACH,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,WAAW,EACnB,QAAQ,GAAE,MAAoB,GAC7B,OAAO,CAAC,mBAAmB,CAAC,CAoD9B;AAID;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CA0B9B"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Voice — transcription and text-to-speech via pure HTTP (no SDK deps).
3
+ *
4
+ * Supports OpenAI Whisper for transcription and OpenAI TTS for speech synthesis.
5
+ * Graceful degradation when API keys are missing.
6
+ */
7
+ // ─── Transcriber ──────────────────────────────────────────────────────
8
+ /**
9
+ * Transcribe audio using OpenAI Whisper API.
10
+ * Returns a fallback message if no API key is configured.
11
+ */
12
+ export async function transcribeAudio(audioBuffer, config, filename = 'audio.ogg') {
13
+ if (!config.openaiApiKey) {
14
+ return { text: '[Voice message — transcription unavailable]', success: false };
15
+ }
16
+ const model = config.whisperModel ?? 'whisper-1';
17
+ // Build multipart form data manually (no SDK)
18
+ const boundary = `----SoleriFormBoundary${Date.now()}`;
19
+ const parts = [];
20
+ // File part
21
+ parts.push(Buffer.from(`--${boundary}\r\nContent-Disposition: form-data; name="file"; filename="${filename}"\r\nContent-Type: audio/ogg\r\n\r\n`));
22
+ parts.push(audioBuffer);
23
+ parts.push(Buffer.from('\r\n'));
24
+ // Model part
25
+ parts.push(Buffer.from(`--${boundary}\r\nContent-Disposition: form-data; name="model"\r\n\r\n${model}\r\n`));
26
+ parts.push(Buffer.from(`--${boundary}--\r\n`));
27
+ const body = Buffer.concat(parts);
28
+ try {
29
+ const response = await fetch('https://api.openai.com/v1/audio/transcriptions', {
30
+ method: 'POST',
31
+ headers: {
32
+ Authorization: `Bearer ${config.openaiApiKey}`,
33
+ 'Content-Type': `multipart/form-data; boundary=${boundary}`,
34
+ },
35
+ body,
36
+ signal: AbortSignal.timeout(30_000),
37
+ });
38
+ if (!response.ok) {
39
+ await response.text().catch(() => { });
40
+ return { text: `[Transcription failed: ${response.status}]`, success: false };
41
+ }
42
+ const data = (await response.json());
43
+ return { text: data.text ?? '', success: true };
44
+ }
45
+ catch (e) {
46
+ const msg = e instanceof Error ? e.message : String(e);
47
+ return { text: `[Transcription error: ${msg}]`, success: false };
48
+ }
49
+ }
50
+ // ─── TTS ──────────────────────────────────────────────────────────────
51
+ /**
52
+ * Synthesize speech from text using OpenAI TTS API.
53
+ * Returns null if no API key is configured.
54
+ */
55
+ export async function synthesizeSpeech(text, config) {
56
+ if (!config.openaiApiKey)
57
+ return null;
58
+ const model = config.ttsModel ?? 'tts-1';
59
+ const voice = config.ttsVoice ?? 'onyx';
60
+ try {
61
+ const response = await fetch('https://api.openai.com/v1/audio/speech', {
62
+ method: 'POST',
63
+ headers: {
64
+ Authorization: `Bearer ${config.openaiApiKey}`,
65
+ 'Content-Type': 'application/json',
66
+ },
67
+ body: JSON.stringify({ model, voice, input: text }),
68
+ signal: AbortSignal.timeout(30_000),
69
+ });
70
+ if (!response.ok) {
71
+ return { audio: Buffer.alloc(0), success: false };
72
+ }
73
+ const audio = Buffer.from(await response.arrayBuffer());
74
+ return { audio, success: true };
75
+ }
76
+ catch {
77
+ return { audio: Buffer.alloc(0), success: false };
78
+ }
79
+ }
80
+ //# sourceMappingURL=voice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voice.js","sourceRoot":"","sources":["../../src/chat/voice.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * CLAUDE.md composition — generates LLM instructions from agent config and facades.
3
+ *
4
+ * Produces markdown with:
5
+ * 1. Global instructions (priority-sorted)
6
+ * 2. Activation / deactivation
7
+ * 3. Session start protocol
8
+ * 4. Facade reference table (auto-generated from registered facades)
9
+ * 5. Facade behavioral rules (from FacadeInstructions)
10
+ *
11
+ * Wrapped in versioned markers: `<!-- agent:mode v1 -->` / `<!-- /agent:mode -->`
12
+ */
13
+ import type { FacadeConfig } from '../facades/types.js';
14
+ import type { AgentMeta, FacadeInstructions } from './types.js';
15
+ export declare const FORMAT_VERSION = 1;
16
+ export declare const OPEN_MARKER = "<!-- agent:mode v1 -->";
17
+ export declare const CLOSE_MARKER = "<!-- /agent:mode -->";
18
+ export declare const USER_ZONE_OPEN = "<!-- user:custom -->";
19
+ export declare const USER_ZONE_CLOSE = "<!-- /user:custom -->";
20
+ export interface ComposeOptions {
21
+ /** Per-facade behavioral instructions */
22
+ facadeInstructions?: Map<string, FacadeInstructions>;
23
+ /** Include an empty user-safe zone */
24
+ includeUserZone?: boolean;
25
+ }
26
+ /**
27
+ * Compose the full CLAUDE.md agent block from metadata and facades.
28
+ * Returns the content wrapped in versioned markers.
29
+ */
30
+ export declare function composeCLAUDEmd(agent: AgentMeta, facades: FacadeConfig[], options?: ComposeOptions): string;
31
+ //# sourceMappingURL=compose.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../../src/claudemd/compose.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAqB,MAAM,YAAY,CAAC;AAEnF,eAAO,MAAM,cAAc,IAAI,CAAC;AAChC,eAAO,MAAM,WAAW,2BAA2C,CAAC;AACpE,eAAO,MAAM,YAAY,yBAAyB,CAAC;AACnD,eAAO,MAAM,cAAc,yBAAyB,CAAC;AACrD,eAAO,MAAM,eAAe,0BAA0B,CAAC;AAuEvD,MAAM,WAAW,cAAc;IAC7B,yCAAyC;IACzC,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACrD,sCAAsC;IACtC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,YAAY,EAAE,EACvB,OAAO,CAAC,EAAE,cAAc,GACvB,MAAM,CAmCR"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * CLAUDE.md composition — generates LLM instructions from agent config and facades.
3
+ *
4
+ * Produces markdown with:
5
+ * 1. Global instructions (priority-sorted)
6
+ * 2. Activation / deactivation
7
+ * 3. Session start protocol
8
+ * 4. Facade reference table (auto-generated from registered facades)
9
+ * 5. Facade behavioral rules (from FacadeInstructions)
10
+ *
11
+ * Wrapped in versioned markers: `<!-- agent:mode v1 -->` / `<!-- /agent:mode -->`
12
+ */
13
+ export const FORMAT_VERSION = 1;
14
+ export const OPEN_MARKER = `<!-- agent:mode v${FORMAT_VERSION} -->`;
15
+ export const CLOSE_MARKER = '<!-- /agent:mode -->';
16
+ export const USER_ZONE_OPEN = '<!-- user:custom -->';
17
+ export const USER_ZONE_CLOSE = '<!-- /user:custom -->';
18
+ function sortByPriority(items) {
19
+ return [...items].sort((a, b) => (a.priority ?? 50) - (b.priority ?? 50));
20
+ }
21
+ function renderActivation(agent) {
22
+ return [
23
+ `## ${agent.name} Mode`,
24
+ '',
25
+ '### Activation',
26
+ '',
27
+ `- "${agent.activationPhrase}" → \`${agent.activateCommand}\``,
28
+ `- "${agent.deactivationPhrase}" → \`${agent.deactivateCommand}\``,
29
+ '',
30
+ '> Persona details are returned dynamically by the activate response.',
31
+ ].join('\n');
32
+ }
33
+ function renderSessionStart(agent) {
34
+ return [
35
+ '### Session Start Protocol',
36
+ '',
37
+ 'On EVERY new session:',
38
+ `1. Register project: \`${agent.id}_core op:register params:{ projectPath: "." }\``,
39
+ '2. Check activation response for `persistence.status`, `vault.connected`',
40
+ `3. Check for plans in \`executing\` state — remind user to reconcile`,
41
+ ].join('\n');
42
+ }
43
+ function renderFacadeTable(facades, instructions) {
44
+ const lines = ['### Essential Tools', '', '| Facade | Key Ops |', '|--------|---------|'];
45
+ for (const facade of facades) {
46
+ const instr = instructions?.get(facade.name);
47
+ const allOps = facade.ops.map((o) => o.name);
48
+ const keyOps = instr?.keyOps ?? allOps.slice(0, 5);
49
+ const display = keyOps.map((o) => `\`${o}\``).join(', ');
50
+ const suffix = allOps.length > keyOps.length ? ', ...' : '';
51
+ lines.push(`| \`${facade.name}\` | ${display}${suffix} |`);
52
+ }
53
+ return lines.join('\n');
54
+ }
55
+ function renderGlobalInstruction(gi) {
56
+ return `## ${gi.heading}\n\n${gi.content.trim()}`;
57
+ }
58
+ function renderFacadeRules(name, instr) {
59
+ const lines = [`## ${instr.heading}`, ''];
60
+ if (instr.rules?.length) {
61
+ for (const rule of instr.rules) {
62
+ lines.push(`- ${rule}`);
63
+ }
64
+ lines.push('');
65
+ }
66
+ if (instr.templates) {
67
+ for (const [label, template] of Object.entries(instr.templates)) {
68
+ lines.push(`### ${label}`, '', template.trim(), '');
69
+ }
70
+ }
71
+ return lines.join('\n').trimEnd();
72
+ }
73
+ /**
74
+ * Compose the full CLAUDE.md agent block from metadata and facades.
75
+ * Returns the content wrapped in versioned markers.
76
+ */
77
+ export function composeCLAUDEmd(agent, facades, options) {
78
+ const sections = [];
79
+ // 1. Global instructions (sorted by priority)
80
+ if (agent.globalInstructions?.length) {
81
+ const sorted = sortByPriority(agent.globalInstructions);
82
+ for (const gi of sorted) {
83
+ sections.push(renderGlobalInstruction(gi));
84
+ }
85
+ }
86
+ // 2. Activation + session start
87
+ sections.push(renderActivation(agent));
88
+ sections.push(renderSessionStart(agent));
89
+ // 3. Facade reference table
90
+ sections.push(renderFacadeTable(facades, options?.facadeInstructions));
91
+ // 4. Facade behavioral rules
92
+ if (options?.facadeInstructions) {
93
+ const entries = [...options.facadeInstructions.entries()].sort(([, a], [, b]) => (a.priority ?? 50) - (b.priority ?? 50));
94
+ for (const [name, instr] of entries) {
95
+ sections.push(renderFacadeRules(name, instr));
96
+ }
97
+ }
98
+ // 5. User-safe zone
99
+ if (options?.includeUserZone) {
100
+ sections.push(`${USER_ZONE_OPEN}\n\n${USER_ZONE_CLOSE}`);
101
+ }
102
+ const body = sections.join('\n\n');
103
+ return `${OPEN_MARKER}\n\n${body}\n\n${CLOSE_MARKER}`;
104
+ }
105
+ //# sourceMappingURL=compose.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose.js","sourceRoot":"","sources":["../../src/claudemd/compose.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AAChC,MAAM,CAAC,MAAM,WAAW,GAAG,oBAAoB,cAAc,MAAM,CAAC;AACpE,MAAM,CAAC,MAAM,YAAY,GAAG,sBAAsB,CAAC;AACnD,MAAM,CAAC,MAAM,cAAc,GAAG,sBAAsB,CAAC;AACrD,MAAM,CAAC,MAAM,eAAe,GAAG,uBAAuB,CAAC;AAEvD,SAAS,cAAc,CAAkC,KAAU;IACjE,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAgB;IACxC,OAAO;QACL,MAAM,KAAK,CAAC,IAAI,OAAO;QACvB,EAAE;QACF,gBAAgB;QAChB,EAAE;QACF,MAAM,KAAK,CAAC,gBAAgB,SAAS,KAAK,CAAC,eAAe,IAAI;QAC9D,MAAM,KAAK,CAAC,kBAAkB,SAAS,KAAK,CAAC,iBAAiB,IAAI;QAClE,EAAE;QACF,sEAAsE;KACvE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAgB;IAC1C,OAAO;QACL,4BAA4B;QAC5B,EAAE;QACF,uBAAuB;QACvB,0BAA0B,KAAK,CAAC,EAAE,iDAAiD;QACnF,0EAA0E;QAC1E,sEAAsE;KACvE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,iBAAiB,CACxB,OAAuB,EACvB,YAA8C;IAE9C,MAAM,KAAK,GAAG,CAAC,qBAAqB,EAAE,EAAE,EAAE,sBAAsB,EAAE,sBAAsB,CAAC,CAAC;IAE1F,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,KAAK,EAAE,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,KAAK,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,IAAI,QAAQ,OAAO,GAAG,MAAM,IAAI,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,uBAAuB,CAAC,EAAqB;IACpD,OAAO,MAAM,EAAE,CAAC,OAAO,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;AACpD,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY,EAAE,KAAyB;IAChE,MAAM,KAAK,GAAa,CAAC,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;IAEpD,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QACxB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC1B,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YAChE,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;AACpC,CAAC;AASD;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,KAAgB,EAChB,OAAuB,EACvB,OAAwB;IAExB,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,8CAA8C;IAC9C,IAAI,KAAK,CAAC,kBAAkB,EAAE,MAAM,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACxD,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;YACxB,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,gCAAgC;IAChC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;IACvC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;IAEzC,4BAA4B;IAC5B,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAEvE,6BAA6B;IAC7B,IAAI,OAAO,EAAE,kBAAkB,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAC5D,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAC1D,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;YACpC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,oBAAoB;IACpB,IAAI,OAAO,EAAE,eAAe,EAAE,CAAC;QAC7B,QAAQ,CAAC,IAAI,CAAC,GAAG,cAAc,OAAO,eAAe,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnC,OAAO,GAAG,WAAW,OAAO,IAAI,OAAO,YAAY,EAAE,CAAC;AACxD,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { composeCLAUDEmd, FORMAT_VERSION, OPEN_MARKER, CLOSE_MARKER, USER_ZONE_OPEN, USER_ZONE_CLOSE, } from './compose.js';
2
+ export type { ComposeOptions } from './compose.js';
3
+ export { injectCLAUDEmd, removeCLAUDEmd, hasCLAUDEmdBlock, extractUserZone } from './inject.js';
4
+ export type { AgentMeta, GlobalInstruction, FacadeInstructions, InjectionResult, RemovalResult, } from './types.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/claudemd/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,cAAc,EACd,WAAW,EACX,YAAY,EACZ,cAAc,EACd,eAAe,GAChB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAChG,YAAY,EACV,SAAS,EACT,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,aAAa,GACd,MAAM,YAAY,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { composeCLAUDEmd, FORMAT_VERSION, OPEN_MARKER, CLOSE_MARKER, USER_ZONE_OPEN, USER_ZONE_CLOSE, } from './compose.js';
2
+ export { injectCLAUDEmd, removeCLAUDEmd, hasCLAUDEmdBlock, extractUserZone } from './inject.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/claudemd/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,cAAc,EACd,WAAW,EACX,YAAY,EACZ,cAAc,EACd,eAAe,GAChB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * CLAUDE.md injection — marker-based write with diff detection and user-safe zones.
3
+ *
4
+ * Improvements over Salvador:
5
+ * - Diff-before-write: skips I/O if content unchanged
6
+ * - User-safe zones: `<!-- user:custom -->` blocks inside markers survive regeneration
7
+ * - Versioned markers: `<!-- agent:mode v1 -->` for future migration
8
+ */
9
+ import type { InjectionResult, RemovalResult } from './types.js';
10
+ /**
11
+ * Extract user-safe zone content from an existing agent block.
12
+ * Returns the content between `<!-- user:custom -->` markers, or null.
13
+ */
14
+ export declare function extractUserZone(content: string): string | null;
15
+ /**
16
+ * Inject an agent block into a CLAUDE.md file.
17
+ *
18
+ * - If markers exist: replace (preserving user-safe zones), skip if unchanged
19
+ * - If legacy markers: migrate
20
+ * - If no markers: append
21
+ */
22
+ export declare function injectCLAUDEmd(filePath: string, block: string): InjectionResult;
23
+ /**
24
+ * Remove the agent block from a CLAUDE.md file.
25
+ */
26
+ export declare function removeCLAUDEmd(filePath: string): RemovalResult;
27
+ /**
28
+ * Check if an agent block is present in a CLAUDE.md file.
29
+ */
30
+ export declare function hasCLAUDEmdBlock(filePath: string): boolean;
31
+ //# sourceMappingURL=inject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inject.d.ts","sourceRoot":"","sources":["../../src/claudemd/inject.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAQjE;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM9D;AA2CD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,eAAe,CAgD/E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAwB9D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAQ1D"}