@falai/agent 1.2.8 β†’ 2.0.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 (522) hide show
  1. package/README.md +40 -886
  2. package/dist/adapters/MemoryAdapter.js +2 -2
  3. package/dist/adapters/MemoryAdapter.js.map +1 -1
  4. package/dist/adapters/MongoAdapter.js +2 -2
  5. package/dist/adapters/MongoAdapter.js.map +1 -1
  6. package/dist/adapters/OpenSearchAdapter.d.ts.map +1 -1
  7. package/dist/adapters/OpenSearchAdapter.js +9 -7
  8. package/dist/adapters/OpenSearchAdapter.js.map +1 -1
  9. package/dist/adapters/PostgreSQLAdapter.d.ts +14 -0
  10. package/dist/adapters/PostgreSQLAdapter.d.ts.map +1 -1
  11. package/dist/adapters/PostgreSQLAdapter.js +25 -9
  12. package/dist/adapters/PostgreSQLAdapter.js.map +1 -1
  13. package/dist/adapters/PrismaAdapter.js +5 -5
  14. package/dist/adapters/PrismaAdapter.js.map +1 -1
  15. package/dist/adapters/RedisAdapter.js +2 -2
  16. package/dist/adapters/RedisAdapter.js.map +1 -1
  17. package/dist/adapters/SQLiteAdapter.d.ts +17 -0
  18. package/dist/adapters/SQLiteAdapter.d.ts.map +1 -1
  19. package/dist/adapters/SQLiteAdapter.js +30 -11
  20. package/dist/adapters/SQLiteAdapter.js.map +1 -1
  21. package/dist/cjs/adapters/MemoryAdapter.js +2 -2
  22. package/dist/cjs/adapters/MemoryAdapter.js.map +1 -1
  23. package/dist/cjs/adapters/MongoAdapter.js +2 -2
  24. package/dist/cjs/adapters/MongoAdapter.js.map +1 -1
  25. package/dist/cjs/adapters/OpenSearchAdapter.d.ts.map +1 -1
  26. package/dist/cjs/adapters/OpenSearchAdapter.js +9 -7
  27. package/dist/cjs/adapters/OpenSearchAdapter.js.map +1 -1
  28. package/dist/cjs/adapters/PostgreSQLAdapter.d.ts +14 -0
  29. package/dist/cjs/adapters/PostgreSQLAdapter.d.ts.map +1 -1
  30. package/dist/cjs/adapters/PostgreSQLAdapter.js +25 -9
  31. package/dist/cjs/adapters/PostgreSQLAdapter.js.map +1 -1
  32. package/dist/cjs/adapters/PrismaAdapter.js +5 -5
  33. package/dist/cjs/adapters/PrismaAdapter.js.map +1 -1
  34. package/dist/cjs/adapters/RedisAdapter.js +2 -2
  35. package/dist/cjs/adapters/RedisAdapter.js.map +1 -1
  36. package/dist/cjs/adapters/SQLiteAdapter.d.ts +17 -0
  37. package/dist/cjs/adapters/SQLiteAdapter.d.ts.map +1 -1
  38. package/dist/cjs/adapters/SQLiteAdapter.js +30 -11
  39. package/dist/cjs/adapters/SQLiteAdapter.js.map +1 -1
  40. package/dist/cjs/constants/index.d.ts +0 -9
  41. package/dist/cjs/constants/index.d.ts.map +1 -1
  42. package/dist/cjs/constants/index.js +2 -11
  43. package/dist/cjs/constants/index.js.map +1 -1
  44. package/dist/cjs/core/Agent.d.ts +119 -153
  45. package/dist/cjs/core/Agent.d.ts.map +1 -1
  46. package/dist/cjs/core/Agent.js +471 -324
  47. package/dist/cjs/core/Agent.js.map +1 -1
  48. package/dist/cjs/core/AutoChainExecutor.d.ts +107 -0
  49. package/dist/cjs/core/AutoChainExecutor.d.ts.map +1 -0
  50. package/dist/cjs/core/AutoChainExecutor.js +297 -0
  51. package/dist/cjs/core/AutoChainExecutor.js.map +1 -0
  52. package/dist/cjs/core/BranchEvaluator.d.ts +54 -0
  53. package/dist/cjs/core/BranchEvaluator.d.ts.map +1 -0
  54. package/dist/cjs/core/BranchEvaluator.js +130 -0
  55. package/dist/cjs/core/BranchEvaluator.js.map +1 -0
  56. package/dist/cjs/core/DirectiveBus.d.ts +88 -0
  57. package/dist/cjs/core/DirectiveBus.d.ts.map +1 -0
  58. package/dist/cjs/core/DirectiveBus.js +196 -0
  59. package/dist/cjs/core/DirectiveBus.js.map +1 -0
  60. package/dist/cjs/core/DirectiveChainTracker.d.ts +49 -0
  61. package/dist/cjs/core/DirectiveChainTracker.d.ts.map +1 -0
  62. package/dist/cjs/core/DirectiveChainTracker.js +121 -0
  63. package/dist/cjs/core/DirectiveChainTracker.js.map +1 -0
  64. package/dist/cjs/core/Flow.d.ts +186 -0
  65. package/dist/cjs/core/Flow.d.ts.map +1 -0
  66. package/dist/cjs/core/Flow.js +550 -0
  67. package/dist/cjs/core/Flow.js.map +1 -0
  68. package/dist/cjs/core/FlowRouter.d.ts +182 -0
  69. package/dist/cjs/core/FlowRouter.d.ts.map +1 -0
  70. package/dist/cjs/core/{RoutingEngine.js β†’ FlowRouter.js} +323 -306
  71. package/dist/cjs/core/FlowRouter.js.map +1 -0
  72. package/dist/cjs/core/PersistenceManager.d.ts +2 -2
  73. package/dist/cjs/core/PersistenceManager.d.ts.map +1 -1
  74. package/dist/cjs/core/PersistenceManager.js +7 -7
  75. package/dist/cjs/core/PersistenceManager.js.map +1 -1
  76. package/dist/cjs/core/PromptComposer.d.ts +21 -8
  77. package/dist/cjs/core/PromptComposer.d.ts.map +1 -1
  78. package/dist/cjs/core/PromptComposer.js +182 -105
  79. package/dist/cjs/core/PromptComposer.js.map +1 -1
  80. package/dist/cjs/core/PromptSectionCache.d.ts +1 -1
  81. package/dist/cjs/core/PromptSectionCache.js +1 -1
  82. package/dist/cjs/core/ResponseEngine.d.ts +18 -8
  83. package/dist/cjs/core/ResponseEngine.d.ts.map +1 -1
  84. package/dist/cjs/core/ResponseEngine.js +38 -36
  85. package/dist/cjs/core/ResponseEngine.js.map +1 -1
  86. package/dist/cjs/core/ResponseModal.d.ts +73 -56
  87. package/dist/cjs/core/ResponseModal.d.ts.map +1 -1
  88. package/dist/cjs/core/ResponseModal.js +1191 -1014
  89. package/dist/cjs/core/ResponseModal.js.map +1 -1
  90. package/dist/cjs/core/ResponsePipeline.d.ts +124 -26
  91. package/dist/cjs/core/ResponsePipeline.d.ts.map +1 -1
  92. package/dist/cjs/core/ResponsePipeline.js +509 -136
  93. package/dist/cjs/core/ResponsePipeline.js.map +1 -1
  94. package/dist/cjs/core/SignalEvaluator.d.ts +86 -0
  95. package/dist/cjs/core/SignalEvaluator.d.ts.map +1 -0
  96. package/dist/cjs/core/SignalEvaluator.js +333 -0
  97. package/dist/cjs/core/SignalEvaluator.js.map +1 -0
  98. package/dist/cjs/core/SignalProcessor.d.ts +152 -0
  99. package/dist/cjs/core/SignalProcessor.d.ts.map +1 -0
  100. package/dist/cjs/core/SignalProcessor.js +562 -0
  101. package/dist/cjs/core/SignalProcessor.js.map +1 -0
  102. package/dist/cjs/core/Step.d.ts +43 -32
  103. package/dist/cjs/core/Step.d.ts.map +1 -1
  104. package/dist/cjs/core/Step.js +221 -126
  105. package/dist/cjs/core/Step.js.map +1 -1
  106. package/dist/cjs/core/StreamingToolExecutor.d.ts +2 -2
  107. package/dist/cjs/core/StreamingToolExecutor.d.ts.map +1 -1
  108. package/dist/cjs/core/StreamingToolExecutor.js.map +1 -1
  109. package/dist/cjs/core/ToolManager.d.ts +44 -13
  110. package/dist/cjs/core/ToolManager.d.ts.map +1 -1
  111. package/dist/cjs/core/ToolManager.js +174 -91
  112. package/dist/cjs/core/ToolManager.js.map +1 -1
  113. package/dist/cjs/core/createAgent.d.ts +35 -0
  114. package/dist/cjs/core/createAgent.d.ts.map +1 -0
  115. package/dist/cjs/core/createAgent.js +39 -0
  116. package/dist/cjs/core/createAgent.js.map +1 -0
  117. package/dist/cjs/core/flow-namespace.d.ts +49 -0
  118. package/dist/cjs/core/flow-namespace.d.ts.map +1 -0
  119. package/dist/cjs/core/flow-namespace.js +171 -0
  120. package/dist/cjs/core/flow-namespace.js.map +1 -0
  121. package/dist/cjs/index.d.ts +11 -14
  122. package/dist/cjs/index.d.ts.map +1 -1
  123. package/dist/cjs/index.js +18 -22
  124. package/dist/cjs/index.js.map +1 -1
  125. package/dist/cjs/providers/AnthropicProvider.d.ts +1 -1
  126. package/dist/cjs/providers/AnthropicProvider.js +1 -1
  127. package/dist/cjs/providers/GeminiProvider.d.ts +1 -1
  128. package/dist/cjs/providers/GeminiProvider.d.ts.map +1 -1
  129. package/dist/cjs/providers/GeminiProvider.js +1 -1
  130. package/dist/cjs/providers/GeminiProvider.js.map +1 -1
  131. package/dist/cjs/providers/OpenAIProvider.d.ts +1 -1
  132. package/dist/cjs/providers/OpenAIProvider.d.ts.map +1 -1
  133. package/dist/cjs/providers/OpenAIProvider.js +1 -1
  134. package/dist/cjs/providers/OpenAIProvider.js.map +1 -1
  135. package/dist/cjs/types/agent.d.ts +183 -54
  136. package/dist/cjs/types/agent.d.ts.map +1 -1
  137. package/dist/cjs/types/agent.js +0 -6
  138. package/dist/cjs/types/agent.js.map +1 -1
  139. package/dist/cjs/types/ai.d.ts +3 -3
  140. package/dist/cjs/types/ai.d.ts.map +1 -1
  141. package/dist/cjs/types/errors.d.ts +15 -0
  142. package/dist/cjs/types/errors.d.ts.map +1 -0
  143. package/dist/cjs/types/errors.js +22 -0
  144. package/dist/cjs/types/errors.js.map +1 -0
  145. package/dist/cjs/types/flow.d.ts +513 -0
  146. package/dist/cjs/types/flow.d.ts.map +1 -0
  147. package/dist/cjs/types/{route.js β†’ flow.js} +2 -2
  148. package/dist/cjs/types/flow.js.map +1 -0
  149. package/dist/cjs/types/index.d.ts +7 -6
  150. package/dist/cjs/types/index.d.ts.map +1 -1
  151. package/dist/cjs/types/index.js +6 -2
  152. package/dist/cjs/types/index.js.map +1 -1
  153. package/dist/cjs/types/persistence.d.ts +11 -7
  154. package/dist/cjs/types/persistence.d.ts.map +1 -1
  155. package/dist/cjs/types/routing.d.ts +1 -1
  156. package/dist/cjs/types/routing.d.ts.map +1 -1
  157. package/dist/cjs/types/session.d.ts +24 -23
  158. package/dist/cjs/types/session.d.ts.map +1 -1
  159. package/dist/cjs/types/signals.d.ts +248 -0
  160. package/dist/cjs/types/signals.d.ts.map +1 -0
  161. package/dist/cjs/types/signals.js +11 -0
  162. package/dist/cjs/types/signals.js.map +1 -0
  163. package/dist/cjs/types/template.d.ts +2 -8
  164. package/dist/cjs/types/template.d.ts.map +1 -1
  165. package/dist/cjs/types/tool.d.ts +36 -29
  166. package/dist/cjs/types/tool.d.ts.map +1 -1
  167. package/dist/cjs/types/tool.js +1 -1
  168. package/dist/cjs/types/tool.js.map +1 -1
  169. package/dist/cjs/utils/condition.d.ts +7 -1
  170. package/dist/cjs/utils/condition.d.ts.map +1 -1
  171. package/dist/cjs/utils/condition.js.map +1 -1
  172. package/dist/cjs/utils/id.d.ts +13 -5
  173. package/dist/cjs/utils/id.d.ts.map +1 -1
  174. package/dist/cjs/utils/id.js +24 -10
  175. package/dist/cjs/utils/id.js.map +1 -1
  176. package/dist/cjs/utils/index.d.ts +2 -2
  177. package/dist/cjs/utils/index.d.ts.map +1 -1
  178. package/dist/cjs/utils/index.js +7 -3
  179. package/dist/cjs/utils/index.js.map +1 -1
  180. package/dist/cjs/utils/session.d.ts +44 -5
  181. package/dist/cjs/utils/session.d.ts.map +1 -1
  182. package/dist/cjs/utils/session.js +197 -38
  183. package/dist/cjs/utils/session.js.map +1 -1
  184. package/dist/constants/index.d.ts +0 -9
  185. package/dist/constants/index.d.ts.map +1 -1
  186. package/dist/constants/index.js +3 -9
  187. package/dist/constants/index.js.map +1 -1
  188. package/dist/core/Agent.d.ts +119 -153
  189. package/dist/core/Agent.d.ts.map +1 -1
  190. package/dist/core/Agent.js +472 -325
  191. package/dist/core/Agent.js.map +1 -1
  192. package/dist/core/AutoChainExecutor.d.ts +107 -0
  193. package/dist/core/AutoChainExecutor.d.ts.map +1 -0
  194. package/dist/core/AutoChainExecutor.js +293 -0
  195. package/dist/core/AutoChainExecutor.js.map +1 -0
  196. package/dist/core/BranchEvaluator.d.ts +54 -0
  197. package/dist/core/BranchEvaluator.d.ts.map +1 -0
  198. package/dist/core/BranchEvaluator.js +126 -0
  199. package/dist/core/BranchEvaluator.js.map +1 -0
  200. package/dist/core/DirectiveBus.d.ts +88 -0
  201. package/dist/core/DirectiveBus.d.ts.map +1 -0
  202. package/dist/core/DirectiveBus.js +192 -0
  203. package/dist/core/DirectiveBus.js.map +1 -0
  204. package/dist/core/DirectiveChainTracker.d.ts +49 -0
  205. package/dist/core/DirectiveChainTracker.d.ts.map +1 -0
  206. package/dist/core/DirectiveChainTracker.js +117 -0
  207. package/dist/core/DirectiveChainTracker.js.map +1 -0
  208. package/dist/core/Flow.d.ts +186 -0
  209. package/dist/core/Flow.d.ts.map +1 -0
  210. package/dist/core/Flow.js +546 -0
  211. package/dist/core/Flow.js.map +1 -0
  212. package/dist/core/FlowRouter.d.ts +182 -0
  213. package/dist/core/FlowRouter.d.ts.map +1 -0
  214. package/dist/core/{RoutingEngine.js β†’ FlowRouter.js} +322 -305
  215. package/dist/core/FlowRouter.js.map +1 -0
  216. package/dist/core/PersistenceManager.d.ts +2 -2
  217. package/dist/core/PersistenceManager.d.ts.map +1 -1
  218. package/dist/core/PersistenceManager.js +7 -7
  219. package/dist/core/PersistenceManager.js.map +1 -1
  220. package/dist/core/PromptComposer.d.ts +21 -8
  221. package/dist/core/PromptComposer.d.ts.map +1 -1
  222. package/dist/core/PromptComposer.js +183 -106
  223. package/dist/core/PromptComposer.js.map +1 -1
  224. package/dist/core/PromptSectionCache.d.ts +1 -1
  225. package/dist/core/PromptSectionCache.js +1 -1
  226. package/dist/core/ResponseEngine.d.ts +18 -8
  227. package/dist/core/ResponseEngine.d.ts.map +1 -1
  228. package/dist/core/ResponseEngine.js +38 -36
  229. package/dist/core/ResponseEngine.js.map +1 -1
  230. package/dist/core/ResponseModal.d.ts +73 -56
  231. package/dist/core/ResponseModal.d.ts.map +1 -1
  232. package/dist/core/ResponseModal.js +1193 -1016
  233. package/dist/core/ResponseModal.js.map +1 -1
  234. package/dist/core/ResponsePipeline.d.ts +124 -26
  235. package/dist/core/ResponsePipeline.d.ts.map +1 -1
  236. package/dist/core/ResponsePipeline.js +509 -137
  237. package/dist/core/ResponsePipeline.js.map +1 -1
  238. package/dist/core/SignalEvaluator.d.ts +86 -0
  239. package/dist/core/SignalEvaluator.d.ts.map +1 -0
  240. package/dist/core/SignalEvaluator.js +326 -0
  241. package/dist/core/SignalEvaluator.js.map +1 -0
  242. package/dist/core/SignalProcessor.d.ts +152 -0
  243. package/dist/core/SignalProcessor.d.ts.map +1 -0
  244. package/dist/core/SignalProcessor.js +555 -0
  245. package/dist/core/SignalProcessor.js.map +1 -0
  246. package/dist/core/Step.d.ts +43 -32
  247. package/dist/core/Step.d.ts.map +1 -1
  248. package/dist/core/Step.js +220 -126
  249. package/dist/core/Step.js.map +1 -1
  250. package/dist/core/StreamingToolExecutor.d.ts +2 -2
  251. package/dist/core/StreamingToolExecutor.d.ts.map +1 -1
  252. package/dist/core/StreamingToolExecutor.js.map +1 -1
  253. package/dist/core/ToolManager.d.ts +44 -13
  254. package/dist/core/ToolManager.d.ts.map +1 -1
  255. package/dist/core/ToolManager.js +174 -91
  256. package/dist/core/ToolManager.js.map +1 -1
  257. package/dist/core/createAgent.d.ts +35 -0
  258. package/dist/core/createAgent.d.ts.map +1 -0
  259. package/dist/core/createAgent.js +36 -0
  260. package/dist/core/createAgent.js.map +1 -0
  261. package/dist/core/flow-namespace.d.ts +49 -0
  262. package/dist/core/flow-namespace.d.ts.map +1 -0
  263. package/dist/core/flow-namespace.js +168 -0
  264. package/dist/core/flow-namespace.js.map +1 -0
  265. package/dist/index.d.ts +11 -14
  266. package/dist/index.d.ts.map +1 -1
  267. package/dist/index.js +9 -12
  268. package/dist/index.js.map +1 -1
  269. package/dist/providers/AnthropicProvider.d.ts +1 -1
  270. package/dist/providers/AnthropicProvider.js +1 -1
  271. package/dist/providers/GeminiProvider.d.ts +1 -1
  272. package/dist/providers/GeminiProvider.d.ts.map +1 -1
  273. package/dist/providers/GeminiProvider.js +1 -1
  274. package/dist/providers/GeminiProvider.js.map +1 -1
  275. package/dist/providers/OpenAIProvider.d.ts +1 -1
  276. package/dist/providers/OpenAIProvider.d.ts.map +1 -1
  277. package/dist/providers/OpenAIProvider.js +1 -1
  278. package/dist/providers/OpenAIProvider.js.map +1 -1
  279. package/dist/types/agent.d.ts +183 -54
  280. package/dist/types/agent.d.ts.map +1 -1
  281. package/dist/types/agent.js +0 -6
  282. package/dist/types/agent.js.map +1 -1
  283. package/dist/types/ai.d.ts +3 -3
  284. package/dist/types/ai.d.ts.map +1 -1
  285. package/dist/types/errors.d.ts +15 -0
  286. package/dist/types/errors.d.ts.map +1 -0
  287. package/dist/types/errors.js +18 -0
  288. package/dist/types/errors.js.map +1 -0
  289. package/dist/types/flow.d.ts +513 -0
  290. package/dist/types/flow.d.ts.map +1 -0
  291. package/dist/types/flow.js +5 -0
  292. package/dist/types/flow.js.map +1 -0
  293. package/dist/types/index.d.ts +7 -6
  294. package/dist/types/index.d.ts.map +1 -1
  295. package/dist/types/index.js +4 -1
  296. package/dist/types/index.js.map +1 -1
  297. package/dist/types/persistence.d.ts +11 -7
  298. package/dist/types/persistence.d.ts.map +1 -1
  299. package/dist/types/routing.d.ts +1 -1
  300. package/dist/types/routing.d.ts.map +1 -1
  301. package/dist/types/session.d.ts +24 -23
  302. package/dist/types/session.d.ts.map +1 -1
  303. package/dist/types/signals.d.ts +248 -0
  304. package/dist/types/signals.d.ts.map +1 -0
  305. package/dist/types/signals.js +10 -0
  306. package/dist/types/signals.js.map +1 -0
  307. package/dist/types/template.d.ts +2 -8
  308. package/dist/types/template.d.ts.map +1 -1
  309. package/dist/types/tool.d.ts +36 -29
  310. package/dist/types/tool.d.ts.map +1 -1
  311. package/dist/types/tool.js +1 -1
  312. package/dist/types/tool.js.map +1 -1
  313. package/dist/utils/condition.d.ts +7 -1
  314. package/dist/utils/condition.d.ts.map +1 -1
  315. package/dist/utils/condition.js.map +1 -1
  316. package/dist/utils/id.d.ts +13 -5
  317. package/dist/utils/id.d.ts.map +1 -1
  318. package/dist/utils/id.js +22 -9
  319. package/dist/utils/id.js.map +1 -1
  320. package/dist/utils/index.d.ts +2 -2
  321. package/dist/utils/index.d.ts.map +1 -1
  322. package/dist/utils/index.js +2 -2
  323. package/dist/utils/index.js.map +1 -1
  324. package/dist/utils/session.d.ts +44 -5
  325. package/dist/utils/session.d.ts.map +1 -1
  326. package/dist/utils/session.js +193 -37
  327. package/dist/utils/session.js.map +1 -1
  328. package/docs/README.md +22 -200
  329. package/docs/concepts/architecture.md +281 -0
  330. package/docs/concepts/directives.md +400 -0
  331. package/docs/concepts/pipeline.md +399 -0
  332. package/docs/guides/branching.md +263 -0
  333. package/docs/guides/compaction.md +163 -0
  334. package/docs/guides/conditions.md +167 -0
  335. package/docs/guides/error-handling.md +176 -0
  336. package/docs/guides/flow-control.md +409 -0
  337. package/docs/guides/instructions.md +210 -0
  338. package/docs/guides/persistence.md +182 -0
  339. package/docs/guides/streaming.md +137 -0
  340. package/docs/migration/README.md +14 -0
  341. package/docs/migration/route-to-flow.md +561 -0
  342. package/docs/migration/v1-to-v2.md +909 -0
  343. package/docs/reference/adapters.md +481 -0
  344. package/docs/reference/branches.md +241 -0
  345. package/docs/reference/create-agent.md +186 -0
  346. package/docs/reference/directive.md +243 -0
  347. package/docs/reference/errors.md +122 -0
  348. package/docs/reference/flow.md +238 -0
  349. package/docs/reference/instruction.md +177 -0
  350. package/docs/reference/pre-directive.md +131 -0
  351. package/docs/reference/providers.md +227 -0
  352. package/docs/reference/signals.md +356 -0
  353. package/docs/reference/step.md +339 -0
  354. package/docs/reference/tool.md +269 -0
  355. package/docs/start/01-install.md +81 -0
  356. package/docs/start/02-first-agent.md +196 -0
  357. package/docs/start/03-collect-data.md +222 -0
  358. package/docs/start/04-add-tools.md +276 -0
  359. package/docs/start/05-go-to-production.md +216 -0
  360. package/examples/01-quickstart.ts +20 -0
  361. package/examples/02-data-extraction.ts +90 -0
  362. package/examples/03-tools.ts +136 -0
  363. package/examples/04-instructions.ts +100 -0
  364. package/examples/05-branching.ts +140 -0
  365. package/examples/06-flow-control.ts +103 -0
  366. package/examples/07-streaming.ts +69 -0
  367. package/examples/08-persistence.ts +98 -0
  368. package/examples/09-signals.ts +144 -0
  369. package/examples/tsconfig.json +30 -0
  370. package/package.json +2 -1
  371. package/src/adapters/MemoryAdapter.ts +3 -3
  372. package/src/adapters/MongoAdapter.ts +3 -3
  373. package/src/adapters/OpenSearchAdapter.ts +10 -8
  374. package/src/adapters/PostgreSQLAdapter.ts +26 -10
  375. package/src/adapters/PrismaAdapter.ts +6 -6
  376. package/src/adapters/RedisAdapter.ts +3 -3
  377. package/src/adapters/SQLiteAdapter.ts +31 -12
  378. package/src/constants/index.ts +2 -10
  379. package/src/core/Agent.ts +585 -374
  380. package/src/core/AutoChainExecutor.ts +440 -0
  381. package/src/core/BranchEvaluator.ts +167 -0
  382. package/src/core/DirectiveBus.ts +248 -0
  383. package/src/core/DirectiveChainTracker.ts +144 -0
  384. package/src/core/Flow.ts +666 -0
  385. package/src/core/{RoutingEngine.ts β†’ FlowRouter.ts} +385 -365
  386. package/src/core/PersistenceManager.ts +8 -8
  387. package/src/core/PromptComposer.ts +209 -140
  388. package/src/core/PromptSectionCache.ts +1 -1
  389. package/src/core/ResponseEngine.ts +61 -46
  390. package/src/core/ResponseModal.ts +1453 -1240
  391. package/src/core/ResponsePipeline.ts +655 -175
  392. package/src/core/SignalEvaluator.ts +420 -0
  393. package/src/core/SignalProcessor.ts +723 -0
  394. package/src/core/Step.ts +279 -176
  395. package/src/core/StreamingToolExecutor.ts +4 -4
  396. package/src/core/ToolManager.ts +200 -97
  397. package/src/core/createAgent.ts +40 -0
  398. package/src/core/flow-namespace.ts +219 -0
  399. package/src/index.ts +42 -36
  400. package/src/providers/AnthropicProvider.ts +2 -2
  401. package/src/providers/GeminiProvider.ts +2 -2
  402. package/src/providers/OpenAIProvider.ts +2 -2
  403. package/src/types/agent.ts +182 -53
  404. package/src/types/ai.ts +3 -3
  405. package/src/types/errors.ts +18 -0
  406. package/src/types/flow.ts +590 -0
  407. package/src/types/index.ts +43 -16
  408. package/src/types/persistence.ts +12 -8
  409. package/src/types/routing.ts +1 -1
  410. package/src/types/session.ts +26 -23
  411. package/src/types/signals.ts +321 -0
  412. package/src/types/template.ts +3 -11
  413. package/src/types/tool.ts +50 -42
  414. package/src/utils/condition.ts +13 -4
  415. package/src/utils/id.ts +27 -9
  416. package/src/utils/index.ts +6 -2
  417. package/src/utils/session.ts +238 -42
  418. package/dist/cjs/core/BatchExecutor.d.ts +0 -359
  419. package/dist/cjs/core/BatchExecutor.d.ts.map +0 -1
  420. package/dist/cjs/core/BatchExecutor.js +0 -861
  421. package/dist/cjs/core/BatchExecutor.js.map +0 -1
  422. package/dist/cjs/core/BatchPromptBuilder.d.ts +0 -89
  423. package/dist/cjs/core/BatchPromptBuilder.d.ts.map +0 -1
  424. package/dist/cjs/core/BatchPromptBuilder.js +0 -223
  425. package/dist/cjs/core/BatchPromptBuilder.js.map +0 -1
  426. package/dist/cjs/core/Route.d.ts +0 -180
  427. package/dist/cjs/core/Route.d.ts.map +0 -1
  428. package/dist/cjs/core/Route.js +0 -542
  429. package/dist/cjs/core/Route.js.map +0 -1
  430. package/dist/cjs/core/RoutingEngine.d.ts +0 -185
  431. package/dist/cjs/core/RoutingEngine.d.ts.map +0 -1
  432. package/dist/cjs/core/RoutingEngine.js.map +0 -1
  433. package/dist/cjs/types/route.d.ts +0 -336
  434. package/dist/cjs/types/route.d.ts.map +0 -1
  435. package/dist/cjs/types/route.js.map +0 -1
  436. package/dist/core/BatchExecutor.d.ts +0 -359
  437. package/dist/core/BatchExecutor.d.ts.map +0 -1
  438. package/dist/core/BatchExecutor.js +0 -856
  439. package/dist/core/BatchExecutor.js.map +0 -1
  440. package/dist/core/BatchPromptBuilder.d.ts +0 -89
  441. package/dist/core/BatchPromptBuilder.d.ts.map +0 -1
  442. package/dist/core/BatchPromptBuilder.js +0 -219
  443. package/dist/core/BatchPromptBuilder.js.map +0 -1
  444. package/dist/core/Route.d.ts +0 -180
  445. package/dist/core/Route.d.ts.map +0 -1
  446. package/dist/core/Route.js +0 -538
  447. package/dist/core/Route.js.map +0 -1
  448. package/dist/core/RoutingEngine.d.ts +0 -185
  449. package/dist/core/RoutingEngine.d.ts.map +0 -1
  450. package/dist/core/RoutingEngine.js.map +0 -1
  451. package/dist/types/route.d.ts +0 -336
  452. package/dist/types/route.d.ts.map +0 -1
  453. package/dist/types/route.js +0 -5
  454. package/dist/types/route.js.map +0 -1
  455. package/docs/CONTRIBUTING.md +0 -521
  456. package/docs/api/README.md +0 -3299
  457. package/docs/api/overview.md +0 -1410
  458. package/docs/architecture/data-extraction-flow.md +0 -360
  459. package/docs/architecture/multi-step-execution.md +0 -277
  460. package/docs/core/agent/README.md +0 -938
  461. package/docs/core/agent/context-management.md +0 -796
  462. package/docs/core/agent/rules-and-prohibitions.md +0 -113
  463. package/docs/core/agent/session-management.md +0 -693
  464. package/docs/core/ai-integration/prompt-composition.md +0 -355
  465. package/docs/core/ai-integration/providers.md +0 -515
  466. package/docs/core/ai-integration/response-processing.md +0 -433
  467. package/docs/core/conversation-flows/data-collection.md +0 -772
  468. package/docs/core/conversation-flows/route-dsl.md +0 -509
  469. package/docs/core/conversation-flows/routes.md +0 -249
  470. package/docs/core/conversation-flows/step-transitions.md +0 -731
  471. package/docs/core/conversation-flows/steps.md +0 -268
  472. package/docs/core/error-handling.md +0 -830
  473. package/docs/core/persistence/adapters.md +0 -255
  474. package/docs/core/persistence/session-storage.md +0 -656
  475. package/docs/core/routing/intelligent-routing.md +0 -470
  476. package/docs/core/tools/enhanced-tool.md +0 -186
  477. package/docs/core/tools/streaming-execution.md +0 -161
  478. package/docs/core/tools/tool-definition.md +0 -970
  479. package/docs/core/tools/tool-scoping.md +0 -819
  480. package/docs/guides/advanced-patterns/publishing.md +0 -186
  481. package/docs/guides/context-compaction.md +0 -96
  482. package/docs/guides/error-handling-patterns.md +0 -578
  483. package/docs/guides/getting-started/README.md +0 -795
  484. package/docs/guides/migration/README.md +0 -101
  485. package/docs/guides/migration/flexible-routing-conditions.md +0 -375
  486. package/docs/guides/migration/multi-step-execution.md +0 -393
  487. package/docs/guides/migration/response-modal-refactor.md +0 -518
  488. package/docs/guides/prompt-optimization.md +0 -164
  489. package/examples/advanced-patterns/context-compaction.ts +0 -223
  490. package/examples/advanced-patterns/knowledge-based-agent.ts +0 -735
  491. package/examples/advanced-patterns/persistent-onboarding.ts +0 -728
  492. package/examples/advanced-patterns/route-lifecycle-hooks.ts +0 -556
  493. package/examples/advanced-patterns/streaming-responses.ts +0 -656
  494. package/examples/ai-providers/anthropic-integration.ts +0 -388
  495. package/examples/ai-providers/openai-integration.ts +0 -228
  496. package/examples/condition-patterns/function-only-conditions.ts +0 -365
  497. package/examples/condition-patterns/mixed-array-conditions.ts +0 -477
  498. package/examples/condition-patterns/route-skipif-patterns.ts +0 -468
  499. package/examples/condition-patterns/step-skipif-patterns.ts +0 -0
  500. package/examples/condition-patterns/string-only-conditions.ts +0 -296
  501. package/examples/conversation-flows/completion-transitions.ts +0 -318
  502. package/examples/core-concepts/basic-agent.ts +0 -503
  503. package/examples/core-concepts/modern-streaming-api.ts +0 -309
  504. package/examples/core-concepts/schema-driven-extraction.ts +0 -332
  505. package/examples/core-concepts/session-management.ts +0 -494
  506. package/examples/integrations/database-integration.ts +0 -631
  507. package/examples/integrations/healthcare-integration.ts +0 -595
  508. package/examples/integrations/search-integration.ts +0 -530
  509. package/examples/integrations/server-session-management.ts +0 -307
  510. package/examples/persistence/custom-adapter.ts +0 -526
  511. package/examples/persistence/database-persistence.ts +0 -583
  512. package/examples/persistence/memory-sessions.ts +0 -495
  513. package/examples/persistence/prisma-schema.example.prisma +0 -74
  514. package/examples/persistence/redis-persistence.ts +0 -488
  515. package/examples/tools/basic-tools.ts +0 -765
  516. package/examples/tools/data-enrichment-tools.ts +0 -593
  517. package/examples/tools/enhanced-tool-metadata.ts +0 -268
  518. package/examples/tools/streaming-tool-execution.ts +0 -283
  519. package/src/core/BatchExecutor.ts +0 -1187
  520. package/src/core/BatchPromptBuilder.ts +0 -299
  521. package/src/core/Route.ts +0 -678
  522. package/src/types/route.ts +0 -392
@@ -1,388 +0,0 @@
1
- /**
2
- * Anthropic Provider Integration Example
3
- *
4
- * This example demonstrates how to use the Anthropic provider with Claude models
5
- * for building conversational agents. Shows provider configuration, model selection,
6
- * and Claude-specific features.
7
- *
8
- * Key concepts:
9
- * - Anthropic provider setup
10
- * - Claude model configuration
11
- * - Temperature and other parameters
12
- * - Streaming responses
13
- * - Tool calling with Claude
14
- */
15
-
16
- import { Agent, AnthropicProvider, type Tool } from "../../src";
17
-
18
- // Define data types for our example
19
- interface ResearchData {
20
- topic: string;
21
- depth: "overview" | "detailed" | "comprehensive";
22
- sources: number;
23
- format: "summary" | "bullet_points" | "structured";
24
- researchId?: string;
25
- }
26
-
27
- // Research tool that Claude can use
28
- const conductResearch: Tool<unknown, ResearchData> = {
29
- id: "conduct_research",
30
- description: "Conduct comprehensive research on a given topic",
31
- parameters: {
32
- type: "object",
33
- properties: {},
34
- },
35
- handler: async (context, args) => {
36
- const data = context.data;
37
- console.log(
38
- `Conducting ${data?.depth} research on: ${data?.topic}`
39
- );
40
-
41
- const researchId = `RES-${Date.now()}`;
42
-
43
- // Simulate research process
44
- const findings = {
45
- overview: `Found ${data?.sources || 3} sources about ${
46
- data?.topic
47
- }`,
48
- key_points: [
49
- "Latest developments in the field",
50
- "Current trends and challenges",
51
- "Future outlook and predictions",
52
- ],
53
- sources: ["academic papers", "industry reports", "expert interviews"],
54
- };
55
-
56
- return {
57
- data: `Research completed (ID: ${researchId}). ${findings.overview}`,
58
- dataUpdate: {
59
- researchId,
60
- },
61
- };
62
- },
63
- };
64
-
65
- // Define research schema
66
- const researchSchema = {
67
- type: "object",
68
- properties: {
69
- topic: { type: "string", description: "The research topic" },
70
- depth: {
71
- type: "string",
72
- enum: ["overview", "detailed", "comprehensive"],
73
- default: "detailed",
74
- },
75
- sources: {
76
- type: "number",
77
- minimum: 1,
78
- maximum: 20,
79
- default: 5,
80
- description: "Number of sources to analyze",
81
- },
82
- format: {
83
- type: "string",
84
- enum: ["summary", "bullet_points", "structured"],
85
- default: "structured",
86
- description: "Output format preference",
87
- },
88
- researchId: { type: "string" },
89
- },
90
- required: ["topic"],
91
- };
92
-
93
- // Create agent with Anthropic provider
94
- const agent = new Agent<unknown, ResearchData>({
95
- name: "ClaudeResearcher",
96
- description: "A research assistant powered by Claude",
97
- provider: new AnthropicProvider({
98
- apiKey: process.env.ANTHROPIC_API_KEY!,
99
- model: "claude-sonnet-4-5", // Latest Claude model
100
- config: {
101
- temperature: 0.7, // Balanced creativity vs consistency
102
- max_tokens: 4096,
103
- top_p: 0.9,
104
- },
105
- }),
106
- // NEW: Agent-level schema
107
- schema: researchSchema,
108
- });
109
-
110
- // Create research route
111
- const researchRoute = agent.createRoute({
112
- title: "Research Assistant",
113
- description: "Conduct research using Claude's analytical capabilities",
114
- // NEW: Required fields for route completion
115
- requiredFields: ["topic"],
116
- // NEW: Optional fields that enhance the experience
117
- optionalFields: ["depth", "sources", "format", "researchId"],
118
- identity: `You are Claude, an AI research assistant created by Anthropic.
119
- You have access to extensive knowledge and can conduct thorough research.
120
- Always be helpful, truthful, and provide well-reasoned analysis.`,
121
- initialStep: {
122
- prompt: `Hello! I'm Claude, your AI research assistant. I can help you research any topic thoroughly.
123
-
124
- What would you like me to research today? For best results, include:
125
- - The specific topic or question
126
- - How deep you want the research (overview, detailed, or comprehensive)
127
- - What format you'd prefer (summary, bullet points, or structured)
128
-
129
- For example: "Research the impact of artificial intelligence on healthcare, comprehensive analysis, structured format"`,
130
- collect: ["topic"],
131
- },
132
- });
133
-
134
- // Build research conversation flow
135
- const askTopic = researchRoute.initialStep.nextStep({
136
- prompt: "What topic would you like me to research?",
137
- collect: ["topic"],
138
- skipIf: (ctx) => !!ctx.data?.topic,
139
- });
140
-
141
- const askDepth = askTopic.nextStep({
142
- prompt:
143
- "How deep should I go with this research? (overview, detailed, or comprehensive)",
144
- collect: ["depth"],
145
- requires: ["topic"],
146
- skipIf: (ctx) => !!ctx.data?.depth,
147
- });
148
-
149
- const askSources = askDepth.nextStep({
150
- prompt: "How many sources should I analyze? (1-20, default is 5)",
151
- collect: ["sources"],
152
- requires: ["topic"],
153
- skipIf: (ctx) => ctx.data?.sources !== undefined,
154
- });
155
-
156
- const askFormat = askSources.nextStep({
157
- prompt:
158
- "What format would you prefer for the results? (summary, bullet_points, or structured)",
159
- collect: ["format"],
160
- requires: ["topic"],
161
- skipIf: (ctx) => !!ctx.data?.format,
162
- });
163
-
164
- askFormat.nextStep({
165
- prompt: ({ session }) => {
166
- const data = session?.data;
167
- return `I'll now conduct ${data?.depth || "detailed"} research on "${
168
- data?.topic
169
- }" using ${data?.sources || 5} sources. This may take a moment...`;
170
- },
171
- tools: ["conduct_research"],
172
- requires: ["topic"],
173
- });
174
-
175
- // Add the research tool to the agent
176
- agent.addTool(conductResearch);
177
-
178
- // Demonstrate Claude's research capabilities
179
- async function demonstrateClaudeResearch() {
180
- console.log("=== Claude Research Assistant Demo ===\n");
181
-
182
- // Example 1: Comprehensive research request
183
- console.log("Example 1: Comprehensive AI research");
184
- console.log(
185
- "User: Research the impact of artificial intelligence on healthcare, comprehensive analysis, structured format"
186
- );
187
-
188
- const response1 = await agent.respond({
189
- history: [
190
- {
191
- role: "user",
192
- content:
193
- "Research the impact of artificial intelligence on healthcare, comprehensive analysis, structured format",
194
- name: "Researcher",
195
- },
196
- ],
197
- });
198
-
199
- console.log("Claude:", response1.message);
200
- console.log(
201
- "Collected data:",
202
- JSON.stringify(response1.session?.data, null, 2)
203
- );
204
- console.log();
205
-
206
- // Example 2: Step-by-step research configuration
207
- console.log("Example 2: Step-by-step configuration");
208
- console.log("User: I want to research renewable energy");
209
-
210
- const response2a = await agent.respond({
211
- history: [
212
- {
213
- role: "user",
214
- content: "I want to research renewable energy",
215
- name: "Student",
216
- },
217
- ],
218
- });
219
-
220
- console.log("Claude:", response2a.message);
221
-
222
- console.log("User: Make it detailed with 8 sources");
223
- const response2b = await agent.respond({
224
- history: [
225
- {
226
- role: "user",
227
- content: "I want to research renewable energy",
228
- name: "Student",
229
- },
230
- {
231
- role: "assistant",
232
- content: response2a.message,
233
- },
234
- {
235
- role: "user",
236
- content: "Make it detailed with 8 sources",
237
- name: "Student",
238
- },
239
- ],
240
- session: response2a.session,
241
- });
242
-
243
- console.log("Claude:", response2b.message);
244
-
245
- console.log("User: Use bullet points format");
246
- const response2c = await agent.respond({
247
- history: [
248
- {
249
- role: "user",
250
- content: "I want to research renewable energy",
251
- name: "Student",
252
- },
253
- {
254
- role: "assistant",
255
- content: response2a.message,
256
- },
257
- {
258
- role: "user",
259
- content: "Make it detailed with 8 sources",
260
- name: "Student",
261
- },
262
- {
263
- role: "assistant",
264
- content: response2b.message,
265
- },
266
- {
267
- role: "user",
268
- content: "Use bullet points format",
269
- name: "Student",
270
- },
271
- ],
272
- session: response2b.session,
273
- });
274
-
275
- console.log("Claude:", response2c.message);
276
- console.log(
277
- "Final collected data:",
278
- JSON.stringify(response2c.session?.data, null, 2)
279
- );
280
- console.log("Research complete:", response2c.isRouteComplete);
281
- }
282
-
283
- // Demonstrate streaming with Claude
284
- async function demonstrateClaudeStreaming() {
285
- console.log("\n=== Claude Streaming Demo ===\n");
286
-
287
- console.log("User: Give me a comprehensive overview of quantum computing");
288
-
289
- let accumulatedResponse = "";
290
- for await (const chunk of agent.respondStream({
291
- history: [
292
- {
293
- role: "user",
294
- content: "Give me a comprehensive overview of quantum computing",
295
- name: "Scientist",
296
- },
297
- ],
298
- })) {
299
- // Show streaming in real-time
300
- process.stdout.write(chunk.delta);
301
- accumulatedResponse += chunk.delta;
302
-
303
- if (chunk.done) {
304
- console.log("\n\nStreaming complete!");
305
- console.log("Total length:", accumulatedResponse.length, "characters");
306
- console.log(
307
- "Session data:",
308
- JSON.stringify(chunk.session?.data, null, 2)
309
- );
310
- break;
311
- }
312
- }
313
- }
314
-
315
- // Show different Claude model configurations
316
- function demonstrateModelConfigurations() {
317
- console.log("\n=== Claude Model Configurations ===\n");
318
-
319
- const configurations = [
320
- {
321
- name: "Creative Writing Assistant",
322
- model: "claude-sonnet-4.5",
323
- temperature: 0.9,
324
- maxTokens: 8192,
325
- useCase: "High creativity, long-form content",
326
- },
327
- {
328
- name: "Code Review Bot",
329
- model: "claude-haiku-4.5",
330
- temperature: 0.3,
331
- maxTokens: 4096,
332
- useCase: "Fast, consistent code analysis",
333
- },
334
- {
335
- name: "Data Analyst",
336
- model: "claude-sonnet-4.5",
337
- temperature: 0.1,
338
- maxTokens: 16384,
339
- useCase: "Precise analysis, complex reasoning",
340
- },
341
- ];
342
-
343
- configurations.forEach((config, index) => {
344
- console.log(`${index + 1}. ${config.name}`);
345
- console.log(` Model: ${config.model}`);
346
- console.log(` Temperature: ${config.temperature}`);
347
- console.log(` Max Tokens: ${config.maxTokens}`);
348
- console.log(` Use Case: ${config.useCase}`);
349
- console.log();
350
- });
351
-
352
- console.log("Example configuration code:");
353
- console.log(
354
- `
355
- const creativeWriter = new AnthropicProvider({
356
- apiKey: process.env.ANTHROPIC_API_KEY!,
357
- model: "claude-sonnet-4.5",
358
- temperature: 0.9, // High creativity
359
- maxTokens: 8192, // Long responses
360
- });
361
-
362
- const codeReviewer = new AnthropicProvider({
363
- apiKey: process.env.ANTHROPIC_API_KEY!,
364
- model: "claude-haiku-4.5",
365
- temperature: 0.3, // Low creativity, high consistency
366
- maxTokens: 4096, // Shorter responses
367
- });
368
- `.trim()
369
- );
370
- }
371
-
372
- // Run demonstrations
373
- async function main() {
374
- try {
375
- demonstrateModelConfigurations();
376
- await demonstrateClaudeResearch();
377
- await demonstrateClaudeStreaming();
378
- } catch (error) {
379
- console.error("Error:", error);
380
- console.log(
381
- "\nNote: Make sure to set ANTHROPIC_API_KEY environment variable"
382
- );
383
- }
384
- }
385
-
386
- if (import.meta.url === `file://${process.argv[1]}`) {
387
- main().catch(console.error);
388
- }
@@ -1,228 +0,0 @@
1
- /**
2
- * Example: OpenAI Agent with multiple providers
3
- * Updated for v2 architecture with session step management and schema-first data extraction
4
- */
5
-
6
- import {
7
- Agent,
8
- OpenAIProvider,
9
- type Tool,
10
- userMessage,
11
- END_ROUTE,
12
- } from "../../src";
13
-
14
- // Custom context type
15
- interface CustomerContext {
16
- customerId: string;
17
- name: string;
18
- preferences: string[];
19
- }
20
-
21
- // Data extraction type for weather queries
22
- interface WeatherData {
23
- location?: string;
24
- temperature?: number;
25
- condition?: string;
26
- }
27
-
28
- // Define a tool that can access collected data - using unified Tool interface
29
- const getWeatherTool: Tool<CustomerContext, WeatherData> = {
30
- id: "get_weather",
31
- description: "Get current weather for a location",
32
- parameters: {
33
- type: "object",
34
- properties: {
35
- location: { type: "string", description: "City name" },
36
- },
37
- required: ["location"],
38
- },
39
- handler: async (context, args) => {
40
- // Use data location if available, otherwise use args
41
- const finalLocation = context.data?.location || args?.location;
42
-
43
- // Simulate API call
44
- return {
45
- data: `Weather in ${finalLocation}: 72Β°F and Sunny`,
46
- dataUpdate: {
47
- location: finalLocation as string,
48
- temperature: 72,
49
- condition: "Sunny",
50
- },
51
- };
52
- },
53
- };
54
-
55
- async function main() {
56
- // Initialize OpenAI provider
57
- const openaiProvider = new OpenAIProvider({
58
- apiKey: process.env.OPENAI_API_KEY || "",
59
- model: "gpt-5", // Latest model
60
- config: {
61
- temperature: 0.7,
62
- max_tokens: 1000,
63
- },
64
- // Optional: customize backup models
65
- backupModels: ["gpt-5-mini", "gpt-5-nano"],
66
- // Optional: customize retry config
67
- retryConfig: {
68
- timeout: 30000,
69
- retries: 2,
70
- },
71
- });
72
-
73
- // Create agent with OpenAI
74
- const agent = new Agent<CustomerContext, WeatherData>({
75
- name: "Assistant",
76
- description:
77
- "A helpful AI assistant that can check weather and answer questions",
78
- goal: "Assist users with information and weather queries",
79
- identity:
80
- "I am the Assistant, an intelligent AI powered by OpenAI's advanced language models. With access to real-time information and deep reasoning capabilities, I'm here to help you with weather updates, questions, and any information you need.",
81
- context: {
82
- customerId: "user123",
83
- name: "Alice",
84
- preferences: ["concise answers", "weather updates"],
85
- },
86
- provider: openaiProvider,
87
-
88
- schema: {
89
- type: "object",
90
- properties: {
91
- location: {
92
- type: "string",
93
- description: "City or location for weather check",
94
- },
95
- temperature: {
96
- type: "number",
97
- description: "Temperature in Fahrenheit",
98
- },
99
- condition: {
100
- type: "string",
101
- description: "Weather condition (sunny, cloudy, rainy, etc.)",
102
- },
103
- },
104
- required: ["location"],
105
- },
106
- });
107
-
108
- // Add tool using unified interface
109
- agent.addTool(getWeatherTool);
110
-
111
- // Add domain knowledge
112
- agent
113
- .createTerm({
114
- name: "Weather Service",
115
- description: "Our real-time weather information service",
116
- synonyms: ["weather API", "forecast service"],
117
- })
118
- .createGuideline({
119
- action:
120
- "Always provide temperature in Fahrenheit and include the current condition",
121
- tags: ["weather", "formatting"],
122
- enabled: true,
123
- })
124
- .createGuideline({
125
- condition: "User asks for weather in multiple cities",
126
- action: "Offer to check weather for each city one by one",
127
- enabled: true,
128
- });
129
-
130
- // Create weather route with data extraction schema
131
- const weatherRoute = agent.createRoute({
132
- title: "Check Weather",
133
- description: "Help user check weather for a location",
134
- when: ["User wants to know the weather"],
135
- });
136
-
137
- // Step 1: Collect location
138
- const askLocation = weatherRoute.initialStep.nextStep({
139
- prompt: "Ask which city they want weather for",
140
- collect: ["location"],
141
- skipIf: (data) => !!data.location,
142
- });
143
-
144
- // Step 2: Get weather data
145
- const fetchWeather = askLocation.nextStep({
146
- tools: ["get_weather"], // Reference by ID
147
- requires: ["location"],
148
- });
149
-
150
- // Step 3: Present weather information
151
- const showWeather = fetchWeather.nextStep({
152
- prompt:
153
- "Present the weather information in a friendly way with temperature and condition",
154
- });
155
-
156
- showWeather.nextStep({ step: END_ROUTE });
157
-
158
- // Example conversation with session step management
159
- console.log("πŸ€– Starting OpenAI Agent Example\n");
160
-
161
- // Session is automatically managed by the agent
162
- console.log("✨ Session ready:", agent.session.id);
163
-
164
- try {
165
- // Turn 1: Process weather query with session management
166
- console.log("πŸ“€ Processing with session management...");
167
-
168
- await agent.session.addMessage("user", "What's the weather like in San Francisco?", "Alice");
169
-
170
- const response = await agent.respond({
171
- history: agent.session.getHistory()
172
- });
173
-
174
- console.log("\nβœ… Agent Configuration:");
175
- console.log(` AI Provider: ${openaiProvider.name}`);
176
-
177
- console.log("\nπŸ—ΊοΈ Route Configuration:");
178
- console.log(` Title: ${weatherRoute.title}`);
179
- console.log(
180
- ` Steps: Initial β†’ Ask Location β†’ Fetch Weather β†’ Show Weather`
181
- );
182
-
183
- console.log("\nπŸ’¬ Conversation:");
184
- console.log(` Customer: What's the weather like in San Francisco?`);
185
- console.log(` Agent: ${response.message}`);
186
- console.log(` Route: ${response.session?.currentRoute?.title}`);
187
- console.log(` Data:`, agent.session.getData());
188
-
189
- await agent.session.addMessage("assistant", response.message);
190
-
191
- // Check for route completion
192
- if (response.isRouteComplete) {
193
- console.log("\nβœ… Weather route complete!");
194
- await logWeatherRequest(agent.session.getData());
195
- }
196
-
197
- console.log("\n✨ Session step benefits:");
198
- console.log(" βœ… Data extraction tracked across turns");
199
- console.log(" βœ… Step progression managed automatically");
200
- console.log(" βœ… Always-on routing respects intent changes");
201
- console.log(
202
- " (Set OPENAI_API_KEY environment variable to make actual API calls)"
203
- );
204
- } catch (error) {
205
- console.error("❌ Error:", error);
206
- }
207
- }
208
-
209
- /**
210
- * Mock function to log the weather request for analytics.
211
- * @param data - The weather data from the completed route.
212
- */
213
- async function logWeatherRequest(data: WeatherData) {
214
- console.log("\n" + "=".repeat(60));
215
- console.log("πŸ“Š Logging Weather Request for Analytics...");
216
- console.log("=".repeat(60));
217
- console.log("Request Details:", JSON.stringify(data, null, 2));
218
- console.log(` - Logging request for location: ${data.location}`);
219
- await new Promise((resolve) => setTimeout(resolve, 500));
220
- console.log("✨ Request logged!");
221
- }
222
-
223
- // Run if executed directly
224
- if (import.meta.url === `file://${process.argv[1]}`) {
225
- main().catch(console.error);
226
- }
227
-
228
- export { main };