@falai/agent 1.2.8 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (499) hide show
  1. package/README.md +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/types/agent.d.ts +183 -54
  126. package/dist/cjs/types/agent.d.ts.map +1 -1
  127. package/dist/cjs/types/agent.js +0 -6
  128. package/dist/cjs/types/agent.js.map +1 -1
  129. package/dist/cjs/types/ai.d.ts +3 -3
  130. package/dist/cjs/types/ai.d.ts.map +1 -1
  131. package/dist/cjs/types/errors.d.ts +15 -0
  132. package/dist/cjs/types/errors.d.ts.map +1 -0
  133. package/dist/cjs/types/errors.js +22 -0
  134. package/dist/cjs/types/errors.js.map +1 -0
  135. package/dist/cjs/types/flow.d.ts +513 -0
  136. package/dist/cjs/types/flow.d.ts.map +1 -0
  137. package/dist/cjs/types/{route.js → flow.js} +2 -2
  138. package/dist/cjs/types/flow.js.map +1 -0
  139. package/dist/cjs/types/index.d.ts +7 -6
  140. package/dist/cjs/types/index.d.ts.map +1 -1
  141. package/dist/cjs/types/index.js +6 -2
  142. package/dist/cjs/types/index.js.map +1 -1
  143. package/dist/cjs/types/persistence.d.ts +11 -7
  144. package/dist/cjs/types/persistence.d.ts.map +1 -1
  145. package/dist/cjs/types/routing.d.ts +1 -1
  146. package/dist/cjs/types/routing.d.ts.map +1 -1
  147. package/dist/cjs/types/session.d.ts +24 -23
  148. package/dist/cjs/types/session.d.ts.map +1 -1
  149. package/dist/cjs/types/signals.d.ts +248 -0
  150. package/dist/cjs/types/signals.d.ts.map +1 -0
  151. package/dist/cjs/types/signals.js +11 -0
  152. package/dist/cjs/types/signals.js.map +1 -0
  153. package/dist/cjs/types/template.d.ts +2 -8
  154. package/dist/cjs/types/template.d.ts.map +1 -1
  155. package/dist/cjs/types/tool.d.ts +36 -29
  156. package/dist/cjs/types/tool.d.ts.map +1 -1
  157. package/dist/cjs/types/tool.js +1 -1
  158. package/dist/cjs/types/tool.js.map +1 -1
  159. package/dist/cjs/utils/condition.d.ts +7 -1
  160. package/dist/cjs/utils/condition.d.ts.map +1 -1
  161. package/dist/cjs/utils/condition.js.map +1 -1
  162. package/dist/cjs/utils/id.d.ts +13 -5
  163. package/dist/cjs/utils/id.d.ts.map +1 -1
  164. package/dist/cjs/utils/id.js +24 -10
  165. package/dist/cjs/utils/id.js.map +1 -1
  166. package/dist/cjs/utils/index.d.ts +2 -2
  167. package/dist/cjs/utils/index.d.ts.map +1 -1
  168. package/dist/cjs/utils/index.js +7 -3
  169. package/dist/cjs/utils/index.js.map +1 -1
  170. package/dist/cjs/utils/session.d.ts +44 -5
  171. package/dist/cjs/utils/session.d.ts.map +1 -1
  172. package/dist/cjs/utils/session.js +197 -38
  173. package/dist/cjs/utils/session.js.map +1 -1
  174. package/dist/constants/index.d.ts +0 -9
  175. package/dist/constants/index.d.ts.map +1 -1
  176. package/dist/constants/index.js +3 -9
  177. package/dist/constants/index.js.map +1 -1
  178. package/dist/core/Agent.d.ts +119 -153
  179. package/dist/core/Agent.d.ts.map +1 -1
  180. package/dist/core/Agent.js +472 -325
  181. package/dist/core/Agent.js.map +1 -1
  182. package/dist/core/AutoChainExecutor.d.ts +107 -0
  183. package/dist/core/AutoChainExecutor.d.ts.map +1 -0
  184. package/dist/core/AutoChainExecutor.js +293 -0
  185. package/dist/core/AutoChainExecutor.js.map +1 -0
  186. package/dist/core/BranchEvaluator.d.ts +54 -0
  187. package/dist/core/BranchEvaluator.d.ts.map +1 -0
  188. package/dist/core/BranchEvaluator.js +126 -0
  189. package/dist/core/BranchEvaluator.js.map +1 -0
  190. package/dist/core/DirectiveBus.d.ts +88 -0
  191. package/dist/core/DirectiveBus.d.ts.map +1 -0
  192. package/dist/core/DirectiveBus.js +192 -0
  193. package/dist/core/DirectiveBus.js.map +1 -0
  194. package/dist/core/DirectiveChainTracker.d.ts +49 -0
  195. package/dist/core/DirectiveChainTracker.d.ts.map +1 -0
  196. package/dist/core/DirectiveChainTracker.js +117 -0
  197. package/dist/core/DirectiveChainTracker.js.map +1 -0
  198. package/dist/core/Flow.d.ts +186 -0
  199. package/dist/core/Flow.d.ts.map +1 -0
  200. package/dist/core/Flow.js +546 -0
  201. package/dist/core/Flow.js.map +1 -0
  202. package/dist/core/FlowRouter.d.ts +182 -0
  203. package/dist/core/FlowRouter.d.ts.map +1 -0
  204. package/dist/core/{RoutingEngine.js → FlowRouter.js} +322 -305
  205. package/dist/core/FlowRouter.js.map +1 -0
  206. package/dist/core/PersistenceManager.d.ts +2 -2
  207. package/dist/core/PersistenceManager.d.ts.map +1 -1
  208. package/dist/core/PersistenceManager.js +7 -7
  209. package/dist/core/PersistenceManager.js.map +1 -1
  210. package/dist/core/PromptComposer.d.ts +21 -8
  211. package/dist/core/PromptComposer.d.ts.map +1 -1
  212. package/dist/core/PromptComposer.js +183 -106
  213. package/dist/core/PromptComposer.js.map +1 -1
  214. package/dist/core/PromptSectionCache.d.ts +1 -1
  215. package/dist/core/PromptSectionCache.js +1 -1
  216. package/dist/core/ResponseEngine.d.ts +18 -8
  217. package/dist/core/ResponseEngine.d.ts.map +1 -1
  218. package/dist/core/ResponseEngine.js +38 -36
  219. package/dist/core/ResponseEngine.js.map +1 -1
  220. package/dist/core/ResponseModal.d.ts +73 -56
  221. package/dist/core/ResponseModal.d.ts.map +1 -1
  222. package/dist/core/ResponseModal.js +1193 -1016
  223. package/dist/core/ResponseModal.js.map +1 -1
  224. package/dist/core/ResponsePipeline.d.ts +124 -26
  225. package/dist/core/ResponsePipeline.d.ts.map +1 -1
  226. package/dist/core/ResponsePipeline.js +509 -137
  227. package/dist/core/ResponsePipeline.js.map +1 -1
  228. package/dist/core/SignalEvaluator.d.ts +86 -0
  229. package/dist/core/SignalEvaluator.d.ts.map +1 -0
  230. package/dist/core/SignalEvaluator.js +326 -0
  231. package/dist/core/SignalEvaluator.js.map +1 -0
  232. package/dist/core/SignalProcessor.d.ts +152 -0
  233. package/dist/core/SignalProcessor.d.ts.map +1 -0
  234. package/dist/core/SignalProcessor.js +555 -0
  235. package/dist/core/SignalProcessor.js.map +1 -0
  236. package/dist/core/Step.d.ts +43 -32
  237. package/dist/core/Step.d.ts.map +1 -1
  238. package/dist/core/Step.js +220 -126
  239. package/dist/core/Step.js.map +1 -1
  240. package/dist/core/StreamingToolExecutor.d.ts +2 -2
  241. package/dist/core/StreamingToolExecutor.d.ts.map +1 -1
  242. package/dist/core/StreamingToolExecutor.js.map +1 -1
  243. package/dist/core/ToolManager.d.ts +44 -13
  244. package/dist/core/ToolManager.d.ts.map +1 -1
  245. package/dist/core/ToolManager.js +174 -91
  246. package/dist/core/ToolManager.js.map +1 -1
  247. package/dist/core/createAgent.d.ts +35 -0
  248. package/dist/core/createAgent.d.ts.map +1 -0
  249. package/dist/core/createAgent.js +36 -0
  250. package/dist/core/createAgent.js.map +1 -0
  251. package/dist/core/flow-namespace.d.ts +49 -0
  252. package/dist/core/flow-namespace.d.ts.map +1 -0
  253. package/dist/core/flow-namespace.js +168 -0
  254. package/dist/core/flow-namespace.js.map +1 -0
  255. package/dist/index.d.ts +11 -14
  256. package/dist/index.d.ts.map +1 -1
  257. package/dist/index.js +9 -12
  258. package/dist/index.js.map +1 -1
  259. package/dist/types/agent.d.ts +183 -54
  260. package/dist/types/agent.d.ts.map +1 -1
  261. package/dist/types/agent.js +0 -6
  262. package/dist/types/agent.js.map +1 -1
  263. package/dist/types/ai.d.ts +3 -3
  264. package/dist/types/ai.d.ts.map +1 -1
  265. package/dist/types/errors.d.ts +15 -0
  266. package/dist/types/errors.d.ts.map +1 -0
  267. package/dist/types/errors.js +18 -0
  268. package/dist/types/errors.js.map +1 -0
  269. package/dist/types/flow.d.ts +513 -0
  270. package/dist/types/flow.d.ts.map +1 -0
  271. package/dist/types/flow.js +5 -0
  272. package/dist/types/flow.js.map +1 -0
  273. package/dist/types/index.d.ts +7 -6
  274. package/dist/types/index.d.ts.map +1 -1
  275. package/dist/types/index.js +4 -1
  276. package/dist/types/index.js.map +1 -1
  277. package/dist/types/persistence.d.ts +11 -7
  278. package/dist/types/persistence.d.ts.map +1 -1
  279. package/dist/types/routing.d.ts +1 -1
  280. package/dist/types/routing.d.ts.map +1 -1
  281. package/dist/types/session.d.ts +24 -23
  282. package/dist/types/session.d.ts.map +1 -1
  283. package/dist/types/signals.d.ts +248 -0
  284. package/dist/types/signals.d.ts.map +1 -0
  285. package/dist/types/signals.js +10 -0
  286. package/dist/types/signals.js.map +1 -0
  287. package/dist/types/template.d.ts +2 -8
  288. package/dist/types/template.d.ts.map +1 -1
  289. package/dist/types/tool.d.ts +36 -29
  290. package/dist/types/tool.d.ts.map +1 -1
  291. package/dist/types/tool.js +1 -1
  292. package/dist/types/tool.js.map +1 -1
  293. package/dist/utils/condition.d.ts +7 -1
  294. package/dist/utils/condition.d.ts.map +1 -1
  295. package/dist/utils/condition.js.map +1 -1
  296. package/dist/utils/id.d.ts +13 -5
  297. package/dist/utils/id.d.ts.map +1 -1
  298. package/dist/utils/id.js +22 -9
  299. package/dist/utils/id.js.map +1 -1
  300. package/dist/utils/index.d.ts +2 -2
  301. package/dist/utils/index.d.ts.map +1 -1
  302. package/dist/utils/index.js +2 -2
  303. package/dist/utils/index.js.map +1 -1
  304. package/dist/utils/session.d.ts +44 -5
  305. package/dist/utils/session.d.ts.map +1 -1
  306. package/dist/utils/session.js +193 -37
  307. package/dist/utils/session.js.map +1 -1
  308. package/docs/README.md +15 -202
  309. package/docs/concepts/architecture.md +281 -0
  310. package/docs/concepts/directives.md +400 -0
  311. package/docs/concepts/pipeline.md +399 -0
  312. package/docs/guides/branching.md +263 -0
  313. package/docs/guides/compaction.md +163 -0
  314. package/docs/guides/conditions.md +167 -0
  315. package/docs/guides/error-handling.md +176 -0
  316. package/docs/guides/flow-control.md +409 -0
  317. package/docs/guides/instructions.md +210 -0
  318. package/docs/guides/persistence.md +182 -0
  319. package/docs/guides/streaming.md +137 -0
  320. package/docs/migration/README.md +15 -0
  321. package/docs/migration/route-to-flow.md +560 -0
  322. package/docs/migration/v1-to-v2.md +909 -0
  323. package/docs/reference/adapters.md +481 -0
  324. package/docs/reference/branches.md +241 -0
  325. package/docs/reference/create-agent.md +186 -0
  326. package/docs/reference/directive.md +243 -0
  327. package/docs/reference/errors.md +122 -0
  328. package/docs/reference/flow.md +238 -0
  329. package/docs/reference/instruction.md +177 -0
  330. package/docs/reference/pre-directive.md +131 -0
  331. package/docs/reference/providers.md +227 -0
  332. package/docs/reference/signals.md +356 -0
  333. package/docs/reference/step.md +339 -0
  334. package/docs/reference/tool.md +269 -0
  335. package/docs/start/01-install.md +81 -0
  336. package/docs/start/02-first-agent.md +196 -0
  337. package/docs/start/03-collect-data.md +222 -0
  338. package/docs/start/04-add-tools.md +276 -0
  339. package/docs/start/05-go-to-production.md +216 -0
  340. package/examples/01-quickstart.ts +20 -0
  341. package/examples/02-data-extraction.ts +90 -0
  342. package/examples/03-tools.ts +136 -0
  343. package/examples/04-instructions.ts +100 -0
  344. package/examples/05-branching.ts +140 -0
  345. package/examples/06-flow-control.ts +103 -0
  346. package/examples/07-streaming.ts +69 -0
  347. package/examples/08-persistence.ts +98 -0
  348. package/examples/09-signals.ts +144 -0
  349. package/examples/tsconfig.json +30 -0
  350. package/package.json +2 -1
  351. package/src/adapters/MemoryAdapter.ts +3 -3
  352. package/src/adapters/MongoAdapter.ts +3 -3
  353. package/src/adapters/OpenSearchAdapter.ts +10 -8
  354. package/src/adapters/PostgreSQLAdapter.ts +26 -10
  355. package/src/adapters/PrismaAdapter.ts +6 -6
  356. package/src/adapters/RedisAdapter.ts +3 -3
  357. package/src/adapters/SQLiteAdapter.ts +31 -12
  358. package/src/constants/index.ts +2 -10
  359. package/src/core/Agent.ts +585 -374
  360. package/src/core/AutoChainExecutor.ts +440 -0
  361. package/src/core/BranchEvaluator.ts +167 -0
  362. package/src/core/DirectiveBus.ts +248 -0
  363. package/src/core/DirectiveChainTracker.ts +144 -0
  364. package/src/core/Flow.ts +666 -0
  365. package/src/core/{RoutingEngine.ts → FlowRouter.ts} +385 -365
  366. package/src/core/PersistenceManager.ts +8 -8
  367. package/src/core/PromptComposer.ts +209 -140
  368. package/src/core/PromptSectionCache.ts +1 -1
  369. package/src/core/ResponseEngine.ts +61 -46
  370. package/src/core/ResponseModal.ts +1453 -1240
  371. package/src/core/ResponsePipeline.ts +655 -175
  372. package/src/core/SignalEvaluator.ts +420 -0
  373. package/src/core/SignalProcessor.ts +723 -0
  374. package/src/core/Step.ts +279 -176
  375. package/src/core/StreamingToolExecutor.ts +4 -4
  376. package/src/core/ToolManager.ts +200 -97
  377. package/src/core/createAgent.ts +40 -0
  378. package/src/core/flow-namespace.ts +219 -0
  379. package/src/index.ts +42 -36
  380. package/src/types/agent.ts +182 -53
  381. package/src/types/ai.ts +3 -3
  382. package/src/types/errors.ts +18 -0
  383. package/src/types/flow.ts +590 -0
  384. package/src/types/index.ts +43 -16
  385. package/src/types/persistence.ts +12 -8
  386. package/src/types/routing.ts +1 -1
  387. package/src/types/session.ts +26 -23
  388. package/src/types/signals.ts +321 -0
  389. package/src/types/template.ts +3 -11
  390. package/src/types/tool.ts +50 -42
  391. package/src/utils/condition.ts +13 -4
  392. package/src/utils/id.ts +27 -9
  393. package/src/utils/index.ts +6 -2
  394. package/src/utils/session.ts +238 -42
  395. package/dist/cjs/core/BatchExecutor.d.ts +0 -359
  396. package/dist/cjs/core/BatchExecutor.d.ts.map +0 -1
  397. package/dist/cjs/core/BatchExecutor.js +0 -861
  398. package/dist/cjs/core/BatchExecutor.js.map +0 -1
  399. package/dist/cjs/core/BatchPromptBuilder.d.ts +0 -89
  400. package/dist/cjs/core/BatchPromptBuilder.d.ts.map +0 -1
  401. package/dist/cjs/core/BatchPromptBuilder.js +0 -223
  402. package/dist/cjs/core/BatchPromptBuilder.js.map +0 -1
  403. package/dist/cjs/core/Route.d.ts +0 -180
  404. package/dist/cjs/core/Route.d.ts.map +0 -1
  405. package/dist/cjs/core/Route.js +0 -542
  406. package/dist/cjs/core/Route.js.map +0 -1
  407. package/dist/cjs/core/RoutingEngine.d.ts +0 -185
  408. package/dist/cjs/core/RoutingEngine.d.ts.map +0 -1
  409. package/dist/cjs/core/RoutingEngine.js.map +0 -1
  410. package/dist/cjs/types/route.d.ts +0 -336
  411. package/dist/cjs/types/route.d.ts.map +0 -1
  412. package/dist/cjs/types/route.js.map +0 -1
  413. package/dist/core/BatchExecutor.d.ts +0 -359
  414. package/dist/core/BatchExecutor.d.ts.map +0 -1
  415. package/dist/core/BatchExecutor.js +0 -856
  416. package/dist/core/BatchExecutor.js.map +0 -1
  417. package/dist/core/BatchPromptBuilder.d.ts +0 -89
  418. package/dist/core/BatchPromptBuilder.d.ts.map +0 -1
  419. package/dist/core/BatchPromptBuilder.js +0 -219
  420. package/dist/core/BatchPromptBuilder.js.map +0 -1
  421. package/dist/core/Route.d.ts +0 -180
  422. package/dist/core/Route.d.ts.map +0 -1
  423. package/dist/core/Route.js +0 -538
  424. package/dist/core/Route.js.map +0 -1
  425. package/dist/core/RoutingEngine.d.ts +0 -185
  426. package/dist/core/RoutingEngine.d.ts.map +0 -1
  427. package/dist/core/RoutingEngine.js.map +0 -1
  428. package/dist/types/route.d.ts +0 -336
  429. package/dist/types/route.d.ts.map +0 -1
  430. package/dist/types/route.js +0 -5
  431. package/dist/types/route.js.map +0 -1
  432. package/docs/CONTRIBUTING.md +0 -521
  433. package/docs/api/README.md +0 -3299
  434. package/docs/api/overview.md +0 -1410
  435. package/docs/architecture/data-extraction-flow.md +0 -360
  436. package/docs/architecture/multi-step-execution.md +0 -277
  437. package/docs/core/agent/README.md +0 -938
  438. package/docs/core/agent/context-management.md +0 -796
  439. package/docs/core/agent/rules-and-prohibitions.md +0 -113
  440. package/docs/core/agent/session-management.md +0 -693
  441. package/docs/core/ai-integration/prompt-composition.md +0 -355
  442. package/docs/core/ai-integration/providers.md +0 -515
  443. package/docs/core/ai-integration/response-processing.md +0 -433
  444. package/docs/core/conversation-flows/data-collection.md +0 -772
  445. package/docs/core/conversation-flows/route-dsl.md +0 -509
  446. package/docs/core/conversation-flows/routes.md +0 -249
  447. package/docs/core/conversation-flows/step-transitions.md +0 -731
  448. package/docs/core/conversation-flows/steps.md +0 -268
  449. package/docs/core/error-handling.md +0 -830
  450. package/docs/core/persistence/adapters.md +0 -255
  451. package/docs/core/persistence/session-storage.md +0 -656
  452. package/docs/core/routing/intelligent-routing.md +0 -470
  453. package/docs/core/tools/enhanced-tool.md +0 -186
  454. package/docs/core/tools/streaming-execution.md +0 -161
  455. package/docs/core/tools/tool-definition.md +0 -970
  456. package/docs/core/tools/tool-scoping.md +0 -819
  457. package/docs/guides/advanced-patterns/publishing.md +0 -186
  458. package/docs/guides/context-compaction.md +0 -96
  459. package/docs/guides/error-handling-patterns.md +0 -578
  460. package/docs/guides/getting-started/README.md +0 -795
  461. package/docs/guides/migration/README.md +0 -101
  462. package/docs/guides/migration/flexible-routing-conditions.md +0 -375
  463. package/docs/guides/migration/multi-step-execution.md +0 -393
  464. package/docs/guides/migration/response-modal-refactor.md +0 -518
  465. package/docs/guides/prompt-optimization.md +0 -164
  466. package/examples/advanced-patterns/context-compaction.ts +0 -223
  467. package/examples/advanced-patterns/knowledge-based-agent.ts +0 -735
  468. package/examples/advanced-patterns/persistent-onboarding.ts +0 -728
  469. package/examples/advanced-patterns/route-lifecycle-hooks.ts +0 -556
  470. package/examples/advanced-patterns/streaming-responses.ts +0 -656
  471. package/examples/ai-providers/anthropic-integration.ts +0 -388
  472. package/examples/ai-providers/openai-integration.ts +0 -228
  473. package/examples/condition-patterns/function-only-conditions.ts +0 -365
  474. package/examples/condition-patterns/mixed-array-conditions.ts +0 -477
  475. package/examples/condition-patterns/route-skipif-patterns.ts +0 -468
  476. package/examples/condition-patterns/step-skipif-patterns.ts +0 -0
  477. package/examples/condition-patterns/string-only-conditions.ts +0 -296
  478. package/examples/conversation-flows/completion-transitions.ts +0 -318
  479. package/examples/core-concepts/basic-agent.ts +0 -503
  480. package/examples/core-concepts/modern-streaming-api.ts +0 -309
  481. package/examples/core-concepts/schema-driven-extraction.ts +0 -332
  482. package/examples/core-concepts/session-management.ts +0 -494
  483. package/examples/integrations/database-integration.ts +0 -631
  484. package/examples/integrations/healthcare-integration.ts +0 -595
  485. package/examples/integrations/search-integration.ts +0 -530
  486. package/examples/integrations/server-session-management.ts +0 -307
  487. package/examples/persistence/custom-adapter.ts +0 -526
  488. package/examples/persistence/database-persistence.ts +0 -583
  489. package/examples/persistence/memory-sessions.ts +0 -495
  490. package/examples/persistence/prisma-schema.example.prisma +0 -74
  491. package/examples/persistence/redis-persistence.ts +0 -488
  492. package/examples/tools/basic-tools.ts +0 -765
  493. package/examples/tools/data-enrichment-tools.ts +0 -593
  494. package/examples/tools/enhanced-tool-metadata.ts +0 -268
  495. package/examples/tools/streaming-tool-execution.ts +0 -283
  496. package/src/core/BatchExecutor.ts +0 -1187
  497. package/src/core/BatchPromptBuilder.ts +0 -299
  498. package/src/core/Route.ts +0 -678
  499. package/src/types/route.ts +0 -392
@@ -1,526 +0,0 @@
1
- /**
2
- * Custom Persistence Adapter Example
3
- *
4
- * This example demonstrates how to create a custom persistence adapter
5
- * that implements the PersistenceAdapter interface. It shows a simple
6
- * in-memory implementation that can be extended to use any database.
7
- *
8
- * Key concepts:
9
- * - Implementing PersistenceAdapter interface
10
- * - SessionRepository and MessageRepository interfaces
11
- * - Custom storage backends (database, file system, etc.)
12
- * - Error handling and data validation
13
- * - Async operations and resource management
14
- */
15
-
16
- import type {
17
- PersistenceAdapter,
18
- SessionRepository,
19
- MessageRepository,
20
- SessionData,
21
- MessageData,
22
- SessionStatus,
23
- CollectedStateData,
24
- } from "../../src/types";
25
- import { Agent, GeminiProvider, createSessionId } from "../../src";
26
-
27
- /**
28
- * Simple in-memory storage for demonstration
29
- * In a real implementation, this would be replaced with database calls
30
- */
31
- class InMemoryStorage {
32
- private sessions = new Map<string, SessionData>();
33
- private messages = new Map<string, MessageData>();
34
- private sessionMessages = new Map<string, string[]>(); // sessionId -> messageIds
35
-
36
- // Session operations
37
- createSession(
38
- data: Omit<SessionData, "createdAt" | "updatedAt"> & {
39
- id?: string;
40
- }
41
- ): SessionData {
42
- const id =
43
- data.id || createSessionId();
44
- const session: SessionData = {
45
- ...data,
46
- id,
47
- createdAt: new Date(),
48
- updatedAt: new Date(),
49
- };
50
- this.sessions.set(id, session);
51
- return session;
52
- }
53
-
54
- getSession(id: string): SessionData | null {
55
- return this.sessions.get(id) || null;
56
- }
57
-
58
- getSessionsByUserId(userId: string): SessionData[] {
59
- return Array.from(this.sessions.values()).filter(
60
- (s) => s.userId === userId
61
- );
62
- }
63
-
64
- updateSession(id: string, updates: Partial<SessionData>): SessionData | null {
65
- const existing = this.sessions.get(id);
66
- if (!existing) return null;
67
-
68
- const updated = {
69
- ...existing,
70
- ...updates,
71
- updatedAt: new Date(),
72
- };
73
- this.sessions.set(id, updated);
74
- return updated;
75
- }
76
-
77
- updateSessionStatus(
78
- id: string,
79
- status: SessionStatus,
80
- completedAt?: Date
81
- ): SessionData | null {
82
- const existing = this.sessions.get(id);
83
- if (!existing) return null;
84
-
85
- const updated = {
86
- ...existing,
87
- status,
88
- completedAt:
89
- status === "completed"
90
- ? completedAt || new Date()
91
- : existing.completedAt,
92
- updatedAt: new Date(),
93
- };
94
- this.sessions.set(id, updated);
95
- return updated;
96
- }
97
-
98
- updateCollectedData(
99
- id: string,
100
- collectedData: CollectedStateData<Record<string, unknown>>
101
- ): SessionData<Record<string, unknown>> | null {
102
- const existing = this.sessions.get(id);
103
- if (!existing) return null;
104
-
105
- const updated: SessionData<Record<string, unknown>> = {
106
- ...existing,
107
- collectedData: {
108
- ...(existing.collectedData || {}),
109
- ...collectedData,
110
- },
111
- updatedAt: new Date(),
112
- };
113
- this.sessions.set(id, updated);
114
- return updated;
115
- }
116
-
117
- updateRouteStep(
118
- id: string,
119
- route?: string,
120
- step?: string
121
- ): SessionData | null {
122
- const existing = this.sessions.get(id);
123
- if (!existing) return null;
124
-
125
- const updated = {
126
- ...existing,
127
- currentRoute: route,
128
- currentStep: step,
129
- updatedAt: new Date(),
130
- };
131
- this.sessions.set(id, updated);
132
- return updated;
133
- }
134
-
135
- incrementMessageCount(id: string): SessionData | null {
136
- const existing = this.sessions.get(id);
137
- if (!existing) return null;
138
-
139
- const updated = {
140
- ...existing,
141
- messageCount: (existing.messageCount || 0) + 1,
142
- lastMessageAt: new Date(),
143
- updatedAt: new Date(),
144
- };
145
- this.sessions.set(id, updated);
146
- return updated;
147
- }
148
-
149
- deleteSession(id: string): boolean {
150
- return this.sessions.delete(id);
151
- }
152
-
153
- // Message operations
154
- createMessage(data: Omit<MessageData, "id" | "createdAt">): MessageData {
155
- const id = `msg_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
156
- const message: MessageData = {
157
- ...data,
158
- id,
159
- createdAt: new Date(),
160
- };
161
- this.messages.set(id, message);
162
-
163
- // Track messages by session
164
- const sessionMessages = this.sessionMessages.get(data.sessionId) || [];
165
- sessionMessages.push(id);
166
- this.sessionMessages.set(data.sessionId, sessionMessages);
167
-
168
- return message;
169
- }
170
-
171
- getMessage(id: string): MessageData | null {
172
- return this.messages.get(id) || null;
173
- }
174
-
175
- getMessagesBySessionId(sessionId: string): MessageData[] {
176
- const messageIds = this.sessionMessages.get(sessionId) || [];
177
- return messageIds
178
- .map((id) => this.messages.get(id))
179
- .filter((msg): msg is MessageData => msg !== undefined)
180
- .sort((a, b) => a.createdAt.getTime() - b.createdAt.getTime());
181
- }
182
-
183
- getMessagesByUserId(userId: string): MessageData[] {
184
- return Array.from(this.messages.values())
185
- .filter((msg) => msg.userId === userId)
186
- .sort((a, b) => a.createdAt.getTime() - b.createdAt.getTime());
187
- }
188
-
189
- deleteMessage(id: string): boolean {
190
- const message = this.messages.get(id);
191
- if (!message) return false;
192
-
193
- this.messages.delete(id);
194
-
195
- // Remove from session tracking
196
- const sessionMessages = this.sessionMessages.get(message.sessionId) || [];
197
- const filtered = sessionMessages.filter((msgId) => msgId !== id);
198
- if (filtered.length === 0) {
199
- this.sessionMessages.delete(message.sessionId);
200
- } else {
201
- this.sessionMessages.set(message.sessionId, filtered);
202
- }
203
-
204
- return true;
205
- }
206
-
207
- deleteMessagesBySessionId(sessionId: string): number {
208
- const messageIds = this.sessionMessages.get(sessionId) || [];
209
- let deletedCount = 0;
210
-
211
- for (const messageId of messageIds) {
212
- if (this.messages.delete(messageId)) {
213
- deletedCount++;
214
- }
215
- }
216
-
217
- this.sessionMessages.delete(sessionId);
218
- return deletedCount;
219
- }
220
-
221
- deleteMessagesByUserId(userId: string): number {
222
- const messagesToDelete = Array.from(this.messages.values()).filter(
223
- (msg) => msg.userId === userId
224
- );
225
-
226
- let deletedCount = 0;
227
- for (const message of messagesToDelete) {
228
- if (this.messages.delete(message.id)) {
229
- // Remove from session tracking
230
- const sessionMessages =
231
- this.sessionMessages.get(message.sessionId) || [];
232
- const filtered = sessionMessages.filter(
233
- (msgId) => msgId !== message.id
234
- );
235
- if (filtered.length === 0) {
236
- this.sessionMessages.delete(message.sessionId);
237
- } else {
238
- this.sessionMessages.set(message.sessionId, filtered);
239
- }
240
- deletedCount++;
241
- }
242
- }
243
-
244
- return deletedCount;
245
- }
246
- }
247
-
248
- /**
249
- * Custom Session Repository implementation
250
- */
251
- class CustomSessionRepository<TData = Record<string, unknown>>
252
- implements SessionRepository<TData> {
253
- constructor(private storage: InMemoryStorage) { }
254
-
255
- async create(
256
- data: Omit<SessionData<TData>, "createdAt" | "updatedAt"> & {
257
- id?: string;
258
- }
259
- ): Promise<SessionData<TData>> {
260
- return Promise.resolve(
261
- this.storage.createSession({
262
- ...data,
263
- id:
264
- data.id ||
265
- createSessionId(),
266
- }) as SessionData<TData>
267
- );
268
- }
269
-
270
- async findById(id: string): Promise<SessionData<TData> | null> {
271
- return Promise.resolve(
272
- this.storage.getSession(id) as SessionData<TData> | null
273
- );
274
- }
275
-
276
- async findActiveByUserId(userId: string): Promise<SessionData<TData> | null> {
277
- const sessions = this.storage.getSessionsByUserId(userId);
278
- return Promise.resolve(
279
- (sessions.find((s) => s.status === "active") as SessionData<TData>) ||
280
- null
281
- );
282
- }
283
-
284
- async findByUserId(
285
- userId: string,
286
- limit = 50
287
- ): Promise<SessionData<TData>[]> {
288
- const sessions = this.storage.getSessionsByUserId(userId);
289
- return Promise.resolve(
290
- sessions
291
- .sort((a, b) => b.updatedAt.getTime() - a.updatedAt.getTime())
292
- .slice(0, limit) as SessionData<TData>[]
293
- );
294
- }
295
-
296
- async update(
297
- id: string,
298
- data: Partial<Omit<SessionData<TData>, "id" | "createdAt">>
299
- ): Promise<SessionData<TData> | null> {
300
- return Promise.resolve(
301
- this.storage.updateSession(id, data) as SessionData<TData> | null
302
- );
303
- }
304
-
305
- async updateStatus(
306
- id: string,
307
- status: SessionStatus,
308
- completedAt?: Date
309
- ): Promise<SessionData<TData> | null> {
310
- return Promise.resolve(
311
- this.storage.updateSessionStatus(
312
- id,
313
- status,
314
- completedAt
315
- ) as SessionData<TData> | null
316
- );
317
- }
318
-
319
- async updateCollectedData(
320
- id: string,
321
- collectedData: CollectedStateData<TData>
322
- ): Promise<SessionData<TData> | null> {
323
- return Promise.resolve(
324
- this.storage.updateCollectedData(
325
- id,
326
- collectedData
327
- ) as SessionData<TData> | null
328
- );
329
- }
330
-
331
- async updateRouteStep(
332
- id: string,
333
- route?: string,
334
- step?: string
335
- ): Promise<SessionData<TData> | null> {
336
- return Promise.resolve(
337
- this.storage.updateRouteStep(id, route, step) as SessionData<TData> | null
338
- );
339
- }
340
-
341
- async incrementMessageCount(id: string): Promise<SessionData<TData> | null> {
342
- return Promise.resolve(
343
- this.storage.incrementMessageCount(id) as SessionData<TData> | null
344
- );
345
- }
346
-
347
- async delete(id: string): Promise<boolean> {
348
- return Promise.resolve(this.storage.deleteSession(id));
349
- }
350
- }
351
-
352
- /**
353
- * Custom Message Repository implementation
354
- */
355
- class CustomMessageRepository implements MessageRepository {
356
- constructor(private storage: InMemoryStorage) { }
357
-
358
- async create(
359
- data: Omit<MessageData, "id" | "createdAt">
360
- ): Promise<MessageData> {
361
- return Promise.resolve(this.storage.createMessage(data));
362
- }
363
-
364
- async findById(id: string): Promise<MessageData | null> {
365
- return Promise.resolve(this.storage.getMessage(id));
366
- }
367
-
368
- async findBySessionId(
369
- sessionId: string,
370
- limit = 100
371
- ): Promise<MessageData[]> {
372
- const messages = this.storage.getMessagesBySessionId(sessionId);
373
- return Promise.resolve(messages.slice(-limit)); // Get most recent messages
374
- }
375
-
376
- async findByUserId(userId: string, limit = 100): Promise<MessageData[]> {
377
- const messages = this.storage.getMessagesByUserId(userId);
378
- return Promise.resolve(messages.slice(-limit)); // Get most recent messages
379
- }
380
-
381
- async delete(id: string): Promise<boolean> {
382
- return Promise.resolve(this.storage.deleteMessage(id));
383
- }
384
-
385
- async deleteBySessionId(sessionId: string): Promise<number> {
386
- return Promise.resolve(this.storage.deleteMessagesBySessionId(sessionId));
387
- }
388
-
389
- async deleteByUserId(userId: string): Promise<number> {
390
- return Promise.resolve(this.storage.deleteMessagesByUserId(userId));
391
- }
392
- }
393
-
394
- /**
395
- * Custom Persistence Adapter
396
- *
397
- * This adapter demonstrates how to implement a custom persistence layer.
398
- * Replace the InMemoryStorage with actual database calls for production use.
399
- */
400
- export class CustomAdapter<TData = Record<string, unknown>> implements PersistenceAdapter<TData> {
401
- private storage = new InMemoryStorage();
402
-
403
- readonly sessionRepository: SessionRepository<TData>;
404
- readonly messageRepository: MessageRepository;
405
-
406
- constructor() {
407
- this.sessionRepository = new CustomSessionRepository<TData>(this.storage);
408
- this.messageRepository = new CustomMessageRepository(this.storage);
409
- }
410
-
411
- /**
412
- * Initialize the adapter (create tables, indexes, etc.)
413
- */
414
- async initialize(): Promise<void> {
415
- console.log("šŸ”§ Initializing CustomAdapter...");
416
- // In a real implementation, you might:
417
- // - Create database tables
418
- // - Set up indexes
419
- // - Run migrations
420
- // - Establish database connections
421
-
422
- // For this demo, we just log
423
- console.log("āœ… CustomAdapter initialized");
424
- return Promise.resolve();
425
- }
426
-
427
- /**
428
- * Disconnect/cleanup resources
429
- */
430
- async disconnect(): Promise<void> {
431
- console.log("šŸ”Œ Disconnecting CustomAdapter...");
432
- // In a real implementation, you might:
433
- // - Close database connections
434
- // - Clean up resources
435
- // - Flush pending writes
436
-
437
- console.log("āœ… CustomAdapter disconnected");
438
- return Promise.resolve();
439
- }
440
- }
441
-
442
- // ==============================================================================
443
- // USAGE EXAMPLE
444
- // ==============================================================================
445
-
446
- /**
447
- * Example: Using Custom Adapter with Agent
448
- */
449
- async function demonstrateCustomAdapter() {
450
- console.log("šŸ—„ļø Custom Persistence Adapter Demo");
451
- console.log("=".repeat(50));
452
-
453
- // Create custom adapter
454
- const adapter = new CustomAdapter();
455
-
456
- // Initialize adapter
457
- await adapter.initialize();
458
-
459
- // Create agent with custom persistence
460
- const agent = new Agent({
461
- name: "CustomPersistenceAgent",
462
- description: "Agent with custom persistence adapter",
463
- provider: new GeminiProvider({
464
- apiKey: process.env.GEMINI_API_KEY || "demo-key",
465
- model: "models/gemini-2.5-flash",
466
- }),
467
- persistence: {
468
- adapter,
469
- // Optional: configure auto-save behavior
470
- autoSave: true, // Auto-saves session step after each response
471
- },
472
- });
473
-
474
- // Session is automatically managed by the agent
475
- console.log("✨ Session ready:", agent.session.id);
476
-
477
- // First interaction
478
- console.log("\nšŸ’¬ First interaction:");
479
-
480
- await agent.session.addMessage("user", "Hi, I need help booking a flight", "Alice");
481
-
482
- const response1 = await agent.respond({
483
- history: agent.session.getHistory(),
484
- });
485
-
486
- console.log(`Agent: ${response1.message}`);
487
- console.log(`Session ID: ${agent.session.id}`);
488
-
489
- await agent.session.addMessage("assistant", response1.message);
490
-
491
- // Second interaction
492
- console.log("\nšŸ’¬ Second interaction:");
493
-
494
- await agent.session.addMessage("user", "I want to fly to Paris next week", "Alice");
495
-
496
- const response2 = await agent.respond({
497
- history: agent.session.getHistory(),
498
- });
499
-
500
- console.log(`Agent: ${response2.message}`);
501
-
502
- // Check persistence
503
- console.log("\nšŸ’¾ Checking persistence:");
504
- if (response2.session?.id) {
505
- const savedSession = await adapter.sessionRepository.findById(
506
- response2.session.id
507
- );
508
- const messages = await adapter.messageRepository.findBySessionId(
509
- response2.session.id
510
- );
511
-
512
- console.log(`Saved session: ${savedSession?.id}`);
513
- console.log(`Messages in session: ${messages.length}`);
514
- console.log(`Session status: ${savedSession?.status}`);
515
- }
516
-
517
- // Clean up
518
- await adapter.disconnect();
519
-
520
- console.log("\nāœ… Demo complete!");
521
- }
522
-
523
- // Run the demo
524
- if (import.meta.url === `file://${process.argv[1]}`) {
525
- demonstrateCustomAdapter().catch(console.error);
526
- }