@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,132 @@
1
+ /**
2
+ * @agntk/core - Standalone Workflow Templates
3
+ *
4
+ * Composable workflow templates (withApproval, withSchedule) that work
5
+ * with any Agent instance. No special DurableAgent required.
6
+ */
7
+ import { createLogger } from '@agntk/logger';
8
+ import { checkWorkflowAvailability, parseDuration } from './utils.js';
9
+ const log = createLogger('@agntk/core:workflow:templates');
10
+ // ============================================================================
11
+ // withApproval
12
+ // ============================================================================
13
+ /**
14
+ * Run an agent with a human-in-the-loop approval workflow.
15
+ *
16
+ * 1. Agent generates a draft response
17
+ * 2. Execution pauses waiting for webhook approval (zero compute)
18
+ * 3. If approved, finalizes; if rejected, throws with feedback
19
+ *
20
+ * Requires the workflow package when running under the Workflow runtime.
21
+ * Falls back to auto-approve when the runtime is not available.
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * const result = await withApproval(agent, 'Draft a press release', {
26
+ * webhookPath: '/api/approve',
27
+ * });
28
+ * ```
29
+ */
30
+ export async function withApproval(agent, prompt, options) {
31
+ log.info('withApproval started', { prompt: prompt.slice(0, 100), webhookPath: options.webhookPath });
32
+ // Step 1: Generate draft
33
+ const draftResult = await agent.generate({ prompt });
34
+ const draftText = draftResult.text ?? '';
35
+ // Step 2: Wait for approval
36
+ log.info('Waiting for approval webhook');
37
+ let approval;
38
+ const isWorkflowAvailable = await checkWorkflowAvailability();
39
+ if (isWorkflowAvailable) {
40
+ // Under the workflow runtime, this step would suspend and resume on webhook
41
+ // For now, the workflow runtime handles the suspension mechanism
42
+ approval = { approved: true };
43
+ }
44
+ else {
45
+ // Without workflow runtime, auto-approve (useful for development)
46
+ log.debug('No workflow runtime — auto-approving');
47
+ approval = { approved: true };
48
+ }
49
+ if (!approval.approved) {
50
+ log.warn('Approval rejected', { feedback: approval.feedback });
51
+ throw new Error(`Approval rejected: ${approval.feedback || 'No reason provided'}`);
52
+ }
53
+ // Step 3: Finalize
54
+ const finalPrompt = approval.modifiedContent
55
+ ? `Finalize with modifications: ${approval.modifiedContent}. Original: ${draftText}`
56
+ : prompt;
57
+ const finalResult = await agent.generate({ prompt: finalPrompt });
58
+ const finalText = finalResult.text ?? '';
59
+ const usage = finalResult.totalUsage
60
+ ? {
61
+ promptTokens: (finalResult.totalUsage.inputTokens ?? 0) + (draftResult.totalUsage?.inputTokens ?? 0),
62
+ completionTokens: (finalResult.totalUsage.outputTokens ?? 0) + (draftResult.totalUsage?.outputTokens ?? 0),
63
+ totalTokens: (finalResult.totalUsage.totalTokens ?? 0) + (draftResult.totalUsage?.totalTokens ?? 0),
64
+ }
65
+ : undefined;
66
+ return {
67
+ text: finalText,
68
+ steps: [
69
+ { name: 'llm-draft', status: 'completed' },
70
+ { name: 'webhook-approval', status: 'completed' },
71
+ { name: 'llm-finalize', status: 'completed' },
72
+ ],
73
+ usage,
74
+ };
75
+ }
76
+ // ============================================================================
77
+ // withSchedule
78
+ // ============================================================================
79
+ /**
80
+ * Schedule an agent execution after a delay.
81
+ *
82
+ * Under the Workflow runtime, uses durable sleep (zero compute during delay).
83
+ * Without the runtime, falls back to setTimeout.
84
+ *
85
+ * @example
86
+ * ```typescript
87
+ * const result = await withSchedule(agent, 'Send reminder email', {
88
+ * delay: '1h',
89
+ * });
90
+ * ```
91
+ */
92
+ export async function withSchedule(agent, prompt, options) {
93
+ log.info('withSchedule started', { delay: options.delay });
94
+ // Step 1: Sleep
95
+ const isWorkflowAvailable = await checkWorkflowAvailability();
96
+ if (isWorkflowAvailable) {
97
+ try {
98
+ const wf = await import('workflow');
99
+ await wf.sleep(options.delay);
100
+ }
101
+ catch {
102
+ const ms = parseDuration(options.delay);
103
+ log.warn('Workflow sleep failed, using setTimeout fallback', { ms });
104
+ await new Promise((resolve) => setTimeout(resolve, ms));
105
+ }
106
+ }
107
+ else {
108
+ const ms = parseDuration(options.delay);
109
+ log.debug('No workflow runtime — using setTimeout', { ms });
110
+ await new Promise((resolve) => setTimeout(resolve, ms));
111
+ }
112
+ log.info('Sleep completed, executing agent');
113
+ // Step 2: Generate
114
+ const result = await agent.generate({ prompt });
115
+ const text = result.text ?? '';
116
+ const usage = result.totalUsage
117
+ ? {
118
+ promptTokens: result.totalUsage.inputTokens ?? 0,
119
+ completionTokens: result.totalUsage.outputTokens ?? 0,
120
+ totalTokens: result.totalUsage.totalTokens ?? 0,
121
+ }
122
+ : undefined;
123
+ return {
124
+ text,
125
+ steps: [
126
+ { name: 'sleep', status: 'completed' },
127
+ { name: 'llm-generate', status: 'completed' },
128
+ ],
129
+ usage,
130
+ };
131
+ }
132
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/workflow/templates.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @agntk/core - Workflow Utilities
3
+ *
4
+ * Shared utilities for workflow durability features:
5
+ * - Runtime detection (checkWorkflowAvailability)
6
+ * - Duration parsing/formatting
7
+ *
8
+ * @see https://useworkflow.dev
9
+ */
10
+ /**
11
+ * Check if the Workflow DevKit runtime is available.
12
+ * Result is cached after first check.
13
+ */
14
+ export declare function checkWorkflowAvailability(): Promise<boolean>;
15
+ /**
16
+ * Reset workflow availability cache (for testing).
17
+ * @internal
18
+ */
19
+ export declare function _resetWorkflowCache(): void;
20
+ /**
21
+ * Parse a duration string into milliseconds.
22
+ * Supports: 30s, 5m, 1h, 1d
23
+ */
24
+ export declare function parseDuration(duration: string): number;
25
+ /**
26
+ * Format milliseconds as a human-readable duration.
27
+ */
28
+ export declare function formatDuration(ms: number): string;
29
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/workflow/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAaH;;;GAGG;AACH,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,OAAO,CAAC,CAalE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAMD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAqBtD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAMjD"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * @agntk/core - Workflow Utilities
3
+ *
4
+ * Shared utilities for workflow durability features:
5
+ * - Runtime detection (checkWorkflowAvailability)
6
+ * - Duration parsing/formatting
7
+ *
8
+ * @see https://useworkflow.dev
9
+ */
10
+ import { createLogger } from '@agntk/logger';
11
+ const log = createLogger('@agntk/core:workflow:utils');
12
+ // ============================================================================
13
+ // Workflow Runtime Detection
14
+ // ============================================================================
15
+ /** Cached availability result */
16
+ let _workflowAvailable = null;
17
+ /**
18
+ * Check if the Workflow DevKit runtime is available.
19
+ * Result is cached after first check.
20
+ */
21
+ export async function checkWorkflowAvailability() {
22
+ if (_workflowAvailable !== null)
23
+ return _workflowAvailable;
24
+ try {
25
+ await import('workflow');
26
+ _workflowAvailable = true;
27
+ log.info('Workflow runtime detected');
28
+ return true;
29
+ }
30
+ catch (_e) {
31
+ _workflowAvailable = false;
32
+ log.debug('Workflow runtime not available — durable features disabled');
33
+ return false;
34
+ }
35
+ }
36
+ /**
37
+ * Reset workflow availability cache (for testing).
38
+ * @internal
39
+ */
40
+ export function _resetWorkflowCache() {
41
+ _workflowAvailable = null;
42
+ }
43
+ // ============================================================================
44
+ // Duration Helpers
45
+ // ============================================================================
46
+ /**
47
+ * Parse a duration string into milliseconds.
48
+ * Supports: 30s, 5m, 1h, 1d
49
+ */
50
+ export function parseDuration(duration) {
51
+ const match = duration.match(/^(\d+)(s|m|h|d)$/);
52
+ if (!match) {
53
+ throw new Error(`Invalid duration format: ${duration}. Use format like '30s', '5m', '1h', '1d'`);
54
+ }
55
+ const value = parseInt(match[1], 10);
56
+ const unit = match[2];
57
+ switch (unit) {
58
+ case 's':
59
+ return value * 1000;
60
+ case 'm':
61
+ return value * 60 * 1000;
62
+ case 'h':
63
+ return value * 60 * 60 * 1000;
64
+ case 'd':
65
+ return value * 24 * 60 * 60 * 1000;
66
+ default:
67
+ throw new Error(`Unknown duration unit: ${unit}`);
68
+ }
69
+ }
70
+ /**
71
+ * Format milliseconds as a human-readable duration.
72
+ */
73
+ export function formatDuration(ms) {
74
+ if (ms < 1000)
75
+ return `${ms}ms`;
76
+ if (ms < 60000)
77
+ return `${Math.round(ms / 1000)}s`;
78
+ if (ms < 3600000)
79
+ return `${Math.round(ms / 60000)}m`;
80
+ if (ms < 86400000)
81
+ return `${Math.round(ms / 3600000)}h`;
82
+ return `${Math.round(ms / 86400000)}d`;
83
+ }
84
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/workflow/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,GAAG,GAAG,YAAY,CAAC,4BAA4B,CAAC,CAAC;AAEvD,+EAA+E;AAC/E,6BAA6B;AAC7B,+EAA+E;AAE/E,iCAAiC;AACjC,IAAI,kBAAkB,GAAmB,IAAI,CAAC;AAE9C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB;IAC7C,IAAI,kBAAkB,KAAK,IAAI;QAAE,OAAO,kBAAkB,CAAC;IAE3D,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QACzB,kBAAkB,GAAG,IAAI,CAAC;QAC1B,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,EAAW,EAAE,CAAC;QACrB,kBAAkB,GAAG,KAAK,CAAC;QAC3B,GAAG,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;QACxE,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IACjC,kBAAkB,GAAG,IAAI,CAAC;AAC5B,CAAC;AAED,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACjD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,2CAA2C,CAAC,CAAC;IACnG,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAEtB,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,GAAG;YACN,OAAO,KAAK,GAAG,IAAI,CAAC;QACtB,KAAK,GAAG;YACN,OAAO,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC;QAC3B,KAAK,GAAG;YACN,OAAO,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAChC,KAAK,GAAG;YACN,OAAO,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QACrC;YACE,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,IAAI,EAAE,GAAG,IAAI;QAAE,OAAO,GAAG,EAAE,IAAI,CAAC;IAChC,IAAI,EAAE,GAAG,KAAK;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;IACnD,IAAI,EAAE,GAAG,OAAO;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC;IACtD,IAAI,EAAE,GAAG,QAAQ;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IACzD,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC;AACzC,CAAC"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * @agntk/core - Best-of-N Test-Time Scaling
3
+ *
4
+ * Run an agent N times and pick the best output via LLM judge.
5
+ * Supports parallel/sequential execution, list-wise/pair-wise judging,
6
+ * and budget caps via UsageLimits.
7
+ */
8
+ import type { LanguageModel } from 'ai';
9
+ import type { Agent } from '../agent.js';
10
+ import type { UsageLimits } from '../usage-limits.js';
11
+ export interface BestOfNConfig {
12
+ /** Number of times to run the agent. */
13
+ n: number;
14
+ /** Judge model for ranking outputs. */
15
+ judgeModel: LanguageModel;
16
+ /** Judging strategy. 'list-wise' ranks all at once; 'pair-wise' does tournament. Default: 'list-wise'. */
17
+ strategy?: 'list-wise' | 'pair-wise';
18
+ /** Run agent instances in parallel or sequentially. Default: 'parallel'. */
19
+ execution?: 'parallel' | 'sequential';
20
+ /** Criteria for the judge to evaluate outputs against. */
21
+ criteria: string;
22
+ /** Optional budget cap. Stops early if total tokens across all runs exceed this. */
23
+ budget?: UsageLimits;
24
+ }
25
+ export interface BestOfNCandidate {
26
+ /** The output text from this run. */
27
+ text: string;
28
+ /** The score assigned by the judge (higher is better). */
29
+ score: number;
30
+ /** Index of this candidate (0-based). */
31
+ index: number;
32
+ /** Token usage for this run. */
33
+ usage?: {
34
+ inputTokens: number;
35
+ outputTokens: number;
36
+ totalTokens: number;
37
+ };
38
+ }
39
+ export interface BestOfNResult {
40
+ /** The winning candidate. */
41
+ best: BestOfNCandidate;
42
+ /** All candidates with scores. */
43
+ candidates: BestOfNCandidate[];
44
+ /** Total token usage across all agent runs. */
45
+ totalUsage: {
46
+ inputTokens: number;
47
+ outputTokens: number;
48
+ totalTokens: number;
49
+ };
50
+ /** Whether the run was stopped early due to budget. */
51
+ budgetExceeded: boolean;
52
+ /** Number of candidates actually generated (may be < n if budget exceeded). */
53
+ runsCompleted: number;
54
+ }
55
+ /**
56
+ * Run an agent N times and pick the best output via LLM judge.
57
+ *
58
+ * @example
59
+ * ```typescript
60
+ * const result = await withBestOfN(agent, 'Write a haiku about coding', {
61
+ * n: 3,
62
+ * judgeModel: myModel,
63
+ * criteria: 'Quality, creativity, and adherence to haiku format',
64
+ * });
65
+ * console.log(result.best.text); // Best haiku
66
+ * ```
67
+ */
68
+ export declare function withBestOfN(agent: Agent, prompt: string, config: BestOfNConfig): Promise<BestOfNResult>;
69
+ //# sourceMappingURL=best-of-n.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"best-of-n.d.ts","sourceRoot":"","sources":["../../src/wrappers/best-of-n.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAQnD,MAAM,WAAW,aAAa;IAC5B,wCAAwC;IACxC,CAAC,EAAE,MAAM,CAAC;IACV,uCAAuC;IACvC,UAAU,EAAE,aAAa,CAAC;IAC1B,0GAA0G;IAC1G,QAAQ,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC;IACrC,4EAA4E;IAC5E,SAAS,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACtC,0DAA0D;IAC1D,QAAQ,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,KAAK,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5E;AAED,MAAM,WAAW,aAAa;IAC5B,6BAA6B;IAC7B,IAAI,EAAE,gBAAgB,CAAC;IACvB,kCAAkC;IAClC,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,+CAA+C;IAC/C,UAAU,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/E,uDAAuD;IACvD,cAAc,EAAE,OAAO,CAAC;IACxB,+EAA+E;IAC/E,aAAa,EAAE,MAAM,CAAC;CACvB;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,aAAa,CAAC,CA+FxB"}
@@ -0,0 +1,242 @@
1
+ /**
2
+ * @agntk/core - Best-of-N Test-Time Scaling
3
+ *
4
+ * Run an agent N times and pick the best output via LLM judge.
5
+ * Supports parallel/sequential execution, list-wise/pair-wise judging,
6
+ * and budget caps via UsageLimits.
7
+ */
8
+ import { createLogger } from '@agntk/logger';
9
+ const log = createLogger('@agntk/core:best-of-n');
10
+ // ============================================================================
11
+ // Core Implementation
12
+ // ============================================================================
13
+ /**
14
+ * Run an agent N times and pick the best output via LLM judge.
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * const result = await withBestOfN(agent, 'Write a haiku about coding', {
19
+ * n: 3,
20
+ * judgeModel: myModel,
21
+ * criteria: 'Quality, creativity, and adherence to haiku format',
22
+ * });
23
+ * console.log(result.best.text); // Best haiku
24
+ * ```
25
+ */
26
+ export async function withBestOfN(agent, prompt, config) {
27
+ const { n, judgeModel, strategy = 'list-wise', execution = 'parallel', criteria, budget, } = config;
28
+ log.info('Starting best-of-N', { n, strategy, execution, criteria: criteria.slice(0, 50) });
29
+ // Generate candidates
30
+ const candidates = [];
31
+ const totalUsage = { inputTokens: 0, outputTokens: 0, totalTokens: 0 };
32
+ let budgetExceeded = false;
33
+ if (execution === 'parallel') {
34
+ const promises = Array.from({ length: n }, (_, i) => generateCandidate(agent, prompt, i));
35
+ const results = await Promise.allSettled(promises);
36
+ for (const result of results) {
37
+ if (result.status === 'fulfilled' && result.value) {
38
+ candidates.push(result.value);
39
+ if (result.value.usage) {
40
+ totalUsage.inputTokens += result.value.usage.inputTokens;
41
+ totalUsage.outputTokens += result.value.usage.outputTokens;
42
+ totalUsage.totalTokens += result.value.usage.totalTokens;
43
+ }
44
+ }
45
+ }
46
+ }
47
+ else {
48
+ // Sequential with budget check
49
+ for (let i = 0; i < n; i++) {
50
+ if (budget && isOverBudget(totalUsage, budget)) {
51
+ budgetExceeded = true;
52
+ log.info('Budget exceeded, stopping early', { runsCompleted: i, totalUsage });
53
+ break;
54
+ }
55
+ const candidate = await generateCandidate(agent, prompt, i);
56
+ if (candidate) {
57
+ candidates.push(candidate);
58
+ if (candidate.usage) {
59
+ totalUsage.inputTokens += candidate.usage.inputTokens;
60
+ totalUsage.outputTokens += candidate.usage.outputTokens;
61
+ totalUsage.totalTokens += candidate.usage.totalTokens;
62
+ }
63
+ }
64
+ }
65
+ }
66
+ if (candidates.length === 0) {
67
+ throw new Error('All agent runs failed — no candidates generated');
68
+ }
69
+ if (candidates.length === 1) {
70
+ candidates[0].score = 1;
71
+ return {
72
+ best: candidates[0],
73
+ candidates,
74
+ totalUsage,
75
+ budgetExceeded,
76
+ runsCompleted: candidates.length,
77
+ };
78
+ }
79
+ // Judge candidates
80
+ log.info('Judging candidates', { count: candidates.length, strategy });
81
+ let scoredCandidates;
82
+ if (strategy === 'pair-wise') {
83
+ scoredCandidates = await pairWiseJudge(candidates, judgeModel, criteria);
84
+ }
85
+ else {
86
+ scoredCandidates = await listWiseJudge(candidates, judgeModel, criteria);
87
+ }
88
+ // Sort by score descending
89
+ scoredCandidates.sort((a, b) => b.score - a.score);
90
+ const result = {
91
+ best: scoredCandidates[0],
92
+ candidates: scoredCandidates,
93
+ totalUsage,
94
+ budgetExceeded,
95
+ runsCompleted: candidates.length,
96
+ };
97
+ log.info('Best-of-N complete', {
98
+ bestIndex: result.best.index,
99
+ bestScore: result.best.score,
100
+ runsCompleted: result.runsCompleted,
101
+ });
102
+ return result;
103
+ }
104
+ // ============================================================================
105
+ // Candidate Generation
106
+ // ============================================================================
107
+ async function generateCandidate(agent, prompt, index) {
108
+ try {
109
+ const result = await agent.generate({ prompt });
110
+ return {
111
+ text: result.text ?? '',
112
+ score: 0,
113
+ index,
114
+ usage: result.totalUsage
115
+ ? {
116
+ inputTokens: result.totalUsage.inputTokens ?? 0,
117
+ outputTokens: result.totalUsage.outputTokens ?? 0,
118
+ totalTokens: result.totalUsage.totalTokens ?? 0,
119
+ }
120
+ : undefined,
121
+ };
122
+ }
123
+ catch (error) {
124
+ log.error('Candidate generation failed', { index, error: String(error) });
125
+ return null;
126
+ }
127
+ }
128
+ // ============================================================================
129
+ // List-Wise Judge
130
+ // ============================================================================
131
+ /**
132
+ * Rank all candidates at once using a single LLM call.
133
+ * Returns candidates with scores assigned.
134
+ */
135
+ async function listWiseJudge(candidates, model, criteria) {
136
+ const { generateText } = await import('ai');
137
+ const outputList = candidates
138
+ .map((c, i) => `--- Output ${i + 1} ---\n${c.text.slice(0, 2000)}\n`)
139
+ .join('\n');
140
+ const judgePrompt = `You are a judge evaluating ${candidates.length} outputs for the same task.
141
+
142
+ Criteria: ${criteria}
143
+
144
+ ${outputList}
145
+
146
+ Rank ALL outputs from best to worst. Respond with EXACTLY one line per output in the format:
147
+ OUTPUT_NUMBER:SCORE
148
+
149
+ Where SCORE is 1-10 (10 = best). Example for 3 outputs:
150
+ 2:9
151
+ 1:7
152
+ 3:4`;
153
+ try {
154
+ const result = await generateText({
155
+ model,
156
+ prompt: judgePrompt,
157
+ maxOutputTokens: 500,
158
+ });
159
+ const scored = [...candidates];
160
+ const lines = result.text.trim().split('\n');
161
+ for (const line of lines) {
162
+ const match = line.match(/(\d+)\s*:\s*(\d+)/);
163
+ if (match) {
164
+ const outputNum = parseInt(match[1], 10) - 1; // 0-indexed
165
+ const score = parseInt(match[2], 10);
166
+ if (outputNum >= 0 && outputNum < scored.length) {
167
+ scored[outputNum].score = score;
168
+ }
169
+ }
170
+ }
171
+ return scored;
172
+ }
173
+ catch (error) {
174
+ log.error('List-wise judge failed', { error: String(error) });
175
+ // Fallback: assign equal scores
176
+ return candidates.map((c) => ({ ...c, score: 5 }));
177
+ }
178
+ }
179
+ // ============================================================================
180
+ // Pair-Wise Judge
181
+ // ============================================================================
182
+ /**
183
+ * Tournament-style judging: compare pairs and accumulate wins as scores.
184
+ */
185
+ async function pairWiseJudge(candidates, model, criteria) {
186
+ const { generateText } = await import('ai');
187
+ const scores = new Array(candidates.length).fill(0);
188
+ // Compare all pairs
189
+ const comparisons = [];
190
+ for (let i = 0; i < candidates.length; i++) {
191
+ for (let j = i + 1; j < candidates.length; j++) {
192
+ comparisons.push([i, j]);
193
+ }
194
+ }
195
+ // Run comparisons in parallel
196
+ await Promise.all(comparisons.map(async ([i, j]) => {
197
+ try {
198
+ const result = await generateText({
199
+ model,
200
+ prompt: `You are a judge comparing two outputs for the same task.
201
+
202
+ Criteria: ${criteria}
203
+
204
+ --- Output A ---
205
+ ${candidates[i].text.slice(0, 2000)}
206
+
207
+ --- Output B ---
208
+ ${candidates[j].text.slice(0, 2000)}
209
+
210
+ Which output is better based on the criteria? Respond with EXACTLY one word: "A" or "B"`,
211
+ maxOutputTokens: 10,
212
+ });
213
+ const verdict = result.text.trim().toUpperCase();
214
+ if (verdict === 'A' || verdict.startsWith('A')) {
215
+ scores[i]++;
216
+ }
217
+ else {
218
+ scores[j]++;
219
+ }
220
+ }
221
+ catch (error) {
222
+ log.error('Pair-wise comparison failed', { i, j, error: String(error) });
223
+ // Tie — both get a point
224
+ scores[i] += 0.5;
225
+ scores[j] += 0.5;
226
+ }
227
+ }));
228
+ return candidates.map((c, i) => ({ ...c, score: scores[i] }));
229
+ }
230
+ // ============================================================================
231
+ // Budget Check
232
+ // ============================================================================
233
+ function isOverBudget(usage, limits) {
234
+ if (limits.maxTotalTokens && usage.totalTokens >= limits.maxTotalTokens)
235
+ return true;
236
+ if (limits.maxInputTokens && usage.inputTokens >= limits.maxInputTokens)
237
+ return true;
238
+ if (limits.maxOutputTokens && usage.outputTokens >= limits.maxOutputTokens)
239
+ return true;
240
+ return false;
241
+ }
242
+ //# sourceMappingURL=best-of-n.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"best-of-n.js","sourceRoot":"","sources":["../../src/wrappers/best-of-n.ts"],"names":[],"mappings":"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"}