@agntk/core 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 (502) hide show
  1. package/README.md +227 -0
  2. package/dist/advanced/index.d.ts +35 -0
  3. package/dist/advanced/index.d.ts.map +1 -0
  4. package/dist/advanced/index.js +52 -0
  5. package/dist/advanced/index.js.map +1 -0
  6. package/dist/agent.d.ts +46 -0
  7. package/dist/agent.d.ts.map +1 -0
  8. package/dist/agent.js +381 -0
  9. package/dist/agent.js.map +1 -0
  10. package/dist/config/defaults.d.ts +10 -0
  11. package/dist/config/defaults.d.ts.map +1 -0
  12. package/dist/config/defaults.js +34 -0
  13. package/dist/config/defaults.js.map +1 -0
  14. package/dist/config/index.d.ts +7 -0
  15. package/dist/config/index.d.ts.map +1 -0
  16. package/dist/config/index.js +11 -0
  17. package/dist/config/index.js.map +1 -0
  18. package/dist/config/loader.d.ts +54 -0
  19. package/dist/config/loader.d.ts.map +1 -0
  20. package/dist/config/loader.js +222 -0
  21. package/dist/config/loader.js.map +1 -0
  22. package/dist/config/schema.d.ts +912 -0
  23. package/dist/config/schema.d.ts.map +1 -0
  24. package/dist/config/schema.js +119 -0
  25. package/dist/config/schema.js.map +1 -0
  26. package/dist/constants.d.ts +17 -0
  27. package/dist/constants.d.ts.map +1 -0
  28. package/dist/constants.js +23 -0
  29. package/dist/constants.js.map +1 -0
  30. package/dist/evals/assertions.d.ts +54 -0
  31. package/dist/evals/assertions.d.ts.map +1 -0
  32. package/dist/evals/assertions.js +200 -0
  33. package/dist/evals/assertions.js.map +1 -0
  34. package/dist/evals/index.d.ts +9 -0
  35. package/dist/evals/index.d.ts.map +1 -0
  36. package/dist/evals/index.js +8 -0
  37. package/dist/evals/index.js.map +1 -0
  38. package/dist/evals/runner.d.ts +34 -0
  39. package/dist/evals/runner.d.ts.map +1 -0
  40. package/dist/evals/runner.js +186 -0
  41. package/dist/evals/runner.js.map +1 -0
  42. package/dist/evals/types.d.ts +68 -0
  43. package/dist/evals/types.d.ts.map +1 -0
  44. package/dist/evals/types.js +5 -0
  45. package/dist/evals/types.js.map +1 -0
  46. package/dist/guardrails/built-ins.d.ts +48 -0
  47. package/dist/guardrails/built-ins.d.ts.map +1 -0
  48. package/dist/guardrails/built-ins.js +149 -0
  49. package/dist/guardrails/built-ins.js.map +1 -0
  50. package/dist/guardrails/index.d.ts +8 -0
  51. package/dist/guardrails/index.d.ts.map +1 -0
  52. package/dist/guardrails/index.js +7 -0
  53. package/dist/guardrails/index.js.map +1 -0
  54. package/dist/guardrails/runner.d.ts +49 -0
  55. package/dist/guardrails/runner.d.ts.map +1 -0
  56. package/dist/guardrails/runner.js +148 -0
  57. package/dist/guardrails/runner.js.map +1 -0
  58. package/dist/guardrails/types.d.ts +63 -0
  59. package/dist/guardrails/types.d.ts.map +1 -0
  60. package/dist/guardrails/types.js +22 -0
  61. package/dist/guardrails/types.js.map +1 -0
  62. package/dist/index.d.ts +31 -0
  63. package/dist/index.d.ts.map +1 -0
  64. package/dist/index.js +35 -0
  65. package/dist/index.js.map +1 -0
  66. package/dist/memory/engine.d.ts +130 -0
  67. package/dist/memory/engine.d.ts.map +1 -0
  68. package/dist/memory/engine.js +227 -0
  69. package/dist/memory/engine.js.map +1 -0
  70. package/dist/memory/extraction.d.ts +24 -0
  71. package/dist/memory/extraction.d.ts.map +1 -0
  72. package/dist/memory/extraction.js +130 -0
  73. package/dist/memory/extraction.js.map +1 -0
  74. package/dist/memory/loader.d.ts +20 -0
  75. package/dist/memory/loader.d.ts.map +1 -0
  76. package/dist/memory/loader.js +73 -0
  77. package/dist/memory/loader.js.map +1 -0
  78. package/dist/memory/store.d.ts +42 -0
  79. package/dist/memory/store.d.ts.map +1 -0
  80. package/dist/memory/store.js +120 -0
  81. package/dist/memory/store.js.map +1 -0
  82. package/dist/memory/tools.d.ts +39 -0
  83. package/dist/memory/tools.d.ts.map +1 -0
  84. package/dist/memory/tools.js +225 -0
  85. package/dist/memory/tools.js.map +1 -0
  86. package/dist/memory/types.d.ts +46 -0
  87. package/dist/memory/types.d.ts.map +1 -0
  88. package/dist/memory/types.js +8 -0
  89. package/dist/memory/types.js.map +1 -0
  90. package/dist/memory/vectra-store.d.ts +31 -0
  91. package/dist/memory/vectra-store.d.ts.map +1 -0
  92. package/dist/memory/vectra-store.js +122 -0
  93. package/dist/memory/vectra-store.js.map +1 -0
  94. package/dist/models.d.ts +37 -0
  95. package/dist/models.d.ts.map +1 -0
  96. package/dist/models.js +131 -0
  97. package/dist/models.js.map +1 -0
  98. package/dist/observability/index.d.ts +6 -0
  99. package/dist/observability/index.d.ts.map +1 -0
  100. package/dist/observability/index.js +5 -0
  101. package/dist/observability/index.js.map +1 -0
  102. package/dist/observability/langfuse.d.ts +47 -0
  103. package/dist/observability/langfuse.d.ts.map +1 -0
  104. package/dist/observability/langfuse.js +112 -0
  105. package/dist/observability/langfuse.js.map +1 -0
  106. package/dist/observability/types.d.ts +37 -0
  107. package/dist/observability/types.d.ts.map +1 -0
  108. package/dist/observability/types.js +5 -0
  109. package/dist/observability/types.js.map +1 -0
  110. package/dist/pool/index.d.ts +7 -0
  111. package/dist/pool/index.d.ts.map +1 -0
  112. package/dist/pool/index.js +6 -0
  113. package/dist/pool/index.js.map +1 -0
  114. package/dist/pool/specialist-pool.d.ts +59 -0
  115. package/dist/pool/specialist-pool.d.ts.map +1 -0
  116. package/dist/pool/specialist-pool.js +224 -0
  117. package/dist/pool/specialist-pool.js.map +1 -0
  118. package/dist/pool/tools.d.ts +63 -0
  119. package/dist/pool/tools.d.ts.map +1 -0
  120. package/dist/pool/tools.js +83 -0
  121. package/dist/pool/tools.js.map +1 -0
  122. package/dist/pool/types.d.ts +79 -0
  123. package/dist/pool/types.d.ts.map +1 -0
  124. package/dist/pool/types.js +5 -0
  125. package/dist/pool/types.js.map +1 -0
  126. package/dist/presets/index.d.ts +5 -0
  127. package/dist/presets/index.d.ts.map +1 -0
  128. package/dist/presets/index.js +5 -0
  129. package/dist/presets/index.js.map +1 -0
  130. package/dist/presets/role-registry.d.ts +41 -0
  131. package/dist/presets/role-registry.d.ts.map +1 -0
  132. package/dist/presets/role-registry.js +213 -0
  133. package/dist/presets/role-registry.js.map +1 -0
  134. package/dist/presets/roles.d.ts +105 -0
  135. package/dist/presets/roles.d.ts.map +1 -0
  136. package/dist/presets/roles.js +207 -0
  137. package/dist/presets/roles.js.map +1 -0
  138. package/dist/presets/sub-agent-configs.d.ts +19 -0
  139. package/dist/presets/sub-agent-configs.d.ts.map +1 -0
  140. package/dist/presets/sub-agent-configs.js +71 -0
  141. package/dist/presets/sub-agent-configs.js.map +1 -0
  142. package/dist/presets/tool-preset-registry.d.ts +34 -0
  143. package/dist/presets/tool-preset-registry.d.ts.map +1 -0
  144. package/dist/presets/tool-preset-registry.js +107 -0
  145. package/dist/presets/tool-preset-registry.js.map +1 -0
  146. package/dist/presets/tools.d.ts +278 -0
  147. package/dist/presets/tools.d.ts.map +1 -0
  148. package/dist/presets/tools.js +108 -0
  149. package/dist/presets/tools.js.map +1 -0
  150. package/dist/prompts/context.d.ts +47 -0
  151. package/dist/prompts/context.d.ts.map +1 -0
  152. package/dist/prompts/context.js +187 -0
  153. package/dist/prompts/context.js.map +1 -0
  154. package/dist/prompts/template.d.ts +17 -0
  155. package/dist/prompts/template.d.ts.map +1 -0
  156. package/dist/prompts/template.js +32 -0
  157. package/dist/prompts/template.js.map +1 -0
  158. package/dist/prompts/templates.d.ts +11 -0
  159. package/dist/prompts/templates.d.ts.map +1 -0
  160. package/dist/prompts/templates.js +115 -0
  161. package/dist/prompts/templates.js.map +1 -0
  162. package/dist/reflection.d.ts +48 -0
  163. package/dist/reflection.d.ts.map +1 -0
  164. package/dist/reflection.js +91 -0
  165. package/dist/reflection.js.map +1 -0
  166. package/dist/skills/index.d.ts +6 -0
  167. package/dist/skills/index.d.ts.map +1 -0
  168. package/dist/skills/index.js +5 -0
  169. package/dist/skills/index.js.map +1 -0
  170. package/dist/skills/loader.d.ts +84 -0
  171. package/dist/skills/loader.d.ts.map +1 -0
  172. package/dist/skills/loader.js +400 -0
  173. package/dist/skills/loader.js.map +1 -0
  174. package/dist/skills/types.d.ts +66 -0
  175. package/dist/skills/types.d.ts.map +1 -0
  176. package/dist/skills/types.js +6 -0
  177. package/dist/skills/types.js.map +1 -0
  178. package/dist/streaming/data-parts.d.ts +163 -0
  179. package/dist/streaming/data-parts.d.ts.map +1 -0
  180. package/dist/streaming/data-parts.js +14 -0
  181. package/dist/streaming/data-parts.js.map +1 -0
  182. package/dist/streaming/index.d.ts +8 -0
  183. package/dist/streaming/index.d.ts.map +1 -0
  184. package/dist/streaming/index.js +10 -0
  185. package/dist/streaming/index.js.map +1 -0
  186. package/dist/streaming/transient.d.ts +136 -0
  187. package/dist/streaming/transient.d.ts.map +1 -0
  188. package/dist/streaming/transient.js +201 -0
  189. package/dist/streaming/transient.js.map +1 -0
  190. package/dist/tools/approval.d.ts +67 -0
  191. package/dist/tools/approval.d.ts.map +1 -0
  192. package/dist/tools/approval.js +113 -0
  193. package/dist/tools/approval.js.map +1 -0
  194. package/dist/tools/ast-grep/cli.d.ts +16 -0
  195. package/dist/tools/ast-grep/cli.d.ts.map +1 -0
  196. package/dist/tools/ast-grep/cli.js +198 -0
  197. package/dist/tools/ast-grep/cli.js.map +1 -0
  198. package/dist/tools/ast-grep/constants.d.ts +24 -0
  199. package/dist/tools/ast-grep/constants.d.ts.map +1 -0
  200. package/dist/tools/ast-grep/constants.js +247 -0
  201. package/dist/tools/ast-grep/constants.js.map +1 -0
  202. package/dist/tools/ast-grep/downloader.d.ts +6 -0
  203. package/dist/tools/ast-grep/downloader.d.ts.map +1 -0
  204. package/dist/tools/ast-grep/downloader.js +137 -0
  205. package/dist/tools/ast-grep/downloader.js.map +1 -0
  206. package/dist/tools/ast-grep/index.d.ts +7 -0
  207. package/dist/tools/ast-grep/index.d.ts.map +1 -0
  208. package/dist/tools/ast-grep/index.js +6 -0
  209. package/dist/tools/ast-grep/index.js.map +1 -0
  210. package/dist/tools/ast-grep/tools.d.ts +33 -0
  211. package/dist/tools/ast-grep/tools.d.ts.map +1 -0
  212. package/dist/tools/ast-grep/tools.js +140 -0
  213. package/dist/tools/ast-grep/tools.js.map +1 -0
  214. package/dist/tools/ast-grep/types.d.ts +68 -0
  215. package/dist/tools/ast-grep/types.d.ts.map +1 -0
  216. package/dist/tools/ast-grep/types.js +2 -0
  217. package/dist/tools/ast-grep/types.js.map +1 -0
  218. package/dist/tools/ast-grep/utils.d.ts +4 -0
  219. package/dist/tools/ast-grep/utils.d.ts.map +1 -0
  220. package/dist/tools/ast-grep/utils.js +55 -0
  221. package/dist/tools/ast-grep/utils.js.map +1 -0
  222. package/dist/tools/browser/index.d.ts +6 -0
  223. package/dist/tools/browser/index.d.ts.map +1 -0
  224. package/dist/tools/browser/index.js +5 -0
  225. package/dist/tools/browser/index.js.map +1 -0
  226. package/dist/tools/browser/stream.d.ts +112 -0
  227. package/dist/tools/browser/stream.d.ts.map +1 -0
  228. package/dist/tools/browser/stream.js +228 -0
  229. package/dist/tools/browser/stream.js.map +1 -0
  230. package/dist/tools/browser/tool.d.ts +144 -0
  231. package/dist/tools/browser/tool.d.ts.map +1 -0
  232. package/dist/tools/browser/tool.js +214 -0
  233. package/dist/tools/browser/tool.js.map +1 -0
  234. package/dist/tools/browser/types.d.ts +216 -0
  235. package/dist/tools/browser/types.d.ts.map +1 -0
  236. package/dist/tools/browser/types.js +146 -0
  237. package/dist/tools/browser/types.js.map +1 -0
  238. package/dist/tools/deep-reasoning/constants.d.ts +11 -0
  239. package/dist/tools/deep-reasoning/constants.d.ts.map +1 -0
  240. package/dist/tools/deep-reasoning/constants.js +35 -0
  241. package/dist/tools/deep-reasoning/constants.js.map +1 -0
  242. package/dist/tools/deep-reasoning/engine.d.ts +20 -0
  243. package/dist/tools/deep-reasoning/engine.d.ts.map +1 -0
  244. package/dist/tools/deep-reasoning/engine.js +77 -0
  245. package/dist/tools/deep-reasoning/engine.js.map +1 -0
  246. package/dist/tools/deep-reasoning/index.d.ts +5 -0
  247. package/dist/tools/deep-reasoning/index.d.ts.map +1 -0
  248. package/dist/tools/deep-reasoning/index.js +7 -0
  249. package/dist/tools/deep-reasoning/index.js.map +1 -0
  250. package/dist/tools/deep-reasoning/tools.d.ts +12 -0
  251. package/dist/tools/deep-reasoning/tools.d.ts.map +1 -0
  252. package/dist/tools/deep-reasoning/tools.js +23 -0
  253. package/dist/tools/deep-reasoning/tools.js.map +1 -0
  254. package/dist/tools/deep-reasoning/types.d.ts +66 -0
  255. package/dist/tools/deep-reasoning/types.d.ts.map +1 -0
  256. package/dist/tools/deep-reasoning/types.js +13 -0
  257. package/dist/tools/deep-reasoning/types.js.map +1 -0
  258. package/dist/tools/factory.d.ts +109 -0
  259. package/dist/tools/factory.d.ts.map +1 -0
  260. package/dist/tools/factory.js +166 -0
  261. package/dist/tools/factory.js.map +1 -0
  262. package/dist/tools/file/index.d.ts +8 -0
  263. package/dist/tools/file/index.d.ts.map +1 -0
  264. package/dist/tools/file/index.js +8 -0
  265. package/dist/tools/file/index.js.map +1 -0
  266. package/dist/tools/file/tools.d.ts +45 -0
  267. package/dist/tools/file/tools.d.ts.map +1 -0
  268. package/dist/tools/file/tools.js +206 -0
  269. package/dist/tools/file/tools.js.map +1 -0
  270. package/dist/tools/glob/cli.d.ts +8 -0
  271. package/dist/tools/glob/cli.d.ts.map +1 -0
  272. package/dist/tools/glob/cli.js +168 -0
  273. package/dist/tools/glob/cli.js.map +1 -0
  274. package/dist/tools/glob/constants.d.ts +7 -0
  275. package/dist/tools/glob/constants.d.ts.map +1 -0
  276. package/dist/tools/glob/constants.js +17 -0
  277. package/dist/tools/glob/constants.js.map +1 -0
  278. package/dist/tools/glob/index.d.ts +6 -0
  279. package/dist/tools/glob/index.d.ts.map +1 -0
  280. package/dist/tools/glob/index.js +5 -0
  281. package/dist/tools/glob/index.js.map +1 -0
  282. package/dist/tools/glob/tools.d.ts +15 -0
  283. package/dist/tools/glob/tools.d.ts.map +1 -0
  284. package/dist/tools/glob/tools.js +74 -0
  285. package/dist/tools/glob/tools.js.map +1 -0
  286. package/dist/tools/glob/types.d.ts +20 -0
  287. package/dist/tools/glob/types.d.ts.map +1 -0
  288. package/dist/tools/glob/types.js +2 -0
  289. package/dist/tools/glob/types.js.map +1 -0
  290. package/dist/tools/glob/utils.d.ts +3 -0
  291. package/dist/tools/glob/utils.d.ts.map +1 -0
  292. package/dist/tools/glob/utils.js +20 -0
  293. package/dist/tools/glob/utils.js.map +1 -0
  294. package/dist/tools/grep/cli.d.ts +4 -0
  295. package/dist/tools/grep/cli.d.ts.map +1 -0
  296. package/dist/tools/grep/cli.js +224 -0
  297. package/dist/tools/grep/cli.js.map +1 -0
  298. package/dist/tools/grep/constants.d.ts +19 -0
  299. package/dist/tools/grep/constants.d.ts.map +1 -0
  300. package/dist/tools/grep/constants.js +115 -0
  301. package/dist/tools/grep/constants.js.map +1 -0
  302. package/dist/tools/grep/downloader.d.ts +3 -0
  303. package/dist/tools/grep/downloader.d.ts.map +1 -0
  304. package/dist/tools/grep/downloader.js +164 -0
  305. package/dist/tools/grep/downloader.js.map +1 -0
  306. package/dist/tools/grep/index.d.ts +7 -0
  307. package/dist/tools/grep/index.d.ts.map +1 -0
  308. package/dist/tools/grep/index.js +6 -0
  309. package/dist/tools/grep/index.js.map +1 -0
  310. package/dist/tools/grep/tools.d.ts +19 -0
  311. package/dist/tools/grep/tools.d.ts.map +1 -0
  312. package/dist/tools/grep/tools.js +82 -0
  313. package/dist/tools/grep/tools.js.map +1 -0
  314. package/dist/tools/grep/types.d.ts +37 -0
  315. package/dist/tools/grep/types.d.ts.map +1 -0
  316. package/dist/tools/grep/types.js +2 -0
  317. package/dist/tools/grep/types.js.map +1 -0
  318. package/dist/tools/grep/utils.d.ts +4 -0
  319. package/dist/tools/grep/utils.d.ts.map +1 -0
  320. package/dist/tools/grep/utils.js +41 -0
  321. package/dist/tools/grep/utils.js.map +1 -0
  322. package/dist/tools/index.d.ts +21 -0
  323. package/dist/tools/index.d.ts.map +1 -0
  324. package/dist/tools/index.js +33 -0
  325. package/dist/tools/index.js.map +1 -0
  326. package/dist/tools/model-retry.d.ts +54 -0
  327. package/dist/tools/model-retry.d.ts.map +1 -0
  328. package/dist/tools/model-retry.js +110 -0
  329. package/dist/tools/model-retry.js.map +1 -0
  330. package/dist/tools/plan/constants.d.ts +18 -0
  331. package/dist/tools/plan/constants.d.ts.map +1 -0
  332. package/dist/tools/plan/constants.js +13 -0
  333. package/dist/tools/plan/constants.js.map +1 -0
  334. package/dist/tools/plan/index.d.ts +5 -0
  335. package/dist/tools/plan/index.d.ts.map +1 -0
  336. package/dist/tools/plan/index.js +7 -0
  337. package/dist/tools/plan/index.js.map +1 -0
  338. package/dist/tools/plan/tools.d.ts +16 -0
  339. package/dist/tools/plan/tools.d.ts.map +1 -0
  340. package/dist/tools/plan/tools.js +217 -0
  341. package/dist/tools/plan/tools.js.map +1 -0
  342. package/dist/tools/plan/types.d.ts +75 -0
  343. package/dist/tools/plan/types.d.ts.map +1 -0
  344. package/dist/tools/plan/types.js +16 -0
  345. package/dist/tools/plan/types.js.map +1 -0
  346. package/dist/tools/plan/utils.d.ts +9 -0
  347. package/dist/tools/plan/utils.d.ts.map +1 -0
  348. package/dist/tools/plan/utils.js +27 -0
  349. package/dist/tools/plan/utils.js.map +1 -0
  350. package/dist/tools/progress/index.d.ts +53 -0
  351. package/dist/tools/progress/index.d.ts.map +1 -0
  352. package/dist/tools/progress/index.js +144 -0
  353. package/dist/tools/progress/index.js.map +1 -0
  354. package/dist/tools/provider.d.ts +97 -0
  355. package/dist/tools/provider.d.ts.map +1 -0
  356. package/dist/tools/provider.js +178 -0
  357. package/dist/tools/provider.js.map +1 -0
  358. package/dist/tools/search-skills.d.ts +44 -0
  359. package/dist/tools/search-skills.d.ts.map +1 -0
  360. package/dist/tools/search-skills.js +134 -0
  361. package/dist/tools/search-skills.js.map +1 -0
  362. package/dist/tools/shell/background.d.ts +38 -0
  363. package/dist/tools/shell/background.d.ts.map +1 -0
  364. package/dist/tools/shell/background.js +229 -0
  365. package/dist/tools/shell/background.js.map +1 -0
  366. package/dist/tools/shell/constants.d.ts +10 -0
  367. package/dist/tools/shell/constants.d.ts.map +1 -0
  368. package/dist/tools/shell/constants.js +55 -0
  369. package/dist/tools/shell/constants.js.map +1 -0
  370. package/dist/tools/shell/index.d.ts +7 -0
  371. package/dist/tools/shell/index.d.ts.map +1 -0
  372. package/dist/tools/shell/index.js +5 -0
  373. package/dist/tools/shell/index.js.map +1 -0
  374. package/dist/tools/shell/tools.d.ts +22 -0
  375. package/dist/tools/shell/tools.d.ts.map +1 -0
  376. package/dist/tools/shell/tools.js +70 -0
  377. package/dist/tools/shell/tools.js.map +1 -0
  378. package/dist/tools/shell/types.d.ts +30 -0
  379. package/dist/tools/shell/types.d.ts.map +1 -0
  380. package/dist/tools/shell/types.js +10 -0
  381. package/dist/tools/shell/types.js.map +1 -0
  382. package/dist/tools/shell/utils.d.ts +7 -0
  383. package/dist/tools/shell/utils.d.ts.map +1 -0
  384. package/dist/tools/shell/utils.js +26 -0
  385. package/dist/tools/shell/utils.js.map +1 -0
  386. package/dist/tools/spawn-agent/index.d.ts +96 -0
  387. package/dist/tools/spawn-agent/index.d.ts.map +1 -0
  388. package/dist/tools/spawn-agent/index.js +168 -0
  389. package/dist/tools/spawn-agent/index.js.map +1 -0
  390. package/dist/tools/utils/errors.d.ts +21 -0
  391. package/dist/tools/utils/errors.d.ts.map +1 -0
  392. package/dist/tools/utils/errors.js +29 -0
  393. package/dist/tools/utils/errors.js.map +1 -0
  394. package/dist/tools/utils/shell.d.ts +23 -0
  395. package/dist/tools/utils/shell.d.ts.map +1 -0
  396. package/dist/tools/utils/shell.js +99 -0
  397. package/dist/tools/utils/shell.js.map +1 -0
  398. package/dist/tools/utils/tool-result.d.ts +6 -0
  399. package/dist/tools/utils/tool-result.d.ts.map +1 -0
  400. package/dist/tools/utils/tool-result.js +22 -0
  401. package/dist/tools/utils/tool-result.js.map +1 -0
  402. package/dist/types/agent.d.ts +218 -0
  403. package/dist/types/agent.d.ts.map +1 -0
  404. package/dist/types/agent.js +6 -0
  405. package/dist/types/agent.js.map +1 -0
  406. package/dist/types/index.d.ts +7 -0
  407. package/dist/types/index.d.ts.map +1 -0
  408. package/dist/types/index.js +6 -0
  409. package/dist/types/index.js.map +1 -0
  410. package/dist/types/lifecycle.d.ts +218 -0
  411. package/dist/types/lifecycle.d.ts.map +1 -0
  412. package/dist/types/lifecycle.js +99 -0
  413. package/dist/types/lifecycle.js.map +1 -0
  414. package/dist/types/streaming.d.ts +120 -0
  415. package/dist/types/streaming.d.ts.map +1 -0
  416. package/dist/types/streaming.js +6 -0
  417. package/dist/types/streaming.js.map +1 -0
  418. package/dist/usage-limits.d.ts +63 -0
  419. package/dist/usage-limits.d.ts.map +1 -0
  420. package/dist/usage-limits.js +88 -0
  421. package/dist/usage-limits.js.map +1 -0
  422. package/dist/utils/logger.d.ts +35 -0
  423. package/dist/utils/logger.d.ts.map +1 -0
  424. package/dist/utils/logger.js +149 -0
  425. package/dist/utils/logger.js.map +1 -0
  426. package/dist/workflow/builders/adapt.d.ts +20 -0
  427. package/dist/workflow/builders/adapt.d.ts.map +1 -0
  428. package/dist/workflow/builders/adapt.js +33 -0
  429. package/dist/workflow/builders/adapt.js.map +1 -0
  430. package/dist/workflow/builders/index.d.ts +8 -0
  431. package/dist/workflow/builders/index.d.ts.map +1 -0
  432. package/dist/workflow/builders/index.js +7 -0
  433. package/dist/workflow/builders/index.js.map +1 -0
  434. package/dist/workflow/builders/parallel.d.ts +25 -0
  435. package/dist/workflow/builders/parallel.d.ts.map +1 -0
  436. package/dist/workflow/builders/parallel.js +60 -0
  437. package/dist/workflow/builders/parallel.js.map +1 -0
  438. package/dist/workflow/builders/pipeline.d.ts +22 -0
  439. package/dist/workflow/builders/pipeline.d.ts.map +1 -0
  440. package/dist/workflow/builders/pipeline.js +48 -0
  441. package/dist/workflow/builders/pipeline.js.map +1 -0
  442. package/dist/workflow/builders/types.d.ts +54 -0
  443. package/dist/workflow/builders/types.d.ts.map +1 -0
  444. package/dist/workflow/builders/types.js +5 -0
  445. package/dist/workflow/builders/types.js.map +1 -0
  446. package/dist/workflow/durable-agent.d.ts +128 -0
  447. package/dist/workflow/durable-agent.d.ts.map +1 -0
  448. package/dist/workflow/durable-agent.js +323 -0
  449. package/dist/workflow/durable-agent.js.map +1 -0
  450. package/dist/workflow/durable-tool.d.ts +103 -0
  451. package/dist/workflow/durable-tool.d.ts.map +1 -0
  452. package/dist/workflow/durable-tool.js +173 -0
  453. package/dist/workflow/durable-tool.js.map +1 -0
  454. package/dist/workflow/hooks.d.ts +318 -0
  455. package/dist/workflow/hooks.d.ts.map +1 -0
  456. package/dist/workflow/hooks.js +629 -0
  457. package/dist/workflow/hooks.js.map +1 -0
  458. package/dist/workflow/index.d.ts +17 -0
  459. package/dist/workflow/index.d.ts.map +1 -0
  460. package/dist/workflow/index.js +24 -0
  461. package/dist/workflow/index.js.map +1 -0
  462. package/dist/workflow/schedulers.d.ts +231 -0
  463. package/dist/workflow/schedulers.d.ts.map +1 -0
  464. package/dist/workflow/schedulers.js +250 -0
  465. package/dist/workflow/schedulers.js.map +1 -0
  466. package/dist/workflow/team/create-team.d.ts +34 -0
  467. package/dist/workflow/team/create-team.d.ts.map +1 -0
  468. package/dist/workflow/team/create-team.js +242 -0
  469. package/dist/workflow/team/create-team.js.map +1 -0
  470. package/dist/workflow/team/index.d.ts +9 -0
  471. package/dist/workflow/team/index.d.ts.map +1 -0
  472. package/dist/workflow/team/index.js +8 -0
  473. package/dist/workflow/team/index.js.map +1 -0
  474. package/dist/workflow/team/machines.d.ts +152 -0
  475. package/dist/workflow/team/machines.d.ts.map +1 -0
  476. package/dist/workflow/team/machines.js +197 -0
  477. package/dist/workflow/team/machines.js.map +1 -0
  478. package/dist/workflow/team/task-board.d.ts +47 -0
  479. package/dist/workflow/team/task-board.d.ts.map +1 -0
  480. package/dist/workflow/team/task-board.js +111 -0
  481. package/dist/workflow/team/task-board.js.map +1 -0
  482. package/dist/workflow/team/tools.d.ts +66 -0
  483. package/dist/workflow/team/tools.d.ts.map +1 -0
  484. package/dist/workflow/team/tools.js +100 -0
  485. package/dist/workflow/team/tools.js.map +1 -0
  486. package/dist/workflow/team/types.d.ts +109 -0
  487. package/dist/workflow/team/types.d.ts.map +1 -0
  488. package/dist/workflow/team/types.js +5 -0
  489. package/dist/workflow/team/types.js.map +1 -0
  490. package/dist/workflow/templates.d.ts +71 -0
  491. package/dist/workflow/templates.d.ts.map +1 -0
  492. package/dist/workflow/templates.js +132 -0
  493. package/dist/workflow/templates.js.map +1 -0
  494. package/dist/workflow/utils.d.ts +29 -0
  495. package/dist/workflow/utils.d.ts.map +1 -0
  496. package/dist/workflow/utils.js +84 -0
  497. package/dist/workflow/utils.js.map +1 -0
  498. package/dist/wrappers/best-of-n.d.ts +69 -0
  499. package/dist/wrappers/best-of-n.d.ts.map +1 -0
  500. package/dist/wrappers/best-of-n.js +242 -0
  501. package/dist/wrappers/best-of-n.js.map +1 -0
  502. package/package.json +101 -0
@@ -0,0 +1,120 @@
1
+ /**
2
+ * @agntk/core - MarkdownMemoryStore
3
+ *
4
+ * File-based MemoryStore implementation that reads/writes .agntk/ markdown files.
5
+ * Zero dependencies beyond Node.js built-ins.
6
+ */
7
+ import { readFile, writeFile, appendFile, mkdir } from 'node:fs/promises';
8
+ import { existsSync } from 'node:fs';
9
+ import { join, resolve } from 'node:path';
10
+ import { homedir } from 'node:os';
11
+ import { createLogger } from '@agntk/logger';
12
+ const log = createLogger('@agntk/core:memory-store');
13
+ // ============================================================================
14
+ // Constants
15
+ // ============================================================================
16
+ const PROJECT_DIR_DEFAULT = '.agntk';
17
+ const GLOBAL_DIR_DEFAULT = '.agntk';
18
+ const FILES = {
19
+ identity: 'identity.md',
20
+ preferences: 'preferences.md',
21
+ project: 'project.md',
22
+ memory: 'memory.md',
23
+ context: 'context.md',
24
+ decisions: 'decisions.md',
25
+ };
26
+ /** Fallback project context files (checked in order) */
27
+ const PROJECT_FALLBACKS = ['CLAUDE.md', 'AGENTS.md'];
28
+ /**
29
+ * Reads/writes markdown memory files from .agntk/ and ~/.agntk/ directories.
30
+ */
31
+ export class MarkdownMemoryStore {
32
+ projectPath;
33
+ globalPath;
34
+ workspaceRoot;
35
+ constructor(options = {}) {
36
+ this.workspaceRoot = options.workspaceRoot ?? process.cwd();
37
+ this.projectPath = resolve(this.workspaceRoot, options.projectDir ?? PROJECT_DIR_DEFAULT);
38
+ this.globalPath = resolve(homedir(), options.globalDir ?? GLOBAL_DIR_DEFAULT);
39
+ }
40
+ // ── Load methods ─────────────────────────────────────────────────────
41
+ async loadIdentity() {
42
+ return this.readFileOrNull(join(this.globalPath, FILES.identity));
43
+ }
44
+ async loadPreferences() {
45
+ return this.readFileOrNull(join(this.globalPath, FILES.preferences));
46
+ }
47
+ async loadProject() {
48
+ // Try .agntk/project.md first
49
+ const projectFile = await this.readFileOrNull(join(this.projectPath, FILES.project));
50
+ if (projectFile)
51
+ return projectFile;
52
+ // Fall back to CLAUDE.md or AGENTS.md in workspace root
53
+ for (const fallback of PROJECT_FALLBACKS) {
54
+ const content = await this.readFileOrNull(join(this.workspaceRoot, fallback));
55
+ if (content) {
56
+ log.debug('Using fallback project file', { file: fallback });
57
+ return content;
58
+ }
59
+ }
60
+ return null;
61
+ }
62
+ async loadMemory() {
63
+ return this.readFileOrNull(join(this.projectPath, FILES.memory));
64
+ }
65
+ async loadContext() {
66
+ return this.readFileOrNull(join(this.projectPath, FILES.context));
67
+ }
68
+ async loadDecisions() {
69
+ return this.readFileOrNull(join(this.projectPath, FILES.decisions));
70
+ }
71
+ // ── Save methods ─────────────────────────────────────────────────────
72
+ async saveContext(content) {
73
+ await this.writeFileSafe(join(this.projectPath, FILES.context), content);
74
+ }
75
+ async saveMemory(content) {
76
+ await this.writeFileSafe(join(this.projectPath, FILES.memory), content);
77
+ }
78
+ async savePreferences(content) {
79
+ await this.writeFileSafe(join(this.globalPath, FILES.preferences), content);
80
+ }
81
+ async appendDecision(entry) {
82
+ const filePath = join(this.projectPath, FILES.decisions);
83
+ await this.ensureDir(this.projectPath);
84
+ const separator = existsSync(filePath) ? '\n\n' : '';
85
+ await appendFile(filePath, separator + entry, 'utf-8');
86
+ log.debug('Decision appended', { path: filePath });
87
+ }
88
+ // ── Utilities ────────────────────────────────────────────────────────
89
+ /** Get the resolved project directory path */
90
+ getProjectPath() {
91
+ return this.projectPath;
92
+ }
93
+ /** Get the resolved global directory path */
94
+ getGlobalPath() {
95
+ return this.globalPath;
96
+ }
97
+ // ── Private helpers ──────────────────────────────────────────────────
98
+ async readFileOrNull(filePath) {
99
+ try {
100
+ const content = await readFile(filePath, 'utf-8');
101
+ return content.trim() || null;
102
+ }
103
+ catch {
104
+ return null;
105
+ }
106
+ }
107
+ async writeFileSafe(filePath, content) {
108
+ const dir = filePath.substring(0, filePath.lastIndexOf('/'));
109
+ await this.ensureDir(dir);
110
+ await writeFile(filePath, content, 'utf-8');
111
+ log.debug('File written', { path: filePath, length: content.length });
112
+ }
113
+ async ensureDir(dir) {
114
+ if (!existsSync(dir)) {
115
+ await mkdir(dir, { recursive: true });
116
+ log.debug('Directory created', { path: dir });
117
+ }
118
+ }
119
+ }
120
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/memory/store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C,MAAM,GAAG,GAAG,YAAY,CAAC,0BAA0B,CAAC,CAAC;AAErD,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,MAAM,mBAAmB,GAAG,QAAQ,CAAC;AACrC,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AAEpC,MAAM,KAAK,GAAG;IACZ,QAAQ,EAAE,aAAa;IACvB,WAAW,EAAE,gBAAgB;IAC7B,OAAO,EAAE,YAAY;IACrB,MAAM,EAAE,WAAW;IACnB,OAAO,EAAE,YAAY;IACrB,SAAS,EAAE,cAAc;CACjB,CAAC;AAEX,wDAAwD;AACxD,MAAM,iBAAiB,GAAG,CAAC,WAAW,EAAE,WAAW,CAAU,CAAC;AAe9D;;GAEG;AACH,MAAM,OAAO,mBAAmB;IACb,WAAW,CAAS;IACpB,UAAU,CAAS;IACnB,aAAa,CAAS;IAEvC,YAAY,UAAsC,EAAE;QAClD,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAC5D,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,UAAU,IAAI,mBAAmB,CAAC,CAAC;QAC1F,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,SAAS,IAAI,kBAAkB,CAAC,CAAC;IAChF,CAAC;IAED,wEAAwE;IAExE,KAAK,CAAC,YAAY;QAChB,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,WAAW;QACf,8BAA8B;QAC9B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACrF,IAAI,WAAW;YAAE,OAAO,WAAW,CAAC;QAEpC,wDAAwD;QACxD,KAAK,MAAM,QAAQ,IAAI,iBAAiB,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC9E,IAAI,OAAO,EAAE,CAAC;gBACZ,GAAG,CAAC,KAAK,CAAC,6BAA6B,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC7D,OAAO,OAAO,CAAC;YACjB,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,UAAU;QACd,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,wEAAwE;IAExE,KAAK,CAAC,WAAW,CAAC,OAAe;QAC/B,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAe;QAC9B,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1E,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,OAAe;QACnC,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,KAAa;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QACzD,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvC,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,MAAM,UAAU,CAAC,QAAQ,EAAE,SAAS,GAAG,KAAK,EAAE,OAAO,CAAC,CAAC;QACvD,GAAG,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,wEAAwE;IAExE,8CAA8C;IAC9C,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,6CAA6C;IAC7C,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,wEAAwE;IAEhE,KAAK,CAAC,cAAc,CAAC,QAAgB;QAC3C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAClD,OAAO,OAAO,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,QAAgB,EAAE,OAAe;QAC3D,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7D,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAC1B,MAAM,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5C,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACxE,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,GAAW;QACjC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACtC,GAAG,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * @agntk/core - Memory Tools
3
+ *
4
+ * Four markdown-based memory tools: remember, recall, update_context, forget.
5
+ * Uses MemoryStore for persistence and LLM for extraction/curation.
6
+ */
7
+ import { type LanguageModel } from 'ai';
8
+ import type { MemoryStore } from './types.js';
9
+ export interface MemoryToolsOptions {
10
+ /** MemoryStore instance for reading/writing files */
11
+ store: MemoryStore;
12
+ /** LanguageModel for extraction (required for remember/forget) */
13
+ model?: LanguageModel;
14
+ }
15
+ /**
16
+ * Create the 4 memory tools for an agent.
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * const store = new MarkdownMemoryStore({ workspaceRoot: '/my/project' });
21
+ * const tools = createMemoryTools({ store, model });
22
+ * ```
23
+ */
24
+ export declare function createMemoryTools(options: MemoryToolsOptions): {
25
+ remember: import("ai").Tool<{
26
+ text: string;
27
+ isDecision?: boolean | undefined;
28
+ }, string>;
29
+ recall: import("ai").Tool<{
30
+ query: string;
31
+ }, string>;
32
+ update_context: import("ai").Tool<{
33
+ summary: string;
34
+ }, string>;
35
+ forget: import("ai").Tool<{
36
+ fact: string;
37
+ }, string>;
38
+ };
39
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/memory/tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAQ,KAAK,aAAa,EAAE,MAAM,IAAI,CAAC;AAG9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAS3C,MAAM,WAAW,kBAAkB;IACjC,qDAAqD;IACrD,KAAK,EAAE,WAAW,CAAC;IAEnB,kEAAkE;IAClE,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAMD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB;;;;;;;;;;;;;;EAqL5D"}
@@ -0,0 +1,225 @@
1
+ /**
2
+ * @agntk/core - Memory Tools
3
+ *
4
+ * Four markdown-based memory tools: remember, recall, update_context, forget.
5
+ * Uses MemoryStore for persistence and LLM for extraction/curation.
6
+ */
7
+ import { tool } from 'ai';
8
+ import { z } from 'zod';
9
+ import { createLogger } from '@agntk/logger';
10
+ import { extractAndUpdateMemory, forgetFromMemory, generateDecisionEntry } from './extraction.js';
11
+ const log = createLogger('@agntk/core:memory-tools');
12
+ // ============================================================================
13
+ // Tool Factory
14
+ // ============================================================================
15
+ /**
16
+ * Create the 4 memory tools for an agent.
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * const store = new MarkdownMemoryStore({ workspaceRoot: '/my/project' });
21
+ * const tools = createMemoryTools({ store, model });
22
+ * ```
23
+ */
24
+ export function createMemoryTools(options) {
25
+ const { store, model } = options;
26
+ const remember = tool({
27
+ description: 'Store information in persistent memory. Extracts facts and updates memory.md. ' +
28
+ 'Use this when the user says "remember this" or when you learn something worth preserving across sessions. ' +
29
+ 'Also logs decisions to decisions.md when the input describes a decision.',
30
+ inputSchema: z.object({
31
+ text: z
32
+ .string()
33
+ .min(1)
34
+ .max(10000)
35
+ .describe('Information to remember'),
36
+ isDecision: z
37
+ .boolean()
38
+ .optional()
39
+ .describe('Set to true if this is a decision that should be logged to decisions.md'),
40
+ }),
41
+ execute: async ({ text, isDecision }) => {
42
+ log.debug('remember() called', { textLength: text.length, isDecision });
43
+ if (!model) {
44
+ // Without a model, store text directly as a bullet point in memory.md
45
+ const current = await store.loadMemory();
46
+ const updated = (current ?? '# Memory\n') + `\n- ${text}`;
47
+ await store.saveMemory(updated);
48
+ return JSON.stringify({ success: true, message: 'Stored (no extraction — no model available)' });
49
+ }
50
+ try {
51
+ // Extract and update memory.md via LLM
52
+ const currentMemory = await store.loadMemory();
53
+ const updatedMemory = await extractAndUpdateMemory(currentMemory, text, model);
54
+ await store.saveMemory(updatedMemory);
55
+ // Also log to decisions.md if flagged
56
+ if (isDecision) {
57
+ const entry = await generateDecisionEntry(text, model);
58
+ await store.appendDecision(entry);
59
+ log.info('Decision logged', { entryLength: entry.length });
60
+ }
61
+ log.info('Memory updated via extraction', { inputLength: text.length });
62
+ return JSON.stringify({ success: true, message: 'Memory updated' });
63
+ }
64
+ catch (error) {
65
+ const msg = error instanceof Error ? error.message : String(error);
66
+ log.error('remember() failed', { error: msg });
67
+ return JSON.stringify({ success: false, error: msg });
68
+ }
69
+ },
70
+ });
71
+ const recall = tool({
72
+ description: 'Search persistent memory for relevant information. ' +
73
+ 'Reads memory.md (curated facts) and decisions.md (decision log) and returns matching content. ' +
74
+ 'Use this when you need to check what was previously remembered or decided.',
75
+ inputSchema: z.object({
76
+ query: z
77
+ .string()
78
+ .min(1)
79
+ .max(1000)
80
+ .describe('What to search for in memory'),
81
+ }),
82
+ execute: async ({ query }) => {
83
+ log.debug('recall() called', { query: query.slice(0, 50) });
84
+ try {
85
+ const results = [];
86
+ // Search memory.md
87
+ const memory = await store.loadMemory();
88
+ if (memory) {
89
+ const memoryMatches = searchContent(memory, query);
90
+ if (memoryMatches.length > 0) {
91
+ results.push({ source: 'memory.md', content: memoryMatches.join('\n') });
92
+ }
93
+ }
94
+ // Search decisions.md
95
+ const decisions = await store.loadDecisions();
96
+ if (decisions) {
97
+ const decisionMatches = searchContent(decisions, query);
98
+ if (decisionMatches.length > 0) {
99
+ results.push({ source: 'decisions.md', content: decisionMatches.join('\n') });
100
+ }
101
+ }
102
+ // Search context.md
103
+ const context = await store.loadContext();
104
+ if (context) {
105
+ const contextMatches = searchContent(context, query);
106
+ if (contextMatches.length > 0) {
107
+ results.push({ source: 'context.md', content: contextMatches.join('\n') });
108
+ }
109
+ }
110
+ log.info('recall() completed', { query: query.slice(0, 30), resultCount: results.length });
111
+ if (results.length === 0) {
112
+ return JSON.stringify({
113
+ success: true,
114
+ message: 'No matching memories found.',
115
+ results: [],
116
+ });
117
+ }
118
+ return JSON.stringify({ success: true, results });
119
+ }
120
+ catch (error) {
121
+ const msg = error instanceof Error ? error.message : String(error);
122
+ log.error('recall() failed', { error: msg });
123
+ return JSON.stringify({ success: false, error: msg });
124
+ }
125
+ },
126
+ });
127
+ const update_context = tool({
128
+ description: 'Rewrite the session context file (context.md) with a summary of current work. ' +
129
+ 'Call this at the end of a session or when the focus of work changes significantly. ' +
130
+ 'The previous context.md is completely overwritten.',
131
+ inputSchema: z.object({
132
+ summary: z
133
+ .string()
134
+ .min(1)
135
+ .max(5000)
136
+ .describe('Summary of current session state: active work, recent changes, open questions, next steps'),
137
+ }),
138
+ execute: async ({ summary }) => {
139
+ log.debug('update_context() called', { summaryLength: summary.length });
140
+ try {
141
+ const timestamp = new Date().toISOString().replace('T', ' ').split('.')[0];
142
+ const content = `# Current Context\n*Last updated: ${timestamp}*\n\n${summary}`;
143
+ await store.saveContext(content);
144
+ log.info('Context updated', { length: content.length });
145
+ return JSON.stringify({ success: true, message: 'Context updated' });
146
+ }
147
+ catch (error) {
148
+ const msg = error instanceof Error ? error.message : String(error);
149
+ log.error('update_context() failed', { error: msg });
150
+ return JSON.stringify({ success: false, error: msg });
151
+ }
152
+ },
153
+ });
154
+ const forget = tool({
155
+ description: 'Remove a specific fact from persistent memory (memory.md). ' +
156
+ 'Use this when information is no longer true or relevant.',
157
+ inputSchema: z.object({
158
+ fact: z
159
+ .string()
160
+ .min(1)
161
+ .max(1000)
162
+ .describe('The fact to remove from memory'),
163
+ }),
164
+ execute: async ({ fact }) => {
165
+ log.debug('forget() called', { fact: fact.slice(0, 50) });
166
+ if (!model) {
167
+ return JSON.stringify({ success: false, error: 'Cannot forget without a language model' });
168
+ }
169
+ try {
170
+ const currentMemory = await store.loadMemory();
171
+ const updatedMemory = await forgetFromMemory(currentMemory, fact, model);
172
+ await store.saveMemory(updatedMemory);
173
+ log.info('Fact forgotten', { factLength: fact.length });
174
+ return JSON.stringify({ success: true, message: 'Fact removed from memory' });
175
+ }
176
+ catch (error) {
177
+ const msg = error instanceof Error ? error.message : String(error);
178
+ log.error('forget() failed', { error: msg });
179
+ return JSON.stringify({ success: false, error: msg });
180
+ }
181
+ },
182
+ });
183
+ return { remember, recall, update_context, forget };
184
+ }
185
+ // ============================================================================
186
+ // Search Helpers
187
+ // ============================================================================
188
+ /**
189
+ * Simple keyword search across lines of content.
190
+ * Returns lines that match any word in the query.
191
+ */
192
+ function searchContent(content, query) {
193
+ const queryWords = query.toLowerCase().split(/\s+/).filter(w => w.length > 2);
194
+ if (queryWords.length === 0)
195
+ return [];
196
+ const lines = content.split('\n');
197
+ const matches = [];
198
+ // Search by paragraph (groups of consecutive non-empty lines)
199
+ let currentParagraph = [];
200
+ for (const line of lines) {
201
+ if (line.trim() === '') {
202
+ if (currentParagraph.length > 0) {
203
+ const paragraph = currentParagraph.join('\n');
204
+ const lower = paragraph.toLowerCase();
205
+ if (queryWords.some(w => lower.includes(w))) {
206
+ matches.push(paragraph);
207
+ }
208
+ currentParagraph = [];
209
+ }
210
+ }
211
+ else {
212
+ currentParagraph.push(line);
213
+ }
214
+ }
215
+ // Don't forget the last paragraph
216
+ if (currentParagraph.length > 0) {
217
+ const paragraph = currentParagraph.join('\n');
218
+ const lower = paragraph.toLowerCase();
219
+ if (queryWords.some(w => lower.includes(w))) {
220
+ matches.push(paragraph);
221
+ }
222
+ }
223
+ return matches;
224
+ }
225
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/memory/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * @agntk/core - Memory Types
3
+ *
4
+ * Defines the MemoryStore interface and configuration types
5
+ * for the markdown-based memory system.
6
+ */
7
+ /**
8
+ * Interface for reading/writing agent memory files.
9
+ *
10
+ * The default implementation (MarkdownMemoryStore) reads/writes .agntk/
11
+ * markdown files. Custom implementations can back memory with any storage.
12
+ */
13
+ export interface MemoryStore {
14
+ /** Load ~/.agntk/identity.md (human-authored, optional) */
15
+ loadIdentity(): Promise<string | null>;
16
+ /** Load ~/.agntk/preferences.md (agent-curated, cross-project) */
17
+ loadPreferences(): Promise<string | null>;
18
+ /** Load .agntk/project.md (human-authored). Falls back to CLAUDE.md / AGENTS.md */
19
+ loadProject(): Promise<string | null>;
20
+ /** Load .agntk/memory.md (agent-curated facts) */
21
+ loadMemory(): Promise<string | null>;
22
+ /** Load .agntk/context.md (agent-rewritten each session) */
23
+ loadContext(): Promise<string | null>;
24
+ /** Load .agntk/decisions.md (append-only decision log) */
25
+ loadDecisions(): Promise<string | null>;
26
+ /** Overwrite .agntk/context.md entirely */
27
+ saveContext(content: string): Promise<void>;
28
+ /** Overwrite .agntk/memory.md entirely (after LLM curation) */
29
+ saveMemory(content: string): Promise<void>;
30
+ /** Overwrite ~/.agntk/preferences.md */
31
+ savePreferences(content: string): Promise<void>;
32
+ /** Append an entry to .agntk/decisions.md */
33
+ appendDecision(entry: string): Promise<void>;
34
+ }
35
+ /**
36
+ * Configuration for the memory system.
37
+ */
38
+ export interface MemoryConfig {
39
+ /** Directory for project-local memory files. Default: '.agntk' */
40
+ projectDir?: string;
41
+ /** Directory for global (cross-project) memory files. Default: '~/.agntk' */
42
+ globalDir?: string;
43
+ /** Custom MemoryStore implementation. Overrides file-based defaults. */
44
+ store?: MemoryStore;
45
+ }
46
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/memory/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAG1B,2DAA2D;IAC3D,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAEvC,kEAAkE;IAClE,eAAe,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAE1C,mFAAmF;IACnF,WAAW,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAEtC,kDAAkD;IAClD,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAErC,4DAA4D;IAC5D,WAAW,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAItC,0DAA0D;IAC1D,aAAa,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAIxC,2CAA2C;IAC3C,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5C,+DAA+D;IAC/D,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3C,wCAAwC;IACxC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhD,6CAA6C;IAC7C,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9C;AAMD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,wEAAwE;IACxE,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @agntk/core - Memory Types
3
+ *
4
+ * Defines the MemoryStore interface and configuration types
5
+ * for the markdown-based memory system.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/memory/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @agntk/core - Vectra Memory Store
3
+ *
4
+ * Portable in-memory vector database using Vectra.
5
+ * Zero native dependencies, file-based persistence.
6
+ */
7
+ import type { MemoryOptions } from '../types/agent.js';
8
+ export interface MemoryItem {
9
+ id: string;
10
+ text: string;
11
+ metadata?: Record<string, unknown>;
12
+ timestamp: Date;
13
+ }
14
+ export interface MemorySearchResult {
15
+ item: MemoryItem;
16
+ score: number;
17
+ }
18
+ export interface MemoryStore {
19
+ remember: (text: string, metadata?: Record<string, unknown>) => Promise<string>;
20
+ recall: (query: string, options?: {
21
+ topK?: number;
22
+ threshold?: number;
23
+ }) => Promise<MemorySearchResult[]>;
24
+ forget: (id: string) => Promise<boolean>;
25
+ forgetAll: (filter?: (item: MemoryItem) => boolean) => Promise<number>;
26
+ count: () => Promise<number>;
27
+ close: () => Promise<void>;
28
+ }
29
+ export declare function createMemoryStore(options?: MemoryOptions): Promise<MemoryStore>;
30
+ export type { MemoryOptions };
31
+ //# sourceMappingURL=vectra-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vectra-store.d.ts","sourceRoot":"","sources":["../../src/memory/vectra-store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAQpD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAChF,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAC1G,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACzC,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACvE,KAAK,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAqCD,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CAkGzF;AAMD,YAAY,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * @agntk/core - Vectra Memory Store
3
+ *
4
+ * Portable in-memory vector database using Vectra.
5
+ * Zero native dependencies, file-based persistence.
6
+ */
7
+ import { LocalIndex } from 'vectra';
8
+ import * as path from 'node:path';
9
+ import * as fs from 'node:fs/promises';
10
+ import { createLogger } from '@agntk/logger';
11
+ import { getConfig } from '../config/index.js';
12
+ import { DEFAULT_EMBEDDING_URL, DEFAULT_EMBEDDING_MODEL, DEFAULT_MEMORY_PATH, DEFAULT_MEMORY_TOP_K, DEFAULT_MEMORY_SIMILARITY_THRESHOLD, } from '../constants.js';
13
+ const log = createLogger('@agntk/core:memory');
14
+ // ============================================================================
15
+ // Embedding - Using OpenAI directly
16
+ // ============================================================================
17
+ async function getEmbedding(text, modelName, embeddingUrl) {
18
+ const apiKey = process.env['OPENAI_API_KEY'];
19
+ if (!apiKey) {
20
+ throw new Error('OPENAI_API_KEY required for memory embeddings');
21
+ }
22
+ const url = embeddingUrl ?? DEFAULT_EMBEDDING_URL;
23
+ const response = await fetch(url, {
24
+ method: 'POST',
25
+ headers: {
26
+ 'Content-Type': 'application/json',
27
+ 'Authorization': `Bearer ${apiKey}`,
28
+ },
29
+ body: JSON.stringify({
30
+ model: modelName ?? DEFAULT_EMBEDDING_MODEL,
31
+ input: text,
32
+ }),
33
+ });
34
+ if (!response.ok) {
35
+ throw new Error(`Embedding failed: ${response.statusText}`);
36
+ }
37
+ const data = await response.json();
38
+ return data.data[0].embedding;
39
+ }
40
+ // ============================================================================
41
+ // Memory Store Implementation
42
+ // ============================================================================
43
+ export async function createMemoryStore(options = {}) {
44
+ // Merge with config values
45
+ const config = getConfig();
46
+ const memoryConfig = (config.memory ?? {});
47
+ const { path: storagePath = memoryConfig.path ?? DEFAULT_MEMORY_PATH, embedModel = memoryConfig.embedModel ?? DEFAULT_EMBEDDING_MODEL, topK = memoryConfig.topK ?? DEFAULT_MEMORY_TOP_K, similarityThreshold = memoryConfig.similarityThreshold ?? DEFAULT_MEMORY_SIMILARITY_THRESHOLD, } = options;
48
+ log.info('Creating memory store', { path: storagePath, embedModel, topK });
49
+ const absolutePath = path.resolve(storagePath);
50
+ await fs.mkdir(absolutePath, { recursive: true });
51
+ const index = new LocalIndex(absolutePath);
52
+ if (!await index.isIndexCreated()) {
53
+ await index.createIndex();
54
+ }
55
+ const store = {
56
+ async remember(text, metadata) {
57
+ const id = generateId();
58
+ const vector = await getEmbedding(text, embedModel);
59
+ await index.insertItem({
60
+ id,
61
+ vector,
62
+ metadata: { text, timestamp: new Date().toISOString(), ...metadata },
63
+ });
64
+ return id;
65
+ },
66
+ async recall(query, opts) {
67
+ const queryVector = await getEmbedding(query, embedModel);
68
+ const k = opts?.topK ?? topK;
69
+ const threshold = opts?.threshold ?? similarityThreshold;
70
+ const results = await index.queryItems(queryVector, k);
71
+ return results
72
+ .filter(r => r.score >= threshold)
73
+ .map(r => ({
74
+ item: {
75
+ id: r.item.id,
76
+ text: r.item.metadata?.text ?? '',
77
+ metadata: r.item.metadata,
78
+ timestamp: new Date(r.item.metadata?.timestamp ?? Date.now()),
79
+ },
80
+ score: r.score,
81
+ }));
82
+ },
83
+ async forget(id) {
84
+ try {
85
+ await index.deleteItem(id);
86
+ return true;
87
+ }
88
+ catch (_e) {
89
+ return false;
90
+ }
91
+ },
92
+ async forgetAll(filter) {
93
+ const items = await index.listItems();
94
+ let deleted = 0;
95
+ for (const item of items) {
96
+ const memoryItem = {
97
+ id: item.id,
98
+ text: item.metadata?.text ?? '',
99
+ metadata: item.metadata,
100
+ timestamp: new Date(item.metadata?.timestamp ?? Date.now()),
101
+ };
102
+ if (!filter || filter(memoryItem)) {
103
+ await index.deleteItem(item.id);
104
+ deleted++;
105
+ }
106
+ }
107
+ return deleted;
108
+ },
109
+ async count() {
110
+ const items = await index.listItems();
111
+ return items.length;
112
+ },
113
+ async close() {
114
+ // Vectra auto-persists
115
+ },
116
+ };
117
+ return store;
118
+ }
119
+ function generateId() {
120
+ return `mem_${Date.now()}_${Math.random().toString(36).slice(2, 11)}`;
121
+ }
122
+ //# sourceMappingURL=vectra-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vectra-store.js","sourceRoot":"","sources":["../../src/memory/vectra-store.ts"],"names":[],"mappings":"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"}