@falai/agent 3.4.5 → 4.0.0-alpha.1

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 (847) hide show
  1. package/README.md +41 -34
  2. package/dist/cjs/core/Agent.d.ts +22 -378
  3. package/dist/cjs/core/Agent.d.ts.map +1 -1
  4. package/dist/cjs/core/Agent.js +104 -1178
  5. package/dist/cjs/core/Agent.js.map +1 -1
  6. package/dist/cjs/core/CompactionEngine.d.ts.map +1 -1
  7. package/dist/cjs/core/CompactionEngine.js +5 -3
  8. package/dist/cjs/core/CompactionEngine.js.map +1 -1
  9. package/dist/cjs/core/FlowSpec.d.ts +136 -0
  10. package/dist/cjs/core/FlowSpec.d.ts.map +1 -0
  11. package/dist/cjs/core/FlowSpec.js +522 -0
  12. package/dist/cjs/core/FlowSpec.js.map +1 -0
  13. package/dist/cjs/core/Migrate.d.ts +38 -0
  14. package/dist/cjs/core/Migrate.d.ts.map +1 -0
  15. package/dist/cjs/core/Migrate.js +270 -0
  16. package/dist/cjs/core/Migrate.js.map +1 -0
  17. package/dist/cjs/core/Prompt.d.ts +54 -0
  18. package/dist/cjs/core/Prompt.d.ts.map +1 -0
  19. package/dist/cjs/core/Prompt.js +143 -0
  20. package/dist/cjs/core/Prompt.js.map +1 -0
  21. package/dist/cjs/core/Runner.d.ts +160 -0
  22. package/dist/cjs/core/Runner.d.ts.map +1 -0
  23. package/dist/cjs/core/Runner.js +1131 -0
  24. package/dist/cjs/core/Runner.js.map +1 -0
  25. package/dist/cjs/core/Speak.d.ts +37 -0
  26. package/dist/cjs/core/Speak.d.ts.map +1 -0
  27. package/dist/cjs/core/Speak.js +364 -0
  28. package/dist/cjs/core/Speak.js.map +1 -0
  29. package/dist/cjs/core/Understand.d.ts +28 -0
  30. package/dist/cjs/core/Understand.d.ts.map +1 -0
  31. package/dist/cjs/core/Understand.js +353 -0
  32. package/dist/cjs/core/Understand.js.map +1 -0
  33. package/dist/cjs/core/contracts.d.ts +122 -0
  34. package/dist/cjs/core/contracts.d.ts.map +1 -0
  35. package/dist/cjs/core/contracts.js +11 -0
  36. package/dist/cjs/core/contracts.js.map +1 -0
  37. package/dist/cjs/core/falai.d.ts +57 -0
  38. package/dist/cjs/core/falai.d.ts.map +1 -0
  39. package/dist/cjs/core/falai.js +43 -0
  40. package/dist/cjs/core/falai.js.map +1 -0
  41. package/dist/cjs/core/predicate.d.ts +9 -0
  42. package/dist/cjs/core/predicate.d.ts.map +1 -0
  43. package/dist/cjs/core/predicate.js +58 -0
  44. package/dist/cjs/core/predicate.js.map +1 -0
  45. package/dist/cjs/index.d.ts +26 -31
  46. package/dist/cjs/index.d.ts.map +1 -1
  47. package/dist/cjs/index.js +46 -68
  48. package/dist/cjs/index.js.map +1 -1
  49. package/dist/cjs/persistence/MemoryStore.d.ts +15 -0
  50. package/dist/cjs/persistence/MemoryStore.d.ts.map +1 -0
  51. package/dist/cjs/persistence/MemoryStore.js +39 -0
  52. package/dist/cjs/persistence/MemoryStore.js.map +1 -0
  53. package/dist/cjs/persistence/MongoStore.d.ts +42 -0
  54. package/dist/cjs/persistence/MongoStore.d.ts.map +1 -0
  55. package/dist/cjs/persistence/MongoStore.js +60 -0
  56. package/dist/cjs/persistence/MongoStore.js.map +1 -0
  57. package/dist/cjs/persistence/OpenSearchStore.d.ts +86 -0
  58. package/dist/cjs/persistence/OpenSearchStore.d.ts.map +1 -0
  59. package/dist/cjs/persistence/OpenSearchStore.js +120 -0
  60. package/dist/cjs/persistence/OpenSearchStore.js.map +1 -0
  61. package/dist/cjs/persistence/PostgresStore.d.ts +41 -0
  62. package/dist/cjs/persistence/PostgresStore.d.ts.map +1 -0
  63. package/dist/cjs/persistence/PostgresStore.js +58 -0
  64. package/dist/cjs/persistence/PostgresStore.js.map +1 -0
  65. package/dist/cjs/persistence/PrismaStore.d.ts +65 -0
  66. package/dist/cjs/persistence/PrismaStore.d.ts.map +1 -0
  67. package/dist/cjs/persistence/PrismaStore.js +95 -0
  68. package/dist/cjs/persistence/PrismaStore.js.map +1 -0
  69. package/dist/cjs/persistence/RedisStore.d.ts +34 -0
  70. package/dist/cjs/persistence/RedisStore.d.ts.map +1 -0
  71. package/dist/cjs/persistence/RedisStore.js +61 -0
  72. package/dist/cjs/persistence/RedisStore.js.map +1 -0
  73. package/dist/cjs/persistence/SQLiteStore.d.ts +45 -0
  74. package/dist/cjs/persistence/SQLiteStore.d.ts.map +1 -0
  75. package/dist/cjs/persistence/SQLiteStore.js +74 -0
  76. package/dist/cjs/persistence/SQLiteStore.js.map +1 -0
  77. package/dist/cjs/persistence/sessionRow.d.ts +14 -0
  78. package/dist/cjs/persistence/sessionRow.d.ts.map +1 -0
  79. package/dist/cjs/persistence/sessionRow.js +50 -0
  80. package/dist/cjs/persistence/sessionRow.js.map +1 -0
  81. package/dist/cjs/providers/DeepSeekProvider.d.ts.map +1 -1
  82. package/dist/cjs/providers/DeepSeekProvider.js +8 -3
  83. package/dist/cjs/providers/DeepSeekProvider.js.map +1 -1
  84. package/dist/cjs/providers/GeminiProvider.d.ts +4 -3
  85. package/dist/cjs/providers/GeminiProvider.d.ts.map +1 -1
  86. package/dist/cjs/providers/GeminiProvider.js +4 -3
  87. package/dist/cjs/providers/GeminiProvider.js.map +1 -1
  88. package/dist/cjs/providers/OpenAICompatibleProvider.d.ts +4 -0
  89. package/dist/cjs/providers/OpenAICompatibleProvider.d.ts.map +1 -1
  90. package/dist/cjs/providers/OpenAICompatibleProvider.js +2 -0
  91. package/dist/cjs/providers/OpenAICompatibleProvider.js.map +1 -1
  92. package/dist/cjs/providers/OpenRouterProvider.d.ts.map +1 -1
  93. package/dist/cjs/providers/OpenRouterProvider.js +2 -4
  94. package/dist/cjs/providers/OpenRouterProvider.js.map +1 -1
  95. package/dist/cjs/providers/ProviderAdapter.d.ts +1 -1
  96. package/dist/cjs/providers/ProviderAdapter.d.ts.map +1 -1
  97. package/dist/cjs/providers/ProviderAdapter.js +33 -10
  98. package/dist/cjs/providers/ProviderAdapter.js.map +1 -1
  99. package/dist/cjs/types/agent.d.ts +153 -383
  100. package/dist/cjs/types/agent.d.ts.map +1 -1
  101. package/dist/cjs/types/agent.js +1 -1
  102. package/dist/cjs/types/ai.d.ts +32 -1
  103. package/dist/cjs/types/ai.d.ts.map +1 -1
  104. package/dist/cjs/types/compaction.d.ts +3 -1
  105. package/dist/cjs/types/compaction.d.ts.map +1 -1
  106. package/dist/cjs/types/errors.d.ts +9 -12
  107. package/dist/cjs/types/errors.d.ts.map +1 -1
  108. package/dist/cjs/types/errors.js +14 -17
  109. package/dist/cjs/types/errors.js.map +1 -1
  110. package/dist/cjs/types/flow.d.ts +265 -513
  111. package/dist/cjs/types/flow.d.ts.map +1 -1
  112. package/dist/cjs/types/flow.js +7 -1
  113. package/dist/cjs/types/flow.js.map +1 -1
  114. package/dist/cjs/types/history.d.ts +7 -18
  115. package/dist/cjs/types/history.d.ts.map +1 -1
  116. package/dist/cjs/types/history.js.map +1 -1
  117. package/dist/cjs/types/index.d.ts +9 -15
  118. package/dist/cjs/types/index.d.ts.map +1 -1
  119. package/dist/cjs/types/index.js +4 -14
  120. package/dist/cjs/types/index.js.map +1 -1
  121. package/dist/cjs/types/session.d.ts +94 -64
  122. package/dist/cjs/types/session.d.ts.map +1 -1
  123. package/dist/cjs/types/session.js +5 -1
  124. package/dist/cjs/types/session.js.map +1 -1
  125. package/dist/cjs/types/tool.d.ts +37 -207
  126. package/dist/cjs/types/tool.d.ts.map +1 -1
  127. package/dist/cjs/types/tool.js +5 -14
  128. package/dist/cjs/types/tool.js.map +1 -1
  129. package/dist/cjs/utils/clock.d.ts +28 -0
  130. package/dist/cjs/utils/clock.d.ts.map +1 -0
  131. package/dist/cjs/utils/clock.js +64 -0
  132. package/dist/cjs/utils/clock.js.map +1 -0
  133. package/dist/cjs/utils/duration.d.ts +11 -0
  134. package/dist/cjs/utils/duration.d.ts.map +1 -0
  135. package/dist/cjs/utils/duration.js +31 -0
  136. package/dist/cjs/utils/duration.js.map +1 -0
  137. package/dist/cjs/utils/history.d.ts +4 -1
  138. package/dist/cjs/utils/history.d.ts.map +1 -1
  139. package/dist/cjs/utils/history.js +2 -2
  140. package/dist/cjs/utils/history.js.map +1 -1
  141. package/dist/cjs/utils/index.d.ts +4 -10
  142. package/dist/cjs/utils/index.d.ts.map +1 -1
  143. package/dist/cjs/utils/index.js +14 -61
  144. package/dist/cjs/utils/index.js.map +1 -1
  145. package/dist/cjs/utils/json.d.ts +2 -0
  146. package/dist/cjs/utils/json.d.ts.map +1 -1
  147. package/dist/cjs/utils/json.js +5 -0
  148. package/dist/cjs/utils/json.js.map +1 -1
  149. package/dist/cjs/utils/outcomes.d.ts +48 -0
  150. package/dist/cjs/utils/outcomes.d.ts.map +1 -0
  151. package/dist/cjs/utils/outcomes.js +51 -0
  152. package/dist/cjs/utils/outcomes.js.map +1 -0
  153. package/dist/cjs/utils/schema.d.ts +50 -0
  154. package/dist/cjs/utils/schema.d.ts.map +1 -0
  155. package/dist/cjs/utils/schema.js +138 -0
  156. package/dist/cjs/utils/schema.js.map +1 -0
  157. package/dist/cjs/utils/streamingMessage.d.ts +3 -2
  158. package/dist/cjs/utils/streamingMessage.d.ts.map +1 -1
  159. package/dist/cjs/utils/streamingMessage.js +38 -4
  160. package/dist/cjs/utils/streamingMessage.js.map +1 -1
  161. package/dist/cjs/utils/template.d.ts +13 -149
  162. package/dist/cjs/utils/template.d.ts.map +1 -1
  163. package/dist/cjs/utils/template.js +31 -363
  164. package/dist/cjs/utils/template.js.map +1 -1
  165. package/dist/cjs/utils/usage.d.ts +19 -0
  166. package/dist/cjs/utils/usage.d.ts.map +1 -0
  167. package/dist/cjs/utils/usage.js +35 -0
  168. package/dist/cjs/utils/usage.js.map +1 -0
  169. package/dist/core/Agent.d.ts +22 -378
  170. package/dist/core/Agent.d.ts.map +1 -1
  171. package/dist/core/Agent.js +107 -1181
  172. package/dist/core/Agent.js.map +1 -1
  173. package/dist/core/CompactionEngine.d.ts.map +1 -1
  174. package/dist/core/CompactionEngine.js +5 -3
  175. package/dist/core/CompactionEngine.js.map +1 -1
  176. package/dist/core/FlowSpec.d.ts +136 -0
  177. package/dist/core/FlowSpec.d.ts.map +1 -0
  178. package/dist/core/FlowSpec.js +516 -0
  179. package/dist/core/FlowSpec.js.map +1 -0
  180. package/dist/core/Migrate.d.ts +38 -0
  181. package/dist/core/Migrate.d.ts.map +1 -0
  182. package/dist/core/Migrate.js +264 -0
  183. package/dist/core/Migrate.js.map +1 -0
  184. package/dist/core/Prompt.d.ts +54 -0
  185. package/dist/core/Prompt.d.ts.map +1 -0
  186. package/dist/core/Prompt.js +133 -0
  187. package/dist/core/Prompt.js.map +1 -0
  188. package/dist/core/Runner.d.ts +160 -0
  189. package/dist/core/Runner.d.ts.map +1 -0
  190. package/dist/core/Runner.js +1127 -0
  191. package/dist/core/Runner.js.map +1 -0
  192. package/dist/core/Speak.d.ts +37 -0
  193. package/dist/core/Speak.d.ts.map +1 -0
  194. package/dist/core/Speak.js +360 -0
  195. package/dist/core/Speak.js.map +1 -0
  196. package/dist/core/Understand.d.ts +28 -0
  197. package/dist/core/Understand.d.ts.map +1 -0
  198. package/dist/core/Understand.js +349 -0
  199. package/dist/core/Understand.js.map +1 -0
  200. package/dist/core/contracts.d.ts +122 -0
  201. package/dist/core/contracts.d.ts.map +1 -0
  202. package/dist/core/contracts.js +10 -0
  203. package/dist/core/contracts.js.map +1 -0
  204. package/dist/core/falai.d.ts +57 -0
  205. package/dist/core/falai.d.ts.map +1 -0
  206. package/dist/core/falai.js +40 -0
  207. package/dist/core/falai.js.map +1 -0
  208. package/dist/core/predicate.d.ts +9 -0
  209. package/dist/core/predicate.d.ts.map +1 -0
  210. package/dist/core/predicate.js +54 -0
  211. package/dist/core/predicate.js.map +1 -0
  212. package/dist/index.d.ts +26 -31
  213. package/dist/index.d.ts.map +1 -1
  214. package/dist/index.js +19 -24
  215. package/dist/index.js.map +1 -1
  216. package/dist/persistence/MemoryStore.d.ts +15 -0
  217. package/dist/persistence/MemoryStore.d.ts.map +1 -0
  218. package/dist/persistence/MemoryStore.js +35 -0
  219. package/dist/persistence/MemoryStore.js.map +1 -0
  220. package/dist/persistence/MongoStore.d.ts +42 -0
  221. package/dist/persistence/MongoStore.d.ts.map +1 -0
  222. package/dist/persistence/MongoStore.js +56 -0
  223. package/dist/persistence/MongoStore.js.map +1 -0
  224. package/dist/persistence/OpenSearchStore.d.ts +86 -0
  225. package/dist/persistence/OpenSearchStore.d.ts.map +1 -0
  226. package/dist/persistence/OpenSearchStore.js +116 -0
  227. package/dist/persistence/OpenSearchStore.js.map +1 -0
  228. package/dist/persistence/PostgresStore.d.ts +41 -0
  229. package/dist/persistence/PostgresStore.d.ts.map +1 -0
  230. package/dist/persistence/PostgresStore.js +54 -0
  231. package/dist/persistence/PostgresStore.js.map +1 -0
  232. package/dist/persistence/PrismaStore.d.ts +65 -0
  233. package/dist/persistence/PrismaStore.d.ts.map +1 -0
  234. package/dist/persistence/PrismaStore.js +91 -0
  235. package/dist/persistence/PrismaStore.js.map +1 -0
  236. package/dist/persistence/RedisStore.d.ts +34 -0
  237. package/dist/persistence/RedisStore.d.ts.map +1 -0
  238. package/dist/persistence/RedisStore.js +57 -0
  239. package/dist/persistence/RedisStore.js.map +1 -0
  240. package/dist/persistence/SQLiteStore.d.ts +45 -0
  241. package/dist/persistence/SQLiteStore.d.ts.map +1 -0
  242. package/dist/persistence/SQLiteStore.js +70 -0
  243. package/dist/persistence/SQLiteStore.js.map +1 -0
  244. package/dist/persistence/sessionRow.d.ts +14 -0
  245. package/dist/persistence/sessionRow.d.ts.map +1 -0
  246. package/dist/persistence/sessionRow.js +45 -0
  247. package/dist/persistence/sessionRow.js.map +1 -0
  248. package/dist/providers/DeepSeekProvider.d.ts.map +1 -1
  249. package/dist/providers/DeepSeekProvider.js +8 -3
  250. package/dist/providers/DeepSeekProvider.js.map +1 -1
  251. package/dist/providers/GeminiProvider.d.ts +4 -3
  252. package/dist/providers/GeminiProvider.d.ts.map +1 -1
  253. package/dist/providers/GeminiProvider.js +4 -3
  254. package/dist/providers/GeminiProvider.js.map +1 -1
  255. package/dist/providers/OpenAICompatibleProvider.d.ts +4 -0
  256. package/dist/providers/OpenAICompatibleProvider.d.ts.map +1 -1
  257. package/dist/providers/OpenAICompatibleProvider.js +2 -0
  258. package/dist/providers/OpenAICompatibleProvider.js.map +1 -1
  259. package/dist/providers/OpenRouterProvider.d.ts.map +1 -1
  260. package/dist/providers/OpenRouterProvider.js +2 -4
  261. package/dist/providers/OpenRouterProvider.js.map +1 -1
  262. package/dist/providers/ProviderAdapter.d.ts +1 -1
  263. package/dist/providers/ProviderAdapter.d.ts.map +1 -1
  264. package/dist/providers/ProviderAdapter.js +34 -11
  265. package/dist/providers/ProviderAdapter.js.map +1 -1
  266. package/dist/types/agent.d.ts +153 -383
  267. package/dist/types/agent.d.ts.map +1 -1
  268. package/dist/types/agent.js +1 -1
  269. package/dist/types/ai.d.ts +32 -1
  270. package/dist/types/ai.d.ts.map +1 -1
  271. package/dist/types/compaction.d.ts +3 -1
  272. package/dist/types/compaction.d.ts.map +1 -1
  273. package/dist/types/errors.d.ts +9 -12
  274. package/dist/types/errors.d.ts.map +1 -1
  275. package/dist/types/errors.js +12 -15
  276. package/dist/types/errors.js.map +1 -1
  277. package/dist/types/flow.d.ts +265 -513
  278. package/dist/types/flow.d.ts.map +1 -1
  279. package/dist/types/flow.js +7 -1
  280. package/dist/types/flow.js.map +1 -1
  281. package/dist/types/history.d.ts +7 -18
  282. package/dist/types/history.d.ts.map +1 -1
  283. package/dist/types/history.js.map +1 -1
  284. package/dist/types/index.d.ts +9 -15
  285. package/dist/types/index.d.ts.map +1 -1
  286. package/dist/types/index.js +2 -7
  287. package/dist/types/index.js.map +1 -1
  288. package/dist/types/session.d.ts +94 -64
  289. package/dist/types/session.d.ts.map +1 -1
  290. package/dist/types/session.js +5 -1
  291. package/dist/types/session.js.map +1 -1
  292. package/dist/types/tool.d.ts +37 -207
  293. package/dist/types/tool.d.ts.map +1 -1
  294. package/dist/types/tool.js +6 -13
  295. package/dist/types/tool.js.map +1 -1
  296. package/dist/utils/clock.d.ts +28 -0
  297. package/dist/utils/clock.d.ts.map +1 -0
  298. package/dist/utils/clock.js +59 -0
  299. package/dist/utils/clock.js.map +1 -0
  300. package/dist/utils/duration.d.ts +11 -0
  301. package/dist/utils/duration.d.ts.map +1 -0
  302. package/dist/utils/duration.js +26 -0
  303. package/dist/utils/duration.js.map +1 -0
  304. package/dist/utils/history.d.ts +4 -1
  305. package/dist/utils/history.d.ts.map +1 -1
  306. package/dist/utils/history.js +2 -2
  307. package/dist/utils/history.js.map +1 -1
  308. package/dist/utils/index.d.ts +4 -10
  309. package/dist/utils/index.d.ts.map +1 -1
  310. package/dist/utils/index.js +4 -21
  311. package/dist/utils/index.js.map +1 -1
  312. package/dist/utils/json.d.ts +2 -0
  313. package/dist/utils/json.d.ts.map +1 -1
  314. package/dist/utils/json.js +4 -0
  315. package/dist/utils/json.js.map +1 -1
  316. package/dist/utils/outcomes.d.ts +48 -0
  317. package/dist/utils/outcomes.d.ts.map +1 -0
  318. package/dist/utils/outcomes.js +48 -0
  319. package/dist/utils/outcomes.js.map +1 -0
  320. package/dist/utils/schema.d.ts +50 -0
  321. package/dist/utils/schema.d.ts.map +1 -0
  322. package/dist/utils/schema.js +129 -0
  323. package/dist/utils/schema.js.map +1 -0
  324. package/dist/utils/streamingMessage.d.ts +3 -2
  325. package/dist/utils/streamingMessage.d.ts.map +1 -1
  326. package/dist/utils/streamingMessage.js +38 -4
  327. package/dist/utils/streamingMessage.js.map +1 -1
  328. package/dist/utils/template.d.ts +13 -149
  329. package/dist/utils/template.d.ts.map +1 -1
  330. package/dist/utils/template.js +28 -355
  331. package/dist/utils/template.js.map +1 -1
  332. package/dist/utils/usage.d.ts +19 -0
  333. package/dist/utils/usage.d.ts.map +1 -0
  334. package/dist/utils/usage.js +31 -0
  335. package/dist/utils/usage.js.map +1 -0
  336. package/docs/README.md +37 -19
  337. package/docs/concepts/architecture.md +117 -239
  338. package/docs/concepts/collection.md +170 -0
  339. package/docs/concepts/pipeline.md +132 -378
  340. package/docs/concepts/runs-and-waits.md +192 -0
  341. package/docs/guides/actions-and-events.md +276 -0
  342. package/docs/guides/branching.md +119 -208
  343. package/docs/guides/compaction.md +63 -158
  344. package/docs/guides/conditions.md +164 -128
  345. package/docs/guides/error-handling.md +168 -164
  346. package/docs/guides/flow-control.md +210 -349
  347. package/docs/guides/flows-from-json.md +224 -0
  348. package/docs/guides/instructions.md +125 -161
  349. package/docs/guides/persistence.md +182 -206
  350. package/docs/guides/streaming.md +50 -114
  351. package/docs/guides/testing.md +284 -0
  352. package/docs/guides/triggers.md +401 -0
  353. package/docs/migration/README.md +8 -15
  354. package/docs/migration/v1-to-v2.md +1 -1
  355. package/docs/migration/v2-3-to-v2-4.md +2 -2
  356. package/docs/migration/v2-6-to-v2-7.md +4 -4
  357. package/docs/migration/v3-to-v4.md +452 -0
  358. package/docs/reference/actions-events-conditions.md +396 -0
  359. package/docs/reference/agent.md +244 -0
  360. package/docs/reference/branches.md +75 -203
  361. package/docs/reference/errors.md +188 -144
  362. package/docs/reference/fields.md +125 -0
  363. package/docs/reference/flow-spec.md +248 -0
  364. package/docs/reference/flow.md +104 -192
  365. package/docs/reference/instruction.md +83 -137
  366. package/docs/reference/outcomes.md +273 -0
  367. package/docs/reference/providers.md +525 -302
  368. package/docs/reference/session.md +210 -0
  369. package/docs/reference/step.md +194 -312
  370. package/docs/reference/stores.md +496 -0
  371. package/docs/reference/tool.md +162 -231
  372. package/docs/reference/trigger.md +180 -0
  373. package/docs/rfc/v4-one-flow.md +477 -0
  374. package/docs/start/01-install.md +59 -44
  375. package/docs/start/02-first-agent.md +97 -147
  376. package/docs/start/03-collect-data.md +78 -183
  377. package/docs/start/04-add-tools.md +159 -227
  378. package/docs/start/05-go-to-production.md +167 -164
  379. package/examples/01-quickstart.ts +26 -16
  380. package/examples/02-fields.ts +75 -0
  381. package/examples/03-tools.ts +79 -119
  382. package/examples/04-instructions.ts +60 -87
  383. package/examples/05-branches.ts +78 -0
  384. package/examples/06-triggers-and-waits.ts +148 -0
  385. package/examples/07-streaming.ts +34 -60
  386. package/examples/08-store-and-migration.ts +97 -0
  387. package/examples/09-flows-from-json.ts +107 -0
  388. package/package.json +9 -6
  389. package/src/core/Agent.ts +116 -1512
  390. package/src/core/CompactionEngine.ts +7 -4
  391. package/src/core/FlowSpec.ts +712 -0
  392. package/src/core/Migrate.ts +256 -0
  393. package/src/core/Prompt.ts +156 -0
  394. package/src/core/Runner.ts +1181 -0
  395. package/src/core/Speak.ts +451 -0
  396. package/src/core/Understand.ts +422 -0
  397. package/src/core/contracts.ts +111 -0
  398. package/src/core/falai.ts +86 -0
  399. package/src/core/predicate.ts +56 -0
  400. package/src/index.ts +119 -147
  401. package/src/persistence/MemoryStore.ts +37 -0
  402. package/src/persistence/MongoStore.ts +89 -0
  403. package/src/persistence/OpenSearchStore.ts +153 -0
  404. package/src/persistence/PostgresStore.ts +89 -0
  405. package/src/persistence/PrismaStore.ts +127 -0
  406. package/src/persistence/RedisStore.ts +90 -0
  407. package/src/persistence/SQLiteStore.ts +103 -0
  408. package/src/persistence/sessionRow.ts +45 -0
  409. package/src/providers/DeepSeekProvider.ts +8 -3
  410. package/src/providers/GeminiProvider.ts +4 -3
  411. package/src/providers/OpenAICompatibleProvider.ts +6 -0
  412. package/src/providers/OpenRouterProvider.ts +2 -4
  413. package/src/providers/ProviderAdapter.ts +36 -8
  414. package/src/types/agent.ts +124 -397
  415. package/src/types/ai.ts +33 -1
  416. package/src/types/compaction.ts +3 -1
  417. package/src/types/errors.ts +13 -16
  418. package/src/types/flow.ts +249 -550
  419. package/src/types/history.ts +7 -20
  420. package/src/types/index.ts +87 -139
  421. package/src/types/session.ts +135 -70
  422. package/src/types/tool.ts +42 -267
  423. package/src/utils/clock.ts +70 -0
  424. package/src/utils/duration.ts +33 -0
  425. package/src/utils/history.ts +3 -2
  426. package/src/utils/index.ts +8 -66
  427. package/src/utils/json.ts +5 -0
  428. package/src/utils/outcomes.ts +56 -0
  429. package/src/utils/schema.ts +145 -0
  430. package/src/utils/streamingMessage.ts +34 -4
  431. package/src/utils/template.ts +32 -423
  432. package/src/utils/usage.ts +37 -0
  433. package/dist/adapters/MemoryAdapter.d.ts +0 -47
  434. package/dist/adapters/MemoryAdapter.d.ts.map +0 -1
  435. package/dist/adapters/MemoryAdapter.js +0 -204
  436. package/dist/adapters/MemoryAdapter.js.map +0 -1
  437. package/dist/adapters/MongoAdapter.d.ts +0 -97
  438. package/dist/adapters/MongoAdapter.d.ts.map +0 -1
  439. package/dist/adapters/MongoAdapter.js +0 -196
  440. package/dist/adapters/MongoAdapter.js.map +0 -1
  441. package/dist/adapters/OpenSearchAdapter.d.ts +0 -169
  442. package/dist/adapters/OpenSearchAdapter.d.ts.map +0 -1
  443. package/dist/adapters/OpenSearchAdapter.js +0 -471
  444. package/dist/adapters/OpenSearchAdapter.js.map +0 -1
  445. package/dist/adapters/PostgreSQLAdapter.d.ts +0 -85
  446. package/dist/adapters/PostgreSQLAdapter.d.ts.map +0 -1
  447. package/dist/adapters/PostgreSQLAdapter.js +0 -308
  448. package/dist/adapters/PostgreSQLAdapter.js.map +0 -1
  449. package/dist/adapters/PrismaAdapter.d.ts +0 -115
  450. package/dist/adapters/PrismaAdapter.d.ts.map +0 -1
  451. package/dist/adapters/PrismaAdapter.js +0 -406
  452. package/dist/adapters/PrismaAdapter.js.map +0 -1
  453. package/dist/adapters/RedisAdapter.d.ts +0 -72
  454. package/dist/adapters/RedisAdapter.d.ts.map +0 -1
  455. package/dist/adapters/RedisAdapter.js +0 -286
  456. package/dist/adapters/RedisAdapter.js.map +0 -1
  457. package/dist/adapters/SQLiteAdapter.d.ts +0 -86
  458. package/dist/adapters/SQLiteAdapter.d.ts.map +0 -1
  459. package/dist/adapters/SQLiteAdapter.js +0 -337
  460. package/dist/adapters/SQLiteAdapter.js.map +0 -1
  461. package/dist/adapters/index.d.ts +0 -17
  462. package/dist/adapters/index.d.ts.map +0 -1
  463. package/dist/adapters/index.js +0 -11
  464. package/dist/adapters/index.js.map +0 -1
  465. package/dist/adapters/sessionRow.d.ts +0 -22
  466. package/dist/adapters/sessionRow.d.ts.map +0 -1
  467. package/dist/adapters/sessionRow.js +0 -48
  468. package/dist/adapters/sessionRow.js.map +0 -1
  469. package/dist/cjs/adapters/MemoryAdapter.d.ts +0 -47
  470. package/dist/cjs/adapters/MemoryAdapter.d.ts.map +0 -1
  471. package/dist/cjs/adapters/MemoryAdapter.js +0 -208
  472. package/dist/cjs/adapters/MemoryAdapter.js.map +0 -1
  473. package/dist/cjs/adapters/MongoAdapter.d.ts +0 -97
  474. package/dist/cjs/adapters/MongoAdapter.d.ts.map +0 -1
  475. package/dist/cjs/adapters/MongoAdapter.js +0 -200
  476. package/dist/cjs/adapters/MongoAdapter.js.map +0 -1
  477. package/dist/cjs/adapters/OpenSearchAdapter.d.ts +0 -169
  478. package/dist/cjs/adapters/OpenSearchAdapter.d.ts.map +0 -1
  479. package/dist/cjs/adapters/OpenSearchAdapter.js +0 -475
  480. package/dist/cjs/adapters/OpenSearchAdapter.js.map +0 -1
  481. package/dist/cjs/adapters/PostgreSQLAdapter.d.ts +0 -85
  482. package/dist/cjs/adapters/PostgreSQLAdapter.d.ts.map +0 -1
  483. package/dist/cjs/adapters/PostgreSQLAdapter.js +0 -312
  484. package/dist/cjs/adapters/PostgreSQLAdapter.js.map +0 -1
  485. package/dist/cjs/adapters/PrismaAdapter.d.ts +0 -115
  486. package/dist/cjs/adapters/PrismaAdapter.d.ts.map +0 -1
  487. package/dist/cjs/adapters/PrismaAdapter.js +0 -410
  488. package/dist/cjs/adapters/PrismaAdapter.js.map +0 -1
  489. package/dist/cjs/adapters/RedisAdapter.d.ts +0 -72
  490. package/dist/cjs/adapters/RedisAdapter.d.ts.map +0 -1
  491. package/dist/cjs/adapters/RedisAdapter.js +0 -290
  492. package/dist/cjs/adapters/RedisAdapter.js.map +0 -1
  493. package/dist/cjs/adapters/SQLiteAdapter.d.ts +0 -86
  494. package/dist/cjs/adapters/SQLiteAdapter.d.ts.map +0 -1
  495. package/dist/cjs/adapters/SQLiteAdapter.js +0 -341
  496. package/dist/cjs/adapters/SQLiteAdapter.js.map +0 -1
  497. package/dist/cjs/adapters/index.d.ts +0 -17
  498. package/dist/cjs/adapters/index.d.ts.map +0 -1
  499. package/dist/cjs/adapters/index.js +0 -21
  500. package/dist/cjs/adapters/index.js.map +0 -1
  501. package/dist/cjs/adapters/sessionRow.d.ts +0 -22
  502. package/dist/cjs/adapters/sessionRow.d.ts.map +0 -1
  503. package/dist/cjs/adapters/sessionRow.js +0 -52
  504. package/dist/cjs/adapters/sessionRow.js.map +0 -1
  505. package/dist/cjs/constants/index.d.ts +0 -1
  506. package/dist/cjs/constants/index.d.ts.map +0 -1
  507. package/dist/cjs/constants/index.js +0 -4
  508. package/dist/cjs/constants/index.js.map +0 -1
  509. package/dist/cjs/core/AutoChainExecutor.d.ts +0 -97
  510. package/dist/cjs/core/AutoChainExecutor.d.ts.map +0 -1
  511. package/dist/cjs/core/AutoChainExecutor.js +0 -288
  512. package/dist/cjs/core/AutoChainExecutor.js.map +0 -1
  513. package/dist/cjs/core/BranchEvaluator.d.ts +0 -55
  514. package/dist/cjs/core/BranchEvaluator.d.ts.map +0 -1
  515. package/dist/cjs/core/BranchEvaluator.js +0 -125
  516. package/dist/cjs/core/BranchEvaluator.js.map +0 -1
  517. package/dist/cjs/core/DirectiveChainTracker.d.ts +0 -49
  518. package/dist/cjs/core/DirectiveChainTracker.d.ts.map +0 -1
  519. package/dist/cjs/core/DirectiveChainTracker.js +0 -121
  520. package/dist/cjs/core/DirectiveChainTracker.js.map +0 -1
  521. package/dist/cjs/core/Events.d.ts +0 -26
  522. package/dist/cjs/core/Events.d.ts.map +0 -1
  523. package/dist/cjs/core/Events.js +0 -144
  524. package/dist/cjs/core/Events.js.map +0 -1
  525. package/dist/cjs/core/Flow.d.ts +0 -183
  526. package/dist/cjs/core/Flow.d.ts.map +0 -1
  527. package/dist/cjs/core/Flow.js +0 -551
  528. package/dist/cjs/core/Flow.js.map +0 -1
  529. package/dist/cjs/core/FlowRouter.d.ts +0 -183
  530. package/dist/cjs/core/FlowRouter.d.ts.map +0 -1
  531. package/dist/cjs/core/FlowRouter.js +0 -1047
  532. package/dist/cjs/core/FlowRouter.js.map +0 -1
  533. package/dist/cjs/core/PersistenceManager.d.ts +0 -114
  534. package/dist/cjs/core/PersistenceManager.d.ts.map +0 -1
  535. package/dist/cjs/core/PersistenceManager.js +0 -336
  536. package/dist/cjs/core/PersistenceManager.js.map +0 -1
  537. package/dist/cjs/core/PromptComposer.d.ts +0 -47
  538. package/dist/cjs/core/PromptComposer.d.ts.map +0 -1
  539. package/dist/cjs/core/PromptComposer.js +0 -397
  540. package/dist/cjs/core/PromptComposer.js.map +0 -1
  541. package/dist/cjs/core/PromptSectionCache.d.ts +0 -48
  542. package/dist/cjs/core/PromptSectionCache.d.ts.map +0 -1
  543. package/dist/cjs/core/PromptSectionCache.js +0 -108
  544. package/dist/cjs/core/PromptSectionCache.js.map +0 -1
  545. package/dist/cjs/core/ResponseEngine.d.ts +0 -43
  546. package/dist/cjs/core/ResponseEngine.d.ts.map +0 -1
  547. package/dist/cjs/core/ResponseEngine.js +0 -235
  548. package/dist/cjs/core/ResponseEngine.js.map +0 -1
  549. package/dist/cjs/core/ResponseGenerationError.d.ts +0 -30
  550. package/dist/cjs/core/ResponseGenerationError.d.ts.map +0 -1
  551. package/dist/cjs/core/ResponseGenerationError.js +0 -35
  552. package/dist/cjs/core/ResponseGenerationError.js.map +0 -1
  553. package/dist/cjs/core/ResponseModal.d.ts +0 -305
  554. package/dist/cjs/core/ResponseModal.d.ts.map +0 -1
  555. package/dist/cjs/core/ResponseModal.js +0 -1414
  556. package/dist/cjs/core/ResponseModal.js.map +0 -1
  557. package/dist/cjs/core/ResponsePipeline.d.ts +0 -220
  558. package/dist/cjs/core/ResponsePipeline.d.ts.map +0 -1
  559. package/dist/cjs/core/ResponsePipeline.js +0 -1040
  560. package/dist/cjs/core/ResponsePipeline.js.map +0 -1
  561. package/dist/cjs/core/SessionFinalizer.d.ts +0 -34
  562. package/dist/cjs/core/SessionFinalizer.d.ts.map +0 -1
  563. package/dist/cjs/core/SessionFinalizer.js +0 -88
  564. package/dist/cjs/core/SessionFinalizer.js.map +0 -1
  565. package/dist/cjs/core/SessionManager.d.ts +0 -112
  566. package/dist/cjs/core/SessionManager.d.ts.map +0 -1
  567. package/dist/cjs/core/SessionManager.js +0 -308
  568. package/dist/cjs/core/SessionManager.js.map +0 -1
  569. package/dist/cjs/core/SignalCoordinator.d.ts +0 -103
  570. package/dist/cjs/core/SignalCoordinator.d.ts.map +0 -1
  571. package/dist/cjs/core/SignalCoordinator.js +0 -207
  572. package/dist/cjs/core/SignalCoordinator.js.map +0 -1
  573. package/dist/cjs/core/SignalEvaluator.d.ts +0 -86
  574. package/dist/cjs/core/SignalEvaluator.d.ts.map +0 -1
  575. package/dist/cjs/core/SignalEvaluator.js +0 -319
  576. package/dist/cjs/core/SignalEvaluator.js.map +0 -1
  577. package/dist/cjs/core/SignalProcessor.d.ts +0 -152
  578. package/dist/cjs/core/SignalProcessor.d.ts.map +0 -1
  579. package/dist/cjs/core/SignalProcessor.js +0 -505
  580. package/dist/cjs/core/SignalProcessor.js.map +0 -1
  581. package/dist/cjs/core/Step.d.ts +0 -184
  582. package/dist/cjs/core/Step.d.ts.map +0 -1
  583. package/dist/cjs/core/Step.js +0 -599
  584. package/dist/cjs/core/Step.js.map +0 -1
  585. package/dist/cjs/core/StepLifecycle.d.ts +0 -43
  586. package/dist/cjs/core/StepLifecycle.d.ts.map +0 -1
  587. package/dist/cjs/core/StepLifecycle.js +0 -180
  588. package/dist/cjs/core/StepLifecycle.js.map +0 -1
  589. package/dist/cjs/core/StreamingToolExecutor.d.ts +0 -142
  590. package/dist/cjs/core/StreamingToolExecutor.d.ts.map +0 -1
  591. package/dist/cjs/core/StreamingToolExecutor.js +0 -490
  592. package/dist/cjs/core/StreamingToolExecutor.js.map +0 -1
  593. package/dist/cjs/core/ToolLoopExecutor.d.ts +0 -133
  594. package/dist/cjs/core/ToolLoopExecutor.d.ts.map +0 -1
  595. package/dist/cjs/core/ToolLoopExecutor.js +0 -568
  596. package/dist/cjs/core/ToolLoopExecutor.js.map +0 -1
  597. package/dist/cjs/core/ToolManager.d.ts +0 -250
  598. package/dist/cjs/core/ToolManager.d.ts.map +0 -1
  599. package/dist/cjs/core/ToolManager.js +0 -1104
  600. package/dist/cjs/core/ToolManager.js.map +0 -1
  601. package/dist/cjs/core/createAgent.d.ts +0 -35
  602. package/dist/cjs/core/createAgent.d.ts.map +0 -1
  603. package/dist/cjs/core/createAgent.js +0 -39
  604. package/dist/cjs/core/createAgent.js.map +0 -1
  605. package/dist/cjs/core/flow-namespace.d.ts +0 -64
  606. package/dist/cjs/core/flow-namespace.d.ts.map +0 -1
  607. package/dist/cjs/core/flow-namespace.js +0 -182
  608. package/dist/cjs/core/flow-namespace.js.map +0 -1
  609. package/dist/cjs/core/toolGates.d.ts +0 -24
  610. package/dist/cjs/core/toolGates.d.ts.map +0 -1
  611. package/dist/cjs/core/toolGates.js +0 -52
  612. package/dist/cjs/core/toolGates.js.map +0 -1
  613. package/dist/cjs/types/persistence.d.ts +0 -254
  614. package/dist/cjs/types/persistence.d.ts.map +0 -1
  615. package/dist/cjs/types/persistence.js +0 -7
  616. package/dist/cjs/types/persistence.js.map +0 -1
  617. package/dist/cjs/types/prompt-cache.d.ts +0 -15
  618. package/dist/cjs/types/prompt-cache.d.ts.map +0 -1
  619. package/dist/cjs/types/prompt-cache.js +0 -6
  620. package/dist/cjs/types/prompt-cache.js.map +0 -1
  621. package/dist/cjs/types/signals.d.ts +0 -263
  622. package/dist/cjs/types/signals.d.ts.map +0 -1
  623. package/dist/cjs/types/signals.js +0 -11
  624. package/dist/cjs/types/signals.js.map +0 -1
  625. package/dist/cjs/types/template.d.ts +0 -84
  626. package/dist/cjs/types/template.d.ts.map +0 -1
  627. package/dist/cjs/types/template.js +0 -3
  628. package/dist/cjs/types/template.js.map +0 -1
  629. package/dist/cjs/utils/condition.d.ts +0 -63
  630. package/dist/cjs/utils/condition.d.ts.map +0 -1
  631. package/dist/cjs/utils/condition.js +0 -239
  632. package/dist/cjs/utils/condition.js.map +0 -1
  633. package/dist/cjs/utils/event.d.ts +0 -6
  634. package/dist/cjs/utils/event.d.ts.map +0 -1
  635. package/dist/cjs/utils/event.js +0 -20
  636. package/dist/cjs/utils/event.js.map +0 -1
  637. package/dist/cjs/utils/id.d.ts +0 -33
  638. package/dist/cjs/utils/id.d.ts.map +0 -1
  639. package/dist/cjs/utils/id.js +0 -84
  640. package/dist/cjs/utils/id.js.map +0 -1
  641. package/dist/cjs/utils/serialize.d.ts +0 -36
  642. package/dist/cjs/utils/serialize.d.ts.map +0 -1
  643. package/dist/cjs/utils/serialize.js +0 -77
  644. package/dist/cjs/utils/serialize.js.map +0 -1
  645. package/dist/cjs/utils/session.d.ts +0 -124
  646. package/dist/cjs/utils/session.d.ts.map +0 -1
  647. package/dist/cjs/utils/session.js +0 -396
  648. package/dist/cjs/utils/session.js.map +0 -1
  649. package/dist/constants/index.d.ts +0 -2
  650. package/dist/constants/index.d.ts.map +0 -1
  651. package/dist/constants/index.js +0 -4
  652. package/dist/constants/index.js.map +0 -1
  653. package/dist/core/AutoChainExecutor.d.ts +0 -97
  654. package/dist/core/AutoChainExecutor.d.ts.map +0 -1
  655. package/dist/core/AutoChainExecutor.js +0 -284
  656. package/dist/core/AutoChainExecutor.js.map +0 -1
  657. package/dist/core/BranchEvaluator.d.ts +0 -55
  658. package/dist/core/BranchEvaluator.d.ts.map +0 -1
  659. package/dist/core/BranchEvaluator.js +0 -121
  660. package/dist/core/BranchEvaluator.js.map +0 -1
  661. package/dist/core/DirectiveChainTracker.d.ts +0 -49
  662. package/dist/core/DirectiveChainTracker.d.ts.map +0 -1
  663. package/dist/core/DirectiveChainTracker.js +0 -117
  664. package/dist/core/DirectiveChainTracker.js.map +0 -1
  665. package/dist/core/Events.d.ts +0 -26
  666. package/dist/core/Events.d.ts.map +0 -1
  667. package/dist/core/Events.js +0 -137
  668. package/dist/core/Events.js.map +0 -1
  669. package/dist/core/Flow.d.ts +0 -183
  670. package/dist/core/Flow.d.ts.map +0 -1
  671. package/dist/core/Flow.js +0 -547
  672. package/dist/core/Flow.js.map +0 -1
  673. package/dist/core/FlowRouter.d.ts +0 -183
  674. package/dist/core/FlowRouter.d.ts.map +0 -1
  675. package/dist/core/FlowRouter.js +0 -1043
  676. package/dist/core/FlowRouter.js.map +0 -1
  677. package/dist/core/PersistenceManager.d.ts +0 -114
  678. package/dist/core/PersistenceManager.d.ts.map +0 -1
  679. package/dist/core/PersistenceManager.js +0 -332
  680. package/dist/core/PersistenceManager.js.map +0 -1
  681. package/dist/core/PromptComposer.d.ts +0 -47
  682. package/dist/core/PromptComposer.d.ts.map +0 -1
  683. package/dist/core/PromptComposer.js +0 -393
  684. package/dist/core/PromptComposer.js.map +0 -1
  685. package/dist/core/PromptSectionCache.d.ts +0 -48
  686. package/dist/core/PromptSectionCache.d.ts.map +0 -1
  687. package/dist/core/PromptSectionCache.js +0 -104
  688. package/dist/core/PromptSectionCache.js.map +0 -1
  689. package/dist/core/ResponseEngine.d.ts +0 -43
  690. package/dist/core/ResponseEngine.d.ts.map +0 -1
  691. package/dist/core/ResponseEngine.js +0 -231
  692. package/dist/core/ResponseEngine.js.map +0 -1
  693. package/dist/core/ResponseGenerationError.d.ts +0 -30
  694. package/dist/core/ResponseGenerationError.d.ts.map +0 -1
  695. package/dist/core/ResponseGenerationError.js +0 -31
  696. package/dist/core/ResponseGenerationError.js.map +0 -1
  697. package/dist/core/ResponseModal.d.ts +0 -305
  698. package/dist/core/ResponseModal.d.ts.map +0 -1
  699. package/dist/core/ResponseModal.js +0 -1410
  700. package/dist/core/ResponseModal.js.map +0 -1
  701. package/dist/core/ResponsePipeline.d.ts +0 -220
  702. package/dist/core/ResponsePipeline.d.ts.map +0 -1
  703. package/dist/core/ResponsePipeline.js +0 -1035
  704. package/dist/core/ResponsePipeline.js.map +0 -1
  705. package/dist/core/SessionFinalizer.d.ts +0 -34
  706. package/dist/core/SessionFinalizer.d.ts.map +0 -1
  707. package/dist/core/SessionFinalizer.js +0 -84
  708. package/dist/core/SessionFinalizer.js.map +0 -1
  709. package/dist/core/SessionManager.d.ts +0 -112
  710. package/dist/core/SessionManager.d.ts.map +0 -1
  711. package/dist/core/SessionManager.js +0 -301
  712. package/dist/core/SessionManager.js.map +0 -1
  713. package/dist/core/SignalCoordinator.d.ts +0 -103
  714. package/dist/core/SignalCoordinator.d.ts.map +0 -1
  715. package/dist/core/SignalCoordinator.js +0 -203
  716. package/dist/core/SignalCoordinator.js.map +0 -1
  717. package/dist/core/SignalEvaluator.d.ts +0 -86
  718. package/dist/core/SignalEvaluator.d.ts.map +0 -1
  719. package/dist/core/SignalEvaluator.js +0 -312
  720. package/dist/core/SignalEvaluator.js.map +0 -1
  721. package/dist/core/SignalProcessor.d.ts +0 -152
  722. package/dist/core/SignalProcessor.d.ts.map +0 -1
  723. package/dist/core/SignalProcessor.js +0 -498
  724. package/dist/core/SignalProcessor.js.map +0 -1
  725. package/dist/core/Step.d.ts +0 -184
  726. package/dist/core/Step.d.ts.map +0 -1
  727. package/dist/core/Step.js +0 -594
  728. package/dist/core/Step.js.map +0 -1
  729. package/dist/core/StepLifecycle.d.ts +0 -43
  730. package/dist/core/StepLifecycle.d.ts.map +0 -1
  731. package/dist/core/StepLifecycle.js +0 -176
  732. package/dist/core/StepLifecycle.js.map +0 -1
  733. package/dist/core/StreamingToolExecutor.d.ts +0 -142
  734. package/dist/core/StreamingToolExecutor.d.ts.map +0 -1
  735. package/dist/core/StreamingToolExecutor.js +0 -483
  736. package/dist/core/StreamingToolExecutor.js.map +0 -1
  737. package/dist/core/ToolLoopExecutor.d.ts +0 -133
  738. package/dist/core/ToolLoopExecutor.d.ts.map +0 -1
  739. package/dist/core/ToolLoopExecutor.js +0 -564
  740. package/dist/core/ToolLoopExecutor.js.map +0 -1
  741. package/dist/core/ToolManager.d.ts +0 -250
  742. package/dist/core/ToolManager.d.ts.map +0 -1
  743. package/dist/core/ToolManager.js +0 -1098
  744. package/dist/core/ToolManager.js.map +0 -1
  745. package/dist/core/createAgent.d.ts +0 -35
  746. package/dist/core/createAgent.d.ts.map +0 -1
  747. package/dist/core/createAgent.js +0 -36
  748. package/dist/core/createAgent.js.map +0 -1
  749. package/dist/core/flow-namespace.d.ts +0 -64
  750. package/dist/core/flow-namespace.d.ts.map +0 -1
  751. package/dist/core/flow-namespace.js +0 -179
  752. package/dist/core/flow-namespace.js.map +0 -1
  753. package/dist/core/toolGates.d.ts +0 -24
  754. package/dist/core/toolGates.d.ts.map +0 -1
  755. package/dist/core/toolGates.js +0 -49
  756. package/dist/core/toolGates.js.map +0 -1
  757. package/dist/types/persistence.d.ts +0 -254
  758. package/dist/types/persistence.d.ts.map +0 -1
  759. package/dist/types/persistence.js +0 -6
  760. package/dist/types/persistence.js.map +0 -1
  761. package/dist/types/prompt-cache.d.ts +0 -15
  762. package/dist/types/prompt-cache.d.ts.map +0 -1
  763. package/dist/types/prompt-cache.js +0 -5
  764. package/dist/types/prompt-cache.js.map +0 -1
  765. package/dist/types/signals.d.ts +0 -263
  766. package/dist/types/signals.d.ts.map +0 -1
  767. package/dist/types/signals.js +0 -10
  768. package/dist/types/signals.js.map +0 -1
  769. package/dist/types/template.d.ts +0 -84
  770. package/dist/types/template.d.ts.map +0 -1
  771. package/dist/types/template.js +0 -2
  772. package/dist/types/template.js.map +0 -1
  773. package/dist/utils/condition.d.ts +0 -63
  774. package/dist/utils/condition.d.ts.map +0 -1
  775. package/dist/utils/condition.js +0 -230
  776. package/dist/utils/condition.js.map +0 -1
  777. package/dist/utils/event.d.ts +0 -6
  778. package/dist/utils/event.d.ts.map +0 -1
  779. package/dist/utils/event.js +0 -17
  780. package/dist/utils/event.js.map +0 -1
  781. package/dist/utils/id.d.ts +0 -33
  782. package/dist/utils/id.d.ts.map +0 -1
  783. package/dist/utils/id.js +0 -77
  784. package/dist/utils/id.js.map +0 -1
  785. package/dist/utils/serialize.d.ts +0 -36
  786. package/dist/utils/serialize.d.ts.map +0 -1
  787. package/dist/utils/serialize.js +0 -72
  788. package/dist/utils/serialize.js.map +0 -1
  789. package/dist/utils/session.d.ts +0 -124
  790. package/dist/utils/session.d.ts.map +0 -1
  791. package/dist/utils/session.js +0 -379
  792. package/dist/utils/session.js.map +0 -1
  793. package/docs/concepts/directives.md +0 -369
  794. package/docs/reference/adapters.md +0 -543
  795. package/docs/reference/create-agent.md +0 -216
  796. package/docs/reference/directive.md +0 -242
  797. package/docs/reference/signals.md +0 -368
  798. package/examples/02-data-extraction.ts +0 -90
  799. package/examples/05-branching.ts +0 -140
  800. package/examples/06-flow-control.ts +0 -103
  801. package/examples/08-persistence.ts +0 -98
  802. package/examples/09-signals.ts +0 -144
  803. package/src/adapters/MemoryAdapter.ts +0 -281
  804. package/src/adapters/MongoAdapter.ts +0 -341
  805. package/src/adapters/OpenSearchAdapter.ts +0 -693
  806. package/src/adapters/PostgreSQLAdapter.ts +0 -487
  807. package/src/adapters/PrismaAdapter.ts +0 -617
  808. package/src/adapters/RedisAdapter.ts +0 -439
  809. package/src/adapters/SQLiteAdapter.ts +0 -496
  810. package/src/adapters/index.ts +0 -43
  811. package/src/adapters/sessionRow.ts +0 -57
  812. package/src/constants/index.ts +0 -2
  813. package/src/core/AutoChainExecutor.ts +0 -397
  814. package/src/core/BranchEvaluator.ts +0 -161
  815. package/src/core/DirectiveChainTracker.ts +0 -144
  816. package/src/core/Events.ts +0 -164
  817. package/src/core/Flow.ts +0 -665
  818. package/src/core/FlowRouter.ts +0 -1540
  819. package/src/core/PersistenceManager.ts +0 -446
  820. package/src/core/PromptComposer.ts +0 -448
  821. package/src/core/PromptSectionCache.ts +0 -125
  822. package/src/core/ResponseEngine.ts +0 -338
  823. package/src/core/ResponseGenerationError.ts +0 -53
  824. package/src/core/ResponseModal.ts +0 -1902
  825. package/src/core/ResponsePipeline.ts +0 -1404
  826. package/src/core/SessionFinalizer.ts +0 -108
  827. package/src/core/SessionManager.ts +0 -372
  828. package/src/core/SignalCoordinator.ts +0 -263
  829. package/src/core/SignalEvaluator.ts +0 -404
  830. package/src/core/SignalProcessor.ts +0 -663
  831. package/src/core/Step.ts +0 -782
  832. package/src/core/StepLifecycle.ts +0 -242
  833. package/src/core/StreamingToolExecutor.ts +0 -609
  834. package/src/core/ToolLoopExecutor.ts +0 -749
  835. package/src/core/ToolManager.ts +0 -1379
  836. package/src/core/createAgent.ts +0 -40
  837. package/src/core/flow-namespace.ts +0 -227
  838. package/src/core/toolGates.ts +0 -72
  839. package/src/types/persistence.ts +0 -303
  840. package/src/types/prompt-cache.ts +0 -17
  841. package/src/types/signals.ts +0 -338
  842. package/src/types/template.ts +0 -98
  843. package/src/utils/condition.ts +0 -296
  844. package/src/utils/event.ts +0 -16
  845. package/src/utils/id.ts +0 -91
  846. package/src/utils/serialize.ts +0 -86
  847. package/src/utils/session.ts +0 -501
@@ -1,483 +0,0 @@
1
- /**
2
- * StreamingToolExecutor - Executes tools as they arrive from the LLM stream
3
- * with concurrency control, abort handling, and ordered result yielding.
4
- *
5
- * Concurrency invariant: at any point during execution, either all executing
6
- * tools have `isConcurrencySafe === true`, or exactly one tool is executing
7
- * with `isConcurrencySafe === false`.
8
- *
9
- * Results are yielded in the original request order (the order addTool was called).
10
- * Progress messages bypass result ordering and are yielded immediately.
11
- */
12
- import log from "loglevel";
13
- import { evaluateToolGates } from "./toolGates.js";
14
- import { isToolResultLike, extractResultDirectives } from "../utils/index.js";
15
- function createDeferred() {
16
- let resolve;
17
- let reject;
18
- const promise = new Promise((res, rej) => {
19
- resolve = res;
20
- reject = rej;
21
- });
22
- return { promise, resolve, reject };
23
- }
24
- /**
25
- * StreamingToolExecutor manages queuing, concurrent execution, abort propagation,
26
- * and ordered result yielding for tool calls arriving from an LLM stream.
27
- */
28
- export class StreamingToolExecutor {
29
- /**
30
- * @param toolContext - Context provided to each tool handler during execution
31
- * @param options - Optional configuration for max parallelism and abort signal
32
- */
33
- constructor(toolContext, options) {
34
- /** Ordered list of tracked tools (insertion order = request order) */
35
- this.tools = [];
36
- /** Whether the executor has been discarded (no new tools will be processed) */
37
- this.discarded = false;
38
- /** Accumulated context updates from completed tools */
39
- this.contextUpdates = {};
40
- /**
41
- * Sibling abort controller for the current concurrent batch.
42
- * When one tool in a batch fails, this aborts all siblings.
43
- */
44
- this.siblingAbortController = null;
45
- /**
46
- * Set of tool IDs in the current concurrent batch.
47
- * Reset when a new batch starts.
48
- */
49
- this.currentBatchIds = new Set();
50
- /**
51
- * Deferred used to wake up getRemainingResults when state changes
52
- * (tool completes, progress arrives, or executor finishes).
53
- */
54
- this.waiter = null;
55
- this.toolContext = toolContext;
56
- this.maxParallel = options?.maxParallel ?? 10;
57
- this.parentSignal = options?.signal;
58
- // Listen to parent abort signal
59
- if (this.parentSignal) {
60
- this.parentSignal.addEventListener("abort", () => this.handleParentAbort(), { once: true });
61
- }
62
- }
63
- /**
64
- * Queue a tool for execution. The tool's `isConcurrencySafe` is evaluated
65
- * once at queue time and cached on the TrackedTool.
66
- *
67
- * If the executor has been discarded, the tool is ignored.
68
- */
69
- addTool(toolCall, tool) {
70
- if (this.discarded) {
71
- log.warn(`[StreamingToolExecutor] Executor discarded, ignoring tool: ${toolCall.toolName}`);
72
- return;
73
- }
74
- // Evaluate concurrency safety once at queue time (Req 2.3)
75
- const isConcurrencySafe = tool.isConcurrencySafe
76
- ? tool.isConcurrencySafe(toolCall.arguments)
77
- : false; // Default: not concurrency-safe (Req 2.2, 10.2)
78
- const tracked = {
79
- id: toolCall.id,
80
- toolCall,
81
- tool,
82
- status: "queued",
83
- isConcurrencySafe,
84
- results: [],
85
- pendingProgress: [],
86
- };
87
- this.tools.push(tracked);
88
- log.debug(`[StreamingToolExecutor] Queued tool ${toolCall.toolName} (id=${toolCall.id}, concurrencySafe=${isConcurrencySafe})`);
89
- // Kick the queue
90
- this.processQueue();
91
- }
92
- /**
93
- * Process the tool queue, starting eligible tools while maintaining
94
- * the concurrency invariant.
95
- *
96
- * Invariant: all executing tools are concurrency-safe OR exactly one
97
- * non-safe tool is executing. Additionally, the number of concurrently
98
- * executing tools never exceeds `maxParallel`.
99
- */
100
- processQueue() {
101
- if (this.discarded)
102
- return;
103
- if (this.parentSignal?.aborted)
104
- return;
105
- for (const tool of this.tools) {
106
- if (tool.status !== "queued")
107
- continue;
108
- const executing = this.tools.filter((t) => t.status === "executing");
109
- // Enforce max parallel limit (Req 14.1, 14.2)
110
- if (executing.length >= this.maxParallel) {
111
- break;
112
- }
113
- const canExecute = executing.length === 0 ||
114
- (tool.isConcurrencySafe && executing.every((t) => t.isConcurrencySafe));
115
- if (canExecute) {
116
- // Start a new concurrent batch if needed
117
- if (executing.length === 0 || !this.currentBatchIds.has(executing[0]?.id)) {
118
- this.startNewBatch();
119
- }
120
- tool.status = "executing";
121
- this.currentBatchIds.add(tool.id);
122
- log.debug(`[StreamingToolExecutor] Starting tool ${tool.toolCall.toolName} (id=${tool.id})`);
123
- tool.promise = this.executeTool(tool).finally(() => {
124
- // Re-evaluate queue after each tool completes
125
- this.processQueue();
126
- // Wake up any waiting async generator
127
- this.notifyWaiter();
128
- });
129
- }
130
- else if (!tool.isConcurrencySafe) {
131
- // Non-concurrent tool must wait — stop scanning to maintain order (Req 1.3, 1.4)
132
- break;
133
- }
134
- // If tool is concurrency-safe but can't run (non-safe tool executing),
135
- // skip it and continue scanning — but actually per the design,
136
- // we should also break here since we need to maintain request order
137
- // for result yielding. A concurrent-safe tool behind a non-safe tool
138
- // should wait too.
139
- }
140
- }
141
- /**
142
- * Start a new sibling abort controller for a concurrent batch.
143
- */
144
- startNewBatch() {
145
- this.siblingAbortController = new AbortController();
146
- this.currentBatchIds = new Set();
147
- }
148
- /**
149
- * Execute a single tool, handling result capture, progress, truncation,
150
- * and error/abort propagation.
151
- */
152
- async executeTool(tracked) {
153
- const { tool, toolCall } = tracked;
154
- const batchAbortController = this.siblingAbortController;
155
- try {
156
- // Pre-execution gates (validateInput → checkPermissions), shared with
157
- // ToolManager.executeTool. These MUST run on the streaming path too:
158
- // when a gate denies, the handler is NOT invoked. Run before any abort
159
- // wiring so a denial returns cleanly with nothing to unwind.
160
- const gateDenial = await evaluateToolGates(tool, toolCall.arguments, this.toolContext);
161
- if (gateDenial) {
162
- tracked.results.push(gateDenial);
163
- tracked.status = "completed";
164
- return;
165
- }
166
- // Create a combined abort signal from parent + sibling
167
- const toolAbortController = new AbortController();
168
- const abortTool = () => {
169
- const behavior = tool.interruptBehavior
170
- ? tool.interruptBehavior()
171
- : "block"; // Default: block (Req 3.4, 10.5)
172
- if (behavior === "cancel") {
173
- toolAbortController.abort();
174
- }
175
- // 'block' tools are allowed to complete
176
- };
177
- // Listen to sibling abort
178
- if (batchAbortController) {
179
- batchAbortController.signal.addEventListener("abort", abortTool, { once: true });
180
- }
181
- // Listen to parent abort for this specific tool
182
- const parentAbortHandler = () => abortTool();
183
- if (this.parentSignal) {
184
- this.parentSignal.addEventListener("abort", parentAbortHandler, { once: true });
185
- }
186
- // Per-call context so ctx.dispatch() emissions attribute to THIS
187
- // tool even while siblings run concurrently on the shared context.
188
- const dispatchedDirectives = [];
189
- const callContext = {
190
- ...this.toolContext,
191
- dispatch: (directive) => {
192
- dispatchedDirectives.push(directive);
193
- },
194
- };
195
- // Execute the tool handler
196
- const result = await tool.handler(callContext, toolCall.arguments);
197
- // Clean up abort listeners
198
- if (batchAbortController) {
199
- batchAbortController.signal.removeEventListener("abort", abortTool);
200
- }
201
- if (this.parentSignal) {
202
- this.parentSignal.removeEventListener("abort", parentAbortHandler);
203
- }
204
- // Check if we were aborted during execution
205
- if (toolAbortController.signal.aborted) {
206
- tracked.results.push({
207
- success: false,
208
- error: "Tool execution was cancelled",
209
- metadata: { toolId: tool.id, cancelled: true },
210
- });
211
- tracked.status = "completed";
212
- return;
213
- }
214
- // Normalize the result
215
- const executionResult = this.normalizeResult(result, tool);
216
- // Merge ctx.dispatch() emissions with result-carried directives —
217
- // the same collection the sequential ToolManager.executeTool does.
218
- if (dispatchedDirectives.length > 0) {
219
- executionResult.directives = [
220
- ...(executionResult.directives ?? []),
221
- ...dispatchedDirectives,
222
- ];
223
- }
224
- // Apply per-tool maxResultSizeChars truncation (Req 9.4)
225
- const truncatedResult = this.applyResultTruncation(executionResult, tool);
226
- tracked.results.push(truncatedResult);
227
- // Accumulate context updates
228
- if (truncatedResult.contextUpdate) {
229
- this.contextUpdates = {
230
- ...this.contextUpdates,
231
- ...truncatedResult.contextUpdate,
232
- };
233
- }
234
- tracked.status = "completed";
235
- // If the tool failed, abort siblings in the batch (Req 3.1)
236
- if (!truncatedResult.success) {
237
- this.abortSiblings(tracked.id, batchAbortController);
238
- }
239
- }
240
- catch (error) {
241
- const errorMessage = error instanceof Error ? error.message : String(error);
242
- log.error(`[StreamingToolExecutor] Tool ${toolCall.toolName} (id=${toolCall.id}) failed: ${errorMessage}`);
243
- tracked.results.push({
244
- success: false,
245
- error: errorMessage,
246
- metadata: { toolId: tool.id },
247
- });
248
- tracked.status = "completed";
249
- // Abort siblings on failure (Req 3.1)
250
- this.abortSiblings(tracked.id, batchAbortController);
251
- }
252
- }
253
- /**
254
- * Normalize a tool handler return value into a ToolExecutionResult.
255
- */
256
- normalizeResult(result, tool) {
257
- // Only SEMANTIC markers identify a ToolResult — bare `{data}` / `{error}`
258
- // shapes are indistinguishable from ordinary business payloads and are
259
- // wrapped as raw results instead (shared guard with ToolManager).
260
- if (isToolResultLike(result)) {
261
- const r = result;
262
- // A handler may return `{ directive }` (singular shorthand) or
263
- // `{ directives }` — normalized via the shared extractor so the
264
- // concurrent path honors them identically to sequential execution.
265
- const directives = extractResultDirectives(result);
266
- return {
267
- success: r.success !== false,
268
- data: r.data,
269
- error: r.error,
270
- contextUpdate: r.contextUpdate,
271
- dataUpdate: r.dataUpdate,
272
- ...(directives.length > 0 ? { directives } : {}),
273
- metadata: {
274
- toolId: tool.id,
275
- ...r.meta,
276
- },
277
- };
278
- }
279
- return {
280
- success: true,
281
- data: result,
282
- metadata: { toolId: tool.id },
283
- };
284
- }
285
- /**
286
- * Apply per-tool maxResultSizeChars truncation to a result.
287
- * If the stringified result data exceeds the limit, truncate with a notice.
288
- */
289
- applyResultTruncation(result, tool) {
290
- const maxChars = tool.maxResultSizeChars;
291
- if (maxChars == null || maxChars <= 0 || result.data == null) {
292
- return result;
293
- }
294
- const serialized = typeof result.data === "string"
295
- ? result.data
296
- : JSON.stringify(result.data);
297
- if (serialized.length <= maxChars) {
298
- return result;
299
- }
300
- const truncated = serialized.slice(0, maxChars);
301
- const notice = `\n\n[Truncated: ${serialized.length} chars total, showing first ${maxChars}]`;
302
- return {
303
- ...result,
304
- data: truncated + notice,
305
- metadata: {
306
- ...result.metadata,
307
- truncated: true,
308
- originalLength: serialized.length,
309
- },
310
- };
311
- }
312
- /**
313
- * Abort sibling tools in the current concurrent batch when one tool fails.
314
- * Tools with interruptBehavior 'cancel' are immediately aborted;
315
- * tools with 'block' are allowed to complete.
316
- */
317
- abortSiblings(failedToolId, batchAbortController) {
318
- if (!batchAbortController)
319
- return;
320
- log.warn(`[StreamingToolExecutor] Tool ${failedToolId} failed, aborting sibling tools in batch`);
321
- // Fire the sibling abort signal — individual tool handlers
322
- // check their interruptBehavior to decide whether to cancel or block
323
- batchAbortController.abort();
324
- }
325
- /**
326
- * Handle parent AbortSignal firing.
327
- * Cancel 'cancel' tools immediately, let 'block' tools finish,
328
- * and stop processing new queued tools.
329
- */
330
- handleParentAbort() {
331
- log.warn("[StreamingToolExecutor] Parent abort signal received");
332
- // Stop processing new tools
333
- this.discarded = true;
334
- // Abort the current batch — individual tools respect their interruptBehavior
335
- if (this.siblingAbortController) {
336
- this.siblingAbortController.abort();
337
- }
338
- // Mark remaining queued tools as completed with cancellation error
339
- for (const tool of this.tools) {
340
- if (tool.status === "queued") {
341
- tool.results.push({
342
- success: false,
343
- error: "Execution cancelled by parent abort signal",
344
- metadata: { toolId: tool.tool.id, cancelled: true },
345
- });
346
- tool.status = "completed";
347
- }
348
- }
349
- // Wake up any waiting async generator
350
- this.notifyWaiter();
351
- }
352
- /**
353
- * Yield completed results in original request order.
354
- * Progress messages are yielded immediately regardless of order.
355
- *
356
- * This is a synchronous generator — it yields what's available now
357
- * without waiting for pending tools.
358
- */
359
- *getCompletedResults() {
360
- for (const tool of this.tools) {
361
- // Always yield pending progress immediately (Req 4.1)
362
- while (tool.pendingProgress.length > 0) {
363
- yield {
364
- toolCallId: tool.id,
365
- progress: tool.pendingProgress.shift(),
366
- };
367
- }
368
- if (tool.status === "yielded")
369
- continue;
370
- if (tool.status === "completed") {
371
- tool.status = "yielded";
372
- for (const result of tool.results) {
373
- yield {
374
- toolCallId: tool.id,
375
- result,
376
- contextUpdate: result.contextUpdate,
377
- dataUpdate: result.dataUpdate,
378
- };
379
- }
380
- }
381
- else {
382
- // Tool is still queued or executing — stop yielding results
383
- // to maintain request order, but continue yielding progress
384
- // for subsequent tools
385
- break;
386
- }
387
- }
388
- }
389
- /**
390
- * Async generator that yields all results (completed and pending) in
391
- * original request order. Waits for pending tools to complete.
392
- *
393
- * Progress messages are yielded immediately as they arrive.
394
- */
395
- async *getRemainingResults() {
396
- let yieldIndex = 0;
397
- while (yieldIndex < this.tools.length || this.hasUnfinishedTools()) {
398
- // Yield progress from all tools (bypass ordering)
399
- for (const tool of this.tools) {
400
- while (tool.pendingProgress.length > 0) {
401
- yield {
402
- toolCallId: tool.id,
403
- progress: tool.pendingProgress.shift(),
404
- };
405
- }
406
- }
407
- // Yield completed results in order
408
- while (yieldIndex < this.tools.length) {
409
- const tool = this.tools[yieldIndex];
410
- if (tool.status === "yielded") {
411
- yieldIndex++;
412
- continue;
413
- }
414
- if (tool.status === "completed") {
415
- tool.status = "yielded";
416
- for (const result of tool.results) {
417
- yield {
418
- toolCallId: tool.id,
419
- result,
420
- contextUpdate: result.contextUpdate,
421
- dataUpdate: result.dataUpdate,
422
- };
423
- }
424
- yieldIndex++;
425
- }
426
- else {
427
- // Tool is still queued or executing — wait for it
428
- break;
429
- }
430
- }
431
- // If there are still unfinished tools, wait for a state change
432
- if (yieldIndex < this.tools.length && this.hasUnfinishedTools()) {
433
- await this.waitForStateChange();
434
- }
435
- else {
436
- break;
437
- }
438
- }
439
- }
440
- /**
441
- * Stop processing new queued tools. Already-executing tools continue
442
- * to completion based on their interruptBehavior.
443
- */
444
- discard() {
445
- log.info("[StreamingToolExecutor] Executor discarded, stopping queue processing");
446
- this.discarded = true;
447
- this.notifyWaiter();
448
- }
449
- /**
450
- * Return the accumulated context updates from all completed tools.
451
- */
452
- getUpdatedContext() {
453
- return {
454
- ...this.toolContext.context,
455
- ...this.contextUpdates,
456
- };
457
- }
458
- /**
459
- * Check if there are any tools that haven't completed yet.
460
- */
461
- hasUnfinishedTools() {
462
- return this.tools.some((t) => t.status === "queued" || t.status === "executing");
463
- }
464
- /**
465
- * Wait for a state change (tool completion, progress, or discard).
466
- * Uses a deferred promise pattern.
467
- */
468
- waitForStateChange() {
469
- this.waiter = createDeferred();
470
- return this.waiter.promise;
471
- }
472
- /**
473
- * Notify the waiting async generator that state has changed.
474
- */
475
- notifyWaiter() {
476
- if (this.waiter) {
477
- const w = this.waiter;
478
- this.waiter = null;
479
- w.resolve();
480
- }
481
- }
482
- }
483
- //# sourceMappingURL=StreamingToolExecutor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StreamingToolExecutor.js","sourceRoot":"","sources":["../../src/core/StreamingToolExecutor.ts"],"names":[],"mappings":"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"}
@@ -1,133 +0,0 @@
1
- /**
2
- * ToolLoopExecutor owns dynamic tool execution during response generation:
3
- *
4
- * - `runLoop()` — the run-tools-then-ask-LLM-again follow-up loop used by the
5
- * non-streaming path (and as the streaming fallback): executes the initial
6
- * tool calls sequentially, asks the provider whether more tools are needed,
7
- * reconstructs tool-result history items, and forces a final text response
8
- * when tools ran but no message was produced.
9
- * - `runStreamingBatch()` — the streaming path's initial batch execution via
10
- * ToolManager.executeWithConcurrency (StreamingToolExecutor concurrency
11
- * rules), yielding tool-progress chunks; falls back to `runLoop()` when
12
- * concurrent execution fails.
13
- *
14
- * ToolManager remains the registry/resolver and single-tool executor.
15
- */
16
- import type { AgentOptions, AgentResponseStreamChunk, AgentStructuredResponse, Directive, HistoryItem, SessionState } from "../types/index.js";
17
- import type { Flow } from "./Flow.js";
18
- import type { Step } from "./Step.js";
19
- import type { ToolManager } from "./ToolManager.js";
20
- export declare class ToolLoopExecutor<TContext = unknown, TData = unknown> {
21
- private readonly deps;
22
- constructor(deps: {
23
- toolManager: ToolManager<TContext, TData>;
24
- getAgentOptions: () => AgentOptions<TContext, TData>;
25
- updateContext: (updates: Partial<TContext>) => Promise<void>;
26
- updateCollectedData: (updates: Partial<TData>) => Promise<void>;
27
- updateSessionData: (session: SessionState<TData>, dataUpdate: Partial<TData>) => Promise<SessionState<TData>>;
28
- /** Maximum number of tool loops (defaults to 5). */
29
- maxToolLoops?: number;
30
- });
31
- /**
32
- * Unified tool execution logic with loop handling.
33
- * Consolidates the complex tool execution logic from both streaming and
34
- * non-streaming responses.
35
- */
36
- runLoop(params: {
37
- toolCalls?: Array<{
38
- toolName: string;
39
- arguments: Record<string, unknown>;
40
- }>;
41
- context: TContext;
42
- session: SessionState<TData>;
43
- history: HistoryItem[];
44
- selectedFlow?: Flow<TContext, TData>;
45
- responsePrompt: string;
46
- availableTools: Array<{
47
- id: string;
48
- name: string;
49
- description?: string;
50
- parameters?: unknown;
51
- }>;
52
- responseSchema?: Record<string, unknown>;
53
- signal?: AbortSignal;
54
- }): Promise<{
55
- session: SessionState<TData>;
56
- finalToolCalls?: Array<{
57
- toolName: string;
58
- arguments: Record<string, unknown>;
59
- }>;
60
- finalMessage?: string;
61
- structured?: AgentStructuredResponse;
62
- /** Directives emitted by tools this turn (ctx.dispatch / `{directive}` returns), merged. */
63
- directives?: Directive<TContext, TData>;
64
- }>;
65
- /**
66
- * The multi-round follow-up loop shared by the non-streaming (`runLoop`) and
67
- * streaming (`runStreamingBatch`) tool paths: re-prompt the model with the
68
- * tool results (tools available on the first round so it can chain further
69
- * calls), execute any further tool calls, repeat up to `maxToolLoops`, then
70
- * force a result-aware closing message if the model never produced one.
71
- * Callers run the *initial* batch — sequentially for `runLoop`, concurrently
72
- * (with progress) for `runStreamingBatch` — and pass the populated result
73
- * maps; from here both paths behave identically.
74
- */
75
- private runFollowUpLoop;
76
- /**
77
- * After tools have executed but the model produced no closing text, make one
78
- * more LLM call (no tools) that turns the tool results into a user-facing
79
- * message. Shared by the non-streaming tool loop and the streaming batch so
80
- * both paths behave identically. Returns an empty object if the call fails
81
- * or yields nothing, leaving the caller to fall back to its prior message.
82
- */
83
- private forceFinalTextFromTools;
84
- /**
85
- * Execute the streaming path's initial batch of tool calls concurrently
86
- * via ToolManager.executeWithConcurrency, yielding tool-progress chunks.
87
- * When tools ran but the model produced no closing text, forces a final
88
- * text response from the tool results (mirroring `runLoop()`). Falls back
89
- * to `runLoop()` when concurrent execution fails.
90
- *
91
- * Returns the updated session, final tool calls, and any forced closing
92
- * message/structured response.
93
- */
94
- runStreamingBatch(params: {
95
- toolCalls: Array<{
96
- toolName: string;
97
- arguments: Record<string, unknown>;
98
- }>;
99
- context: TContext;
100
- session: SessionState<TData>;
101
- history: HistoryItem[];
102
- selectedFlow: Flow<TContext, TData>;
103
- step: Step<TContext, TData>;
104
- /** Accumulated text of the LLM's final chunk, echoed on progress chunks. */
105
- accumulated: string;
106
- responsePrompt: string;
107
- availableTools: Array<{
108
- id: string;
109
- name: string;
110
- description?: string;
111
- parameters?: unknown;
112
- }>;
113
- responseSchema?: Record<string, unknown>;
114
- signal?: AbortSignal;
115
- }): AsyncGenerator<AgentResponseStreamChunk<TData>, {
116
- session: SessionState<TData>;
117
- toolCalls: Array<{
118
- toolName: string;
119
- arguments: Record<string, unknown>;
120
- }> | undefined;
121
- /** Closing message forced from the tool results, if one was generated. */
122
- finalMessage?: string;
123
- structured?: AgentStructuredResponse;
124
- /** Directives emitted by tools this turn (ctx.dispatch / `{directive}` returns), merged. */
125
- directives?: Directive<TContext, TData>;
126
- }>;
127
- /**
128
- * Find an available tool by name for the given flow.
129
- * Delegates to ToolManager for unified tool resolution.
130
- */
131
- private findAvailableTool;
132
- }
133
- //# sourceMappingURL=ToolLoopExecutor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ToolLoopExecutor.d.ts","sourceRoot":"","sources":["../../src/core/ToolLoopExecutor.ts"],"names":[],"mappings":"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"}