@falai/agent 0.1.0-alpha2

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 (499) hide show
  1. package/README.md +797 -0
  2. package/dist/cjs/package.json +1 -0
  3. package/dist/cjs/src/adapters/MemoryAdapter.d.ts +47 -0
  4. package/dist/cjs/src/adapters/MemoryAdapter.d.ts.map +1 -0
  5. package/dist/cjs/src/adapters/MemoryAdapter.js +202 -0
  6. package/dist/cjs/src/adapters/MemoryAdapter.js.map +1 -0
  7. package/dist/cjs/src/adapters/MongoAdapter.d.ts +97 -0
  8. package/dist/cjs/src/adapters/MongoAdapter.d.ts.map +1 -0
  9. package/dist/cjs/src/adapters/MongoAdapter.js +168 -0
  10. package/dist/cjs/src/adapters/MongoAdapter.js.map +1 -0
  11. package/dist/cjs/src/adapters/OpenSearchAdapter.d.ts +169 -0
  12. package/dist/cjs/src/adapters/OpenSearchAdapter.d.ts.map +1 -0
  13. package/dist/cjs/src/adapters/OpenSearchAdapter.js +458 -0
  14. package/dist/cjs/src/adapters/OpenSearchAdapter.js.map +1 -0
  15. package/dist/cjs/src/adapters/PostgreSQLAdapter.d.ts +71 -0
  16. package/dist/cjs/src/adapters/PostgreSQLAdapter.d.ts.map +1 -0
  17. package/dist/cjs/src/adapters/PostgreSQLAdapter.js +260 -0
  18. package/dist/cjs/src/adapters/PostgreSQLAdapter.js.map +1 -0
  19. package/dist/cjs/src/adapters/PrismaAdapter.d.ts +115 -0
  20. package/dist/cjs/src/adapters/PrismaAdapter.d.ts.map +1 -0
  21. package/dist/cjs/src/adapters/PrismaAdapter.js +366 -0
  22. package/dist/cjs/src/adapters/PrismaAdapter.js.map +1 -0
  23. package/dist/cjs/src/adapters/RedisAdapter.d.ts +71 -0
  24. package/dist/cjs/src/adapters/RedisAdapter.d.ts.map +1 -0
  25. package/dist/cjs/src/adapters/RedisAdapter.js +231 -0
  26. package/dist/cjs/src/adapters/RedisAdapter.js.map +1 -0
  27. package/dist/cjs/src/adapters/SQLiteAdapter.d.ts +69 -0
  28. package/dist/cjs/src/adapters/SQLiteAdapter.d.ts.map +1 -0
  29. package/dist/cjs/src/adapters/SQLiteAdapter.js +312 -0
  30. package/dist/cjs/src/adapters/SQLiteAdapter.js.map +1 -0
  31. package/dist/cjs/src/adapters/index.d.ts +17 -0
  32. package/dist/cjs/src/adapters/index.d.ts.map +1 -0
  33. package/dist/cjs/src/adapters/index.js +21 -0
  34. package/dist/cjs/src/adapters/index.js.map +1 -0
  35. package/dist/cjs/src/constants/index.d.ts +10 -0
  36. package/dist/cjs/src/constants/index.d.ts.map +1 -0
  37. package/dist/cjs/src/constants/index.js +13 -0
  38. package/dist/cjs/src/constants/index.js.map +1 -0
  39. package/dist/cjs/src/core/Agent.d.ts +232 -0
  40. package/dist/cjs/src/core/Agent.d.ts.map +1 -0
  41. package/dist/cjs/src/core/Agent.js +741 -0
  42. package/dist/cjs/src/core/Agent.js.map +1 -0
  43. package/dist/cjs/src/core/Events.d.ts +26 -0
  44. package/dist/cjs/src/core/Events.d.ts.map +1 -0
  45. package/dist/cjs/src/core/Events.js +144 -0
  46. package/dist/cjs/src/core/Events.js.map +1 -0
  47. package/dist/cjs/src/core/PersistenceManager.d.ts +98 -0
  48. package/dist/cjs/src/core/PersistenceManager.d.ts.map +1 -0
  49. package/dist/cjs/src/core/PersistenceManager.js +261 -0
  50. package/dist/cjs/src/core/PersistenceManager.js.map +1 -0
  51. package/dist/cjs/src/core/PromptComposer.d.ts +27 -0
  52. package/dist/cjs/src/core/PromptComposer.d.ts.map +1 -0
  53. package/dist/cjs/src/core/PromptComposer.js +194 -0
  54. package/dist/cjs/src/core/PromptComposer.js.map +1 -0
  55. package/dist/cjs/src/core/ResponseEngine.d.ts +32 -0
  56. package/dist/cjs/src/core/ResponseEngine.d.ts.map +1 -0
  57. package/dist/cjs/src/core/ResponseEngine.js +202 -0
  58. package/dist/cjs/src/core/ResponseEngine.js.map +1 -0
  59. package/dist/cjs/src/core/ResponseModal.d.ts +222 -0
  60. package/dist/cjs/src/core/ResponseModal.d.ts.map +1 -0
  61. package/dist/cjs/src/core/ResponseModal.js +1588 -0
  62. package/dist/cjs/src/core/ResponseModal.js.map +1 -0
  63. package/dist/cjs/src/core/ResponsePipeline.d.ts +175 -0
  64. package/dist/cjs/src/core/ResponsePipeline.d.ts.map +1 -0
  65. package/dist/cjs/src/core/ResponsePipeline.js +549 -0
  66. package/dist/cjs/src/core/ResponsePipeline.js.map +1 -0
  67. package/dist/cjs/src/core/Route.d.ts +181 -0
  68. package/dist/cjs/src/core/Route.d.ts.map +1 -0
  69. package/dist/cjs/src/core/Route.js +541 -0
  70. package/dist/cjs/src/core/Route.js.map +1 -0
  71. package/dist/cjs/src/core/RoutingEngine.d.ts +159 -0
  72. package/dist/cjs/src/core/RoutingEngine.d.ts.map +1 -0
  73. package/dist/cjs/src/core/RoutingEngine.js +961 -0
  74. package/dist/cjs/src/core/RoutingEngine.js.map +1 -0
  75. package/dist/cjs/src/core/SessionManager.d.ts +94 -0
  76. package/dist/cjs/src/core/SessionManager.d.ts.map +1 -0
  77. package/dist/cjs/src/core/SessionManager.js +239 -0
  78. package/dist/cjs/src/core/SessionManager.js.map +1 -0
  79. package/dist/cjs/src/core/Step.d.ts +170 -0
  80. package/dist/cjs/src/core/Step.d.ts.map +1 -0
  81. package/dist/cjs/src/core/Step.js +448 -0
  82. package/dist/cjs/src/core/Step.js.map +1 -0
  83. package/dist/cjs/src/core/ToolManager.d.ts +234 -0
  84. package/dist/cjs/src/core/ToolManager.d.ts.map +1 -0
  85. package/dist/cjs/src/core/ToolManager.js +1117 -0
  86. package/dist/cjs/src/core/ToolManager.js.map +1 -0
  87. package/dist/cjs/src/index.d.ts +44 -0
  88. package/dist/cjs/src/index.d.ts.map +1 -0
  89. package/dist/cjs/src/index.js +88 -0
  90. package/dist/cjs/src/index.js.map +1 -0
  91. package/dist/cjs/src/providers/AnthropicProvider.d.ts +43 -0
  92. package/dist/cjs/src/providers/AnthropicProvider.d.ts.map +1 -0
  93. package/dist/cjs/src/providers/AnthropicProvider.js +377 -0
  94. package/dist/cjs/src/providers/AnthropicProvider.js.map +1 -0
  95. package/dist/cjs/src/providers/GeminiProvider.d.ts +58 -0
  96. package/dist/cjs/src/providers/GeminiProvider.d.ts.map +1 -0
  97. package/dist/cjs/src/providers/GeminiProvider.js +489 -0
  98. package/dist/cjs/src/providers/GeminiProvider.js.map +1 -0
  99. package/dist/cjs/src/providers/OpenAIProvider.d.ts +52 -0
  100. package/dist/cjs/src/providers/OpenAIProvider.d.ts.map +1 -0
  101. package/dist/cjs/src/providers/OpenAIProvider.js +395 -0
  102. package/dist/cjs/src/providers/OpenAIProvider.js.map +1 -0
  103. package/dist/cjs/src/providers/OpenRouterProvider.d.ts +56 -0
  104. package/dist/cjs/src/providers/OpenRouterProvider.d.ts.map +1 -0
  105. package/dist/cjs/src/providers/OpenRouterProvider.js +409 -0
  106. package/dist/cjs/src/providers/OpenRouterProvider.js.map +1 -0
  107. package/dist/cjs/src/providers/index.d.ts +13 -0
  108. package/dist/cjs/src/providers/index.d.ts.map +1 -0
  109. package/dist/cjs/src/providers/index.js +16 -0
  110. package/dist/cjs/src/providers/index.js.map +1 -0
  111. package/dist/cjs/src/types/agent.d.ts +181 -0
  112. package/dist/cjs/src/types/agent.d.ts.map +1 -0
  113. package/dist/cjs/src/types/agent.js +21 -0
  114. package/dist/cjs/src/types/agent.js.map +1 -0
  115. package/dist/cjs/src/types/ai.d.ts +143 -0
  116. package/dist/cjs/src/types/ai.d.ts.map +1 -0
  117. package/dist/cjs/src/types/ai.js +6 -0
  118. package/dist/cjs/src/types/ai.js.map +1 -0
  119. package/dist/cjs/src/types/history.d.ts +178 -0
  120. package/dist/cjs/src/types/history.d.ts.map +1 -0
  121. package/dist/cjs/src/types/history.js +33 -0
  122. package/dist/cjs/src/types/history.js.map +1 -0
  123. package/dist/cjs/src/types/index.d.ts +22 -0
  124. package/dist/cjs/src/types/index.d.ts.map +1 -0
  125. package/dist/cjs/src/types/index.js +37 -0
  126. package/dist/cjs/src/types/index.js.map +1 -0
  127. package/dist/cjs/src/types/persistence.d.ts +209 -0
  128. package/dist/cjs/src/types/persistence.d.ts.map +1 -0
  129. package/dist/cjs/src/types/persistence.js +7 -0
  130. package/dist/cjs/src/types/persistence.js.map +1 -0
  131. package/dist/cjs/src/types/route.d.ts +238 -0
  132. package/dist/cjs/src/types/route.d.ts.map +1 -0
  133. package/dist/cjs/src/types/route.js +6 -0
  134. package/dist/cjs/src/types/route.js.map +1 -0
  135. package/dist/cjs/src/types/routing.d.ts +16 -0
  136. package/dist/cjs/src/types/routing.d.ts.map +1 -0
  137. package/dist/cjs/src/types/routing.js +3 -0
  138. package/dist/cjs/src/types/routing.js.map +1 -0
  139. package/dist/cjs/src/types/schema.d.ts +22 -0
  140. package/dist/cjs/src/types/schema.d.ts.map +1 -0
  141. package/dist/cjs/src/types/schema.js +3 -0
  142. package/dist/cjs/src/types/schema.js.map +1 -0
  143. package/dist/cjs/src/types/session.d.ts +65 -0
  144. package/dist/cjs/src/types/session.d.ts.map +1 -0
  145. package/dist/cjs/src/types/session.js +6 -0
  146. package/dist/cjs/src/types/session.js.map +1 -0
  147. package/dist/cjs/src/types/template.d.ts +88 -0
  148. package/dist/cjs/src/types/template.d.ts.map +1 -0
  149. package/dist/cjs/src/types/template.js +3 -0
  150. package/dist/cjs/src/types/template.js.map +1 -0
  151. package/dist/cjs/src/types/tool.d.ts +130 -0
  152. package/dist/cjs/src/types/tool.d.ts.map +1 -0
  153. package/dist/cjs/src/types/tool.js +19 -0
  154. package/dist/cjs/src/types/tool.js.map +1 -0
  155. package/dist/cjs/src/utils/clone.d.ts +8 -0
  156. package/dist/cjs/src/utils/clone.d.ts.map +1 -0
  157. package/dist/cjs/src/utils/clone.js +32 -0
  158. package/dist/cjs/src/utils/clone.js.map +1 -0
  159. package/dist/cjs/src/utils/condition.d.ts +38 -0
  160. package/dist/cjs/src/utils/condition.d.ts.map +1 -0
  161. package/dist/cjs/src/utils/condition.js +168 -0
  162. package/dist/cjs/src/utils/condition.js.map +1 -0
  163. package/dist/cjs/src/utils/event.d.ts +6 -0
  164. package/dist/cjs/src/utils/event.d.ts.map +1 -0
  165. package/dist/cjs/src/utils/event.js +20 -0
  166. package/dist/cjs/src/utils/event.js.map +1 -0
  167. package/dist/cjs/src/utils/history.d.ts +60 -0
  168. package/dist/cjs/src/utils/history.d.ts.map +1 -0
  169. package/dist/cjs/src/utils/history.js +274 -0
  170. package/dist/cjs/src/utils/history.js.map +1 -0
  171. package/dist/cjs/src/utils/id.d.ts +25 -0
  172. package/dist/cjs/src/utils/id.d.ts.map +1 -0
  173. package/dist/cjs/src/utils/id.js +70 -0
  174. package/dist/cjs/src/utils/id.js.map +1 -0
  175. package/dist/cjs/src/utils/index.d.ts +15 -0
  176. package/dist/cjs/src/utils/index.d.ts.map +1 -0
  177. package/dist/cjs/src/utils/index.js +64 -0
  178. package/dist/cjs/src/utils/index.js.map +1 -0
  179. package/dist/cjs/src/utils/json.d.ts +16 -0
  180. package/dist/cjs/src/utils/json.d.ts.map +1 -0
  181. package/dist/cjs/src/utils/json.js +47 -0
  182. package/dist/cjs/src/utils/json.js.map +1 -0
  183. package/dist/cjs/src/utils/logger.d.ts +10 -0
  184. package/dist/cjs/src/utils/logger.d.ts.map +1 -0
  185. package/dist/cjs/src/utils/logger.js +23 -0
  186. package/dist/cjs/src/utils/logger.js.map +1 -0
  187. package/dist/cjs/src/utils/retry.d.ts +10 -0
  188. package/dist/cjs/src/utils/retry.d.ts.map +1 -0
  189. package/dist/cjs/src/utils/retry.js +76 -0
  190. package/dist/cjs/src/utils/retry.js.map +1 -0
  191. package/dist/cjs/src/utils/session.d.ts +51 -0
  192. package/dist/cjs/src/utils/session.d.ts.map +1 -0
  193. package/dist/cjs/src/utils/session.js +170 -0
  194. package/dist/cjs/src/utils/session.js.map +1 -0
  195. package/dist/cjs/src/utils/template.d.ts +155 -0
  196. package/dist/cjs/src/utils/template.d.ts.map +1 -0
  197. package/dist/cjs/src/utils/template.js +383 -0
  198. package/dist/cjs/src/utils/template.js.map +1 -0
  199. package/dist/src/adapters/MemoryAdapter.d.ts +47 -0
  200. package/dist/src/adapters/MemoryAdapter.d.ts.map +1 -0
  201. package/dist/src/adapters/MemoryAdapter.js +198 -0
  202. package/dist/src/adapters/MemoryAdapter.js.map +1 -0
  203. package/dist/src/adapters/MongoAdapter.d.ts +97 -0
  204. package/dist/src/adapters/MongoAdapter.d.ts.map +1 -0
  205. package/dist/src/adapters/MongoAdapter.js +164 -0
  206. package/dist/src/adapters/MongoAdapter.js.map +1 -0
  207. package/dist/src/adapters/OpenSearchAdapter.d.ts +169 -0
  208. package/dist/src/adapters/OpenSearchAdapter.d.ts.map +1 -0
  209. package/dist/src/adapters/OpenSearchAdapter.js +454 -0
  210. package/dist/src/adapters/OpenSearchAdapter.js.map +1 -0
  211. package/dist/src/adapters/PostgreSQLAdapter.d.ts +71 -0
  212. package/dist/src/adapters/PostgreSQLAdapter.d.ts.map +1 -0
  213. package/dist/src/adapters/PostgreSQLAdapter.js +256 -0
  214. package/dist/src/adapters/PostgreSQLAdapter.js.map +1 -0
  215. package/dist/src/adapters/PrismaAdapter.d.ts +115 -0
  216. package/dist/src/adapters/PrismaAdapter.d.ts.map +1 -0
  217. package/dist/src/adapters/PrismaAdapter.js +362 -0
  218. package/dist/src/adapters/PrismaAdapter.js.map +1 -0
  219. package/dist/src/adapters/RedisAdapter.d.ts +71 -0
  220. package/dist/src/adapters/RedisAdapter.d.ts.map +1 -0
  221. package/dist/src/adapters/RedisAdapter.js +227 -0
  222. package/dist/src/adapters/RedisAdapter.js.map +1 -0
  223. package/dist/src/adapters/SQLiteAdapter.d.ts +69 -0
  224. package/dist/src/adapters/SQLiteAdapter.d.ts.map +1 -0
  225. package/dist/src/adapters/SQLiteAdapter.js +308 -0
  226. package/dist/src/adapters/SQLiteAdapter.js.map +1 -0
  227. package/dist/src/adapters/index.d.ts +17 -0
  228. package/dist/src/adapters/index.d.ts.map +1 -0
  229. package/dist/src/adapters/index.js +11 -0
  230. package/dist/src/adapters/index.js.map +1 -0
  231. package/dist/src/constants/index.d.ts +10 -0
  232. package/dist/src/constants/index.d.ts.map +1 -0
  233. package/dist/src/constants/index.js +10 -0
  234. package/dist/src/constants/index.js.map +1 -0
  235. package/dist/src/core/Agent.d.ts +232 -0
  236. package/dist/src/core/Agent.d.ts.map +1 -0
  237. package/dist/src/core/Agent.js +737 -0
  238. package/dist/src/core/Agent.js.map +1 -0
  239. package/dist/src/core/Events.d.ts +26 -0
  240. package/dist/src/core/Events.d.ts.map +1 -0
  241. package/dist/src/core/Events.js +137 -0
  242. package/dist/src/core/Events.js.map +1 -0
  243. package/dist/src/core/PersistenceManager.d.ts +98 -0
  244. package/dist/src/core/PersistenceManager.d.ts.map +1 -0
  245. package/dist/src/core/PersistenceManager.js +257 -0
  246. package/dist/src/core/PersistenceManager.js.map +1 -0
  247. package/dist/src/core/PromptComposer.d.ts +27 -0
  248. package/dist/src/core/PromptComposer.d.ts.map +1 -0
  249. package/dist/src/core/PromptComposer.js +190 -0
  250. package/dist/src/core/PromptComposer.js.map +1 -0
  251. package/dist/src/core/ResponseEngine.d.ts +32 -0
  252. package/dist/src/core/ResponseEngine.d.ts.map +1 -0
  253. package/dist/src/core/ResponseEngine.js +198 -0
  254. package/dist/src/core/ResponseEngine.js.map +1 -0
  255. package/dist/src/core/ResponseModal.d.ts +222 -0
  256. package/dist/src/core/ResponseModal.d.ts.map +1 -0
  257. package/dist/src/core/ResponseModal.js +1583 -0
  258. package/dist/src/core/ResponseModal.js.map +1 -0
  259. package/dist/src/core/ResponsePipeline.d.ts +175 -0
  260. package/dist/src/core/ResponsePipeline.d.ts.map +1 -0
  261. package/dist/src/core/ResponsePipeline.js +545 -0
  262. package/dist/src/core/ResponsePipeline.js.map +1 -0
  263. package/dist/src/core/Route.d.ts +181 -0
  264. package/dist/src/core/Route.d.ts.map +1 -0
  265. package/dist/src/core/Route.js +537 -0
  266. package/dist/src/core/Route.js.map +1 -0
  267. package/dist/src/core/RoutingEngine.d.ts +159 -0
  268. package/dist/src/core/RoutingEngine.d.ts.map +1 -0
  269. package/dist/src/core/RoutingEngine.js +957 -0
  270. package/dist/src/core/RoutingEngine.js.map +1 -0
  271. package/dist/src/core/SessionManager.d.ts +94 -0
  272. package/dist/src/core/SessionManager.d.ts.map +1 -0
  273. package/dist/src/core/SessionManager.js +235 -0
  274. package/dist/src/core/SessionManager.js.map +1 -0
  275. package/dist/src/core/Step.d.ts +170 -0
  276. package/dist/src/core/Step.d.ts.map +1 -0
  277. package/dist/src/core/Step.js +444 -0
  278. package/dist/src/core/Step.js.map +1 -0
  279. package/dist/src/core/ToolManager.d.ts +234 -0
  280. package/dist/src/core/ToolManager.d.ts.map +1 -0
  281. package/dist/src/core/ToolManager.js +1111 -0
  282. package/dist/src/core/ToolManager.js.map +1 -0
  283. package/dist/src/index.d.ts +44 -0
  284. package/dist/src/index.d.ts.map +1 -0
  285. package/dist/src/index.js +37 -0
  286. package/dist/src/index.js.map +1 -0
  287. package/dist/src/providers/AnthropicProvider.d.ts +43 -0
  288. package/dist/src/providers/AnthropicProvider.d.ts.map +1 -0
  289. package/dist/src/providers/AnthropicProvider.js +370 -0
  290. package/dist/src/providers/AnthropicProvider.js.map +1 -0
  291. package/dist/src/providers/GeminiProvider.d.ts +58 -0
  292. package/dist/src/providers/GeminiProvider.d.ts.map +1 -0
  293. package/dist/src/providers/GeminiProvider.js +485 -0
  294. package/dist/src/providers/GeminiProvider.js.map +1 -0
  295. package/dist/src/providers/OpenAIProvider.d.ts +52 -0
  296. package/dist/src/providers/OpenAIProvider.d.ts.map +1 -0
  297. package/dist/src/providers/OpenAIProvider.js +388 -0
  298. package/dist/src/providers/OpenAIProvider.js.map +1 -0
  299. package/dist/src/providers/OpenRouterProvider.d.ts +56 -0
  300. package/dist/src/providers/OpenRouterProvider.d.ts.map +1 -0
  301. package/dist/src/providers/OpenRouterProvider.js +402 -0
  302. package/dist/src/providers/OpenRouterProvider.js.map +1 -0
  303. package/dist/src/providers/index.d.ts +13 -0
  304. package/dist/src/providers/index.d.ts.map +1 -0
  305. package/dist/src/providers/index.js +9 -0
  306. package/dist/src/providers/index.js.map +1 -0
  307. package/dist/src/types/agent.d.ts +181 -0
  308. package/dist/src/types/agent.d.ts.map +1 -0
  309. package/dist/src/types/agent.js +18 -0
  310. package/dist/src/types/agent.js.map +1 -0
  311. package/dist/src/types/ai.d.ts +143 -0
  312. package/dist/src/types/ai.d.ts.map +1 -0
  313. package/dist/src/types/ai.js +5 -0
  314. package/dist/src/types/ai.js.map +1 -0
  315. package/dist/src/types/history.d.ts +178 -0
  316. package/dist/src/types/history.d.ts.map +1 -0
  317. package/dist/src/types/history.js +30 -0
  318. package/dist/src/types/history.js.map +1 -0
  319. package/dist/src/types/index.d.ts +22 -0
  320. package/dist/src/types/index.d.ts.map +1 -0
  321. package/dist/src/types/index.js +12 -0
  322. package/dist/src/types/index.js.map +1 -0
  323. package/dist/src/types/persistence.d.ts +209 -0
  324. package/dist/src/types/persistence.d.ts.map +1 -0
  325. package/dist/src/types/persistence.js +6 -0
  326. package/dist/src/types/persistence.js.map +1 -0
  327. package/dist/src/types/route.d.ts +238 -0
  328. package/dist/src/types/route.d.ts.map +1 -0
  329. package/dist/src/types/route.js +5 -0
  330. package/dist/src/types/route.js.map +1 -0
  331. package/dist/src/types/routing.d.ts +16 -0
  332. package/dist/src/types/routing.d.ts.map +1 -0
  333. package/dist/src/types/routing.js +2 -0
  334. package/dist/src/types/routing.js.map +1 -0
  335. package/dist/src/types/schema.d.ts +22 -0
  336. package/dist/src/types/schema.d.ts.map +1 -0
  337. package/dist/src/types/schema.js +2 -0
  338. package/dist/src/types/schema.js.map +1 -0
  339. package/dist/src/types/session.d.ts +65 -0
  340. package/dist/src/types/session.d.ts.map +1 -0
  341. package/dist/src/types/session.js +5 -0
  342. package/dist/src/types/session.js.map +1 -0
  343. package/dist/src/types/template.d.ts +88 -0
  344. package/dist/src/types/template.d.ts.map +1 -0
  345. package/dist/src/types/template.js +2 -0
  346. package/dist/src/types/template.js.map +1 -0
  347. package/dist/src/types/tool.d.ts +130 -0
  348. package/dist/src/types/tool.d.ts.map +1 -0
  349. package/dist/src/types/tool.js +16 -0
  350. package/dist/src/types/tool.js.map +1 -0
  351. package/dist/src/utils/clone.d.ts +8 -0
  352. package/dist/src/utils/clone.d.ts.map +1 -0
  353. package/dist/src/utils/clone.js +29 -0
  354. package/dist/src/utils/clone.js.map +1 -0
  355. package/dist/src/utils/condition.d.ts +38 -0
  356. package/dist/src/utils/condition.d.ts.map +1 -0
  357. package/dist/src/utils/condition.js +161 -0
  358. package/dist/src/utils/condition.js.map +1 -0
  359. package/dist/src/utils/event.d.ts +6 -0
  360. package/dist/src/utils/event.d.ts.map +1 -0
  361. package/dist/src/utils/event.js +17 -0
  362. package/dist/src/utils/event.js.map +1 -0
  363. package/dist/src/utils/history.d.ts +60 -0
  364. package/dist/src/utils/history.d.ts.map +1 -0
  365. package/dist/src/utils/history.js +263 -0
  366. package/dist/src/utils/history.js.map +1 -0
  367. package/dist/src/utils/id.d.ts +25 -0
  368. package/dist/src/utils/id.d.ts.map +1 -0
  369. package/dist/src/utils/id.js +64 -0
  370. package/dist/src/utils/id.js.map +1 -0
  371. package/dist/src/utils/index.d.ts +15 -0
  372. package/dist/src/utils/index.d.ts.map +1 -0
  373. package/dist/src/utils/index.js +23 -0
  374. package/dist/src/utils/index.js.map +1 -0
  375. package/dist/src/utils/json.d.ts +16 -0
  376. package/dist/src/utils/json.d.ts.map +1 -0
  377. package/dist/src/utils/json.js +43 -0
  378. package/dist/src/utils/json.js.map +1 -0
  379. package/dist/src/utils/logger.d.ts +10 -0
  380. package/dist/src/utils/logger.d.ts.map +1 -0
  381. package/dist/src/utils/logger.js +17 -0
  382. package/dist/src/utils/logger.js.map +1 -0
  383. package/dist/src/utils/retry.d.ts +10 -0
  384. package/dist/src/utils/retry.d.ts.map +1 -0
  385. package/dist/src/utils/retry.js +71 -0
  386. package/dist/src/utils/retry.js.map +1 -0
  387. package/dist/src/utils/session.d.ts +51 -0
  388. package/dist/src/utils/session.d.ts.map +1 -0
  389. package/dist/src/utils/session.js +160 -0
  390. package/dist/src/utils/session.js.map +1 -0
  391. package/dist/src/utils/template.d.ts +155 -0
  392. package/dist/src/utils/template.d.ts.map +1 -0
  393. package/dist/src/utils/template.js +374 -0
  394. package/dist/src/utils/template.js.map +1 -0
  395. package/docs/CONTRIBUTING.md +521 -0
  396. package/docs/README.md +228 -0
  397. package/docs/api/README.md +3258 -0
  398. package/docs/api/overview.md +1134 -0
  399. package/docs/architecture/data-extraction-flow.md +363 -0
  400. package/docs/core/agent/README.md +902 -0
  401. package/docs/core/agent/context-management.md +796 -0
  402. package/docs/core/agent/session-management.md +641 -0
  403. package/docs/core/ai-integration/prompt-composition.md +220 -0
  404. package/docs/core/ai-integration/providers.md +515 -0
  405. package/docs/core/ai-integration/response-processing.md +287 -0
  406. package/docs/core/conversation-flows/data-collection.md +623 -0
  407. package/docs/core/conversation-flows/route-dsl.md +502 -0
  408. package/docs/core/conversation-flows/routes.md +247 -0
  409. package/docs/core/conversation-flows/step-transitions.md +595 -0
  410. package/docs/core/conversation-flows/steps.md +154 -0
  411. package/docs/core/error-handling.md +638 -0
  412. package/docs/core/persistence/adapters.md +255 -0
  413. package/docs/core/persistence/session-storage.md +644 -0
  414. package/docs/core/routing/intelligent-routing.md +466 -0
  415. package/docs/core/tools/tool-definition.md +970 -0
  416. package/docs/core/tools/tool-scoping.md +819 -0
  417. package/docs/guides/advanced-patterns/publishing.md +186 -0
  418. package/docs/guides/error-handling-patterns.md +578 -0
  419. package/docs/guides/getting-started/README.md +696 -0
  420. package/docs/guides/migration/README.md +72 -0
  421. package/docs/guides/migration/flexible-routing-conditions.md +375 -0
  422. package/docs/guides/migration/response-modal-refactor.md +518 -0
  423. package/examples/advanced-patterns/knowledge-based-agent.ts +735 -0
  424. package/examples/advanced-patterns/persistent-onboarding.ts +728 -0
  425. package/examples/advanced-patterns/route-lifecycle-hooks.ts +556 -0
  426. package/examples/advanced-patterns/streaming-responses.ts +578 -0
  427. package/examples/ai-providers/anthropic-integration.ts +388 -0
  428. package/examples/ai-providers/openai-integration.ts +228 -0
  429. package/examples/condition-patterns/function-only-conditions.ts +365 -0
  430. package/examples/condition-patterns/mixed-array-conditions.ts +477 -0
  431. package/examples/condition-patterns/route-skipif-patterns.ts +468 -0
  432. package/examples/condition-patterns/step-skipif-patterns.ts +0 -0
  433. package/examples/condition-patterns/string-only-conditions.ts +296 -0
  434. package/examples/conversation-flows/completion-transitions.ts +318 -0
  435. package/examples/core-concepts/basic-agent.ts +503 -0
  436. package/examples/core-concepts/modern-streaming-api.ts +309 -0
  437. package/examples/core-concepts/schema-driven-extraction.ts +332 -0
  438. package/examples/core-concepts/session-management.ts +494 -0
  439. package/examples/integrations/database-integration.ts +630 -0
  440. package/examples/integrations/healthcare-integration.ts +595 -0
  441. package/examples/integrations/search-integration.ts +530 -0
  442. package/examples/integrations/server-session-management.ts +307 -0
  443. package/examples/persistence/custom-adapter.ts +529 -0
  444. package/examples/persistence/database-persistence.ts +583 -0
  445. package/examples/persistence/memory-sessions.ts +495 -0
  446. package/examples/persistence/prisma-schema.example.prisma +74 -0
  447. package/examples/persistence/redis-persistence.ts +488 -0
  448. package/examples/tools/basic-tools.ts +765 -0
  449. package/examples/tools/data-enrichment-tools.ts +593 -0
  450. package/package.json +125 -0
  451. package/src/adapters/MemoryAdapter.ts +273 -0
  452. package/src/adapters/MongoAdapter.ts +304 -0
  453. package/src/adapters/OpenSearchAdapter.ts +670 -0
  454. package/src/adapters/PostgreSQLAdapter.ts +428 -0
  455. package/src/adapters/PrismaAdapter.ts +553 -0
  456. package/src/adapters/RedisAdapter.ts +377 -0
  457. package/src/adapters/SQLiteAdapter.ts +459 -0
  458. package/src/adapters/index.ts +43 -0
  459. package/src/constants/index.ts +10 -0
  460. package/src/core/Agent.ts +970 -0
  461. package/src/core/Events.ts +164 -0
  462. package/src/core/PersistenceManager.ts +353 -0
  463. package/src/core/PromptComposer.ts +253 -0
  464. package/src/core/ResponseEngine.ts +306 -0
  465. package/src/core/ResponseModal.ts +2050 -0
  466. package/src/core/ResponsePipeline.ts +864 -0
  467. package/src/core/Route.ts +677 -0
  468. package/src/core/RoutingEngine.ts +1396 -0
  469. package/src/core/SessionManager.ts +297 -0
  470. package/src/core/Step.ts +593 -0
  471. package/src/core/ToolManager.ts +1394 -0
  472. package/src/index.ts +155 -0
  473. package/src/providers/AnthropicProvider.ts +560 -0
  474. package/src/providers/GeminiProvider.ts +683 -0
  475. package/src/providers/OpenAIProvider.ts +602 -0
  476. package/src/providers/OpenRouterProvider.ts +613 -0
  477. package/src/providers/index.ts +16 -0
  478. package/src/types/agent.ts +196 -0
  479. package/src/types/ai.ts +158 -0
  480. package/src/types/history.ts +206 -0
  481. package/src/types/index.ts +119 -0
  482. package/src/types/persistence.ts +251 -0
  483. package/src/types/route.ts +272 -0
  484. package/src/types/routing.ts +18 -0
  485. package/src/types/schema.ts +23 -0
  486. package/src/types/session.ts +74 -0
  487. package/src/types/template.ts +104 -0
  488. package/src/types/tool.ts +174 -0
  489. package/src/utils/clone.ts +34 -0
  490. package/src/utils/condition.ts +190 -0
  491. package/src/utils/event.ts +16 -0
  492. package/src/utils/history.ts +306 -0
  493. package/src/utils/id.ts +73 -0
  494. package/src/utils/index.ts +69 -0
  495. package/src/utils/json.ts +46 -0
  496. package/src/utils/logger.ts +19 -0
  497. package/src/utils/retry.ts +97 -0
  498. package/src/utils/session.ts +204 -0
  499. package/src/utils/template.ts +444 -0
@@ -0,0 +1,251 @@
1
+ /**
2
+ * Persistence-related type definitions
3
+ * Support for optional database persistence (Prisma, etc.)
4
+ */
5
+
6
+ import type { Event, MessageRole } from "./history";
7
+ import type { SessionState } from "./session";
8
+
9
+ /**
10
+ * Session status enum
11
+ */
12
+ export type SessionStatus = "active" | "completed" | "abandoned";
13
+
14
+ /**
15
+ * Base session data structure
16
+ */
17
+ export interface SessionData<TData = Record<string, unknown>> {
18
+ id: string;
19
+ userId?: string;
20
+ agentName?: string;
21
+ status: SessionStatus;
22
+ currentRoute?: string;
23
+ currentStep?: string;
24
+ collectedData?: CollectedStateData<TData>;
25
+ messageCount?: number;
26
+ lastMessageAt?: Date;
27
+ completedAt?: Date;
28
+ createdAt: Date;
29
+ updatedAt: Date;
30
+ }
31
+
32
+ /**
33
+ * Data for creating a new session (subset of SessionData)
34
+ */
35
+ export type CreateSessionData<TData = Record<string, unknown>> = Omit<
36
+ SessionData<TData>,
37
+ "id" | "createdAt" | "updatedAt"
38
+ > & {
39
+ id?: string;
40
+ };
41
+
42
+ /**
43
+ * Structure for data collected during a session that needs to be persisted.
44
+ * This is a subset of SessionState, stored within SessionData.
45
+ */
46
+ export interface CollectedStateData<TData = Record<string, unknown>> {
47
+ data: Partial<TData>;
48
+ routeHistory: SessionState<TData>["routeHistory"];
49
+ history?: SessionState<TData>["history"];
50
+ currentRouteTitle?: string;
51
+ currentStepDescription?: string;
52
+ metadata: SessionState<TData>["metadata"];
53
+ }
54
+
55
+ /**
56
+ * Base message data structure
57
+ */
58
+ export interface MessageData {
59
+ id: string;
60
+ sessionId: string;
61
+ userId?: string;
62
+ role: MessageRole;
63
+ content: string;
64
+ route?: string;
65
+ step?: string;
66
+ toolCalls?: Array<{ toolName: string; arguments: Record<string, unknown> }>;
67
+ event?: Event; // Optional: store full event data
68
+ createdAt: Date;
69
+ }
70
+
71
+ /**
72
+ * Repository interface for sessions
73
+ * Implement this interface with your database of choice
74
+ */
75
+ export interface SessionRepository<TData = Record<string, unknown>> {
76
+ /**
77
+ * Create a new session
78
+ */
79
+ create(data: CreateSessionData<TData>): Promise<SessionData<TData>>;
80
+
81
+ /**
82
+ * Find session by ID
83
+ */
84
+ findById(id: string): Promise<SessionData<TData> | null>;
85
+
86
+ /**
87
+ * Find active session by user ID
88
+ */
89
+ findActiveByUserId(userId: string): Promise<SessionData<TData> | null>;
90
+
91
+ /**
92
+ * Find all sessions for a user
93
+ */
94
+ findByUserId(userId: string, limit?: number): Promise<SessionData<TData>[]>;
95
+
96
+ /**
97
+ * Update session
98
+ */
99
+ update(
100
+ id: string,
101
+ data: Partial<Omit<SessionData<TData>, "id" | "createdAt">>
102
+ ): Promise<SessionData<TData> | null>;
103
+
104
+ /**
105
+ * Update session status
106
+ */
107
+ updateStatus(
108
+ id: string,
109
+ status: SessionStatus,
110
+ completedAt?: Date
111
+ ): Promise<SessionData<TData> | null>;
112
+
113
+ /**
114
+ * Update collected data
115
+ */
116
+ updateCollectedData(
117
+ id: string,
118
+ collectedData: CollectedStateData<TData>
119
+ ): Promise<SessionData<TData> | null>;
120
+
121
+ /**
122
+ * Update current route and step
123
+ */
124
+ updateRouteStep(
125
+ id: string,
126
+ route?: string,
127
+ step?: string
128
+ ): Promise<SessionData<TData> | null>;
129
+
130
+ /**
131
+ * Increment message count
132
+ */
133
+ incrementMessageCount(id: string): Promise<SessionData<TData> | null>;
134
+
135
+ /**
136
+ * Delete session
137
+ */
138
+ delete(id: string): Promise<boolean>;
139
+ }
140
+
141
+ /**
142
+ * Repository interface for messages
143
+ * Implement this interface with your database of choice
144
+ */
145
+ export interface MessageRepository {
146
+ /**
147
+ * Create a new message
148
+ */
149
+ create(data: Omit<MessageData, "id" | "createdAt">): Promise<MessageData>;
150
+
151
+ /**
152
+ * Find message by ID
153
+ */
154
+ findById(id: string): Promise<MessageData | null>;
155
+
156
+ /**
157
+ * Find all messages for a session
158
+ */
159
+ findBySessionId(sessionId: string, limit?: number): Promise<MessageData[]>;
160
+
161
+ /**
162
+ * Find messages for a user
163
+ */
164
+ findByUserId(userId: string, limit?: number): Promise<MessageData[]>;
165
+
166
+ /**
167
+ * Delete message by ID
168
+ */
169
+ delete(id: string): Promise<boolean>;
170
+
171
+ /**
172
+ * Delete all messages for a session
173
+ */
174
+ deleteBySessionId(sessionId: string): Promise<number>;
175
+
176
+ /**
177
+ * Delete all messages for a user
178
+ */
179
+ deleteByUserId(userId: string): Promise<number>;
180
+ }
181
+
182
+ /**
183
+ * Persistence adapter interface
184
+ * Implement this to create adapters for different databases
185
+ */
186
+ export interface PersistenceAdapter<TData = Record<string, unknown>> {
187
+ /**
188
+ * Session repository
189
+ */
190
+ readonly sessionRepository: SessionRepository<TData>;
191
+
192
+ /**
193
+ * Message repository
194
+ */
195
+ readonly messageRepository: MessageRepository;
196
+
197
+ /**
198
+ * Initialize the adapter (create tables, indexes, etc.)
199
+ * Called automatically when adapter is created
200
+ */
201
+ initialize?(): Promise<void>;
202
+
203
+ /**
204
+ * Disconnect/cleanup resources
205
+ */
206
+ disconnect?(): Promise<void>;
207
+ }
208
+
209
+ /**
210
+ * Configuration for persistence
211
+ */
212
+ export interface PersistenceConfig<TData = Record<string, unknown>> {
213
+ /**
214
+ * Persistence adapter instance (e.g., PrismaAdapter)
215
+ */
216
+ adapter: PersistenceAdapter<TData>;
217
+
218
+ /**
219
+ * Whether to auto-save messages (default: true)
220
+ */
221
+ autoSave?: boolean;
222
+
223
+ /**
224
+ * User ID to associate with sessions/messages
225
+ * Can also be provided per-call in methods
226
+ */
227
+ userId?: string;
228
+ }
229
+
230
+ /**
231
+ * Options for creating a session
232
+ */
233
+ export interface CreateSessionOptions<TData = Record<string, unknown>> {
234
+ userId?: string;
235
+ agentName?: string;
236
+ initialData?: Partial<TData>;
237
+ }
238
+
239
+ /**
240
+ * Options for saving a message
241
+ */
242
+ export interface SaveMessageOptions {
243
+ sessionId: string;
244
+ userId?: string;
245
+ role: MessageRole;
246
+ content: string;
247
+ route?: string;
248
+ step?: string;
249
+ toolCalls?: Array<{ toolName: string; arguments: Record<string, unknown> }>;
250
+ event?: Event;
251
+ }
@@ -0,0 +1,272 @@
1
+ /**
2
+ * Route/Journey DSL type definitions
3
+ */
4
+
5
+ import type { Tool } from "./tool";
6
+ import type { StructuredSchema } from "./schema";
7
+ import type { Guideline, Term } from "./agent";
8
+ import { Template, ConditionTemplate } from "./template";
9
+
10
+ /**
11
+ * Reference to a route
12
+ */
13
+ export interface RouteRef {
14
+ /** Route identifier */
15
+ id: string;
16
+ }
17
+
18
+ /**
19
+ * Reference to a step within a route
20
+ */
21
+ export interface StepRef {
22
+ /** Step identifier */
23
+ id: string;
24
+ /** Route this step belongs to */
25
+ routeId: string;
26
+ }
27
+
28
+ /**
29
+ * Route lifecycle hooks for managing route-specific data and behavior
30
+ */
31
+ export interface RouteLifecycleHooks<TContext = unknown, TData = unknown> {
32
+ /**
33
+ * Called after collected data is updated for this route (from AI response or tool execution)
34
+ * Useful for validation, enrichment, or persistence of route-specific collected data
35
+ * Return modified collected data or the same data to keep it unchanged
36
+ *
37
+ * Unlike Agent-level onDataUpdate, this only triggers for data changes in this specific route.
38
+ */
39
+ onDataUpdate?: (
40
+ data: Partial<TData>,
41
+ previousCollected: Partial<TData>
42
+ ) => Partial<TData> | Promise<Partial<TData>>;
43
+
44
+ /**
45
+ * Called after context is updated via updateContext() when this route is active
46
+ * Useful for route-specific context reactions, validation, or side effects
47
+ *
48
+ * Unlike Agent-level onContextUpdate, this only triggers when this specific route is active.
49
+ */
50
+ onContextUpdate?: (
51
+ newContext: TContext,
52
+ previousContext: TContext
53
+ ) => void | Promise<void>;
54
+ }
55
+
56
+ /**
57
+ * Route transition configuration when route completes
58
+ */
59
+ export interface RouteTransitionConfig<TContext = unknown, TData = unknown> {
60
+ /** Target route ID or title to transition to */
61
+ nextStep: string;
62
+ /** Optional AI-evaluated condition for the transition */
63
+ condition?: Template<TContext, TData>;
64
+ }
65
+
66
+ /**
67
+ * Function type for dynamic route completion transitions
68
+ * @param session - Current session step with collected data
69
+ * @param context - Agent context
70
+ * @returns Route ID/title to transition to, or transition config, or undefined to end
71
+ */
72
+ export type RouteCompletionHandler<TContext = unknown, TData = unknown> = (
73
+ session: { data?: Partial<TData> },
74
+ context?: TContext
75
+ ) =>
76
+ | string
77
+ | RouteTransitionConfig<TContext, TData>
78
+ | undefined
79
+ | Promise<string | RouteTransitionConfig<TContext, TData> | undefined>;
80
+
81
+ /**
82
+ * Options for creating a route
83
+ * @template TData - Type of data collected throughout the route (inferred from schema)
84
+ */
85
+ export interface RouteOptions<TContext = unknown, TData = unknown> {
86
+ /** Custom ID for the route (optional - will generate deterministic ID from title if not provided) */
87
+ id?: string;
88
+ /** Title of the route */
89
+ title: string;
90
+ /** Description of what this route accomplishes */
91
+ description?: string;
92
+ /** Optional identity prompt defining the agent's role and persona for this route */
93
+ identity?: Template<TContext, TData>;
94
+ /** Optional personality prompt defining the agent's communication style for this route */
95
+ personality?: Template<TContext, TData>;
96
+ /** Conditions that activate this route */
97
+ when?: ConditionTemplate<TContext, TData>;
98
+ /** Conditions that prevent this route from being considered */
99
+ skipIf?: ConditionTemplate<TContext, TData>;
100
+ /** Initial guidelines for this route */
101
+ guidelines?: Guideline<TContext, TData>[];
102
+ /** Initial terms for the route's domain glossary */
103
+ terms?: Term<TContext>[];
104
+ /** Tools available in this route */
105
+ tools?: (string | Tool<TContext, TData>)[];
106
+ /** Absolute rules the agent must follow in this route */
107
+ rules?: Template<TContext, TData>[];
108
+ /** Absolute prohibitions the agent must never do in this route */
109
+ prohibitions?: Template<TContext, TData>[];
110
+ /** Optional: extractions the router may return (added to routing schema) */
111
+ routingExtrasSchema?: StructuredSchema;
112
+ /** Optional: structured response data for this route's message generation */
113
+ responseOutputSchema?: StructuredSchema;
114
+ /**
115
+ * Required fields for route completion - must be valid keys from agent's TData type
116
+ * Route is considered complete when all required fields are present in agent data
117
+ */
118
+ requiredFields?: (keyof TData)[];
119
+ /**
120
+ * Optional fields that enhance the route but aren't required for completion
121
+ * Must be valid keys from agent's TData type
122
+ */
123
+ optionalFields?: (keyof TData)[];
124
+ /**
125
+ * Initial data to pre-populate when entering this route
126
+ * Useful for restoring sessions or pre-filling known information
127
+ * Steps with skipIf conditions will be automatically bypassed if data is present
128
+ * Now refers to agent-level data
129
+ */
130
+ initialData?: Partial<TData>;
131
+ /**
132
+ * NEW: Sequential steps for simple linear flows
133
+ * If provided, automatically chains the steps from initialStep to END_ROUTE
134
+ * For complex flows with branching, build the step machine manually instead
135
+ */
136
+ steps?: StepOptions<TContext, TData>[];
137
+ /**
138
+ * Configure the initial step (optional)
139
+ * Accepts full StepOptions configuration (id, prompt, collect, skipIf, etc.)
140
+ * Note: tool and step properties are ignored for initial step
141
+ */
142
+ initialStep?: Omit<StepOptions<TContext, TData>, "step">;
143
+ /**
144
+ * Configure the end step (optional)
145
+ * Defines what happens when the route completes (reaches END_ROUTE)
146
+ * Can include prompt for completion message, tool for final actions, etc.
147
+ * Note: step, condition, skipIf properties are ignored for end step
148
+ */
149
+ endStep?: Omit<StepOptions<TContext, TData>, "step" | "condition" | "skipIf">;
150
+ /**
151
+ * Optional transition when route completes (reaches END_ROUTE)
152
+ * Can be:
153
+ * - String: Route ID or title to transition to
154
+ * - Object: Transition config with optional AI-evaluated condition
155
+ * - Function: Dynamic logic that returns route ID, config, or undefined
156
+ *
157
+ * @example
158
+ * // Simple string
159
+ * onComplete: "feedback-collection"
160
+ *
161
+ * @example
162
+ * // With condition
163
+ * onComplete: {
164
+ * nextStep: "feedback-collection",
165
+ * condition: "if booking succeeded"
166
+ * }
167
+ *
168
+ * @example
169
+ * // Dynamic function
170
+ * onComplete: (session) => {
171
+ * if (session.data?.success) return "feedback";
172
+ * return "error-recovery";
173
+ * }
174
+ */
175
+ onComplete?:
176
+ | string
177
+ | RouteTransitionConfig<TContext, TData>
178
+ | RouteCompletionHandler<TContext, TData>;
179
+ /**
180
+ * Route lifecycle hooks
181
+ */
182
+ hooks?: RouteLifecycleHooks<TContext, TData>;
183
+ /** Knowledge base specific to this route containing any JSON structure the AI should know */
184
+ knowledgeBase?: Record<string, unknown>;
185
+ }
186
+
187
+ /**
188
+ * Specification for a step transition
189
+ */
190
+ export interface StepOptions<TContext = unknown, TData = unknown> {
191
+ /** Custom ID for this step (optional - will generate deterministic ID if not provided) */
192
+ id?: string;
193
+ /** Description of the transition */
194
+ description?: string;
195
+ /** Transition to a chat state with this description */
196
+ prompt?: Template<TContext, TData>;
197
+ /** Tools available for AI to call in this step (by ID reference or inline definition) */
198
+ tools?: (string | Tool<TContext, TData>)[];
199
+ /** Programmatic function or tool to run before AI responds */
200
+ prepare?:
201
+ | string
202
+ | Tool<TContext, TData>
203
+ | ((context: TContext, data?: Partial<TData>) => void | Promise<void>);
204
+ /** Programmatic function or tool to run after AI responds */
205
+ finalize?:
206
+ | string
207
+ | Tool<TContext, TData>
208
+ | ((context: TContext, data?: Partial<TData>) => void | Promise<void>);
209
+ /** Transition to a specific step or end marker */
210
+ step?: StepRef | symbol;
211
+ /**
212
+ * Fields to collect from the conversation in this step
213
+ * These should match keys in the agent's TData schema
214
+ */
215
+ collect?: (keyof TData)[];
216
+ /**
217
+ * Condition to determine if this step should be skipped
218
+ * If evaluates to true, the step will be bypassed
219
+ * Supports strings (AI context), functions (programmatic), and arrays
220
+ */
221
+ skipIf?: ConditionTemplate<TContext, TData>;
222
+ /**
223
+ * Required data fields that must be present before entering this step
224
+ * If any required field is missing, step cannot be entered
225
+ * Must be valid keys from agent's TData type
226
+ */
227
+ requires?: (keyof TData)[];
228
+ /**
229
+ * Optional condition for this transition
230
+ * Description of when this transition should be taken
231
+ * Supports strings (AI context), functions (programmatic), and arrays
232
+ */
233
+ when?: ConditionTemplate<TContext, TData>;
234
+ /** Initial guidelines for this step */
235
+ guidelines?: Guideline<TContext, TData>[];
236
+ }
237
+
238
+ /**
239
+ * Specification for a branch in the conversation flow
240
+ */
241
+ export interface BranchSpec<TContext = unknown, TData = unknown> {
242
+ /** User-friendly identifier for this branch (used as object key) */
243
+ name: string;
244
+ /** Optional ID for this branch (auto-generated if not provided) */
245
+ id?: string;
246
+ /** Step configuration for this branch */
247
+ step: StepOptions<TContext, TData>;
248
+ }
249
+
250
+ /**
251
+ * Result of a branch operation
252
+ * Maps branch names to their respective step results for continued chaining
253
+ */
254
+ export interface BranchResult<TContext = unknown, TData = unknown> {
255
+ [branchName: string]: StepResult<TContext, TData>;
256
+ }
257
+
258
+ /**
259
+ * Result of a transition operation
260
+ * Combines step reference with the ability to chain transitions and create branches
261
+ */
262
+ export interface StepResult<TContext = unknown, TData = unknown>
263
+ extends StepRef {
264
+ /** Allow chaining transitions */
265
+ nextStep: (spec: StepOptions<TContext, TData>) => StepResult<TContext, TData>;
266
+ /** Create multiple branches from this step */
267
+ branch: (
268
+ branches: BranchSpec<TContext, TData>[]
269
+ ) => BranchResult<TContext, TData>;
270
+ /** Shortcut to end the current route */
271
+ endRoute: (options?: Omit<StepOptions<TContext, TData>, "step">) => StepResult<TContext, TData>;
272
+ }
@@ -0,0 +1,18 @@
1
+ import type { StructuredSchema } from "./schema";
2
+
3
+ export interface RoutingDecision {
4
+ context: string;
5
+ routes: Record<string, number>;
6
+ responseDirectives?: string[];
7
+ extractions?: unknown;
8
+ contextUpdate?: Record<string, unknown>;
9
+ }
10
+
11
+ export interface RoutingDecisionWithRoute extends RoutingDecision {
12
+ selectedRouteId: string;
13
+ maxScore: number;
14
+ }
15
+
16
+ export interface RoutingSchemaOptions {
17
+ extrasSchema?: StructuredSchema;
18
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * StructuredSchema - minimal JSON Schema subset used across providers
3
+ */
4
+ export interface StructuredSchema {
5
+ type?: string | string[];
6
+ description?: string;
7
+ enum?: Array<string | number | boolean | null>;
8
+ nullable?: boolean;
9
+ properties?: Record<string, StructuredSchema>;
10
+ required?: string[];
11
+ items?: StructuredSchema;
12
+ additionalProperties?: boolean | StructuredSchema;
13
+ // Allow provider-specific passthroughs without breaking types
14
+ [key: string]: unknown;
15
+ }
16
+
17
+ /**
18
+ * A small helper describing a named schema (for providers that require a name)
19
+ */
20
+ export interface NamedSchema {
21
+ name?: string;
22
+ schema: StructuredSchema;
23
+ }
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Session step types for tracking conversation progress
3
+ */
4
+
5
+ import type { History } from "./history";
6
+
7
+ /**
8
+ * Pending route transition information
9
+ */
10
+ export interface PendingTransition {
11
+ /** Target route ID to transition to */
12
+ targetRouteId: string;
13
+ /** Optional AI-evaluated condition for the transition */
14
+ condition?: string;
15
+ /** Reason for the transition */
16
+ reason: "route_complete" | "manual";
17
+ }
18
+
19
+ /**
20
+ * Session state tracks the current position in the conversation flow
21
+ * and data collected at the agent level across all routes
22
+ */
23
+ export interface SessionState<TData = unknown> {
24
+ /** Unique session identifier (useful for persistence) */
25
+ id: string;
26
+
27
+ /** Current route the conversation is in */
28
+ currentRoute?: {
29
+ id: string;
30
+ title: string;
31
+ enteredAt?: Date;
32
+ };
33
+
34
+ /** Current step within the route */
35
+ currentStep?: {
36
+ id: string;
37
+ description?: string;
38
+ enteredAt?: Date;
39
+ };
40
+
41
+ /**
42
+ * Agent-level data collected across all routes
43
+ * This is the single source of truth for all collected data
44
+ * Routes can access and contribute to this shared data structure
45
+ */
46
+ data: Partial<TData>;
47
+
48
+ /** History of routes visited in this session */
49
+ routeHistory?: Array<{
50
+ routeId: string;
51
+ enteredAt?: Date;
52
+ exitedAt?: Date;
53
+ completed: boolean;
54
+ }>;
55
+
56
+ /**
57
+ * Pending route transition after completion
58
+ * Set when a route completes with onComplete handler
59
+ */
60
+ pendingTransition?: PendingTransition;
61
+
62
+ /**
63
+ * Conversation history managed by the session
64
+ * Contains the full conversation between user and assistant
65
+ */
66
+ history?: History;
67
+
68
+ /** Session metadata */
69
+ metadata?: {
70
+ createdAt?: Date;
71
+ lastUpdatedAt?: Date;
72
+ [key: string]: unknown;
73
+ };
74
+ }