qlogicagent 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (450) hide show
  1. package/README.md +45 -0
  2. package/dist/agent/agent.d.ts +44 -0
  3. package/dist/agent/agent.d.ts.map +1 -0
  4. package/dist/agent/agent.js +114 -0
  5. package/dist/agent/agent.js.map +1 -0
  6. package/dist/agent/tool-loop.d.ts +65 -0
  7. package/dist/agent/tool-loop.d.ts.map +1 -0
  8. package/dist/agent/tool-loop.js +576 -0
  9. package/dist/agent/tool-loop.js.map +1 -0
  10. package/dist/agent/types.d.ts +176 -0
  11. package/dist/agent/types.d.ts.map +1 -0
  12. package/dist/agent/types.js +15 -0
  13. package/dist/agent/types.js.map +1 -0
  14. package/dist/cli/main.d.ts +12 -0
  15. package/dist/cli/main.d.ts.map +1 -0
  16. package/dist/cli/main.js +24 -0
  17. package/dist/cli/main.js.map +1 -0
  18. package/dist/cli/stdio-server.d.ts +46 -0
  19. package/dist/cli/stdio-server.d.ts.map +1 -0
  20. package/dist/cli/stdio-server.js +464 -0
  21. package/dist/cli/stdio-server.js.map +1 -0
  22. package/dist/config/config.d.ts +18 -0
  23. package/dist/config/config.d.ts.map +1 -0
  24. package/dist/config/config.js +22 -0
  25. package/dist/config/config.js.map +1 -0
  26. package/dist/contracts/hooks.d.ts +121 -0
  27. package/dist/contracts/hooks.d.ts.map +1 -0
  28. package/dist/contracts/hooks.js +8 -0
  29. package/dist/contracts/hooks.js.map +1 -0
  30. package/dist/contracts/index.d.ts +11 -0
  31. package/dist/contracts/index.d.ts.map +1 -0
  32. package/dist/contracts/index.js +11 -0
  33. package/dist/contracts/index.js.map +1 -0
  34. package/dist/contracts/planner.d.ts +36 -0
  35. package/dist/contracts/planner.d.ts.map +1 -0
  36. package/dist/contracts/planner.js +3 -0
  37. package/dist/contracts/planner.js.map +1 -0
  38. package/dist/contracts/skill-candidate.d.ts +64 -0
  39. package/dist/contracts/skill-candidate.d.ts.map +1 -0
  40. package/dist/contracts/skill-candidate.js +196 -0
  41. package/dist/contracts/skill-candidate.js.map +1 -0
  42. package/dist/contracts/todo.d.ts +15 -0
  43. package/dist/contracts/todo.d.ts.map +1 -0
  44. package/dist/contracts/todo.js +10 -0
  45. package/dist/contracts/todo.js.map +1 -0
  46. package/dist/index.d.ts +14 -0
  47. package/dist/index.d.ts.map +1 -0
  48. package/dist/index.js +16 -0
  49. package/dist/index.js.map +1 -0
  50. package/dist/llm/builtin-providers.d.ts +11 -0
  51. package/dist/llm/builtin-providers.d.ts.map +1 -0
  52. package/dist/llm/builtin-providers.js +532 -0
  53. package/dist/llm/builtin-providers.js.map +1 -0
  54. package/dist/llm/index.d.ts +16 -0
  55. package/dist/llm/index.d.ts.map +1 -0
  56. package/dist/llm/index.js +15 -0
  57. package/dist/llm/index.js.map +1 -0
  58. package/dist/llm/llm-client.d.ts +44 -0
  59. package/dist/llm/llm-client.d.ts.map +1 -0
  60. package/dist/llm/llm-client.js +68 -0
  61. package/dist/llm/llm-client.js.map +1 -0
  62. package/dist/llm/model-catalog.d.ts +54 -0
  63. package/dist/llm/model-catalog.d.ts.map +1 -0
  64. package/dist/llm/model-catalog.js +192 -0
  65. package/dist/llm/model-catalog.js.map +1 -0
  66. package/dist/llm/provider-def.d.ts +60 -0
  67. package/dist/llm/provider-def.d.ts.map +1 -0
  68. package/dist/llm/provider-def.js +13 -0
  69. package/dist/llm/provider-def.js.map +1 -0
  70. package/dist/llm/provider-registry.d.ts +55 -0
  71. package/dist/llm/provider-registry.d.ts.map +1 -0
  72. package/dist/llm/provider-registry.js +148 -0
  73. package/dist/llm/provider-registry.js.map +1 -0
  74. package/dist/llm/transport.d.ts +63 -0
  75. package/dist/llm/transport.d.ts.map +1 -0
  76. package/dist/llm/transport.js +28 -0
  77. package/dist/llm/transport.js.map +1 -0
  78. package/dist/llm/transports/anthropic-messages.d.ts +32 -0
  79. package/dist/llm/transports/anthropic-messages.d.ts.map +1 -0
  80. package/dist/llm/transports/anthropic-messages.js +294 -0
  81. package/dist/llm/transports/anthropic-messages.js.map +1 -0
  82. package/dist/llm/transports/openai-chat.d.ts +37 -0
  83. package/dist/llm/transports/openai-chat.d.ts.map +1 -0
  84. package/dist/llm/transports/openai-chat.js +166 -0
  85. package/dist/llm/transports/openai-chat.js.map +1 -0
  86. package/dist/orchestration/agent-registry.d.ts +42 -0
  87. package/dist/orchestration/agent-registry.d.ts.map +1 -0
  88. package/dist/orchestration/agent-registry.js +117 -0
  89. package/dist/orchestration/agent-registry.js.map +1 -0
  90. package/dist/orchestration/approval-aware-tool-plan.d.ts +33 -0
  91. package/dist/orchestration/approval-aware-tool-plan.d.ts.map +1 -0
  92. package/dist/orchestration/approval-aware-tool-plan.js +88 -0
  93. package/dist/orchestration/approval-aware-tool-plan.js.map +1 -0
  94. package/dist/orchestration/context-compression.d.ts +221 -0
  95. package/dist/orchestration/context-compression.d.ts.map +1 -0
  96. package/dist/orchestration/context-compression.js +584 -0
  97. package/dist/orchestration/context-compression.js.map +1 -0
  98. package/dist/orchestration/conversation-repair.d.ts +62 -0
  99. package/dist/orchestration/conversation-repair.d.ts.map +1 -0
  100. package/dist/orchestration/conversation-repair.js +430 -0
  101. package/dist/orchestration/conversation-repair.js.map +1 -0
  102. package/dist/orchestration/curator-scheduler.d.ts +120 -0
  103. package/dist/orchestration/curator-scheduler.d.ts.map +1 -0
  104. package/dist/orchestration/curator-scheduler.js +136 -0
  105. package/dist/orchestration/curator-scheduler.js.map +1 -0
  106. package/dist/orchestration/embedded-failover-policy.d.ts +111 -0
  107. package/dist/orchestration/embedded-failover-policy.d.ts.map +1 -0
  108. package/dist/orchestration/embedded-failover-policy.js +169 -0
  109. package/dist/orchestration/embedded-failover-policy.js.map +1 -0
  110. package/dist/orchestration/error-classification.d.ts +13 -0
  111. package/dist/orchestration/error-classification.d.ts.map +1 -0
  112. package/dist/orchestration/error-classification.js +78 -0
  113. package/dist/orchestration/error-classification.js.map +1 -0
  114. package/dist/orchestration/failover-classification.d.ts +9 -0
  115. package/dist/orchestration/failover-classification.d.ts.map +1 -0
  116. package/dist/orchestration/failover-classification.js +382 -0
  117. package/dist/orchestration/failover-classification.js.map +1 -0
  118. package/dist/orchestration/failover-error.d.ts +34 -0
  119. package/dist/orchestration/failover-error.d.ts.map +1 -0
  120. package/dist/orchestration/failover-error.js +199 -0
  121. package/dist/orchestration/failover-error.js.map +1 -0
  122. package/dist/orchestration/fork-subagent.d.ts +101 -0
  123. package/dist/orchestration/fork-subagent.d.ts.map +1 -0
  124. package/dist/orchestration/fork-subagent.js +99 -0
  125. package/dist/orchestration/fork-subagent.js.map +1 -0
  126. package/dist/orchestration/index.d.ts +121 -0
  127. package/dist/orchestration/index.d.ts.map +1 -0
  128. package/dist/orchestration/index.js +268 -0
  129. package/dist/orchestration/index.js.map +1 -0
  130. package/dist/orchestration/memory-flush-policy.d.ts +58 -0
  131. package/dist/orchestration/memory-flush-policy.d.ts.map +1 -0
  132. package/dist/orchestration/memory-flush-policy.js +86 -0
  133. package/dist/orchestration/memory-flush-policy.js.map +1 -0
  134. package/dist/orchestration/memory-provider.d.ts +15 -0
  135. package/dist/orchestration/memory-provider.d.ts.map +1 -0
  136. package/dist/orchestration/memory-provider.js +3 -0
  137. package/dist/orchestration/memory-provider.js.map +1 -0
  138. package/dist/orchestration/parallel-tool-calls.d.ts +42 -0
  139. package/dist/orchestration/parallel-tool-calls.d.ts.map +1 -0
  140. package/dist/orchestration/parallel-tool-calls.js +60 -0
  141. package/dist/orchestration/parallel-tool-calls.js.map +1 -0
  142. package/dist/orchestration/prompt-cache-strategy.d.ts +127 -0
  143. package/dist/orchestration/prompt-cache-strategy.d.ts.map +1 -0
  144. package/dist/orchestration/prompt-cache-strategy.js +229 -0
  145. package/dist/orchestration/prompt-cache-strategy.js.map +1 -0
  146. package/dist/orchestration/reactive-compact.d.ts +74 -0
  147. package/dist/orchestration/reactive-compact.d.ts.map +1 -0
  148. package/dist/orchestration/reactive-compact.js +79 -0
  149. package/dist/orchestration/reactive-compact.js.map +1 -0
  150. package/dist/orchestration/retry-loop.d.ts +23 -0
  151. package/dist/orchestration/retry-loop.d.ts.map +1 -0
  152. package/dist/orchestration/retry-loop.js +25 -0
  153. package/dist/orchestration/retry-loop.js.map +1 -0
  154. package/dist/orchestration/skill-candidate.d.ts +53 -0
  155. package/dist/orchestration/skill-candidate.d.ts.map +1 -0
  156. package/dist/orchestration/skill-candidate.js +142 -0
  157. package/dist/orchestration/skill-candidate.js.map +1 -0
  158. package/dist/orchestration/skill-consolidation.d.ts +124 -0
  159. package/dist/orchestration/skill-consolidation.d.ts.map +1 -0
  160. package/dist/orchestration/skill-consolidation.js +221 -0
  161. package/dist/orchestration/skill-consolidation.js.map +1 -0
  162. package/dist/orchestration/skill-improvement.d.ts +60 -0
  163. package/dist/orchestration/skill-improvement.d.ts.map +1 -0
  164. package/dist/orchestration/skill-improvement.js +67 -0
  165. package/dist/orchestration/skill-improvement.js.map +1 -0
  166. package/dist/orchestration/skill-similarity.d.ts +99 -0
  167. package/dist/orchestration/skill-similarity.d.ts.map +1 -0
  168. package/dist/orchestration/skill-similarity.js +132 -0
  169. package/dist/orchestration/skill-similarity.js.map +1 -0
  170. package/dist/orchestration/streaming-tool-executor.d.ts +74 -0
  171. package/dist/orchestration/streaming-tool-executor.d.ts.map +1 -0
  172. package/dist/orchestration/streaming-tool-executor.js +97 -0
  173. package/dist/orchestration/streaming-tool-executor.js.map +1 -0
  174. package/dist/orchestration/team-orchestration.d.ts +196 -0
  175. package/dist/orchestration/team-orchestration.d.ts.map +1 -0
  176. package/dist/orchestration/team-orchestration.js +370 -0
  177. package/dist/orchestration/team-orchestration.js.map +1 -0
  178. package/dist/orchestration/team-tool-loop-wiring.d.ts +93 -0
  179. package/dist/orchestration/team-tool-loop-wiring.d.ts.map +1 -0
  180. package/dist/orchestration/team-tool-loop-wiring.js +148 -0
  181. package/dist/orchestration/team-tool-loop-wiring.js.map +1 -0
  182. package/dist/orchestration/tool-choice-policy.d.ts +55 -0
  183. package/dist/orchestration/tool-choice-policy.d.ts.map +1 -0
  184. package/dist/orchestration/tool-choice-policy.js +165 -0
  185. package/dist/orchestration/tool-choice-policy.js.map +1 -0
  186. package/dist/orchestration/tool-loop-state.d.ts +51 -0
  187. package/dist/orchestration/tool-loop-state.d.ts.map +1 -0
  188. package/dist/orchestration/tool-loop-state.js +134 -0
  189. package/dist/orchestration/tool-loop-state.js.map +1 -0
  190. package/dist/orchestration/tool-schema.d.ts +40 -0
  191. package/dist/orchestration/tool-schema.d.ts.map +1 -0
  192. package/dist/orchestration/tool-schema.js +298 -0
  193. package/dist/orchestration/tool-schema.js.map +1 -0
  194. package/dist/orchestration/transcript-repair.d.ts +43 -0
  195. package/dist/orchestration/transcript-repair.d.ts.map +1 -0
  196. package/dist/orchestration/transcript-repair.js +427 -0
  197. package/dist/orchestration/transcript-repair.js.map +1 -0
  198. package/dist/orchestration/turn-loop-guard.d.ts +87 -0
  199. package/dist/orchestration/turn-loop-guard.d.ts.map +1 -0
  200. package/dist/orchestration/turn-loop-guard.js +93 -0
  201. package/dist/orchestration/turn-loop-guard.js.map +1 -0
  202. package/dist/orchestration/web-browser-policy.d.ts +18 -0
  203. package/dist/orchestration/web-browser-policy.d.ts.map +1 -0
  204. package/dist/orchestration/web-browser-policy.js +40 -0
  205. package/dist/orchestration/web-browser-policy.js.map +1 -0
  206. package/dist/runtime/context-compression.d.ts +62 -0
  207. package/dist/runtime/context-compression.d.ts.map +1 -0
  208. package/dist/runtime/context-compression.js +275 -0
  209. package/dist/runtime/context-compression.js.map +1 -0
  210. package/dist/runtime/hook-registry.d.ts +13 -0
  211. package/dist/runtime/hook-registry.d.ts.map +1 -0
  212. package/dist/runtime/hook-registry.js +54 -0
  213. package/dist/runtime/hook-registry.js.map +1 -0
  214. package/dist/runtime/memory-hooks.d.ts +24 -0
  215. package/dist/runtime/memory-hooks.d.ts.map +1 -0
  216. package/dist/runtime/memory-hooks.js +66 -0
  217. package/dist/runtime/memory-hooks.js.map +1 -0
  218. package/dist/runtime/tool-eligibility.d.ts +60 -0
  219. package/dist/runtime/tool-eligibility.d.ts.map +1 -0
  220. package/dist/runtime/tool-eligibility.js +112 -0
  221. package/dist/runtime/tool-eligibility.js.map +1 -0
  222. package/dist/skills/index.d.ts +109 -0
  223. package/dist/skills/index.d.ts.map +1 -0
  224. package/dist/skills/index.js +83 -0
  225. package/dist/skills/index.js.map +1 -0
  226. package/dist/skills/memory-extractor.d.ts +65 -0
  227. package/dist/skills/memory-extractor.d.ts.map +1 -0
  228. package/dist/skills/memory-extractor.js +174 -0
  229. package/dist/skills/memory-extractor.js.map +1 -0
  230. package/dist/skills/memory-query-tool.d.ts +44 -0
  231. package/dist/skills/memory-query-tool.d.ts.map +1 -0
  232. package/dist/skills/memory-query-tool.js +128 -0
  233. package/dist/skills/memory-query-tool.js.map +1 -0
  234. package/dist/skills/memory-store.d.ts +67 -0
  235. package/dist/skills/memory-store.d.ts.map +1 -0
  236. package/dist/skills/memory-store.js +229 -0
  237. package/dist/skills/memory-store.js.map +1 -0
  238. package/dist/skills/memory-tool.d.ts +68 -0
  239. package/dist/skills/memory-tool.d.ts.map +1 -0
  240. package/dist/skills/memory-tool.js +193 -0
  241. package/dist/skills/memory-tool.js.map +1 -0
  242. package/dist/skills/portable-tool.d.ts +72 -0
  243. package/dist/skills/portable-tool.d.ts.map +1 -0
  244. package/dist/skills/portable-tool.js +15 -0
  245. package/dist/skills/portable-tool.js.map +1 -0
  246. package/dist/skills/qmemory-adapter.d.ts +53 -0
  247. package/dist/skills/qmemory-adapter.d.ts.map +1 -0
  248. package/dist/skills/qmemory-adapter.js +166 -0
  249. package/dist/skills/qmemory-adapter.js.map +1 -0
  250. package/dist/skills/skill-frontmatter.d.ts +20 -0
  251. package/dist/skills/skill-frontmatter.d.ts.map +1 -0
  252. package/dist/skills/skill-frontmatter.js +345 -0
  253. package/dist/skills/skill-frontmatter.js.map +1 -0
  254. package/dist/skills/skill-guard.d.ts +24 -0
  255. package/dist/skills/skill-guard.d.ts.map +1 -0
  256. package/dist/skills/skill-guard.js +230 -0
  257. package/dist/skills/skill-guard.js.map +1 -0
  258. package/dist/skills/skill-loader.d.ts +17 -0
  259. package/dist/skills/skill-loader.d.ts.map +1 -0
  260. package/dist/skills/skill-loader.js +304 -0
  261. package/dist/skills/skill-loader.js.map +1 -0
  262. package/dist/skills/skill-source.d.ts +120 -0
  263. package/dist/skills/skill-source.d.ts.map +1 -0
  264. package/dist/skills/skill-source.js +127 -0
  265. package/dist/skills/skill-source.js.map +1 -0
  266. package/dist/skills/skill-types.d.ts +200 -0
  267. package/dist/skills/skill-types.d.ts.map +1 -0
  268. package/dist/skills/skill-types.js +7 -0
  269. package/dist/skills/skill-types.js.map +1 -0
  270. package/dist/skills/think-tool.d.ts +17 -0
  271. package/dist/skills/think-tool.d.ts.map +1 -0
  272. package/dist/skills/think-tool.js +60 -0
  273. package/dist/skills/think-tool.js.map +1 -0
  274. package/dist/skills/todo-tool.d.ts +64 -0
  275. package/dist/skills/todo-tool.d.ts.map +1 -0
  276. package/dist/skills/todo-tool.js +115 -0
  277. package/dist/skills/todo-tool.js.map +1 -0
  278. package/dist/skills/tools/agent-tool.d.ts +92 -0
  279. package/dist/skills/tools/agent-tool.d.ts.map +1 -0
  280. package/dist/skills/tools/agent-tool.js +143 -0
  281. package/dist/skills/tools/agent-tool.js.map +1 -0
  282. package/dist/skills/tools/apply-patch-tool.d.ts +30 -0
  283. package/dist/skills/tools/apply-patch-tool.d.ts.map +1 -0
  284. package/dist/skills/tools/apply-patch-tool.js +185 -0
  285. package/dist/skills/tools/apply-patch-tool.js.map +1 -0
  286. package/dist/skills/tools/ask-user-tool.d.ts +81 -0
  287. package/dist/skills/tools/ask-user-tool.d.ts.map +1 -0
  288. package/dist/skills/tools/ask-user-tool.js +122 -0
  289. package/dist/skills/tools/ask-user-tool.js.map +1 -0
  290. package/dist/skills/tools/brief-tool.d.ts +75 -0
  291. package/dist/skills/tools/brief-tool.d.ts.map +1 -0
  292. package/dist/skills/tools/brief-tool.js +96 -0
  293. package/dist/skills/tools/brief-tool.js.map +1 -0
  294. package/dist/skills/tools/browser-tool.d.ts +115 -0
  295. package/dist/skills/tools/browser-tool.d.ts.map +1 -0
  296. package/dist/skills/tools/browser-tool.js +156 -0
  297. package/dist/skills/tools/browser-tool.js.map +1 -0
  298. package/dist/skills/tools/checkpoint-tool.d.ts +67 -0
  299. package/dist/skills/tools/checkpoint-tool.d.ts.map +1 -0
  300. package/dist/skills/tools/checkpoint-tool.js +103 -0
  301. package/dist/skills/tools/checkpoint-tool.js.map +1 -0
  302. package/dist/skills/tools/config-tool.d.ts +64 -0
  303. package/dist/skills/tools/config-tool.d.ts.map +1 -0
  304. package/dist/skills/tools/config-tool.js +144 -0
  305. package/dist/skills/tools/config-tool.js.map +1 -0
  306. package/dist/skills/tools/cron-tool.d.ts +117 -0
  307. package/dist/skills/tools/cron-tool.d.ts.map +1 -0
  308. package/dist/skills/tools/cron-tool.js +176 -0
  309. package/dist/skills/tools/cron-tool.js.map +1 -0
  310. package/dist/skills/tools/edit-tool.d.ts +44 -0
  311. package/dist/skills/tools/edit-tool.d.ts.map +1 -0
  312. package/dist/skills/tools/edit-tool.js +71 -0
  313. package/dist/skills/tools/edit-tool.js.map +1 -0
  314. package/dist/skills/tools/exec-tool.d.ts +103 -0
  315. package/dist/skills/tools/exec-tool.d.ts.map +1 -0
  316. package/dist/skills/tools/exec-tool.js +134 -0
  317. package/dist/skills/tools/exec-tool.js.map +1 -0
  318. package/dist/skills/tools/image-generate-tool.d.ts +63 -0
  319. package/dist/skills/tools/image-generate-tool.d.ts.map +1 -0
  320. package/dist/skills/tools/image-generate-tool.js +68 -0
  321. package/dist/skills/tools/image-generate-tool.js.map +1 -0
  322. package/dist/skills/tools/instructions-tool.d.ts +104 -0
  323. package/dist/skills/tools/instructions-tool.d.ts.map +1 -0
  324. package/dist/skills/tools/instructions-tool.js +188 -0
  325. package/dist/skills/tools/instructions-tool.js.map +1 -0
  326. package/dist/skills/tools/lsp-tool.d.ts +154 -0
  327. package/dist/skills/tools/lsp-tool.d.ts.map +1 -0
  328. package/dist/skills/tools/lsp-tool.js +228 -0
  329. package/dist/skills/tools/lsp-tool.js.map +1 -0
  330. package/dist/skills/tools/mcp-client-types.d.ts +270 -0
  331. package/dist/skills/tools/mcp-client-types.d.ts.map +1 -0
  332. package/dist/skills/tools/mcp-client-types.js +54 -0
  333. package/dist/skills/tools/mcp-client-types.js.map +1 -0
  334. package/dist/skills/tools/mcp-tool.d.ts +250 -0
  335. package/dist/skills/tools/mcp-tool.d.ts.map +1 -0
  336. package/dist/skills/tools/mcp-tool.js +504 -0
  337. package/dist/skills/tools/mcp-tool.js.map +1 -0
  338. package/dist/skills/tools/memory-tool.d.ts +75 -0
  339. package/dist/skills/tools/memory-tool.d.ts.map +1 -0
  340. package/dist/skills/tools/memory-tool.js +89 -0
  341. package/dist/skills/tools/memory-tool.js.map +1 -0
  342. package/dist/skills/tools/monitor-tool.d.ts +114 -0
  343. package/dist/skills/tools/monitor-tool.d.ts.map +1 -0
  344. package/dist/skills/tools/monitor-tool.js +132 -0
  345. package/dist/skills/tools/monitor-tool.js.map +1 -0
  346. package/dist/skills/tools/music-generate-tool.d.ts +56 -0
  347. package/dist/skills/tools/music-generate-tool.d.ts.map +1 -0
  348. package/dist/skills/tools/music-generate-tool.js +63 -0
  349. package/dist/skills/tools/music-generate-tool.js.map +1 -0
  350. package/dist/skills/tools/notify-tool.d.ts +54 -0
  351. package/dist/skills/tools/notify-tool.d.ts.map +1 -0
  352. package/dist/skills/tools/notify-tool.js +63 -0
  353. package/dist/skills/tools/notify-tool.js.map +1 -0
  354. package/dist/skills/tools/patch-tool.d.ts +46 -0
  355. package/dist/skills/tools/patch-tool.d.ts.map +1 -0
  356. package/dist/skills/tools/patch-tool.js +506 -0
  357. package/dist/skills/tools/patch-tool.js.map +1 -0
  358. package/dist/skills/tools/pdf-tool.d.ts +67 -0
  359. package/dist/skills/tools/pdf-tool.d.ts.map +1 -0
  360. package/dist/skills/tools/pdf-tool.js +89 -0
  361. package/dist/skills/tools/pdf-tool.js.map +1 -0
  362. package/dist/skills/tools/plan-mode-tool.d.ts +60 -0
  363. package/dist/skills/tools/plan-mode-tool.d.ts.map +1 -0
  364. package/dist/skills/tools/plan-mode-tool.js +123 -0
  365. package/dist/skills/tools/plan-mode-tool.js.map +1 -0
  366. package/dist/skills/tools/read-tool.d.ts +52 -0
  367. package/dist/skills/tools/read-tool.d.ts.map +1 -0
  368. package/dist/skills/tools/read-tool.js +85 -0
  369. package/dist/skills/tools/read-tool.js.map +1 -0
  370. package/dist/skills/tools/repl-tool.d.ts +71 -0
  371. package/dist/skills/tools/repl-tool.d.ts.map +1 -0
  372. package/dist/skills/tools/repl-tool.js +70 -0
  373. package/dist/skills/tools/repl-tool.js.map +1 -0
  374. package/dist/skills/tools/search-tool.d.ts +113 -0
  375. package/dist/skills/tools/search-tool.d.ts.map +1 -0
  376. package/dist/skills/tools/search-tool.js +226 -0
  377. package/dist/skills/tools/search-tool.js.map +1 -0
  378. package/dist/skills/tools/send-message-tool.d.ts +52 -0
  379. package/dist/skills/tools/send-message-tool.d.ts.map +1 -0
  380. package/dist/skills/tools/send-message-tool.js +77 -0
  381. package/dist/skills/tools/send-message-tool.js.map +1 -0
  382. package/dist/skills/tools/skill-list-tool.d.ts +34 -0
  383. package/dist/skills/tools/skill-list-tool.d.ts.map +1 -0
  384. package/dist/skills/tools/skill-list-tool.js +55 -0
  385. package/dist/skills/tools/skill-list-tool.js.map +1 -0
  386. package/dist/skills/tools/skill-manage-tool.d.ts +74 -0
  387. package/dist/skills/tools/skill-manage-tool.d.ts.map +1 -0
  388. package/dist/skills/tools/skill-manage-tool.js +154 -0
  389. package/dist/skills/tools/skill-manage-tool.js.map +1 -0
  390. package/dist/skills/tools/skill-view-tool.d.ts +38 -0
  391. package/dist/skills/tools/skill-view-tool.d.ts.map +1 -0
  392. package/dist/skills/tools/skill-view-tool.js +73 -0
  393. package/dist/skills/tools/skill-view-tool.js.map +1 -0
  394. package/dist/skills/tools/sleep-tool.d.ts +50 -0
  395. package/dist/skills/tools/sleep-tool.d.ts.map +1 -0
  396. package/dist/skills/tools/sleep-tool.js +82 -0
  397. package/dist/skills/tools/sleep-tool.js.map +1 -0
  398. package/dist/skills/tools/structured-output-tool.d.ts +117 -0
  399. package/dist/skills/tools/structured-output-tool.d.ts.map +1 -0
  400. package/dist/skills/tools/structured-output-tool.js +177 -0
  401. package/dist/skills/tools/structured-output-tool.js.map +1 -0
  402. package/dist/skills/tools/task-tool.d.ts +105 -0
  403. package/dist/skills/tools/task-tool.d.ts.map +1 -0
  404. package/dist/skills/tools/task-tool.js +162 -0
  405. package/dist/skills/tools/task-tool.js.map +1 -0
  406. package/dist/skills/tools/team-tool.d.ts +90 -0
  407. package/dist/skills/tools/team-tool.d.ts.map +1 -0
  408. package/dist/skills/tools/team-tool.js +106 -0
  409. package/dist/skills/tools/team-tool.js.map +1 -0
  410. package/dist/skills/tools/tool-search-tool.d.ts +52 -0
  411. package/dist/skills/tools/tool-search-tool.d.ts.map +1 -0
  412. package/dist/skills/tools/tool-search-tool.js +111 -0
  413. package/dist/skills/tools/tool-search-tool.js.map +1 -0
  414. package/dist/skills/tools/tts-tool.d.ts +39 -0
  415. package/dist/skills/tools/tts-tool.d.ts.map +1 -0
  416. package/dist/skills/tools/tts-tool.js +46 -0
  417. package/dist/skills/tools/tts-tool.js.map +1 -0
  418. package/dist/skills/tools/video-edit-tool.d.ts +70 -0
  419. package/dist/skills/tools/video-edit-tool.d.ts.map +1 -0
  420. package/dist/skills/tools/video-edit-tool.js +75 -0
  421. package/dist/skills/tools/video-edit-tool.js.map +1 -0
  422. package/dist/skills/tools/video-generate-tool.d.ts +63 -0
  423. package/dist/skills/tools/video-generate-tool.d.ts.map +1 -0
  424. package/dist/skills/tools/video-generate-tool.js +67 -0
  425. package/dist/skills/tools/video-generate-tool.js.map +1 -0
  426. package/dist/skills/tools/video-merge-tool.d.ts +106 -0
  427. package/dist/skills/tools/video-merge-tool.d.ts.map +1 -0
  428. package/dist/skills/tools/video-merge-tool.js +93 -0
  429. package/dist/skills/tools/video-merge-tool.js.map +1 -0
  430. package/dist/skills/tools/video-upscale-tool.d.ts +46 -0
  431. package/dist/skills/tools/video-upscale-tool.d.ts.map +1 -0
  432. package/dist/skills/tools/video-upscale-tool.js +53 -0
  433. package/dist/skills/tools/video-upscale-tool.js.map +1 -0
  434. package/dist/skills/tools/web-fetch-tool.d.ts +79 -0
  435. package/dist/skills/tools/web-fetch-tool.d.ts.map +1 -0
  436. package/dist/skills/tools/web-fetch-tool.js +93 -0
  437. package/dist/skills/tools/web-fetch-tool.js.map +1 -0
  438. package/dist/skills/tools/web-search-tool.d.ts +58 -0
  439. package/dist/skills/tools/web-search-tool.d.ts.map +1 -0
  440. package/dist/skills/tools/web-search-tool.js +87 -0
  441. package/dist/skills/tools/web-search-tool.js.map +1 -0
  442. package/dist/skills/tools/worktree-tool.d.ts +70 -0
  443. package/dist/skills/tools/worktree-tool.d.ts.map +1 -0
  444. package/dist/skills/tools/worktree-tool.js +148 -0
  445. package/dist/skills/tools/worktree-tool.js.map +1 -0
  446. package/dist/skills/tools/write-tool.d.ts +46 -0
  447. package/dist/skills/tools/write-tool.d.ts.map +1 -0
  448. package/dist/skills/tools/write-tool.js +82 -0
  449. package/dist/skills/tools/write-tool.js.map +1 -0
  450. package/package.json +41 -0
@@ -0,0 +1,44 @@
1
+ import type { PortableTool } from "./portable-tool.js";
2
+ export declare const MEMORY_QUERY_TOOL_NAME: "memory_query";
3
+ export declare const MEMORY_QUERY_TOOL_SCHEMA: {
4
+ readonly type: "object";
5
+ readonly properties: {
6
+ readonly query: {
7
+ readonly type: "string";
8
+ readonly description: string;
9
+ };
10
+ readonly category: {
11
+ readonly type: "string";
12
+ readonly description: string;
13
+ };
14
+ };
15
+ readonly required: readonly ["query"];
16
+ };
17
+ export interface MediaPreferencesSummary {
18
+ imageStyle?: string;
19
+ videoStyle?: string;
20
+ musicGenre?: string;
21
+ musicMood?: string;
22
+ primaryPurpose?: string;
23
+ colorPreference?: string;
24
+ }
25
+ /**
26
+ * Dependency-injected callbacks for memory query.
27
+ * Consumers provide these from their own memory system.
28
+ */
29
+ export interface MemoryQueryToolDeps {
30
+ /** Query recalled facts/memories by natural language. */
31
+ queryGraph?: (query: string, userId: string) => string[];
32
+ /** Retrieve user profile summary. */
33
+ getProfileSummary?: (userId: string) => string | null;
34
+ /** Retrieve media preferences. */
35
+ getMediaPreferences?: (userId: string) => MediaPreferencesSummary | null;
36
+ /** User ID for this session. */
37
+ userId?: string;
38
+ }
39
+ export interface MemoryQueryToolParams {
40
+ query: string;
41
+ category?: string;
42
+ }
43
+ export declare function createMemoryQueryTool(deps?: MemoryQueryToolDeps): PortableTool<MemoryQueryToolParams>;
44
+ //# sourceMappingURL=memory-query-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-query-tool.d.ts","sourceRoot":"","sources":["../../src/skills/memory-query-tool.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAsB,MAAM,oBAAoB,CAAC;AAE3E,eAAO,MAAM,sBAAsB,EAAG,cAAuB,CAAC;AAI9D,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;CA4B3B,CAAC;AAIX,MAAM,WAAW,uBAAuB;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,yDAAyD;IACzD,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;IACzD,qCAAqC;IACrC,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACtD,kCAAkC;IAClC,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,uBAAuB,GAAG,IAAI,CAAC;IACzE,gCAAgC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAID,wBAAgB,qBAAqB,CAAC,IAAI,CAAC,EAAE,mBAAmB,GAAG,YAAY,CAAC,qBAAqB,CAAC,CAqFrG"}
@@ -0,0 +1,128 @@
1
+ // ============================================================
2
+ // Memory Query Tool — explicit agent-initiated memory recall.
3
+ //
4
+ // Allows the LLM to actively query recalled memories and user
5
+ // profile when it determines that the current context is
6
+ // insufficient for a good response.
7
+ // ============================================================
8
+ export const MEMORY_QUERY_TOOL_NAME = "memory_query";
9
+ // ── Schema ──────────────────────────────────────────────────
10
+ export const MEMORY_QUERY_TOOL_SCHEMA = {
11
+ type: "object",
12
+ properties: {
13
+ query: {
14
+ type: "string",
15
+ description: [
16
+ "The memory query — a natural language description of what you want to recall.",
17
+ "Examples:",
18
+ "• '用户的编程语言偏好' → searches tech preferences",
19
+ "• '用户之前提到的项目' → searches project history",
20
+ "• '上次画图的风格' → searches media generation history",
21
+ "• 'user's name and location' → searches personal facts",
22
+ "Be specific: '用户喜欢什么图片风格' is better than '用户偏好'.",
23
+ ].join("\n"),
24
+ },
25
+ category: {
26
+ type: "string",
27
+ description: [
28
+ "Optional: narrow the search to a specific category.",
29
+ "• 'profile' — user preferences, expertise, communication style",
30
+ "• 'facts' — recalled long-term memories",
31
+ "• 'media' — media generation preferences (image style, music genre, etc.)",
32
+ "• 'projects' — project context and tech stack",
33
+ "If omitted, searches across all categories.",
34
+ ].join("\n"),
35
+ },
36
+ },
37
+ required: ["query"],
38
+ };
39
+ // ── Tool factory ────────────────────────────────────────────
40
+ export function createMemoryQueryTool(deps) {
41
+ return {
42
+ name: MEMORY_QUERY_TOOL_NAME,
43
+ label: "Memory Query",
44
+ description: [
45
+ "Query your memory about this user to recall facts, preferences, or history.",
46
+ "Use this when you need information that might have been shared in previous conversations.",
47
+ "",
48
+ "Call this tool when:",
49
+ "- You want to personalize a response based on user preferences",
50
+ "- You recall the user mentioned something relevant but it's not in the current context",
51
+ "- You need to check media preferences before generating images/music/video",
52
+ "- You want to reference the user's project context or tech stack",
53
+ "",
54
+ "This tool searches recalled memories and the user profile.",
55
+ "It does NOT search the current conversation — that's already in your context.",
56
+ "Results may be empty if no relevant memories exist.",
57
+ ].join("\n"),
58
+ parameters: MEMORY_QUERY_TOOL_SCHEMA,
59
+ execute: async (_toolCallId, params) => {
60
+ const query = params.query?.trim();
61
+ if (!query) {
62
+ return {
63
+ content: [{ type: "text", text: "query parameter is required." }],
64
+ details: { type: "memory_query", found: false, errorCode: "empty_query" },
65
+ };
66
+ }
67
+ const category = params.category?.trim() || undefined;
68
+ const userId = deps?.userId ?? "user";
69
+ const sections = [];
70
+ // 1. Memory recall search
71
+ if (!category || category === "facts" || category === "projects") {
72
+ try {
73
+ const facts = deps?.queryGraph?.(query, userId) ?? [];
74
+ if (facts.length > 0) {
75
+ sections.push("## Recalled Memories\n" + facts.map((f) => `• ${f}`).join("\n"));
76
+ }
77
+ }
78
+ catch { /* degrade gracefully */ }
79
+ }
80
+ // 2. User Profile summary
81
+ if (!category || category === "profile" || category === "projects") {
82
+ try {
83
+ const profileText = deps?.getProfileSummary?.(userId) ?? null;
84
+ if (profileText) {
85
+ sections.push("## User Profile\n" + profileText);
86
+ }
87
+ }
88
+ catch { /* degrade gracefully */ }
89
+ }
90
+ // 3. Media Preferences
91
+ if (!category || category === "media") {
92
+ try {
93
+ const mediaPrefs = deps?.getMediaPreferences?.(userId) ?? null;
94
+ if (mediaPrefs) {
95
+ const lines = [];
96
+ if (mediaPrefs.imageStyle)
97
+ lines.push(`• Image style: ${mediaPrefs.imageStyle}`);
98
+ if (mediaPrefs.videoStyle)
99
+ lines.push(`• Video style: ${mediaPrefs.videoStyle}`);
100
+ if (mediaPrefs.musicGenre)
101
+ lines.push(`• Music genre: ${mediaPrefs.musicGenre}`);
102
+ if (mediaPrefs.musicMood)
103
+ lines.push(`• Music mood: ${mediaPrefs.musicMood}`);
104
+ if (mediaPrefs.primaryPurpose)
105
+ lines.push(`• Primary purpose: ${mediaPrefs.primaryPurpose}`);
106
+ if (mediaPrefs.colorPreference)
107
+ lines.push(`• Color preference: ${mediaPrefs.colorPreference}`);
108
+ if (lines.length > 0) {
109
+ sections.push("## Media Preferences\n" + lines.join("\n"));
110
+ }
111
+ }
112
+ }
113
+ catch { /* degrade gracefully */ }
114
+ }
115
+ if (sections.length === 0) {
116
+ return {
117
+ content: [{ type: "text", text: "No relevant memories found for this query. The user may not have shared this information yet." }],
118
+ details: { type: "memory_query", found: false, query },
119
+ };
120
+ }
121
+ return {
122
+ content: [{ type: "text", text: sections.join("\n\n") }],
123
+ details: { type: "memory_query", found: true, query, category: category ?? "all", sectionCount: sections.length },
124
+ };
125
+ },
126
+ };
127
+ }
128
+ //# sourceMappingURL=memory-query-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-query-tool.js","sourceRoot":"","sources":["../../src/skills/memory-query-tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ export declare const MEMORY_ENTRY_DELIMITER = "\n\u00A7\n";
2
+ export declare const DEFAULT_MEMORY_CHAR_LIMIT = 2200;
3
+ export declare const DEFAULT_USER_CHAR_LIMIT = 1375;
4
+ export type MemoryStoreTarget = "memory" | "user";
5
+ export interface MemoryStoreResult {
6
+ ok: boolean;
7
+ message: string;
8
+ target: MemoryStoreTarget;
9
+ entries: readonly string[];
10
+ entryCount: number;
11
+ usage: string;
12
+ errorCode?: string;
13
+ }
14
+ export interface MemoryStoreOptions {
15
+ memoryCharLimit?: number;
16
+ userCharLimit?: number;
17
+ }
18
+ export interface MemoryStoreSerialized {
19
+ memory: string;
20
+ user: string;
21
+ }
22
+ export declare class MemoryStore {
23
+ private memoryEntries;
24
+ private userEntries;
25
+ private frozenSnapshot;
26
+ private snapshotFrozen;
27
+ private readonly memoryCharLimit;
28
+ private readonly userCharLimit;
29
+ constructor(options?: MemoryStoreOptions);
30
+ /**
31
+ * Load from serialized form (e.g. from PG or filesystem).
32
+ * Deduplicates entries on load.
33
+ */
34
+ loadFromSerialized(data: Partial<MemoryStoreSerialized>): void;
35
+ /**
36
+ * Serialize current live state for persistence.
37
+ */
38
+ serialize(): MemoryStoreSerialized;
39
+ /**
40
+ * Freeze current entries for system prompt injection.
41
+ * Call once at session start. After freezing, mutations update
42
+ * live state but NOT the system prompt block.
43
+ */
44
+ freezeSnapshot(): void;
45
+ /**
46
+ * Get frozen system prompt block for the given target.
47
+ * Returns empty string if no entries or not yet frozen.
48
+ */
49
+ getSystemPromptBlock(target: MemoryStoreTarget): string;
50
+ add(target: MemoryStoreTarget, content: string): MemoryStoreResult;
51
+ replace(target: MemoryStoreTarget, oldText: string, newContent: string): MemoryStoreResult;
52
+ remove(target: MemoryStoreTarget, oldText: string): MemoryStoreResult;
53
+ getEntries(target: MemoryStoreTarget): readonly string[];
54
+ getUsage(target: MemoryStoreTarget): {
55
+ used: number;
56
+ limit: number;
57
+ percent: number;
58
+ };
59
+ isEmpty(): boolean;
60
+ private entriesFor;
61
+ private charLimitFor;
62
+ private formatUsage;
63
+ private renderBlock;
64
+ private successResult;
65
+ private errorResult;
66
+ }
67
+ //# sourceMappingURL=memory-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-store.d.ts","sourceRoot":"","sources":["../../src/skills/memory-store.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,sBAAsB,eAAU,CAAC;AAC9C,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAC9C,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAE5C,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,MAAM,CAAC;AAIlD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID,MAAM,WAAW,kBAAkB;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAID,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAID,qBAAa,WAAW;IACtB,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,cAAc,CAA8D;IACpF,OAAO,CAAC,cAAc,CAAS;IAE/B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;gBAE3B,OAAO,CAAC,EAAE,kBAAkB;IAOxC;;;OAGG;IACH,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAAG,IAAI;IAK9D;;OAEG;IACH,SAAS,IAAI,qBAAqB;IASlC;;;;OAIG;IACH,cAAc,IAAI,IAAI;IAQtB;;;OAGG;IACH,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM;IAUvD,GAAG,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,GAAG,iBAAiB;IA4BlE,OAAO,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,iBAAiB;IAiD1F,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,GAAG,iBAAiB;IA4BrE,UAAU,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,MAAM,EAAE;IAIxD,QAAQ,CAAC,MAAM,EAAE,iBAAiB,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAOrF,OAAO,IAAI,OAAO;IAMlB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,WAAW;CAYpB"}
@@ -0,0 +1,229 @@
1
+ // ============================================================
2
+ // Memory Store — character-bounded local memory for agent notes.
3
+ //
4
+ // Inspired by Hermes' MemoryStore design:
5
+ // - Two targets: "memory" (agent notes) + "user" (user profile)
6
+ // - § delimiter between entries
7
+ // - Frozen snapshot for system prompt (KV cache stability)
8
+ // - Exact duplicate rejection
9
+ // - Content safety scanning
10
+ // - Pure in-memory; persistence is the consumer's responsibility.
11
+ // ============================================================
12
+ import { isMemoryContentSafe } from "./memory-tool.js";
13
+ // ── Constants ───────────────────────────────────────────────
14
+ export const MEMORY_ENTRY_DELIMITER = "\n§\n";
15
+ export const DEFAULT_MEMORY_CHAR_LIMIT = 2200;
16
+ export const DEFAULT_USER_CHAR_LIMIT = 1375;
17
+ // ── MemoryStore class ───────────────────────────────────────
18
+ export class MemoryStore {
19
+ memoryEntries = [];
20
+ userEntries = [];
21
+ frozenSnapshot = { memory: "", user: "" };
22
+ snapshotFrozen = false;
23
+ memoryCharLimit;
24
+ userCharLimit;
25
+ constructor(options) {
26
+ this.memoryCharLimit = options?.memoryCharLimit ?? DEFAULT_MEMORY_CHAR_LIMIT;
27
+ this.userCharLimit = options?.userCharLimit ?? DEFAULT_USER_CHAR_LIMIT;
28
+ }
29
+ // ── Load / Serialize ────────────────────────────────────
30
+ /**
31
+ * Load from serialized form (e.g. from PG or filesystem).
32
+ * Deduplicates entries on load.
33
+ */
34
+ loadFromSerialized(data) {
35
+ this.memoryEntries = deduplicateEntries(parseEntries(data.memory ?? ""));
36
+ this.userEntries = deduplicateEntries(parseEntries(data.user ?? ""));
37
+ }
38
+ /**
39
+ * Serialize current live state for persistence.
40
+ */
41
+ serialize() {
42
+ return {
43
+ memory: this.memoryEntries.join(MEMORY_ENTRY_DELIMITER),
44
+ user: this.userEntries.join(MEMORY_ENTRY_DELIMITER),
45
+ };
46
+ }
47
+ // ── Snapshot (frozen for system prompt) ─────────────────
48
+ /**
49
+ * Freeze current entries for system prompt injection.
50
+ * Call once at session start. After freezing, mutations update
51
+ * live state but NOT the system prompt block.
52
+ */
53
+ freezeSnapshot() {
54
+ this.frozenSnapshot = {
55
+ memory: this.renderBlock("memory", this.memoryEntries),
56
+ user: this.renderBlock("user", this.userEntries),
57
+ };
58
+ this.snapshotFrozen = true;
59
+ }
60
+ /**
61
+ * Get frozen system prompt block for the given target.
62
+ * Returns empty string if no entries or not yet frozen.
63
+ */
64
+ getSystemPromptBlock(target) {
65
+ if (!this.snapshotFrozen) {
66
+ // Auto-freeze on first access
67
+ this.freezeSnapshot();
68
+ }
69
+ return this.frozenSnapshot[target];
70
+ }
71
+ // ── Mutations ───────────────────────────────────────────
72
+ add(target, content) {
73
+ const trimmed = content.trim();
74
+ if (!trimmed) {
75
+ return this.errorResult(target, "Content cannot be empty.", "empty_content");
76
+ }
77
+ if (!isMemoryContentSafe(trimmed)) {
78
+ return this.errorResult(target, "Content rejected: potential injection detected.", "unsafe_content");
79
+ }
80
+ const entries = this.entriesFor(target);
81
+ // Exact duplicate check
82
+ if (entries.includes(trimmed)) {
83
+ return this.successResult(target, "Entry already exists (no change).");
84
+ }
85
+ // Character budget check
86
+ const newEntries = [...entries, trimmed];
87
+ const newTotal = newEntries.join(MEMORY_ENTRY_DELIMITER).length;
88
+ if (newTotal > this.charLimitFor(target)) {
89
+ const usage = this.formatUsage(target);
90
+ return this.errorResult(target, `Memory full (${usage}). Remove old entries first.`, "over_limit");
91
+ }
92
+ entries.push(trimmed);
93
+ return this.successResult(target, "Entry added.");
94
+ }
95
+ replace(target, oldText, newContent) {
96
+ const searchText = oldText.trim();
97
+ const replacement = newContent.trim();
98
+ if (!searchText) {
99
+ return this.errorResult(target, "old_text cannot be empty.", "empty_old_text");
100
+ }
101
+ if (!replacement) {
102
+ return this.errorResult(target, "content cannot be empty.", "empty_content");
103
+ }
104
+ if (!isMemoryContentSafe(replacement)) {
105
+ return this.errorResult(target, "Content rejected: potential injection detected.", "unsafe_content");
106
+ }
107
+ const entries = this.entriesFor(target);
108
+ const matchIndices = entries
109
+ .map((entry, i) => entry.includes(searchText) ? i : -1)
110
+ .filter((i) => i >= 0);
111
+ if (matchIndices.length === 0) {
112
+ return this.errorResult(target, `No entry contains: "${clipForMessage(searchText)}"`, "not_found");
113
+ }
114
+ if (matchIndices.length > 1) {
115
+ // Check if all matches are identical (harmless duplicate)
116
+ const unique = new Set(matchIndices.map((i) => entries[i]));
117
+ if (unique.size > 1) {
118
+ return this.errorResult(target, `Multiple entries match: "${clipForMessage(searchText)}" (${matchIndices.length} matches). Be more specific.`, "ambiguous_match");
119
+ }
120
+ }
121
+ // Replace first match
122
+ const matchIndex = matchIndices[0];
123
+ // Check char limit with replacement
124
+ const projected = [...entries];
125
+ projected[matchIndex] = replacement;
126
+ const projectedTotal = projected.join(MEMORY_ENTRY_DELIMITER).length;
127
+ if (projectedTotal > this.charLimitFor(target)) {
128
+ const usage = this.formatUsage(target);
129
+ return this.errorResult(target, `Replacement would exceed limit (${usage}).`, "over_limit");
130
+ }
131
+ entries[matchIndex] = replacement;
132
+ return this.successResult(target, "Entry replaced.");
133
+ }
134
+ remove(target, oldText) {
135
+ const searchText = oldText.trim();
136
+ if (!searchText) {
137
+ return this.errorResult(target, "old_text cannot be empty.", "empty_old_text");
138
+ }
139
+ const entries = this.entriesFor(target);
140
+ const matchIndices = entries
141
+ .map((entry, i) => entry.includes(searchText) ? i : -1)
142
+ .filter((i) => i >= 0);
143
+ if (matchIndices.length === 0) {
144
+ return this.errorResult(target, `No entry contains: "${clipForMessage(searchText)}"`, "not_found");
145
+ }
146
+ // Remove all matches (safe: if they all contain the substring, remove them all)
147
+ for (let i = matchIndices.length - 1; i >= 0; i--) {
148
+ entries.splice(matchIndices[i], 1);
149
+ }
150
+ return this.successResult(target, matchIndices.length === 1 ? "Entry removed." : `${matchIndices.length} entries removed.`);
151
+ }
152
+ // ── Read-only accessors ─────────────────────────────────
153
+ getEntries(target) {
154
+ return this.entriesFor(target);
155
+ }
156
+ getUsage(target) {
157
+ const entries = this.entriesFor(target);
158
+ const used = entries.length > 0 ? entries.join(MEMORY_ENTRY_DELIMITER).length : 0;
159
+ const limit = this.charLimitFor(target);
160
+ return { used, limit, percent: limit > 0 ? Math.round((used / limit) * 100) : 0 };
161
+ }
162
+ isEmpty() {
163
+ return this.memoryEntries.length === 0 && this.userEntries.length === 0;
164
+ }
165
+ // ── Private helpers ─────────────────────────────────────
166
+ entriesFor(target) {
167
+ return target === "user" ? this.userEntries : this.memoryEntries;
168
+ }
169
+ charLimitFor(target) {
170
+ return target === "user" ? this.userCharLimit : this.memoryCharLimit;
171
+ }
172
+ formatUsage(target) {
173
+ const { used, limit, percent } = this.getUsage(target);
174
+ return `${percent}% — ${used}/${limit} chars`;
175
+ }
176
+ renderBlock(target, entries) {
177
+ if (entries.length === 0)
178
+ return "";
179
+ const label = target === "user" ? "USER PROFILE" : "MEMORY";
180
+ const usage = this.formatUsage(target);
181
+ const divider = "══════════════════════════════════════════════════════════";
182
+ const body = entries.join(MEMORY_ENTRY_DELIMITER);
183
+ return `${divider}\n${label} (your personal notes) [${usage}]\n${divider}\n${body}`;
184
+ }
185
+ successResult(target, message) {
186
+ const entries = this.entriesFor(target);
187
+ return {
188
+ ok: true,
189
+ message,
190
+ target,
191
+ entries,
192
+ entryCount: entries.length,
193
+ usage: this.formatUsage(target),
194
+ };
195
+ }
196
+ errorResult(target, message, errorCode) {
197
+ const entries = this.entriesFor(target);
198
+ return {
199
+ ok: false,
200
+ message,
201
+ target,
202
+ entries,
203
+ entryCount: entries.length,
204
+ usage: this.formatUsage(target),
205
+ errorCode,
206
+ };
207
+ }
208
+ }
209
+ // ── Utilities ─────────────────────────────────────────────
210
+ function parseEntries(raw) {
211
+ if (!raw.trim())
212
+ return [];
213
+ return raw.split(MEMORY_ENTRY_DELIMITER).map((e) => e.trim()).filter(Boolean);
214
+ }
215
+ function deduplicateEntries(entries) {
216
+ const seen = new Set();
217
+ return entries.filter((entry) => {
218
+ if (seen.has(entry))
219
+ return false;
220
+ seen.add(entry);
221
+ return true;
222
+ });
223
+ }
224
+ function clipForMessage(text, maxLength = 60) {
225
+ if (text.length <= maxLength)
226
+ return text;
227
+ return `${text.slice(0, maxLength - 1).trimEnd()}…`;
228
+ }
229
+ //# sourceMappingURL=memory-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-store.js","sourceRoot":"","sources":["../../src/skills/memory-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ import type { MemoryProvider, MemorySearchResult } from "qlogicagent-runtime-contracts";
2
+ import type { MemoryStore, MemoryStoreTarget } from "./memory-store.js";
3
+ export declare const MEMORY_TOOL_NAME: "memory";
4
+ export declare const MEMORY_TOOL_MAX_CONTENT_LENGTH = 2000;
5
+ export declare const MEMORY_TOOL_ACTIONS: readonly ["add", "replace", "remove", "search"];
6
+ export type MemoryToolAction = (typeof MEMORY_TOOL_ACTIONS)[number];
7
+ export declare const MEMORY_TOOL_SCHEMA: {
8
+ readonly type: "object";
9
+ readonly properties: {
10
+ readonly action: {
11
+ readonly type: "string";
12
+ readonly enum: string[];
13
+ readonly description: string;
14
+ };
15
+ readonly target: {
16
+ readonly type: "string";
17
+ readonly enum: readonly ["memory", "user"];
18
+ readonly description: string;
19
+ };
20
+ readonly content: {
21
+ readonly type: "string";
22
+ readonly description: string;
23
+ };
24
+ readonly old_text: {
25
+ readonly type: "string";
26
+ readonly description: "Required for 'replace' and 'remove'. A substring that uniquely identifies the note entry to modify.";
27
+ };
28
+ readonly query: {
29
+ readonly type: "string";
30
+ readonly description: "Required for 'search'. Natural language query to find relevant memories.";
31
+ };
32
+ };
33
+ readonly required: readonly ["action"];
34
+ };
35
+ export declare const MEMORY_TOOL_DESCRIPTION: string;
36
+ export declare const MEMORY_TOOL_LABEL = "Memory";
37
+ export declare function isMemoryContentSafe(text: string): boolean;
38
+ export interface MemoryToolParams {
39
+ action: MemoryToolAction;
40
+ target?: MemoryStoreTarget;
41
+ content?: string;
42
+ old_text?: string;
43
+ query?: string;
44
+ }
45
+ export interface MemoryToolResult {
46
+ ok: boolean;
47
+ message: string;
48
+ action: string;
49
+ /** For MD store operations: live entry count */
50
+ entryCount?: number;
51
+ /** For MD store operations: usage string */
52
+ usage?: string;
53
+ /** For search: qmemory results */
54
+ results?: MemorySearchResult[];
55
+ /** Indicates MD store was mutated (consumer should persist) */
56
+ storeModified?: boolean;
57
+ errorCode?: string;
58
+ }
59
+ export interface MemoryToolExecutorDeps {
60
+ /** QMemory provider for semantic search. */
61
+ provider: MemoryProvider;
62
+ /** Local MD memory store for notes. */
63
+ store?: MemoryStore;
64
+ userId: string;
65
+ sessionId?: string;
66
+ }
67
+ export declare function executeMemoryTool(params: MemoryToolParams, deps: MemoryToolExecutorDeps): Promise<MemoryToolResult>;
68
+ //# sourceMappingURL=memory-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-tool.d.ts","sourceRoot":"","sources":["../../src/skills/memory-tool.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACxF,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAIxE,eAAO,MAAM,gBAAgB,EAAG,QAAiB,CAAC;AAClD,eAAO,MAAM,8BAA8B,OAAO,CAAC;AAEnD,eAAO,MAAM,mBAAmB,iDAAkD,CAAC;AACnF,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAIpE,eAAO,MAAM,kBAAkB;;;;;2BAKe,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;CAuC5C,CAAC;AAEX,eAAO,MAAM,uBAAuB,QAaxB,CAAC;AAEb,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAW1C,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEzD;AAID,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC/B,+DAA+D;IAC/D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID,MAAM,WAAW,sBAAsB;IACrC,4CAA4C;IAC5C,QAAQ,EAAE,cAAc,CAAC;IACzB,uCAAuC;IACvC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,gBAAgB,CAAC,CAyG3B"}