@falai/agent 2.6.1 → 3.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 (611) hide show
  1. package/README.md +2 -2
  2. package/dist/adapters/MemoryAdapter.d.ts +1 -1
  3. package/dist/adapters/MemoryAdapter.d.ts.map +1 -1
  4. package/dist/adapters/MemoryAdapter.js +32 -36
  5. package/dist/adapters/MemoryAdapter.js.map +1 -1
  6. package/dist/adapters/MongoAdapter.d.ts +1 -1
  7. package/dist/adapters/MongoAdapter.d.ts.map +1 -1
  8. package/dist/adapters/MongoAdapter.js +2 -2
  9. package/dist/adapters/MongoAdapter.js.map +1 -1
  10. package/dist/adapters/OpenSearchAdapter.d.ts +1 -1
  11. package/dist/adapters/OpenSearchAdapter.d.ts.map +1 -1
  12. package/dist/adapters/OpenSearchAdapter.js +3 -3
  13. package/dist/adapters/OpenSearchAdapter.js.map +1 -1
  14. package/dist/adapters/PostgreSQLAdapter.d.ts +1 -1
  15. package/dist/adapters/PostgreSQLAdapter.d.ts.map +1 -1
  16. package/dist/adapters/PostgreSQLAdapter.js +18 -13
  17. package/dist/adapters/PostgreSQLAdapter.js.map +1 -1
  18. package/dist/adapters/PrismaAdapter.d.ts +1 -1
  19. package/dist/adapters/PrismaAdapter.d.ts.map +1 -1
  20. package/dist/adapters/PrismaAdapter.js +3 -3
  21. package/dist/adapters/PrismaAdapter.js.map +1 -1
  22. package/dist/adapters/RedisAdapter.d.ts +2 -1
  23. package/dist/adapters/RedisAdapter.d.ts.map +1 -1
  24. package/dist/adapters/RedisAdapter.js +77 -27
  25. package/dist/adapters/RedisAdapter.js.map +1 -1
  26. package/dist/adapters/SQLiteAdapter.d.ts +1 -1
  27. package/dist/adapters/SQLiteAdapter.d.ts.map +1 -1
  28. package/dist/adapters/SQLiteAdapter.js +9 -31
  29. package/dist/adapters/SQLiteAdapter.js.map +1 -1
  30. package/dist/adapters/index.d.ts +13 -13
  31. package/dist/adapters/index.d.ts.map +1 -1
  32. package/dist/adapters/index.js +7 -7
  33. package/dist/adapters/index.js.map +1 -1
  34. package/dist/adapters/sessionRow.d.ts +22 -0
  35. package/dist/adapters/sessionRow.d.ts.map +1 -0
  36. package/dist/adapters/sessionRow.js +48 -0
  37. package/dist/adapters/sessionRow.js.map +1 -0
  38. package/dist/cjs/adapters/MemoryAdapter.d.ts +1 -1
  39. package/dist/cjs/adapters/MemoryAdapter.d.ts.map +1 -1
  40. package/dist/cjs/adapters/MemoryAdapter.js +39 -43
  41. package/dist/cjs/adapters/MemoryAdapter.js.map +1 -1
  42. package/dist/cjs/adapters/MongoAdapter.d.ts +1 -1
  43. package/dist/cjs/adapters/MongoAdapter.d.ts.map +1 -1
  44. package/dist/cjs/adapters/MongoAdapter.js +4 -4
  45. package/dist/cjs/adapters/MongoAdapter.js.map +1 -1
  46. package/dist/cjs/adapters/OpenSearchAdapter.d.ts +1 -1
  47. package/dist/cjs/adapters/OpenSearchAdapter.d.ts.map +1 -1
  48. package/dist/cjs/adapters/OpenSearchAdapter.js +6 -6
  49. package/dist/cjs/adapters/OpenSearchAdapter.js.map +1 -1
  50. package/dist/cjs/adapters/PostgreSQLAdapter.d.ts +1 -1
  51. package/dist/cjs/adapters/PostgreSQLAdapter.d.ts.map +1 -1
  52. package/dist/cjs/adapters/PostgreSQLAdapter.js +20 -15
  53. package/dist/cjs/adapters/PostgreSQLAdapter.js.map +1 -1
  54. package/dist/cjs/adapters/PrismaAdapter.d.ts +1 -1
  55. package/dist/cjs/adapters/PrismaAdapter.d.ts.map +1 -1
  56. package/dist/cjs/adapters/PrismaAdapter.js +7 -7
  57. package/dist/cjs/adapters/PrismaAdapter.js.map +1 -1
  58. package/dist/cjs/adapters/RedisAdapter.d.ts +2 -1
  59. package/dist/cjs/adapters/RedisAdapter.d.ts.map +1 -1
  60. package/dist/cjs/adapters/RedisAdapter.js +81 -31
  61. package/dist/cjs/adapters/RedisAdapter.js.map +1 -1
  62. package/dist/cjs/adapters/SQLiteAdapter.d.ts +1 -1
  63. package/dist/cjs/adapters/SQLiteAdapter.d.ts.map +1 -1
  64. package/dist/cjs/adapters/SQLiteAdapter.js +11 -33
  65. package/dist/cjs/adapters/SQLiteAdapter.js.map +1 -1
  66. package/dist/cjs/adapters/index.d.ts +13 -13
  67. package/dist/cjs/adapters/index.d.ts.map +1 -1
  68. package/dist/cjs/adapters/index.js +14 -14
  69. package/dist/cjs/adapters/index.js.map +1 -1
  70. package/dist/cjs/adapters/sessionRow.d.ts +22 -0
  71. package/dist/cjs/adapters/sessionRow.d.ts.map +1 -0
  72. package/dist/cjs/adapters/sessionRow.js +52 -0
  73. package/dist/cjs/adapters/sessionRow.js.map +1 -0
  74. package/dist/cjs/core/Agent.d.ts +19 -11
  75. package/dist/cjs/core/Agent.d.ts.map +1 -1
  76. package/dist/cjs/core/Agent.js +102 -64
  77. package/dist/cjs/core/Agent.js.map +1 -1
  78. package/dist/cjs/core/AutoChainExecutor.d.ts +12 -22
  79. package/dist/cjs/core/AutoChainExecutor.d.ts.map +1 -1
  80. package/dist/cjs/core/AutoChainExecutor.js +46 -49
  81. package/dist/cjs/core/AutoChainExecutor.js.map +1 -1
  82. package/dist/cjs/core/BranchEvaluator.d.ts +4 -4
  83. package/dist/cjs/core/BranchEvaluator.d.ts.map +1 -1
  84. package/dist/cjs/core/BranchEvaluator.js +6 -6
  85. package/dist/cjs/core/BranchEvaluator.js.map +1 -1
  86. package/dist/cjs/core/CompactionEngine.d.ts +16 -3
  87. package/dist/cjs/core/CompactionEngine.d.ts.map +1 -1
  88. package/dist/cjs/core/CompactionEngine.js +30 -6
  89. package/dist/cjs/core/CompactionEngine.js.map +1 -1
  90. package/dist/cjs/core/DirectiveChainTracker.d.ts +1 -1
  91. package/dist/cjs/core/DirectiveChainTracker.d.ts.map +1 -1
  92. package/dist/cjs/core/DirectiveChainTracker.js +5 -5
  93. package/dist/cjs/core/DirectiveChainTracker.js.map +1 -1
  94. package/dist/cjs/core/Events.d.ts +1 -1
  95. package/dist/cjs/core/Events.d.ts.map +1 -1
  96. package/dist/cjs/core/Events.js +15 -15
  97. package/dist/cjs/core/Events.js.map +1 -1
  98. package/dist/cjs/core/Flow.d.ts +4 -4
  99. package/dist/cjs/core/Flow.d.ts.map +1 -1
  100. package/dist/cjs/core/Flow.js +15 -15
  101. package/dist/cjs/core/Flow.js.map +1 -1
  102. package/dist/cjs/core/FlowRouter.d.ts +4 -4
  103. package/dist/cjs/core/FlowRouter.d.ts.map +1 -1
  104. package/dist/cjs/core/FlowRouter.js +92 -70
  105. package/dist/cjs/core/FlowRouter.js.map +1 -1
  106. package/dist/cjs/core/PersistenceManager.d.ts +1 -1
  107. package/dist/cjs/core/PersistenceManager.d.ts.map +1 -1
  108. package/dist/cjs/core/PersistenceManager.js +10 -10
  109. package/dist/cjs/core/PersistenceManager.js.map +1 -1
  110. package/dist/cjs/core/PromptComposer.d.ts +4 -4
  111. package/dist/cjs/core/PromptComposer.d.ts.map +1 -1
  112. package/dist/cjs/core/PromptComposer.js +13 -13
  113. package/dist/cjs/core/PromptComposer.js.map +1 -1
  114. package/dist/cjs/core/PromptSectionCache.d.ts +2 -2
  115. package/dist/cjs/core/PromptSectionCache.d.ts.map +1 -1
  116. package/dist/cjs/core/ResponseEngine.d.ts +4 -4
  117. package/dist/cjs/core/ResponseEngine.d.ts.map +1 -1
  118. package/dist/cjs/core/ResponseEngine.js +7 -7
  119. package/dist/cjs/core/ResponseEngine.js.map +1 -1
  120. package/dist/cjs/core/ResponseGenerationError.d.ts.map +1 -1
  121. package/dist/cjs/core/ResponseGenerationError.js +3 -5
  122. package/dist/cjs/core/ResponseGenerationError.js.map +1 -1
  123. package/dist/cjs/core/ResponseModal.d.ts +39 -10
  124. package/dist/cjs/core/ResponseModal.d.ts.map +1 -1
  125. package/dist/cjs/core/ResponseModal.js +195 -72
  126. package/dist/cjs/core/ResponseModal.js.map +1 -1
  127. package/dist/cjs/core/ResponsePipeline.d.ts +50 -12
  128. package/dist/cjs/core/ResponsePipeline.d.ts.map +1 -1
  129. package/dist/cjs/core/ResponsePipeline.js +301 -158
  130. package/dist/cjs/core/ResponsePipeline.js.map +1 -1
  131. package/dist/cjs/core/SessionFinalizer.d.ts +4 -4
  132. package/dist/cjs/core/SessionFinalizer.d.ts.map +1 -1
  133. package/dist/cjs/core/SessionFinalizer.js +36 -9
  134. package/dist/cjs/core/SessionFinalizer.js.map +1 -1
  135. package/dist/cjs/core/SessionManager.d.ts +15 -6
  136. package/dist/cjs/core/SessionManager.d.ts.map +1 -1
  137. package/dist/cjs/core/SessionManager.js +49 -22
  138. package/dist/cjs/core/SessionManager.js.map +1 -1
  139. package/dist/cjs/core/SignalCoordinator.d.ts +5 -5
  140. package/dist/cjs/core/SignalCoordinator.d.ts.map +1 -1
  141. package/dist/cjs/core/SignalCoordinator.js +12 -12
  142. package/dist/cjs/core/SignalCoordinator.js.map +1 -1
  143. package/dist/cjs/core/SignalEvaluator.d.ts +4 -4
  144. package/dist/cjs/core/SignalEvaluator.d.ts.map +1 -1
  145. package/dist/cjs/core/SignalEvaluator.js +6 -6
  146. package/dist/cjs/core/SignalEvaluator.js.map +1 -1
  147. package/dist/cjs/core/SignalProcessor.d.ts +6 -6
  148. package/dist/cjs/core/SignalProcessor.d.ts.map +1 -1
  149. package/dist/cjs/core/SignalProcessor.js +17 -89
  150. package/dist/cjs/core/SignalProcessor.js.map +1 -1
  151. package/dist/cjs/core/Step.d.ts +5 -5
  152. package/dist/cjs/core/Step.d.ts.map +1 -1
  153. package/dist/cjs/core/Step.js +65 -17
  154. package/dist/cjs/core/Step.js.map +1 -1
  155. package/dist/cjs/core/StepLifecycle.d.ts +18 -8
  156. package/dist/cjs/core/StepLifecycle.d.ts.map +1 -1
  157. package/dist/cjs/core/StepLifecycle.js +103 -20
  158. package/dist/cjs/core/StepLifecycle.js.map +1 -1
  159. package/dist/cjs/core/StreamingToolExecutor.d.ts +1 -1
  160. package/dist/cjs/core/StreamingToolExecutor.d.ts.map +1 -1
  161. package/dist/cjs/core/StreamingToolExecutor.js +30 -6
  162. package/dist/cjs/core/StreamingToolExecutor.js.map +1 -1
  163. package/dist/cjs/core/ToolLoopExecutor.d.ts +8 -4
  164. package/dist/cjs/core/ToolLoopExecutor.d.ts.map +1 -1
  165. package/dist/cjs/core/ToolLoopExecutor.js +189 -97
  166. package/dist/cjs/core/ToolLoopExecutor.js.map +1 -1
  167. package/dist/cjs/core/ToolManager.d.ts +6 -6
  168. package/dist/cjs/core/ToolManager.d.ts.map +1 -1
  169. package/dist/cjs/core/ToolManager.js +102 -79
  170. package/dist/cjs/core/ToolManager.js.map +1 -1
  171. package/dist/cjs/core/createAgent.d.ts +2 -2
  172. package/dist/cjs/core/createAgent.d.ts.map +1 -1
  173. package/dist/cjs/core/createAgent.js +2 -2
  174. package/dist/cjs/core/createAgent.js.map +1 -1
  175. package/dist/cjs/core/flow-namespace.d.ts +16 -1
  176. package/dist/cjs/core/flow-namespace.d.ts.map +1 -1
  177. package/dist/cjs/core/flow-namespace.js +26 -4
  178. package/dist/cjs/core/flow-namespace.js.map +1 -1
  179. package/dist/cjs/core/toolGates.d.ts +1 -1
  180. package/dist/cjs/core/toolGates.d.ts.map +1 -1
  181. package/dist/cjs/core/toolGates.js +3 -3
  182. package/dist/cjs/core/toolGates.js.map +1 -1
  183. package/dist/cjs/index.d.ts +50 -45
  184. package/dist/cjs/index.d.ts.map +1 -1
  185. package/dist/cjs/index.js +96 -88
  186. package/dist/cjs/index.js.map +1 -1
  187. package/dist/cjs/providers/AnthropicProvider.d.ts +25 -35
  188. package/dist/cjs/providers/AnthropicProvider.d.ts.map +1 -1
  189. package/dist/cjs/providers/AnthropicProvider.js +30 -426
  190. package/dist/cjs/providers/AnthropicProvider.js.map +1 -1
  191. package/dist/cjs/providers/DeepSeekProvider.d.ts +13 -34
  192. package/dist/cjs/providers/DeepSeekProvider.d.ts.map +1 -1
  193. package/dist/cjs/providers/DeepSeekProvider.js +17 -51
  194. package/dist/cjs/providers/DeepSeekProvider.js.map +1 -1
  195. package/dist/cjs/providers/GeminiProvider.d.ts +22 -75
  196. package/dist/cjs/providers/GeminiProvider.d.ts.map +1 -1
  197. package/dist/cjs/providers/GeminiProvider.js +32 -558
  198. package/dist/cjs/providers/GeminiProvider.js.map +1 -1
  199. package/dist/cjs/providers/GenericOpenAICompatibleProvider.d.ts +9 -10
  200. package/dist/cjs/providers/GenericOpenAICompatibleProvider.d.ts.map +1 -1
  201. package/dist/cjs/providers/GenericOpenAICompatibleProvider.js +14 -20
  202. package/dist/cjs/providers/GenericOpenAICompatibleProvider.js.map +1 -1
  203. package/dist/cjs/providers/OpenAICompatibleProvider.d.ts +26 -135
  204. package/dist/cjs/providers/OpenAICompatibleProvider.d.ts.map +1 -1
  205. package/dist/cjs/providers/OpenAICompatibleProvider.js +40 -496
  206. package/dist/cjs/providers/OpenAICompatibleProvider.js.map +1 -1
  207. package/dist/cjs/providers/OpenAIProvider.d.ts +14 -20
  208. package/dist/cjs/providers/OpenAIProvider.d.ts.map +1 -1
  209. package/dist/cjs/providers/OpenAIProvider.js +21 -28
  210. package/dist/cjs/providers/OpenAIProvider.js.map +1 -1
  211. package/dist/cjs/providers/OpenRouterProvider.d.ts +20 -24
  212. package/dist/cjs/providers/OpenRouterProvider.d.ts.map +1 -1
  213. package/dist/cjs/providers/OpenRouterProvider.js +22 -38
  214. package/dist/cjs/providers/OpenRouterProvider.js.map +1 -1
  215. package/dist/cjs/providers/ProviderAdapter.d.ts +94 -0
  216. package/dist/cjs/providers/ProviderAdapter.d.ts.map +1 -0
  217. package/dist/cjs/providers/ProviderAdapter.js +257 -0
  218. package/dist/cjs/providers/ProviderAdapter.js.map +1 -0
  219. package/dist/cjs/providers/index.d.ts +21 -18
  220. package/dist/cjs/providers/index.d.ts.map +1 -1
  221. package/dist/cjs/providers/index.js +23 -21
  222. package/dist/cjs/providers/index.js.map +1 -1
  223. package/dist/cjs/types/agent.d.ts +37 -11
  224. package/dist/cjs/types/agent.d.ts.map +1 -1
  225. package/dist/cjs/types/ai.d.ts +11 -21
  226. package/dist/cjs/types/ai.d.ts.map +1 -1
  227. package/dist/cjs/types/compaction.d.ts +2 -2
  228. package/dist/cjs/types/compaction.d.ts.map +1 -1
  229. package/dist/cjs/types/errors.d.ts +16 -20
  230. package/dist/cjs/types/errors.d.ts.map +1 -1
  231. package/dist/cjs/types/errors.js +17 -18
  232. package/dist/cjs/types/errors.js.map +1 -1
  233. package/dist/cjs/types/flow.d.ts +56 -39
  234. package/dist/cjs/types/flow.d.ts.map +1 -1
  235. package/dist/cjs/types/history.d.ts +1 -1
  236. package/dist/cjs/types/history.d.ts.map +1 -1
  237. package/dist/cjs/types/index.d.ts +17 -17
  238. package/dist/cjs/types/index.d.ts.map +1 -1
  239. package/dist/cjs/types/index.js +14 -14
  240. package/dist/cjs/types/index.js.map +1 -1
  241. package/dist/cjs/types/persistence.d.ts +2 -2
  242. package/dist/cjs/types/persistence.d.ts.map +1 -1
  243. package/dist/cjs/types/session.d.ts +4 -4
  244. package/dist/cjs/types/session.d.ts.map +1 -1
  245. package/dist/cjs/types/signals.d.ts +3 -3
  246. package/dist/cjs/types/signals.d.ts.map +1 -1
  247. package/dist/cjs/types/template.d.ts +2 -2
  248. package/dist/cjs/types/template.d.ts.map +1 -1
  249. package/dist/cjs/types/tool.d.ts +4 -2
  250. package/dist/cjs/types/tool.d.ts.map +1 -1
  251. package/dist/cjs/types/tool.js.map +1 -1
  252. package/dist/cjs/utils/condition.d.ts +1 -1
  253. package/dist/cjs/utils/condition.d.ts.map +1 -1
  254. package/dist/cjs/utils/condition.js +6 -6
  255. package/dist/cjs/utils/condition.js.map +1 -1
  256. package/dist/cjs/utils/event.d.ts +1 -1
  257. package/dist/cjs/utils/event.d.ts.map +1 -1
  258. package/dist/cjs/utils/event.js +2 -2
  259. package/dist/cjs/utils/event.js.map +1 -1
  260. package/dist/cjs/utils/history.d.ts +2 -2
  261. package/dist/cjs/utils/history.d.ts.map +1 -1
  262. package/dist/cjs/utils/history.js +15 -15
  263. package/dist/cjs/utils/history.js.map +1 -1
  264. package/dist/cjs/utils/index.d.ts +11 -13
  265. package/dist/cjs/utils/index.d.ts.map +1 -1
  266. package/dist/cjs/utils/index.js +57 -58
  267. package/dist/cjs/utils/index.js.map +1 -1
  268. package/dist/cjs/utils/serialize.d.ts +17 -0
  269. package/dist/cjs/utils/serialize.d.ts.map +1 -1
  270. package/dist/cjs/utils/serialize.js +33 -0
  271. package/dist/cjs/utils/serialize.js.map +1 -1
  272. package/dist/cjs/utils/session.d.ts +23 -3
  273. package/dist/cjs/utils/session.d.ts.map +1 -1
  274. package/dist/cjs/utils/session.js +40 -8
  275. package/dist/cjs/utils/session.js.map +1 -1
  276. package/dist/cjs/utils/template.d.ts +3 -3
  277. package/dist/cjs/utils/template.d.ts.map +1 -1
  278. package/dist/cjs/utils/template.js +5 -5
  279. package/dist/cjs/utils/template.js.map +1 -1
  280. package/dist/constants/index.d.ts +1 -0
  281. package/dist/constants/index.js +1 -1
  282. package/dist/core/Agent.d.ts +19 -11
  283. package/dist/core/Agent.d.ts.map +1 -1
  284. package/dist/core/Agent.js +53 -15
  285. package/dist/core/Agent.js.map +1 -1
  286. package/dist/core/AutoChainExecutor.d.ts +12 -22
  287. package/dist/core/AutoChainExecutor.d.ts.map +1 -1
  288. package/dist/core/AutoChainExecutor.js +27 -30
  289. package/dist/core/AutoChainExecutor.js.map +1 -1
  290. package/dist/core/BranchEvaluator.d.ts +4 -4
  291. package/dist/core/BranchEvaluator.d.ts.map +1 -1
  292. package/dist/core/BranchEvaluator.js +2 -2
  293. package/dist/core/BranchEvaluator.js.map +1 -1
  294. package/dist/core/CompactionEngine.d.ts +16 -3
  295. package/dist/core/CompactionEngine.d.ts.map +1 -1
  296. package/dist/core/CompactionEngine.js +30 -6
  297. package/dist/core/CompactionEngine.js.map +1 -1
  298. package/dist/core/DirectiveChainTracker.d.ts +1 -1
  299. package/dist/core/DirectiveChainTracker.d.ts.map +1 -1
  300. package/dist/core/DirectiveChainTracker.js +2 -2
  301. package/dist/core/DirectiveChainTracker.js.map +1 -1
  302. package/dist/core/Events.d.ts +1 -1
  303. package/dist/core/Events.d.ts.map +1 -1
  304. package/dist/core/Events.js +1 -1
  305. package/dist/core/Events.js.map +1 -1
  306. package/dist/core/Flow.d.ts +4 -4
  307. package/dist/core/Flow.d.ts.map +1 -1
  308. package/dist/core/Flow.js +3 -3
  309. package/dist/core/Flow.js.map +1 -1
  310. package/dist/core/FlowRouter.d.ts +4 -4
  311. package/dist/core/FlowRouter.d.ts.map +1 -1
  312. package/dist/core/FlowRouter.js +36 -14
  313. package/dist/core/FlowRouter.js.map +1 -1
  314. package/dist/core/PersistenceManager.d.ts +1 -1
  315. package/dist/core/PersistenceManager.d.ts.map +1 -1
  316. package/dist/core/PersistenceManager.js +3 -3
  317. package/dist/core/PersistenceManager.js.map +1 -1
  318. package/dist/core/PromptComposer.d.ts +4 -4
  319. package/dist/core/PromptComposer.d.ts.map +1 -1
  320. package/dist/core/PromptComposer.js +3 -3
  321. package/dist/core/PromptComposer.js.map +1 -1
  322. package/dist/core/PromptSectionCache.d.ts +2 -2
  323. package/dist/core/PromptSectionCache.d.ts.map +1 -1
  324. package/dist/core/ResponseEngine.d.ts +4 -4
  325. package/dist/core/ResponseEngine.d.ts.map +1 -1
  326. package/dist/core/ResponseEngine.js +2 -2
  327. package/dist/core/ResponseEngine.js.map +1 -1
  328. package/dist/core/ResponseGenerationError.d.ts.map +1 -1
  329. package/dist/core/ResponseGenerationError.js +3 -5
  330. package/dist/core/ResponseGenerationError.js.map +1 -1
  331. package/dist/core/ResponseModal.d.ts +39 -10
  332. package/dist/core/ResponseModal.d.ts.map +1 -1
  333. package/dist/core/ResponseModal.js +152 -29
  334. package/dist/core/ResponseModal.js.map +1 -1
  335. package/dist/core/ResponsePipeline.d.ts +50 -12
  336. package/dist/core/ResponsePipeline.d.ts.map +1 -1
  337. package/dist/core/ResponsePipeline.js +232 -89
  338. package/dist/core/ResponsePipeline.js.map +1 -1
  339. package/dist/core/SessionFinalizer.d.ts +4 -4
  340. package/dist/core/SessionFinalizer.d.ts.map +1 -1
  341. package/dist/core/SessionFinalizer.js +32 -5
  342. package/dist/core/SessionFinalizer.js.map +1 -1
  343. package/dist/core/SessionManager.d.ts +15 -6
  344. package/dist/core/SessionManager.d.ts.map +1 -1
  345. package/dist/core/SessionManager.js +46 -19
  346. package/dist/core/SessionManager.js.map +1 -1
  347. package/dist/core/SignalCoordinator.d.ts +5 -5
  348. package/dist/core/SignalCoordinator.d.ts.map +1 -1
  349. package/dist/core/SignalCoordinator.js +2 -2
  350. package/dist/core/SignalCoordinator.js.map +1 -1
  351. package/dist/core/SignalEvaluator.d.ts +4 -4
  352. package/dist/core/SignalEvaluator.d.ts.map +1 -1
  353. package/dist/core/SignalEvaluator.js +2 -2
  354. package/dist/core/SignalEvaluator.js.map +1 -1
  355. package/dist/core/SignalProcessor.d.ts +6 -6
  356. package/dist/core/SignalProcessor.d.ts.map +1 -1
  357. package/dist/core/SignalProcessor.js +7 -79
  358. package/dist/core/SignalProcessor.js.map +1 -1
  359. package/dist/core/Step.d.ts +5 -5
  360. package/dist/core/Step.d.ts.map +1 -1
  361. package/dist/core/Step.js +53 -5
  362. package/dist/core/Step.js.map +1 -1
  363. package/dist/core/StepLifecycle.d.ts +18 -8
  364. package/dist/core/StepLifecycle.d.ts.map +1 -1
  365. package/dist/core/StepLifecycle.js +98 -15
  366. package/dist/core/StepLifecycle.js.map +1 -1
  367. package/dist/core/StreamingToolExecutor.d.ts +1 -1
  368. package/dist/core/StreamingToolExecutor.d.ts.map +1 -1
  369. package/dist/core/StreamingToolExecutor.js +29 -5
  370. package/dist/core/StreamingToolExecutor.js.map +1 -1
  371. package/dist/core/ToolLoopExecutor.d.ts +8 -4
  372. package/dist/core/ToolLoopExecutor.d.ts.map +1 -1
  373. package/dist/core/ToolLoopExecutor.js +157 -65
  374. package/dist/core/ToolLoopExecutor.js.map +1 -1
  375. package/dist/core/ToolManager.d.ts +6 -6
  376. package/dist/core/ToolManager.d.ts.map +1 -1
  377. package/dist/core/ToolManager.js +44 -21
  378. package/dist/core/ToolManager.js.map +1 -1
  379. package/dist/core/createAgent.d.ts +2 -2
  380. package/dist/core/createAgent.d.ts.map +1 -1
  381. package/dist/core/createAgent.js +1 -1
  382. package/dist/core/createAgent.js.map +1 -1
  383. package/dist/core/flow-namespace.d.ts +16 -1
  384. package/dist/core/flow-namespace.d.ts.map +1 -1
  385. package/dist/core/flow-namespace.js +23 -1
  386. package/dist/core/flow-namespace.js.map +1 -1
  387. package/dist/core/toolGates.d.ts +1 -1
  388. package/dist/core/toolGates.d.ts.map +1 -1
  389. package/dist/core/toolGates.js +1 -1
  390. package/dist/core/toolGates.js.map +1 -1
  391. package/dist/index.d.ts +50 -45
  392. package/dist/index.d.ts.map +1 -1
  393. package/dist/index.js +34 -30
  394. package/dist/index.js.map +1 -1
  395. package/dist/providers/AnthropicProvider.d.ts +25 -35
  396. package/dist/providers/AnthropicProvider.d.ts.map +1 -1
  397. package/dist/providers/AnthropicProvider.js +30 -423
  398. package/dist/providers/AnthropicProvider.js.map +1 -1
  399. package/dist/providers/DeepSeekProvider.d.ts +13 -34
  400. package/dist/providers/DeepSeekProvider.d.ts.map +1 -1
  401. package/dist/providers/DeepSeekProvider.js +16 -47
  402. package/dist/providers/DeepSeekProvider.js.map +1 -1
  403. package/dist/providers/GeminiProvider.d.ts +22 -75
  404. package/dist/providers/GeminiProvider.d.ts.map +1 -1
  405. package/dist/providers/GeminiProvider.js +32 -558
  406. package/dist/providers/GeminiProvider.js.map +1 -1
  407. package/dist/providers/GenericOpenAICompatibleProvider.d.ts +9 -10
  408. package/dist/providers/GenericOpenAICompatibleProvider.d.ts.map +1 -1
  409. package/dist/providers/GenericOpenAICompatibleProvider.js +13 -16
  410. package/dist/providers/GenericOpenAICompatibleProvider.js.map +1 -1
  411. package/dist/providers/OpenAICompatibleProvider.d.ts +26 -135
  412. package/dist/providers/OpenAICompatibleProvider.d.ts.map +1 -1
  413. package/dist/providers/OpenAICompatibleProvider.js +39 -495
  414. package/dist/providers/OpenAICompatibleProvider.js.map +1 -1
  415. package/dist/providers/OpenAIProvider.d.ts +14 -20
  416. package/dist/providers/OpenAIProvider.d.ts.map +1 -1
  417. package/dist/providers/OpenAIProvider.js +20 -24
  418. package/dist/providers/OpenAIProvider.js.map +1 -1
  419. package/dist/providers/OpenRouterProvider.d.ts +20 -24
  420. package/dist/providers/OpenRouterProvider.d.ts.map +1 -1
  421. package/dist/providers/OpenRouterProvider.js +21 -34
  422. package/dist/providers/OpenRouterProvider.js.map +1 -1
  423. package/dist/providers/ProviderAdapter.d.ts +94 -0
  424. package/dist/providers/ProviderAdapter.d.ts.map +1 -0
  425. package/dist/providers/ProviderAdapter.js +251 -0
  426. package/dist/providers/ProviderAdapter.js.map +1 -0
  427. package/dist/providers/index.d.ts +21 -18
  428. package/dist/providers/index.d.ts.map +1 -1
  429. package/dist/providers/index.js +13 -10
  430. package/dist/providers/index.js.map +1 -1
  431. package/dist/types/agent.d.ts +37 -11
  432. package/dist/types/agent.d.ts.map +1 -1
  433. package/dist/types/ai.d.ts +11 -21
  434. package/dist/types/ai.d.ts.map +1 -1
  435. package/dist/types/compaction.d.ts +2 -2
  436. package/dist/types/compaction.d.ts.map +1 -1
  437. package/dist/types/errors.d.ts +16 -20
  438. package/dist/types/errors.d.ts.map +1 -1
  439. package/dist/types/errors.js +15 -16
  440. package/dist/types/errors.js.map +1 -1
  441. package/dist/types/flow.d.ts +56 -39
  442. package/dist/types/flow.d.ts.map +1 -1
  443. package/dist/types/history.d.ts +1 -1
  444. package/dist/types/history.d.ts.map +1 -1
  445. package/dist/types/index.d.ts +17 -17
  446. package/dist/types/index.d.ts.map +1 -1
  447. package/dist/types/index.js +4 -4
  448. package/dist/types/index.js.map +1 -1
  449. package/dist/types/persistence.d.ts +2 -2
  450. package/dist/types/persistence.d.ts.map +1 -1
  451. package/dist/types/session.d.ts +4 -4
  452. package/dist/types/session.d.ts.map +1 -1
  453. package/dist/types/signals.d.ts +3 -3
  454. package/dist/types/signals.d.ts.map +1 -1
  455. package/dist/types/template.d.ts +2 -2
  456. package/dist/types/template.d.ts.map +1 -1
  457. package/dist/types/tool.d.ts +4 -2
  458. package/dist/types/tool.d.ts.map +1 -1
  459. package/dist/types/tool.js.map +1 -1
  460. package/dist/utils/condition.d.ts +1 -1
  461. package/dist/utils/condition.d.ts.map +1 -1
  462. package/dist/utils/condition.js +2 -2
  463. package/dist/utils/condition.js.map +1 -1
  464. package/dist/utils/event.d.ts +1 -1
  465. package/dist/utils/event.d.ts.map +1 -1
  466. package/dist/utils/event.js +1 -1
  467. package/dist/utils/event.js.map +1 -1
  468. package/dist/utils/history.d.ts +2 -2
  469. package/dist/utils/history.d.ts.map +1 -1
  470. package/dist/utils/history.js +1 -1
  471. package/dist/utils/history.js.map +1 -1
  472. package/dist/utils/index.d.ts +11 -13
  473. package/dist/utils/index.d.ts.map +1 -1
  474. package/dist/utils/index.js +11 -12
  475. package/dist/utils/index.js.map +1 -1
  476. package/dist/utils/serialize.d.ts +17 -0
  477. package/dist/utils/serialize.d.ts.map +1 -1
  478. package/dist/utils/serialize.js +31 -0
  479. package/dist/utils/serialize.js.map +1 -1
  480. package/dist/utils/session.d.ts +23 -3
  481. package/dist/utils/session.d.ts.map +1 -1
  482. package/dist/utils/session.js +35 -6
  483. package/dist/utils/session.js.map +1 -1
  484. package/dist/utils/template.d.ts +3 -3
  485. package/dist/utils/template.d.ts.map +1 -1
  486. package/dist/utils/template.js +1 -1
  487. package/dist/utils/template.js.map +1 -1
  488. package/docs/concepts/architecture.md +3 -3
  489. package/docs/concepts/directives.md +1 -1
  490. package/docs/guides/error-handling.md +46 -45
  491. package/docs/guides/flow-control.md +8 -1
  492. package/docs/guides/instructions.md +15 -6
  493. package/docs/guides/persistence.md +12 -5
  494. package/docs/guides/streaming.md +10 -0
  495. package/docs/migration/README.md +4 -0
  496. package/docs/migration/v2-3-to-v2-4.md +4 -0
  497. package/docs/migration/v2-6-to-v2-7.md +246 -0
  498. package/docs/reference/adapters.md +15 -1
  499. package/docs/reference/branches.md +2 -0
  500. package/docs/reference/create-agent.md +28 -0
  501. package/docs/reference/directive.md +1 -1
  502. package/docs/reference/errors.md +30 -32
  503. package/docs/reference/providers.md +63 -60
  504. package/docs/reference/step.md +28 -21
  505. package/docs/reference/tool.md +14 -5
  506. package/docs/start/02-first-agent.md +8 -4
  507. package/docs/start/03-collect-data.md +19 -10
  508. package/examples/01-quickstart.ts +2 -2
  509. package/examples/02-data-extraction.ts +1 -1
  510. package/examples/03-tools.ts +1 -1
  511. package/examples/04-instructions.ts +2 -2
  512. package/examples/05-branching.ts +3 -3
  513. package/examples/06-flow-control.ts +3 -3
  514. package/examples/07-streaming.ts +1 -1
  515. package/examples/08-persistence.ts +2 -2
  516. package/examples/09-signals.ts +1 -1
  517. package/examples/tsconfig.json +6 -3
  518. package/package.json +9 -7
  519. package/src/adapters/MemoryAdapter.ts +33 -37
  520. package/src/adapters/MongoAdapter.ts +3 -3
  521. package/src/adapters/OpenSearchAdapter.ts +4 -4
  522. package/src/adapters/PostgreSQLAdapter.ts +26 -21
  523. package/src/adapters/PrismaAdapter.ts +4 -4
  524. package/src/adapters/RedisAdapter.ts +84 -37
  525. package/src/adapters/SQLiteAdapter.ts +13 -34
  526. package/src/adapters/index.ts +13 -13
  527. package/src/adapters/sessionRow.ts +57 -0
  528. package/src/core/Agent.ts +64 -18
  529. package/src/core/AutoChainExecutor.ts +44 -57
  530. package/src/core/BranchEvaluator.ts +5 -5
  531. package/src/core/CompactionEngine.ts +42 -8
  532. package/src/core/DirectiveChainTracker.ts +3 -3
  533. package/src/core/Events.ts +2 -2
  534. package/src/core/Flow.ts +9 -9
  535. package/src/core/FlowRouter.ts +46 -20
  536. package/src/core/PersistenceManager.ts +4 -4
  537. package/src/core/PromptComposer.ts +8 -8
  538. package/src/core/PromptSectionCache.ts +2 -2
  539. package/src/core/ResponseEngine.ts +6 -6
  540. package/src/core/ResponseGenerationError.ts +3 -6
  541. package/src/core/ResponseModal.ts +205 -39
  542. package/src/core/ResponsePipeline.ts +301 -107
  543. package/src/core/SessionFinalizer.ts +40 -10
  544. package/src/core/SessionManager.ts +61 -27
  545. package/src/core/SignalCoordinator.ts +7 -7
  546. package/src/core/SignalEvaluator.ts +6 -6
  547. package/src/core/SignalProcessor.ts +13 -93
  548. package/src/core/Step.ts +87 -10
  549. package/src/core/StepLifecycle.ts +129 -26
  550. package/src/core/StreamingToolExecutor.ts +33 -8
  551. package/src/core/ToolLoopExecutor.ts +206 -80
  552. package/src/core/ToolManager.ts +53 -26
  553. package/src/core/createAgent.ts +2 -2
  554. package/src/core/flow-namespace.ts +31 -2
  555. package/src/core/toolGates.ts +2 -2
  556. package/src/index.ts +59 -45
  557. package/src/providers/AnthropicProvider.ts +44 -595
  558. package/src/providers/DeepSeekProvider.ts +27 -92
  559. package/src/providers/GeminiProvider.ts +41 -752
  560. package/src/providers/GenericOpenAICompatibleProvider.ts +19 -27
  561. package/src/providers/OpenAICompatibleProvider.ts +58 -764
  562. package/src/providers/OpenAIProvider.ts +31 -55
  563. package/src/providers/OpenRouterProvider.ts +40 -70
  564. package/src/providers/ProviderAdapter.ts +368 -0
  565. package/src/providers/index.ts +21 -23
  566. package/src/types/agent.ts +36 -11
  567. package/src/types/ai.ts +11 -21
  568. package/src/types/compaction.ts +2 -2
  569. package/src/types/errors.ts +17 -35
  570. package/src/types/flow.ts +44 -46
  571. package/src/types/history.ts +1 -1
  572. package/src/types/index.ts +18 -17
  573. package/src/types/persistence.ts +2 -2
  574. package/src/types/session.ts +4 -4
  575. package/src/types/signals.ts +3 -3
  576. package/src/types/template.ts +2 -2
  577. package/src/types/tool.ts +4 -2
  578. package/src/utils/condition.ts +3 -3
  579. package/src/utils/event.ts +1 -1
  580. package/src/utils/history.ts +3 -3
  581. package/src/utils/index.ts +14 -15
  582. package/src/utils/serialize.ts +38 -0
  583. package/src/utils/session.ts +46 -9
  584. package/src/utils/template.ts +3 -3
  585. package/dist/cjs/core/DirectiveBus.d.ts +0 -88
  586. package/dist/cjs/core/DirectiveBus.d.ts.map +0 -1
  587. package/dist/cjs/core/DirectiveBus.js +0 -196
  588. package/dist/cjs/core/DirectiveBus.js.map +0 -1
  589. package/dist/cjs/providers/errorClassification.d.ts +0 -61
  590. package/dist/cjs/providers/errorClassification.d.ts.map +0 -1
  591. package/dist/cjs/providers/errorClassification.js +0 -123
  592. package/dist/cjs/providers/errorClassification.js.map +0 -1
  593. package/dist/cjs/utils/retry.d.ts +0 -67
  594. package/dist/cjs/utils/retry.d.ts.map +0 -1
  595. package/dist/cjs/utils/retry.js +0 -201
  596. package/dist/cjs/utils/retry.js.map +0 -1
  597. package/dist/core/DirectiveBus.d.ts +0 -88
  598. package/dist/core/DirectiveBus.d.ts.map +0 -1
  599. package/dist/core/DirectiveBus.js +0 -192
  600. package/dist/core/DirectiveBus.js.map +0 -1
  601. package/dist/providers/errorClassification.d.ts +0 -61
  602. package/dist/providers/errorClassification.d.ts.map +0 -1
  603. package/dist/providers/errorClassification.js +0 -116
  604. package/dist/providers/errorClassification.js.map +0 -1
  605. package/dist/utils/retry.d.ts +0 -67
  606. package/dist/utils/retry.d.ts.map +0 -1
  607. package/dist/utils/retry.js +0 -193
  608. package/dist/utils/retry.js.map +0 -1
  609. package/src/core/DirectiveBus.ts +0 -248
  610. package/src/providers/errorClassification.ts +0 -172
  611. package/src/utils/retry.ts +0 -274
@@ -5,17 +5,20 @@
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.ResponseModal = void 0;
8
- const ResponseEngine_1 = require("./ResponseEngine");
9
- const ResponsePipeline_1 = require("./ResponsePipeline");
10
- const AutoChainExecutor_1 = require("./AutoChainExecutor");
11
- const StepLifecycle_1 = require("./StepLifecycle");
12
- const SessionFinalizer_1 = require("./SessionFinalizer");
13
- const ToolLoopExecutor_1 = require("./ToolLoopExecutor");
14
- const SignalCoordinator_1 = require("./SignalCoordinator");
15
- const ResponseGenerationError_1 = require("./ResponseGenerationError");
16
- const utils_1 = require("../utils");
17
- const template_1 = require("../utils/template");
18
- const streamingMessage_1 = require("../utils/streamingMessage");
8
+ const ResponseEngine_js_1 = require("./ResponseEngine.js");
9
+ const ResponsePipeline_js_1 = require("./ResponsePipeline.js");
10
+ const AutoChainExecutor_js_1 = require("./AutoChainExecutor.js");
11
+ const StepLifecycle_js_1 = require("./StepLifecycle.js");
12
+ const SessionFinalizer_js_1 = require("./SessionFinalizer.js");
13
+ const ToolLoopExecutor_js_1 = require("./ToolLoopExecutor.js");
14
+ const flow_namespace_js_1 = require("./flow-namespace.js");
15
+ const SignalCoordinator_js_1 = require("./SignalCoordinator.js");
16
+ const ResponseGenerationError_js_1 = require("./ResponseGenerationError.js");
17
+ const errors_js_1 = require("../types/errors.js");
18
+ const index_js_1 = require("../utils/index.js");
19
+ const template_js_1 = require("../utils/template.js");
20
+ const streamingMessage_js_1 = require("../utils/streamingMessage.js");
21
+ const json_js_1 = require("../utils/json.js");
19
22
  /**
20
23
  * ResponseModal class that encapsulates all response generation logic
21
24
  * Uses unified approach for both streaming and non-streaming responses
@@ -25,24 +28,24 @@ class ResponseModal {
25
28
  this.agent = agent;
26
29
  this.options = options;
27
30
  // Initialize response engine
28
- this.responseEngine = new ResponseEngine_1.ResponseEngine(this.agent.promptSectionCache);
31
+ this.responseEngine = new ResponseEngine_js_1.ResponseEngine(this.agent.promptSectionCache);
29
32
  // Signal pre/post phase orchestration
30
- this.signalCoordinator = new SignalCoordinator_1.SignalCoordinator({
33
+ this.signalCoordinator = new SignalCoordinator_js_1.SignalCoordinator({
31
34
  getFlows: () => this.agent.getFlows(),
32
35
  signalProcessor: this.agent.signalProcessor,
33
36
  });
34
37
  // Initialize response pipeline with agent dependencies
35
- this.responsePipeline = new ResponsePipeline_1.ResponsePipeline(this.agent.getAgentOptions(), () => this.agent.getFlows(), // Pass a function to get flows dynamically
38
+ this.responsePipeline = new ResponsePipeline_js_1.ResponsePipeline(this.agent.getAgentOptions(), () => this.agent.getFlows(), // Pass a function to get flows dynamically
36
39
  this.agent.getFlowRouter(), this.signalCoordinator, this.agent.updateCollectedData.bind(this.agent), () => this.agent.schema);
37
40
  // Step prepare/finalize execution, shared by the prepare phase and finalizer
38
- this.stepLifecycle = new StepLifecycle_1.StepLifecycle({
41
+ this.stepLifecycle = new StepLifecycle_js_1.StepLifecycle({
39
42
  getFlows: () => this.agent.getFlows(),
40
43
  toolManager: this.getToolManager(),
41
44
  updateContext: this.agent.updateContext.bind(this.agent),
42
45
  updateData: this.agent.updateCollectedData.bind(this.agent),
43
46
  });
44
47
  // Single owner of end-of-turn finalization (compaction + persistence + sync)
45
- this.sessionFinalizer = new SessionFinalizer_1.SessionFinalizer({
48
+ this.sessionFinalizer = new SessionFinalizer_js_1.SessionFinalizer({
46
49
  getCompactionOptions: () => this.agent.getCompactionOptions(),
47
50
  getPersistenceManager: () => this.agent.getPersistenceManager(),
48
51
  getAgentOptions: () => this.agent.getAgentOptions(),
@@ -52,7 +55,7 @@ class ResponseModal {
52
55
  enableAutoSave: this.options?.enableAutoSave,
53
56
  });
54
57
  // Tool follow-up loop (run tools, ask the LLM again) + streaming batch execution
55
- this.toolLoopExecutor = new ToolLoopExecutor_1.ToolLoopExecutor({
58
+ this.toolLoopExecutor = new ToolLoopExecutor_js_1.ToolLoopExecutor({
56
59
  toolManager: this.getToolManager(),
57
60
  getAgentOptions: () => this.agent.getAgentOptions(),
58
61
  updateContext: this.agent.updateContext.bind(this.agent),
@@ -69,7 +72,7 @@ class ResponseModal {
69
72
  // without this, mutations made before the failure leave the live session
70
73
  // diverged from persisted state
71
74
  const preTurnSession = this.agent.session.current
72
- ? (0, utils_1.cloneDeep)(this.agent.session.current)
75
+ ? (0, index_js_1.cloneDeep)(this.agent.session.current)
73
76
  : undefined;
74
77
  try {
75
78
  // Use unified response preparation and routing
@@ -84,7 +87,14 @@ class ResponseModal {
84
87
  if (preTurnSession) {
85
88
  this.agent.session.syncSession(preTurnSession);
86
89
  }
87
- throw new ResponseGenerationError_1.ResponseGenerationError(`[ResponseGenerationError] Response generation failed: ${error instanceof Error ? error.message : String(error)}. ` +
90
+ // Typed library errors carry their own semantics (ProviderError.code,
91
+ // SessionConflictError) — rethrow bare so consumers can branch on
92
+ // them instead of string-matching. Everything else wraps with the
93
+ // original attached as `cause`.
94
+ if (error instanceof errors_js_1.ProviderError || error instanceof errors_js_1.SessionConflictError) {
95
+ throw error;
96
+ }
97
+ throw new ResponseGenerationError_js_1.ResponseGenerationError(`[ResponseGenerationError] Response generation failed: ${error instanceof Error ? error.message : String(error)}. ` +
88
98
  `Check provider configuration and network connectivity.`, { originalError: error, params, phase: 'response_generation' });
89
99
  }
90
100
  }
@@ -94,7 +104,7 @@ class ResponseModal {
94
104
  async *respondStream(params) {
95
105
  // Same failed-turn rollback semantics as respond()
96
106
  const preTurnSession = this.agent.session.current
97
- ? (0, utils_1.cloneDeep)(this.agent.session.current)
107
+ ? (0, index_js_1.cloneDeep)(this.agent.session.current)
98
108
  : undefined;
99
109
  try {
100
110
  // Use unified response preparation and routing
@@ -112,7 +122,7 @@ class ResponseModal {
112
122
  accumulated: "",
113
123
  done: true,
114
124
  session: params.session || await this.agent.session.getOrCreate(),
115
- error: new ResponseGenerationError_1.ResponseGenerationError(`Streaming response failed: ${error instanceof Error ? error.message : String(error)}`, { originalError: error, params, phase: 'streaming' }),
125
+ error: new ResponseGenerationError_js_1.ResponseGenerationError(`Streaming response failed: ${error instanceof Error ? error.message : String(error)}`, { originalError: error, params, phase: 'streaming' }),
116
126
  };
117
127
  }
118
128
  }
@@ -225,6 +235,44 @@ class ResponseModal {
225
235
  getToolManager() {
226
236
  return this.agent.tool;
227
237
  }
238
+ /**
239
+ * Repair-parse a JSON-shaped protocol fragment (truncated output,
240
+ * fence-wrapped JSON) into a structured payload. Raw protocol fragments
241
+ * must never surface as the user-visible reply: if the repair parse fails,
242
+ * fail the turn LOUDLY so the caller's rollback/retry path engages instead
243
+ * of leaking `{"message": "…` to an end user. Plain prose (not JSON-shaped
244
+ * at all) never reaches this helper — the call sites gate on the fragment
245
+ * shape and pass it through untouched.
246
+ */
247
+ salvageStructuredOutput(raw, surface) {
248
+ const salvaged = (0, json_js_1.tryParseJSONResponse)(raw);
249
+ if (salvaged && typeof salvaged.message === "string") {
250
+ index_js_1.logger.warn(`[ResponseModal] Salvaged malformed structured output from ${surface} via JSON repair parse.`);
251
+ return { ...salvaged, message: salvaged.message };
252
+ }
253
+ throw ResponseGenerationError_js_1.ResponseGenerationError.fromError(new Error("Model returned a schema-mandated response that could not be parsed as JSON. " +
254
+ `The ${surface} was failed instead of delivering raw protocol output to the user.`), 'structured_output_malformed', { responseSchemaName: 'response_output' });
255
+ }
256
+ /**
257
+ * Tool-emitted directives (ctx.dispatch / `{directive}` returns): state
258
+ * writes apply now; control flow queues for the next turn's
259
+ * pendingDirective applier (same deferred semantics as dispatch()).
260
+ */
261
+ async applyToolEmittedDirectives(session, d) {
262
+ if (d.dataUpdate) {
263
+ session = (0, index_js_1.mergeCollected)(session, d.dataUpdate);
264
+ }
265
+ if (d.contextUpdate) {
266
+ await this.agent.updateContext(d.contextUpdate);
267
+ }
268
+ const control = { ...d };
269
+ delete control.dataUpdate;
270
+ delete control.contextUpdate;
271
+ if (Object.keys(control).length > 0) {
272
+ flow_namespace_js_1.flow.queuePending(session, control);
273
+ }
274
+ return session;
275
+ }
228
276
  /**
229
277
  * Collect scoped instructions from agent, flow, and step into a ScopedInstructions value.
230
278
  * @private
@@ -245,29 +293,32 @@ class ResponseModal {
245
293
  */
246
294
  async prepareUnifiedResponseContext(params) {
247
295
  try {
248
- const { history: simpleHistory, contextOverride, signal } = params;
296
+ const { history: simpleHistory, contextOverride, signal, message: turnMessage, allowedFlows } = params;
249
297
  // Validate input parameters
250
298
  if (!simpleHistory) {
251
- throw new ResponseGenerationError_1.ResponseGenerationError('[ResponseGenerationError] Missing history: history is required for response generation. ' +
252
- 'Pass a valid history array to the respond/stream method.', { params, phase: 'validation' });
299
+ throw new ResponseGenerationError_js_1.ResponseGenerationError('[ResponseGenerationError] Missing history: history is required for response generation. ' +
300
+ 'Pass a valid history array (or pass `message` alongside an existing history base).', { params, phase: 'validation' });
253
301
  }
302
+ // `message` is the user turn: appended to what the model sees this
303
+ // turn AND recorded on the returned session's history.
304
+ const history = turnMessage
305
+ ? [...simpleHistory, (0, index_js_1.userMessage)(turnMessage)]
306
+ : simpleHistory;
254
307
  // Convert HistoryItem[] to Event[] for internal processing
255
- const historyEvents = (0, utils_1.historyToEvents)(simpleHistory);
256
- // Keep original HistoryItem[] format for external APIs
257
- const history = simpleHistory;
308
+ const historyEvents = (0, index_js_1.historyToEvents)(history);
258
309
  // Use ResponsePipeline for context and session preparation; context
259
310
  // and session are passed explicitly — the pipeline holds no state
260
311
  let responseContext;
261
312
  try {
262
313
  responseContext = await this.responsePipeline.prepareResponseContext({
263
314
  contextOverride,
264
- session: params.session ? (0, utils_1.cloneDeep)(params.session) : undefined,
315
+ session: params.session ? (0, index_js_1.cloneDeep)(params.session) : undefined,
265
316
  currentContext: await this.agent.getContext(),
266
317
  currentSession: this.agent.currentSession,
267
318
  });
268
319
  }
269
320
  catch (error) {
270
- throw ResponseGenerationError_1.ResponseGenerationError.fromError(error, 'pipeline_context_preparation', params);
321
+ throw ResponseGenerationError_js_1.ResponseGenerationError.fromError(error, 'pipeline_context_preparation', params);
271
322
  }
272
323
  const { effectiveContext, contextAfterHook } = responseContext;
273
324
  let session = responseContext.session;
@@ -277,7 +328,7 @@ class ResponseModal {
277
328
  await this.agent.updateContext(contextAfterHook);
278
329
  }
279
330
  catch (error) {
280
- throw ResponseGenerationError_1.ResponseGenerationError.fromError(error, 'context_update_from_pipeline', params, { contextAfterHook });
331
+ throw ResponseGenerationError_js_1.ResponseGenerationError.fromError(error, 'context_update_from_pipeline', params, { contextAfterHook });
281
332
  }
282
333
  }
283
334
  // Apply data staged before any session existed (initialData,
@@ -287,19 +338,32 @@ class ResponseModal {
287
338
  const stagedData = this.agent.consumePendingData();
288
339
  if (Object.keys(stagedData).length > 0) {
289
340
  try {
290
- session = (0, utils_1.mergeCollected)(session, stagedData);
291
- utils_1.logger.debug("[ResponseModal] Merged staged agent data into session:", stagedData);
341
+ session = (0, index_js_1.mergeCollected)(session, stagedData);
342
+ index_js_1.logger.debug("[ResponseModal] Merged staged agent data into session:", stagedData);
292
343
  }
293
344
  catch (error) {
294
- throw ResponseGenerationError_1.ResponseGenerationError.fromError(error, 'data_merging', params, { stagedData });
345
+ throw ResponseGenerationError_js_1.ResponseGenerationError.fromError(error, 'data_merging', params, { stagedData });
295
346
  }
296
347
  }
348
+ // Record the user turn on the session's own history so the returned
349
+ // session carries the full exchange (respond owns session.history
350
+ // when `message` is used).
351
+ if (turnMessage) {
352
+ session.history = [...(session.history ?? []), (0, index_js_1.userMessage)(turnMessage)];
353
+ }
297
354
  // PHASE 1: PREPARE - Execute prepare function if current step has one
298
355
  try {
299
- await this.stepLifecycle.runPrepare(session, effectiveContext);
356
+ const prepareDirective = await this.stepLifecycle.runPrepare(session, effectiveContext);
357
+ // Queue the control-flow directive for THIS turn: routing
358
+ // (handleRoutingAndStepSelection) consumes session.pendingDirective
359
+ // before deciding flow/step, so a prepare-phase goTo/goToStep/
360
+ // reset steers the current turn.
361
+ if (prepareDirective) {
362
+ flow_namespace_js_1.flow.queuePending(session, prepareDirective);
363
+ }
300
364
  }
301
365
  catch (error) {
302
- throw ResponseGenerationError_1.ResponseGenerationError.fromError(error, 'step_preparation', params, { session, effectiveContext });
366
+ throw ResponseGenerationError_js_1.ResponseGenerationError.fromError(error, 'step_preparation', params, { session, effectiveContext });
303
367
  }
304
368
  // PHASE 2: ROUTING + STEP SELECTION - Determine which flow and step to use
305
369
  // Performs pre-extraction and step selection
@@ -310,15 +374,17 @@ class ResponseModal {
310
374
  history: historyEvents,
311
375
  context: effectiveContext,
312
376
  signal,
377
+ allowedFlows,
313
378
  });
314
379
  }
315
380
  catch (error) {
316
- throw ResponseGenerationError_1.ResponseGenerationError.fromError(error, 'routing_and_step_selection', params, { session, effectiveContext });
381
+ throw ResponseGenerationError_js_1.ResponseGenerationError.fromError(error, 'routing_and_step_selection', params, { session, effectiveContext });
317
382
  }
318
383
  return {
319
384
  effectiveContext,
320
385
  session: routingResult.session,
321
386
  history,
387
+ turnMessage,
322
388
  selectedFlow: routingResult.selectedFlow,
323
389
  selectedStep: routingResult.selectedStep,
324
390
  responseDirectives: routingResult.responseDirectives,
@@ -328,14 +394,15 @@ class ResponseModal {
328
394
  signalPreDirective: routingResult.signalPreDirective,
329
395
  signalHalted: routingResult.signalHalted,
330
396
  signalHaltReply: routingResult.signalHaltReply,
397
+ endedFlows: routingResult.endedFlows,
331
398
  };
332
399
  }
333
400
  catch (error) {
334
401
  // Re-throw ResponseGenerationError as-is, wrap others
335
- if (ResponseGenerationError_1.ResponseGenerationError.isResponseGenerationError(error)) {
402
+ if (ResponseGenerationError_js_1.ResponseGenerationError.isResponseGenerationError(error)) {
336
403
  throw error;
337
404
  }
338
- throw ResponseGenerationError_1.ResponseGenerationError.fromError(error, 'preparation', params);
405
+ throw ResponseGenerationError_js_1.ResponseGenerationError.fromError(error, 'preparation', params);
339
406
  }
340
407
  }
341
408
  /**
@@ -358,7 +425,7 @@ class ResponseModal {
358
425
  // Accumulator for signal firings across both phases (fire order)
359
426
  const signalFirings = [...(preSignalFirings || [])];
360
427
  // Convert HistoryItem[] to Event[] for internal processing
361
- const historyEvents = (0, utils_1.historyToEvents)(history);
428
+ const historyEvents = (0, index_js_1.historyToEvents)(history);
362
429
  const base = { effectiveContext, history, historyEvents, signal, signalFirings };
363
430
  // ── SIGNAL HALT (Requirement 8.2) ─────────────────────────────────────
364
431
  // Pre-signal phase emitted halt → skip LLM call entirely. The post-signal
@@ -379,7 +446,7 @@ class ResponseModal {
379
446
  ? selectedFlow.getStep(session.currentStep.id)
380
447
  : selectedStep;
381
448
  if (currentStepInstance?.auto) {
382
- const autoChainExecutor = new AutoChainExecutor_1.AutoChainExecutor({
449
+ const autoChainExecutor = new AutoChainExecutor_js_1.AutoChainExecutor({
383
450
  maxAutoStepsPerTurn: this.agent.maxAutoStepsPerTurn,
384
451
  });
385
452
  const autoResult = await autoChainExecutor.run({
@@ -401,7 +468,7 @@ class ResponseModal {
401
468
  // ended without resolving to an interactive step (last_step: no
402
469
  // successor; completed: explicit complete; goto: cross-flow redirect).
403
470
  if (autoResult.stoppedReason === 'last_step' || autoResult.stoppedReason === 'completed' || autoResult.stoppedReason === 'goto') {
404
- utils_1.logger.debug(`[ResponseModal] Auto-chain ended with ${autoResult.stoppedReason}`);
471
+ index_js_1.logger.debug(`[ResponseModal] Auto-chain ended with ${autoResult.stoppedReason}`);
405
472
  return {
406
473
  ...base, session,
407
474
  outcome: { kind: 'flowComplete', selectedFlow, stoppedReason: autoResult.stoppedReason },
@@ -418,7 +485,7 @@ class ResponseModal {
418
485
  if (isFlowComplete && selectedFlow) {
419
486
  // Flow completion path: pure state transition, no LLM call. The reason
420
487
  // is 'last_step' (implicit terminus — no successor or all skipped).
421
- utils_1.logger.debug(`[ResponseModal] Releasing session to idle for completed flow: ${selectedFlow.title}`);
488
+ index_js_1.logger.debug(`[ResponseModal] Releasing session to idle for completed flow: ${selectedFlow.title}`);
422
489
  return {
423
490
  ...base, session,
424
491
  outcome: { kind: 'flowComplete', selectedFlow, stoppedReason: 'last_step' },
@@ -472,6 +539,8 @@ class ResponseModal {
472
539
  let isFlowComplete = false;
473
540
  let appliedInstructions;
474
541
  let runPostPhase = true;
542
+ let tokensUsed;
543
+ const endedFlows = [...(responseContext.endedFlows ?? [])];
475
544
  switch (plan.outcome.kind) {
476
545
  case 'halt': {
477
546
  message = plan.outcome.message;
@@ -488,6 +557,11 @@ class ResponseModal {
488
557
  });
489
558
  isFlowComplete = true;
490
559
  stoppedReason = plan.outcome.stoppedReason;
560
+ endedFlows.push({
561
+ flowId: plan.outcome.selectedFlow.id,
562
+ title: plan.outcome.selectedFlow.title,
563
+ reason: plan.outcome.stoppedReason,
564
+ });
491
565
  break;
492
566
  }
493
567
  case 'flowStep': {
@@ -509,6 +583,7 @@ class ResponseModal {
509
583
  toolCalls = result.toolCalls;
510
584
  session = result.session;
511
585
  appliedInstructions = result.appliedInstructions;
586
+ tokensUsed = result.tokensUsed;
512
587
  if (plan.outcome.step) {
513
588
  executedSteps = [{ id: plan.outcome.step.id, flowId: plan.outcome.selectedFlow.id }];
514
589
  }
@@ -532,6 +607,13 @@ class ResponseModal {
532
607
  const tail = await this.applyTurnPostPhase({
533
608
  session, context: effectiveContext, historyEvents, message, signalFirings, runPostPhase,
534
609
  });
610
+ // History ownership: with params.message the returned session carries
611
+ // the full exchange — the user turn was recorded pre-routing, the
612
+ // assistant tail lands here (post-phase, so overridden replies are the
613
+ // ones recorded). Empty tails are skipped.
614
+ if (responseContext.turnMessage && tail.message) {
615
+ tail.session.history = [...(tail.session.history ?? []), (0, index_js_1.assistantMessage)(tail.message)];
616
+ }
535
617
  return {
536
618
  message: tail.message,
537
619
  session: tail.session,
@@ -541,6 +623,8 @@ class ResponseModal {
541
623
  stoppedReason,
542
624
  appliedInstructions,
543
625
  triggeredSignals: tail.triggeredSignals,
626
+ ...(tokensUsed !== undefined ? { metadata: { tokensUsed } } : {}),
627
+ ...(endedFlows.length > 0 ? { endedFlows } : {}),
544
628
  };
545
629
  }
546
630
  /**
@@ -572,12 +656,12 @@ class ResponseModal {
572
656
  if (mergedPreDirective?.halt) {
573
657
  if (mergedPreDirective.reply) {
574
658
  // halt + reply: emit the reply as the assistant message
575
- utils_1.logger.debug(`[ResponseModal] Halt with reply — skipping LLM call for step ${nextStep.id}`);
659
+ index_js_1.logger.debug(`[ResponseModal] Halt with reply — skipping LLM call for step ${nextStep.id}`);
576
660
  return { message: mergedPreDirective.reply, session, stoppedReason: 'reply' };
577
661
  }
578
662
  else {
579
663
  // halt without reply: emit empty assistant content
580
- utils_1.logger.debug(`[ResponseModal] Halt without reply — skipping LLM call for step ${nextStep.id}`);
664
+ index_js_1.logger.debug(`[ResponseModal] Halt without reply — skipping LLM call for step ${nextStep.id}`);
581
665
  return { message: '', session, stoppedReason: 'halt' };
582
666
  }
583
667
  }
@@ -588,8 +672,8 @@ class ResponseModal {
588
672
  // the step-declared reply (last-emission-wins per Algorithm 4).
589
673
  if (nextStep.reply != null) {
590
674
  // Determine the effective reply: prepare-emitted reply wins over step-declared
591
- const effectiveReply = mergedPreDirective?.reply ?? await (0, utils_1.render)(nextStep.reply, (0, template_1.createTemplateContext)({ data: session.data || {}, context, session }));
592
- utils_1.logger.debug(`[ResponseModal] Step.reply — skipping LLM call for step ${nextStep.id}`);
675
+ const effectiveReply = mergedPreDirective?.reply ?? await (0, index_js_1.render)(nextStep.reply, (0, template_js_1.createTemplateContext)({ data: session.data || {}, context, session }));
676
+ index_js_1.logger.debug(`[ResponseModal] Step.reply — skipping LLM call for step ${nextStep.id}`);
593
677
  return { message: effectiveReply, session, stoppedReason: 'reply' };
594
678
  }
595
679
  // Transient appendage: per-turn slot from Directive.appendPrompt.
@@ -625,16 +709,23 @@ class ResponseModal {
625
709
  signal,
626
710
  parameters: responseSchema ? { jsonSchema: responseSchema, schemaName: "response_output" } : undefined,
627
711
  });
628
- let message = result.structured?.message || result.message;
629
- let toolCalls = result.structured?.toolCalls;
630
- // Debug: Log initial AI response
631
- utils_1.logger.debug(`[ResponseModal] Initial AI response:`, {
632
- hasMessage: !!message,
633
- messageLength: message?.length || 0,
634
- hasToolCalls: !!toolCalls,
635
- toolCallsCount: toolCalls?.length || 0,
636
- toolNames: toolCalls?.map(tc => tc.toolName) || [],
637
- });
712
+ let structuredData = result.structured;
713
+ let message = structuredData?.message || result.message;
714
+ const tokensUsed = result.metadata?.tokensUsed;
715
+ // A schema was requested but the provider failed to parse the model's
716
+ // JSON (truncated output, fence-wrapped fragments). Raw protocol
717
+ // fragments must never surface as the user-visible reply: attempt one
718
+ // repair-parse, and if that fails fail the turn LOUDLY so the caller's
719
+ // rollback/retry path engages instead of leaking `{"message": "…` to
720
+ // an end user. Plain prose (not JSON-shaped at all) still passes
721
+ // through — it is not a protocol fragment.
722
+ if (!structuredData && responseSchema && message && /^\s*(```|{)/.test(message)) {
723
+ const salvaged = this.salvageStructuredOutput(message, "turn");
724
+ structuredData = salvaged;
725
+ message = salvaged.message;
726
+ }
727
+ const effectiveResult = structuredData ? { ...result, structured: structuredData } : result;
728
+ let toolCalls = structuredData?.toolCalls;
638
729
  // Execute tools with unified loop handling
639
730
  const toolResult = await this.toolLoopExecutor.runLoop({
640
731
  toolCalls,
@@ -652,13 +743,19 @@ class ResponseModal {
652
743
  if (toolResult.finalMessage) {
653
744
  message = toolResult.finalMessage;
654
745
  }
746
+ // Tool-emitted directives (ctx.dispatch / `{directive}` returns):
747
+ // state writes apply now; control flow queues for the next turn's
748
+ // pendingDirective applier (same deferred semantics as dispatch()).
749
+ if (toolResult.directives) {
750
+ session = await this.applyToolEmittedDirectives(session, toolResult.directives);
751
+ }
655
752
  // Collect data from response
656
753
  // Use follow-up structured data from tool loop when available, fall back to original result
657
754
  const dataSource = toolResult.structured
658
755
  ? { structured: toolResult.structured }
659
- : result;
756
+ : effectiveResult;
660
757
  session = await this.collectDataFromResponse({ result: dataSource, selectedFlow, nextStep, session });
661
- return { message, toolCalls, session, appliedInstructions };
758
+ return { message, toolCalls, session, appliedInstructions, tokensUsed };
662
759
  }
663
760
  finally {
664
761
  // Drain the transient appendage at end of turn.
@@ -743,6 +840,13 @@ class ResponseModal {
743
840
  });
744
841
  const accumulated = tail.message;
745
842
  const delta = tail.replyOverridden ? accumulated : chunk.delta;
843
+ // History ownership (parity with the sync tail): with
844
+ // params.message the returned session carries the full
845
+ // exchange — the user turn was recorded pre-routing, the
846
+ // assistant tail lands here, BEFORE finalize persists it.
847
+ if (responseContext.turnMessage && tail.message) {
848
+ tail.session.history = [...(tail.session.history ?? []), (0, index_js_1.assistantMessage)(tail.message)];
849
+ }
746
850
  // Single streaming exit: finalize the post-phase session so
747
851
  // post-signal mutations (e.g. pendingDirective) are persisted.
748
852
  await this.sessionFinalizer.finalize(tail.session, effectiveContext);
@@ -789,7 +893,7 @@ class ResponseModal {
789
893
  * @private
790
894
  */
791
895
  async *decodeMessageStream(stream) {
792
- const decoder = new streamingMessage_1.StreamingMessageDecoder();
896
+ const decoder = new streamingMessage_js_1.StreamingMessageDecoder();
793
897
  for await (const chunk of stream) {
794
898
  const clean = decoder.push(chunk.accumulated);
795
899
  yield { ...chunk, delta: clean.delta, accumulated: clean.message };
@@ -829,7 +933,7 @@ class ResponseModal {
829
933
  if (mergedPreDirective?.halt) {
830
934
  const reply = mergedPreDirective.reply || '';
831
935
  const reason = mergedPreDirective.reply ? 'reply' : 'halt';
832
- utils_1.logger.debug(`[ResponseModal] Halt (streaming) — skipping LLM call for step ${nextStep.id}, stoppedReason: ${reason}`);
936
+ index_js_1.logger.debug(`[ResponseModal] Halt (streaming) — skipping LLM call for step ${nextStep.id}, stoppedReason: ${reason}`);
833
937
  yield {
834
938
  delta: reply,
835
939
  accumulated: reply,
@@ -845,8 +949,8 @@ class ResponseModal {
845
949
  // onEnter and prepare have already fired normally. If prepare returned
846
950
  // a Directive with `reply`, that overrides the step-declared reply.
847
951
  if (nextStep.reply != null) {
848
- const effectiveReply = mergedPreDirective?.reply ?? await (0, utils_1.render)(nextStep.reply, (0, template_1.createTemplateContext)({ data: session.data || {}, context, session }));
849
- utils_1.logger.debug(`[ResponseModal] Step.reply (streaming) — skipping LLM call for step ${nextStep.id}`);
952
+ const effectiveReply = mergedPreDirective?.reply ?? await (0, index_js_1.render)(nextStep.reply, (0, template_js_1.createTemplateContext)({ data: session.data || {}, context, session }));
953
+ index_js_1.logger.debug(`[ResponseModal] Step.reply (streaming) — skipping LLM call for step ${nextStep.id}`);
850
954
  yield {
851
955
  delta: effectiveReply,
852
956
  accumulated: effectiveReply,
@@ -922,6 +1026,14 @@ class ResponseModal {
922
1026
  });
923
1027
  session = batchResult.session;
924
1028
  toolCalls = batchResult.toolCalls;
1029
+ // Tool-emitted directives (ctx.dispatch / `{directive}`):
1030
+ // state writes apply now; control flow queues for the next
1031
+ // turn's pendingDirective applier (same deferred semantics
1032
+ // as dispatch()). A verbatim tool reply already replaced the
1033
+ // closing message inside runStreamingBatch.
1034
+ if (batchResult.directives) {
1035
+ session = await this.applyToolEmittedDirectives(session, batchResult.directives);
1036
+ }
925
1037
  // Prefer the post-tool follow-up structured for collection and
926
1038
  // emission whenever present — independent of whether a closing
927
1039
  // message was forced — matching the non-streaming path's
@@ -938,6 +1050,17 @@ class ResponseModal {
938
1050
  : batchResult.finalMessage;
939
1051
  }
940
1052
  }
1053
+ // Streaming twin of the non-streaming salvage guard: a schema was
1054
+ // requested but no structured payload arrived, and the accumulated
1055
+ // text is JSON-shaped (a protocol fragment) — repair-parse it or
1056
+ // fail the turn rather than leaking raw output to the user.
1057
+ if (chunk.done && !finalStructured && responseSchema && finalAccumulated && /^\s*(```|{)/.test(finalAccumulated)) {
1058
+ const salvaged = this.salvageStructuredOutput(finalAccumulated, "stream");
1059
+ finalStructured = salvaged;
1060
+ finalDelta = salvaged.message.startsWith(finalAccumulated)
1061
+ ? salvaged.message.slice(finalAccumulated.length)
1062
+ : salvaged.message;
1063
+ }
941
1064
  // Collect data on the final chunk for any flow step — flow
942
1065
  // required/optional fields are valid targets even without a step
943
1066
  // `collect` — preferring the post-tool follow-up structured so a
@@ -1019,16 +1142,16 @@ class ResponseModal {
1019
1142
  // Update session with validated data
1020
1143
  const updateDataMethod = this.agent.getUpdateDataMethod();
1021
1144
  updatedSession = await updateDataMethod(updatedSession, collectedData);
1022
- utils_1.logger.debug(`[ResponseModal] Collected data:`, collectedData);
1145
+ index_js_1.logger.debug(`[ResponseModal] Collected data:`, collectedData);
1023
1146
  }
1024
1147
  catch (error) {
1025
- utils_1.logger.error(`[ResponseModal] Failed to update collected data:`, error);
1148
+ index_js_1.logger.error(`[ResponseModal] Failed to update collected data:`, error);
1026
1149
  // Continue without updating data rather than failing completely
1027
1150
  }
1028
1151
  }
1029
1152
  }
1030
1153
  catch (error) {
1031
- utils_1.logger.error(`[ResponseModal] Error during data collection:`, error);
1154
+ index_js_1.logger.error(`[ResponseModal] Error during data collection:`, error);
1032
1155
  // Continue without collecting data rather than failing completely
1033
1156
  }
1034
1157
  }
@@ -1042,14 +1165,14 @@ class ResponseModal {
1042
1165
  }
1043
1166
  }
1044
1167
  catch (error) {
1045
- utils_1.logger.error(`[ResponseModal] Failed to update context from structured response:`, error);
1168
+ index_js_1.logger.error(`[ResponseModal] Failed to update context from structured response:`, error);
1046
1169
  // Continue without updating context rather than failing completely
1047
1170
  }
1048
1171
  }
1049
1172
  return updatedSession;
1050
1173
  }
1051
1174
  catch (error) {
1052
- utils_1.logger.error(`[ResponseModal] Error in collectDataFromResponse:`, error);
1175
+ index_js_1.logger.error(`[ResponseModal] Error in collectDataFromResponse:`, error);
1053
1176
  // Return original session if data collection fails completely
1054
1177
  return params.session;
1055
1178
  }
@@ -1093,7 +1216,7 @@ class ResponseModal {
1093
1216
  ...(selectedFlow.optionalFields ?? []),
1094
1217
  ]
1095
1218
  : undefined;
1096
- let nextSession = (0, utils_1.completeCurrentFlow)(session, {
1219
+ let nextSession = (0, index_js_1.completeCurrentFlow)(session, {
1097
1220
  clearOwnedFields: ownedFields,
1098
1221
  });
1099
1222
  // 3) Wire pendingDirective when onComplete returned a target.
@@ -1110,15 +1233,15 @@ class ResponseModal {
1110
1233
  goTo: targetFlow.id,
1111
1234
  },
1112
1235
  };
1113
- utils_1.logger.debug(`[ResponseModal] Flow ${selectedFlow.title} completed with pending directive to: ${targetFlow.title}`);
1236
+ index_js_1.logger.debug(`[ResponseModal] Flow ${selectedFlow.title} completed with pending directive to: ${targetFlow.title}`);
1114
1237
  }
1115
1238
  else if (goToTarget) {
1116
- utils_1.logger.warn(`[FlowConfigurationError] onComplete target not found: flow "${selectedFlow.title}" completed but onComplete target "${goToTarget}" does not match any flow. ` +
1239
+ index_js_1.logger.warn(`[FlowConfigurationError] onComplete target not found: flow "${selectedFlow.title}" completed but onComplete target "${goToTarget}" does not match any flow. ` +
1117
1240
  `Fix the onComplete value to reference an existing flow id/title, or remove onComplete to release the session to idle.`);
1118
1241
  }
1119
1242
  }
1120
1243
  else {
1121
- utils_1.logger.debug(`[ResponseModal] Flow ${selectedFlow.title} completed; session released to idle.`);
1244
+ index_js_1.logger.debug(`[ResponseModal] Flow ${selectedFlow.title} completed; session released to idle.`);
1122
1245
  }
1123
1246
  return nextSession;
1124
1247
  }
@@ -1160,7 +1283,7 @@ class ResponseModal {
1160
1283
  */
1161
1284
  async generateFallbackResponse(params) {
1162
1285
  const { history, context, session, signal } = params;
1163
- utils_1.logger.debug(`[ResponseModal] No flow selected, generating basic response`);
1286
+ index_js_1.logger.debug(`[ResponseModal] No flow selected, generating basic response`);
1164
1287
  // Build basic response prompt without flow context
1165
1288
  const { prompt: fallbackPrompt, appliedInstructions } = await this.responseEngine.buildFallbackPrompt({
1166
1289
  agentOptions: this.agent.getAgentOptions(),