qlogicagent 2.13.4 → 2.13.5

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 (1261) hide show
  1. package/dist/agent/agent.d.ts +48 -0
  2. package/dist/agent/agent.js +197 -0
  3. package/dist/agent/memory-recall-context.d.ts +18 -0
  4. package/dist/agent/memory-recall-context.js +139 -0
  5. package/dist/agent/memory-recall-context.test.d.ts +1 -0
  6. package/dist/agent/memory-recall-context.test.js +58 -0
  7. package/dist/agent/memory-recall-injection.d.ts +34 -0
  8. package/dist/agent/memory-recall-injection.js +66 -0
  9. package/dist/agent/runtime-vars.d.ts +48 -0
  10. package/dist/agent/runtime-vars.js +54 -0
  11. package/dist/agent/tool-access.d.ts +1 -0
  12. package/dist/agent/tool-access.js +1 -0
  13. package/dist/agent/tool-loop/artifact-events.d.ts +17 -0
  14. package/dist/agent/tool-loop/artifact-events.js +75 -0
  15. package/dist/agent/tool-loop/budget-continuation-policy.d.ts +22 -0
  16. package/dist/agent/tool-loop/budget-continuation-policy.js +44 -0
  17. package/dist/agent/tool-loop/completion-action-policy.d.ts +19 -0
  18. package/dist/agent/tool-loop/completion-action-policy.js +68 -0
  19. package/dist/agent/tool-loop/completion-action-policy.test.d.ts +1 -0
  20. package/dist/agent/tool-loop/completion-action-policy.test.js +77 -0
  21. package/dist/agent/tool-loop/completion-stop-policy.d.ts +19 -0
  22. package/dist/agent/tool-loop/completion-stop-policy.js +31 -0
  23. package/dist/agent/tool-loop/compression-pipeline.d.ts +44 -0
  24. package/dist/agent/tool-loop/compression-pipeline.js +68 -0
  25. package/dist/agent/tool-loop/loop-helpers.d.ts +15 -0
  26. package/dist/agent/tool-loop/loop-helpers.js +86 -0
  27. package/dist/agent/tool-loop/recovery-helpers.d.ts +18 -0
  28. package/dist/agent/tool-loop/recovery-helpers.js +42 -0
  29. package/dist/agent/tool-loop/single-round.d.ts +2 -0
  30. package/dist/agent/tool-loop/single-round.js +43 -0
  31. package/dist/agent/tool-loop/skill-instruction-policy.d.ts +7 -0
  32. package/dist/agent/tool-loop/skill-instruction-policy.js +18 -0
  33. package/dist/agent/tool-loop/stream-error-recovery.d.ts +59 -0
  34. package/dist/agent/tool-loop/stream-error-recovery.js +93 -0
  35. package/dist/agent/tool-loop/tool-failure-policy.d.ts +22 -0
  36. package/dist/agent/tool-loop/tool-failure-policy.js +46 -0
  37. package/dist/agent/tool-loop/tool-result-events.d.ts +11 -0
  38. package/dist/agent/tool-loop/tool-result-events.js +59 -0
  39. package/dist/agent/tool-loop/tool-result-events.test.d.ts +1 -0
  40. package/dist/agent/tool-loop/tool-result-events.test.js +30 -0
  41. package/dist/agent/tool-loop.contract.test.d.ts +1 -0
  42. package/dist/agent/tool-loop.contract.test.js +254 -0
  43. package/dist/agent/tool-loop.d.ts +121 -0
  44. package/dist/agent/tool-loop.js +1017 -0
  45. package/dist/agent/tool-loop.policy-architecture.test.d.ts +1 -0
  46. package/dist/agent/tool-loop.policy-architecture.test.js +21 -0
  47. package/dist/agent/tool-loop.states.test.d.ts +1 -0
  48. package/dist/agent/tool-loop.states.test.js +211 -0
  49. package/dist/agent/tunable-defaults.d.ts +1 -0
  50. package/dist/agent/tunable-defaults.js +1 -0
  51. package/dist/agent/types.d.ts +311 -0
  52. package/dist/agent/types.js +8 -0
  53. package/dist/cli/acp-commands.d.ts +32 -0
  54. package/dist/cli/acp-commands.js +145 -0
  55. package/dist/cli/acp-commands.test.d.ts +1 -0
  56. package/dist/cli/acp-commands.test.js +89 -0
  57. package/dist/cli/acp-extended-handlers.d.ts +69 -0
  58. package/dist/cli/acp-extended-handlers.js +484 -0
  59. package/dist/cli/acp-extended-handlers.product-confirm.test.d.ts +1 -0
  60. package/dist/cli/acp-extended-handlers.product-confirm.test.js +56 -0
  61. package/dist/cli/acp-extended-handlers.product-project.test.d.ts +1 -0
  62. package/dist/cli/acp-extended-handlers.product-project.test.js +66 -0
  63. package/dist/cli/acp-extended-handlers.solo-project.test.d.ts +1 -0
  64. package/dist/cli/acp-extended-handlers.solo-project.test.js +51 -0
  65. package/dist/cli/acp-extended-handlers.specchat.test.d.ts +1 -0
  66. package/dist/cli/acp-extended-handlers.specchat.test.js +62 -0
  67. package/dist/cli/acp-extended-handlers.workflowchat.test.d.ts +1 -0
  68. package/dist/cli/acp-extended-handlers.workflowchat.test.js +49 -0
  69. package/dist/cli/acp-extended-host-adapter.d.ts +29 -0
  70. package/dist/cli/acp-extended-host-adapter.js +40 -0
  71. package/dist/cli/acp-extended-host-adapter.test.d.ts +1 -0
  72. package/dist/cli/acp-extended-host-adapter.test.js +63 -0
  73. package/dist/cli/acp-message-router.d.ts +8 -0
  74. package/dist/cli/acp-message-router.js +40 -0
  75. package/dist/cli/acp-message-router.test.d.ts +1 -0
  76. package/dist/cli/acp-message-router.test.js +30 -0
  77. package/dist/cli/acp-session-handlers.d.ts +41 -0
  78. package/dist/cli/acp-session-handlers.js +304 -0
  79. package/dist/cli/acp-session-handlers.test.d.ts +1 -0
  80. package/dist/cli/acp-session-handlers.test.js +346 -0
  81. package/dist/cli/acp-session-host.d.ts +48 -0
  82. package/dist/cli/acp-session-host.js +1 -0
  83. package/dist/cli/agent-config-coordinator.d.ts +16 -0
  84. package/dist/cli/agent-config-coordinator.js +56 -0
  85. package/dist/cli/agent-config-coordinator.test.d.ts +1 -0
  86. package/dist/cli/agent-config-coordinator.test.js +51 -0
  87. package/dist/cli/agent-config-runtime.d.ts +11 -0
  88. package/dist/cli/agent-config-runtime.js +4 -0
  89. package/dist/cli/agent-runner-factory.d.ts +2 -0
  90. package/dist/cli/agent-runner-factory.js +11 -0
  91. package/dist/cli/agent-runtime-bootstrap.d.ts +67 -0
  92. package/dist/cli/agent-runtime-bootstrap.js +104 -0
  93. package/dist/cli/agent-runtime-ports-adapter.d.ts +2 -0
  94. package/dist/cli/agent-runtime-ports-adapter.js +22 -0
  95. package/dist/cli/agent-runtime-session-state.d.ts +24 -0
  96. package/dist/cli/agent-runtime-session-state.js +51 -0
  97. package/dist/cli/agent-status-notifier.d.ts +11 -0
  98. package/dist/cli/agent-status-notifier.js +26 -0
  99. package/dist/cli/agent-status-notifier.test.d.ts +1 -0
  100. package/dist/cli/agent-status-notifier.test.js +33 -0
  101. package/dist/cli/base-tool-bootstrap.d.ts +16 -0
  102. package/dist/cli/base-tool-bootstrap.js +20 -0
  103. package/dist/cli/cli-acp-request-handler.d.ts +11 -0
  104. package/dist/cli/cli-acp-request-handler.js +61 -0
  105. package/dist/cli/cli-acp-request-handler.test.d.ts +1 -0
  106. package/dist/cli/cli-acp-request-handler.test.js +58 -0
  107. package/dist/cli/cli-agent-builder.d.ts +35 -0
  108. package/dist/cli/cli-agent-builder.js +33 -0
  109. package/dist/cli/community-resource-installer.d.ts +30 -0
  110. package/dist/cli/community-resource-installer.js +66 -0
  111. package/dist/cli/community-resource-installer.test.d.ts +1 -0
  112. package/dist/cli/community-resource-installer.test.js +175 -0
  113. package/dist/cli/community-skill-installer.d.ts +12 -0
  114. package/dist/cli/community-skill-installer.js +220 -0
  115. package/dist/cli/community-skill-installer.test.d.ts +1 -0
  116. package/dist/cli/community-skill-installer.test.js +179 -0
  117. package/dist/cli/community-workflow-installer.d.ts +29 -0
  118. package/dist/cli/community-workflow-installer.js +69 -0
  119. package/dist/cli/conversation-context.d.ts +30 -0
  120. package/dist/cli/conversation-context.js +69 -0
  121. package/dist/cli/conversation-context.test.d.ts +1 -0
  122. package/dist/cli/conversation-context.test.js +61 -0
  123. package/dist/cli/core-tool-coordinator.d.ts +41 -0
  124. package/dist/cli/core-tool-coordinator.js +55 -0
  125. package/dist/cli/core-tools/agent-tool-bootstrap.d.ts +12 -0
  126. package/dist/cli/core-tools/agent-tool-bootstrap.js +5 -0
  127. package/dist/cli/core-tools/agent-tool-service.background.test.d.ts +1 -0
  128. package/dist/cli/core-tools/agent-tool-service.background.test.js +212 -0
  129. package/dist/cli/core-tools/agent-tool-service.d.ts +36 -0
  130. package/dist/cli/core-tools/agent-tool-service.js +152 -0
  131. package/dist/cli/core-tools/checkpoint-tool-bootstrap.d.ts +9 -0
  132. package/dist/cli/core-tools/checkpoint-tool-bootstrap.js +8 -0
  133. package/dist/cli/core-tools/checkpoint-tool-service.d.ts +7 -0
  134. package/dist/cli/core-tools/checkpoint-tool-service.js +5 -0
  135. package/dist/cli/core-tools/config-tool-bootstrap.d.ts +5 -0
  136. package/dist/cli/core-tools/config-tool-bootstrap.js +5 -0
  137. package/dist/cli/core-tools/config-tool-service.d.ts +11 -0
  138. package/dist/cli/core-tools/config-tool-service.js +86 -0
  139. package/dist/cli/core-tools/config-tool-service.test.d.ts +1 -0
  140. package/dist/cli/core-tools/config-tool-service.test.js +69 -0
  141. package/dist/cli/core-tools/cron-tool-bootstrap.d.ts +8 -0
  142. package/dist/cli/core-tools/cron-tool-bootstrap.js +8 -0
  143. package/dist/cli/core-tools/cron-workflow-service.d.ts +7 -0
  144. package/dist/cli/core-tools/cron-workflow-service.js +206 -0
  145. package/dist/cli/core-tools/cron-workflow-service.test.d.ts +1 -0
  146. package/dist/cli/core-tools/cron-workflow-service.test.js +78 -0
  147. package/dist/cli/core-tools/fork-system-prompt.d.ts +45 -0
  148. package/dist/cli/core-tools/fork-system-prompt.js +66 -0
  149. package/dist/cli/core-tools/fork-system-prompt.test.d.ts +1 -0
  150. package/dist/cli/core-tools/fork-system-prompt.test.js +77 -0
  151. package/dist/cli/core-tools/monitor-tool-bootstrap.d.ts +7 -0
  152. package/dist/cli/core-tools/monitor-tool-bootstrap.js +8 -0
  153. package/dist/cli/core-tools/monitor-tool-service.d.ts +6 -0
  154. package/dist/cli/core-tools/monitor-tool-service.js +74 -0
  155. package/dist/cli/core-tools/registry.d.ts +8 -0
  156. package/dist/cli/core-tools/registry.js +60 -0
  157. package/dist/cli/core-tools/session-tool-manifest.d.ts +12 -0
  158. package/dist/cli/core-tools/session-tool-manifest.js +19 -0
  159. package/dist/cli/core-tools/team-registry.d.ts +62 -0
  160. package/dist/cli/core-tools/team-registry.js +85 -0
  161. package/dist/cli/core-tools/team-registry.test.d.ts +1 -0
  162. package/dist/cli/core-tools/team-registry.test.js +79 -0
  163. package/dist/cli/core-tools/team-tool-bootstrap.d.ts +11 -0
  164. package/dist/cli/core-tools/team-tool-bootstrap.js +8 -0
  165. package/dist/cli/core-tools/team-tool-service.d.ts +43 -0
  166. package/dist/cli/core-tools/team-tool-service.js +326 -0
  167. package/dist/cli/core-tools/team-tool-service.test.d.ts +1 -0
  168. package/dist/cli/core-tools/team-tool-service.test.js +48 -0
  169. package/dist/cli/credential-vault.d.ts +62 -0
  170. package/dist/cli/credential-vault.js +190 -0
  171. package/dist/cli/credential-vault.test.d.ts +6 -0
  172. package/dist/cli/credential-vault.test.js +130 -0
  173. package/dist/cli/default-project-bootstrap.d.ts +8 -0
  174. package/dist/cli/default-project-bootstrap.js +39 -0
  175. package/dist/cli/dev-tool-bootstrap.d.ts +8 -0
  176. package/dist/cli/dev-tool-bootstrap.js +19 -0
  177. package/dist/cli/dev-tools/dev-tool-bootstrap-service.d.ts +6 -0
  178. package/dist/cli/dev-tools/dev-tool-bootstrap-service.js +6 -0
  179. package/dist/cli/dev-tools/dev-tool-registry.d.ts +6 -0
  180. package/dist/cli/dev-tools/dev-tool-registry.js +7 -0
  181. package/dist/cli/dev-tools/lsp-tool-service.d.ts +5 -0
  182. package/dist/cli/dev-tools/lsp-tool-service.js +30 -0
  183. package/dist/cli/dev-tools/lsp-tool-service.test.d.ts +1 -0
  184. package/dist/cli/dev-tools/lsp-tool-service.test.js +14 -0
  185. package/dist/cli/dream-host-adapter.d.ts +23 -0
  186. package/dist/cli/dream-host-adapter.js +33 -0
  187. package/dist/cli/gateway-rpc-connection.d.ts +50 -0
  188. package/dist/cli/gateway-rpc-connection.js +133 -0
  189. package/dist/cli/handlers/agents-handler.d.ts +51 -0
  190. package/dist/cli/handlers/agents-handler.js +769 -0
  191. package/dist/cli/handlers/community-handler.d.ts +39 -0
  192. package/dist/cli/handlers/community-handler.js +671 -0
  193. package/dist/cli/handlers/community-handler.test.d.ts +1 -0
  194. package/dist/cli/handlers/community-handler.test.js +1602 -0
  195. package/dist/cli/handlers/config-handler.d.ts +28 -0
  196. package/dist/cli/handlers/config-handler.js +438 -0
  197. package/dist/cli/handlers/config-handler.test.d.ts +1 -0
  198. package/dist/cli/handlers/config-handler.test.js +140 -0
  199. package/dist/cli/handlers/config-handler.tools-list.test.d.ts +1 -0
  200. package/dist/cli/handlers/config-handler.tools-list.test.js +93 -0
  201. package/dist/cli/handlers/control-handler.d.ts +23 -0
  202. package/dist/cli/handlers/control-handler.js +88 -0
  203. package/dist/cli/handlers/dream-handler.d.ts +31 -0
  204. package/dist/cli/handlers/dream-handler.js +235 -0
  205. package/dist/cli/handlers/files-handler.d.ts +22 -0
  206. package/dist/cli/handlers/files-handler.instructions.test.d.ts +1 -0
  207. package/dist/cli/handlers/files-handler.instructions.test.js +127 -0
  208. package/dist/cli/handlers/files-handler.js +593 -0
  209. package/dist/cli/handlers/media-handler.d.ts +19 -0
  210. package/dist/cli/handlers/media-handler.js +212 -0
  211. package/dist/cli/handlers/media-handler.test.d.ts +1 -0
  212. package/dist/cli/handlers/media-handler.test.js +107 -0
  213. package/dist/cli/handlers/memory-handler.d.ts +61 -0
  214. package/dist/cli/handlers/memory-handler.js +792 -0
  215. package/dist/cli/handlers/pet-confirm-handler.d.ts +7 -0
  216. package/dist/cli/handlers/pet-confirm-handler.js +6 -0
  217. package/dist/cli/handlers/pet-handler.d.ts +47 -0
  218. package/dist/cli/handlers/pet-handler.js +455 -0
  219. package/dist/cli/handlers/pet-handler.test.d.ts +1 -0
  220. package/dist/cli/handlers/pet-handler.test.js +620 -0
  221. package/dist/cli/handlers/product-handler.d.ts +37 -0
  222. package/dist/cli/handlers/product-handler.js +393 -0
  223. package/dist/cli/handlers/project-handler.d.ts +28 -0
  224. package/dist/cli/handlers/project-handler.js +421 -0
  225. package/dist/cli/handlers/session-handler.channel.test.d.ts +1 -0
  226. package/dist/cli/handlers/session-handler.channel.test.js +157 -0
  227. package/dist/cli/handlers/session-handler.d.ts +58 -0
  228. package/dist/cli/handlers/session-handler.delete.test.d.ts +1 -0
  229. package/dist/cli/handlers/session-handler.delete.test.js +38 -0
  230. package/dist/cli/handlers/session-handler.js +833 -0
  231. package/dist/cli/handlers/session-handler.resume.test.d.ts +1 -0
  232. package/dist/cli/handlers/session-handler.resume.test.js +66 -0
  233. package/dist/cli/handlers/settings-handler.d.ts +19 -0
  234. package/dist/cli/handlers/settings-handler.js +710 -0
  235. package/dist/cli/handlers/settings-handler.remote-catalog.test.d.ts +1 -0
  236. package/dist/cli/handlers/settings-handler.remote-catalog.test.js +1247 -0
  237. package/dist/cli/handlers/skills-handler.d.ts +29 -0
  238. package/dist/cli/handlers/skills-handler.js +368 -0
  239. package/dist/cli/handlers/skills-handler.profile.test.d.ts +1 -0
  240. package/dist/cli/handlers/skills-handler.profile.test.js +70 -0
  241. package/dist/cli/handlers/solo-handler.d.ts +38 -0
  242. package/dist/cli/handlers/solo-handler.js +351 -0
  243. package/dist/cli/handlers/turn-handler.d.ts +52 -0
  244. package/dist/cli/handlers/turn-handler.js +574 -0
  245. package/dist/cli/handlers/turn-handler.test.d.ts +1 -0
  246. package/dist/cli/handlers/turn-handler.test.js +22 -0
  247. package/dist/cli/handlers/workflow-handler.d.ts +181 -0
  248. package/dist/cli/handlers/workflow-handler.events.test.d.ts +1 -0
  249. package/dist/cli/handlers/workflow-handler.events.test.js +113 -0
  250. package/dist/cli/handlers/workflow-handler.js +1449 -0
  251. package/dist/cli/handlers/workflow-handler.multiroot.test.d.ts +12 -0
  252. package/dist/cli/handlers/workflow-handler.multiroot.test.js +745 -0
  253. package/dist/cli/idle-dream-coordinator.d.ts +47 -0
  254. package/dist/cli/idle-dream-coordinator.js +126 -0
  255. package/dist/cli/idle-dream-coordinator.test.d.ts +1 -0
  256. package/dist/cli/idle-dream-coordinator.test.js +125 -0
  257. package/dist/cli/main.d.ts +15 -0
  258. package/dist/cli/main.js +112 -0
  259. package/dist/cli/mcp-bootstrap.d.ts +20 -0
  260. package/dist/cli/mcp-bootstrap.js +66 -0
  261. package/dist/cli/mcp-plugin-bootstrap.d.ts +2 -0
  262. package/dist/cli/mcp-plugin-bootstrap.js +2 -0
  263. package/dist/cli/mcp-plugin-bootstrap.test.d.ts +1 -0
  264. package/dist/cli/mcp-plugin-bootstrap.test.js +38 -0
  265. package/dist/cli/mcp-tool-proxy.d.ts +7 -0
  266. package/dist/cli/mcp-tool-proxy.js +15 -0
  267. package/dist/cli/media-capability-schema.d.ts +49 -0
  268. package/dist/cli/media-capability-schema.js +384 -0
  269. package/dist/cli/media-capability-schema.test.d.ts +1 -0
  270. package/dist/cli/media-capability-schema.test.js +103 -0
  271. package/dist/cli/media-file-api-service.d.ts +73 -0
  272. package/dist/cli/media-file-api-service.js +143 -0
  273. package/dist/cli/media-file-api-service.test.d.ts +1 -0
  274. package/dist/cli/media-file-api-service.test.js +119 -0
  275. package/dist/cli/media-file-tool-service.d.ts +13 -0
  276. package/dist/cli/media-file-tool-service.js +63 -0
  277. package/dist/cli/media-runtime-capability.test.d.ts +1 -0
  278. package/dist/cli/media-runtime-capability.test.js +106 -0
  279. package/dist/cli/media-runtime-facade.d.ts +51 -0
  280. package/dist/cli/media-runtime-facade.js +389 -0
  281. package/dist/cli/media-runtime-facade.test.d.ts +1 -0
  282. package/dist/cli/media-runtime-facade.test.js +42 -0
  283. package/dist/cli/memory-candidate-service.d.ts +83 -0
  284. package/dist/cli/memory-candidate-service.js +341 -0
  285. package/dist/cli/memory-coordinator.d.ts +37 -0
  286. package/dist/cli/memory-coordinator.js +85 -0
  287. package/dist/cli/memory-coordinator.test.d.ts +1 -0
  288. package/dist/cli/memory-coordinator.test.js +78 -0
  289. package/dist/cli/memory-multimodal.test.d.ts +1 -0
  290. package/dist/cli/memory-multimodal.test.js +137 -0
  291. package/dist/cli/model-client-resolver.d.ts +31 -0
  292. package/dist/cli/model-client-resolver.js +173 -0
  293. package/dist/cli/model-client-resolver.test.d.ts +1 -0
  294. package/dist/cli/model-client-resolver.test.js +105 -0
  295. package/dist/cli/multi-agent-handler-host.d.ts +27 -0
  296. package/dist/cli/multi-agent-handler-host.js +55 -0
  297. package/dist/cli/multi-agent-handler-host.test.d.ts +1 -0
  298. package/dist/cli/multi-agent-handler-host.test.js +63 -0
  299. package/dist/cli/multi-agent-state-coordinator.d.ts +11 -0
  300. package/dist/cli/multi-agent-state-coordinator.js +7 -0
  301. package/dist/cli/permission-approval-bridge.d.ts +15 -0
  302. package/dist/cli/permission-approval-bridge.js +66 -0
  303. package/dist/cli/permission-approval-bridge.test.d.ts +1 -0
  304. package/dist/cli/permission-approval-bridge.test.js +100 -0
  305. package/dist/cli/permission-bootstrap.d.ts +40 -0
  306. package/dist/cli/permission-bootstrap.js +58 -0
  307. package/dist/cli/permission-bootstrap.test.d.ts +1 -0
  308. package/dist/cli/permission-bootstrap.test.js +129 -0
  309. package/dist/cli/permission-runtime-service.d.ts +9 -0
  310. package/dist/cli/permission-runtime-service.js +11 -0
  311. package/dist/cli/permission-settings-store.d.ts +1 -0
  312. package/dist/cli/permission-settings-store.js +3 -0
  313. package/dist/cli/permission-settings-store.test.d.ts +1 -0
  314. package/dist/cli/permission-settings-store.test.js +65 -0
  315. package/dist/cli/pet-confirm-coordinator.d.ts +20 -0
  316. package/dist/cli/pet-confirm-coordinator.js +32 -0
  317. package/dist/cli/pet-confirm-coordinator.test.d.ts +1 -0
  318. package/dist/cli/pet-confirm-coordinator.test.js +34 -0
  319. package/dist/cli/pet-runtime.d.ts +55 -0
  320. package/dist/cli/pet-runtime.js +220 -0
  321. package/dist/cli/pet-runtime.test.d.ts +1 -0
  322. package/dist/cli/pet-runtime.test.js +46 -0
  323. package/dist/cli/plugin-bootstrap.d.ts +15 -0
  324. package/dist/cli/plugin-bootstrap.js +63 -0
  325. package/dist/cli/product-coordinator.d.ts +34 -0
  326. package/dist/cli/product-coordinator.js +124 -0
  327. package/dist/cli/product-coordinator.test.d.ts +1 -0
  328. package/dist/cli/product-coordinator.test.js +51 -0
  329. package/dist/cli/project-command-service.d.ts +28 -0
  330. package/dist/cli/project-command-service.js +99 -0
  331. package/dist/cli/project-context.d.ts +1 -0
  332. package/dist/cli/project-context.js +4 -0
  333. package/dist/cli/project-memory-store-factory.d.ts +2 -0
  334. package/dist/cli/project-memory-store-factory.js +11 -0
  335. package/dist/cli/project-template-seeder.d.ts +5 -0
  336. package/dist/cli/project-template-seeder.js +43 -0
  337. package/dist/cli/provider-core-facade.d.ts +31 -0
  338. package/dist/cli/provider-core-facade.js +51 -0
  339. package/dist/cli/provider-core-facade.test.d.ts +1 -0
  340. package/dist/cli/provider-core-facade.test.js +9 -0
  341. package/dist/cli/resolved-agent-cache.d.ts +47 -0
  342. package/dist/cli/resolved-agent-cache.js +38 -0
  343. package/dist/cli/rpc-registry.community.test.d.ts +1 -0
  344. package/dist/cli/rpc-registry.community.test.js +45 -0
  345. package/dist/cli/rpc-registry.d.ts +62 -0
  346. package/dist/cli/rpc-registry.js +243 -0
  347. package/dist/cli/runtime-dependency-catalog.d.ts +56 -0
  348. package/dist/cli/runtime-dependency-catalog.js +110 -0
  349. package/dist/cli/runtime-hook-bootstrap.d.ts +38 -0
  350. package/dist/cli/runtime-hook-bootstrap.js +71 -0
  351. package/dist/cli/runtime-watcher-bootstrap.d.ts +15 -0
  352. package/dist/cli/runtime-watcher-bootstrap.js +30 -0
  353. package/dist/cli/session-context.d.ts +32 -0
  354. package/dist/cli/session-context.js +15 -0
  355. package/dist/cli/session-coordinator.d.ts +22 -0
  356. package/dist/cli/session-coordinator.js +47 -0
  357. package/dist/cli/session-coordinator.test.d.ts +1 -0
  358. package/dist/cli/session-coordinator.test.js +61 -0
  359. package/dist/cli/session-history-coordinator.d.ts +8 -0
  360. package/dist/cli/session-history-coordinator.js +57 -0
  361. package/dist/cli/session-history-coordinator.test.d.ts +1 -0
  362. package/dist/cli/session-history-coordinator.test.js +39 -0
  363. package/dist/cli/session-query-service.d.ts +24 -0
  364. package/dist/cli/session-query-service.js +57 -0
  365. package/dist/cli/skill-meta-subturn-service.d.ts +26 -0
  366. package/dist/cli/skill-meta-subturn-service.js +93 -0
  367. package/dist/cli/skill-meta-tool-bootstrap.d.ts +34 -0
  368. package/dist/cli/skill-meta-tool-bootstrap.js +295 -0
  369. package/dist/cli/skill-meta-tool-bootstrap.test.d.ts +1 -0
  370. package/dist/cli/skill-meta-tool-bootstrap.test.js +42 -0
  371. package/dist/cli/skill-supporting-file.test.d.ts +1 -0
  372. package/dist/cli/skill-supporting-file.test.js +97 -0
  373. package/dist/cli/skills-query-service.d.ts +29 -0
  374. package/dist/cli/skills-query-service.js +38 -0
  375. package/dist/cli/stdio-acp-protocol-coordinator.d.ts +18 -0
  376. package/dist/cli/stdio-acp-protocol-coordinator.js +33 -0
  377. package/dist/cli/stdio-acp-request-host.d.ts +28 -0
  378. package/dist/cli/stdio-acp-request-host.js +82 -0
  379. package/dist/cli/stdio-acp-request-host.test.d.ts +1 -0
  380. package/dist/cli/stdio-acp-request-host.test.js +61 -0
  381. package/dist/cli/stdio-agent-session-bootstrap.d.ts +80 -0
  382. package/dist/cli/stdio-agent-session-bootstrap.js +74 -0
  383. package/dist/cli/stdio-rpc-handler-hosts.d.ts +50 -0
  384. package/dist/cli/stdio-rpc-handler-hosts.js +135 -0
  385. package/dist/cli/stdio-rpc-handler-hosts.test.d.ts +1 -0
  386. package/dist/cli/stdio-rpc-handler-hosts.test.js +10 -0
  387. package/dist/cli/stdio-runtime-bootstrap.d.ts +16 -0
  388. package/dist/cli/stdio-runtime-bootstrap.js +17 -0
  389. package/dist/cli/stdio-runtime-services.d.ts +36 -0
  390. package/dist/cli/stdio-runtime-services.js +53 -0
  391. package/dist/cli/stdio-server.architecture.test.d.ts +1 -0
  392. package/dist/cli/stdio-server.architecture.test.js +18 -0
  393. package/dist/cli/stdio-server.contract.test.d.ts +1 -0
  394. package/dist/cli/stdio-server.contract.test.js +96 -0
  395. package/dist/cli/stdio-server.d.ts +211 -0
  396. package/dist/cli/stdio-server.js +731 -0
  397. package/dist/cli/stdio-session-runtime-coordinator.d.ts +19 -0
  398. package/dist/cli/stdio-session-runtime-coordinator.js +21 -0
  399. package/dist/cli/test-support/tool-catalog-fixture.d.ts +3 -0
  400. package/dist/cli/test-support/tool-catalog-fixture.js +98 -0
  401. package/dist/cli/tool-bootstrap-core-registration.d.ts +30 -0
  402. package/dist/cli/tool-bootstrap-core-registration.js +555 -0
  403. package/dist/cli/tool-bootstrap-media-registration.d.ts +8 -0
  404. package/dist/cli/tool-bootstrap-media-registration.js +348 -0
  405. package/dist/cli/tool-bootstrap-paths.d.ts +7 -0
  406. package/dist/cli/tool-bootstrap-paths.js +17 -0
  407. package/dist/cli/tool-bootstrap-providers.d.ts +3 -0
  408. package/dist/cli/tool-bootstrap-providers.js +10 -0
  409. package/dist/cli/tool-bootstrap-web-registration.d.ts +13 -0
  410. package/dist/cli/tool-bootstrap-web-registration.js +144 -0
  411. package/dist/cli/tool-bootstrap-workflow-registration.d.ts +7 -0
  412. package/dist/cli/tool-bootstrap-workflow-registration.js +65 -0
  413. package/dist/cli/tool-bootstrap.background-exec.test.d.ts +1 -0
  414. package/dist/cli/tool-bootstrap.background-exec.test.js +83 -0
  415. package/dist/cli/tool-bootstrap.cwd.test.d.ts +1 -0
  416. package/dist/cli/tool-bootstrap.cwd.test.js +37 -0
  417. package/dist/cli/tool-bootstrap.d.ts +63 -0
  418. package/dist/cli/tool-bootstrap.instructions.test.d.ts +1 -0
  419. package/dist/cli/tool-bootstrap.instructions.test.js +37 -0
  420. package/dist/cli/tool-bootstrap.js +255 -0
  421. package/dist/cli/tool-bootstrap.media-provider-alias.test.d.ts +1 -0
  422. package/dist/cli/tool-bootstrap.media-provider-alias.test.js +90 -0
  423. package/dist/cli/tool-bootstrap.test.d.ts +1 -0
  424. package/dist/cli/tool-bootstrap.test.js +94 -0
  425. package/dist/cli/tool-catalog.d.ts +4 -0
  426. package/dist/cli/tool-catalog.js +14 -0
  427. package/dist/cli/tool-invoker-factory.d.ts +12 -0
  428. package/dist/cli/tool-invoker-factory.js +45 -0
  429. package/dist/cli/tool-registration-modules.contract.test.d.ts +1 -0
  430. package/dist/cli/tool-registration-modules.contract.test.js +75 -0
  431. package/dist/cli/tool-registry-adapter.d.ts +5 -0
  432. package/dist/cli/tool-registry-adapter.js +27 -0
  433. package/dist/cli/tool-result-processor.d.ts +14 -0
  434. package/dist/cli/tool-result-processor.js +83 -0
  435. package/dist/cli/tool-result-processor.test.d.ts +1 -0
  436. package/dist/cli/tool-result-processor.test.js +69 -0
  437. package/dist/cli/transport.d.ts +30 -0
  438. package/dist/cli/transport.js +68 -0
  439. package/dist/cli/tunable-store.d.ts +26 -0
  440. package/dist/cli/tunable-store.js +105 -0
  441. package/dist/cli/turn-ask-user-setup.d.ts +24 -0
  442. package/dist/cli/turn-ask-user-setup.js +46 -0
  443. package/dist/cli/turn-ask-user-setup.test.d.ts +1 -0
  444. package/dist/cli/turn-ask-user-setup.test.js +39 -0
  445. package/dist/cli/turn-core.d.ts +57 -0
  446. package/dist/cli/turn-core.js +58 -0
  447. package/dist/cli/turn-event-forwarder.d.ts +10 -0
  448. package/dist/cli/turn-event-forwarder.js +136 -0
  449. package/dist/cli/turn-lifecycle.d.ts +19 -0
  450. package/dist/cli/turn-lifecycle.js +53 -0
  451. package/dist/cli/turn-lifecycle.test.d.ts +1 -0
  452. package/dist/cli/turn-lifecycle.test.js +32 -0
  453. package/dist/cli/turn-media-setup.d.ts +19 -0
  454. package/dist/cli/turn-media-setup.js +71 -0
  455. package/dist/cli/turn-media-setup.test.d.ts +1 -0
  456. package/dist/cli/turn-media-setup.test.js +280 -0
  457. package/dist/cli/turn-permission-sync.d.ts +6 -0
  458. package/dist/cli/turn-permission-sync.js +7 -0
  459. package/dist/cli/turn-permission-sync.test.d.ts +1 -0
  460. package/dist/cli/turn-permission-sync.test.js +20 -0
  461. package/dist/cli/turn-project-router.d.ts +22 -0
  462. package/dist/cli/turn-project-router.js +141 -0
  463. package/dist/cli/turn-project-router.test.d.ts +1 -0
  464. package/dist/cli/turn-project-router.test.js +79 -0
  465. package/dist/cli/turn-skill-autopersist.d.ts +47 -0
  466. package/dist/cli/turn-skill-autopersist.js +262 -0
  467. package/dist/cli/turn-skill-autopersist.test.d.ts +1 -0
  468. package/dist/cli/turn-skill-autopersist.test.js +222 -0
  469. package/dist/cli/turn-suggestion-generator.d.ts +15 -0
  470. package/dist/cli/turn-suggestion-generator.js +34 -0
  471. package/dist/cli/workflow-host-adapter.d.ts +29 -0
  472. package/dist/cli/workflow-host-adapter.js +15 -0
  473. package/dist/cli/workflow-host-adapter.test.d.ts +1 -0
  474. package/dist/cli/workflow-host-adapter.test.js +35 -0
  475. package/dist/config/config.d.ts +17 -0
  476. package/dist/config/config.js +21 -0
  477. package/dist/contracts/fire-hook.d.ts +14 -0
  478. package/dist/contracts/fire-hook.js +14 -0
  479. package/dist/contracts/fire-hook.test.d.ts +1 -0
  480. package/dist/contracts/fire-hook.test.js +34 -0
  481. package/dist/contracts/hooks.d.ts +186 -0
  482. package/dist/contracts/hooks.js +7 -0
  483. package/dist/contracts/index.d.ts +4 -0
  484. package/dist/contracts/index.js +4 -0
  485. package/dist/index.d.ts +15 -0
  486. package/dist/index.js +15 -1269
  487. package/dist/orchestration/agent-instance.d.ts +84 -0
  488. package/dist/orchestration/agent-instance.js +535 -0
  489. package/dist/orchestration/context/context-collapse.d.ts +58 -0
  490. package/dist/orchestration/context/context-collapse.js +134 -0
  491. package/dist/orchestration/context/reactive-compact.d.ts +73 -0
  492. package/dist/orchestration/context/reactive-compact.js +78 -0
  493. package/dist/orchestration/context/turn-loop-guard.d.ts +86 -0
  494. package/dist/orchestration/context/turn-loop-guard.js +100 -0
  495. package/dist/orchestration/dag-scheduler.d.ts +167 -0
  496. package/dist/orchestration/dag-scheduler.js +546 -0
  497. package/dist/orchestration/error-handling/error-classification.d.ts +3 -0
  498. package/dist/orchestration/error-handling/error-classification.js +35 -0
  499. package/dist/orchestration/error-handling/failover-classification.d.ts +8 -0
  500. package/dist/orchestration/error-handling/failover-classification.js +381 -0
  501. package/dist/orchestration/error-handling/retry-loop.d.ts +69 -0
  502. package/dist/orchestration/error-handling/retry-loop.js +96 -0
  503. package/dist/orchestration/index.d.ts +15 -0
  504. package/dist/orchestration/index.js +18 -0
  505. package/dist/orchestration/product-budget.d.ts +56 -0
  506. package/dist/orchestration/product-budget.js +112 -0
  507. package/dist/orchestration/product-checkpoint.d.ts +46 -0
  508. package/dist/orchestration/product-checkpoint.js +74 -0
  509. package/dist/orchestration/product-dag-mutation-applier.d.ts +10 -0
  510. package/dist/orchestration/product-dag-mutation-applier.js +91 -0
  511. package/dist/orchestration/product-persistence.d.ts +35 -0
  512. package/dist/orchestration/product-persistence.js +55 -0
  513. package/dist/orchestration/product-planner.d.ts +146 -0
  514. package/dist/orchestration/product-planner.js +379 -0
  515. package/dist/orchestration/product-run-coordinator.d.ts +31 -0
  516. package/dist/orchestration/product-run-coordinator.js +31 -0
  517. package/dist/orchestration/product-worktree.d.ts +12 -0
  518. package/dist/orchestration/product-worktree.js +69 -0
  519. package/dist/orchestration/skill-improvement.d.ts +129 -0
  520. package/dist/orchestration/skill-improvement.js +243 -0
  521. package/dist/orchestration/solo-evaluator.d.ts +124 -0
  522. package/dist/orchestration/solo-evaluator.js +611 -0
  523. package/dist/orchestration/solo-persistence.d.ts +48 -0
  524. package/dist/orchestration/solo-persistence.js +67 -0
  525. package/dist/orchestration/solo-spec-builder.d.ts +48 -0
  526. package/dist/orchestration/solo-spec-builder.js +139 -0
  527. package/dist/orchestration/subagent/agent-registry.d.ts +46 -0
  528. package/dist/orchestration/subagent/agent-registry.js +129 -0
  529. package/dist/orchestration/subagent/fork-subagent.d.ts +100 -0
  530. package/dist/orchestration/subagent/fork-subagent.js +101 -0
  531. package/dist/orchestration/subagent/task-types.d.ts +1 -0
  532. package/dist/orchestration/subagent/task-types.js +1 -0
  533. package/dist/orchestration/tool-cascade.d.ts +49 -0
  534. package/dist/orchestration/tool-cascade.js +86 -0
  535. package/dist/orchestration/tool-loop/conversation-repair.d.ts +61 -0
  536. package/dist/orchestration/tool-loop/conversation-repair.js +429 -0
  537. package/dist/orchestration/tool-loop/tool-choice-policy.d.ts +54 -0
  538. package/dist/orchestration/tool-loop/tool-choice-policy.js +164 -0
  539. package/dist/orchestration/tool-loop/tool-loop-state.d.ts +50 -0
  540. package/dist/orchestration/tool-loop/tool-loop-state.js +133 -0
  541. package/dist/orchestration/tool-loop/tool-schema.d.ts +46 -0
  542. package/dist/orchestration/tool-loop/tool-schema.js +208 -0
  543. package/dist/orchestration/workflow/budget-permission-gate.d.ts +85 -0
  544. package/dist/orchestration/workflow/budget-permission-gate.js +134 -0
  545. package/dist/orchestration/workflow/builtin-executors.d.ts +18 -0
  546. package/dist/orchestration/workflow/builtin-executors.js +191 -0
  547. package/dist/orchestration/workflow/capability-catalog.d.ts +64 -0
  548. package/dist/orchestration/workflow/capability-catalog.js +166 -0
  549. package/dist/orchestration/workflow/cron-schedule.d.ts +37 -0
  550. package/dist/orchestration/workflow/cron-schedule.js +199 -0
  551. package/dist/orchestration/workflow/data-item.d.ts +39 -0
  552. package/dist/orchestration/workflow/data-item.js +52 -0
  553. package/dist/orchestration/workflow/expression.d.ts +60 -0
  554. package/dist/orchestration/workflow/expression.js +474 -0
  555. package/dist/orchestration/workflow/host-executors.d.ts +15 -0
  556. package/dist/orchestration/workflow/host-executors.js +207 -0
  557. package/dist/orchestration/workflow/n8n-expression.d.ts +48 -0
  558. package/dist/orchestration/workflow/n8n-expression.js +95 -0
  559. package/dist/orchestration/workflow/n8n-import.d.ts +68 -0
  560. package/dist/orchestration/workflow/n8n-import.js +319 -0
  561. package/dist/orchestration/workflow/node-registry.d.ts +19 -0
  562. package/dist/orchestration/workflow/node-registry.js +45 -0
  563. package/dist/orchestration/workflow/node-schema.d.ts +232 -0
  564. package/dist/orchestration/workflow/node-schema.js +29 -0
  565. package/dist/orchestration/workflow/qla-executor-host.d.ts +77 -0
  566. package/dist/orchestration/workflow/qla-executor-host.js +124 -0
  567. package/dist/orchestration/workflow/run-checkpoint-store.d.ts +53 -0
  568. package/dist/orchestration/workflow/run-checkpoint-store.js +59 -0
  569. package/dist/orchestration/workflow/run-history-store.d.ts +65 -0
  570. package/dist/orchestration/workflow/run-history-store.js +104 -0
  571. package/dist/orchestration/workflow/trigger-validation.d.ts +22 -0
  572. package/dist/orchestration/workflow/trigger-validation.js +241 -0
  573. package/dist/orchestration/workflow/workflow-audit-store.d.ts +31 -0
  574. package/dist/orchestration/workflow/workflow-audit-store.js +55 -0
  575. package/dist/orchestration/workflow/workflow-bundle.d.ts +65 -0
  576. package/dist/orchestration/workflow/workflow-bundle.js +168 -0
  577. package/dist/orchestration/workflow/workflow-controller.d.ts +219 -0
  578. package/dist/orchestration/workflow/workflow-controller.js +522 -0
  579. package/dist/orchestration/workflow/workflow-patch.d.ts +116 -0
  580. package/dist/orchestration/workflow/workflow-patch.js +369 -0
  581. package/dist/orchestration/workflow/workflow-render.d.ts +41 -0
  582. package/dist/orchestration/workflow/workflow-render.js +108 -0
  583. package/dist/orchestration/workflow/workflow-runtime.d.ts +171 -0
  584. package/dist/orchestration/workflow/workflow-runtime.js +474 -0
  585. package/dist/orchestration/workflow/workflow-scheduler.d.ts +111 -0
  586. package/dist/orchestration/workflow/workflow-scheduler.js +230 -0
  587. package/dist/orchestration/workflow/workflow-service.d.ts +14 -0
  588. package/dist/orchestration/workflow/workflow-service.js +18 -0
  589. package/dist/orchestration/workflow/workflow-store.d.ts +81 -0
  590. package/dist/orchestration/workflow/workflow-store.js +123 -0
  591. package/dist/orchestration/workflow/workflow-trigger.d.ts +35 -0
  592. package/dist/orchestration/workflow/workflow-trigger.js +1 -0
  593. package/dist/orchestration/workflow-chat-builder.d.ts +57 -0
  594. package/dist/orchestration/workflow-chat-builder.js +202 -0
  595. package/dist/permissions.d.ts +2 -0
  596. package/dist/permissions.js +1 -1
  597. package/dist/permissions.public-api.test.d.ts +1 -0
  598. package/dist/permissions.public-api.test.js +32 -0
  599. package/dist/pet-contracts.d.ts +1 -0
  600. package/dist/pet-contracts.js +1 -1
  601. package/dist/protocol/index.d.ts +7 -0
  602. package/dist/protocol/index.js +7 -0
  603. package/dist/protocol/methods.d.ts +1190 -0
  604. package/dist/protocol/methods.js +110 -0
  605. package/dist/protocol/notifications.d.ts +9 -0
  606. package/dist/protocol/notifications.js +9 -0
  607. package/dist/protocol/wire/acp-agent-management.d.ts +456 -0
  608. package/dist/protocol/wire/acp-agent-management.js +7 -0
  609. package/dist/protocol/wire/acp-protocol.d.ts +369 -0
  610. package/dist/protocol/wire/acp-protocol.js +120 -0
  611. package/dist/protocol/wire/agent-events.d.ts +32 -0
  612. package/dist/protocol/wire/agent-events.js +113 -0
  613. package/dist/protocol/wire/agent-methods.d.ts +564 -0
  614. package/dist/protocol/wire/agent-methods.js +11 -0
  615. package/dist/protocol/wire/agent-rpc.d.ts +100 -0
  616. package/dist/protocol/wire/agent-rpc.js +72 -0
  617. package/dist/protocol/wire/capability-manifest.d.ts +112 -0
  618. package/dist/protocol/wire/capability-manifest.js +149 -0
  619. package/dist/protocol/wire/capability-transport.d.ts +207 -0
  620. package/dist/protocol/wire/capability-transport.js +1 -0
  621. package/dist/protocol/wire/channel-ingress.d.ts +29 -0
  622. package/dist/protocol/wire/channel-ingress.js +1 -0
  623. package/dist/protocol/wire/channel.d.ts +89 -0
  624. package/dist/protocol/wire/channel.js +1 -0
  625. package/dist/protocol/wire/chat-types.d.ts +106 -0
  626. package/dist/protocol/wire/chat-types.js +7 -0
  627. package/dist/protocol/wire/checkpoint-runtime.d.ts +61 -0
  628. package/dist/protocol/wire/checkpoint-runtime.js +499 -0
  629. package/dist/protocol/wire/checkpoint.d.ts +72 -0
  630. package/dist/protocol/wire/checkpoint.js +12 -0
  631. package/dist/protocol/wire/execution.d.ts +391 -0
  632. package/dist/protocol/wire/execution.js +1 -0
  633. package/dist/protocol/wire/gateway-contract.d.ts +61 -0
  634. package/dist/protocol/wire/gateway-contract.js +236 -0
  635. package/dist/protocol/wire/gateway-contract.test.d.ts +1 -0
  636. package/dist/protocol/wire/gateway-contract.test.js +123 -0
  637. package/dist/protocol/wire/gateway-rpc.d.ts +652 -0
  638. package/dist/protocol/wire/gateway-rpc.js +58 -0
  639. package/dist/protocol/wire/gateway.d.ts +62 -0
  640. package/dist/protocol/wire/gateway.js +1 -0
  641. package/dist/protocol/wire/hook-protocol.d.ts +37 -0
  642. package/dist/protocol/wire/hook-protocol.js +2 -0
  643. package/dist/protocol/wire/index.d.ts +28 -0
  644. package/dist/protocol/wire/index.js +27 -0
  645. package/dist/protocol/wire/memory-provider-lifecycle.d.ts +82 -0
  646. package/dist/protocol/wire/memory-provider-lifecycle.js +24 -0
  647. package/dist/protocol/wire/notification-payloads.d.ts +918 -0
  648. package/dist/protocol/wire/notification-payloads.js +13 -0
  649. package/dist/protocol/wire/pet-contracts.d.ts +76 -0
  650. package/dist/protocol/wire/pet-contracts.js +23 -0
  651. package/dist/protocol/wire/provider-runtime-contract.d.ts +66 -0
  652. package/dist/protocol/wire/provider-runtime-contract.js +23 -0
  653. package/dist/protocol/wire/provider-runtime-core.d.ts +147 -0
  654. package/dist/protocol/wire/provider-runtime-core.js +488 -0
  655. package/dist/protocol/wire/provider-runtime-io.d.ts +20 -0
  656. package/dist/protocol/wire/provider-runtime-io.js +57 -0
  657. package/dist/protocol/wire/resource-manifest.d.ts +68 -0
  658. package/dist/protocol/wire/resource-manifest.js +174 -0
  659. package/dist/protocol/wire/session.d.ts +32 -0
  660. package/dist/protocol/wire/session.js +1 -0
  661. package/dist/protocol/wire/thread-protocol.d.ts +145 -0
  662. package/dist/protocol/wire/thread-protocol.js +13 -0
  663. package/dist/protocol/wire/transport.d.ts +57 -0
  664. package/dist/protocol/wire/transport.js +1 -0
  665. package/dist/protocol/wire/turn.d.ts +208 -0
  666. package/dist/protocol/wire/turn.js +1 -0
  667. package/dist/protocol/wire/web-capability.d.ts +54 -0
  668. package/dist/protocol/wire/web-capability.js +52 -0
  669. package/dist/runtime/community/community-consent-client.d.ts +142 -0
  670. package/dist/runtime/community/community-consent-client.js +381 -0
  671. package/dist/runtime/community/community-consent-client.test.d.ts +1 -0
  672. package/dist/runtime/community/community-consent-client.test.js +491 -0
  673. package/dist/runtime/community/community-desensitization-red-team-cli.d.ts +7 -0
  674. package/dist/runtime/community/community-desensitization-red-team-cli.js +43 -0
  675. package/dist/runtime/community/community-desensitization-red-team-cli.test.d.ts +1 -0
  676. package/dist/runtime/community/community-desensitization-red-team-cli.test.js +23 -0
  677. package/dist/runtime/community/community-desensitization.d.ts +29 -0
  678. package/dist/runtime/community/community-desensitization.js +81 -0
  679. package/dist/runtime/community/community-desensitization.test.d.ts +1 -0
  680. package/dist/runtime/community/community-desensitization.test.js +43 -0
  681. package/dist/runtime/community/community-discovery-cache.d.ts +24 -0
  682. package/dist/runtime/community/community-discovery-cache.js +52 -0
  683. package/dist/runtime/community/community-discovery-coordinator.d.ts +33 -0
  684. package/dist/runtime/community/community-discovery-coordinator.js +84 -0
  685. package/dist/runtime/community/community-discovery-coordinator.test.d.ts +1 -0
  686. package/dist/runtime/community/community-discovery-coordinator.test.js +97 -0
  687. package/dist/runtime/community/community-pet-publisher.d.ts +30 -0
  688. package/dist/runtime/community/community-pet-publisher.js +53 -0
  689. package/dist/runtime/community/community-pet-publisher.test.d.ts +1 -0
  690. package/dist/runtime/community/community-pet-publisher.test.js +53 -0
  691. package/dist/runtime/community/community-signal-reporter.d.ts +33 -0
  692. package/dist/runtime/community/community-signal-reporter.js +85 -0
  693. package/dist/runtime/community/community-signal-reporter.test.d.ts +1 -0
  694. package/dist/runtime/community/community-signal-reporter.test.js +100 -0
  695. package/dist/runtime/community/community-telemetry-metadata.d.ts +4 -0
  696. package/dist/runtime/community/community-telemetry-metadata.js +42 -0
  697. package/dist/runtime/community/community-telemetry-recorder.d.ts +6 -0
  698. package/dist/runtime/community/community-telemetry-recorder.js +31 -0
  699. package/dist/runtime/community/community-telemetry-types.d.ts +1 -0
  700. package/dist/runtime/community/community-telemetry-types.js +1 -0
  701. package/dist/runtime/config/tunable-defaults.d.ts +255 -0
  702. package/dist/runtime/config/tunable-defaults.js +293 -0
  703. package/dist/runtime/context/context-compression-strategies.d.ts +301 -0
  704. package/dist/runtime/context/context-compression-strategies.js +860 -0
  705. package/dist/runtime/execution/dream-agent.d.ts +260 -0
  706. package/dist/runtime/execution/dream-agent.js +974 -0
  707. package/dist/runtime/execution/dream-category-context.d.ts +47 -0
  708. package/dist/runtime/execution/dream-category-context.js +226 -0
  709. package/dist/runtime/execution/dream-lock.test.d.ts +1 -0
  710. package/dist/runtime/execution/dream-lock.test.js +54 -0
  711. package/dist/runtime/execution/fork-context.d.ts +14 -0
  712. package/dist/runtime/execution/fork-context.js +20 -0
  713. package/dist/runtime/execution/fork-context.test.d.ts +1 -0
  714. package/dist/runtime/execution/fork-context.test.js +101 -0
  715. package/dist/runtime/execution/forked-agent.d.ts +111 -0
  716. package/dist/runtime/execution/forked-agent.js +172 -0
  717. package/dist/runtime/execution/index.d.ts +7 -0
  718. package/dist/runtime/execution/index.js +8 -0
  719. package/dist/runtime/execution/memory-decay.d.ts +69 -0
  720. package/dist/runtime/execution/memory-decay.js +80 -0
  721. package/dist/runtime/execution/progress-tracker.d.ts +78 -0
  722. package/dist/runtime/execution/progress-tracker.js +107 -0
  723. package/dist/runtime/execution/streaming-tool-executor.d.ts +102 -0
  724. package/dist/runtime/execution/streaming-tool-executor.js +345 -0
  725. package/dist/runtime/execution/streaming-tool-executor.test.d.ts +1 -0
  726. package/dist/runtime/execution/streaming-tool-executor.test.js +49 -0
  727. package/dist/runtime/execution/tool-eligibility.d.ts +36 -0
  728. package/dist/runtime/execution/tool-eligibility.js +94 -0
  729. package/dist/runtime/execution/tool-eligibility.test.d.ts +1 -0
  730. package/dist/runtime/execution/tool-eligibility.test.js +96 -0
  731. package/dist/runtime/execution/tool-result-storage.d.ts +87 -0
  732. package/dist/runtime/execution/tool-result-storage.js +274 -0
  733. package/dist/runtime/hooks/context-compression.d.ts +61 -0
  734. package/dist/runtime/hooks/context-compression.js +334 -0
  735. package/dist/runtime/hooks/hook-registry.d.ts +12 -0
  736. package/dist/runtime/hooks/hook-registry.js +61 -0
  737. package/dist/runtime/hooks/hook-registry.test.d.ts +1 -0
  738. package/dist/runtime/hooks/hook-registry.test.js +51 -0
  739. package/dist/runtime/hooks/index.d.ts +4 -0
  740. package/dist/runtime/hooks/index.js +5 -0
  741. package/dist/runtime/hooks/memory-hooks.d.ts +75 -0
  742. package/dist/runtime/hooks/memory-hooks.js +356 -0
  743. package/dist/runtime/hooks/skill-recall-hooks.d.ts +37 -0
  744. package/dist/runtime/hooks/skill-recall-hooks.js +263 -0
  745. package/dist/runtime/hooks/skill-recall-hooks.test.d.ts +1 -0
  746. package/dist/runtime/hooks/skill-recall-hooks.test.js +52 -0
  747. package/dist/runtime/index.d.ts +5 -0
  748. package/dist/runtime/index.js +13 -0
  749. package/dist/runtime/infra/acp-detector.d.ts +133 -0
  750. package/dist/runtime/infra/acp-detector.js +862 -0
  751. package/dist/runtime/infra/acp-detector.test.d.ts +1 -0
  752. package/dist/runtime/infra/acp-detector.test.js +164 -0
  753. package/dist/runtime/infra/acp-host-handler.d.ts +31 -0
  754. package/dist/runtime/infra/acp-host-handler.js +123 -0
  755. package/dist/runtime/infra/acp-host-handler.test.d.ts +1 -0
  756. package/dist/runtime/infra/acp-host-handler.test.js +64 -0
  757. package/dist/runtime/infra/acp-protocol-adapter.d.ts +146 -0
  758. package/dist/runtime/infra/acp-protocol-adapter.js +382 -0
  759. package/dist/runtime/infra/acp-protocol-adapter.test.d.ts +1 -0
  760. package/dist/runtime/infra/acp-protocol-adapter.test.js +180 -0
  761. package/dist/runtime/infra/acp-usage-tracker.d.ts +46 -0
  762. package/dist/runtime/infra/acp-usage-tracker.js +92 -0
  763. package/dist/runtime/infra/agent-catalog.test.d.ts +1 -0
  764. package/dist/runtime/infra/agent-catalog.test.js +174 -0
  765. package/dist/runtime/infra/agent-config-store.d.ts +30 -0
  766. package/dist/runtime/infra/agent-config-store.js +115 -0
  767. package/dist/runtime/infra/agent-install-runner.d.ts +57 -0
  768. package/dist/runtime/infra/agent-install-runner.js +123 -0
  769. package/dist/runtime/infra/agent-install-runner.test.d.ts +1 -0
  770. package/dist/runtime/infra/agent-install-runner.test.js +103 -0
  771. package/dist/runtime/infra/agent-paths.d.ts +67 -0
  772. package/dist/runtime/infra/agent-paths.js +167 -0
  773. package/dist/runtime/infra/agent-paths.test.d.ts +1 -0
  774. package/dist/runtime/infra/agent-paths.test.js +49 -0
  775. package/dist/runtime/infra/agent-process.d.ts +299 -0
  776. package/dist/runtime/infra/agent-process.js +1318 -0
  777. package/dist/runtime/infra/background-tasks.d.ts +115 -0
  778. package/dist/runtime/infra/background-tasks.js +249 -0
  779. package/dist/runtime/infra/background-tasks.test.d.ts +1 -0
  780. package/dist/runtime/infra/background-tasks.test.js +242 -0
  781. package/dist/runtime/infra/checkpoint-backend.d.ts +8 -0
  782. package/dist/runtime/infra/checkpoint-backend.js +110 -0
  783. package/dist/runtime/infra/cleanup-registry.d.ts +23 -0
  784. package/dist/runtime/infra/cleanup-registry.js +34 -0
  785. package/dist/runtime/infra/default-path-service.d.ts +33 -0
  786. package/dist/runtime/infra/default-path-service.js +76 -0
  787. package/dist/runtime/infra/default-path-service.test.d.ts +1 -0
  788. package/dist/runtime/infra/default-path-service.test.js +31 -0
  789. package/dist/runtime/infra/disk-storage.d.ts +20 -0
  790. package/dist/runtime/infra/disk-storage.js +64 -0
  791. package/dist/runtime/infra/external-agent-approvals.d.ts +41 -0
  792. package/dist/runtime/infra/external-agent-approvals.js +101 -0
  793. package/dist/runtime/infra/external-agent-approvals.test.d.ts +1 -0
  794. package/dist/runtime/infra/external-agent-approvals.test.js +99 -0
  795. package/dist/runtime/infra/external-agent-pool.d.ts +54 -0
  796. package/dist/runtime/infra/external-agent-pool.js +0 -0
  797. package/dist/runtime/infra/external-agent-pool.test.d.ts +1 -0
  798. package/dist/runtime/infra/external-agent-pool.test.js +102 -0
  799. package/dist/runtime/infra/file-watcher.d.ts +72 -0
  800. package/dist/runtime/infra/file-watcher.js +154 -0
  801. package/dist/runtime/infra/index.d.ts +19 -0
  802. package/dist/runtime/infra/index.js +19 -0
  803. package/dist/runtime/infra/key-injection.test.d.ts +1 -0
  804. package/dist/runtime/infra/key-injection.test.js +88 -0
  805. package/dist/runtime/infra/key-pool.d.ts +122 -0
  806. package/dist/runtime/infra/key-pool.js +378 -0
  807. package/dist/runtime/infra/key-pool.test.d.ts +1 -0
  808. package/dist/runtime/infra/key-pool.test.js +36 -0
  809. package/dist/runtime/infra/llmrouter-catalog.d.ts +84 -0
  810. package/dist/runtime/infra/llmrouter-catalog.js +287 -0
  811. package/dist/runtime/infra/llmrouter-catalog.test.d.ts +1 -0
  812. package/dist/runtime/infra/llmrouter-catalog.test.js +80 -0
  813. package/dist/runtime/infra/llmrouter-zero-config.test.d.ts +1 -0
  814. package/dist/runtime/infra/llmrouter-zero-config.test.js +64 -0
  815. package/dist/runtime/infra/mcp-bridge.d.ts +166 -0
  816. package/dist/runtime/infra/mcp-bridge.js +161 -0
  817. package/dist/runtime/infra/media-persistence.d.ts +87 -0
  818. package/dist/runtime/infra/media-persistence.js +278 -0
  819. package/dist/runtime/infra/migrate-project-skills.d.ts +21 -0
  820. package/dist/runtime/infra/migrate-project-skills.js +131 -0
  821. package/dist/runtime/infra/migrate-project-skills.test.d.ts +1 -0
  822. package/dist/runtime/infra/migrate-project-skills.test.js +69 -0
  823. package/dist/runtime/infra/model-id-translator.d.ts +22 -0
  824. package/dist/runtime/infra/model-id-translator.js +74 -0
  825. package/dist/runtime/infra/model-registry.d.ts +148 -0
  826. package/dist/runtime/infra/model-registry.js +529 -0
  827. package/dist/runtime/infra/model-registry.test.d.ts +1 -0
  828. package/dist/runtime/infra/model-registry.test.js +253 -0
  829. package/dist/runtime/infra/process-config-port.d.ts +2 -0
  830. package/dist/runtime/infra/process-config-port.js +5 -0
  831. package/dist/runtime/infra/profile-storage.test.d.ts +1 -0
  832. package/dist/runtime/infra/profile-storage.test.js +41 -0
  833. package/dist/runtime/infra/project-instructions-store.d.ts +30 -0
  834. package/dist/runtime/infra/project-instructions-store.js +124 -0
  835. package/dist/runtime/infra/project-skill-manifest.d.ts +32 -0
  836. package/dist/runtime/infra/project-skill-manifest.js +160 -0
  837. package/dist/runtime/infra/project-skill-manifest.test.d.ts +1 -0
  838. package/dist/runtime/infra/project-skill-manifest.test.js +42 -0
  839. package/dist/runtime/infra/project-store.d.ts +48 -0
  840. package/dist/runtime/infra/project-store.js +284 -0
  841. package/dist/runtime/infra/secure-storage.d.ts +81 -0
  842. package/dist/runtime/infra/secure-storage.js +117 -0
  843. package/dist/runtime/infra/skill-injector.d.ts +59 -0
  844. package/dist/runtime/infra/skill-injector.js +155 -0
  845. package/dist/runtime/infra/skill-injector.test.d.ts +1 -0
  846. package/dist/runtime/infra/skill-injector.test.js +9 -0
  847. package/dist/runtime/infra/skill-resolver.d.ts +51 -0
  848. package/dist/runtime/infra/skill-resolver.js +109 -0
  849. package/dist/runtime/infra/skill-resolver.test.d.ts +1 -0
  850. package/dist/runtime/infra/skill-resolver.test.js +72 -0
  851. package/dist/runtime/infra/task-runtime.d.ts +71 -0
  852. package/dist/runtime/infra/task-runtime.js +181 -0
  853. package/dist/runtime/infra/token-budget.d.ts +92 -0
  854. package/dist/runtime/infra/token-budget.js +170 -0
  855. package/dist/runtime/infra/worktree-backend.d.ts +86 -0
  856. package/dist/runtime/infra/worktree-backend.js +522 -0
  857. package/dist/runtime/memory/categories.d.ts +5 -0
  858. package/dist/runtime/memory/categories.js +4 -0
  859. package/dist/runtime/memory/find-relevant-memories.d.ts +70 -0
  860. package/dist/runtime/memory/find-relevant-memories.js +270 -0
  861. package/dist/runtime/memory/implicit-extraction.d.ts +58 -0
  862. package/dist/runtime/memory/implicit-extraction.js +187 -0
  863. package/dist/runtime/memory/recall-category-filter.d.ts +54 -0
  864. package/dist/runtime/memory/recall-category-filter.js +215 -0
  865. package/dist/runtime/permission-model.d.ts +19 -0
  866. package/dist/runtime/permission-model.js +24 -0
  867. package/dist/runtime/permission-model.test.d.ts +1 -0
  868. package/dist/runtime/permission-model.test.js +32 -0
  869. package/dist/runtime/pet/hatch-pet-runner.d.ts +18 -0
  870. package/dist/runtime/pet/hatch-pet-runner.js +120 -0
  871. package/dist/runtime/pet/hatch-pet-runner.test.d.ts +1 -0
  872. package/dist/runtime/pet/hatch-pet-runner.test.js +28 -0
  873. package/dist/runtime/pet/index.d.ts +18 -0
  874. package/dist/runtime/pet/index.js +9 -0
  875. package/dist/runtime/pet/pet-community-assets.d.ts +13 -0
  876. package/dist/runtime/pet/pet-community-assets.js +106 -0
  877. package/dist/runtime/pet/pet-file-loader.d.ts +5 -0
  878. package/dist/runtime/pet/pet-file-loader.js +11 -0
  879. package/dist/runtime/pet/pet-growth-engine.d.ts +2 -0
  880. package/dist/runtime/pet/pet-growth-engine.js +1 -0
  881. package/dist/runtime/pet/pet-profile-service.d.ts +91 -0
  882. package/dist/runtime/pet/pet-profile-service.js +296 -0
  883. package/dist/runtime/pet/pet-profile-service.test.d.ts +1 -0
  884. package/dist/runtime/pet/pet-profile-service.test.js +171 -0
  885. package/dist/runtime/pet/pet-reaction-engine.d.ts +11 -0
  886. package/dist/runtime/pet/pet-reaction-engine.js +11 -0
  887. package/dist/runtime/pet/pet-reaction-engine.test.d.ts +1 -0
  888. package/dist/runtime/pet/pet-reaction-engine.test.js +12 -0
  889. package/dist/runtime/pet/pet-soul-service.d.ts +21 -0
  890. package/dist/runtime/pet/pet-soul-service.js +63 -0
  891. package/dist/runtime/pet/pet-soul-service.test.d.ts +1 -0
  892. package/dist/runtime/pet/pet-soul-service.test.js +115 -0
  893. package/dist/runtime/pet/pet-types.d.ts +1 -0
  894. package/dist/runtime/pet/pet-types.js +1 -0
  895. package/dist/runtime/pet/petdex-asset.d.ts +32 -0
  896. package/dist/runtime/pet/petdex-asset.js +242 -0
  897. package/dist/runtime/pet/petdex-asset.test.d.ts +1 -0
  898. package/dist/runtime/pet/petdex-asset.test.js +257 -0
  899. package/dist/runtime/pet/petdex-forge-service.d.ts +19 -0
  900. package/dist/runtime/pet/petdex-forge-service.js +820 -0
  901. package/dist/runtime/pet/petdex-forge-service.test.d.ts +1 -0
  902. package/dist/runtime/pet/petdex-forge-service.test.js +142 -0
  903. package/dist/runtime/ports/agent-execution-contracts.d.ts +182 -0
  904. package/dist/runtime/ports/agent-execution-contracts.js +1 -0
  905. package/dist/runtime/ports/agent-runtime-ports.d.ts +76 -0
  906. package/dist/runtime/ports/agent-runtime-ports.js +1 -0
  907. package/dist/runtime/ports/checkpoint-contracts.d.ts +19 -0
  908. package/dist/runtime/ports/checkpoint-contracts.js +1 -0
  909. package/dist/runtime/ports/config-port.d.ts +4 -0
  910. package/dist/runtime/ports/config-port.js +5 -0
  911. package/dist/runtime/ports/index.d.ts +19 -0
  912. package/dist/runtime/ports/index.js +5 -0
  913. package/dist/runtime/ports/memory-provider.d.ts +181 -0
  914. package/dist/runtime/ports/memory-provider.js +1 -0
  915. package/dist/runtime/ports/memory-recall-source.d.ts +3 -0
  916. package/dist/runtime/ports/memory-recall-source.js +1 -0
  917. package/dist/runtime/ports/memory-writer.d.ts +21 -0
  918. package/dist/runtime/ports/memory-writer.js +1 -0
  919. package/dist/runtime/ports/model-transport-contracts.d.ts +125 -0
  920. package/dist/runtime/ports/model-transport-contracts.js +9 -0
  921. package/dist/runtime/ports/path-service.d.ts +31 -0
  922. package/dist/runtime/ports/path-service.js +1 -0
  923. package/dist/runtime/ports/permission-contracts.d.ts +128 -0
  924. package/dist/runtime/ports/permission-contracts.js +5 -0
  925. package/dist/runtime/ports/project-memory-store.d.ts +44 -0
  926. package/dist/runtime/ports/project-memory-store.js +1 -0
  927. package/dist/runtime/ports/source-provider.d.ts +39 -0
  928. package/dist/runtime/ports/source-provider.js +4 -0
  929. package/dist/runtime/ports/tool-call-contracts.d.ts +16 -0
  930. package/dist/runtime/ports/tool-call-contracts.js +13 -0
  931. package/dist/runtime/ports/tool-contracts.d.ts +87 -0
  932. package/dist/runtime/ports/tool-contracts.js +3 -0
  933. package/dist/runtime/ports/tool-risk.d.ts +7 -0
  934. package/dist/runtime/ports/tool-risk.js +16 -0
  935. package/dist/runtime/ports/web-search-contracts.d.ts +21 -0
  936. package/dist/runtime/ports/web-search-contracts.js +1 -0
  937. package/dist/runtime/ports/worktree-contracts.d.ts +22 -0
  938. package/dist/runtime/ports/worktree-contracts.js +1 -0
  939. package/dist/runtime/prompt/environment-context.d.ts +60 -0
  940. package/dist/runtime/prompt/environment-context.js +410 -0
  941. package/dist/runtime/prompt/environment-context.test.d.ts +1 -0
  942. package/dist/runtime/prompt/environment-context.test.js +75 -0
  943. package/dist/runtime/prompt/fresh-workspace-evidence.d.ts +21 -0
  944. package/dist/runtime/prompt/fresh-workspace-evidence.js +224 -0
  945. package/dist/runtime/prompt/fresh-workspace-evidence.test.d.ts +1 -0
  946. package/dist/runtime/prompt/fresh-workspace-evidence.test.js +163 -0
  947. package/dist/runtime/prompt/index.d.ts +5 -0
  948. package/dist/runtime/prompt/index.js +6 -0
  949. package/dist/runtime/prompt/instruction-loader.d.ts +70 -0
  950. package/dist/runtime/prompt/instruction-loader.js +515 -0
  951. package/dist/runtime/prompt/instruction-loader.test.d.ts +1 -0
  952. package/dist/runtime/prompt/instruction-loader.test.js +64 -0
  953. package/dist/runtime/prompt/prompt-policy.d.ts +12 -0
  954. package/dist/runtime/prompt/prompt-policy.js +40 -0
  955. package/dist/runtime/prompt/system-prompt-sections.d.ts +65 -0
  956. package/dist/runtime/prompt/system-prompt-sections.js +93 -0
  957. package/dist/runtime/prompt/task-domain.d.ts +82 -0
  958. package/dist/runtime/prompt/task-domain.js +248 -0
  959. package/dist/runtime/sandbox/index.d.ts +2 -0
  960. package/dist/runtime/sandbox/index.js +2 -0
  961. package/dist/runtime/sandbox/skill-sandbox.d.ts +53 -0
  962. package/dist/runtime/sandbox/skill-sandbox.js +93 -0
  963. package/dist/runtime/sandbox/skill-sandbox.test.d.ts +1 -0
  964. package/dist/runtime/sandbox/skill-sandbox.test.js +172 -0
  965. package/dist/runtime/sandbox/windows-skill-sandbox.d.ts +78 -0
  966. package/dist/runtime/sandbox/windows-skill-sandbox.js +128 -0
  967. package/dist/runtime/session/group-session-split.d.ts +38 -0
  968. package/dist/runtime/session/group-session-split.js +99 -0
  969. package/dist/runtime/session/index.d.ts +4 -0
  970. package/dist/runtime/session/index.js +5 -0
  971. package/dist/runtime/session/session-catalog.d.ts +4 -0
  972. package/dist/runtime/session/session-catalog.js +59 -0
  973. package/dist/runtime/session/session-locator.d.ts +26 -0
  974. package/dist/runtime/session/session-locator.js +91 -0
  975. package/dist/runtime/session/session-locator.test.d.ts +1 -0
  976. package/dist/runtime/session/session-locator.test.js +59 -0
  977. package/dist/runtime/session/session-metadata-store.d.ts +8 -0
  978. package/dist/runtime/session/session-metadata-store.js +167 -0
  979. package/dist/runtime/session/session-paths.d.ts +9 -0
  980. package/dist/runtime/session/session-paths.js +27 -0
  981. package/dist/runtime/session/session-persistence.d.ts +16 -0
  982. package/dist/runtime/session/session-persistence.js +16 -0
  983. package/dist/runtime/session/session-persistence.test.d.ts +1 -0
  984. package/dist/runtime/session/session-persistence.test.js +237 -0
  985. package/dist/runtime/session/session-resume.d.ts +4 -0
  986. package/dist/runtime/session/session-resume.js +60 -0
  987. package/dist/runtime/session/session-schema.d.ts +10 -0
  988. package/dist/runtime/session/session-schema.js +35 -0
  989. package/dist/runtime/session/session-state.d.ts +96 -0
  990. package/dist/runtime/session/session-state.js +180 -0
  991. package/dist/runtime/session/session-summary.d.ts +5 -0
  992. package/dist/runtime/session/session-summary.js +67 -0
  993. package/dist/runtime/session/session-transcript-store.d.ts +13 -0
  994. package/dist/runtime/session/session-transcript-store.js +109 -0
  995. package/dist/runtime/session/session-types.d.ts +77 -0
  996. package/dist/runtime/session/session-types.js +1 -0
  997. package/dist/runtime/session/session-write-queue.d.ts +2 -0
  998. package/dist/runtime/session/session-write-queue.js +48 -0
  999. package/dist/runtime/tasks/task-types.d.ts +166 -0
  1000. package/dist/runtime/tasks/task-types.js +64 -0
  1001. package/dist/server/search-svc.d.ts +1 -0
  1002. package/dist/server/search-svc.js +113 -0
  1003. package/dist/skills/index.d.ts +6 -0
  1004. package/dist/skills/index.js +5 -0
  1005. package/dist/skills/mcp/index.d.ts +1 -0
  1006. package/dist/skills/mcp/index.js +3 -0
  1007. package/dist/skills/mcp/mcp-manager.d.ts +75 -0
  1008. package/dist/skills/mcp/mcp-manager.js +358 -0
  1009. package/dist/skills/mcp/mcp-tool-metadata.d.ts +18 -0
  1010. package/dist/skills/mcp/mcp-tool-metadata.js +48 -0
  1011. package/dist/skills/memory/categories.d.ts +1 -0
  1012. package/dist/skills/memory/categories.js +1 -0
  1013. package/dist/skills/memory/find-relevant-memories.d.ts +1 -0
  1014. package/dist/skills/memory/find-relevant-memories.js +1 -0
  1015. package/dist/skills/memory/implicit-extraction.d.ts +1 -0
  1016. package/dist/skills/memory/implicit-extraction.js +1 -0
  1017. package/dist/skills/memory/local-embedding.d.ts +80 -0
  1018. package/dist/skills/memory/local-embedding.js +210 -0
  1019. package/dist/skills/memory/local-memory-provider.d.ts +257 -0
  1020. package/dist/skills/memory/local-memory-provider.js +486 -0
  1021. package/dist/skills/memory/local-store-records.d.ts +184 -0
  1022. package/dist/skills/memory/local-store-records.js +1 -0
  1023. package/dist/skills/memory/local-store.d.ts +479 -0
  1024. package/dist/skills/memory/local-store.js +1022 -0
  1025. package/dist/skills/memory/memdir.d.ts +93 -0
  1026. package/dist/skills/memory/memdir.js +530 -0
  1027. package/dist/skills/memory/memory-attachment-store.d.ts +62 -0
  1028. package/dist/skills/memory/memory-attachment-store.js +0 -0
  1029. package/dist/skills/memory/memory-consolidation.d.ts +43 -0
  1030. package/dist/skills/memory/memory-consolidation.js +462 -0
  1031. package/dist/skills/memory/memory-db-path.d.ts +13 -0
  1032. package/dist/skills/memory/memory-db-path.js +27 -0
  1033. package/dist/skills/memory/memory-embedding-config.d.ts +31 -0
  1034. package/dist/skills/memory/memory-embedding-config.js +66 -0
  1035. package/dist/skills/memory/memory-provider-factory.d.ts +33 -0
  1036. package/dist/skills/memory/memory-provider-factory.js +79 -0
  1037. package/dist/skills/memory/memory-tool.d.ts +85 -0
  1038. package/dist/skills/memory/memory-tool.js +326 -0
  1039. package/dist/skills/memory/memory-vector-utils.d.ts +2 -0
  1040. package/dist/skills/memory/memory-vector-utils.js +19 -0
  1041. package/dist/skills/memory/recall-category-filter.d.ts +1 -0
  1042. package/dist/skills/memory/recall-category-filter.js +1 -0
  1043. package/dist/skills/memory/sqlite-memory-mappers.d.ts +6 -0
  1044. package/dist/skills/memory/sqlite-memory-mappers.js +104 -0
  1045. package/dist/skills/memory/sqlite-memory-schema.d.ts +3 -0
  1046. package/dist/skills/memory/sqlite-memory-schema.js +152 -0
  1047. package/dist/skills/permissions/bash-classifier.d.ts +30 -0
  1048. package/dist/skills/permissions/bash-classifier.js +174 -0
  1049. package/dist/skills/permissions/classifier-cache.d.ts +51 -0
  1050. package/dist/skills/permissions/classifier-cache.js +103 -0
  1051. package/dist/skills/permissions/community-sandbox-policy.d.ts +3 -0
  1052. package/dist/skills/permissions/community-sandbox-policy.js +233 -0
  1053. package/dist/skills/permissions/community-sandbox-red-team-cli.d.ts +7 -0
  1054. package/dist/skills/permissions/community-sandbox-red-team-cli.js +43 -0
  1055. package/dist/skills/permissions/community-sandbox-red-team.d.ts +32 -0
  1056. package/dist/skills/permissions/community-sandbox-red-team.js +221 -0
  1057. package/dist/skills/permissions/denial-audit-log.d.ts +52 -0
  1058. package/dist/skills/permissions/denial-audit-log.js +80 -0
  1059. package/dist/skills/permissions/denial-tracking.d.ts +42 -0
  1060. package/dist/skills/permissions/denial-tracking.js +60 -0
  1061. package/dist/skills/permissions/group-security-policy.d.ts +15 -0
  1062. package/dist/skills/permissions/group-security-policy.js +60 -0
  1063. package/dist/skills/permissions/hook-runner.d.ts +120 -0
  1064. package/dist/skills/permissions/hook-runner.js +545 -0
  1065. package/dist/skills/permissions/index.d.ts +13 -0
  1066. package/dist/skills/permissions/index.js +8 -0
  1067. package/dist/skills/permissions/operation-classifier.d.ts +43 -0
  1068. package/dist/skills/permissions/operation-classifier.js +251 -0
  1069. package/dist/skills/permissions/permission-classifier.d.ts +41 -0
  1070. package/dist/skills/permissions/permission-classifier.js +186 -0
  1071. package/dist/skills/permissions/rule-engine.d.ts +49 -0
  1072. package/dist/skills/permissions/rule-engine.js +285 -0
  1073. package/dist/skills/permissions/settings-watcher.d.ts +19 -0
  1074. package/dist/skills/permissions/settings-watcher.js +121 -0
  1075. package/dist/skills/permissions/types.d.ts +2 -0
  1076. package/dist/skills/permissions/types.js +1 -0
  1077. package/dist/skills/plugins/index.d.ts +2 -0
  1078. package/dist/skills/plugins/index.js +3 -0
  1079. package/dist/skills/plugins/plugin-api.d.ts +38 -0
  1080. package/dist/skills/plugins/plugin-api.js +18 -0
  1081. package/dist/skills/plugins/plugin-loader.d.ts +57 -0
  1082. package/dist/skills/plugins/plugin-loader.js +254 -0
  1083. package/dist/skills/plugins/plugin-marketplace.d.ts +61 -0
  1084. package/dist/skills/plugins/plugin-marketplace.js +229 -0
  1085. package/dist/skills/portable-tool.d.ts +165 -0
  1086. package/dist/skills/portable-tool.js +34 -0
  1087. package/dist/skills/skill-system/skill-frontmatter.d.ts +19 -0
  1088. package/dist/skills/skill-system/skill-frontmatter.js +344 -0
  1089. package/dist/skills/skill-system/skill-guard.d.ts +23 -0
  1090. package/dist/skills/skill-system/skill-guard.js +229 -0
  1091. package/dist/skills/skill-system/skill-lifecycle.d.ts +93 -0
  1092. package/dist/skills/skill-system/skill-lifecycle.js +236 -0
  1093. package/dist/skills/skill-system/skill-source.d.ts +38 -0
  1094. package/dist/skills/skill-system/skill-source.js +75 -0
  1095. package/dist/skills/skill-system/skill-types.d.ts +140 -0
  1096. package/dist/skills/skill-system/skill-types.js +6 -0
  1097. package/dist/skills/skill-system/skill-validation.d.ts +29 -0
  1098. package/dist/skills/skill-system/skill-validation.js +154 -0
  1099. package/dist/skills/tool-access.d.ts +30 -0
  1100. package/dist/skills/tool-access.js +58 -0
  1101. package/dist/skills/tools/agent-tool.d.ts +102 -0
  1102. package/dist/skills/tools/agent-tool.js +159 -0
  1103. package/dist/skills/tools/ask-user-tool.d.ts +80 -0
  1104. package/dist/skills/tools/ask-user-tool.js +121 -0
  1105. package/dist/skills/tools/brief-tool.d.ts +74 -0
  1106. package/dist/skills/tools/brief-tool.js +95 -0
  1107. package/dist/skills/tools/browser-tool.d.ts +114 -0
  1108. package/dist/skills/tools/browser-tool.js +160 -0
  1109. package/dist/skills/tools/checkpoint-tool.d.ts +66 -0
  1110. package/dist/skills/tools/checkpoint-tool.js +102 -0
  1111. package/dist/skills/tools/config-tool.d.ts +61 -0
  1112. package/dist/skills/tools/config-tool.js +123 -0
  1113. package/dist/skills/tools/cron-tool.d.ts +96 -0
  1114. package/dist/skills/tools/cron-tool.js +165 -0
  1115. package/dist/skills/tools/edit-tool.d.ts +43 -0
  1116. package/dist/skills/tools/edit-tool.js +72 -0
  1117. package/dist/skills/tools/exec-tool.d.ts +117 -0
  1118. package/dist/skills/tools/exec-tool.js +354 -0
  1119. package/dist/skills/tools/file-management-tool.d.ts +90 -0
  1120. package/dist/skills/tools/file-management-tool.js +166 -0
  1121. package/dist/skills/tools/image-generate-tool.d.ts +74 -0
  1122. package/dist/skills/tools/image-generate-tool.js +91 -0
  1123. package/dist/skills/tools/instructions-tool.d.ts +65 -0
  1124. package/dist/skills/tools/instructions-tool.js +209 -0
  1125. package/dist/skills/tools/lsp-tool.d.ts +153 -0
  1126. package/dist/skills/tools/lsp-tool.js +230 -0
  1127. package/dist/skills/tools/media-cancel-tool.d.ts +30 -0
  1128. package/dist/skills/tools/media-cancel-tool.js +46 -0
  1129. package/dist/skills/tools/monitor-tool.d.ts +113 -0
  1130. package/dist/skills/tools/monitor-tool.js +129 -0
  1131. package/dist/skills/tools/music-generate-tool.d.ts +80 -0
  1132. package/dist/skills/tools/music-generate-tool.js +98 -0
  1133. package/dist/skills/tools/notebook-edit-tool.d.ts +15 -0
  1134. package/dist/skills/tools/notebook-edit-tool.js +206 -0
  1135. package/dist/skills/tools/patch-tool.d.ts +52 -0
  1136. package/dist/skills/tools/patch-tool.js +556 -0
  1137. package/dist/skills/tools/petdex-create-tool.d.ts +47 -0
  1138. package/dist/skills/tools/petdex-create-tool.js +95 -0
  1139. package/dist/skills/tools/plan-mode-tool.d.ts +98 -0
  1140. package/dist/skills/tools/plan-mode-tool.js +164 -0
  1141. package/dist/skills/tools/read-tool.d.ts +51 -0
  1142. package/dist/skills/tools/read-tool.js +88 -0
  1143. package/dist/skills/tools/search-tool.d.ts +112 -0
  1144. package/dist/skills/tools/search-tool.js +226 -0
  1145. package/dist/skills/tools/shell/bash-provider.d.ts +26 -0
  1146. package/dist/skills/tools/shell/bash-provider.js +125 -0
  1147. package/dist/skills/tools/shell/command-classification.d.ts +44 -0
  1148. package/dist/skills/tools/shell/command-classification.js +119 -0
  1149. package/dist/skills/tools/shell/command-semantics.d.ts +14 -0
  1150. package/dist/skills/tools/shell/command-semantics.js +87 -0
  1151. package/dist/skills/tools/shell/destructive-command-warning.d.ts +10 -0
  1152. package/dist/skills/tools/shell/destructive-command-warning.js +80 -0
  1153. package/dist/skills/tools/shell/exec-permissions.d.ts +52 -0
  1154. package/dist/skills/tools/shell/exec-permissions.js +277 -0
  1155. package/dist/skills/tools/shell/index.d.ts +18 -0
  1156. package/dist/skills/tools/shell/index.js +18 -0
  1157. package/dist/skills/tools/shell/powershell-provider.d.ts +15 -0
  1158. package/dist/skills/tools/shell/powershell-provider.js +80 -0
  1159. package/dist/skills/tools/shell/sandbox/helper-resolver.d.ts +7 -0
  1160. package/dist/skills/tools/shell/sandbox/helper-resolver.js +20 -0
  1161. package/dist/skills/tools/shell/sandbox/landlock-argv.d.ts +6 -0
  1162. package/dist/skills/tools/shell/sandbox/landlock-argv.js +13 -0
  1163. package/dist/skills/tools/shell/sandbox/platform.d.ts +3 -0
  1164. package/dist/skills/tools/shell/sandbox/platform.js +13 -0
  1165. package/dist/skills/tools/shell/sandbox/sandbox-launcher.d.ts +15 -0
  1166. package/dist/skills/tools/shell/sandbox/sandbox-launcher.js +59 -0
  1167. package/dist/skills/tools/shell/sandbox/sandbox-scope.d.ts +6 -0
  1168. package/dist/skills/tools/shell/sandbox/sandbox-scope.js +17 -0
  1169. package/dist/skills/tools/shell/sandbox/sandbox-types.d.ts +47 -0
  1170. package/dist/skills/tools/shell/sandbox/sandbox-types.js +1 -0
  1171. package/dist/skills/tools/shell/sandbox/seatbelt-profile.d.ts +6 -0
  1172. package/dist/skills/tools/shell/sandbox/seatbelt-profile.js +28 -0
  1173. package/dist/skills/tools/shell/shell-command.d.ts +54 -0
  1174. package/dist/skills/tools/shell/shell-command.js +347 -0
  1175. package/dist/skills/tools/shell/shell-exec.d.ts +38 -0
  1176. package/dist/skills/tools/shell/shell-exec.js +202 -0
  1177. package/dist/skills/tools/shell/shell-provider.d.ts +85 -0
  1178. package/dist/skills/tools/shell/shell-provider.js +38 -0
  1179. package/dist/skills/tools/shell/subprocess-env.d.ts +6 -0
  1180. package/dist/skills/tools/shell/subprocess-env.js +87 -0
  1181. package/dist/skills/tools/shell/task-output.d.ts +44 -0
  1182. package/dist/skills/tools/shell/task-output.js +137 -0
  1183. package/dist/skills/tools/skill-tool.d.ts +106 -0
  1184. package/dist/skills/tools/skill-tool.js +265 -0
  1185. package/dist/skills/tools/sleep-tool.d.ts +49 -0
  1186. package/dist/skills/tools/sleep-tool.js +81 -0
  1187. package/dist/skills/tools/structured-output-tool.d.ts +116 -0
  1188. package/dist/skills/tools/structured-output-tool.js +176 -0
  1189. package/dist/skills/tools/stt-tool.d.ts +33 -0
  1190. package/dist/skills/tools/stt-tool.js +58 -0
  1191. package/dist/skills/tools/task-tool.d.ts +125 -0
  1192. package/dist/skills/tools/task-tool.js +390 -0
  1193. package/dist/skills/tools/team-tool.d.ts +156 -0
  1194. package/dist/skills/tools/team-tool.js +173 -0
  1195. package/dist/skills/tools/three-d-generate-tool.d.ts +46 -0
  1196. package/dist/skills/tools/three-d-generate-tool.js +66 -0
  1197. package/dist/skills/tools/tool-search-tool.d.ts +62 -0
  1198. package/dist/skills/tools/tool-search-tool.js +187 -0
  1199. package/dist/skills/tools/tts-tool.d.ts +50 -0
  1200. package/dist/skills/tools/tts-tool.js +58 -0
  1201. package/dist/skills/tools/video-edit-tool.d.ts +72 -0
  1202. package/dist/skills/tools/video-edit-tool.js +84 -0
  1203. package/dist/skills/tools/video-generate-tool.d.ts +162 -0
  1204. package/dist/skills/tools/video-generate-tool.js +178 -0
  1205. package/dist/skills/tools/video-merge-tool.d.ts +105 -0
  1206. package/dist/skills/tools/video-merge-tool.js +95 -0
  1207. package/dist/skills/tools/video-upscale-tool.d.ts +45 -0
  1208. package/dist/skills/tools/video-upscale-tool.js +57 -0
  1209. package/dist/skills/tools/voice-clone-tool.d.ts +40 -0
  1210. package/dist/skills/tools/voice-clone-tool.js +58 -0
  1211. package/dist/skills/tools/web-answer-tool.d.ts +27 -0
  1212. package/dist/skills/tools/web-answer-tool.js +124 -0
  1213. package/dist/skills/tools/web-fetch-tool.d.ts +80 -0
  1214. package/dist/skills/tools/web-fetch-tool.js +95 -0
  1215. package/dist/skills/tools/web-research-tool.d.ts +48 -0
  1216. package/dist/skills/tools/web-research-tool.js +254 -0
  1217. package/dist/skills/tools/web-search-tool.d.ts +46 -0
  1218. package/dist/skills/tools/web-search-tool.js +95 -0
  1219. package/dist/skills/tools/workflow-tool.d.ts +45 -0
  1220. package/dist/skills/tools/workflow-tool.js +113 -0
  1221. package/dist/skills/tools/worktree-tool.d.ts +69 -0
  1222. package/dist/skills/tools/worktree-tool.js +147 -0
  1223. package/dist/skills/tools/write-tool.d.ts +45 -0
  1224. package/dist/skills/tools/write-tool.js +83 -0
  1225. package/dist/skills/tools.d.ts +45 -0
  1226. package/dist/skills/tools.js +165 -0
  1227. package/dist/skills/web-search/brave-source.d.ts +2 -0
  1228. package/dist/skills/web-search/brave-source.js +36 -0
  1229. package/dist/skills/web-search/crawl4ai-extractor.d.ts +15 -0
  1230. package/dist/skills/web-search/crawl4ai-extractor.js +92 -0
  1231. package/dist/skills/web-search/embedding-rerank.d.ts +13 -0
  1232. package/dist/skills/web-search/embedding-rerank.js +44 -0
  1233. package/dist/skills/web-search/exa-source.d.ts +2 -0
  1234. package/dist/skills/web-search/exa-source.js +43 -0
  1235. package/dist/skills/web-search/multi-source-backend.d.ts +23 -0
  1236. package/dist/skills/web-search/multi-source-backend.js +99 -0
  1237. package/dist/skills/web-search/redis-source-cache.d.ts +6 -0
  1238. package/dist/skills/web-search/redis-source-cache.js +44 -0
  1239. package/dist/skills/web-search/search-svc-source.d.ts +4 -0
  1240. package/dist/skills/web-search/search-svc-source.js +64 -0
  1241. package/dist/skills/web-search/searxng-source.d.ts +2 -0
  1242. package/dist/skills/web-search/searxng-source.js +91 -0
  1243. package/dist/skills/web-search/serper-source.d.ts +2 -0
  1244. package/dist/skills/web-search/serper-source.js +33 -0
  1245. package/dist/skills/web-search/source-factory.d.ts +5 -0
  1246. package/dist/skills/web-search/source-factory.js +15 -0
  1247. package/dist/skills/web-search/stability.d.ts +26 -0
  1248. package/dist/skills/web-search/stability.js +57 -0
  1249. package/dist/transport/acp-event-emitter.d.ts +21 -0
  1250. package/dist/transport/acp-event-emitter.js +142 -0
  1251. package/dist/transport/acp-event-emitter.test.d.ts +1 -0
  1252. package/dist/transport/acp-event-emitter.test.js +87 -0
  1253. package/dist/transport/acp-server.d.ts +169 -0
  1254. package/dist/transport/acp-server.js +480 -0
  1255. package/dist/transport/acp-server.test.d.ts +1 -0
  1256. package/dist/transport/acp-server.test.js +230 -0
  1257. package/dist/transport/index.d.ts +7 -0
  1258. package/dist/transport/index.js +5 -0
  1259. package/dist/transport/io-transport.d.ts +19 -0
  1260. package/dist/transport/io-transport.js +8 -0
  1261. package/package.json +2 -2
@@ -0,0 +1,1022 @@
1
+ /**
2
+ * Local Memory Store - SQLite-backed persistence for qmemory.
3
+ *
4
+ * Ported from Python qmemory's memory_store.py + db.py.
5
+ * Uses better-sqlite3 for synchronous, fast, single-file persistence.
6
+ *
7
+ * Storage location:
8
+ * ~/.qlogicagent/profiles/<owner_user_id>/memory/memories.db
9
+ *
10
+ * Schema:
11
+ * - memories: core fact storage with optional embedding blob
12
+ * - memories_fts: FTS5 full-text index for keyword search
13
+ * - profiles: user profile KV (future)
14
+ */
15
+ import { randomUUID } from "node:crypto";
16
+ import { dotProduct, normalizeVector } from "./memory-vector-utils.js";
17
+ import { initializeMemorySchema } from "./sqlite-memory-schema.js";
18
+ import { parseJsonArray, rowToClaimRecord, rowToConflictRecord, rowToRecord } from "./sqlite-memory-mappers.js";
19
+ export { resolveMemoryDbPath } from "./memory-db-path.js";
20
+ // Schema
21
+ // LocalMemoryStore
22
+ export class LocalMemoryStore {
23
+ db;
24
+ constructor(db) {
25
+ this.db = db;
26
+ this.initSchema();
27
+ }
28
+ initSchema() {
29
+ initializeMemorySchema(this.db);
30
+ }
31
+ /**
32
+ * Insert a new memory record. Returns the generated ID.
33
+ */
34
+ insert(input) {
35
+ const id = `mem_${randomUUID().replace(/-/g, "").slice(0, 16)}`;
36
+ const now = Date.now();
37
+ const tags = JSON.stringify(input.tags ?? []);
38
+ const embedding = input.embedding
39
+ ? Buffer.from(input.embedding.buffer, input.embedding.byteOffset, input.embedding.byteLength)
40
+ : null;
41
+ this.db.prepare(`
42
+ INSERT INTO memories (id, text, user_id, category, importance, confidence, source, session_id, event_date, tags, embedding, created_at, updated_at, last_accessed_at)
43
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
44
+ `).run(id, input.text, input.userId, input.category ?? "general", input.importance ?? 0.5, input.confidence ?? 1.0, input.source ?? "agent", input.sessionId ?? "", input.eventDate ?? "", tags, embedding, now, now, now);
45
+ return id;
46
+ }
47
+ /**
48
+ * Full-text search using FTS5. Returns ranked results.
49
+ */
50
+ searchFts(query, userId, limit = 10) {
51
+ const escaped = toFtsPhraseQuery(query);
52
+ if (!escaped)
53
+ return [];
54
+ const rows = this.db.prepare(`
55
+ SELECT m.id, m.text, m.category, m.importance, m.tags, m.created_at,
56
+ m.access_count, rank * -1.0 AS fts_score
57
+ FROM memories_fts fts
58
+ JOIN memories m ON m.id = fts.id
59
+ WHERE memories_fts MATCH ? AND m.user_id = ? AND m.is_archived = 0
60
+ ORDER BY rank
61
+ LIMIT ?
62
+ `).all(escaped, userId, limit);
63
+ return rows.map((r) => ({
64
+ id: r.id,
65
+ text: r.text,
66
+ score: Math.min(1.0, r.fts_score * 0.1 + r.importance * 0.5),
67
+ category: r.category,
68
+ importance: r.importance,
69
+ metadata: {
70
+ tags: JSON.parse(r.tags || "[]"),
71
+ createdAt: r.created_at,
72
+ accessCount: r.access_count,
73
+ },
74
+ }));
75
+ }
76
+ /**
77
+ * Vector similarity search using pre-computed embeddings.
78
+ * Performs brute-force cosine similarity (efficient for <100k records per user).
79
+ */
80
+ searchVector(queryEmbedding, userId, limit = 10, minScore = 0.3) {
81
+ const rows = this.db.prepare(`
82
+ SELECT id, text, category, importance, tags, created_at, access_count, embedding
83
+ FROM memories
84
+ WHERE user_id = ? AND is_archived = 0 AND embedding IS NOT NULL
85
+ `).all(userId);
86
+ const results = [];
87
+ const queryNorm = normalizeVector(queryEmbedding);
88
+ for (const row of rows) {
89
+ const docEmbedding = new Float32Array(row.embedding.buffer, row.embedding.byteOffset, row.embedding.byteLength / 4);
90
+ const docNorm = normalizeVector(docEmbedding);
91
+ const similarity = dotProduct(queryNorm, docNorm);
92
+ if (similarity >= minScore) {
93
+ results.push({
94
+ id: row.id,
95
+ text: row.text,
96
+ score: similarity * 0.7 + row.importance * 0.3, // Blend similarity with importance
97
+ category: row.category,
98
+ importance: row.importance,
99
+ metadata: {
100
+ tags: JSON.parse(row.tags || "[]"),
101
+ createdAt: row.created_at,
102
+ accessCount: row.access_count,
103
+ cosineSimilarity: similarity,
104
+ },
105
+ });
106
+ }
107
+ }
108
+ results.sort((a, b) => b.score - a.score);
109
+ return results.slice(0, limit);
110
+ }
111
+ /**
112
+ * Hybrid search: FTS5 + vector similarity, de-duplicated and merged.
113
+ */
114
+ searchHybrid(query, queryEmbedding, userId, limit = 10) {
115
+ const ftsResults = this.searchFts(query, userId, limit * 2);
116
+ if (!queryEmbedding)
117
+ return ftsResults.slice(0, limit);
118
+ const vectorResults = this.searchVector(queryEmbedding, userId, limit * 2);
119
+ // Merge with deduplication. A row found by BOTH signals (lexically AND
120
+ // semantically relevant) gets a combined score so it ranks above a row found
121
+ // by only one. Rows found by FTS only (e.g. no embedding) keep their FTS
122
+ // score and compete fairly — a strong lexical match still outranks a weak
123
+ // vector match, so non-embedded memories remain searchable, not buried.
124
+ const merged = new Map();
125
+ for (const hit of ftsResults) {
126
+ merged.set(hit.id, hit);
127
+ }
128
+ for (const hit of vectorResults) {
129
+ const existing = merged.get(hit.id);
130
+ if (!existing) {
131
+ merged.set(hit.id, hit);
132
+ }
133
+ else {
134
+ // Dual-signal: take the stronger base score plus a fraction of the
135
+ // weaker one (capped at 1.0). Keep the richer metadata (vector carries
136
+ // cosineSimilarity).
137
+ const base = Math.max(existing.score, hit.score);
138
+ const other = Math.min(existing.score, hit.score);
139
+ const combined = Math.min(1.0, base + other * 0.25);
140
+ const richer = hit.metadata?.cosineSimilarity != null ? hit : existing;
141
+ merged.set(hit.id, { ...richer, score: combined });
142
+ }
143
+ }
144
+ return Array.from(merged.values())
145
+ .sort((a, b) => b.score - a.score)
146
+ .slice(0, limit);
147
+ }
148
+ /**
149
+ * Get all memories for a user (paginated).
150
+ */
151
+ listByUser(userId, page = 1, pageSize = 50, activeOnly = true) {
152
+ const offset = (page - 1) * pageSize;
153
+ const archivedFilter = activeOnly ? "AND is_archived = 0" : "";
154
+ const rows = this.db.prepare(`
155
+ SELECT * FROM memories
156
+ WHERE user_id = ? ${archivedFilter}
157
+ ORDER BY created_at DESC
158
+ LIMIT ? OFFSET ?
159
+ `).all(userId, pageSize, offset);
160
+ return rows.map(rowToRecord);
161
+ }
162
+ /**
163
+ * Return a windowed atlas payload for large-history visualization.
164
+ *
165
+ * `records` are only the interactive window. `buckets` and `clusters` summarize
166
+ * the whole history so the UI can render distant history as star dust /
167
+ * aggregate galaxies without loading every memory as an interactive object.
168
+ */
169
+ getAtlas(userId, options) {
170
+ const activeOnly = options?.activeOnly ?? true;
171
+ const archivedFilter = activeOnly ? "AND is_archived = 0" : "";
172
+ const total = this.db.prepare(`
173
+ SELECT COUNT(*) AS count, MIN(created_at) AS startAt, MAX(created_at) AS endAt
174
+ FROM memories
175
+ WHERE user_id = ? ${archivedFilter}
176
+ `).get(userId);
177
+ const totalCount = Number(total?.count ?? 0);
178
+ if (totalCount === 0 || total.startAt == null || total.endAt == null) {
179
+ return {
180
+ totalCount: 0,
181
+ records: [],
182
+ buckets: [],
183
+ clusters: [],
184
+ windowCursor: null,
185
+ timeRange: null,
186
+ };
187
+ }
188
+ const startAt = Number(total.startAt);
189
+ const endAt = Math.max(startAt, Number(total.endAt));
190
+ const pageSize = Math.max(1, Math.min(800, Math.floor(options?.pageSize ?? 360)));
191
+ const requestedCenter = Number.isFinite(options?.windowCenterAt)
192
+ ? Number(options?.windowCenterAt)
193
+ : endAt;
194
+ const centerAt = Math.max(startAt, Math.min(endAt, requestedCenter));
195
+ const span = Math.max(1, endAt - startAt);
196
+ const defaultWindowSpan = Math.max(86_400_000, Math.ceil(span / 8));
197
+ let windowStartAt = Number.isFinite(options?.windowStartAt) ? Number(options?.windowStartAt) : centerAt - defaultWindowSpan / 2;
198
+ let windowEndAt = Number.isFinite(options?.windowEndAt) ? Number(options?.windowEndAt) : centerAt + defaultWindowSpan / 2;
199
+ if (windowEndAt < windowStartAt)
200
+ [windowStartAt, windowEndAt] = [windowEndAt, windowStartAt];
201
+ windowStartAt = Math.max(startAt, Math.floor(windowStartAt));
202
+ windowEndAt = Math.min(endAt, Math.ceil(windowEndAt));
203
+ if (windowEndAt <= windowStartAt) {
204
+ windowStartAt = Math.max(startAt, centerAt - defaultWindowSpan / 2);
205
+ windowEndAt = Math.min(endAt, centerAt + defaultWindowSpan / 2);
206
+ }
207
+ const records = this.db.prepare(`
208
+ SELECT id, text, user_id, category, importance, confidence, source, session_id, event_date,
209
+ tags, NULL AS embedding, created_at, updated_at, access_count, last_accessed_at, is_archived
210
+ FROM memories
211
+ WHERE user_id = ? ${archivedFilter}
212
+ AND created_at >= ?
213
+ AND created_at <= ?
214
+ ORDER BY created_at ASC, importance DESC
215
+ LIMIT ?
216
+ `).all(userId, windowStartAt, windowEndAt, pageSize);
217
+ return {
218
+ totalCount,
219
+ records: records.map(rowToRecord),
220
+ buckets: this.getAtlasBuckets(userId, startAt, endAt, options?.bucketCount ?? 96, activeOnly),
221
+ clusters: this.getAtlasClusters(userId, options?.clusterLimit ?? 48, activeOnly),
222
+ windowCursor: {
223
+ startAt: Math.floor(windowStartAt),
224
+ endAt: Math.ceil(windowEndAt),
225
+ centerAt: Math.floor(centerAt),
226
+ pageSize,
227
+ hasBefore: windowStartAt > startAt,
228
+ hasAfter: windowEndAt < endAt,
229
+ },
230
+ timeRange: { startAt, endAt },
231
+ };
232
+ }
233
+ getAtlasBuckets(userId, startAt, endAt, requestedBucketCount, activeOnly) {
234
+ const bucketCount = Math.max(12, Math.min(180, Math.floor(requestedBucketCount || 96)));
235
+ const span = Math.max(1, endAt - startAt + 1);
236
+ const step = Math.max(1, Math.ceil(span / bucketCount));
237
+ const archivedFilter = activeOnly ? "AND is_archived = 0" : "";
238
+ const aggregates = this.db.prepare(`
239
+ SELECT CAST((created_at - ?) / ? AS INTEGER) AS bucket,
240
+ COUNT(*) AS count,
241
+ AVG(importance) AS avgImportance,
242
+ AVG(confidence) AS avgConfidence,
243
+ MIN(created_at) AS minCreatedAt,
244
+ MAX(created_at) AS maxCreatedAt
245
+ FROM memories
246
+ WHERE user_id = ? ${archivedFilter}
247
+ GROUP BY bucket
248
+ ORDER BY bucket ASC
249
+ `).all(startAt, step, userId);
250
+ const categories = this.db.prepare(`
251
+ SELECT CAST((created_at - ?) / ? AS INTEGER) AS bucket,
252
+ category,
253
+ COUNT(*) AS count
254
+ FROM memories
255
+ WHERE user_id = ? ${archivedFilter}
256
+ GROUP BY bucket, category
257
+ ORDER BY bucket ASC, count DESC
258
+ `).all(startAt, step, userId);
259
+ const topCategory = new Map();
260
+ for (const row of categories) {
261
+ const bucket = Number(row.bucket);
262
+ if (!topCategory.has(bucket))
263
+ topCategory.set(bucket, String(row.category || "general"));
264
+ }
265
+ return aggregates.map((row) => {
266
+ const bucket = Number(row.bucket);
267
+ const bucketStart = startAt + bucket * step;
268
+ return {
269
+ id: `bucket:${bucket}`,
270
+ startAt: Number(row.minCreatedAt ?? bucketStart),
271
+ endAt: Number(row.maxCreatedAt ?? Math.min(endAt, bucketStart + step - 1)),
272
+ count: Number(row.count ?? 0),
273
+ avgImportance: Number(row.avgImportance ?? 0),
274
+ avgConfidence: Number(row.avgConfidence ?? 0),
275
+ topCategory: topCategory.get(bucket) ?? "general",
276
+ };
277
+ });
278
+ }
279
+ getAtlasClusters(userId, limit, activeOnly) {
280
+ const archivedFilter = activeOnly ? "AND is_archived = 0" : "";
281
+ const clusterLimit = Math.max(8, Math.min(120, Math.floor(limit || 48)));
282
+ const sourceRows = this.db.prepare(`
283
+ SELECT source AS label,
284
+ COUNT(*) AS count,
285
+ MIN(created_at) AS startAt,
286
+ MAX(created_at) AS endAt,
287
+ AVG(importance) AS avgImportance,
288
+ AVG(confidence) AS avgConfidence
289
+ FROM memories
290
+ WHERE user_id = ? ${archivedFilter} AND source != ''
291
+ GROUP BY source
292
+ HAVING count > 1
293
+ ORDER BY count DESC, avgImportance DESC
294
+ LIMIT ?
295
+ `).all(userId, clusterLimit);
296
+ const categoryRows = this.db.prepare(`
297
+ SELECT category AS label,
298
+ COUNT(*) AS count,
299
+ MIN(created_at) AS startAt,
300
+ MAX(created_at) AS endAt,
301
+ AVG(importance) AS avgImportance,
302
+ AVG(confidence) AS avgConfidence
303
+ FROM memories
304
+ WHERE user_id = ? ${archivedFilter}
305
+ GROUP BY category
306
+ ORDER BY count DESC, avgImportance DESC
307
+ LIMIT ?
308
+ `).all(userId, clusterLimit);
309
+ const clusters = [];
310
+ const pushRows = (kind, rows) => {
311
+ for (const row of rows) {
312
+ const label = String(row.label || "general");
313
+ clusters.push({
314
+ id: `${kind}:${label}`,
315
+ label,
316
+ kind,
317
+ count: Number(row.count ?? 0),
318
+ startAt: Number(row.startAt ?? 0),
319
+ endAt: Number(row.endAt ?? 0),
320
+ avgImportance: Number(row.avgImportance ?? 0),
321
+ avgConfidence: Number(row.avgConfidence ?? 0),
322
+ topCategory: kind === "category" ? label : "general",
323
+ });
324
+ }
325
+ };
326
+ pushRows("source", sourceRows);
327
+ pushRows("category", categoryRows);
328
+ const tagRows = this.db.prepare(`
329
+ SELECT tags, category, created_at, importance, confidence
330
+ FROM memories
331
+ WHERE user_id = ? ${archivedFilter} AND tags != '[]'
332
+ ORDER BY importance DESC, created_at DESC
333
+ LIMIT 50000
334
+ `).all(userId);
335
+ const byTag = new Map();
336
+ for (const row of tagRows) {
337
+ let tags = [];
338
+ try {
339
+ tags = JSON.parse(typeof row.tags === "string" ? row.tags : "[]");
340
+ }
341
+ catch {
342
+ tags = [];
343
+ }
344
+ for (const tag of tags) {
345
+ if (typeof tag !== "string" || tag.startsWith("related:"))
346
+ continue;
347
+ const value = tag.trim();
348
+ if (!value)
349
+ continue;
350
+ const existing = byTag.get(value) ?? {
351
+ count: 0,
352
+ startAt: Number(row.created_at ?? 0),
353
+ endAt: Number(row.created_at ?? 0),
354
+ importance: 0,
355
+ confidence: 0,
356
+ categories: new Map(),
357
+ };
358
+ existing.count += 1;
359
+ existing.startAt = Math.min(existing.startAt, Number(row.created_at ?? existing.startAt));
360
+ existing.endAt = Math.max(existing.endAt, Number(row.created_at ?? existing.endAt));
361
+ existing.importance += Number(row.importance ?? 0);
362
+ existing.confidence += Number(row.confidence ?? 0);
363
+ const category = String(row.category || "general");
364
+ existing.categories.set(category, (existing.categories.get(category) ?? 0) + 1);
365
+ byTag.set(value, existing);
366
+ }
367
+ }
368
+ for (const [label, value] of Array.from(byTag.entries())
369
+ .filter(([, item]) => item.count > 1)
370
+ .sort((a, b) => b[1].count - a[1].count || b[1].importance - a[1].importance)
371
+ .slice(0, clusterLimit)) {
372
+ let topCategory = "general";
373
+ let topCount = 0;
374
+ for (const [category, count] of value.categories) {
375
+ if (count > topCount) {
376
+ topCategory = category;
377
+ topCount = count;
378
+ }
379
+ }
380
+ clusters.push({
381
+ id: `tag:${label}`,
382
+ label,
383
+ kind: "tag",
384
+ count: value.count,
385
+ startAt: value.startAt,
386
+ endAt: value.endAt,
387
+ avgImportance: value.importance / value.count,
388
+ avgConfidence: value.confidence / value.count,
389
+ topCategory,
390
+ });
391
+ }
392
+ return clusters
393
+ .sort((a, b) => b.count - a.count || b.avgImportance - a.avgImportance)
394
+ .slice(0, clusterLimit);
395
+ }
396
+ /**
397
+ * Get a single memory by ID.
398
+ */
399
+ getById(id) {
400
+ const row = this.db.prepare("SELECT * FROM memories WHERE id = ?").get(id);
401
+ return row ? rowToRecord(row) : null;
402
+ }
403
+ /**
404
+ * Update memory text and bump updatedAt.
405
+ */
406
+ updateText(id, text, embedding) {
407
+ const now = Date.now();
408
+ const embBuf = embedding
409
+ ? Buffer.from(embedding.buffer, embedding.byteOffset, embedding.byteLength)
410
+ : undefined;
411
+ const result = embBuf
412
+ ? this.db.prepare("UPDATE memories SET text = ?, embedding = ?, updated_at = ? WHERE id = ?").run(text, embBuf, now, id)
413
+ : this.db.prepare("UPDATE memories SET text = ?, updated_at = ? WHERE id = ?").run(text, now, id);
414
+ return result.changes > 0;
415
+ }
416
+ /**
417
+ * Update editable memory fields and bump updatedAt.
418
+ */
419
+ update(id, input) {
420
+ const current = this.getById(id);
421
+ if (!current)
422
+ return false;
423
+ const now = Date.now();
424
+ const embedding = input.embedding === undefined
425
+ ? current.embedding
426
+ : input.embedding;
427
+ const embBuf = embedding
428
+ ? Buffer.from(embedding.buffer, embedding.byteOffset, embedding.byteLength)
429
+ : null;
430
+ const result = this.db.prepare(`
431
+ UPDATE memories
432
+ SET text = ?,
433
+ category = ?,
434
+ importance = ?,
435
+ source = ?,
436
+ event_date = ?,
437
+ tags = ?,
438
+ embedding = ?,
439
+ updated_at = ?
440
+ WHERE id = ?
441
+ `).run(input.text?.trim() || current.text, input.category || current.category, typeof input.importance === "number" && Number.isFinite(input.importance) ? input.importance : current.importance, input.source ?? current.source, input.eventDate ?? current.eventDate, JSON.stringify(input.tags ?? current.tags ?? []), embBuf, now, id);
442
+ return result.changes > 0;
443
+ }
444
+ /**
445
+ * Delete a memory by ID.
446
+ */
447
+ delete(id) {
448
+ const result = this.db.prepare("DELETE FROM memories WHERE id = ?").run(id);
449
+ return result.changes > 0;
450
+ }
451
+ /**
452
+ * Archive a memory (soft-delete: set is_archived=1).
453
+ * Used by dedup gate when a similar but newer memory supersedes an older one.
454
+ */
455
+ archive(id) {
456
+ const result = this.db.prepare("UPDATE memories SET is_archived = 1, updated_at = ? WHERE id = ? AND is_archived = 0").run(Date.now(), id);
457
+ return result.changes > 0;
458
+ }
459
+ // Multi-strategy decay
460
+ /**
461
+ * Temporal expiry: archive event/plan memories whose event_date has passed
462
+ * beyond a grace period (e.g., "meeting tomorrow" 3 days after it happened).
463
+ */
464
+ decayTemporalExpiry(userId, graceDays = 7) {
465
+ const now = Date.now();
466
+ const rows = this.db.prepare(`
467
+ SELECT id, event_date FROM memories
468
+ WHERE user_id = ? AND is_archived = 0 AND event_date != ''
469
+ AND category IN ('event', 'plan', 'reminder', 'general')
470
+ `).all(userId);
471
+ let archived = 0;
472
+ for (const row of rows) {
473
+ const eventMs = Date.parse(row.event_date);
474
+ if (isNaN(eventMs))
475
+ continue;
476
+ if (now - eventMs > graceDays * 86_400_000) {
477
+ this.db.prepare("UPDATE memories SET is_archived = 1, updated_at = ? WHERE id = ?").run(now, row.id);
478
+ archived++;
479
+ }
480
+ }
481
+ return archived;
482
+ }
483
+ /**
484
+ * Staleness decay: reduce importance of memories not accessed in a long time.
485
+ * Memories accessed recently retain their importance; stale ones degrade.
486
+ */
487
+ decayStaleness(userId, staleDays = 30, decayFactor = 0.85) {
488
+ const cutoff = Date.now() - staleDays * 86_400_000;
489
+ const now = Date.now();
490
+ const result = this.db.prepare(`
491
+ UPDATE memories
492
+ SET importance = importance * ?,
493
+ updated_at = ?
494
+ WHERE user_id = ? AND is_archived = 0
495
+ AND last_accessed_at < ? AND last_accessed_at > 0
496
+ AND importance > 0.1
497
+ `).run(decayFactor, now, userId, cutoff);
498
+ return result.changes;
499
+ }
500
+ /**
501
+ * Noise archival: archive low-importance memories that never got accessed.
502
+ * Memories written by the agent but never recalled are likely noise.
503
+ */
504
+ decayNoiseArchival(userId, minAgeDays = 14, maxImportance = 0.25) {
505
+ const cutoff = Date.now() - minAgeDays * 86_400_000;
506
+ const now = Date.now();
507
+ const result = this.db.prepare(`
508
+ UPDATE memories SET is_archived = 1, updated_at = ?
509
+ WHERE user_id = ? AND is_archived = 0
510
+ AND created_at < ?
511
+ AND access_count = 0
512
+ AND importance <= ?
513
+ `).run(now, userId, cutoff, maxImportance);
514
+ return result.changes;
515
+ }
516
+ /**
517
+ * Run all decay strategies. Returns total affected count.
518
+ */
519
+ runFullDecay(userId, options) {
520
+ const temporal = this.decayTemporalExpiry(userId, options?.temporalGraceDays ?? 7);
521
+ const stale = this.decayStaleness(userId, options?.staleDays ?? 30, options?.staleDecayFactor ?? 0.85);
522
+ const noise = this.decayNoiseArchival(userId, options?.noiseMinAgeDays ?? 14, options?.noiseMaxImportance ?? 0.25);
523
+ return { temporal, stale, noise, total: temporal + noise };
524
+ }
525
+ // Feedback mechanism
526
+ /**
527
+ * Apply feedback signal to a memory, adjusting importance accordingly.
528
+ *
529
+ * Signals:
530
+ * - "useful" boosts importance by +0.15 (capped at 1.0)
531
+ * - "irrelevant" reduces importance by -0.2
532
+ * - "outdated" archives immediately
533
+ * - "wrong" deletes immediately
534
+ */
535
+ applyFeedback(memoryId, signal) {
536
+ const now = Date.now();
537
+ switch (signal) {
538
+ case "useful": {
539
+ const result = this.db.prepare(`
540
+ UPDATE memories SET importance = MIN(1.0, importance + 0.15), updated_at = ?, access_count = access_count + 1 WHERE id = ? AND is_archived = 0
541
+ `).run(now, memoryId);
542
+ return result.changes > 0;
543
+ }
544
+ case "irrelevant": {
545
+ const result = this.db.prepare(`
546
+ UPDATE memories SET importance = MAX(0.0, importance - 0.2), updated_at = ? WHERE id = ? AND is_archived = 0
547
+ `).run(now, memoryId);
548
+ return result.changes > 0;
549
+ }
550
+ case "outdated": {
551
+ const result = this.db.prepare(`
552
+ UPDATE memories SET is_archived = 1, updated_at = ? WHERE id = ?
553
+ `).run(now, memoryId);
554
+ return result.changes > 0;
555
+ }
556
+ case "wrong": {
557
+ return this.delete(memoryId);
558
+ }
559
+ }
560
+ }
561
+ // User profile store
562
+ /**
563
+ * Get a profile value for a user.
564
+ */
565
+ getProfile(userId, key) {
566
+ this.ensureProfileTable();
567
+ const row = this.db.prepare("SELECT value FROM user_profiles WHERE user_id = ? AND key = ?").get(userId, key);
568
+ return row?.value ?? null;
569
+ }
570
+ /**
571
+ * Set a profile value (upsert).
572
+ */
573
+ setProfile(userId, key, value) {
574
+ this.ensureProfileTable();
575
+ this.db.prepare(`
576
+ INSERT INTO user_profiles (user_id, key, value, updated_at)
577
+ VALUES (?, ?, ?, ?)
578
+ ON CONFLICT(user_id, key) DO UPDATE SET value = excluded.value, updated_at = excluded.updated_at
579
+ `).run(userId, key, value, Date.now());
580
+ }
581
+ /**
582
+ * Get all profile entries for a user.
583
+ */
584
+ getAllProfiles(userId) {
585
+ this.ensureProfileTable();
586
+ const rows = this.db.prepare("SELECT key, value FROM user_profiles WHERE user_id = ?").all(userId);
587
+ const result = {};
588
+ for (const row of rows)
589
+ result[row.key] = row.value;
590
+ return result;
591
+ }
592
+ /**
593
+ * Delete a profile entry.
594
+ */
595
+ deleteProfile(userId, key) {
596
+ this.ensureProfileTable();
597
+ const result = this.db.prepare("DELETE FROM user_profiles WHERE user_id = ? AND key = ?").run(userId, key);
598
+ return result.changes > 0;
599
+ }
600
+ profileTableCreated = false;
601
+ ensureProfileTable() {
602
+ if (this.profileTableCreated)
603
+ return;
604
+ this.db.exec(`
605
+ CREATE TABLE IF NOT EXISTS user_profiles (
606
+ user_id TEXT NOT NULL,
607
+ key TEXT NOT NULL,
608
+ value TEXT NOT NULL,
609
+ updated_at INTEGER NOT NULL,
610
+ PRIMARY KEY (user_id, key)
611
+ );
612
+ `);
613
+ this.profileTableCreated = true;
614
+ }
615
+ // Temporal synthesis
616
+ /**
617
+ * Retrieve memories within a time range, grouped by day.
618
+ * Used for "what happened last week" type queries and dream synthesis.
619
+ */
620
+ getTemporalSlice(userId, startMs, endMs, options) {
621
+ const categoryFilter = options?.category ? "AND category = ?" : "";
622
+ const params = [userId, startMs, endMs];
623
+ if (options?.category)
624
+ params.push(options.category);
625
+ params.push(options?.limit ?? 200);
626
+ const rows = this.db.prepare(`
627
+ SELECT id, text, category, importance, created_at FROM memories
628
+ WHERE user_id = ? AND is_archived = 0
629
+ AND created_at >= ? AND created_at <= ?
630
+ ${categoryFilter}
631
+ ORDER BY created_at ASC
632
+ LIMIT ?
633
+ `).all(...params);
634
+ // Group by date
635
+ const grouped = new Map();
636
+ for (const row of rows) {
637
+ const date = new Date(row.created_at).toISOString().slice(0, 10);
638
+ if (!grouped.has(date))
639
+ grouped.set(date, []);
640
+ grouped.get(date).push({ id: row.id, text: row.text, category: row.category, importance: row.importance });
641
+ }
642
+ return Array.from(grouped.entries())
643
+ .map(([date, memories]) => ({ date, memories }))
644
+ .sort((a, b) => a.date.localeCompare(b.date));
645
+ }
646
+ /**
647
+ * Get memory activity summary over recent N days.
648
+ * Returns daily counts and high-importance entries used by temporal synthesis.
649
+ */
650
+ getActivitySummary(userId, days = 7) {
651
+ const startMs = Date.now() - days * 86_400_000;
652
+ const rows = this.db.prepare(`
653
+ SELECT id, text, category, importance, created_at FROM memories
654
+ WHERE user_id = ? AND is_archived = 0 AND created_at >= ?
655
+ ORDER BY created_at ASC
656
+ `).all(userId, startMs);
657
+ const dailyMap = new Map();
658
+ const highlights = [];
659
+ for (const row of rows) {
660
+ const date = new Date(row.created_at).toISOString().slice(0, 10);
661
+ dailyMap.set(date, (dailyMap.get(date) ?? 0) + 1);
662
+ if (row.importance >= 0.7) {
663
+ highlights.push({ id: row.id, text: row.text, category: row.category, importance: row.importance, date });
664
+ }
665
+ }
666
+ const dailyCounts = Array.from(dailyMap.entries())
667
+ .map(([date, count]) => ({ date, count }))
668
+ .sort((a, b) => a.date.localeCompare(b.date));
669
+ return { dailyCounts, highlights };
670
+ }
671
+ /**
672
+ * Find memories related to a specific event date (卤tolerance).
673
+ * Used for temporal context retrieval, such as finding memories around a requested date.
674
+ */
675
+ findByEventDate(userId, targetDate, toleranceDays = 1) {
676
+ const targetMs = Date.parse(targetDate);
677
+ if (isNaN(targetMs))
678
+ return [];
679
+ const startMs = targetMs - toleranceDays * 86_400_000;
680
+ const endMs = targetMs + toleranceDays * 86_400_000;
681
+ const rows = this.db.prepare(`
682
+ SELECT id, text, category, importance, tags, created_at, event_date FROM memories
683
+ WHERE user_id = ? AND is_archived = 0
684
+ AND (
685
+ (event_date != '' AND event_date >= ? AND event_date <= ?)
686
+ OR (created_at >= ? AND created_at <= ?)
687
+ )
688
+ ORDER BY importance DESC
689
+ LIMIT 20
690
+ `).all(userId, new Date(startMs).toISOString().slice(0, 10), new Date(endMs).toISOString().slice(0, 10), startMs, endMs);
691
+ return rows.map((r) => ({
692
+ id: r.id,
693
+ text: r.text,
694
+ score: r.importance,
695
+ category: r.category,
696
+ importance: r.importance,
697
+ metadata: { tags: JSON.parse(r.tags || "[]"), createdAt: r.created_at, eventDate: r.event_date },
698
+ }));
699
+ }
700
+ /**
701
+ * Record an access (for importance/relevance boosting).
702
+ */
703
+ recordAccess(id) {
704
+ this.db.prepare(`
705
+ UPDATE memories SET access_count = access_count + 1, last_accessed_at = ? WHERE id = ?
706
+ `).run(Date.now(), id);
707
+ }
708
+ /**
709
+ * Get total memory count for a user.
710
+ */
711
+ count(userId, activeOnly = true) {
712
+ const filter = activeOnly ? "AND is_archived = 0" : "";
713
+ const row = this.db.prepare(`SELECT COUNT(*) as cnt FROM memories WHERE user_id = ? ${filter}`).get(userId);
714
+ return row?.cnt ?? 0;
715
+ }
716
+ /**
717
+ * Delete all memories for a user.
718
+ */
719
+ resetUser(userId) {
720
+ const result = this.db.prepare("DELETE FROM memories WHERE user_id = ?").run(userId);
721
+ return result.changes;
722
+ }
723
+ // Capacity governance
724
+ /**
725
+ * Run SQLite VACUUM to reclaim space after deletions/archival.
726
+ * Should be called periodically (e.g. after decay cycles).
727
+ */
728
+ vacuum() {
729
+ this.db.exec("VACUUM");
730
+ }
731
+ /**
732
+ * Get database size info for capacity monitoring.
733
+ */
734
+ getStorageStats() {
735
+ const pageCount = this.db.pragma("page_count")[0]?.page_count ?? 0;
736
+ const pageSize = this.db.pragma("page_size")[0]?.page_size ?? 4096;
737
+ const freePages = this.db.pragma("freelist_count")[0]?.freelist_count ?? 0;
738
+ return {
739
+ pageCount,
740
+ pageSize,
741
+ totalBytes: pageCount * pageSize,
742
+ freePages,
743
+ };
744
+ }
745
+ /**
746
+ * Export archived memories as JSONL (for cold storage / backup).
747
+ * Deletes exported records from the database to reclaim space.
748
+ */
749
+ exportAndPurgeArchived(userId, maxExport = 500) {
750
+ const rows = this.db.prepare(`
751
+ SELECT id, text, category, importance, created_at, updated_at, tags
752
+ FROM memories
753
+ WHERE user_id = ? AND is_archived = 1
754
+ ORDER BY updated_at ASC
755
+ LIMIT ?
756
+ `).all(userId, maxExport);
757
+ if (rows.length === 0)
758
+ return [];
759
+ const exported = rows.map(r => ({
760
+ id: r.id,
761
+ text: r.text,
762
+ category: r.category,
763
+ importance: r.importance,
764
+ createdAt: r.created_at,
765
+ archivedAt: r.updated_at,
766
+ tags: JSON.parse(r.tags || "[]"),
767
+ }));
768
+ // Delete exported archived records
769
+ const ids = rows.map(r => r.id);
770
+ const placeholders = ids.map(() => "?").join(",");
771
+ this.db.prepare(`DELETE FROM memories WHERE id IN (${placeholders})`).run(...ids);
772
+ return exported;
773
+ }
774
+ /**
775
+ * Enforce capacity limit: if active memories exceed maxCount,
776
+ * archive the oldest lowest-importance ones.
777
+ */
778
+ enforceCapacityLimit(userId, maxCount = 10000) {
779
+ const currentCount = this.count(userId, true);
780
+ if (currentCount <= maxCount)
781
+ return 0;
782
+ const excess = currentCount - maxCount;
783
+ const result = this.db.prepare(`
784
+ UPDATE memories SET is_archived = 1, updated_at = ?
785
+ WHERE id IN (
786
+ SELECT id FROM memories
787
+ WHERE user_id = ? AND is_archived = 0
788
+ ORDER BY importance ASC, access_count ASC, created_at ASC
789
+ LIMIT ?
790
+ )
791
+ `).run(Date.now(), userId, excess);
792
+ return result.changes;
793
+ }
794
+ insertObservation(input) {
795
+ const id = `obs_${randomUUID().replace(/-/g, "").slice(0, 16)}`;
796
+ const now = Date.now();
797
+ this.db.prepare(`
798
+ INSERT INTO memory_observations
799
+ (id, user_id, text, source, source_priority, session_id, evidence_type, payload, created_at)
800
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
801
+ `).run(id, input.userId, input.text, input.source, input.sourcePriority, input.sessionId ?? "", input.evidenceType ?? "text", JSON.stringify(input.payload ?? {}), now);
802
+ return id;
803
+ }
804
+ insertProposal(input) {
805
+ const id = `prop_${randomUUID().replace(/-/g, "").slice(0, 16)}`;
806
+ const now = Date.now();
807
+ this.db.prepare(`
808
+ INSERT INTO memory_proposals
809
+ (id, user_id, observation_ids, text, category, importance, confidence, source, source_priority,
810
+ entity, predicate, value_json, valid_time, tags, status, related_claim_ids, created_at, updated_at)
811
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
812
+ `).run(id, input.userId, JSON.stringify(input.observationIds), input.text, input.category, input.importance, input.confidence, input.source, input.sourcePriority, input.entity, input.predicate, JSON.stringify(input.value), input.validTime ?? "", JSON.stringify(input.tags ?? []), input.status ?? "pending", JSON.stringify(input.relatedClaimIds ?? []), now, now);
813
+ return id;
814
+ }
815
+ updateProposalStatus(id, status, relatedClaimIds) {
816
+ const now = Date.now();
817
+ const result = relatedClaimIds
818
+ ? this.db.prepare("UPDATE memory_proposals SET status = ?, related_claim_ids = ?, updated_at = ? WHERE id = ?")
819
+ .run(status, JSON.stringify(relatedClaimIds), now, id)
820
+ : this.db.prepare("UPDATE memory_proposals SET status = ?, updated_at = ? WHERE id = ?")
821
+ .run(status, now, id);
822
+ return result.changes > 0;
823
+ }
824
+ insertClaim(input) {
825
+ const id = `claim_${randomUUID().replace(/-/g, "").slice(0, 16)}`;
826
+ const now = Date.now();
827
+ this.db.prepare(`
828
+ INSERT INTO memory_claims
829
+ (id, memory_id, user_id, entity, predicate, value_json, text, category, importance, confidence,
830
+ source, source_priority, status, valid_time, evidence_ids, supersedes_claim_id, conflict_group_id, created_at, updated_at)
831
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
832
+ `).run(id, input.memoryId ?? "", input.userId, input.entity, input.predicate, JSON.stringify(input.value), input.text, input.category, input.importance, input.confidence, input.source, input.sourcePriority, input.status, input.validTime ?? "", JSON.stringify(input.evidenceIds), input.supersedesClaimId ?? "", input.conflictGroupId ?? "", now, now);
833
+ return id;
834
+ }
835
+ listClaims(userId, statuses) {
836
+ const statusList = statuses?.length ? statuses : null;
837
+ const rows = statusList
838
+ ? this.db.prepare(`
839
+ SELECT * FROM memory_claims
840
+ WHERE user_id = ? AND status IN (${statusList.map(() => "?").join(",")})
841
+ ORDER BY updated_at DESC
842
+ `).all(userId, ...statusList)
843
+ : this.db.prepare(`
844
+ SELECT * FROM memory_claims
845
+ WHERE user_id = ?
846
+ ORDER BY updated_at DESC
847
+ `).all(userId);
848
+ return rows.map(rowToClaimRecord);
849
+ }
850
+ findClaimsByFact(userId, entity, predicate, validTime = "") {
851
+ const rows = this.db.prepare(`
852
+ SELECT * FROM memory_claims
853
+ WHERE user_id = ? AND entity = ? AND predicate = ? AND valid_time = ?
854
+ AND status IN ('active', 'pending_confirmation', 'conflicted')
855
+ ORDER BY updated_at DESC
856
+ `).all(userId, entity, predicate, validTime);
857
+ return rows.map(rowToClaimRecord);
858
+ }
859
+ mergeClaimEvidence(id, evidenceIds, confidence, importance) {
860
+ const current = this.db.prepare("SELECT evidence_ids FROM memory_claims WHERE id = ?").get(id);
861
+ if (!current)
862
+ return false;
863
+ const existing = parseJsonArray(current.evidence_ids);
864
+ const merged = Array.from(new Set([...existing, ...evidenceIds]));
865
+ const result = this.db.prepare(`
866
+ UPDATE memory_claims
867
+ SET evidence_ids = ?, confidence = MAX(confidence, ?), importance = MAX(importance, ?), updated_at = ?
868
+ WHERE id = ?
869
+ `).run(JSON.stringify(merged), confidence, importance, Date.now(), id);
870
+ return result.changes > 0;
871
+ }
872
+ updateClaimsByMemoryId(memoryId, status) {
873
+ const result = this.db.prepare(`
874
+ UPDATE memory_claims SET status = ?, updated_at = ? WHERE memory_id = ?
875
+ `).run(status, Date.now(), memoryId);
876
+ return result.changes;
877
+ }
878
+ insertConflict(input) {
879
+ const id = `conf_${randomUUID().replace(/-/g, "").slice(0, 16)}`;
880
+ const now = Date.now();
881
+ this.db.prepare(`
882
+ INSERT INTO memory_conflicts (id, user_id, claim_a_id, claim_b_id, reason, status, created_at, updated_at)
883
+ VALUES (?, ?, ?, ?, ?, 'open', ?, ?)
884
+ `).run(id, input.userId, input.claimAId, input.claimBId, input.reason, now, now);
885
+ return id;
886
+ }
887
+ listConflicts(userId) {
888
+ const rows = this.db.prepare(`
889
+ SELECT * FROM memory_conflicts
890
+ WHERE user_id = ?
891
+ ORDER BY updated_at DESC
892
+ `).all(userId);
893
+ return rows.map(rowToConflictRecord);
894
+ }
895
+ getClaimById(id) {
896
+ const row = this.db.prepare("SELECT * FROM memory_claims WHERE id = ?").get(id);
897
+ return row ? rowToClaimRecord(row) : undefined;
898
+ }
899
+ setClaimStatus(id, status) {
900
+ const result = this.db.prepare("UPDATE memory_claims SET status = ?, updated_at = ? WHERE id = ?").run(status, Date.now(), id);
901
+ return result.changes > 0;
902
+ }
903
+ /** Mark a conflict resolved (the resolver has already updated the claims). */
904
+ setConflictStatus(id, status) {
905
+ const result = this.db.prepare("UPDATE memory_conflicts SET status = ?, updated_at = ? WHERE id = ?").run(status, Date.now(), id);
906
+ return result.changes > 0;
907
+ }
908
+ /** Open conflicts only (the ones needing resolution). */
909
+ listOpenConflicts(userId) {
910
+ const rows = this.db.prepare(`
911
+ SELECT * FROM memory_conflicts
912
+ WHERE user_id = ? AND status = 'open'
913
+ ORDER BY created_at ASC
914
+ `).all(userId);
915
+ return rows.map(rowToConflictRecord);
916
+ }
917
+ /**
918
+ * Promote pending_confirmation claims that have accumulated enough independent
919
+ * evidence to become active. Returns the number promoted.
920
+ */
921
+ promotePendingClaims(userId, minEvidence) {
922
+ const pending = this.listClaims(userId, ["pending_confirmation"]);
923
+ let promoted = 0;
924
+ for (const claim of pending) {
925
+ if ((claim.evidenceIds?.length ?? 0) >= minEvidence) {
926
+ if (this.setClaimStatus(claim.id, "active"))
927
+ promoted++;
928
+ }
929
+ }
930
+ return promoted;
931
+ }
932
+ // Attachments (long-term memory素材) — file bytes live on disk; this is the index.
933
+ insertAttachment(input) {
934
+ this.db.prepare(`
935
+ INSERT INTO memory_attachments
936
+ (id, memory_id, user_id, kind, filename, mime_type, size, rel_path, extracted_text, created_at)
937
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
938
+ `).run(input.id, input.memoryId ?? "", input.userId, input.kind, input.filename, input.mimeType, input.size, input.relPath, input.extractedText ?? "", Date.now());
939
+ }
940
+ getAttachmentById(id) {
941
+ const row = this.db.prepare("SELECT * FROM memory_attachments WHERE id = ?").get(id);
942
+ return row ? rowToAttachment(row) : null;
943
+ }
944
+ listAttachmentsByMemoryId(memoryId) {
945
+ if (!memoryId)
946
+ return [];
947
+ const rows = this.db.prepare("SELECT * FROM memory_attachments WHERE memory_id = ? ORDER BY created_at ASC").all(memoryId);
948
+ return rows.map(rowToAttachment);
949
+ }
950
+ /** Batch-load attachments for many memories (for atlas windows). */
951
+ listAttachmentsByMemoryIds(memoryIds) {
952
+ const map = new Map();
953
+ if (memoryIds.length === 0)
954
+ return map;
955
+ const placeholders = memoryIds.map(() => "?").join(",");
956
+ const rows = this.db.prepare(`SELECT * FROM memory_attachments WHERE memory_id IN (${placeholders}) ORDER BY created_at ASC`).all(...memoryIds).map(rowToAttachment);
957
+ for (const row of rows) {
958
+ const list = map.get(row.memoryId) ?? [];
959
+ list.push(row);
960
+ map.set(row.memoryId, list);
961
+ }
962
+ return map;
963
+ }
964
+ /** Link orphan/owned attachments to a committed memory. Returns linked count. */
965
+ linkAttachments(memoryId, attachmentIds, userId) {
966
+ if (!memoryId || attachmentIds.length === 0)
967
+ return 0;
968
+ const placeholders = attachmentIds.map(() => "?").join(",");
969
+ const result = this.db.prepare(`
970
+ UPDATE memory_attachments
971
+ SET memory_id = ?
972
+ WHERE user_id = ? AND (memory_id = '' OR memory_id = ?) AND id IN (${placeholders})
973
+ `).run(memoryId, userId, memoryId, ...attachmentIds);
974
+ return result.changes;
975
+ }
976
+ setAttachmentExtractedText(id, text) {
977
+ const result = this.db.prepare("UPDATE memory_attachments SET extracted_text = ? WHERE id = ?").run(text.slice(0, 20_000), id);
978
+ return result.changes > 0;
979
+ }
980
+ /** Delete attachment index rows for a memory; returns their rel paths for file cleanup. */
981
+ deleteAttachmentsByMemoryId(memoryId) {
982
+ if (!memoryId)
983
+ return [];
984
+ const rows = this.db.prepare("SELECT rel_path FROM memory_attachments WHERE memory_id = ?").all(memoryId);
985
+ this.db.prepare("DELETE FROM memory_attachments WHERE memory_id = ?").run(memoryId);
986
+ return rows.map((r) => r.rel_path);
987
+ }
988
+ /** Orphan attachments (uploaded but never saved to a memory) older than cutoff. */
989
+ listOrphanAttachments(cutoff) {
990
+ const rows = this.db.prepare("SELECT * FROM memory_attachments WHERE memory_id = '' AND created_at < ?").all(cutoff);
991
+ return rows.map(rowToAttachment);
992
+ }
993
+ deleteAttachmentById(id) {
994
+ this.db.prepare("DELETE FROM memory_attachments WHERE id = ?").run(id);
995
+ }
996
+ close() {
997
+ this.db.close();
998
+ }
999
+ }
1000
+ function rowToAttachment(row) {
1001
+ const r = row;
1002
+ return {
1003
+ id: String(r.id),
1004
+ memoryId: String(r.memory_id ?? ""),
1005
+ userId: String(r.user_id ?? ""),
1006
+ kind: String(r.kind ?? "file"),
1007
+ filename: String(r.filename ?? ""),
1008
+ mimeType: String(r.mime_type ?? ""),
1009
+ size: Number(r.size ?? 0),
1010
+ relPath: String(r.rel_path ?? ""),
1011
+ extractedText: String(r.extracted_text ?? ""),
1012
+ createdAt: Number(r.created_at ?? 0),
1013
+ };
1014
+ }
1015
+ function toFtsPhraseQuery(query) {
1016
+ const tokens = query
1017
+ .match(/[\p{L}\p{N}_]+/gu)
1018
+ ?.map((token) => token.trim())
1019
+ .filter(Boolean)
1020
+ .slice(0, 32) ?? [];
1021
+ return tokens.map((token) => `"${token.replace(/"/g, "\"\"")}"`).join(" ");
1022
+ }