@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,530 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-argument */
2
- /**
3
- * Example: Using OpenSearch for Persistence with Session Step
4
- *
5
- * OpenSearch provides powerful persistence with:
6
- * - Full-text search across conversations
7
- * - Analytics and aggregations on collected data
8
- * - Time-series analysis of sessions
9
- * - Compatible with Elasticsearch 7.x
10
- */
11
-
12
- import {
13
- Agent,
14
- GeminiProvider,
15
- OpenSearchAdapter,
16
- END_ROUTE,
17
- } from "../../src";
18
-
19
- // @ts-expect-error - Client is not typed
20
- import { Client } from "@opensearch-project/opensearch";
21
-
22
- const client = new Client({
23
- url:{}
24
- })
25
- /**
26
- * Setup Steps:
27
- *
28
- * 1. Install OpenSearch and client:
29
- * brew install opensearch (macOS) or docker run opensearch
30
- * npm install @opensearch-project/opensearch
31
- *
32
- * 2. Start OpenSearch:
33
- * opensearch or docker start opensearch
34
- *
35
- * 3. Run this example
36
- */
37
-
38
- interface ConversationContext {
39
- userId: string;
40
- userName: string;
41
- department: string;
42
- }
43
-
44
- interface ComplaintData {
45
- category: string;
46
- severity: "low" | "medium" | "high" | "critical";
47
- description: string;
48
- affectedService?: string;
49
- requestedResolution?: string;
50
- }
51
-
52
- interface AnalyticsContext {
53
- userId: string;
54
- department: string;
55
- }
56
-
57
- interface TicketData {
58
- ticketType: string;
59
- priority: string;
60
- tags: string[];
61
- }
62
-
63
- async function example() {
64
- // Initialize OpenSearch client
65
- const client = new Client({
66
- node: process.env.OPENSEARCH_URL || "https://localhost:9200",
67
- ssl: {
68
- rejectUnauthorized: false, // For development only
69
- },
70
- auth: {
71
- username: "admin",
72
- password: "admin",
73
- },
74
- });
75
-
76
- const userId = "user_123";
77
-
78
- // Create adapter
79
- const adapter = new OpenSearchAdapter(client, {
80
- indices: {
81
- sessions: "agent_sessions",
82
- messages: "agent_messages",
83
- },
84
- autoCreateIndices: true,
85
- refresh: "wait_for", // Ensure searchability immediately
86
- });
87
-
88
- // Initialize indices
89
- await adapter.initialize();
90
-
91
- // Define complaint schema
92
- const complaintSchema = {
93
- type: "object",
94
- properties: {
95
- category: {
96
- type: "string",
97
- description: "Complaint category",
98
- },
99
- severity: {
100
- type: "string",
101
- enum: ["low", "medium", "high", "critical"],
102
- default: "medium",
103
- description: "Severity level",
104
- },
105
- description: {
106
- type: "string",
107
- description: "Detailed complaint description",
108
- },
109
- affectedService: {
110
- type: "string",
111
- description: "Which service is affected",
112
- },
113
- requestedResolution: {
114
- type: "string",
115
- description: "What resolution the customer wants",
116
- },
117
- },
118
- required: ["category", "severity", "description"],
119
- };
120
-
121
- // Create agent with OpenSearch persistence
122
- const agent = new Agent<ConversationContext, ComplaintData>({
123
- name: "Customer Service Agent",
124
- description: "Handle customer complaints with full-text search",
125
- goal: "Resolve customer issues efficiently",
126
- provider: new GeminiProvider({
127
- apiKey: process.env.GEMINI_API_KEY!,
128
- model: "models/gemini-2.5-flash",
129
- }),
130
- context: {
131
- userId,
132
- userName: "Alice",
133
- department: "customer_service",
134
- },
135
- // NEW: Agent-level schema
136
- schema: complaintSchema,
137
- persistence: {
138
- adapter,
139
- autoSave: true, // Auto-save session step with collected data
140
- userId,
141
- },
142
- });
143
-
144
- // Create complaint handling route
145
- const complaintRoute = agent.createRoute({
146
- title: "Handle Customer Complaint",
147
- description: "Process and resolve customer complaints",
148
- when: [
149
- "User has a complaint",
150
- "User reports an issue or problem",
151
- "User is dissatisfied",
152
- ],
153
- // NEW: Required fields for route completion
154
- requiredFields: ["category", "severity", "description"],
155
- // NEW: Optional fields that enhance the experience
156
- optionalFields: ["affectedService", "requestedResolution"],
157
- });
158
-
159
- // Step flow
160
- complaintRoute.initialStep
161
- .nextStep({
162
- prompt: "Understand the complaint",
163
- collect: ["category", "severity", "description"],
164
- skipIf: (ctx) => !!ctx.data?.description,
165
- })
166
- .nextStep({
167
- prompt: "Identify affected service",
168
- collect: ["affectedService"],
169
- skipIf: (ctx) => !!ctx.data?.affectedService,
170
- requires: ["description"],
171
- })
172
- .nextStep({
173
- prompt: "Ask for desired resolution",
174
- collect: ["requestedResolution"],
175
- skipIf: (ctx) => !!ctx.data?.requestedResolution,
176
- requires: ["category", "description"],
177
- })
178
- .nextStep({
179
- prompt: "Propose solution and close complaint",
180
- requires: ["category", "description"],
181
- })
182
- .nextStep({ step: END_ROUTE });
183
-
184
- // Session is automatically managed by the agent
185
- console.log("✨ Session ready:", agent.session.id);
186
-
187
- // Set initial data
188
- await agent.session.setData({ severity: "medium" });
189
-
190
- // Turn 1
191
- console.log("\n--- Turn 1 ---");
192
-
193
- await agent.session.addMessage(
194
- "user",
195
- "I'm very upset! Your app keeps crashing when I try to make a payment. This is critical!",
196
- "Alice"
197
- );
198
-
199
- const response1 = await agent.respond({
200
- history: agent.session.getHistory()
201
- });
202
-
203
- console.log("🤖 Agent:", response1.message);
204
- console.log("📊 Data:", agent.session.getData());
205
-
206
- await agent.session.addMessage("assistant", response1.message);
207
-
208
- // Turn 2
209
- console.log("\n--- Turn 2 ---");
210
-
211
- await agent.session.addMessage(
212
- "user",
213
- "It's the payment service. I want a full refund and compensation!",
214
- "Alice"
215
- );
216
-
217
- const response2 = await agent.respond({
218
- history: agent.session.getHistory()
219
- });
220
-
221
- console.log("🤖 Agent:", response2.message);
222
- console.log("📊 Data:", agent.session.getData());
223
-
224
- await agent.session.addMessage("assistant", response2.message);
225
-
226
- if (response2.isRouteComplete) {
227
- console.log("\n✅ Complaint route complete!");
228
- await createSupportTicket(agent.session.getData() as ComplaintData);
229
- }
230
-
231
- // Demonstrate session recovery with new agent instance
232
- console.log("\n--- Session Recovery Example ---");
233
- const sessionId = agent.session.id;
234
-
235
- const recoveredAgent = new Agent<ConversationContext, ComplaintData>({
236
- name: "Customer Service Agent",
237
- provider: new GeminiProvider({
238
- apiKey: process.env.GEMINI_API_KEY!,
239
- model: "models/gemini-2.5-flash",
240
- }),
241
- context: {
242
- userId,
243
- userName: "Alice",
244
- department: "customer_service",
245
- },
246
- persistence: {
247
- adapter,
248
- autoSave: true,
249
- },
250
- sessionId, // Same sessionId - will load existing session
251
- });
252
-
253
- // Recreate the same route on recovered agent
254
- recoveredAgent.createRoute({
255
- title: "Handle Customer Complaint",
256
- description: "Process and resolve customer complaints",
257
- when: [
258
- "User has a complaint",
259
- "User reports an issue or problem",
260
- "User is dissatisfied",
261
- ],
262
- // NEW: Required fields for route completion
263
- requiredFields: ["category", "severity", "description"],
264
- // NEW: Optional fields
265
- optionalFields: ["affectedService", "requestedResolution"],
266
- });
267
-
268
- console.log("📥 Recovered session:", {
269
- sessionId: recoveredAgent.session.id,
270
- historyLength: recoveredAgent.session.getHistory().length,
271
- data: recoveredAgent.session.getData(),
272
- });
273
-
274
- // Demonstrate full-text search
275
- console.log("\n--- Full-Text Search Example ---");
276
- const searchResults = await client.search({
277
- index: "agent_messages",
278
- body: {
279
- query: {
280
- match: {
281
- content: "payment crash",
282
- },
283
- },
284
- },
285
- });
286
-
287
- console.log(
288
- `🔍 Found ${searchResults.body.hits.total.value} messages matching "payment crash"`
289
- );
290
-
291
- // Demonstrate aggregations
292
- console.log("\n--- Analytics Example ---");
293
- const aggResults = await client.search({
294
- index: "agent_sessions",
295
- body: {
296
- size: 0,
297
- aggs: {
298
- by_status: {
299
- terms: { field: "status.keyword" },
300
- },
301
- by_agent: {
302
- terms: { field: "agentName.keyword" },
303
- },
304
- },
305
- },
306
- });
307
-
308
- console.log("📊 Session statistics:", aggResults.body.aggregations);
309
- console.log("\n✅ Session completed and indexed!");
310
-
311
- // Cleanup
312
- if (adapter.disconnect) {
313
- await adapter.disconnect();
314
- }
315
- }
316
-
317
- /**
318
- * Advanced Example: Search and Analytics on Collected data
319
- */
320
- async function analyticsExample() {
321
- const client = new Client({
322
- node: process.env.OPENSEARCH_URL || "https://localhost:9200",
323
- ssl: { rejectUnauthorized: false },
324
- auth: { username: "admin", password: "admin" },
325
- });
326
-
327
- const adapter = new OpenSearchAdapter(client, {
328
- indices: {
329
- sessions: "support_sessions",
330
- messages: "support_messages",
331
- },
332
- autoCreateIndices: true,
333
- });
334
-
335
- await adapter.initialize();
336
-
337
- interface TicketData {
338
- ticketType: string;
339
- priority: string;
340
- tags: string[];
341
- }
342
-
343
- const ticketSchema = {
344
- type: "object",
345
- properties: {
346
- ticketType: { type: "string" },
347
- priority: { type: "string" },
348
- tags: {
349
- type: "array",
350
- items: { type: "string" },
351
- },
352
- },
353
- required: ["ticketType", "priority"],
354
- };
355
-
356
- const agent = new Agent<ConversationContext, TicketData>({
357
- name: "Support Analyzer",
358
- provider: new GeminiProvider({
359
- apiKey: process.env.GEMINI_API_KEY!,
360
- model: "models/gemini-2.5-flash",
361
- }),
362
- // NEW: Agent-level schema
363
- schema: ticketSchema,
364
- persistence: {
365
- adapter,
366
- autoSave: true,
367
- userId: "analyst_001",
368
- },
369
- });
370
-
371
- const ticketRoute = agent.createRoute({
372
- title: "Analyze Support Ticket",
373
- // NEW: Required fields for route completion
374
- requiredFields: ["ticketType", "priority"],
375
- // NEW: Optional fields
376
- optionalFields: ["tags"],
377
- });
378
-
379
- ticketRoute.initialStep.nextStep({
380
- prompt: "Analyze and categorize ticket",
381
- collect: ["ticketType", "priority", "tags"],
382
- });
383
-
384
- // Create multiple sessions with different agents
385
- for (let i = 0; i < 3; i++) {
386
- const sessionAgent = new Agent<AnalyticsContext, TicketData>({
387
- name: "Support Analyzer",
388
- provider: new GeminiProvider({
389
- apiKey: process.env.GEMINI_API_KEY!,
390
- model: "models/gemini-2.5-flash",
391
- }),
392
- context: {
393
- userId: "analyst_001",
394
- department: "support",
395
- },
396
- // NEW: Agent-level schema
397
- schema: ticketSchema,
398
- persistence: {
399
- adapter: new OpenSearchAdapter(client),
400
- autoSave: true,
401
- },
402
- });
403
-
404
- // Create the ticket route on each agent
405
- sessionAgent.createRoute({
406
- title: "Analyze Support Ticket",
407
- // NEW: Required fields for route completion
408
- requiredFields: ["ticketType", "priority"],
409
- // NEW: Optional fields
410
- optionalFields: ["tags"],
411
- });
412
-
413
- const ticketContent = `Support ticket ${i + 1}: ${
414
- ["Billing issue", "Technical problem", "Feature request"][i]
415
- }`;
416
-
417
- await sessionAgent.session.addMessage("user", ticketContent, "User");
418
-
419
- const response = await sessionAgent.respond({
420
- history: sessionAgent.session.getHistory(),
421
- });
422
-
423
- await sessionAgent.session.addMessage("assistant", response.message);
424
-
425
- console.log(`✅ Processed ticket ${i + 1}: ${response.message}`);
426
- }
427
-
428
- // Search across all sessions
429
- console.log("\n--- Search All Sessions ---");
430
- const allSessions = await client.search({
431
- index: "support_sessions",
432
- body: {
433
- query: { match_all: {} },
434
- },
435
- });
436
-
437
- console.log(
438
- `📊 Total sessions indexed: ${allSessions.body.hits.total.value}`
439
- );
440
-
441
- // Analyze collected data patterns
442
- console.log("\n--- Analyze Collected data ---");
443
- const sessions = allSessions.body.hits.hits;
444
-
445
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
446
- sessions.forEach((hit: Record<string, any>) => {
447
- const collectedData = hit._source.collectedData;
448
- console.log(`Session ${hit._id}:`, {
449
- data: collectedData?.data,
450
- route: hit._source.currentRoute,
451
- });
452
- });
453
-
454
- console.log("✅ Analytics complete!");
455
-
456
- if (adapter.disconnect) {
457
- await adapter.disconnect();
458
- }
459
- }
460
-
461
- /**
462
- * Time-Series Analysis Example
463
- */
464
- async function timeSeriesExample() {
465
- const client = new Client({
466
- node: process.env.OPENSEARCH_URL || "https://localhost:9200",
467
- ssl: { rejectUnauthorized: false },
468
- auth: { username: "admin", password: "admin" },
469
- });
470
-
471
- const adapter = new OpenSearchAdapter<ConversationContext>(client);
472
- await adapter.initialize();
473
-
474
- new Agent<ConversationContext, unknown>({
475
- name: "Metrics Agent",
476
- provider: new GeminiProvider({
477
- apiKey: process.env.GEMINI_API_KEY!,
478
- model: "models/gemini-2.5-flash",
479
- }),
480
- persistence: { adapter, userId: "metrics_user" },
481
- });
482
-
483
- // Query sessions over time
484
- const timeQuery = await client.search({
485
- index: "agent_sessions",
486
- body: {
487
- size: 0,
488
- aggs: {
489
- sessions_over_time: {
490
- date_histogram: {
491
- field: "createdAt",
492
- calendar_interval: "day",
493
- },
494
- },
495
- avg_message_count: {
496
- avg: { field: "messageCount" },
497
- },
498
- },
499
- },
500
- });
501
-
502
- console.log("📈 Time-series metrics:", timeQuery.body.aggregations);
503
- console.log("✅ Time-series analysis complete!");
504
-
505
- if (adapter.disconnect) {
506
- await adapter.disconnect();
507
- }
508
- }
509
-
510
- /**
511
- * Mock function to create a support ticket.
512
- */
513
- async function createSupportTicket(data: ComplaintData | undefined) {
514
- console.log("\n" + "=".repeat(60));
515
- console.log("🎫 Creating Support Ticket...");
516
- console.log("=".repeat(60));
517
- console.log("Ticket Details:", JSON.stringify(data, null, 2));
518
- console.log(
519
- ` - Creating ticket for category: ${data?.category} with severity: ${data?.severity}`
520
- );
521
- await new Promise((resolve) => setTimeout(resolve, 1000));
522
- console.log("✨ Ticket created successfully!");
523
- }
524
-
525
- // Run the example
526
- if (require.main === module) {
527
- example().catch(console.error);
528
- }
529
-
530
- export { example, analyticsExample, timeSeriesExample };