@falai/agent 3.4.5 → 4.0.0-alpha.10

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 (865) hide show
  1. package/README.md +41 -34
  2. package/dist/cjs/core/Agent.d.ts +29 -378
  3. package/dist/cjs/core/Agent.d.ts.map +1 -1
  4. package/dist/cjs/core/Agent.js +113 -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 +573 -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 +149 -0
  20. package/dist/cjs/core/Prompt.js.map +1 -0
  21. package/dist/cjs/core/Runner.d.ts +171 -0
  22. package/dist/cjs/core/Runner.d.ts.map +1 -0
  23. package/dist/cjs/core/Runner.js +1158 -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 +373 -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 +357 -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 +11 -6
  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/providers/ZaiProvider.d.ts +6 -4
  100. package/dist/cjs/providers/ZaiProvider.d.ts.map +1 -1
  101. package/dist/cjs/providers/ZaiProvider.js +6 -4
  102. package/dist/cjs/providers/ZaiProvider.js.map +1 -1
  103. package/dist/cjs/types/agent.d.ts +163 -383
  104. package/dist/cjs/types/agent.d.ts.map +1 -1
  105. package/dist/cjs/types/agent.js +1 -1
  106. package/dist/cjs/types/ai.d.ts +32 -1
  107. package/dist/cjs/types/ai.d.ts.map +1 -1
  108. package/dist/cjs/types/compaction.d.ts +3 -1
  109. package/dist/cjs/types/compaction.d.ts.map +1 -1
  110. package/dist/cjs/types/errors.d.ts +9 -12
  111. package/dist/cjs/types/errors.d.ts.map +1 -1
  112. package/dist/cjs/types/errors.js +14 -17
  113. package/dist/cjs/types/errors.js.map +1 -1
  114. package/dist/cjs/types/flow.d.ts +265 -513
  115. package/dist/cjs/types/flow.d.ts.map +1 -1
  116. package/dist/cjs/types/flow.js +7 -1
  117. package/dist/cjs/types/flow.js.map +1 -1
  118. package/dist/cjs/types/history.d.ts +7 -18
  119. package/dist/cjs/types/history.d.ts.map +1 -1
  120. package/dist/cjs/types/history.js.map +1 -1
  121. package/dist/cjs/types/index.d.ts +9 -15
  122. package/dist/cjs/types/index.d.ts.map +1 -1
  123. package/dist/cjs/types/index.js +4 -14
  124. package/dist/cjs/types/index.js.map +1 -1
  125. package/dist/cjs/types/session.d.ts +94 -64
  126. package/dist/cjs/types/session.d.ts.map +1 -1
  127. package/dist/cjs/types/session.js +5 -1
  128. package/dist/cjs/types/session.js.map +1 -1
  129. package/dist/cjs/types/tool.d.ts +37 -207
  130. package/dist/cjs/types/tool.d.ts.map +1 -1
  131. package/dist/cjs/types/tool.js +5 -14
  132. package/dist/cjs/types/tool.js.map +1 -1
  133. package/dist/cjs/utils/clock.d.ts +28 -0
  134. package/dist/cjs/utils/clock.d.ts.map +1 -0
  135. package/dist/cjs/utils/clock.js +64 -0
  136. package/dist/cjs/utils/clock.js.map +1 -0
  137. package/dist/cjs/utils/duration.d.ts +11 -0
  138. package/dist/cjs/utils/duration.d.ts.map +1 -0
  139. package/dist/cjs/utils/duration.js +31 -0
  140. package/dist/cjs/utils/duration.js.map +1 -0
  141. package/dist/cjs/utils/history.d.ts +4 -1
  142. package/dist/cjs/utils/history.d.ts.map +1 -1
  143. package/dist/cjs/utils/history.js +2 -2
  144. package/dist/cjs/utils/history.js.map +1 -1
  145. package/dist/cjs/utils/index.d.ts +4 -10
  146. package/dist/cjs/utils/index.d.ts.map +1 -1
  147. package/dist/cjs/utils/index.js +14 -61
  148. package/dist/cjs/utils/index.js.map +1 -1
  149. package/dist/cjs/utils/json.d.ts +2 -0
  150. package/dist/cjs/utils/json.d.ts.map +1 -1
  151. package/dist/cjs/utils/json.js +5 -0
  152. package/dist/cjs/utils/json.js.map +1 -1
  153. package/dist/cjs/utils/outcomes.d.ts +48 -0
  154. package/dist/cjs/utils/outcomes.d.ts.map +1 -0
  155. package/dist/cjs/utils/outcomes.js +51 -0
  156. package/dist/cjs/utils/outcomes.js.map +1 -0
  157. package/dist/cjs/utils/phrases.d.ts +25 -0
  158. package/dist/cjs/utils/phrases.d.ts.map +1 -0
  159. package/dist/cjs/utils/phrases.js +38 -0
  160. package/dist/cjs/utils/phrases.js.map +1 -0
  161. package/dist/cjs/utils/schema.d.ts +50 -0
  162. package/dist/cjs/utils/schema.d.ts.map +1 -0
  163. package/dist/cjs/utils/schema.js +138 -0
  164. package/dist/cjs/utils/schema.js.map +1 -0
  165. package/dist/cjs/utils/streamingMessage.d.ts +3 -2
  166. package/dist/cjs/utils/streamingMessage.d.ts.map +1 -1
  167. package/dist/cjs/utils/streamingMessage.js +38 -4
  168. package/dist/cjs/utils/streamingMessage.js.map +1 -1
  169. package/dist/cjs/utils/template.d.ts +22 -150
  170. package/dist/cjs/utils/template.d.ts.map +1 -1
  171. package/dist/cjs/utils/template.js +64 -359
  172. package/dist/cjs/utils/template.js.map +1 -1
  173. package/dist/cjs/utils/usage.d.ts +19 -0
  174. package/dist/cjs/utils/usage.d.ts.map +1 -0
  175. package/dist/cjs/utils/usage.js +35 -0
  176. package/dist/cjs/utils/usage.js.map +1 -0
  177. package/dist/core/Agent.d.ts +29 -378
  178. package/dist/core/Agent.d.ts.map +1 -1
  179. package/dist/core/Agent.js +116 -1181
  180. package/dist/core/Agent.js.map +1 -1
  181. package/dist/core/CompactionEngine.d.ts.map +1 -1
  182. package/dist/core/CompactionEngine.js +5 -3
  183. package/dist/core/CompactionEngine.js.map +1 -1
  184. package/dist/core/FlowSpec.d.ts +136 -0
  185. package/dist/core/FlowSpec.d.ts.map +1 -0
  186. package/dist/core/FlowSpec.js +567 -0
  187. package/dist/core/FlowSpec.js.map +1 -0
  188. package/dist/core/Migrate.d.ts +38 -0
  189. package/dist/core/Migrate.d.ts.map +1 -0
  190. package/dist/core/Migrate.js +264 -0
  191. package/dist/core/Migrate.js.map +1 -0
  192. package/dist/core/Prompt.d.ts +54 -0
  193. package/dist/core/Prompt.d.ts.map +1 -0
  194. package/dist/core/Prompt.js +139 -0
  195. package/dist/core/Prompt.js.map +1 -0
  196. package/dist/core/Runner.d.ts +171 -0
  197. package/dist/core/Runner.d.ts.map +1 -0
  198. package/dist/core/Runner.js +1154 -0
  199. package/dist/core/Runner.js.map +1 -0
  200. package/dist/core/Speak.d.ts +37 -0
  201. package/dist/core/Speak.d.ts.map +1 -0
  202. package/dist/core/Speak.js +369 -0
  203. package/dist/core/Speak.js.map +1 -0
  204. package/dist/core/Understand.d.ts +28 -0
  205. package/dist/core/Understand.d.ts.map +1 -0
  206. package/dist/core/Understand.js +353 -0
  207. package/dist/core/Understand.js.map +1 -0
  208. package/dist/core/contracts.d.ts +122 -0
  209. package/dist/core/contracts.d.ts.map +1 -0
  210. package/dist/core/contracts.js +10 -0
  211. package/dist/core/contracts.js.map +1 -0
  212. package/dist/core/falai.d.ts +57 -0
  213. package/dist/core/falai.d.ts.map +1 -0
  214. package/dist/core/falai.js +40 -0
  215. package/dist/core/falai.js.map +1 -0
  216. package/dist/core/predicate.d.ts +9 -0
  217. package/dist/core/predicate.d.ts.map +1 -0
  218. package/dist/core/predicate.js +54 -0
  219. package/dist/core/predicate.js.map +1 -0
  220. package/dist/index.d.ts +26 -31
  221. package/dist/index.d.ts.map +1 -1
  222. package/dist/index.js +19 -24
  223. package/dist/index.js.map +1 -1
  224. package/dist/persistence/MemoryStore.d.ts +15 -0
  225. package/dist/persistence/MemoryStore.d.ts.map +1 -0
  226. package/dist/persistence/MemoryStore.js +35 -0
  227. package/dist/persistence/MemoryStore.js.map +1 -0
  228. package/dist/persistence/MongoStore.d.ts +42 -0
  229. package/dist/persistence/MongoStore.d.ts.map +1 -0
  230. package/dist/persistence/MongoStore.js +56 -0
  231. package/dist/persistence/MongoStore.js.map +1 -0
  232. package/dist/persistence/OpenSearchStore.d.ts +86 -0
  233. package/dist/persistence/OpenSearchStore.d.ts.map +1 -0
  234. package/dist/persistence/OpenSearchStore.js +116 -0
  235. package/dist/persistence/OpenSearchStore.js.map +1 -0
  236. package/dist/persistence/PostgresStore.d.ts +41 -0
  237. package/dist/persistence/PostgresStore.d.ts.map +1 -0
  238. package/dist/persistence/PostgresStore.js +54 -0
  239. package/dist/persistence/PostgresStore.js.map +1 -0
  240. package/dist/persistence/PrismaStore.d.ts +65 -0
  241. package/dist/persistence/PrismaStore.d.ts.map +1 -0
  242. package/dist/persistence/PrismaStore.js +91 -0
  243. package/dist/persistence/PrismaStore.js.map +1 -0
  244. package/dist/persistence/RedisStore.d.ts +34 -0
  245. package/dist/persistence/RedisStore.d.ts.map +1 -0
  246. package/dist/persistence/RedisStore.js +57 -0
  247. package/dist/persistence/RedisStore.js.map +1 -0
  248. package/dist/persistence/SQLiteStore.d.ts +45 -0
  249. package/dist/persistence/SQLiteStore.d.ts.map +1 -0
  250. package/dist/persistence/SQLiteStore.js +70 -0
  251. package/dist/persistence/SQLiteStore.js.map +1 -0
  252. package/dist/persistence/sessionRow.d.ts +14 -0
  253. package/dist/persistence/sessionRow.d.ts.map +1 -0
  254. package/dist/persistence/sessionRow.js +45 -0
  255. package/dist/persistence/sessionRow.js.map +1 -0
  256. package/dist/providers/DeepSeekProvider.d.ts.map +1 -1
  257. package/dist/providers/DeepSeekProvider.js +8 -3
  258. package/dist/providers/DeepSeekProvider.js.map +1 -1
  259. package/dist/providers/GeminiProvider.d.ts +4 -3
  260. package/dist/providers/GeminiProvider.d.ts.map +1 -1
  261. package/dist/providers/GeminiProvider.js +4 -3
  262. package/dist/providers/GeminiProvider.js.map +1 -1
  263. package/dist/providers/OpenAICompatibleProvider.d.ts +4 -0
  264. package/dist/providers/OpenAICompatibleProvider.d.ts.map +1 -1
  265. package/dist/providers/OpenAICompatibleProvider.js +2 -0
  266. package/dist/providers/OpenAICompatibleProvider.js.map +1 -1
  267. package/dist/providers/OpenRouterProvider.d.ts.map +1 -1
  268. package/dist/providers/OpenRouterProvider.js +2 -4
  269. package/dist/providers/OpenRouterProvider.js.map +1 -1
  270. package/dist/providers/ProviderAdapter.d.ts +11 -6
  271. package/dist/providers/ProviderAdapter.d.ts.map +1 -1
  272. package/dist/providers/ProviderAdapter.js +34 -11
  273. package/dist/providers/ProviderAdapter.js.map +1 -1
  274. package/dist/providers/ZaiProvider.d.ts +6 -4
  275. package/dist/providers/ZaiProvider.d.ts.map +1 -1
  276. package/dist/providers/ZaiProvider.js +6 -4
  277. package/dist/providers/ZaiProvider.js.map +1 -1
  278. package/dist/types/agent.d.ts +163 -383
  279. package/dist/types/agent.d.ts.map +1 -1
  280. package/dist/types/agent.js +1 -1
  281. package/dist/types/ai.d.ts +32 -1
  282. package/dist/types/ai.d.ts.map +1 -1
  283. package/dist/types/compaction.d.ts +3 -1
  284. package/dist/types/compaction.d.ts.map +1 -1
  285. package/dist/types/errors.d.ts +9 -12
  286. package/dist/types/errors.d.ts.map +1 -1
  287. package/dist/types/errors.js +12 -15
  288. package/dist/types/errors.js.map +1 -1
  289. package/dist/types/flow.d.ts +265 -513
  290. package/dist/types/flow.d.ts.map +1 -1
  291. package/dist/types/flow.js +7 -1
  292. package/dist/types/flow.js.map +1 -1
  293. package/dist/types/history.d.ts +7 -18
  294. package/dist/types/history.d.ts.map +1 -1
  295. package/dist/types/history.js.map +1 -1
  296. package/dist/types/index.d.ts +9 -15
  297. package/dist/types/index.d.ts.map +1 -1
  298. package/dist/types/index.js +2 -7
  299. package/dist/types/index.js.map +1 -1
  300. package/dist/types/session.d.ts +94 -64
  301. package/dist/types/session.d.ts.map +1 -1
  302. package/dist/types/session.js +5 -1
  303. package/dist/types/session.js.map +1 -1
  304. package/dist/types/tool.d.ts +37 -207
  305. package/dist/types/tool.d.ts.map +1 -1
  306. package/dist/types/tool.js +6 -13
  307. package/dist/types/tool.js.map +1 -1
  308. package/dist/utils/clock.d.ts +28 -0
  309. package/dist/utils/clock.d.ts.map +1 -0
  310. package/dist/utils/clock.js +59 -0
  311. package/dist/utils/clock.js.map +1 -0
  312. package/dist/utils/duration.d.ts +11 -0
  313. package/dist/utils/duration.d.ts.map +1 -0
  314. package/dist/utils/duration.js +26 -0
  315. package/dist/utils/duration.js.map +1 -0
  316. package/dist/utils/history.d.ts +4 -1
  317. package/dist/utils/history.d.ts.map +1 -1
  318. package/dist/utils/history.js +2 -2
  319. package/dist/utils/history.js.map +1 -1
  320. package/dist/utils/index.d.ts +4 -10
  321. package/dist/utils/index.d.ts.map +1 -1
  322. package/dist/utils/index.js +4 -21
  323. package/dist/utils/index.js.map +1 -1
  324. package/dist/utils/json.d.ts +2 -0
  325. package/dist/utils/json.d.ts.map +1 -1
  326. package/dist/utils/json.js +4 -0
  327. package/dist/utils/json.js.map +1 -1
  328. package/dist/utils/outcomes.d.ts +48 -0
  329. package/dist/utils/outcomes.d.ts.map +1 -0
  330. package/dist/utils/outcomes.js +48 -0
  331. package/dist/utils/outcomes.js.map +1 -0
  332. package/dist/utils/phrases.d.ts +25 -0
  333. package/dist/utils/phrases.d.ts.map +1 -0
  334. package/dist/utils/phrases.js +35 -0
  335. package/dist/utils/phrases.js.map +1 -0
  336. package/dist/utils/schema.d.ts +50 -0
  337. package/dist/utils/schema.d.ts.map +1 -0
  338. package/dist/utils/schema.js +129 -0
  339. package/dist/utils/schema.js.map +1 -0
  340. package/dist/utils/streamingMessage.d.ts +3 -2
  341. package/dist/utils/streamingMessage.d.ts.map +1 -1
  342. package/dist/utils/streamingMessage.js +38 -4
  343. package/dist/utils/streamingMessage.js.map +1 -1
  344. package/dist/utils/template.d.ts +22 -150
  345. package/dist/utils/template.d.ts.map +1 -1
  346. package/dist/utils/template.js +61 -351
  347. package/dist/utils/template.js.map +1 -1
  348. package/dist/utils/usage.d.ts +19 -0
  349. package/dist/utils/usage.d.ts.map +1 -0
  350. package/dist/utils/usage.js +31 -0
  351. package/dist/utils/usage.js.map +1 -0
  352. package/docs/README.md +37 -19
  353. package/docs/concepts/architecture.md +117 -239
  354. package/docs/concepts/collection.md +170 -0
  355. package/docs/concepts/pipeline.md +132 -378
  356. package/docs/concepts/runs-and-waits.md +192 -0
  357. package/docs/guides/actions-and-events.md +276 -0
  358. package/docs/guides/branching.md +119 -208
  359. package/docs/guides/compaction.md +63 -158
  360. package/docs/guides/conditions.md +164 -128
  361. package/docs/guides/error-handling.md +170 -164
  362. package/docs/guides/flow-control.md +210 -349
  363. package/docs/guides/flows-from-json.md +224 -0
  364. package/docs/guides/instructions.md +125 -161
  365. package/docs/guides/persistence.md +182 -206
  366. package/docs/guides/streaming.md +50 -114
  367. package/docs/guides/testing.md +284 -0
  368. package/docs/guides/triggers.md +401 -0
  369. package/docs/migration/README.md +8 -15
  370. package/docs/migration/v1-to-v2.md +1 -1
  371. package/docs/migration/v2-3-to-v2-4.md +2 -2
  372. package/docs/migration/v2-6-to-v2-7.md +4 -4
  373. package/docs/migration/v3-to-v4.md +457 -0
  374. package/docs/reference/actions-events-conditions.md +396 -0
  375. package/docs/reference/agent.md +248 -0
  376. package/docs/reference/branches.md +75 -203
  377. package/docs/reference/errors.md +188 -144
  378. package/docs/reference/fields.md +125 -0
  379. package/docs/reference/flow-spec.md +248 -0
  380. package/docs/reference/flow.md +104 -192
  381. package/docs/reference/instruction.md +83 -137
  382. package/docs/reference/outcomes.md +273 -0
  383. package/docs/reference/providers.md +525 -302
  384. package/docs/reference/session.md +210 -0
  385. package/docs/reference/step.md +194 -312
  386. package/docs/reference/stores.md +496 -0
  387. package/docs/reference/tool.md +162 -231
  388. package/docs/reference/trigger.md +200 -0
  389. package/docs/rfc/v4-one-flow.md +477 -0
  390. package/docs/start/01-install.md +59 -44
  391. package/docs/start/02-first-agent.md +97 -147
  392. package/docs/start/03-collect-data.md +78 -183
  393. package/docs/start/04-add-tools.md +159 -227
  394. package/docs/start/05-go-to-production.md +181 -163
  395. package/examples/01-quickstart.ts +26 -16
  396. package/examples/02-fields.ts +75 -0
  397. package/examples/03-tools.ts +79 -119
  398. package/examples/04-instructions.ts +60 -87
  399. package/examples/05-branches.ts +78 -0
  400. package/examples/06-triggers-and-waits.ts +149 -0
  401. package/examples/07-streaming.ts +34 -60
  402. package/examples/08-store-and-migration.ts +97 -0
  403. package/examples/09-flows-from-json.ts +107 -0
  404. package/package.json +11 -6
  405. package/src/core/Agent.ts +126 -1512
  406. package/src/core/CompactionEngine.ts +7 -4
  407. package/src/core/FlowSpec.ts +778 -0
  408. package/src/core/Migrate.ts +256 -0
  409. package/src/core/Prompt.ts +162 -0
  410. package/src/core/Runner.ts +1214 -0
  411. package/src/core/Speak.ts +460 -0
  412. package/src/core/Understand.ts +423 -0
  413. package/src/core/contracts.ts +111 -0
  414. package/src/core/falai.ts +86 -0
  415. package/src/core/predicate.ts +56 -0
  416. package/src/index.ts +120 -147
  417. package/src/persistence/MemoryStore.ts +37 -0
  418. package/src/persistence/MongoStore.ts +89 -0
  419. package/src/persistence/OpenSearchStore.ts +153 -0
  420. package/src/persistence/PostgresStore.ts +89 -0
  421. package/src/persistence/PrismaStore.ts +127 -0
  422. package/src/persistence/RedisStore.ts +90 -0
  423. package/src/persistence/SQLiteStore.ts +103 -0
  424. package/src/persistence/sessionRow.ts +45 -0
  425. package/src/providers/DeepSeekProvider.ts +8 -3
  426. package/src/providers/GeminiProvider.ts +4 -3
  427. package/src/providers/OpenAICompatibleProvider.ts +6 -0
  428. package/src/providers/OpenRouterProvider.ts +2 -4
  429. package/src/providers/ProviderAdapter.ts +46 -13
  430. package/src/providers/ZaiProvider.ts +6 -4
  431. package/src/types/agent.ts +135 -397
  432. package/src/types/ai.ts +33 -1
  433. package/src/types/compaction.ts +3 -1
  434. package/src/types/errors.ts +13 -16
  435. package/src/types/flow.ts +249 -550
  436. package/src/types/history.ts +7 -20
  437. package/src/types/index.ts +88 -139
  438. package/src/types/session.ts +135 -70
  439. package/src/types/tool.ts +42 -267
  440. package/src/utils/clock.ts +70 -0
  441. package/src/utils/duration.ts +33 -0
  442. package/src/utils/history.ts +3 -2
  443. package/src/utils/index.ts +8 -66
  444. package/src/utils/json.ts +5 -0
  445. package/src/utils/outcomes.ts +56 -0
  446. package/src/utils/phrases.ts +40 -0
  447. package/src/utils/schema.ts +145 -0
  448. package/src/utils/streamingMessage.ts +34 -4
  449. package/src/utils/template.ts +63 -418
  450. package/src/utils/usage.ts +37 -0
  451. package/dist/adapters/MemoryAdapter.d.ts +0 -47
  452. package/dist/adapters/MemoryAdapter.d.ts.map +0 -1
  453. package/dist/adapters/MemoryAdapter.js +0 -204
  454. package/dist/adapters/MemoryAdapter.js.map +0 -1
  455. package/dist/adapters/MongoAdapter.d.ts +0 -97
  456. package/dist/adapters/MongoAdapter.d.ts.map +0 -1
  457. package/dist/adapters/MongoAdapter.js +0 -196
  458. package/dist/adapters/MongoAdapter.js.map +0 -1
  459. package/dist/adapters/OpenSearchAdapter.d.ts +0 -169
  460. package/dist/adapters/OpenSearchAdapter.d.ts.map +0 -1
  461. package/dist/adapters/OpenSearchAdapter.js +0 -471
  462. package/dist/adapters/OpenSearchAdapter.js.map +0 -1
  463. package/dist/adapters/PostgreSQLAdapter.d.ts +0 -85
  464. package/dist/adapters/PostgreSQLAdapter.d.ts.map +0 -1
  465. package/dist/adapters/PostgreSQLAdapter.js +0 -308
  466. package/dist/adapters/PostgreSQLAdapter.js.map +0 -1
  467. package/dist/adapters/PrismaAdapter.d.ts +0 -115
  468. package/dist/adapters/PrismaAdapter.d.ts.map +0 -1
  469. package/dist/adapters/PrismaAdapter.js +0 -406
  470. package/dist/adapters/PrismaAdapter.js.map +0 -1
  471. package/dist/adapters/RedisAdapter.d.ts +0 -72
  472. package/dist/adapters/RedisAdapter.d.ts.map +0 -1
  473. package/dist/adapters/RedisAdapter.js +0 -286
  474. package/dist/adapters/RedisAdapter.js.map +0 -1
  475. package/dist/adapters/SQLiteAdapter.d.ts +0 -86
  476. package/dist/adapters/SQLiteAdapter.d.ts.map +0 -1
  477. package/dist/adapters/SQLiteAdapter.js +0 -337
  478. package/dist/adapters/SQLiteAdapter.js.map +0 -1
  479. package/dist/adapters/index.d.ts +0 -17
  480. package/dist/adapters/index.d.ts.map +0 -1
  481. package/dist/adapters/index.js +0 -11
  482. package/dist/adapters/index.js.map +0 -1
  483. package/dist/adapters/sessionRow.d.ts +0 -22
  484. package/dist/adapters/sessionRow.d.ts.map +0 -1
  485. package/dist/adapters/sessionRow.js +0 -48
  486. package/dist/adapters/sessionRow.js.map +0 -1
  487. package/dist/cjs/adapters/MemoryAdapter.d.ts +0 -47
  488. package/dist/cjs/adapters/MemoryAdapter.d.ts.map +0 -1
  489. package/dist/cjs/adapters/MemoryAdapter.js +0 -208
  490. package/dist/cjs/adapters/MemoryAdapter.js.map +0 -1
  491. package/dist/cjs/adapters/MongoAdapter.d.ts +0 -97
  492. package/dist/cjs/adapters/MongoAdapter.d.ts.map +0 -1
  493. package/dist/cjs/adapters/MongoAdapter.js +0 -200
  494. package/dist/cjs/adapters/MongoAdapter.js.map +0 -1
  495. package/dist/cjs/adapters/OpenSearchAdapter.d.ts +0 -169
  496. package/dist/cjs/adapters/OpenSearchAdapter.d.ts.map +0 -1
  497. package/dist/cjs/adapters/OpenSearchAdapter.js +0 -475
  498. package/dist/cjs/adapters/OpenSearchAdapter.js.map +0 -1
  499. package/dist/cjs/adapters/PostgreSQLAdapter.d.ts +0 -85
  500. package/dist/cjs/adapters/PostgreSQLAdapter.d.ts.map +0 -1
  501. package/dist/cjs/adapters/PostgreSQLAdapter.js +0 -312
  502. package/dist/cjs/adapters/PostgreSQLAdapter.js.map +0 -1
  503. package/dist/cjs/adapters/PrismaAdapter.d.ts +0 -115
  504. package/dist/cjs/adapters/PrismaAdapter.d.ts.map +0 -1
  505. package/dist/cjs/adapters/PrismaAdapter.js +0 -410
  506. package/dist/cjs/adapters/PrismaAdapter.js.map +0 -1
  507. package/dist/cjs/adapters/RedisAdapter.d.ts +0 -72
  508. package/dist/cjs/adapters/RedisAdapter.d.ts.map +0 -1
  509. package/dist/cjs/adapters/RedisAdapter.js +0 -290
  510. package/dist/cjs/adapters/RedisAdapter.js.map +0 -1
  511. package/dist/cjs/adapters/SQLiteAdapter.d.ts +0 -86
  512. package/dist/cjs/adapters/SQLiteAdapter.d.ts.map +0 -1
  513. package/dist/cjs/adapters/SQLiteAdapter.js +0 -341
  514. package/dist/cjs/adapters/SQLiteAdapter.js.map +0 -1
  515. package/dist/cjs/adapters/index.d.ts +0 -17
  516. package/dist/cjs/adapters/index.d.ts.map +0 -1
  517. package/dist/cjs/adapters/index.js +0 -21
  518. package/dist/cjs/adapters/index.js.map +0 -1
  519. package/dist/cjs/adapters/sessionRow.d.ts +0 -22
  520. package/dist/cjs/adapters/sessionRow.d.ts.map +0 -1
  521. package/dist/cjs/adapters/sessionRow.js +0 -52
  522. package/dist/cjs/adapters/sessionRow.js.map +0 -1
  523. package/dist/cjs/constants/index.d.ts +0 -1
  524. package/dist/cjs/constants/index.d.ts.map +0 -1
  525. package/dist/cjs/constants/index.js +0 -4
  526. package/dist/cjs/constants/index.js.map +0 -1
  527. package/dist/cjs/core/AutoChainExecutor.d.ts +0 -97
  528. package/dist/cjs/core/AutoChainExecutor.d.ts.map +0 -1
  529. package/dist/cjs/core/AutoChainExecutor.js +0 -288
  530. package/dist/cjs/core/AutoChainExecutor.js.map +0 -1
  531. package/dist/cjs/core/BranchEvaluator.d.ts +0 -55
  532. package/dist/cjs/core/BranchEvaluator.d.ts.map +0 -1
  533. package/dist/cjs/core/BranchEvaluator.js +0 -125
  534. package/dist/cjs/core/BranchEvaluator.js.map +0 -1
  535. package/dist/cjs/core/DirectiveChainTracker.d.ts +0 -49
  536. package/dist/cjs/core/DirectiveChainTracker.d.ts.map +0 -1
  537. package/dist/cjs/core/DirectiveChainTracker.js +0 -121
  538. package/dist/cjs/core/DirectiveChainTracker.js.map +0 -1
  539. package/dist/cjs/core/Events.d.ts +0 -26
  540. package/dist/cjs/core/Events.d.ts.map +0 -1
  541. package/dist/cjs/core/Events.js +0 -144
  542. package/dist/cjs/core/Events.js.map +0 -1
  543. package/dist/cjs/core/Flow.d.ts +0 -183
  544. package/dist/cjs/core/Flow.d.ts.map +0 -1
  545. package/dist/cjs/core/Flow.js +0 -551
  546. package/dist/cjs/core/Flow.js.map +0 -1
  547. package/dist/cjs/core/FlowRouter.d.ts +0 -183
  548. package/dist/cjs/core/FlowRouter.d.ts.map +0 -1
  549. package/dist/cjs/core/FlowRouter.js +0 -1047
  550. package/dist/cjs/core/FlowRouter.js.map +0 -1
  551. package/dist/cjs/core/PersistenceManager.d.ts +0 -114
  552. package/dist/cjs/core/PersistenceManager.d.ts.map +0 -1
  553. package/dist/cjs/core/PersistenceManager.js +0 -336
  554. package/dist/cjs/core/PersistenceManager.js.map +0 -1
  555. package/dist/cjs/core/PromptComposer.d.ts +0 -47
  556. package/dist/cjs/core/PromptComposer.d.ts.map +0 -1
  557. package/dist/cjs/core/PromptComposer.js +0 -397
  558. package/dist/cjs/core/PromptComposer.js.map +0 -1
  559. package/dist/cjs/core/PromptSectionCache.d.ts +0 -48
  560. package/dist/cjs/core/PromptSectionCache.d.ts.map +0 -1
  561. package/dist/cjs/core/PromptSectionCache.js +0 -108
  562. package/dist/cjs/core/PromptSectionCache.js.map +0 -1
  563. package/dist/cjs/core/ResponseEngine.d.ts +0 -43
  564. package/dist/cjs/core/ResponseEngine.d.ts.map +0 -1
  565. package/dist/cjs/core/ResponseEngine.js +0 -235
  566. package/dist/cjs/core/ResponseEngine.js.map +0 -1
  567. package/dist/cjs/core/ResponseGenerationError.d.ts +0 -30
  568. package/dist/cjs/core/ResponseGenerationError.d.ts.map +0 -1
  569. package/dist/cjs/core/ResponseGenerationError.js +0 -35
  570. package/dist/cjs/core/ResponseGenerationError.js.map +0 -1
  571. package/dist/cjs/core/ResponseModal.d.ts +0 -305
  572. package/dist/cjs/core/ResponseModal.d.ts.map +0 -1
  573. package/dist/cjs/core/ResponseModal.js +0 -1414
  574. package/dist/cjs/core/ResponseModal.js.map +0 -1
  575. package/dist/cjs/core/ResponsePipeline.d.ts +0 -220
  576. package/dist/cjs/core/ResponsePipeline.d.ts.map +0 -1
  577. package/dist/cjs/core/ResponsePipeline.js +0 -1040
  578. package/dist/cjs/core/ResponsePipeline.js.map +0 -1
  579. package/dist/cjs/core/SessionFinalizer.d.ts +0 -34
  580. package/dist/cjs/core/SessionFinalizer.d.ts.map +0 -1
  581. package/dist/cjs/core/SessionFinalizer.js +0 -88
  582. package/dist/cjs/core/SessionFinalizer.js.map +0 -1
  583. package/dist/cjs/core/SessionManager.d.ts +0 -112
  584. package/dist/cjs/core/SessionManager.d.ts.map +0 -1
  585. package/dist/cjs/core/SessionManager.js +0 -308
  586. package/dist/cjs/core/SessionManager.js.map +0 -1
  587. package/dist/cjs/core/SignalCoordinator.d.ts +0 -103
  588. package/dist/cjs/core/SignalCoordinator.d.ts.map +0 -1
  589. package/dist/cjs/core/SignalCoordinator.js +0 -207
  590. package/dist/cjs/core/SignalCoordinator.js.map +0 -1
  591. package/dist/cjs/core/SignalEvaluator.d.ts +0 -86
  592. package/dist/cjs/core/SignalEvaluator.d.ts.map +0 -1
  593. package/dist/cjs/core/SignalEvaluator.js +0 -319
  594. package/dist/cjs/core/SignalEvaluator.js.map +0 -1
  595. package/dist/cjs/core/SignalProcessor.d.ts +0 -152
  596. package/dist/cjs/core/SignalProcessor.d.ts.map +0 -1
  597. package/dist/cjs/core/SignalProcessor.js +0 -505
  598. package/dist/cjs/core/SignalProcessor.js.map +0 -1
  599. package/dist/cjs/core/Step.d.ts +0 -184
  600. package/dist/cjs/core/Step.d.ts.map +0 -1
  601. package/dist/cjs/core/Step.js +0 -599
  602. package/dist/cjs/core/Step.js.map +0 -1
  603. package/dist/cjs/core/StepLifecycle.d.ts +0 -43
  604. package/dist/cjs/core/StepLifecycle.d.ts.map +0 -1
  605. package/dist/cjs/core/StepLifecycle.js +0 -180
  606. package/dist/cjs/core/StepLifecycle.js.map +0 -1
  607. package/dist/cjs/core/StreamingToolExecutor.d.ts +0 -142
  608. package/dist/cjs/core/StreamingToolExecutor.d.ts.map +0 -1
  609. package/dist/cjs/core/StreamingToolExecutor.js +0 -490
  610. package/dist/cjs/core/StreamingToolExecutor.js.map +0 -1
  611. package/dist/cjs/core/ToolLoopExecutor.d.ts +0 -133
  612. package/dist/cjs/core/ToolLoopExecutor.d.ts.map +0 -1
  613. package/dist/cjs/core/ToolLoopExecutor.js +0 -568
  614. package/dist/cjs/core/ToolLoopExecutor.js.map +0 -1
  615. package/dist/cjs/core/ToolManager.d.ts +0 -250
  616. package/dist/cjs/core/ToolManager.d.ts.map +0 -1
  617. package/dist/cjs/core/ToolManager.js +0 -1104
  618. package/dist/cjs/core/ToolManager.js.map +0 -1
  619. package/dist/cjs/core/createAgent.d.ts +0 -35
  620. package/dist/cjs/core/createAgent.d.ts.map +0 -1
  621. package/dist/cjs/core/createAgent.js +0 -39
  622. package/dist/cjs/core/createAgent.js.map +0 -1
  623. package/dist/cjs/core/flow-namespace.d.ts +0 -64
  624. package/dist/cjs/core/flow-namespace.d.ts.map +0 -1
  625. package/dist/cjs/core/flow-namespace.js +0 -182
  626. package/dist/cjs/core/flow-namespace.js.map +0 -1
  627. package/dist/cjs/core/toolGates.d.ts +0 -24
  628. package/dist/cjs/core/toolGates.d.ts.map +0 -1
  629. package/dist/cjs/core/toolGates.js +0 -52
  630. package/dist/cjs/core/toolGates.js.map +0 -1
  631. package/dist/cjs/types/persistence.d.ts +0 -254
  632. package/dist/cjs/types/persistence.d.ts.map +0 -1
  633. package/dist/cjs/types/persistence.js +0 -7
  634. package/dist/cjs/types/persistence.js.map +0 -1
  635. package/dist/cjs/types/prompt-cache.d.ts +0 -15
  636. package/dist/cjs/types/prompt-cache.d.ts.map +0 -1
  637. package/dist/cjs/types/prompt-cache.js +0 -6
  638. package/dist/cjs/types/prompt-cache.js.map +0 -1
  639. package/dist/cjs/types/signals.d.ts +0 -263
  640. package/dist/cjs/types/signals.d.ts.map +0 -1
  641. package/dist/cjs/types/signals.js +0 -11
  642. package/dist/cjs/types/signals.js.map +0 -1
  643. package/dist/cjs/types/template.d.ts +0 -84
  644. package/dist/cjs/types/template.d.ts.map +0 -1
  645. package/dist/cjs/types/template.js +0 -3
  646. package/dist/cjs/types/template.js.map +0 -1
  647. package/dist/cjs/utils/condition.d.ts +0 -63
  648. package/dist/cjs/utils/condition.d.ts.map +0 -1
  649. package/dist/cjs/utils/condition.js +0 -239
  650. package/dist/cjs/utils/condition.js.map +0 -1
  651. package/dist/cjs/utils/event.d.ts +0 -6
  652. package/dist/cjs/utils/event.d.ts.map +0 -1
  653. package/dist/cjs/utils/event.js +0 -20
  654. package/dist/cjs/utils/event.js.map +0 -1
  655. package/dist/cjs/utils/id.d.ts +0 -33
  656. package/dist/cjs/utils/id.d.ts.map +0 -1
  657. package/dist/cjs/utils/id.js +0 -84
  658. package/dist/cjs/utils/id.js.map +0 -1
  659. package/dist/cjs/utils/serialize.d.ts +0 -36
  660. package/dist/cjs/utils/serialize.d.ts.map +0 -1
  661. package/dist/cjs/utils/serialize.js +0 -77
  662. package/dist/cjs/utils/serialize.js.map +0 -1
  663. package/dist/cjs/utils/session.d.ts +0 -124
  664. package/dist/cjs/utils/session.d.ts.map +0 -1
  665. package/dist/cjs/utils/session.js +0 -396
  666. package/dist/cjs/utils/session.js.map +0 -1
  667. package/dist/constants/index.d.ts +0 -2
  668. package/dist/constants/index.d.ts.map +0 -1
  669. package/dist/constants/index.js +0 -4
  670. package/dist/constants/index.js.map +0 -1
  671. package/dist/core/AutoChainExecutor.d.ts +0 -97
  672. package/dist/core/AutoChainExecutor.d.ts.map +0 -1
  673. package/dist/core/AutoChainExecutor.js +0 -284
  674. package/dist/core/AutoChainExecutor.js.map +0 -1
  675. package/dist/core/BranchEvaluator.d.ts +0 -55
  676. package/dist/core/BranchEvaluator.d.ts.map +0 -1
  677. package/dist/core/BranchEvaluator.js +0 -121
  678. package/dist/core/BranchEvaluator.js.map +0 -1
  679. package/dist/core/DirectiveChainTracker.d.ts +0 -49
  680. package/dist/core/DirectiveChainTracker.d.ts.map +0 -1
  681. package/dist/core/DirectiveChainTracker.js +0 -117
  682. package/dist/core/DirectiveChainTracker.js.map +0 -1
  683. package/dist/core/Events.d.ts +0 -26
  684. package/dist/core/Events.d.ts.map +0 -1
  685. package/dist/core/Events.js +0 -137
  686. package/dist/core/Events.js.map +0 -1
  687. package/dist/core/Flow.d.ts +0 -183
  688. package/dist/core/Flow.d.ts.map +0 -1
  689. package/dist/core/Flow.js +0 -547
  690. package/dist/core/Flow.js.map +0 -1
  691. package/dist/core/FlowRouter.d.ts +0 -183
  692. package/dist/core/FlowRouter.d.ts.map +0 -1
  693. package/dist/core/FlowRouter.js +0 -1043
  694. package/dist/core/FlowRouter.js.map +0 -1
  695. package/dist/core/PersistenceManager.d.ts +0 -114
  696. package/dist/core/PersistenceManager.d.ts.map +0 -1
  697. package/dist/core/PersistenceManager.js +0 -332
  698. package/dist/core/PersistenceManager.js.map +0 -1
  699. package/dist/core/PromptComposer.d.ts +0 -47
  700. package/dist/core/PromptComposer.d.ts.map +0 -1
  701. package/dist/core/PromptComposer.js +0 -393
  702. package/dist/core/PromptComposer.js.map +0 -1
  703. package/dist/core/PromptSectionCache.d.ts +0 -48
  704. package/dist/core/PromptSectionCache.d.ts.map +0 -1
  705. package/dist/core/PromptSectionCache.js +0 -104
  706. package/dist/core/PromptSectionCache.js.map +0 -1
  707. package/dist/core/ResponseEngine.d.ts +0 -43
  708. package/dist/core/ResponseEngine.d.ts.map +0 -1
  709. package/dist/core/ResponseEngine.js +0 -231
  710. package/dist/core/ResponseEngine.js.map +0 -1
  711. package/dist/core/ResponseGenerationError.d.ts +0 -30
  712. package/dist/core/ResponseGenerationError.d.ts.map +0 -1
  713. package/dist/core/ResponseGenerationError.js +0 -31
  714. package/dist/core/ResponseGenerationError.js.map +0 -1
  715. package/dist/core/ResponseModal.d.ts +0 -305
  716. package/dist/core/ResponseModal.d.ts.map +0 -1
  717. package/dist/core/ResponseModal.js +0 -1410
  718. package/dist/core/ResponseModal.js.map +0 -1
  719. package/dist/core/ResponsePipeline.d.ts +0 -220
  720. package/dist/core/ResponsePipeline.d.ts.map +0 -1
  721. package/dist/core/ResponsePipeline.js +0 -1035
  722. package/dist/core/ResponsePipeline.js.map +0 -1
  723. package/dist/core/SessionFinalizer.d.ts +0 -34
  724. package/dist/core/SessionFinalizer.d.ts.map +0 -1
  725. package/dist/core/SessionFinalizer.js +0 -84
  726. package/dist/core/SessionFinalizer.js.map +0 -1
  727. package/dist/core/SessionManager.d.ts +0 -112
  728. package/dist/core/SessionManager.d.ts.map +0 -1
  729. package/dist/core/SessionManager.js +0 -301
  730. package/dist/core/SessionManager.js.map +0 -1
  731. package/dist/core/SignalCoordinator.d.ts +0 -103
  732. package/dist/core/SignalCoordinator.d.ts.map +0 -1
  733. package/dist/core/SignalCoordinator.js +0 -203
  734. package/dist/core/SignalCoordinator.js.map +0 -1
  735. package/dist/core/SignalEvaluator.d.ts +0 -86
  736. package/dist/core/SignalEvaluator.d.ts.map +0 -1
  737. package/dist/core/SignalEvaluator.js +0 -312
  738. package/dist/core/SignalEvaluator.js.map +0 -1
  739. package/dist/core/SignalProcessor.d.ts +0 -152
  740. package/dist/core/SignalProcessor.d.ts.map +0 -1
  741. package/dist/core/SignalProcessor.js +0 -498
  742. package/dist/core/SignalProcessor.js.map +0 -1
  743. package/dist/core/Step.d.ts +0 -184
  744. package/dist/core/Step.d.ts.map +0 -1
  745. package/dist/core/Step.js +0 -594
  746. package/dist/core/Step.js.map +0 -1
  747. package/dist/core/StepLifecycle.d.ts +0 -43
  748. package/dist/core/StepLifecycle.d.ts.map +0 -1
  749. package/dist/core/StepLifecycle.js +0 -176
  750. package/dist/core/StepLifecycle.js.map +0 -1
  751. package/dist/core/StreamingToolExecutor.d.ts +0 -142
  752. package/dist/core/StreamingToolExecutor.d.ts.map +0 -1
  753. package/dist/core/StreamingToolExecutor.js +0 -483
  754. package/dist/core/StreamingToolExecutor.js.map +0 -1
  755. package/dist/core/ToolLoopExecutor.d.ts +0 -133
  756. package/dist/core/ToolLoopExecutor.d.ts.map +0 -1
  757. package/dist/core/ToolLoopExecutor.js +0 -564
  758. package/dist/core/ToolLoopExecutor.js.map +0 -1
  759. package/dist/core/ToolManager.d.ts +0 -250
  760. package/dist/core/ToolManager.d.ts.map +0 -1
  761. package/dist/core/ToolManager.js +0 -1098
  762. package/dist/core/ToolManager.js.map +0 -1
  763. package/dist/core/createAgent.d.ts +0 -35
  764. package/dist/core/createAgent.d.ts.map +0 -1
  765. package/dist/core/createAgent.js +0 -36
  766. package/dist/core/createAgent.js.map +0 -1
  767. package/dist/core/flow-namespace.d.ts +0 -64
  768. package/dist/core/flow-namespace.d.ts.map +0 -1
  769. package/dist/core/flow-namespace.js +0 -179
  770. package/dist/core/flow-namespace.js.map +0 -1
  771. package/dist/core/toolGates.d.ts +0 -24
  772. package/dist/core/toolGates.d.ts.map +0 -1
  773. package/dist/core/toolGates.js +0 -49
  774. package/dist/core/toolGates.js.map +0 -1
  775. package/dist/types/persistence.d.ts +0 -254
  776. package/dist/types/persistence.d.ts.map +0 -1
  777. package/dist/types/persistence.js +0 -6
  778. package/dist/types/persistence.js.map +0 -1
  779. package/dist/types/prompt-cache.d.ts +0 -15
  780. package/dist/types/prompt-cache.d.ts.map +0 -1
  781. package/dist/types/prompt-cache.js +0 -5
  782. package/dist/types/prompt-cache.js.map +0 -1
  783. package/dist/types/signals.d.ts +0 -263
  784. package/dist/types/signals.d.ts.map +0 -1
  785. package/dist/types/signals.js +0 -10
  786. package/dist/types/signals.js.map +0 -1
  787. package/dist/types/template.d.ts +0 -84
  788. package/dist/types/template.d.ts.map +0 -1
  789. package/dist/types/template.js +0 -2
  790. package/dist/types/template.js.map +0 -1
  791. package/dist/utils/condition.d.ts +0 -63
  792. package/dist/utils/condition.d.ts.map +0 -1
  793. package/dist/utils/condition.js +0 -230
  794. package/dist/utils/condition.js.map +0 -1
  795. package/dist/utils/event.d.ts +0 -6
  796. package/dist/utils/event.d.ts.map +0 -1
  797. package/dist/utils/event.js +0 -17
  798. package/dist/utils/event.js.map +0 -1
  799. package/dist/utils/id.d.ts +0 -33
  800. package/dist/utils/id.d.ts.map +0 -1
  801. package/dist/utils/id.js +0 -77
  802. package/dist/utils/id.js.map +0 -1
  803. package/dist/utils/serialize.d.ts +0 -36
  804. package/dist/utils/serialize.d.ts.map +0 -1
  805. package/dist/utils/serialize.js +0 -72
  806. package/dist/utils/serialize.js.map +0 -1
  807. package/dist/utils/session.d.ts +0 -124
  808. package/dist/utils/session.d.ts.map +0 -1
  809. package/dist/utils/session.js +0 -379
  810. package/dist/utils/session.js.map +0 -1
  811. package/docs/concepts/directives.md +0 -369
  812. package/docs/reference/adapters.md +0 -543
  813. package/docs/reference/create-agent.md +0 -216
  814. package/docs/reference/directive.md +0 -242
  815. package/docs/reference/signals.md +0 -368
  816. package/examples/02-data-extraction.ts +0 -90
  817. package/examples/05-branching.ts +0 -140
  818. package/examples/06-flow-control.ts +0 -103
  819. package/examples/08-persistence.ts +0 -98
  820. package/examples/09-signals.ts +0 -144
  821. package/src/adapters/MemoryAdapter.ts +0 -281
  822. package/src/adapters/MongoAdapter.ts +0 -341
  823. package/src/adapters/OpenSearchAdapter.ts +0 -693
  824. package/src/adapters/PostgreSQLAdapter.ts +0 -487
  825. package/src/adapters/PrismaAdapter.ts +0 -617
  826. package/src/adapters/RedisAdapter.ts +0 -439
  827. package/src/adapters/SQLiteAdapter.ts +0 -496
  828. package/src/adapters/index.ts +0 -43
  829. package/src/adapters/sessionRow.ts +0 -57
  830. package/src/constants/index.ts +0 -2
  831. package/src/core/AutoChainExecutor.ts +0 -397
  832. package/src/core/BranchEvaluator.ts +0 -161
  833. package/src/core/DirectiveChainTracker.ts +0 -144
  834. package/src/core/Events.ts +0 -164
  835. package/src/core/Flow.ts +0 -665
  836. package/src/core/FlowRouter.ts +0 -1540
  837. package/src/core/PersistenceManager.ts +0 -446
  838. package/src/core/PromptComposer.ts +0 -448
  839. package/src/core/PromptSectionCache.ts +0 -125
  840. package/src/core/ResponseEngine.ts +0 -338
  841. package/src/core/ResponseGenerationError.ts +0 -53
  842. package/src/core/ResponseModal.ts +0 -1902
  843. package/src/core/ResponsePipeline.ts +0 -1404
  844. package/src/core/SessionFinalizer.ts +0 -108
  845. package/src/core/SessionManager.ts +0 -372
  846. package/src/core/SignalCoordinator.ts +0 -263
  847. package/src/core/SignalEvaluator.ts +0 -404
  848. package/src/core/SignalProcessor.ts +0 -663
  849. package/src/core/Step.ts +0 -782
  850. package/src/core/StepLifecycle.ts +0 -242
  851. package/src/core/StreamingToolExecutor.ts +0 -609
  852. package/src/core/ToolLoopExecutor.ts +0 -749
  853. package/src/core/ToolManager.ts +0 -1379
  854. package/src/core/createAgent.ts +0 -40
  855. package/src/core/flow-namespace.ts +0 -227
  856. package/src/core/toolGates.ts +0 -72
  857. package/src/types/persistence.ts +0 -303
  858. package/src/types/prompt-cache.ts +0 -17
  859. package/src/types/signals.ts +0 -338
  860. package/src/types/template.ts +0 -98
  861. package/src/utils/condition.ts +0 -296
  862. package/src/utils/event.ts +0 -16
  863. package/src/utils/id.ts +0 -91
  864. package/src/utils/serialize.ts +0 -86
  865. package/src/utils/session.ts +0 -501
@@ -1,429 +1,167 @@
1
1
  /**
2
- * Agent-related type definitions
2
+ * Agent options and the one entry point: `turn`.
3
3
  */
4
4
 
5
- import type { AgentStructuredResponse, AiProvider } from "./ai.js";
5
+ import type { AiProvider, TokenUsage } from "./ai.js";
6
+ import type {
7
+ ActionMap,
8
+ ConditionMap,
9
+ EventMap,
10
+ FieldDefs,
11
+ Flow,
12
+ Instruction,
13
+ Template,
14
+ } from "./flow.js";
15
+ import type { History } from "./history.js";
16
+ import type { Run, Session, StepOutcome, StepOutcomeCode } from "./session.js";
6
17
  import type { Tool } from "./tool.js";
7
- import type { Directive, FlowOptions, StepRef, StoppedReason } from "./flow.js";
8
- import type { PersistenceConfig } from "./persistence.js";
9
- import type { SessionState } from "./session.js";
10
- import type { Signal, SignalFiring } from "./signals.js";
11
- import type { StructuredSchema } from "./schema.js";
12
- import type { Event } from "./history.js";
13
- import type { Template } from "./template.js";
14
- import type { ConditionWhen, ConditionIf } from "./flow.js";
15
- import type { PromptCacheConfig } from "./prompt-cache.js";
16
18
 
17
- /**
18
- * Context passed to every lifecycle hook (flow and step).
19
- * Carries the current state and a `dispatch` method for emitting directives
20
- * onto the per-turn directive bus.
21
- */
22
- export interface HookContext<TContext = unknown, TData = unknown> {
23
- /** Agent-level context. */
24
- context: TContext;
25
- /** Collected data (partial — fields may be undefined). */
26
- data: Partial<TData>;
27
- /** Full session state. */
28
- session: SessionState<TData>;
29
- /** Conversation history as events. */
30
- history: Event[];
31
- /**
32
- * Emit a directive onto the per-turn directive bus.
33
- * Multiple `dispatch()` calls are allowed; they merge via Algorithm 4
34
- * along with any directive returned from the hook itself.
35
- */
36
- dispatch(directive: Directive<TContext, TData>): void;
37
- }
19
+ /** Returns "now". Tests pass a fake clock. */
20
+ export type Clock = () => Date;
21
+
22
+ /** Moves a time forward to the next working moment. Snaps, never clamps. */
23
+ export type BusinessHours<C = unknown> = (at: Date, ctx: { context: C }) => Date;
38
24
 
39
25
  /**
40
- * Reason why a flow was exited, passed to `hooks.onExit`.
26
+ * The one speaker that is not a step: answers when no run holds the floor.
27
+ * `'silent'` mutes it.
41
28
  */
42
- export type ExitReason = 'completed' | 'goto_flow' | 'goto_step' | 'aborted';
29
+ export type Idle<C = unknown, D = unknown> =
30
+ | { prompt: Template; tools?: string[]; instructions?: Instruction<C, D>[] }
31
+ | "silent";
43
32
 
44
33
  /**
45
- * Agent-level compaction configuration.
46
- * Unlike CompactionOptions, this does not require a `provider` since the agent already has one.
34
+ * Agent-level compaction configuration. `provider` comes from the agent.
47
35
  */
48
36
  export interface AgentCompactionConfig {
49
- /** Maximum token budget for the conversation */
37
+ /** Maximum token budget for the conversation. */
50
38
  maxTokens: number;
51
- /**
52
- * Threshold ratio (0–1) at which to trigger compaction.
53
- * Must be between 0.5 and 0.95.
54
- * @default 0.8
55
- */
39
+ /** Ratio (0.5–0.95) at which to compact. Default 0.8. */
56
40
  compactionThreshold?: number;
57
- /**
58
- * Number of recent messages to always preserve unchanged.
59
- * Must be >= 2.
60
- * @default 4
61
- */
41
+ /** Recent messages always kept unchanged (>= 2). Default 4. */
62
42
  preserveRecentCount?: number;
63
- /**
64
- * Maximum characters per tool result before truncation.
65
- * Must be > 0.
66
- * @default 5000
67
- */
43
+ /** Characters per tool result before truncation (> 0). Default 5000. */
68
44
  maxToolResultChars?: number;
69
- /**
70
- * Whether compaction is enabled.
71
- * @default true when config is provided
72
- */
45
+ /** Default true when the config is present. */
73
46
  enabled?: boolean;
74
47
  }
75
48
 
76
- /**
77
- * Context lifecycle hooks for managing step persistence
78
- */
79
- export interface ContextLifecycleHooks<TContext = unknown, TData = unknown> {
80
- /**
81
- * Called before respond() to get fresh context
82
- * Useful for loading context from a database or cache
83
- */
84
- beforeRespond?: (currentContext: TContext) => Promise<TContext> | TContext;
85
-
86
- /**
87
- * Called after context is updated via updateContext() or tool execution
88
- * Useful for persisting context to a database or cache
89
- */
90
- onContextUpdate?: (
91
- newContext: TContext,
92
- previousContext: TContext
93
- ) => Promise<void> | void;
94
-
95
- /**
96
- * Called after collected data is updated (from AI response or tool execution)
97
- * Useful for validation, enrichment, or persistence of collected data
98
- * Return modified collected data or the same data to keep it unchanged
99
- *
100
- * Note: This hook now works with agent-level data collection (TData type)
101
- */
102
- onDataUpdate?: (
103
- data: Partial<TData>,
104
- previousCollected: Partial<TData>
105
- ) => Partial<TData> | Promise<Partial<TData>>;
106
- }
107
-
108
- /**
109
- * Context provider function for always-fresh context
110
- * Alternative to static context, useful for loading from external sources
111
- */
112
- export type ContextProvider<TContext = unknown> = () =>
113
- | Promise<TContext>
114
- | TContext;
115
-
116
- /**
117
- * Options for creating an Agent
118
- */
119
- export interface AgentOptions<TContext = unknown, TData = unknown> {
120
- /** Display name of the agent */
49
+ export interface AgentOptions<C = unknown, D = unknown> {
121
50
  name: string;
122
- /** The agent's primary goal or objective */
123
- goal?: string;
124
- /**
125
- * Agent persona — covers role, tone, self-concept, and communication style.
126
- * Rendered into the system prompt as "who you are and how you communicate."
127
- */
128
- persona?: Template<TContext>;
129
- /**
130
- * Hard bound on session.history length (default: 400). The oldest entries
131
- * are trimmed — never splitting an assistant/tool pair — when the bound is
132
- * exceeded and no compaction strategy shrank the history first. Set 0 to
133
- * disable bounding entirely.
134
- */
135
- maxHistoryMessages?: number;
136
- /** Enable debug logging */
137
- debug?: boolean;
138
- /** Default context data available to the agent */
139
- context?: TContext;
140
- /** Optional current session for convenience methods */
141
- session?: SessionState;
142
- /** Optional sessionId to load or create - managed by SessionManager */
143
- sessionId?: string;
144
- /** Context provider function for always-fresh context (alternative to static context) */
145
- contextProvider?: ContextProvider<TContext>;
146
- /** Lifecycle hooks for context management */
147
- hooks?: ContextLifecycleHooks<TContext, TData>;
148
- /** AI provider for generating responses */
51
+ /** What the agent is for. */
52
+ goal?: Template;
53
+ /** Who the agent is and how it talks. */
54
+ persona?: Template;
149
55
  provider: AiProvider;
150
- /** Initial terms for domain glossary */
151
- terms?: Term<TContext, TData>[];
152
- /**
153
- * Instructions for agent behavior — unified primitive.
154
- * Each instruction has a `kind`: `'must'` (rule), `'never'` (prohibition), or `'should'` (default, nudge).
155
- */
156
- instructions?: Instruction<TContext, TData>[];
157
- /** Global tools available to all flows */
158
- tools?: Tool<TContext, TData, unknown>[];
159
- /** Initial flows (will be instantiated as Flow objects) */
160
- flows?: FlowOptions<TContext, TData>[];
161
- /** Optional persistence configuration for auto-saving sessions and messages */
162
- persistence?: PersistenceConfig<TData>;
163
- /** Knowledge base containing any JSON structure the AI should know */
56
+ /** Every collectable field, authored once. */
57
+ fields: FieldDefs;
58
+ flows?: Flow<C, D>[];
59
+ /** Host actions `do` steps may name. */
60
+ actions?: ActionMap<C, D>;
61
+ /** Host events triggers and waits may name. */
62
+ events?: EventMap;
63
+ /** Host conditions JSON predicates may name. */
64
+ conditions?: ConditionMap<C, D>;
65
+ tools?: Tool<C, D>[];
66
+ instructions?: Instruction<C, D>[];
67
+ /** Any JSON the AI should know. */
164
68
  knowledgeBase?: Record<string, unknown>;
165
- /** Agent-level data schema defining the complete data structure for collection */
166
- schema?: StructuredSchema;
167
- /** Initial data to pre-populate when creating the agent */
168
- initialData?: Partial<TData>;
169
- /**
170
- * Margin (0-100) the best alternative flow must exceed the current flow's score
171
- * by before the agent switches. Higher values make the agent "stickier" to the
172
- * current flow. Set to 0 to switch whenever any flow scores higher.
173
- * @default 15
174
- */
175
- flowSwitchMargin?: number;
176
- /**
177
- /**
178
- * Maximum number of consecutive auto-steps (`auto: true`) that may execute
179
- * within a single turn before the pipeline throws `FlowConfigurationError`.
180
- * Guards against infinite loops in auto-step chains.
181
- *
182
- * The default (10) is applied at Agent construction time, not on this type.
183
- *
184
- * @default 10
185
- */
186
- maxAutoStepsPerTurn?: number;
187
- /**
188
- * Maximum number of chained directives allowed within a single turn before
189
- * the pipeline throws `FlowConfigurationError`. Guards against infinite
190
- * redirection loops (e.g., goTo → onEnter emits goTo → onComplete emits goTo → …).
191
- *
192
- * Chain breakers (`abort` mid-chain) stop counting and apply immediately.
193
- *
194
- * @default 10
195
- */
196
- maxDirectiveChain?: number;
197
- /**
198
- * Maximum number of tool loop iterations allowed within a single response
199
- * generation before the pipeline stops executing further tool calls.
200
- * Guards against runaway recursive tool calling. An explicit `0` is honored
201
- * (no tool loops). Applies to both `respond()` and streaming paths.
202
- *
203
- * @default 5
204
- */
69
+ idle?: Idle<C, D>;
70
+ clock?: Clock;
71
+ businessHours?: BusinessHours<C>;
72
+ /** Tool rounds per speak call. Default 5; 0 disables tools. */
205
73
  maxToolLoops?: number;
206
- /**
207
- * Optional compaction configuration for managing conversation history size.
208
- * When provided, the agent will validate the options and make them available
209
- * for use by the SessionManager/CompactionEngine.
210
- */
74
+ /** Trim the history both calls see, once per turn, when it grows past `maxTokens`. */
211
75
  compaction?: AgentCompactionConfig;
212
- /**
213
- * Optional prompt cache configuration for controlling section memoization behavior.
214
- * When provided, controls whether prompt sections are cached across turns.
215
- * @default { enabled: true }
216
- */
217
- promptCache?: PromptCacheConfig;
218
- /**
219
- * Reserved for future router strategies. v2.0: only `'ai'` is implemented.
220
- * Future v2.x widens to `'embedding' | 'rules'` etc.
221
- *
222
- * Setting any non-`'ai'` value in v2.0 throws `NotImplementedError` at
223
- * `Agent` construction time. This is intentional — it surfaces forward-compat
224
- * misconfiguration loudly. Future v2.x widens the accepted union without
225
- * breaking the throw site (the new value just stops throwing).
226
- *
227
- * @default 'ai'
228
- */
229
- routerMode?: 'ai';
230
-
231
- /**
232
- * Signals: typed event detectors that run around the LLM turn.
233
- * Empty array or undefined → signal phases are no-ops, zero cost.
234
- */
235
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
236
- signals?: Signal<TContext, TData, any>[];
237
-
238
- /**
239
- * Maximum signals per batched classifier call. Default 10.
240
- * If more signals are eligible after gating, they are split into
241
- * parallel batches of this size.
242
- */
243
- signalBatchSize?: number;
244
- }
245
-
246
- /**
247
- * A term in the domain glossary
248
- */
249
- export interface Term<TContext = unknown, TData = unknown> {
250
- /** Name of the term */
251
- name: Template<TContext, TData>;
252
- /** Description/definition of the term */
253
- description: Template<TContext, TData>;
254
- /** Alternative names or synonyms */
255
- synonyms?: Template<TContext, TData>[];
256
- }
257
-
258
- /**
259
- * Instruction — unified behavioral primitive.
260
- * Collapses v1's `Guideline` (scoped nudge), `Rule` (absolute must-do),
261
- * and `Prohibition` (absolute must-not) into a single type with a `kind` discriminator.
262
- *
263
- * @example
264
- * // A "should" (default) — same as a v1 Guideline
265
- * { prompt: "Prefer short answers", when: "User asks a simple question" }
266
- *
267
- * // A "must" — same as a v1 Rule
268
- * { kind: 'must', prompt: "Always validate email format before proceeding" }
269
- *
270
- * // A "never" — same as a v1 Prohibition
271
- * { kind: 'never', prompt: "Promise delivery dates you cannot guarantee" }
272
- */
273
- export interface Instruction<TContext = unknown, TData = unknown> {
274
- /** Unique identifier (auto-generated if omitted). */
275
- id?: string;
276
- /**
277
- * Instruction severity.
278
- * - `'must'` — absolute rule the agent must always follow.
279
- * - `'never'` — absolute prohibition the agent must never do.
280
- * - `'should'`— behavioral nudge, active when conditions match.
281
- *
282
- * @default 'should'
283
- */
284
- kind?: 'must' | 'never' | 'should';
285
- /**
286
- * AI-evaluated activation condition. Non-`!` strings are OR alternatives;
287
- * `!` strings are OR exclusions where any match inhibits the instruction.
288
- * Undefined = always active. Functions are NOT allowed here — use `if`.
289
- */
290
- when?: ConditionWhen;
291
- /**
292
- * Code-evaluated activation condition. Function or array of functions (AND semantics).
293
- * Free to evaluate. When both `when` and `if` are set, `if` runs first;
294
- * `when` is only evaluated when `if` passes.
295
- */
296
- if?: ConditionIf<TContext, TData>;
297
- /** Behavioral instruction text rendered into the prompt. */
298
- prompt: Template<TContext, TData>;
299
- /** Whether this instruction is currently enabled. @default true */
300
- enabled?: boolean;
301
- /** Tags for organizing and filtering instructions. */
302
- tags?: string[];
303
- /** Additional metadata. */
304
- metadata?: Record<string, unknown>;
305
- }
306
-
307
- /**
308
- * Carries the three scope buckets through the prompt pipeline so the composer
309
- * can render scope captions correctly.
310
- */
311
- export interface ScopedInstructions<TContext = unknown, TData = unknown> {
312
- /** Agent-level — rendered with caption `[Always]`. */
313
- global: Instruction<TContext, TData>[];
314
- /**
315
- * Flow-level — rendered with caption `[In: <FlowTitle>]`.
316
- * `flowTitle` is captured here so the composer doesn't need a Flow reference.
317
- */
318
- flow?: { flowTitle: string; items: Instruction<TContext, TData>[] };
319
- /**
320
- * Step-level — rendered with caption `[Step: <stepId>]`.
321
- * `stepId` is captured here for the same reason.
322
- */
323
- step?: { stepId: string; items: Instruction<TContext, TData>[] };
324
- }
325
-
326
- /**
327
- * Observability record for an instruction that was rendered into a turn's prompt.
328
- * Textual `when` conditions are included in the prompt for the AI to evaluate.
329
- * Deterministic — derived from rendering, not from LLM self-report.
330
- */
331
- export interface AppliedInstruction {
332
- /** The instruction's id */
333
- id: string;
334
- /** Which scope the instruction originated from */
335
- scope: 'global' | 'flow' | 'step';
336
- /** FlowTitle for `scope === 'flow'`, stepId for `scope === 'step'`, undefined for `scope === 'global'`. */
337
- scopeRef?: string;
338
- }
339
-
340
- /** A flow that left its active position during a turn. */
341
- export interface EndedFlow {
342
- flowId: string;
343
- title?: string;
344
- reason: StoppedReason;
76
+ debug?: boolean;
345
77
  }
346
78
 
347
- export interface AgentResponse<TData = Record<string, unknown>> {
348
- message: string;
349
- session?: SessionState<TData>;
350
- toolCalls?: Array<{ toolName: string; arguments: Record<string, unknown> }>;
351
- isFlowComplete?: boolean;
352
- /** Steps executed in this response (for multi-step execution) */
353
- executedSteps?: StepRef[];
354
- /** Why execution stopped (for multi-step execution) */
355
- stoppedReason?: StoppedReason;
356
- /**
357
- * Instructions rendered into this turn's prompt after code-evaluated gates passed.
358
- * Textual `when` conditions remain in the prompt for the AI to evaluate.
359
- * Deterministic — derived from rendering, not from LLM self-report.
360
- */
361
- appliedInstructions?: AppliedInstruction[];
362
- /**
363
- * Signals that fired during this turn (both pre- and post-phases), in fire order.
364
- * Mirrors the observability framing of `executedSteps` and `appliedInstructions`.
365
- */
366
- triggeredSignals?: SignalFiring<unknown, TData>[];
367
- /**
368
- * Provider-reported usage for this turn's primary generation (routing and
369
- * extraction sub-calls are not included).
370
- */
371
- metadata?: { tokensUsed?: number };
372
- /**
373
- * Flows that LEFT their active position this turn — completions, redirects,
374
- * resets. planTurn knows these internally; surfaced so consumers stop
375
- * re-deriving them from executedSteps + session cursor inspection.
376
- */
377
- endedFlows?: EndedFlow[];
79
+ // ── turn() input ────────────────────────────────────────────────────────
80
+
81
+ /** The host's reason the assistant cannot speak. Zero calls unless `understand: true`. */
82
+ export type Silenced = string | { reason: string; understand?: boolean };
83
+
84
+ type ContextField<C> = undefined extends C ? { context?: C } : { context: C };
85
+
86
+ export type TurnBase<C = unknown, D = unknown> = ContextField<C> & {
87
+ sessionId: string;
88
+ /** Absent on a first turn. A wake never creates a session. */
89
+ session?: Session<D>;
90
+ /**
91
+ * The conversation BEFORE this input. Pass it on every input kind, wakes included.
92
+ * Leave out the message this turn carries: both calls quote it on their own, so a
93
+ * history that ends with it makes the model read it twice.
94
+ */
95
+ history?: History;
96
+ silenced?: Silenced;
97
+ /** Host anchors this session belongs to, e.g. `{ lead: { key: 'lead:456', lastInboundAt } }`. */
98
+ anchors?: Record<string, { key: string; lastInboundAt?: string }>;
99
+ /** Claims held in the lead's other sessions: `dedupeKey → at`, and live `${flowId}:${anchor}` pairs. */
100
+ claims?: { held: Record<string, string>; active: string[] };
101
+ };
102
+
103
+ export type TurnKind =
104
+ /** The lead wrote. Hosts pass the channel id and receipt time. */
105
+ | { message: string; id?: string; at?: string }
106
+ /** A scheduled wake fired; the key came from `schedule[]`. */
107
+ | { wake: string }
108
+ /** Something happened in the host. */
109
+ | { event: string; payload?: unknown; key: string; hop?: number }
110
+ /** Start a flow by hand. */
111
+ | { start: { flow: string; input?: unknown; key: string; hop?: number } };
112
+
113
+ export type TurnInput<C = unknown, D = unknown> = TurnBase<C, D> & TurnKind;
114
+
115
+ /** A saved session and the host inputs a turn on it would carry: what `pendingWakes` reads. */
116
+ export type PendingWakesInput<C = unknown, D = unknown> = ContextField<C> & {
117
+ session: Session<D>;
118
+ anchors?: TurnBase<C, D>["anchors"];
119
+ claims?: TurnBase<C, D>["claims"];
120
+ };
121
+
122
+ // ── turn() result ───────────────────────────────────────────────────────
123
+
124
+ export interface OutboundMessage {
125
+ text: string;
126
+ /** `'ai'` was phrased by the model; `'verbatim'` came from a `say` step. */
127
+ kind: "ai" | "verbatim";
128
+ media?: { slug: string };
129
+ /** Delay before sending, from a short `wait` that preceded it. */
130
+ afterMs: number;
131
+ /** `${runId}:${stepId}:${visit}`; the same on a replay. */
132
+ key: string;
133
+ runId?: string;
134
+ stepId?: string;
378
135
  }
379
136
 
380
- export interface AgentResponseStreamChunk<TData = Record<string, unknown>> {
381
- delta: string;
382
- accumulated: string;
383
- done: boolean;
384
- session?: SessionState<TData>;
385
- toolCalls?: Array<{ toolName: string; arguments: Record<string, unknown> }>;
386
- isFlowComplete?: boolean;
387
- /** Steps executed in this response (for multi-step execution) */
388
- executedSteps?: StepRef[];
389
- /** Why execution stopped (for multi-step execution) */
390
- stoppedReason?: StoppedReason;
391
- metadata?: {
392
- model?: string;
393
- tokensUsed?: number;
394
- finishReason?: string;
395
- [key: string]: unknown;
396
- };
397
- structured?: AgentStructuredResponse;
398
- error?: Error;
399
- /**
400
- * Instructions whose conditions passed and were rendered into this turn's prompt.
401
- * Populated on the final (`done: true`) chunk only.
402
- */
403
- appliedInstructions?: AppliedInstruction[];
404
- /**
405
- * Signals that fired during this turn (both pre- and post-phases), in fire order.
406
- * Mirrors the observability framing of `executedSteps` and `appliedInstructions`.
407
- * Populated on the final (`done: true`) chunk only.
408
- */
409
- triggeredSignals?: SignalFiring<unknown, TData>[];
137
+ /** A wake to enqueue, keyed by `key` (encode it as a queue job id: BullMQ refuses a `:`); at fire time call `turn({ wake: key })`. */
138
+ export interface ScheduleEntry {
139
+ key: string;
140
+ at: Date;
141
+ /** An earlier wake this one supersedes; removing it is best effort. */
142
+ replaces?: string;
410
143
  }
411
144
 
412
- /**
413
- * Validation error for data validation
414
- */
415
- export interface ValidationError {
416
- field: string;
417
- value: unknown;
418
- message: string;
419
- schemaPath: string;
145
+ export type EndReason = "end" | "flow" | "reset" | "skipped" | "failed" | "replaced";
146
+
147
+ export interface TurnResult<D = unknown> {
148
+ /** Version unchanged; the host bumps it on save. */
149
+ session: Session<D>;
150
+ /** False: save nothing, send nothing. */
151
+ changed: boolean;
152
+ messages: OutboundMessage[];
153
+ schedule: ScheduleEntry[];
154
+ outcomes: StepOutcome[];
155
+ started: Array<{ runId: string; flowId: string; anchor: string; dedupeKey: string }>;
156
+ ended: Array<Run & { reason: EndReason }>;
157
+ /** Triggers that matched but did not start a run, with the reason. */
158
+ skipped: Array<{ flowId: string; anchor: string; triggerKey: string; code: StepOutcomeCode; message: string }>;
159
+ llmCalls: number;
160
+ /**
161
+ * What those calls cost, added up. Absent when the turn spent none, or when
162
+ * the provider reported no counts.
163
+ */
164
+ usage?: TokenUsage;
420
165
  }
421
166
 
422
- /**
423
- * Result of data validation
424
- */
425
- export interface ValidationResult {
426
- valid: boolean;
427
- errors: ValidationError[];
428
- warnings: ValidationError[];
429
- }
167
+ export type TurnStreamChunk<D = unknown> = { delta: string } | { done: true; result: TurnResult<D> };
package/src/types/ai.ts CHANGED
@@ -23,8 +23,13 @@ export interface ReasoningConfig {
23
23
  * Input for AI message generation
24
24
  */
25
25
  export interface GenerateMessageInput<TContext = unknown> {
26
- /** The constructed prompt */
26
+ /** The constructed prompt, sent as the final user turn. */
27
27
  prompt: string;
28
+ /**
29
+ * The part of the prompt that is the same every turn, sent as a leading
30
+ * system message. Split out so providers can cache it — see `stablePrefix`.
31
+ */
32
+ system?: string;
28
33
  /** Interaction history */
29
34
  history: HistoryItem[];
30
35
  /** Context data */
@@ -72,6 +77,21 @@ export interface AgentStructuredResponse extends Record<string, unknown> {
72
77
  }>;
73
78
  /** Additional reasoning or internal thoughts (optional) */
74
79
  reasoning?: string;
80
+ /** OpenRouter's normalized reasoning payload, when the provider sent one. */
81
+ reasoningDetails?: unknown[];
82
+ }
83
+
84
+ /**
85
+ * What a call cost, as the provider counted it. A turn spends several calls,
86
+ * so `TurnResult.usage` is their sum. Absent when no provider reported any.
87
+ */
88
+ export interface TokenUsage {
89
+ /** Tokens read, the cached ones included. */
90
+ promptTokens: number;
91
+ /** Tokens written. Thinking tokens count here. */
92
+ completionTokens: number;
93
+ /** The part of `promptTokens` served from a cache, billed far cheaper. */
94
+ cachedInputTokens: number;
75
95
  }
76
96
 
77
97
  /**
@@ -88,6 +108,12 @@ export interface GenerateMessageOutput<TStructured = AgentStructuredResponse> {
88
108
  tokensUsed?: number;
89
109
  /** Finish reason */
90
110
  finishReason?: string;
111
+ /** Tokens in the prompt, as the provider counted them. */
112
+ promptTokens?: number;
113
+ /** Tokens generated. */
114
+ completionTokens?: number;
115
+ /** The part of `promptTokens` the provider served from its cache, billed far cheaper. */
116
+ cachedInputTokens?: number;
91
117
  /** Additional provider-specific data */
92
118
  [key: string]: unknown;
93
119
  };
@@ -115,6 +141,12 @@ export interface GenerateMessageStreamChunk<
115
141
  tokensUsed?: number;
116
142
  /** Finish reason */
117
143
  finishReason?: string;
144
+ /** Tokens in the prompt, as the provider counted them. */
145
+ promptTokens?: number;
146
+ /** Tokens generated. */
147
+ completionTokens?: number;
148
+ /** The part of `promptTokens` the provider served from its cache, billed far cheaper. */
149
+ cachedInputTokens?: number;
118
150
  /** Additional provider-specific data */
119
151
  [key: string]: unknown;
120
152
  };
@@ -2,7 +2,7 @@
2
2
  * Context compaction types for managing conversation history size
3
3
  */
4
4
 
5
- import type { AiProvider } from "./ai.js";
5
+ import type { AiProvider, TokenUsage } from "./ai.js";
6
6
  import type { HistoryItem } from "./history.js";
7
7
 
8
8
  /**
@@ -49,4 +49,6 @@ export interface CompactionResult {
49
49
  messagesCompacted: number;
50
50
  /** Summary text (if auto-compact was used) */
51
51
  summary?: string;
52
+ /** What the summarising call cost, when one was made and counted. */
53
+ usage?: TokenUsage;
52
54
  }