@falai/agent 0.8.1 → 0.9.0-alpha-1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (652) hide show
  1. package/README.md +306 -133
  2. package/dist/{adapters → cjs/src/adapters}/MemoryAdapter.d.ts +4 -4
  3. package/dist/cjs/src/adapters/MemoryAdapter.d.ts.map +1 -0
  4. package/dist/cjs/{adapters → src/adapters}/MemoryAdapter.js +41 -21
  5. package/dist/cjs/src/adapters/MemoryAdapter.js.map +1 -0
  6. package/dist/{adapters → cjs/src/adapters}/MongoAdapter.d.ts +3 -3
  7. package/dist/cjs/src/adapters/MongoAdapter.d.ts.map +1 -0
  8. package/dist/cjs/{adapters → src/adapters}/MongoAdapter.js +2 -1
  9. package/dist/cjs/src/adapters/MongoAdapter.js.map +1 -0
  10. package/dist/cjs/{adapters → src/adapters}/OpenSearchAdapter.d.ts +3 -3
  11. package/dist/cjs/src/adapters/OpenSearchAdapter.d.ts.map +1 -0
  12. package/dist/cjs/{adapters → src/adapters}/OpenSearchAdapter.js +10 -13
  13. package/dist/cjs/src/adapters/OpenSearchAdapter.js.map +1 -0
  14. package/dist/cjs/{adapters → src/adapters}/PostgreSQLAdapter.d.ts +3 -3
  15. package/dist/cjs/src/adapters/PostgreSQLAdapter.d.ts.map +1 -0
  16. package/dist/cjs/{adapters → src/adapters}/PostgreSQLAdapter.js +1 -1
  17. package/dist/cjs/src/adapters/PostgreSQLAdapter.js.map +1 -0
  18. package/dist/cjs/{adapters → src/adapters}/PrismaAdapter.d.ts +3 -3
  19. package/dist/cjs/src/adapters/PrismaAdapter.d.ts.map +1 -0
  20. package/dist/cjs/{adapters → src/adapters}/PrismaAdapter.js +35 -5
  21. package/dist/cjs/src/adapters/PrismaAdapter.js.map +1 -0
  22. package/dist/cjs/{adapters → src/adapters}/RedisAdapter.d.ts +3 -3
  23. package/dist/cjs/src/adapters/RedisAdapter.d.ts.map +1 -0
  24. package/dist/cjs/{adapters → src/adapters}/RedisAdapter.js +3 -2
  25. package/dist/cjs/src/adapters/RedisAdapter.js.map +1 -0
  26. package/dist/{adapters → cjs/src/adapters}/SQLiteAdapter.d.ts +3 -3
  27. package/dist/cjs/src/adapters/SQLiteAdapter.d.ts.map +1 -0
  28. package/dist/cjs/{adapters → src/adapters}/SQLiteAdapter.js +2 -1
  29. package/dist/cjs/src/adapters/SQLiteAdapter.js.map +1 -0
  30. package/dist/cjs/src/adapters/index.d.ts.map +1 -0
  31. package/dist/cjs/src/adapters/index.js.map +1 -0
  32. package/dist/cjs/src/constants/index.d.ts.map +1 -0
  33. package/dist/cjs/src/constants/index.js.map +1 -0
  34. package/dist/{core → cjs/src/core}/Agent.d.ts +65 -67
  35. package/dist/cjs/src/core/Agent.d.ts.map +1 -0
  36. package/dist/cjs/src/core/Agent.js +1433 -0
  37. package/dist/cjs/src/core/Agent.js.map +1 -0
  38. package/dist/cjs/src/core/Events.d.ts +26 -0
  39. package/dist/cjs/src/core/Events.d.ts.map +1 -0
  40. package/dist/cjs/src/core/Events.js +144 -0
  41. package/dist/cjs/src/core/Events.js.map +1 -0
  42. package/dist/{core → cjs/src/core}/PersistenceManager.d.ts +21 -19
  43. package/dist/cjs/src/core/PersistenceManager.d.ts.map +1 -0
  44. package/dist/cjs/{core → src/core}/PersistenceManager.js +50 -20
  45. package/dist/cjs/src/core/PersistenceManager.js.map +1 -0
  46. package/dist/cjs/src/core/PromptComposer.d.ts +27 -0
  47. package/dist/cjs/src/core/PromptComposer.d.ts.map +1 -0
  48. package/dist/cjs/src/core/PromptComposer.js +157 -0
  49. package/dist/cjs/src/core/PromptComposer.js.map +1 -0
  50. package/dist/cjs/src/core/ResponseEngine.d.ts +31 -0
  51. package/dist/cjs/src/core/ResponseEngine.d.ts.map +1 -0
  52. package/dist/cjs/src/core/ResponseEngine.js +84 -0
  53. package/dist/cjs/src/core/ResponseEngine.js.map +1 -0
  54. package/dist/cjs/src/core/ResponsePipeline.d.ts +143 -0
  55. package/dist/cjs/src/core/ResponsePipeline.d.ts.map +1 -0
  56. package/dist/cjs/src/core/ResponsePipeline.js +446 -0
  57. package/dist/cjs/src/core/ResponsePipeline.js.map +1 -0
  58. package/dist/cjs/src/core/Route.d.ts +126 -0
  59. package/dist/cjs/src/core/Route.d.ts.map +1 -0
  60. package/dist/cjs/{core → src/core}/Route.js +116 -20
  61. package/dist/cjs/src/core/Route.js.map +1 -0
  62. package/dist/{core → cjs/src/core}/RoutingEngine.d.ts +33 -38
  63. package/dist/cjs/src/core/RoutingEngine.d.ts.map +1 -0
  64. package/dist/cjs/{core → src/core}/RoutingEngine.js +102 -108
  65. package/dist/cjs/src/core/RoutingEngine.js.map +1 -0
  66. package/dist/cjs/src/core/SessionManager.d.ts +76 -0
  67. package/dist/cjs/src/core/SessionManager.d.ts.map +1 -0
  68. package/dist/cjs/src/core/SessionManager.js +197 -0
  69. package/dist/cjs/src/core/SessionManager.js.map +1 -0
  70. package/dist/cjs/src/core/Step.d.ts +96 -0
  71. package/dist/cjs/src/core/Step.d.ts.map +1 -0
  72. package/dist/cjs/src/core/Step.js +206 -0
  73. package/dist/cjs/src/core/Step.js.map +1 -0
  74. package/dist/cjs/src/core/ToolExecutor.d.ts +43 -0
  75. package/dist/cjs/src/core/ToolExecutor.d.ts.map +1 -0
  76. package/dist/cjs/{core → src/core}/ToolExecutor.js +19 -18
  77. package/dist/cjs/src/core/ToolExecutor.js.map +1 -0
  78. package/dist/{index.d.ts → cjs/src/index.d.ts} +7 -15
  79. package/dist/cjs/src/index.d.ts.map +1 -0
  80. package/dist/cjs/{index.js → src/index.js} +21 -19
  81. package/dist/cjs/src/index.js.map +1 -0
  82. package/dist/cjs/{providers → src/providers}/AnthropicProvider.d.ts +1 -1
  83. package/dist/cjs/src/providers/AnthropicProvider.d.ts.map +1 -0
  84. package/dist/cjs/{providers → src/providers}/AnthropicProvider.js +54 -2
  85. package/dist/cjs/src/providers/AnthropicProvider.js.map +1 -0
  86. package/dist/{providers → cjs/src/providers}/GeminiProvider.d.ts +1 -1
  87. package/dist/cjs/src/providers/GeminiProvider.d.ts.map +1 -0
  88. package/dist/cjs/{providers → src/providers}/GeminiProvider.js +65 -0
  89. package/dist/cjs/src/providers/GeminiProvider.js.map +1 -0
  90. package/dist/cjs/{providers → src/providers}/OpenAIProvider.d.ts +1 -1
  91. package/dist/cjs/src/providers/OpenAIProvider.d.ts.map +1 -0
  92. package/dist/cjs/{providers → src/providers}/OpenAIProvider.js +70 -1
  93. package/dist/cjs/src/providers/OpenAIProvider.js.map +1 -0
  94. package/dist/{providers → cjs/src/providers}/OpenRouterProvider.d.ts +1 -1
  95. package/dist/cjs/src/providers/OpenRouterProvider.d.ts.map +1 -0
  96. package/dist/cjs/{providers → src/providers}/OpenRouterProvider.js +76 -0
  97. package/dist/cjs/src/providers/OpenRouterProvider.js.map +1 -0
  98. package/dist/cjs/src/providers/index.d.ts.map +1 -0
  99. package/dist/cjs/src/providers/index.js.map +1 -0
  100. package/dist/cjs/{types → src/types}/agent.d.ts +52 -33
  101. package/dist/cjs/src/types/agent.d.ts.map +1 -0
  102. package/dist/cjs/src/types/agent.js.map +1 -0
  103. package/dist/cjs/{types → src/types}/ai.d.ts +7 -0
  104. package/dist/cjs/src/types/ai.d.ts.map +1 -0
  105. package/dist/cjs/src/types/ai.js.map +1 -0
  106. package/dist/{types → cjs/src/types}/history.d.ts +76 -18
  107. package/dist/cjs/src/types/history.d.ts.map +1 -0
  108. package/dist/cjs/src/types/history.js +33 -0
  109. package/dist/cjs/src/types/history.js.map +1 -0
  110. package/dist/cjs/src/types/index.d.ts +20 -0
  111. package/dist/cjs/src/types/index.d.ts.map +1 -0
  112. package/dist/cjs/src/types/index.js +30 -0
  113. package/dist/cjs/src/types/index.js.map +1 -0
  114. package/dist/{types → cjs/src/types}/persistence.d.ts +39 -23
  115. package/dist/cjs/src/types/persistence.d.ts.map +1 -0
  116. package/dist/cjs/src/types/persistence.js.map +1 -0
  117. package/dist/cjs/{types → src/types}/route.d.ts +85 -31
  118. package/dist/cjs/src/types/route.d.ts.map +1 -0
  119. package/dist/cjs/{types → src/types}/route.js.map +1 -1
  120. package/dist/cjs/src/types/routing.d.ts.map +1 -0
  121. package/dist/{types → cjs/src/types}/routing.js.map +1 -1
  122. package/dist/cjs/src/types/schema.d.ts.map +1 -0
  123. package/dist/{types → cjs/src/types}/schema.js.map +1 -1
  124. package/dist/cjs/src/types/session.d.ts +70 -0
  125. package/dist/cjs/src/types/session.d.ts.map +1 -0
  126. package/dist/cjs/src/types/session.js +6 -0
  127. package/dist/cjs/src/types/session.js.map +1 -0
  128. package/dist/cjs/src/types/template.d.ts +30 -0
  129. package/dist/cjs/src/types/template.d.ts.map +1 -0
  130. package/dist/cjs/src/types/template.js +3 -0
  131. package/dist/cjs/src/types/template.js.map +1 -0
  132. package/dist/cjs/{types → src/types}/tool.d.ts +6 -8
  133. package/dist/cjs/src/types/tool.d.ts.map +1 -0
  134. package/dist/cjs/{types → src/types}/tool.js.map +1 -1
  135. package/dist/cjs/src/utils/clone.d.ts +8 -0
  136. package/dist/cjs/src/utils/clone.d.ts.map +1 -0
  137. package/dist/cjs/src/utils/clone.js +36 -0
  138. package/dist/cjs/src/utils/clone.js.map +1 -0
  139. package/dist/{utils → cjs/src/utils}/event.d.ts +1 -1
  140. package/dist/cjs/src/utils/event.d.ts.map +1 -0
  141. package/dist/cjs/{utils → src/utils}/event.js +2 -2
  142. package/dist/cjs/src/utils/event.js.map +1 -0
  143. package/dist/cjs/src/utils/history.d.ts +31 -0
  144. package/dist/cjs/src/utils/history.d.ts.map +1 -0
  145. package/dist/cjs/src/utils/history.js +128 -0
  146. package/dist/cjs/src/utils/history.js.map +1 -0
  147. package/dist/cjs/src/utils/id.d.ts.map +1 -0
  148. package/dist/cjs/src/utils/id.js.map +1 -0
  149. package/dist/cjs/src/utils/index.d.ts +13 -0
  150. package/dist/cjs/src/utils/index.d.ts.map +1 -0
  151. package/dist/cjs/src/utils/index.js +49 -0
  152. package/dist/cjs/src/utils/index.js.map +1 -0
  153. package/dist/cjs/src/utils/logger.d.ts.map +1 -0
  154. package/dist/cjs/src/utils/logger.js.map +1 -0
  155. package/dist/cjs/src/utils/retry.d.ts.map +1 -0
  156. package/dist/cjs/src/utils/retry.js.map +1 -0
  157. package/dist/cjs/src/utils/session.d.ts +51 -0
  158. package/dist/cjs/src/utils/session.d.ts.map +1 -0
  159. package/dist/cjs/{types → src/utils}/session.js +34 -11
  160. package/dist/cjs/src/utils/session.js.map +1 -0
  161. package/dist/cjs/src/utils/template.d.ts +107 -0
  162. package/dist/cjs/src/utils/template.d.ts.map +1 -0
  163. package/dist/cjs/src/utils/template.js +283 -0
  164. package/dist/cjs/src/utils/template.js.map +1 -0
  165. package/dist/{cjs → src}/adapters/MemoryAdapter.d.ts +4 -4
  166. package/dist/src/adapters/MemoryAdapter.d.ts.map +1 -0
  167. package/dist/{adapters → src/adapters}/MemoryAdapter.js +41 -21
  168. package/dist/src/adapters/MemoryAdapter.js.map +1 -0
  169. package/dist/{cjs → src}/adapters/MongoAdapter.d.ts +3 -3
  170. package/dist/src/adapters/MongoAdapter.d.ts.map +1 -0
  171. package/dist/{adapters → src/adapters}/MongoAdapter.js +2 -1
  172. package/dist/src/adapters/MongoAdapter.js.map +1 -0
  173. package/dist/{adapters → src/adapters}/OpenSearchAdapter.d.ts +3 -3
  174. package/dist/src/adapters/OpenSearchAdapter.d.ts.map +1 -0
  175. package/dist/{adapters → src/adapters}/OpenSearchAdapter.js +10 -13
  176. package/dist/src/adapters/OpenSearchAdapter.js.map +1 -0
  177. package/dist/{adapters → src/adapters}/PostgreSQLAdapter.d.ts +3 -3
  178. package/dist/src/adapters/PostgreSQLAdapter.d.ts.map +1 -0
  179. package/dist/{adapters → src/adapters}/PostgreSQLAdapter.js +1 -1
  180. package/dist/src/adapters/PostgreSQLAdapter.js.map +1 -0
  181. package/dist/{adapters → src/adapters}/PrismaAdapter.d.ts +3 -3
  182. package/dist/src/adapters/PrismaAdapter.d.ts.map +1 -0
  183. package/dist/{adapters → src/adapters}/PrismaAdapter.js +35 -5
  184. package/dist/src/adapters/PrismaAdapter.js.map +1 -0
  185. package/dist/{adapters → src/adapters}/RedisAdapter.d.ts +3 -3
  186. package/dist/src/adapters/RedisAdapter.d.ts.map +1 -0
  187. package/dist/{adapters → src/adapters}/RedisAdapter.js +3 -2
  188. package/dist/src/adapters/RedisAdapter.js.map +1 -0
  189. package/dist/{cjs → src}/adapters/SQLiteAdapter.d.ts +3 -3
  190. package/dist/src/adapters/SQLiteAdapter.d.ts.map +1 -0
  191. package/dist/{adapters → src/adapters}/SQLiteAdapter.js +2 -1
  192. package/dist/src/adapters/SQLiteAdapter.js.map +1 -0
  193. package/dist/src/adapters/index.js.map +1 -0
  194. package/dist/src/constants/index.js.map +1 -0
  195. package/dist/{cjs → src}/core/Agent.d.ts +65 -67
  196. package/dist/src/core/Agent.d.ts.map +1 -0
  197. package/dist/src/core/Agent.js +1429 -0
  198. package/dist/src/core/Agent.js.map +1 -0
  199. package/dist/src/core/Events.d.ts +26 -0
  200. package/dist/src/core/Events.d.ts.map +1 -0
  201. package/dist/src/core/Events.js +137 -0
  202. package/dist/src/core/Events.js.map +1 -0
  203. package/dist/{cjs → src}/core/PersistenceManager.d.ts +21 -19
  204. package/dist/src/core/PersistenceManager.d.ts.map +1 -0
  205. package/dist/{core → src/core}/PersistenceManager.js +47 -17
  206. package/dist/src/core/PersistenceManager.js.map +1 -0
  207. package/dist/src/core/PromptComposer.d.ts +27 -0
  208. package/dist/src/core/PromptComposer.d.ts.map +1 -0
  209. package/dist/src/core/PromptComposer.js +153 -0
  210. package/dist/src/core/PromptComposer.js.map +1 -0
  211. package/dist/src/core/ResponseEngine.d.ts +31 -0
  212. package/dist/src/core/ResponseEngine.d.ts.map +1 -0
  213. package/dist/src/core/ResponseEngine.js +80 -0
  214. package/dist/src/core/ResponseEngine.js.map +1 -0
  215. package/dist/src/core/ResponsePipeline.d.ts +143 -0
  216. package/dist/src/core/ResponsePipeline.d.ts.map +1 -0
  217. package/dist/src/core/ResponsePipeline.js +442 -0
  218. package/dist/src/core/ResponsePipeline.js.map +1 -0
  219. package/dist/src/core/Route.d.ts +126 -0
  220. package/dist/src/core/Route.d.ts.map +1 -0
  221. package/dist/{core → src/core}/Route.js +116 -20
  222. package/dist/src/core/Route.js.map +1 -0
  223. package/dist/{cjs → src}/core/RoutingEngine.d.ts +33 -38
  224. package/dist/src/core/RoutingEngine.d.ts.map +1 -0
  225. package/dist/{core → src/core}/RoutingEngine.js +98 -104
  226. package/dist/src/core/RoutingEngine.js.map +1 -0
  227. package/dist/src/core/SessionManager.d.ts +76 -0
  228. package/dist/src/core/SessionManager.d.ts.map +1 -0
  229. package/dist/src/core/SessionManager.js +193 -0
  230. package/dist/src/core/SessionManager.js.map +1 -0
  231. package/dist/src/core/Step.d.ts +96 -0
  232. package/dist/src/core/Step.d.ts.map +1 -0
  233. package/dist/src/core/Step.js +202 -0
  234. package/dist/src/core/Step.js.map +1 -0
  235. package/dist/src/core/ToolExecutor.d.ts +43 -0
  236. package/dist/src/core/ToolExecutor.d.ts.map +1 -0
  237. package/dist/src/core/ToolExecutor.js +70 -0
  238. package/dist/src/core/ToolExecutor.js.map +1 -0
  239. package/dist/{cjs → src}/index.d.ts +7 -15
  240. package/dist/src/index.d.ts.map +1 -0
  241. package/dist/{index.js → src/index.js} +6 -7
  242. package/dist/src/index.js.map +1 -0
  243. package/dist/{providers → src/providers}/AnthropicProvider.d.ts +1 -1
  244. package/dist/src/providers/AnthropicProvider.d.ts.map +1 -0
  245. package/dist/{providers → src/providers}/AnthropicProvider.js +54 -2
  246. package/dist/src/providers/AnthropicProvider.js.map +1 -0
  247. package/dist/{cjs → src}/providers/GeminiProvider.d.ts +1 -1
  248. package/dist/{cjs → src}/providers/GeminiProvider.d.ts.map +1 -1
  249. package/dist/{providers → src/providers}/GeminiProvider.js +65 -0
  250. package/dist/src/providers/GeminiProvider.js.map +1 -0
  251. package/dist/{providers → src/providers}/OpenAIProvider.d.ts +1 -1
  252. package/dist/{cjs → src}/providers/OpenAIProvider.d.ts.map +1 -1
  253. package/dist/{providers → src/providers}/OpenAIProvider.js +70 -1
  254. package/dist/src/providers/OpenAIProvider.js.map +1 -0
  255. package/dist/{cjs → src}/providers/OpenRouterProvider.d.ts +1 -1
  256. package/dist/{cjs → src}/providers/OpenRouterProvider.d.ts.map +1 -1
  257. package/dist/{providers → src/providers}/OpenRouterProvider.js +76 -0
  258. package/dist/src/providers/OpenRouterProvider.js.map +1 -0
  259. package/dist/src/providers/index.js.map +1 -0
  260. package/dist/{types → src/types}/agent.d.ts +52 -33
  261. package/dist/src/types/agent.d.ts.map +1 -0
  262. package/dist/src/types/agent.js.map +1 -0
  263. package/dist/{types → src/types}/ai.d.ts +7 -0
  264. package/dist/src/types/ai.d.ts.map +1 -0
  265. package/dist/{cjs → src}/types/ai.js.map +1 -1
  266. package/dist/{cjs → src}/types/history.d.ts +76 -18
  267. package/dist/src/types/history.d.ts.map +1 -0
  268. package/dist/src/types/history.js +30 -0
  269. package/dist/src/types/history.js.map +1 -0
  270. package/dist/src/types/index.d.ts +20 -0
  271. package/dist/src/types/index.d.ts.map +1 -0
  272. package/dist/src/types/index.js +10 -0
  273. package/dist/src/types/index.js.map +1 -0
  274. package/dist/{cjs → src}/types/persistence.d.ts +39 -23
  275. package/dist/src/types/persistence.d.ts.map +1 -0
  276. package/dist/src/types/persistence.js.map +1 -0
  277. package/dist/{types → src/types}/route.d.ts +85 -31
  278. package/dist/src/types/route.d.ts.map +1 -0
  279. package/dist/{types → src/types}/route.js.map +1 -1
  280. package/dist/src/types/session.d.ts +70 -0
  281. package/dist/src/types/session.d.ts.map +1 -0
  282. package/dist/src/types/session.js +5 -0
  283. package/dist/src/types/session.js.map +1 -0
  284. package/dist/src/types/template.d.ts +30 -0
  285. package/dist/src/types/template.d.ts.map +1 -0
  286. package/dist/src/types/template.js +2 -0
  287. package/dist/src/types/template.js.map +1 -0
  288. package/dist/{types → src/types}/tool.d.ts +6 -8
  289. package/dist/{cjs → src}/types/tool.d.ts.map +1 -1
  290. package/dist/{types → src/types}/tool.js.map +1 -1
  291. package/dist/src/utils/clone.d.ts +8 -0
  292. package/dist/src/utils/clone.d.ts.map +1 -0
  293. package/dist/src/utils/clone.js +33 -0
  294. package/dist/src/utils/clone.js.map +1 -0
  295. package/dist/{cjs → src}/utils/event.d.ts +1 -1
  296. package/dist/{cjs → src}/utils/event.d.ts.map +1 -1
  297. package/dist/{utils → src/utils}/event.js +1 -1
  298. package/dist/src/utils/event.js.map +1 -0
  299. package/dist/src/utils/history.d.ts +31 -0
  300. package/dist/src/utils/history.d.ts.map +1 -0
  301. package/dist/src/utils/history.js +121 -0
  302. package/dist/src/utils/history.js.map +1 -0
  303. package/dist/src/utils/id.js.map +1 -0
  304. package/dist/src/utils/index.d.ts +13 -0
  305. package/dist/src/utils/index.d.ts.map +1 -0
  306. package/dist/src/utils/index.js +19 -0
  307. package/dist/src/utils/index.js.map +1 -0
  308. package/dist/src/utils/logger.js.map +1 -0
  309. package/dist/src/utils/retry.js.map +1 -0
  310. package/dist/src/utils/session.d.ts +51 -0
  311. package/dist/src/utils/session.d.ts.map +1 -0
  312. package/dist/{types → src/utils}/session.js +32 -11
  313. package/dist/src/utils/session.js.map +1 -0
  314. package/dist/src/utils/template.d.ts +107 -0
  315. package/dist/src/utils/template.d.ts.map +1 -0
  316. package/dist/src/utils/template.js +276 -0
  317. package/dist/src/utils/template.js.map +1 -0
  318. package/docs/README.md +174 -68
  319. package/docs/{API_REFERENCE.md → api/README.md} +890 -251
  320. package/docs/api/overview.md +798 -0
  321. package/docs/core/agent/README.md +642 -0
  322. package/docs/{CONTEXT_MANAGEMENT.md → core/agent/context-management.md} +143 -94
  323. package/docs/{ARCHITECTURE.md → core/agent/session-management.md} +74 -59
  324. package/docs/core/ai-integration/prompt-composition.md +196 -0
  325. package/docs/core/ai-integration/providers.md +515 -0
  326. package/docs/core/ai-integration/response-processing.md +165 -0
  327. package/docs/core/conversation-flows/data-collection.md +545 -0
  328. package/docs/core/conversation-flows/route-dsl.md +479 -0
  329. package/docs/core/conversation-flows/routes.md +61 -0
  330. package/docs/core/conversation-flows/step-transitions.md +595 -0
  331. package/docs/core/conversation-flows/steps.md +130 -0
  332. package/docs/{ADAPTERS.md → core/persistence/adapters.md} +1 -1
  333. package/docs/core/persistence/session-storage.md +644 -0
  334. package/docs/core/routing/intelligent-routing.md +339 -0
  335. package/docs/core/tools/tool-definition.md +346 -0
  336. package/docs/core/tools/tool-execution.md +815 -0
  337. package/docs/core/tools/tool-scoping.md +628 -0
  338. package/docs/guides/getting-started/README.md +384 -0
  339. package/examples/{company-qna-agent.ts → advanced-patterns/knowledge-based-agent.ts} +104 -69
  340. package/examples/{persistent-onboarding.ts → advanced-patterns/persistent-onboarding.ts} +181 -103
  341. package/examples/{rules-prohibitions.ts → advanced-patterns/route-lifecycle-hooks.ts} +102 -82
  342. package/examples/{streaming-agent.ts → advanced-patterns/streaming-responses.ts} +90 -69
  343. package/examples/ai-providers/anthropic-integration.ts +377 -0
  344. package/examples/{openai-agent.ts → ai-providers/openai-integration.ts} +37 -43
  345. package/examples/{route-transitions.ts → conversation-flows/completion-transitions.ts} +112 -105
  346. package/examples/{declarative-agent.ts → core-concepts/basic-agent.ts} +175 -131
  347. package/examples/core-concepts/schema-driven-extraction.ts +301 -0
  348. package/examples/core-concepts/session-management.ts +394 -0
  349. package/examples/integrations/database-integration.ts +615 -0
  350. package/examples/{healthcare-agent.ts → integrations/healthcare-integration.ts} +204 -111
  351. package/examples/{opensearch-persistence.ts → integrations/search-integration.ts} +159 -128
  352. package/examples/integrations/server-session-management.ts +299 -0
  353. package/examples/persistence/custom-adapter.ts +529 -0
  354. package/examples/{prisma-persistence.ts → persistence/database-persistence.ts} +168 -241
  355. package/examples/persistence/memory-sessions.ts +506 -0
  356. package/examples/{prisma-schema.example.prisma → persistence/prisma-schema.example.prisma} +1 -1
  357. package/examples/{redis-persistence.ts → persistence/redis-persistence.ts} +152 -173
  358. package/examples/tools/basic-tools.ts +550 -0
  359. package/examples/{extracted-data-modification.ts → tools/data-enrichment-tools.ts} +82 -79
  360. package/package.json +14 -10
  361. package/src/adapters/MemoryAdapter.ts +74 -46
  362. package/src/adapters/MongoAdapter.ts +33 -24
  363. package/src/adapters/OpenSearchAdapter.ts +41 -37
  364. package/src/adapters/PostgreSQLAdapter.ts +35 -24
  365. package/src/adapters/PrismaAdapter.ts +69 -27
  366. package/src/adapters/RedisAdapter.ts +38 -26
  367. package/src/adapters/SQLiteAdapter.ts +32 -22
  368. package/src/core/Agent.ts +1093 -478
  369. package/src/core/Events.ts +100 -112
  370. package/src/core/PersistenceManager.ts +77 -47
  371. package/src/core/PromptComposer.ts +158 -85
  372. package/src/core/ResponseEngine.ts +118 -38
  373. package/src/core/ResponsePipeline.ts +715 -0
  374. package/src/core/Route.ts +168 -51
  375. package/src/core/RoutingEngine.ts +178 -209
  376. package/src/core/SessionManager.ts +241 -0
  377. package/src/core/Step.ts +149 -67
  378. package/src/core/ToolExecutor.ts +37 -42
  379. package/src/index.ts +31 -37
  380. package/src/providers/AnthropicProvider.ts +71 -5
  381. package/src/providers/GeminiProvider.ts +83 -2
  382. package/src/providers/OpenAIProvider.ts +95 -3
  383. package/src/providers/OpenRouterProvider.ts +102 -2
  384. package/src/types/agent.ts +48 -36
  385. package/src/types/ai.ts +7 -0
  386. package/src/types/history.ts +91 -18
  387. package/src/types/index.ts +43 -7
  388. package/src/types/persistence.ts +46 -28
  389. package/src/types/route.ts +104 -45
  390. package/src/types/session.ts +19 -213
  391. package/src/types/template.ts +36 -0
  392. package/src/types/tool.ts +9 -11
  393. package/src/utils/clone.ts +36 -0
  394. package/src/utils/event.ts +1 -1
  395. package/src/utils/history.ts +143 -0
  396. package/src/utils/index.ts +53 -0
  397. package/src/utils/session.ts +229 -0
  398. package/src/utils/template.ts +335 -0
  399. package/dist/adapters/MemoryAdapter.d.ts.map +0 -1
  400. package/dist/adapters/MemoryAdapter.js.map +0 -1
  401. package/dist/adapters/MongoAdapter.d.ts.map +0 -1
  402. package/dist/adapters/MongoAdapter.js.map +0 -1
  403. package/dist/adapters/OpenSearchAdapter.d.ts.map +0 -1
  404. package/dist/adapters/OpenSearchAdapter.js.map +0 -1
  405. package/dist/adapters/PostgreSQLAdapter.d.ts.map +0 -1
  406. package/dist/adapters/PostgreSQLAdapter.js.map +0 -1
  407. package/dist/adapters/PrismaAdapter.d.ts.map +0 -1
  408. package/dist/adapters/PrismaAdapter.js.map +0 -1
  409. package/dist/adapters/RedisAdapter.d.ts.map +0 -1
  410. package/dist/adapters/RedisAdapter.js.map +0 -1
  411. package/dist/adapters/SQLiteAdapter.d.ts.map +0 -1
  412. package/dist/adapters/SQLiteAdapter.js.map +0 -1
  413. package/dist/adapters/index.d.ts.map +0 -1
  414. package/dist/adapters/index.js.map +0 -1
  415. package/dist/cjs/adapters/MemoryAdapter.d.ts.map +0 -1
  416. package/dist/cjs/adapters/MemoryAdapter.js.map +0 -1
  417. package/dist/cjs/adapters/MongoAdapter.d.ts.map +0 -1
  418. package/dist/cjs/adapters/MongoAdapter.js.map +0 -1
  419. package/dist/cjs/adapters/OpenSearchAdapter.d.ts.map +0 -1
  420. package/dist/cjs/adapters/OpenSearchAdapter.js.map +0 -1
  421. package/dist/cjs/adapters/PostgreSQLAdapter.d.ts.map +0 -1
  422. package/dist/cjs/adapters/PostgreSQLAdapter.js.map +0 -1
  423. package/dist/cjs/adapters/PrismaAdapter.d.ts.map +0 -1
  424. package/dist/cjs/adapters/PrismaAdapter.js.map +0 -1
  425. package/dist/cjs/adapters/RedisAdapter.d.ts.map +0 -1
  426. package/dist/cjs/adapters/RedisAdapter.js.map +0 -1
  427. package/dist/cjs/adapters/SQLiteAdapter.d.ts.map +0 -1
  428. package/dist/cjs/adapters/SQLiteAdapter.js.map +0 -1
  429. package/dist/cjs/adapters/index.js.map +0 -1
  430. package/dist/cjs/constants/index.js.map +0 -1
  431. package/dist/cjs/core/Agent.d.ts.map +0 -1
  432. package/dist/cjs/core/Agent.js +0 -966
  433. package/dist/cjs/core/Agent.js.map +0 -1
  434. package/dist/cjs/core/DomainRegistry.d.ts +0 -36
  435. package/dist/cjs/core/DomainRegistry.d.ts.map +0 -1
  436. package/dist/cjs/core/DomainRegistry.js +0 -72
  437. package/dist/cjs/core/DomainRegistry.js.map +0 -1
  438. package/dist/cjs/core/Events.d.ts +0 -41
  439. package/dist/cjs/core/Events.d.ts.map +0 -1
  440. package/dist/cjs/core/Events.js +0 -99
  441. package/dist/cjs/core/Events.js.map +0 -1
  442. package/dist/cjs/core/PersistenceManager.d.ts.map +0 -1
  443. package/dist/cjs/core/PersistenceManager.js.map +0 -1
  444. package/dist/cjs/core/PromptComposer.d.ts +0 -24
  445. package/dist/cjs/core/PromptComposer.d.ts.map +0 -1
  446. package/dist/cjs/core/PromptComposer.js +0 -127
  447. package/dist/cjs/core/PromptComposer.js.map +0 -1
  448. package/dist/cjs/core/ResponseEngine.d.ts +0 -14
  449. package/dist/cjs/core/ResponseEngine.d.ts.map +0 -1
  450. package/dist/cjs/core/ResponseEngine.js +0 -56
  451. package/dist/cjs/core/ResponseEngine.js.map +0 -1
  452. package/dist/cjs/core/Route.d.ts +0 -90
  453. package/dist/cjs/core/Route.d.ts.map +0 -1
  454. package/dist/cjs/core/Route.js.map +0 -1
  455. package/dist/cjs/core/RoutingEngine.d.ts.map +0 -1
  456. package/dist/cjs/core/RoutingEngine.js.map +0 -1
  457. package/dist/cjs/core/Step.d.ts +0 -72
  458. package/dist/cjs/core/Step.d.ts.map +0 -1
  459. package/dist/cjs/core/Step.js +0 -150
  460. package/dist/cjs/core/Step.js.map +0 -1
  461. package/dist/cjs/core/Tool.d.ts +0 -39
  462. package/dist/cjs/core/Tool.d.ts.map +0 -1
  463. package/dist/cjs/core/Tool.js +0 -34
  464. package/dist/cjs/core/Tool.js.map +0 -1
  465. package/dist/cjs/core/ToolExecutor.d.ts +0 -29
  466. package/dist/cjs/core/ToolExecutor.d.ts.map +0 -1
  467. package/dist/cjs/core/ToolExecutor.js.map +0 -1
  468. package/dist/cjs/core/Transition.d.ts +0 -32
  469. package/dist/cjs/core/Transition.d.ts.map +0 -1
  470. package/dist/cjs/core/Transition.js +0 -89
  471. package/dist/cjs/core/Transition.js.map +0 -1
  472. package/dist/cjs/index.d.ts.map +0 -1
  473. package/dist/cjs/index.js.map +0 -1
  474. package/dist/cjs/providers/AnthropicProvider.d.ts.map +0 -1
  475. package/dist/cjs/providers/AnthropicProvider.js.map +0 -1
  476. package/dist/cjs/providers/GeminiProvider.js.map +0 -1
  477. package/dist/cjs/providers/OpenAIProvider.js.map +0 -1
  478. package/dist/cjs/providers/OpenRouterProvider.js.map +0 -1
  479. package/dist/cjs/providers/index.js.map +0 -1
  480. package/dist/cjs/types/agent.d.ts.map +0 -1
  481. package/dist/cjs/types/agent.js.map +0 -1
  482. package/dist/cjs/types/ai.d.ts.map +0 -1
  483. package/dist/cjs/types/history.d.ts.map +0 -1
  484. package/dist/cjs/types/history.js +0 -37
  485. package/dist/cjs/types/history.js.map +0 -1
  486. package/dist/cjs/types/index.d.ts +0 -12
  487. package/dist/cjs/types/index.d.ts.map +0 -1
  488. package/dist/cjs/types/index.js +0 -12
  489. package/dist/cjs/types/index.js.map +0 -1
  490. package/dist/cjs/types/persistence.d.ts.map +0 -1
  491. package/dist/cjs/types/persistence.js.map +0 -1
  492. package/dist/cjs/types/route.d.ts.map +0 -1
  493. package/dist/cjs/types/session.d.ts +0 -104
  494. package/dist/cjs/types/session.d.ts.map +0 -1
  495. package/dist/cjs/types/session.js.map +0 -1
  496. package/dist/cjs/utils/event.js.map +0 -1
  497. package/dist/cjs/utils/id.js.map +0 -1
  498. package/dist/cjs/utils/logger.js.map +0 -1
  499. package/dist/cjs/utils/retry.js.map +0 -1
  500. package/dist/constants/index.d.ts.map +0 -1
  501. package/dist/constants/index.js.map +0 -1
  502. package/dist/core/Agent.d.ts.map +0 -1
  503. package/dist/core/Agent.js +0 -962
  504. package/dist/core/Agent.js.map +0 -1
  505. package/dist/core/DomainRegistry.d.ts +0 -36
  506. package/dist/core/DomainRegistry.d.ts.map +0 -1
  507. package/dist/core/DomainRegistry.js +0 -68
  508. package/dist/core/DomainRegistry.js.map +0 -1
  509. package/dist/core/Events.d.ts +0 -41
  510. package/dist/core/Events.d.ts.map +0 -1
  511. package/dist/core/Events.js +0 -94
  512. package/dist/core/Events.js.map +0 -1
  513. package/dist/core/PersistenceManager.d.ts.map +0 -1
  514. package/dist/core/PersistenceManager.js.map +0 -1
  515. package/dist/core/PromptComposer.d.ts +0 -24
  516. package/dist/core/PromptComposer.d.ts.map +0 -1
  517. package/dist/core/PromptComposer.js +0 -123
  518. package/dist/core/PromptComposer.js.map +0 -1
  519. package/dist/core/ResponseEngine.d.ts +0 -14
  520. package/dist/core/ResponseEngine.d.ts.map +0 -1
  521. package/dist/core/ResponseEngine.js +0 -52
  522. package/dist/core/ResponseEngine.js.map +0 -1
  523. package/dist/core/Route.d.ts +0 -90
  524. package/dist/core/Route.d.ts.map +0 -1
  525. package/dist/core/Route.js.map +0 -1
  526. package/dist/core/RoutingEngine.d.ts.map +0 -1
  527. package/dist/core/RoutingEngine.js.map +0 -1
  528. package/dist/core/Step.d.ts +0 -72
  529. package/dist/core/Step.d.ts.map +0 -1
  530. package/dist/core/Step.js +0 -146
  531. package/dist/core/Step.js.map +0 -1
  532. package/dist/core/Tool.d.ts +0 -39
  533. package/dist/core/Tool.d.ts.map +0 -1
  534. package/dist/core/Tool.js +0 -31
  535. package/dist/core/Tool.js.map +0 -1
  536. package/dist/core/ToolExecutor.d.ts +0 -29
  537. package/dist/core/ToolExecutor.d.ts.map +0 -1
  538. package/dist/core/ToolExecutor.js +0 -69
  539. package/dist/core/ToolExecutor.js.map +0 -1
  540. package/dist/core/Transition.d.ts +0 -32
  541. package/dist/core/Transition.d.ts.map +0 -1
  542. package/dist/core/Transition.js +0 -85
  543. package/dist/core/Transition.js.map +0 -1
  544. package/dist/index.d.ts.map +0 -1
  545. package/dist/index.js.map +0 -1
  546. package/dist/providers/AnthropicProvider.d.ts.map +0 -1
  547. package/dist/providers/AnthropicProvider.js.map +0 -1
  548. package/dist/providers/GeminiProvider.d.ts.map +0 -1
  549. package/dist/providers/GeminiProvider.js.map +0 -1
  550. package/dist/providers/OpenAIProvider.d.ts.map +0 -1
  551. package/dist/providers/OpenAIProvider.js.map +0 -1
  552. package/dist/providers/OpenRouterProvider.d.ts.map +0 -1
  553. package/dist/providers/OpenRouterProvider.js.map +0 -1
  554. package/dist/providers/index.d.ts.map +0 -1
  555. package/dist/providers/index.js.map +0 -1
  556. package/dist/types/agent.d.ts.map +0 -1
  557. package/dist/types/agent.js.map +0 -1
  558. package/dist/types/ai.d.ts.map +0 -1
  559. package/dist/types/ai.js.map +0 -1
  560. package/dist/types/history.d.ts.map +0 -1
  561. package/dist/types/history.js +0 -34
  562. package/dist/types/history.js.map +0 -1
  563. package/dist/types/index.d.ts +0 -12
  564. package/dist/types/index.d.ts.map +0 -1
  565. package/dist/types/index.js +0 -6
  566. package/dist/types/index.js.map +0 -1
  567. package/dist/types/persistence.d.ts.map +0 -1
  568. package/dist/types/persistence.js.map +0 -1
  569. package/dist/types/route.d.ts.map +0 -1
  570. package/dist/types/routing.d.ts.map +0 -1
  571. package/dist/types/schema.d.ts.map +0 -1
  572. package/dist/types/session.d.ts +0 -104
  573. package/dist/types/session.d.ts.map +0 -1
  574. package/dist/types/session.js.map +0 -1
  575. package/dist/types/tool.d.ts.map +0 -1
  576. package/dist/utils/event.d.ts.map +0 -1
  577. package/dist/utils/event.js.map +0 -1
  578. package/dist/utils/id.d.ts.map +0 -1
  579. package/dist/utils/id.js.map +0 -1
  580. package/dist/utils/logger.d.ts.map +0 -1
  581. package/dist/utils/logger.js.map +0 -1
  582. package/dist/utils/retry.d.ts.map +0 -1
  583. package/dist/utils/retry.js.map +0 -1
  584. package/docs/AGENT.md +0 -535
  585. package/docs/DOCS.md +0 -263
  586. package/docs/DOMAINS.md +0 -735
  587. package/docs/EXAMPLES.md +0 -467
  588. package/docs/GETTING_STARTED.md +0 -424
  589. package/docs/PERSISTENCE.md +0 -815
  590. package/docs/PROVIDERS.md +0 -612
  591. package/docs/ROUTES.md +0 -1085
  592. package/docs/STEPS.md +0 -883
  593. package/examples/business-onboarding.ts +0 -791
  594. package/examples/custom-database-persistence.ts +0 -574
  595. package/examples/domain-scoping.ts +0 -366
  596. package/examples/travel-agent.ts +0 -584
  597. package/src/core/DomainRegistry.ts +0 -80
  598. package/src/core/Tool.ts +0 -112
  599. package/src/core/Transition.ts +0 -115
  600. /package/dist/{adapters → cjs/src/adapters}/index.d.ts +0 -0
  601. /package/dist/cjs/{adapters → src/adapters}/index.js +0 -0
  602. /package/dist/cjs/{constants → src/constants}/index.d.ts +0 -0
  603. /package/dist/cjs/{constants → src/constants}/index.js +0 -0
  604. /package/dist/cjs/{providers → src/providers}/index.d.ts +0 -0
  605. /package/dist/cjs/{providers → src/providers}/index.js +0 -0
  606. /package/dist/cjs/{types → src/types}/agent.js +0 -0
  607. /package/dist/cjs/{types → src/types}/ai.js +0 -0
  608. /package/dist/cjs/{types → src/types}/persistence.js +0 -0
  609. /package/dist/cjs/{types → src/types}/route.js +0 -0
  610. /package/dist/cjs/{types → src/types}/routing.d.ts +0 -0
  611. /package/dist/cjs/{types → src/types}/routing.js +0 -0
  612. /package/dist/cjs/{types → src/types}/schema.d.ts +0 -0
  613. /package/dist/cjs/{types → src/types}/schema.js +0 -0
  614. /package/dist/cjs/{types → src/types}/tool.js +0 -0
  615. /package/dist/cjs/{utils → src/utils}/id.d.ts +0 -0
  616. /package/dist/cjs/{utils → src/utils}/id.js +0 -0
  617. /package/dist/cjs/{utils → src/utils}/logger.d.ts +0 -0
  618. /package/dist/cjs/{utils → src/utils}/logger.js +0 -0
  619. /package/dist/cjs/{utils → src/utils}/retry.d.ts +0 -0
  620. /package/dist/cjs/{utils → src/utils}/retry.js +0 -0
  621. /package/dist/{cjs → src}/adapters/index.d.ts +0 -0
  622. /package/dist/{cjs → src}/adapters/index.d.ts.map +0 -0
  623. /package/dist/{adapters → src/adapters}/index.js +0 -0
  624. /package/dist/{constants → src/constants}/index.d.ts +0 -0
  625. /package/dist/{cjs → src}/constants/index.d.ts.map +0 -0
  626. /package/dist/{constants → src/constants}/index.js +0 -0
  627. /package/dist/{providers → src/providers}/index.d.ts +0 -0
  628. /package/dist/{cjs → src}/providers/index.d.ts.map +0 -0
  629. /package/dist/{providers → src/providers}/index.js +0 -0
  630. /package/dist/{types → src/types}/agent.js +0 -0
  631. /package/dist/{types → src/types}/ai.js +0 -0
  632. /package/dist/{types → src/types}/persistence.js +0 -0
  633. /package/dist/{types → src/types}/route.js +0 -0
  634. /package/dist/{types → src/types}/routing.d.ts +0 -0
  635. /package/dist/{cjs → src}/types/routing.d.ts.map +0 -0
  636. /package/dist/{types → src/types}/routing.js +0 -0
  637. /package/dist/{cjs → src}/types/routing.js.map +0 -0
  638. /package/dist/{types → src/types}/schema.d.ts +0 -0
  639. /package/dist/{cjs → src}/types/schema.d.ts.map +0 -0
  640. /package/dist/{types → src/types}/schema.js +0 -0
  641. /package/dist/{cjs → src}/types/schema.js.map +0 -0
  642. /package/dist/{types → src/types}/tool.js +0 -0
  643. /package/dist/{utils → src/utils}/id.d.ts +0 -0
  644. /package/dist/{cjs → src}/utils/id.d.ts.map +0 -0
  645. /package/dist/{utils → src/utils}/id.js +0 -0
  646. /package/dist/{utils → src/utils}/logger.d.ts +0 -0
  647. /package/dist/{cjs → src}/utils/logger.d.ts.map +0 -0
  648. /package/dist/{utils → src/utils}/logger.js +0 -0
  649. /package/dist/{utils → src/utils}/retry.d.ts +0 -0
  650. /package/dist/{cjs → src}/utils/retry.d.ts.map +0 -0
  651. /package/dist/{utils → src/utils}/retry.js +0 -0
  652. /package/docs/{PUBLISHING.md → guides/advanced-patterns/publishing.md} +0 -0
@@ -6,15 +6,7 @@
6
6
  * in different conversation routes (e.g., WhatsApp bot with different styles)
7
7
  */
8
8
 
9
- import {
10
- Agent,
11
- type Event,
12
- type MessageEventData,
13
- EventKind,
14
- EventSource,
15
- END_ROUTE,
16
- } from "../src";
17
- import { OpenAIProvider } from "../src/providers/OpenAIProvider";
9
+ import { Agent, type History, END_ROUTE, OpenAIProvider } from "../../src";
18
10
 
19
11
  /**
20
12
  * Configuration for the AI provider
@@ -34,6 +26,60 @@ const agent = new Agent({
34
26
  goal: "Provide excellent customer service by following route-specific rules and prohibitions.",
35
27
  provider,
36
28
  debug: true,
29
+
30
+ // Knowledge base with customer service best practices
31
+ knowledgeBase: {
32
+ communicationGuidelines: {
33
+ channels: {
34
+ whatsapp: {
35
+ maxMessageLength: "1000 characters",
36
+ supports: ["text", "images", "documents"],
37
+ bestFor: [
38
+ "Quick questions",
39
+ "Personal communication",
40
+ "Mobile users",
41
+ ],
42
+ },
43
+ email: {
44
+ maxMessageLength: "No limit",
45
+ supports: ["text", "attachments", "formatting"],
46
+ bestFor: [
47
+ "Detailed inquiries",
48
+ "Documentation",
49
+ "Formal communication",
50
+ ],
51
+ },
52
+ chat: {
53
+ maxMessageLength: "Real-time",
54
+ supports: ["text", "quick responses"],
55
+ bestFor: ["Immediate help", "Simple questions", "Live support"],
56
+ },
57
+ },
58
+ toneGuidelines: {
59
+ professional: "Formal language, complete sentences, proper grammar",
60
+ casual: "Friendly language, contractions, emojis allowed",
61
+ urgent: "Direct, clear, action-oriented language",
62
+ },
63
+ },
64
+ escalationPaths: {
65
+ technical: "Route to technical support team",
66
+ billing: "Route to billing department",
67
+ complaint: "Route to customer success manager",
68
+ legal: "Route to legal/compliance team",
69
+ },
70
+ responseTimeTargets: {
71
+ whatsapp: "Within 5 minutes during business hours",
72
+ email: "Within 24 hours",
73
+ chat: "Immediate response",
74
+ emergency: "Immediate escalation",
75
+ },
76
+ customerSegments: {
77
+ new: "Welcome warmly, provide overview, offer help",
78
+ returning: "Personalize greeting, reference history, anticipate needs",
79
+ vip: "Priority service, direct manager access, special offers",
80
+ enterprise: "Dedicated account manager, SLA guarantees, custom solutions",
81
+ },
82
+ },
37
83
  });
38
84
 
39
85
  /**
@@ -78,6 +124,22 @@ agent.createRoute({
78
124
  "Never send more than 2 messages without waiting for response",
79
125
  "Do not make promises you cannot keep",
80
126
  ],
127
+ // Route-level guidelines for sales behavior
128
+ guidelines: [
129
+ {
130
+ condition: "Customer mentions budget concerns",
131
+ action: "Focus on ROI and long-term value rather than upfront cost",
132
+ },
133
+ {
134
+ condition: "Customer seems hesitant or unsure",
135
+ action: "Offer a free trial or consultation to reduce risk",
136
+ },
137
+ {
138
+ condition: "Customer asks for competitors comparison",
139
+ action:
140
+ "Highlight unique strengths and differentiators without negative comments",
141
+ },
142
+ ],
81
143
  });
82
144
 
83
145
  agent.createRoute({
@@ -105,18 +167,18 @@ const techSupportRoute = agent
105
167
  .find((r) => r.title === "Technical Support")!;
106
168
  techSupportRoute.initialStep
107
169
  .nextStep({
108
- instructions: "Provide step-by-step technical assistance.",
170
+ prompt: "Provide step-by-step technical assistance.",
109
171
  })
110
172
  .nextStep({
111
- instructions: "Ask for a rating of the support provided (1-5).",
173
+ prompt: "Ask for a rating of the support provided (1-5).",
112
174
  collect: ["feedbackRating"],
113
175
  })
114
176
  .nextStep({
115
- instructions: "Ask for any additional comments.",
177
+ prompt: "Ask for any additional comments.",
116
178
  collect: ["feedbackComments"],
117
179
  })
118
180
  .nextStep({
119
- instructions: "Thank the user for their feedback.",
181
+ prompt: "Thank the user for their feedback.",
120
182
  })
121
183
  .nextStep({ step: END_ROUTE });
122
184
 
@@ -237,18 +299,18 @@ async function demonstrateRulesAndProhibitions() {
237
299
  .find((r) => r.title === "Technical Support")!;
238
300
  techSupportRoute.initialStep
239
301
  .nextStep({
240
- instructions: "Provide step-by-step technical assistance.",
302
+ prompt: "Provide step-by-step technical assistance.",
241
303
  })
242
304
  .nextStep({
243
- instructions: "Ask for a rating of the support provided (1-5).",
305
+ prompt: "Ask for a rating of the support provided (1-5).",
244
306
  collect: ["feedbackRating"],
245
307
  })
246
308
  .nextStep({
247
- instructions: "Ask for any additional comments.",
309
+ prompt: "Ask for any additional comments.",
248
310
  collect: ["feedbackComments"],
249
311
  })
250
312
  .nextStep({
251
- instructions: "Thank the user for their feedback.",
313
+ prompt: "Thank the user for their feedback.",
252
314
  })
253
315
  .nextStep({ step: END_ROUTE });
254
316
 
@@ -293,51 +355,39 @@ async function demonstrateRulesAndProhibitions() {
293
355
 
294
356
  // --- Quick Support ---
295
357
  console.info("1️⃣ Quick Support Route (short, direct)");
296
- const quickSupportHistory: Event[] = [
358
+ const quickSupportMessages: History = [
297
359
  {
298
- kind: EventKind.MESSAGE,
299
- source: EventSource.CUSTOMER,
300
- data: {
301
- participant: { display_name: "User" },
302
- message: "How do I reset my password?",
303
- },
360
+ role: "user",
361
+ content: "How do I reset my password?",
304
362
  },
305
363
  ];
306
- const response1 = await agent.respond({ history: quickSupportHistory });
364
+ const response1 = await agent.respond({ history: quickSupportMessages });
307
365
  console.info(`Route: ${response1.session?.currentRoute?.title}`);
308
366
  console.info(`Response: ${response1.message}`);
309
367
  console.info(`Expected: Short, direct, max 1 emoji\n`);
310
368
 
311
369
  // --- Sales Consultation ---
312
370
  console.info("2️⃣ Sales Consultation Route (conversational, value-first)");
313
- const salesHistory: Event[] = [
371
+ const salesMessages: History = [
314
372
  {
315
- kind: EventKind.MESSAGE,
316
- source: EventSource.CUSTOMER,
317
- data: {
318
- message: "How much does your premium plan cost?",
319
- participant: { display_name: "User" },
320
- },
373
+ role: "user",
374
+ content: "How much does your premium plan cost?",
321
375
  },
322
376
  ];
323
- const response2 = await agent.respond({ history: salesHistory });
377
+ const response2 = await agent.respond({ history: salesMessages });
324
378
  console.info(`Route: ${response2.session?.currentRoute?.title}`);
325
379
  console.info(`Response: ${response2.message}`);
326
380
  console.info(`Expected: Ask about needs, show value before price\n`);
327
381
 
328
382
  // --- Technical Support ---
329
383
  console.info("3️⃣ Technical Support Route (detailed, step-by-step)");
330
- const techSupportHistory: Event[] = [
384
+ const techSupportMessages: History = [
331
385
  {
332
- kind: EventKind.MESSAGE,
333
- source: EventSource.CUSTOMER,
334
- data: {
335
- message: "My new headphones won't connect to Bluetooth.",
336
- participant: { display_name: "User" },
337
- },
386
+ role: "user",
387
+ content: "My new headphones won't connect to Bluetooth.",
338
388
  },
339
389
  ];
340
- const response3 = await agent.respond({ history: techSupportHistory });
390
+ const response3 = await agent.respond({ history: techSupportMessages });
341
391
  console.info(`Route: ${response3.session?.currentRoute?.title}`);
342
392
  console.info(`Response: ${response3.message}`);
343
393
  console.info(`Expected: Clear steps, simple language, patient\n`);
@@ -347,34 +397,26 @@ async function demonstrateRulesAndProhibitions() {
347
397
 
348
398
  // --- Emergency Support ---
349
399
  console.info("4️⃣ Emergency Support Route (urgent, professional)");
350
- const emergencyHistory: Event[] = [
400
+ const emergencyMessages: History = [
351
401
  {
352
- kind: EventKind.MESSAGE,
353
- source: EventSource.CUSTOMER,
354
- data: {
355
- message: "My account has been compromised!",
356
- participant: { display_name: "User" },
357
- },
402
+ role: "user",
403
+ content: "My account has been compromised!",
358
404
  },
359
405
  ];
360
- const response4 = await agent.respond({ history: emergencyHistory });
406
+ const response4 = await agent.respond({ history: emergencyMessages });
361
407
  console.info(`Route: ${response4.session?.currentRoute?.title}`);
362
408
  console.info(`Response: ${response4.message}`);
363
409
  console.info(`Expected: Acknowledge urgency, no emojis, concrete steps\n`);
364
410
 
365
411
  // --- General Chat ---
366
412
  console.info("5️⃣ General Chat Route (friendly, casual)");
367
- const generalHistory: Event[] = [
413
+ const generalMessages: History = [
368
414
  {
369
- kind: EventKind.MESSAGE,
370
- source: EventSource.CUSTOMER,
371
- data: {
372
- message: "What's the weather like today?",
373
- participant: { display_name: "User" },
374
- },
375
- } as Event<MessageEventData>,
415
+ role: "user",
416
+ content: "What's the weather like today?",
417
+ },
376
418
  ];
377
- const response5 = await agent.respond({ history: generalHistory });
419
+ const response5 = await agent.respond({ history: generalMessages });
378
420
  console.info(`Route: ${response5.session?.currentRoute?.title}`);
379
421
  console.info(`Response: ${response5.message}`);
380
422
  console.info(`Expected: Friendly, emojis, mirrors customer tone\n`);
@@ -391,13 +433,13 @@ agent.getRoutes().forEach((route) => {
391
433
 
392
434
  if (rules.length > 0) {
393
435
  console.info(` ✅ Rules (${rules.length}):`);
394
- rules.forEach((rule, i) => console.info(` ${i + 1}. ${rule}`));
436
+ rules.forEach((rule, i) => console.info(` ${i + 1}. ${String(rule)}`));
395
437
  }
396
438
 
397
439
  if (prohibitions.length > 0) {
398
440
  console.info(` ❌ Prohibitions (${prohibitions.length}):`);
399
441
  prohibitions.forEach((prohibition, i) =>
400
- console.info(` ${i + 1}. ${prohibition}`)
442
+ console.info(` ${i + 1}. ${String(prohibition)}`)
401
443
  );
402
444
  }
403
445
  });
@@ -410,28 +452,6 @@ console.info(`
410
452
  allow a single agent to handle diverse scenarios with tailored,
411
453
  context-appropriate behavior.
412
454
  `);
413
-
414
- /**
415
- * Mock function to log support feedback.
416
- * @param data - The feedback data.
417
- */
418
- async function logSupportFeedback(
419
- _context: undefined,
420
- _history: Event[],
421
- _session: undefined,
422
- data: { feedbackRating: number; feedbackComments: string }
423
- ) {
424
- console.info("\n" + "=".repeat(60));
425
- console.info("📝 Logging Support Feedback...");
426
- console.info("=".repeat(60));
427
- console.info("Feedback Details:", JSON.stringify(data, null, 2));
428
- console.info(` - Rating: ${data.feedbackRating}`);
429
- console.info(` - Comments: ${data.feedbackComments}`);
430
- await new Promise((resolve) => setTimeout(resolve, 500));
431
- console.info("✨ Feedback logged successfully!");
432
- return { success: true };
433
- }
434
-
435
455
  // Run demonstration
436
456
  if (import.meta.url === `file://${process.argv[1]}`) {
437
457
  demonstrateRulesAndProhibitions().catch((err) => console.error(err));
@@ -8,14 +8,10 @@
8
8
 
9
9
  import {
10
10
  Agent,
11
- createMessageEvent,
12
- EventSource,
13
11
  AnthropicProvider,
14
12
  OpenAIProvider,
15
13
  GeminiProvider,
16
- createSession,
17
- END_ROUTE,
18
- } from "../src/index";
14
+ } from "../../src/index";
19
15
 
20
16
  // Custom context type
21
17
  interface ConversationContext {
@@ -62,23 +58,28 @@ async function streamingWithAnthropic() {
62
58
 
63
59
  // Create conversation history
64
60
  const history = [
65
- createMessageEvent(
66
- EventSource.CUSTOMER,
67
- "User",
68
- "Explain quantum computing in simple terms."
69
- ),
61
+ {
62
+ role: "user" as const,
63
+ content: "Explain quantum computing in simple terms.",
64
+ name: "User",
65
+ },
70
66
  ];
71
67
 
72
68
  try {
73
69
  console.log("📤 Streaming response from Claude...\n");
74
70
  console.log("Response: ");
75
71
 
76
- // Initialize session step for streaming conversation
77
- let session = createSession();
72
+ // Session is automatically managed by the agent
73
+ console.log("✨ Session ready:", agent.session.id);
74
+
75
+ // Add user message to session history
76
+ await agent.session.addMessage("user", "What's the weather like today?");
78
77
 
79
- // Use respondStream for real-time streaming with session step
78
+ // Use respondStream for real-time streaming with session history
80
79
  let fullMessage = "";
81
- for await (const chunk of agent.respondStream({ history, session })) {
80
+ for await (const chunk of agent.respondStream({
81
+ history: agent.session.getHistory()
82
+ })) {
82
83
  // chunk.delta contains the new text
83
84
  // chunk.accumulated contains the full text so far
84
85
  // chunk.done indicates if this is the final chunk
@@ -94,11 +95,13 @@ async function streamingWithAnthropic() {
94
95
  console.log(
95
96
  ` - Route: ${chunk.session?.currentRoute?.title || "None"}`
96
97
  );
97
- console.log(` - Data:`, chunk.session?.data || "None");
98
+ console.log(` - Data:`, agent.session.getData() || "None");
98
99
  console.log(` - Tool Calls: ${chunk.toolCalls?.length || 0}`);
99
100
 
100
- // Update session with progress
101
- session = chunk.session!;
101
+ console.log(` - Full Message: ${fullMessage}`);
102
+
103
+ // Add assistant response to session history
104
+ await agent.session.addMessage("assistant", fullMessage);
102
105
  }
103
106
  }
104
107
  } catch (error) {
@@ -131,21 +134,26 @@ async function streamingWithOpenAI() {
131
134
  });
132
135
 
133
136
  const history = [
134
- createMessageEvent(
135
- EventSource.CUSTOMER,
136
- "User",
137
- "Write a short poem about TypeScript"
138
- ),
137
+ {
138
+ role: "user" as const,
139
+ content: "Write a short poem about TypeScript",
140
+ name: "User",
141
+ },
139
142
  ];
140
143
 
141
144
  try {
142
145
  console.log("📤 Streaming response from OpenAI...\n");
143
146
  console.log("Response: ");
144
147
 
145
- // Initialize session step for streaming conversation
146
- let session = createSession();
148
+ // Session is automatically managed by the agent
149
+ console.log("✨ Session ready:", agent.session.id);
147
150
 
148
- for await (const chunk of agent.respondStream({ history, session })) {
151
+ // Add user message to session history
152
+ await agent.session.addMessage("user", "What's the weather like today?");
153
+
154
+ for await (const chunk of agent.respondStream({
155
+ history: agent.session.getHistory()
156
+ })) {
149
157
  if (chunk.delta) {
150
158
  process.stdout.write(chunk.delta);
151
159
  }
@@ -155,10 +163,10 @@ async function streamingWithOpenAI() {
155
163
  console.log(
156
164
  ` - Route: ${chunk.session?.currentRoute?.title || "None"}`
157
165
  );
158
- console.log(` - Data:`, chunk.session?.data || "None");
166
+ console.log(` - Data:`, agent.session.getData() || "None");
159
167
 
160
- // Update session with progress
161
- session = chunk.session!;
168
+ // Add assistant response to session history
169
+ await agent.session.addMessage("assistant", chunk.accumulated || "");
162
170
  }
163
171
  }
164
172
  } catch (error) {
@@ -171,7 +179,7 @@ async function streamingWithGemini() {
171
179
 
172
180
  const provider = new GeminiProvider({
173
181
  apiKey: process.env.GEMINI_API_KEY || "",
174
- model: "models/gemini-2.0-flash-exp",
182
+ model: "models/gemini-2.5-flash",
175
183
  config: {
176
184
  temperature: 0.7,
177
185
  },
@@ -191,21 +199,26 @@ async function streamingWithGemini() {
191
199
  });
192
200
 
193
201
  const history = [
194
- createMessageEvent(
195
- EventSource.CUSTOMER,
196
- "User",
197
- "What are the key differences between REST and GraphQL?"
198
- ),
202
+ {
203
+ role: "user" as const,
204
+ content: "What are the key differences between REST and GraphQL?",
205
+ name: "User",
206
+ },
199
207
  ];
200
208
 
201
209
  try {
202
210
  console.log("📤 Streaming response from Gemini...\n");
203
211
  console.log("Response: ");
204
212
 
205
- // Initialize session step for streaming conversation
206
- let session = createSession();
213
+ // Session is automatically managed by the agent
214
+ console.log("✨ Session ready:", agent.session.id);
215
+
216
+ // Add user message to session history
217
+ await agent.session.addMessage("user", "What are the key differences between REST and GraphQL?");
207
218
 
208
- for await (const chunk of agent.respondStream({ history, session })) {
219
+ for await (const chunk of agent.respondStream({
220
+ history: agent.session.getHistory()
221
+ })) {
209
222
  if (chunk.delta) {
210
223
  process.stdout.write(chunk.delta);
211
224
  }
@@ -215,10 +228,10 @@ async function streamingWithGemini() {
215
228
  console.log(
216
229
  ` - Route: ${chunk.session?.currentRoute?.title || "None"}`
217
230
  );
218
- console.log(` - Data:`, chunk.session?.data || "None");
231
+ console.log(` - Data:`, agent.session.getData() || "None");
219
232
 
220
- // Update session with progress
221
- session = chunk.session!;
233
+ // Add assistant response to session history
234
+ await agent.session.addMessage("assistant", chunk.accumulated || "");
222
235
  }
223
236
  }
224
237
  } catch (error) {
@@ -255,11 +268,11 @@ async function streamingWithRoutes() {
255
268
  });
256
269
 
257
270
  supportRoute.initialStep.nextStep({
258
- instructions: "Understand the user's product question",
271
+ prompt: "Understand the user's product question",
259
272
  });
260
273
 
261
274
  // Create a feedback route
262
- const feedbackRoute = agent.createRoute<{
275
+ agent.createRoute<{
263
276
  rating: number;
264
277
  comments: string;
265
278
  }>({
@@ -276,35 +289,40 @@ async function streamingWithRoutes() {
276
289
  },
277
290
  steps: [
278
291
  {
279
- instructions: "How would you rate your support experience from 1 to 5?",
292
+ prompt: "How would you rate your support experience from 1 to 5?",
280
293
  collect: ["rating"],
281
294
  },
282
295
  {
283
- instructions: "Thanks for the rating! Any other comments?",
296
+ prompt: "Thanks for the rating! Any other comments?",
284
297
  collect: ["comments"],
285
298
  },
286
299
  {
287
- instructions: "We appreciate your feedback!",
300
+ prompt: "We appreciate your feedback!",
288
301
  },
289
302
  ],
290
303
  });
291
304
 
292
305
  const history = [
293
- createMessageEvent(
294
- EventSource.CUSTOMER,
295
- "User",
296
- "How do I reset my password?"
297
- ),
306
+ {
307
+ role: "user" as const,
308
+ content: "How do I reset my password?",
309
+ name: "User",
310
+ },
298
311
  ];
299
312
 
300
313
  try {
301
314
  console.log("📤 Streaming response with route detection...\n");
302
315
  console.log("Response: ");
303
316
 
304
- // Initialize session step for streaming conversation
305
- let session = createSession();
317
+ // Session is automatically managed by the agent
318
+ console.log("✨ Session ready:", agent.session.id);
306
319
 
307
- for await (const chunk of agent.respondStream({ history, session })) {
320
+ // Add user message to session history
321
+ await agent.session.addMessage("user", "How do I reset my password?");
322
+
323
+ for await (const chunk of agent.respondStream({
324
+ history: agent.session.getHistory()
325
+ })) {
308
326
  if (chunk.delta) {
309
327
  process.stdout.write(chunk.delta);
310
328
  }
@@ -315,14 +333,14 @@ async function streamingWithRoutes() {
315
333
  console.log(
316
334
  ` - Route: ${chunk.session?.currentRoute?.title || "None"}`
317
335
  );
318
- console.log(` - Data:`, chunk.session?.data || "None");
336
+ console.log(` - Data:`, agent.session.getData() || "None");
319
337
 
320
338
  // Check for route completion
321
339
  if (chunk.isRouteComplete) {
322
340
  console.log("\n✅ Route complete!");
323
341
  if (chunk.session?.currentRoute?.title === "Collect Feedback") {
324
342
  await logFeedback(
325
- agent.getData(chunk.session?.id) as {
343
+ agent.session.getData() as {
326
344
  rating: number;
327
345
  comments: string;
328
346
  }
@@ -330,8 +348,7 @@ async function streamingWithRoutes() {
330
348
  }
331
349
  }
332
350
 
333
- // Update session with progress
334
- session = chunk.session!;
351
+ // Session is automatically updated by the agent
335
352
  }
336
353
  }
337
354
  } catch (error) {
@@ -361,11 +378,11 @@ async function streamingWithAbortSignal() {
361
378
  });
362
379
 
363
380
  const history = [
364
- createMessageEvent(
365
- EventSource.CUSTOMER,
366
- "User",
367
- "Tell me a very long story about space exploration."
368
- ),
381
+ {
382
+ role: "user" as const,
383
+ content: "Tell me a very long story about space exploration.",
384
+ name: "User",
385
+ },
369
386
  ];
370
387
 
371
388
  // Create an AbortController to cancel the stream
@@ -381,12 +398,14 @@ async function streamingWithAbortSignal() {
381
398
  console.log("📤 Streaming response (will abort after 3s)...\n");
382
399
  console.log("Response: ");
383
400
 
384
- // Initialize session step for streaming conversation
385
- let session = createSession();
401
+ // Session is automatically managed by the agent
402
+ console.log("✨ Session ready:", agent.session.id);
403
+
404
+ // Add user message to session history
405
+ await agent.session.addMessage("user", "Tell me a very long story about space exploration.");
386
406
 
387
407
  for await (const chunk of agent.respondStream({
388
- history,
389
- session,
408
+ history: agent.session.getHistory(),
390
409
  signal: abortController.signal,
391
410
  })) {
392
411
  if (chunk.delta) {
@@ -399,10 +418,12 @@ async function streamingWithAbortSignal() {
399
418
  console.log(
400
419
  ` - Route: ${chunk.session?.currentRoute?.title || "None"}`
401
420
  );
402
- console.log(` - Data:`, chunk.session?.data || "None");
421
+ console.log(` - Data:`, agent.session.getData() || "None");
422
+
423
+ // Add assistant response to session history
424
+ await agent.session.addMessage("assistant", chunk.accumulated || "");
403
425
 
404
- // Update session with progress
405
- session = chunk.session!;
426
+ // Session is automatically updated by the agent
406
427
 
407
428
  clearTimeout(timeout);
408
429
  }