@falai/agent 1.2.7 → 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 (508) 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 +1196 -1015
  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 +524 -134
  93. package/dist/cjs/core/ResponsePipeline.js.map +1 -1
  94. package/dist/cjs/core/SignalEvaluator.d.ts +86 -0
  95. package/dist/cjs/core/SignalEvaluator.d.ts.map +1 -0
  96. package/dist/cjs/core/SignalEvaluator.js +333 -0
  97. package/dist/cjs/core/SignalEvaluator.js.map +1 -0
  98. package/dist/cjs/core/SignalProcessor.d.ts +152 -0
  99. package/dist/cjs/core/SignalProcessor.d.ts.map +1 -0
  100. package/dist/cjs/core/SignalProcessor.js +562 -0
  101. package/dist/cjs/core/SignalProcessor.js.map +1 -0
  102. package/dist/cjs/core/Step.d.ts +43 -32
  103. package/dist/cjs/core/Step.d.ts.map +1 -1
  104. package/dist/cjs/core/Step.js +221 -126
  105. package/dist/cjs/core/Step.js.map +1 -1
  106. package/dist/cjs/core/StreamingToolExecutor.d.ts +2 -2
  107. package/dist/cjs/core/StreamingToolExecutor.d.ts.map +1 -1
  108. package/dist/cjs/core/StreamingToolExecutor.js.map +1 -1
  109. package/dist/cjs/core/ToolManager.d.ts +44 -13
  110. package/dist/cjs/core/ToolManager.d.ts.map +1 -1
  111. package/dist/cjs/core/ToolManager.js +174 -91
  112. package/dist/cjs/core/ToolManager.js.map +1 -1
  113. package/dist/cjs/core/createAgent.d.ts +35 -0
  114. package/dist/cjs/core/createAgent.d.ts.map +1 -0
  115. package/dist/cjs/core/createAgent.js +39 -0
  116. package/dist/cjs/core/createAgent.js.map +1 -0
  117. package/dist/cjs/core/flow-namespace.d.ts +49 -0
  118. package/dist/cjs/core/flow-namespace.d.ts.map +1 -0
  119. package/dist/cjs/core/flow-namespace.js +171 -0
  120. package/dist/cjs/core/flow-namespace.js.map +1 -0
  121. package/dist/cjs/index.d.ts +11 -14
  122. package/dist/cjs/index.d.ts.map +1 -1
  123. package/dist/cjs/index.js +18 -22
  124. package/dist/cjs/index.js.map +1 -1
  125. package/dist/cjs/providers/GeminiProvider.d.ts +3 -3
  126. package/dist/cjs/providers/GeminiProvider.d.ts.map +1 -1
  127. package/dist/cjs/providers/GeminiProvider.js +16 -14
  128. package/dist/cjs/providers/GeminiProvider.js.map +1 -1
  129. package/dist/cjs/types/agent.d.ts +183 -54
  130. package/dist/cjs/types/agent.d.ts.map +1 -1
  131. package/dist/cjs/types/agent.js +0 -6
  132. package/dist/cjs/types/agent.js.map +1 -1
  133. package/dist/cjs/types/ai.d.ts +3 -3
  134. package/dist/cjs/types/ai.d.ts.map +1 -1
  135. package/dist/cjs/types/errors.d.ts +15 -0
  136. package/dist/cjs/types/errors.d.ts.map +1 -0
  137. package/dist/cjs/types/errors.js +22 -0
  138. package/dist/cjs/types/errors.js.map +1 -0
  139. package/dist/cjs/types/flow.d.ts +513 -0
  140. package/dist/cjs/types/flow.d.ts.map +1 -0
  141. package/dist/cjs/types/{route.js → flow.js} +2 -2
  142. package/dist/cjs/types/flow.js.map +1 -0
  143. package/dist/cjs/types/index.d.ts +7 -6
  144. package/dist/cjs/types/index.d.ts.map +1 -1
  145. package/dist/cjs/types/index.js +6 -2
  146. package/dist/cjs/types/index.js.map +1 -1
  147. package/dist/cjs/types/persistence.d.ts +11 -7
  148. package/dist/cjs/types/persistence.d.ts.map +1 -1
  149. package/dist/cjs/types/routing.d.ts +1 -1
  150. package/dist/cjs/types/routing.d.ts.map +1 -1
  151. package/dist/cjs/types/session.d.ts +24 -23
  152. package/dist/cjs/types/session.d.ts.map +1 -1
  153. package/dist/cjs/types/signals.d.ts +248 -0
  154. package/dist/cjs/types/signals.d.ts.map +1 -0
  155. package/dist/cjs/types/signals.js +11 -0
  156. package/dist/cjs/types/signals.js.map +1 -0
  157. package/dist/cjs/types/template.d.ts +2 -8
  158. package/dist/cjs/types/template.d.ts.map +1 -1
  159. package/dist/cjs/types/tool.d.ts +36 -29
  160. package/dist/cjs/types/tool.d.ts.map +1 -1
  161. package/dist/cjs/types/tool.js +1 -1
  162. package/dist/cjs/types/tool.js.map +1 -1
  163. package/dist/cjs/utils/condition.d.ts +7 -1
  164. package/dist/cjs/utils/condition.d.ts.map +1 -1
  165. package/dist/cjs/utils/condition.js.map +1 -1
  166. package/dist/cjs/utils/id.d.ts +13 -5
  167. package/dist/cjs/utils/id.d.ts.map +1 -1
  168. package/dist/cjs/utils/id.js +24 -10
  169. package/dist/cjs/utils/id.js.map +1 -1
  170. package/dist/cjs/utils/index.d.ts +2 -2
  171. package/dist/cjs/utils/index.d.ts.map +1 -1
  172. package/dist/cjs/utils/index.js +7 -3
  173. package/dist/cjs/utils/index.js.map +1 -1
  174. package/dist/cjs/utils/session.d.ts +44 -5
  175. package/dist/cjs/utils/session.d.ts.map +1 -1
  176. package/dist/cjs/utils/session.js +197 -38
  177. package/dist/cjs/utils/session.js.map +1 -1
  178. package/dist/constants/index.d.ts +0 -9
  179. package/dist/constants/index.d.ts.map +1 -1
  180. package/dist/constants/index.js +3 -9
  181. package/dist/constants/index.js.map +1 -1
  182. package/dist/core/Agent.d.ts +119 -153
  183. package/dist/core/Agent.d.ts.map +1 -1
  184. package/dist/core/Agent.js +472 -325
  185. package/dist/core/Agent.js.map +1 -1
  186. package/dist/core/AutoChainExecutor.d.ts +107 -0
  187. package/dist/core/AutoChainExecutor.d.ts.map +1 -0
  188. package/dist/core/AutoChainExecutor.js +293 -0
  189. package/dist/core/AutoChainExecutor.js.map +1 -0
  190. package/dist/core/BranchEvaluator.d.ts +54 -0
  191. package/dist/core/BranchEvaluator.d.ts.map +1 -0
  192. package/dist/core/BranchEvaluator.js +126 -0
  193. package/dist/core/BranchEvaluator.js.map +1 -0
  194. package/dist/core/DirectiveBus.d.ts +88 -0
  195. package/dist/core/DirectiveBus.d.ts.map +1 -0
  196. package/dist/core/DirectiveBus.js +192 -0
  197. package/dist/core/DirectiveBus.js.map +1 -0
  198. package/dist/core/DirectiveChainTracker.d.ts +49 -0
  199. package/dist/core/DirectiveChainTracker.d.ts.map +1 -0
  200. package/dist/core/DirectiveChainTracker.js +117 -0
  201. package/dist/core/DirectiveChainTracker.js.map +1 -0
  202. package/dist/core/Flow.d.ts +186 -0
  203. package/dist/core/Flow.d.ts.map +1 -0
  204. package/dist/core/Flow.js +546 -0
  205. package/dist/core/Flow.js.map +1 -0
  206. package/dist/core/FlowRouter.d.ts +182 -0
  207. package/dist/core/FlowRouter.d.ts.map +1 -0
  208. package/dist/core/{RoutingEngine.js → FlowRouter.js} +322 -305
  209. package/dist/core/FlowRouter.js.map +1 -0
  210. package/dist/core/PersistenceManager.d.ts +2 -2
  211. package/dist/core/PersistenceManager.d.ts.map +1 -1
  212. package/dist/core/PersistenceManager.js +7 -7
  213. package/dist/core/PersistenceManager.js.map +1 -1
  214. package/dist/core/PromptComposer.d.ts +21 -8
  215. package/dist/core/PromptComposer.d.ts.map +1 -1
  216. package/dist/core/PromptComposer.js +183 -106
  217. package/dist/core/PromptComposer.js.map +1 -1
  218. package/dist/core/PromptSectionCache.d.ts +1 -1
  219. package/dist/core/PromptSectionCache.js +1 -1
  220. package/dist/core/ResponseEngine.d.ts +18 -8
  221. package/dist/core/ResponseEngine.d.ts.map +1 -1
  222. package/dist/core/ResponseEngine.js +38 -36
  223. package/dist/core/ResponseEngine.js.map +1 -1
  224. package/dist/core/ResponseModal.d.ts +73 -56
  225. package/dist/core/ResponseModal.d.ts.map +1 -1
  226. package/dist/core/ResponseModal.js +1198 -1017
  227. package/dist/core/ResponseModal.js.map +1 -1
  228. package/dist/core/ResponsePipeline.d.ts +124 -26
  229. package/dist/core/ResponsePipeline.d.ts.map +1 -1
  230. package/dist/core/ResponsePipeline.js +524 -135
  231. package/dist/core/ResponsePipeline.js.map +1 -1
  232. package/dist/core/SignalEvaluator.d.ts +86 -0
  233. package/dist/core/SignalEvaluator.d.ts.map +1 -0
  234. package/dist/core/SignalEvaluator.js +326 -0
  235. package/dist/core/SignalEvaluator.js.map +1 -0
  236. package/dist/core/SignalProcessor.d.ts +152 -0
  237. package/dist/core/SignalProcessor.d.ts.map +1 -0
  238. package/dist/core/SignalProcessor.js +555 -0
  239. package/dist/core/SignalProcessor.js.map +1 -0
  240. package/dist/core/Step.d.ts +43 -32
  241. package/dist/core/Step.d.ts.map +1 -1
  242. package/dist/core/Step.js +220 -126
  243. package/dist/core/Step.js.map +1 -1
  244. package/dist/core/StreamingToolExecutor.d.ts +2 -2
  245. package/dist/core/StreamingToolExecutor.d.ts.map +1 -1
  246. package/dist/core/StreamingToolExecutor.js.map +1 -1
  247. package/dist/core/ToolManager.d.ts +44 -13
  248. package/dist/core/ToolManager.d.ts.map +1 -1
  249. package/dist/core/ToolManager.js +174 -91
  250. package/dist/core/ToolManager.js.map +1 -1
  251. package/dist/core/createAgent.d.ts +35 -0
  252. package/dist/core/createAgent.d.ts.map +1 -0
  253. package/dist/core/createAgent.js +36 -0
  254. package/dist/core/createAgent.js.map +1 -0
  255. package/dist/core/flow-namespace.d.ts +49 -0
  256. package/dist/core/flow-namespace.d.ts.map +1 -0
  257. package/dist/core/flow-namespace.js +168 -0
  258. package/dist/core/flow-namespace.js.map +1 -0
  259. package/dist/index.d.ts +11 -14
  260. package/dist/index.d.ts.map +1 -1
  261. package/dist/index.js +9 -12
  262. package/dist/index.js.map +1 -1
  263. package/dist/providers/GeminiProvider.d.ts +3 -3
  264. package/dist/providers/GeminiProvider.d.ts.map +1 -1
  265. package/dist/providers/GeminiProvider.js +16 -14
  266. package/dist/providers/GeminiProvider.js.map +1 -1
  267. package/dist/types/agent.d.ts +183 -54
  268. package/dist/types/agent.d.ts.map +1 -1
  269. package/dist/types/agent.js +0 -6
  270. package/dist/types/agent.js.map +1 -1
  271. package/dist/types/ai.d.ts +3 -3
  272. package/dist/types/ai.d.ts.map +1 -1
  273. package/dist/types/errors.d.ts +15 -0
  274. package/dist/types/errors.d.ts.map +1 -0
  275. package/dist/types/errors.js +18 -0
  276. package/dist/types/errors.js.map +1 -0
  277. package/dist/types/flow.d.ts +513 -0
  278. package/dist/types/flow.d.ts.map +1 -0
  279. package/dist/types/flow.js +5 -0
  280. package/dist/types/flow.js.map +1 -0
  281. package/dist/types/index.d.ts +7 -6
  282. package/dist/types/index.d.ts.map +1 -1
  283. package/dist/types/index.js +4 -1
  284. package/dist/types/index.js.map +1 -1
  285. package/dist/types/persistence.d.ts +11 -7
  286. package/dist/types/persistence.d.ts.map +1 -1
  287. package/dist/types/routing.d.ts +1 -1
  288. package/dist/types/routing.d.ts.map +1 -1
  289. package/dist/types/session.d.ts +24 -23
  290. package/dist/types/session.d.ts.map +1 -1
  291. package/dist/types/signals.d.ts +248 -0
  292. package/dist/types/signals.d.ts.map +1 -0
  293. package/dist/types/signals.js +10 -0
  294. package/dist/types/signals.js.map +1 -0
  295. package/dist/types/template.d.ts +2 -8
  296. package/dist/types/template.d.ts.map +1 -1
  297. package/dist/types/tool.d.ts +36 -29
  298. package/dist/types/tool.d.ts.map +1 -1
  299. package/dist/types/tool.js +1 -1
  300. package/dist/types/tool.js.map +1 -1
  301. package/dist/utils/condition.d.ts +7 -1
  302. package/dist/utils/condition.d.ts.map +1 -1
  303. package/dist/utils/condition.js.map +1 -1
  304. package/dist/utils/id.d.ts +13 -5
  305. package/dist/utils/id.d.ts.map +1 -1
  306. package/dist/utils/id.js +22 -9
  307. package/dist/utils/id.js.map +1 -1
  308. package/dist/utils/index.d.ts +2 -2
  309. package/dist/utils/index.d.ts.map +1 -1
  310. package/dist/utils/index.js +2 -2
  311. package/dist/utils/index.js.map +1 -1
  312. package/dist/utils/session.d.ts +44 -5
  313. package/dist/utils/session.d.ts.map +1 -1
  314. package/dist/utils/session.js +193 -37
  315. package/dist/utils/session.js.map +1 -1
  316. package/docs/README.md +15 -202
  317. package/docs/concepts/architecture.md +281 -0
  318. package/docs/concepts/directives.md +400 -0
  319. package/docs/concepts/pipeline.md +399 -0
  320. package/docs/guides/branching.md +263 -0
  321. package/docs/guides/compaction.md +163 -0
  322. package/docs/guides/conditions.md +167 -0
  323. package/docs/guides/error-handling.md +176 -0
  324. package/docs/guides/flow-control.md +409 -0
  325. package/docs/guides/instructions.md +210 -0
  326. package/docs/guides/persistence.md +182 -0
  327. package/docs/guides/streaming.md +137 -0
  328. package/docs/migration/README.md +15 -0
  329. package/docs/migration/route-to-flow.md +560 -0
  330. package/docs/migration/v1-to-v2.md +909 -0
  331. package/docs/reference/adapters.md +481 -0
  332. package/docs/reference/branches.md +241 -0
  333. package/docs/reference/create-agent.md +186 -0
  334. package/docs/reference/directive.md +243 -0
  335. package/docs/reference/errors.md +122 -0
  336. package/docs/reference/flow.md +238 -0
  337. package/docs/reference/instruction.md +177 -0
  338. package/docs/reference/pre-directive.md +131 -0
  339. package/docs/reference/providers.md +227 -0
  340. package/docs/reference/signals.md +356 -0
  341. package/docs/reference/step.md +339 -0
  342. package/docs/reference/tool.md +269 -0
  343. package/docs/start/01-install.md +81 -0
  344. package/docs/start/02-first-agent.md +196 -0
  345. package/docs/start/03-collect-data.md +222 -0
  346. package/docs/start/04-add-tools.md +276 -0
  347. package/docs/start/05-go-to-production.md +216 -0
  348. package/examples/01-quickstart.ts +20 -0
  349. package/examples/02-data-extraction.ts +90 -0
  350. package/examples/03-tools.ts +136 -0
  351. package/examples/04-instructions.ts +100 -0
  352. package/examples/05-branching.ts +140 -0
  353. package/examples/06-flow-control.ts +103 -0
  354. package/examples/07-streaming.ts +69 -0
  355. package/examples/08-persistence.ts +98 -0
  356. package/examples/09-signals.ts +144 -0
  357. package/examples/tsconfig.json +30 -0
  358. package/package.json +2 -1
  359. package/src/adapters/MemoryAdapter.ts +3 -3
  360. package/src/adapters/MongoAdapter.ts +3 -3
  361. package/src/adapters/OpenSearchAdapter.ts +10 -8
  362. package/src/adapters/PostgreSQLAdapter.ts +26 -10
  363. package/src/adapters/PrismaAdapter.ts +6 -6
  364. package/src/adapters/RedisAdapter.ts +3 -3
  365. package/src/adapters/SQLiteAdapter.ts +31 -12
  366. package/src/constants/index.ts +2 -10
  367. package/src/core/Agent.ts +585 -374
  368. package/src/core/AutoChainExecutor.ts +440 -0
  369. package/src/core/BranchEvaluator.ts +167 -0
  370. package/src/core/DirectiveBus.ts +248 -0
  371. package/src/core/DirectiveChainTracker.ts +144 -0
  372. package/src/core/Flow.ts +666 -0
  373. package/src/core/{RoutingEngine.ts → FlowRouter.ts} +385 -365
  374. package/src/core/PersistenceManager.ts +8 -8
  375. package/src/core/PromptComposer.ts +209 -140
  376. package/src/core/PromptSectionCache.ts +1 -1
  377. package/src/core/ResponseEngine.ts +61 -46
  378. package/src/core/ResponseModal.ts +1458 -1241
  379. package/src/core/ResponsePipeline.ts +675 -173
  380. package/src/core/SignalEvaluator.ts +420 -0
  381. package/src/core/SignalProcessor.ts +723 -0
  382. package/src/core/Step.ts +279 -176
  383. package/src/core/StreamingToolExecutor.ts +4 -4
  384. package/src/core/ToolManager.ts +200 -97
  385. package/src/core/createAgent.ts +40 -0
  386. package/src/core/flow-namespace.ts +219 -0
  387. package/src/index.ts +42 -36
  388. package/src/providers/GeminiProvider.ts +17 -15
  389. package/src/types/agent.ts +182 -53
  390. package/src/types/ai.ts +3 -3
  391. package/src/types/errors.ts +18 -0
  392. package/src/types/flow.ts +590 -0
  393. package/src/types/index.ts +43 -16
  394. package/src/types/persistence.ts +12 -8
  395. package/src/types/routing.ts +1 -1
  396. package/src/types/session.ts +26 -23
  397. package/src/types/signals.ts +321 -0
  398. package/src/types/template.ts +3 -11
  399. package/src/types/tool.ts +50 -42
  400. package/src/utils/condition.ts +13 -4
  401. package/src/utils/id.ts +27 -9
  402. package/src/utils/index.ts +6 -2
  403. package/src/utils/session.ts +238 -42
  404. package/dist/cjs/core/BatchExecutor.d.ts +0 -359
  405. package/dist/cjs/core/BatchExecutor.d.ts.map +0 -1
  406. package/dist/cjs/core/BatchExecutor.js +0 -861
  407. package/dist/cjs/core/BatchExecutor.js.map +0 -1
  408. package/dist/cjs/core/BatchPromptBuilder.d.ts +0 -89
  409. package/dist/cjs/core/BatchPromptBuilder.d.ts.map +0 -1
  410. package/dist/cjs/core/BatchPromptBuilder.js +0 -223
  411. package/dist/cjs/core/BatchPromptBuilder.js.map +0 -1
  412. package/dist/cjs/core/Route.d.ts +0 -180
  413. package/dist/cjs/core/Route.d.ts.map +0 -1
  414. package/dist/cjs/core/Route.js +0 -542
  415. package/dist/cjs/core/Route.js.map +0 -1
  416. package/dist/cjs/core/RoutingEngine.d.ts +0 -185
  417. package/dist/cjs/core/RoutingEngine.d.ts.map +0 -1
  418. package/dist/cjs/core/RoutingEngine.js.map +0 -1
  419. package/dist/cjs/types/route.d.ts +0 -336
  420. package/dist/cjs/types/route.d.ts.map +0 -1
  421. package/dist/cjs/types/route.js.map +0 -1
  422. package/dist/core/BatchExecutor.d.ts +0 -359
  423. package/dist/core/BatchExecutor.d.ts.map +0 -1
  424. package/dist/core/BatchExecutor.js +0 -856
  425. package/dist/core/BatchExecutor.js.map +0 -1
  426. package/dist/core/BatchPromptBuilder.d.ts +0 -89
  427. package/dist/core/BatchPromptBuilder.d.ts.map +0 -1
  428. package/dist/core/BatchPromptBuilder.js +0 -219
  429. package/dist/core/BatchPromptBuilder.js.map +0 -1
  430. package/dist/core/Route.d.ts +0 -180
  431. package/dist/core/Route.d.ts.map +0 -1
  432. package/dist/core/Route.js +0 -538
  433. package/dist/core/Route.js.map +0 -1
  434. package/dist/core/RoutingEngine.d.ts +0 -185
  435. package/dist/core/RoutingEngine.d.ts.map +0 -1
  436. package/dist/core/RoutingEngine.js.map +0 -1
  437. package/dist/types/route.d.ts +0 -336
  438. package/dist/types/route.d.ts.map +0 -1
  439. package/dist/types/route.js +0 -5
  440. package/dist/types/route.js.map +0 -1
  441. package/docs/CONTRIBUTING.md +0 -521
  442. package/docs/api/README.md +0 -3299
  443. package/docs/api/overview.md +0 -1410
  444. package/docs/architecture/data-extraction-flow.md +0 -360
  445. package/docs/architecture/multi-step-execution.md +0 -277
  446. package/docs/core/agent/README.md +0 -938
  447. package/docs/core/agent/context-management.md +0 -796
  448. package/docs/core/agent/rules-and-prohibitions.md +0 -113
  449. package/docs/core/agent/session-management.md +0 -693
  450. package/docs/core/ai-integration/prompt-composition.md +0 -355
  451. package/docs/core/ai-integration/providers.md +0 -515
  452. package/docs/core/ai-integration/response-processing.md +0 -433
  453. package/docs/core/conversation-flows/data-collection.md +0 -772
  454. package/docs/core/conversation-flows/route-dsl.md +0 -509
  455. package/docs/core/conversation-flows/routes.md +0 -249
  456. package/docs/core/conversation-flows/step-transitions.md +0 -731
  457. package/docs/core/conversation-flows/steps.md +0 -268
  458. package/docs/core/error-handling.md +0 -830
  459. package/docs/core/persistence/adapters.md +0 -255
  460. package/docs/core/persistence/session-storage.md +0 -656
  461. package/docs/core/routing/intelligent-routing.md +0 -470
  462. package/docs/core/tools/enhanced-tool.md +0 -186
  463. package/docs/core/tools/streaming-execution.md +0 -161
  464. package/docs/core/tools/tool-definition.md +0 -970
  465. package/docs/core/tools/tool-scoping.md +0 -819
  466. package/docs/guides/advanced-patterns/publishing.md +0 -186
  467. package/docs/guides/context-compaction.md +0 -96
  468. package/docs/guides/error-handling-patterns.md +0 -578
  469. package/docs/guides/getting-started/README.md +0 -795
  470. package/docs/guides/migration/README.md +0 -101
  471. package/docs/guides/migration/flexible-routing-conditions.md +0 -375
  472. package/docs/guides/migration/multi-step-execution.md +0 -393
  473. package/docs/guides/migration/response-modal-refactor.md +0 -518
  474. package/docs/guides/prompt-optimization.md +0 -164
  475. package/examples/advanced-patterns/context-compaction.ts +0 -223
  476. package/examples/advanced-patterns/knowledge-based-agent.ts +0 -735
  477. package/examples/advanced-patterns/persistent-onboarding.ts +0 -728
  478. package/examples/advanced-patterns/route-lifecycle-hooks.ts +0 -556
  479. package/examples/advanced-patterns/streaming-responses.ts +0 -656
  480. package/examples/ai-providers/anthropic-integration.ts +0 -388
  481. package/examples/ai-providers/openai-integration.ts +0 -228
  482. package/examples/condition-patterns/function-only-conditions.ts +0 -365
  483. package/examples/condition-patterns/mixed-array-conditions.ts +0 -477
  484. package/examples/condition-patterns/route-skipif-patterns.ts +0 -468
  485. package/examples/condition-patterns/step-skipif-patterns.ts +0 -0
  486. package/examples/condition-patterns/string-only-conditions.ts +0 -296
  487. package/examples/conversation-flows/completion-transitions.ts +0 -318
  488. package/examples/core-concepts/basic-agent.ts +0 -503
  489. package/examples/core-concepts/modern-streaming-api.ts +0 -309
  490. package/examples/core-concepts/schema-driven-extraction.ts +0 -332
  491. package/examples/core-concepts/session-management.ts +0 -494
  492. package/examples/integrations/database-integration.ts +0 -631
  493. package/examples/integrations/healthcare-integration.ts +0 -595
  494. package/examples/integrations/search-integration.ts +0 -530
  495. package/examples/integrations/server-session-management.ts +0 -307
  496. package/examples/persistence/custom-adapter.ts +0 -526
  497. package/examples/persistence/database-persistence.ts +0 -583
  498. package/examples/persistence/memory-sessions.ts +0 -495
  499. package/examples/persistence/prisma-schema.example.prisma +0 -74
  500. package/examples/persistence/redis-persistence.ts +0 -488
  501. package/examples/tools/basic-tools.ts +0 -765
  502. package/examples/tools/data-enrichment-tools.ts +0 -593
  503. package/examples/tools/enhanced-tool-metadata.ts +0 -268
  504. package/examples/tools/streaming-tool-execution.ts +0 -283
  505. package/src/core/BatchExecutor.ts +0 -1187
  506. package/src/core/BatchPromptBuilder.ts +0 -299
  507. package/src/core/Route.ts +0 -678
  508. package/src/types/route.ts +0 -392
@@ -0,0 +1,562 @@
1
+ "use strict";
2
+ /* eslint-disable @typescript-eslint/no-explicit-any */
3
+ /**
4
+ * SignalProcessor — Orchestration for signal phase execution.
5
+ *
6
+ * Owns:
7
+ * - `behaviorAllowsExecution`: Behavior gating (Algorithm 2)
8
+ * - `recordTrigger`: Immutable session update for trigger state
9
+ * - `buildSignalContext`: Constructs the handler context (D-Q12 writers)
10
+ * - `runPhase` / `runPreSignalPhase` / `runPostSignalPhase`: Phase orchestration (Algorithm 1)
11
+ *
12
+ * @module SignalProcessor
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.SignalProcessor = void 0;
16
+ exports.behaviorAllowsExecution = behaviorAllowsExecution;
17
+ exports.recordTrigger = recordTrigger;
18
+ exports.buildSignalContext = buildSignalContext;
19
+ const history_1 = require("../types/history");
20
+ const utils_1 = require("../utils");
21
+ // ──────────────────────────────────────────────────────────────────────────────
22
+ // behaviorAllowsExecution — Algorithm 2
23
+ // ──────────────────────────────────────────────────────────────────────────────
24
+ /**
25
+ * Determines whether a signal's behavior gating allows execution this turn.
26
+ *
27
+ * Algorithm 2 from the design document:
28
+ * - `'always'` (or unset) → always allowed
29
+ * - `'once'` → allowed only if no prior trigger exists
30
+ * - `'cooldown'` → allowed when elapsed time since last trigger >= cooldownMs;
31
+ * when `cooldownMs` is missing, treated as `'always'` (misconfigured)
32
+ * - Missing trigger (first-time) → allowed regardless of behavior
33
+ *
34
+ * Pure function; no I/O.
35
+ *
36
+ * @param signal - The signal definition (with id, behavior, cooldownMs)
37
+ * @param trigger - The existing trigger state from `session.signals.triggers[signal.id]`, or undefined
38
+ * @returns true if the signal is allowed to execute
39
+ *
40
+ * @requirements 5.1, 5.2, 5.3, 5.4
41
+ */
42
+ function behaviorAllowsExecution(signal, trigger) {
43
+ // No prior trigger → always allowed (first-time execution)
44
+ if (trigger == null)
45
+ return true;
46
+ const behavior = signal.behavior ?? 'always';
47
+ if (behavior === 'always')
48
+ return true;
49
+ if (behavior === 'once')
50
+ return false;
51
+ if (behavior === 'cooldown') {
52
+ // Misconfigured: cooldown without cooldownMs → treat as 'always'
53
+ if (signal.cooldownMs == null)
54
+ return true;
55
+ const lastTriggeredTime = trigger.lastTriggeredAt instanceof Date
56
+ ? trigger.lastTriggeredAt.getTime()
57
+ : new Date(trigger.lastTriggeredAt).getTime();
58
+ const elapsedMs = Date.now() - lastTriggeredTime;
59
+ return elapsedMs >= signal.cooldownMs;
60
+ }
61
+ // Unknown behavior value → allow (defensive)
62
+ return true;
63
+ }
64
+ // ──────────────────────────────────────────────────────────────────────────────
65
+ // recordTrigger — Immutable session update
66
+ // ──────────────────────────────────────────────────────────────────────────────
67
+ /**
68
+ * Records a signal trigger on the session, returning a new session object
69
+ * (immutable update — never mutates input).
70
+ *
71
+ * - On first trigger: sets `firstTriggeredAt` and `lastTriggeredAt` to now,
72
+ * `count = 1`, plus `lastReason` and `lastPhase`.
73
+ * - On subsequent triggers: leaves `firstTriggeredAt` unchanged, increments
74
+ * `count`, updates `lastTriggeredAt`, `lastReason`, `lastPhase`.
75
+ *
76
+ * @param session - Current session state (not mutated)
77
+ * @param signal - The signal that fired
78
+ * @param reason - The match reason (AI rationale, 'code-only', or 'unconditional')
79
+ * @param phase - The phase in which the signal fired
80
+ * @returns A new session with updated `signals.triggers[signal.id]`
81
+ *
82
+ * @requirements 10.1, 10.2
83
+ */
84
+ function recordTrigger(session, signal, reason, phase) {
85
+ const signalId = signal.id ?? 'unknown';
86
+ const now = new Date();
87
+ const existingTriggers = session.signals?.triggers ?? {};
88
+ const existingTrigger = existingTriggers[signalId];
89
+ let updatedTrigger;
90
+ if (existingTrigger == null) {
91
+ // First trigger
92
+ updatedTrigger = {
93
+ firstTriggeredAt: now,
94
+ lastTriggeredAt: now,
95
+ count: 1,
96
+ lastReason: reason,
97
+ lastPhase: phase,
98
+ };
99
+ }
100
+ else {
101
+ // Subsequent trigger — preserve firstTriggeredAt, increment count
102
+ updatedTrigger = {
103
+ firstTriggeredAt: existingTrigger.firstTriggeredAt,
104
+ lastTriggeredAt: now,
105
+ count: existingTrigger.count + 1,
106
+ lastReason: reason,
107
+ lastPhase: phase,
108
+ };
109
+ }
110
+ return {
111
+ ...session,
112
+ signals: {
113
+ ...session.signals,
114
+ triggers: {
115
+ ...existingTriggers,
116
+ [signalId]: updatedTrigger,
117
+ },
118
+ },
119
+ };
120
+ }
121
+ /**
122
+ * Builds the `SignalContext` passed to signal handlers.
123
+ *
124
+ * - `updateContext` and `updateData` replicate the ToolContext D-Q12 writer
125
+ * pattern: shallow-merge partial updates into the session, call the
126
+ * `onUpdateSession` callback so the processor can track mutations.
127
+ * - `dispatch` pushes a `SignalDirective` onto the turn-local bus.
128
+ * - `lastUserMessage` is derived from the last user-role event in history.
129
+ * - `triggeredAt` is set to `new Date()` at construction time.
130
+ * - `matched` is always `true` (literal type).
131
+ *
132
+ * @requirements 6.1, 6.2, 6.3
133
+ */
134
+ function buildSignalContext(params) {
135
+ const { signal, reason, extracted, phase, session, context, history, directiveBus, onUpdateSession, } = params;
136
+ // Derive lastUserMessage from the last user-role event
137
+ const lastUserMessage = deriveLastUserMessage(history);
138
+ // D-Q12 contract writers — same signature as ToolContext
139
+ const updateContext = (updates) => {
140
+ // Context is agent-level (not on session directly). Push a contextUpdate
141
+ // directive so the pipeline applies the merge after handler returns.
142
+ directiveBus.push({ contextUpdate: updates });
143
+ return Promise.resolve();
144
+ };
145
+ const updateData = (updates) => {
146
+ const updatedData = { ...session.data, ...updates };
147
+ const updatedSession = {
148
+ ...session,
149
+ data: updatedData,
150
+ };
151
+ onUpdateSession(updatedSession);
152
+ // Also push a dataUpdate directive for the pipeline
153
+ directiveBus.push({ dataUpdate: updates });
154
+ return Promise.resolve();
155
+ };
156
+ const dispatch = (directive) => {
157
+ directiveBus.push(directive);
158
+ };
159
+ return {
160
+ signal,
161
+ phase,
162
+ matched: true,
163
+ reason,
164
+ extracted,
165
+ session,
166
+ context,
167
+ data: session.data,
168
+ history,
169
+ lastUserMessage,
170
+ triggeredAt: new Date(),
171
+ updateContext,
172
+ updateData,
173
+ dispatch,
174
+ };
175
+ }
176
+ // ──────────────────────────────────────────────────────────────────────────────
177
+ // Internal helpers
178
+ // ──────────────────────────────────────────────────────────────────────────────
179
+ /**
180
+ * Extracts the last user message from history events.
181
+ * Walks backward to find the most recent user-role message event.
182
+ */
183
+ function deriveLastUserMessage(history) {
184
+ for (let i = history.length - 1; i >= 0; i--) {
185
+ const event = history[i];
186
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
187
+ if (event.source === history_1.MessageRole.USER && event.kind === 'message') {
188
+ const data = event.data;
189
+ if (data?.message) {
190
+ return data.message;
191
+ }
192
+ }
193
+ }
194
+ return undefined;
195
+ }
196
+ /**
197
+ * SignalProcessor — Orchestrates signal phase execution.
198
+ *
199
+ * Constructed only when `options.signals` is non-empty (Requirement 2.3).
200
+ * Owns the full Algorithm 1 lifecycle: filtering, gating, evaluation,
201
+ * handler invocation, directive collection, and state persistence.
202
+ */
203
+ class SignalProcessor {
204
+ constructor(signals, provider, evaluator, options) {
205
+ this.signals = signals;
206
+ this.provider = provider;
207
+ this.evaluator = evaluator;
208
+ this.options = options;
209
+ }
210
+ /** @internal Expose internals for testability. */
211
+ get _internals() {
212
+ return { signals: this.signals, provider: this.provider, evaluator: this.evaluator, options: this.options };
213
+ }
214
+ /**
215
+ * Pre-signal phase. Delegates to `runPhase('pre', ...)`.
216
+ * Return type narrows `mergedDirective` to `PreDirective | undefined`.
217
+ */
218
+ async runPreSignalPhase(params) {
219
+ return await this.runPhase('pre', params);
220
+ }
221
+ /**
222
+ * Post-signal phase. Delegates to `runPhase('post', ...)`.
223
+ * Return type narrows `mergedDirective` to `Directive | undefined`.
224
+ * Pre-LLM-only fields (`appendPrompt`, `injectTools`, `halt`) are
225
+ * already dropped inside `runPhase` for the post phase.
226
+ */
227
+ async runPostSignalPhase(params) {
228
+ return await this.runPhase('post', params);
229
+ }
230
+ // ──────────────────────────────────────────────────────────────────────────
231
+ // Private: Algorithm 1 — Phase orchestration
232
+ // ──────────────────────────────────────────────────────────────────────────
233
+ async runPhase(phase, params) {
234
+ const { session, history, context } = params;
235
+ // ── STEP 0: zero-cost fast path ──────────────────────────────────────
236
+ if (this.signals.length === 0) {
237
+ return { firings: [], updatedSession: session };
238
+ }
239
+ // ── STEP 1: filter eligible signals for this phase ───────────────────
240
+ const eligible = this.signals.filter((s) => s.enabled !== false && (s.phase === phase || s.phase === 'both'));
241
+ if (eligible.length === 0) {
242
+ return { firings: [], updatedSession: session };
243
+ }
244
+ utils_1.logger.debug(`[Signals] Phase "${phase}" eligible signals: [${eligible.map(s => s.id ?? 'unknown').join(', ')}]`);
245
+ // ── STEP 2: filter by behavior gating ────────────────────────────────
246
+ const gated = eligible.filter((s) => behaviorAllowsExecution(s, session.signals?.triggers?.[s.id ?? 'unknown']));
247
+ if (gated.length === 0) {
248
+ return { firings: [], updatedSession: session };
249
+ }
250
+ utils_1.logger.debug(`[Signals] Phase "${phase}" after behavior gating: [${gated.map(s => s.id ?? 'unknown').join(', ')}]`);
251
+ // ── STEP 3: partition by evaluation mode ─────────────────────────────
252
+ const unconditional = [];
253
+ const codeOnly = [];
254
+ const llmConditioned = [];
255
+ for (const s of gated) {
256
+ if (s.when != null) {
257
+ llmConditioned.push(s);
258
+ }
259
+ else if (s.if != null) {
260
+ codeOnly.push(s);
261
+ }
262
+ else {
263
+ unconditional.push(s);
264
+ }
265
+ }
266
+ // Build predicate context (shared across code-only and if-gating)
267
+ const predicateCtx = {
268
+ data: session.data,
269
+ context,
270
+ session,
271
+ history,
272
+ };
273
+ // ── STEP 4: unconditional signals — always match ─────────────────────
274
+ const matched = [];
275
+ for (const s of unconditional) {
276
+ matched.push({
277
+ signal: s,
278
+ reason: 'unconditional',
279
+ declarationIndex: this.signals.indexOf(s),
280
+ });
281
+ }
282
+ // ── STEP 5: code-only signals → evaluateIf ──────────────────────────
283
+ for (const s of codeOnly) {
284
+ const passes = await this.evaluator.evaluateIf(s.if, predicateCtx);
285
+ if (passes) {
286
+ matched.push({
287
+ signal: s,
288
+ reason: 'code-only',
289
+ declarationIndex: this.signals.indexOf(s),
290
+ });
291
+ }
292
+ }
293
+ // ── STEP 6: LLM-conditioned signals ─────────────────────────────────
294
+ if (llmConditioned.length > 0) {
295
+ // Gate by `if` first to skip token cost
296
+ const ifGated = [];
297
+ for (const s of llmConditioned) {
298
+ if (s.if == null) {
299
+ ifGated.push(s);
300
+ }
301
+ else {
302
+ const passes = await this.evaluator.evaluateIf(s.if, predicateCtx);
303
+ if (passes) {
304
+ ifGated.push(s);
305
+ }
306
+ }
307
+ }
308
+ if (ifGated.length > 0) {
309
+ const classifierStart = performance.now();
310
+ const classifierResults = await this.evaluator.evaluateSignalsBatched({
311
+ signals: ifGated,
312
+ batchSize: this.options.batchSize,
313
+ session,
314
+ history,
315
+ context,
316
+ });
317
+ const classifierDurationMs = performance.now() - classifierStart;
318
+ utils_1.logger.debug(`[Signals] Phase "${phase}" classifier call duration: ${classifierDurationMs.toFixed(1)}ms for ${ifGated.length} LLM-conditioned signals`);
319
+ for (const s of ifGated) {
320
+ const id = s.id ?? 'unknown';
321
+ const result = classifierResults[id];
322
+ if (result?.matched) {
323
+ matched.push({
324
+ signal: s,
325
+ reason: result.reason ?? 'matched',
326
+ extracted: result.extracted,
327
+ declarationIndex: this.signals.indexOf(s),
328
+ });
329
+ }
330
+ }
331
+ }
332
+ }
333
+ // ── STEP 6b: unconditional + extract signals ────────────────────────
334
+ const unconditionalWithExtract = unconditional.filter((s) => s.extract != null);
335
+ if (unconditionalWithExtract.length > 0) {
336
+ const extractResults = await this.evaluator.evaluateSignals({
337
+ signals: unconditionalWithExtract,
338
+ session,
339
+ history,
340
+ context,
341
+ });
342
+ // Attach extracted data to already-matched unconditional entries
343
+ for (const s of unconditionalWithExtract) {
344
+ const id = s.id ?? 'unknown';
345
+ const entry = matched.find((m) => m.signal === s);
346
+ if (entry) {
347
+ entry.extracted = extractResults[id]?.extracted;
348
+ }
349
+ }
350
+ }
351
+ // ── STEP 7: sort by priority desc, declaration order tiebreaker ──────
352
+ matched.sort((a, b) => {
353
+ const priorityDiff = (b.signal.priority ?? 0) - (a.signal.priority ?? 0);
354
+ if (priorityDiff !== 0)
355
+ return priorityDiff;
356
+ return a.declarationIndex - b.declarationIndex;
357
+ });
358
+ // ── STEP 8: invoke handlers; collect directives; track state ─────────
359
+ const bus = [];
360
+ const firings = [];
361
+ let updatedSession = session;
362
+ for (const m of matched) {
363
+ // Turn-local directive bus for this handler (captures dispatch calls)
364
+ const handlerBus = [];
365
+ const sigCtx = buildSignalContext({
366
+ signal: m.signal,
367
+ reason: m.reason,
368
+ extracted: m.extracted,
369
+ phase,
370
+ session: updatedSession,
371
+ context,
372
+ history,
373
+ directiveBus: handlerBus,
374
+ onUpdateSession: (s) => { updatedSession = s; },
375
+ });
376
+ const start = performance.now();
377
+ try {
378
+ const handlerResult = await m.signal.handler(sigCtx);
379
+ // Collect directives from dispatch calls
380
+ for (const d of handlerBus) {
381
+ bus.push(d);
382
+ }
383
+ let resolvedDirective;
384
+ if (handlerResult != null && typeof handlerResult === 'object') {
385
+ resolvedDirective = { ...handlerResult };
386
+ // Resolve replyWith → reply
387
+ if (resolvedDirective.replyWith != null) {
388
+ if (typeof resolvedDirective.replyWith === 'function') {
389
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
390
+ resolvedDirective.reply = resolvedDirective.replyWith(sigCtx);
391
+ }
392
+ else {
393
+ resolvedDirective.reply = resolvedDirective.replyWith;
394
+ }
395
+ delete resolvedDirective.replyWith;
396
+ }
397
+ bus.push(resolvedDirective);
398
+ }
399
+ // Update session via recordTrigger
400
+ updatedSession = recordTrigger(updatedSession, m.signal, m.reason, phase);
401
+ const handlerDurationMs = performance.now() - start;
402
+ // Debug: per-handler duration and emitted directive fields
403
+ const directiveFields = resolvedDirective
404
+ ? Object.keys(resolvedDirective).filter(k => resolvedDirective[k] !== undefined)
405
+ : [];
406
+ utils_1.logger.debug(`[Signals] Phase "${phase}" handler "${m.signal.id ?? 'unknown'}" completed in ${handlerDurationMs.toFixed(1)}ms` +
407
+ (directiveFields.length > 0 ? `, directive fields: [${directiveFields.join(', ')}]` : ', no directive'));
408
+ // Record firing
409
+ firings.push({
410
+ id: m.signal.id ?? 'unknown',
411
+ phase,
412
+ reason: m.reason,
413
+ extracted: m.extracted,
414
+ directive: resolvedDirective,
415
+ durationMs: handlerDurationMs,
416
+ });
417
+ // stopOtherSignals → break iteration
418
+ if (resolvedDirective?.stopOtherSignals === true) {
419
+ break;
420
+ }
421
+ }
422
+ catch (error) {
423
+ const errorMessage = error instanceof Error ? error.message : String(error);
424
+ const handlerDurationMs = performance.now() - start;
425
+ // Handler errors logged at ERROR regardless of debug flag (Requirement 13.2)
426
+ utils_1.logger.error(`[Signals] Handler threw for signal "${m.signal.id ?? 'unknown'}": ${errorMessage}`);
427
+ // Still record trigger even on error (the signal matched)
428
+ updatedSession = recordTrigger(updatedSession, m.signal, m.reason, phase);
429
+ firings.push({
430
+ id: m.signal.id ?? 'unknown',
431
+ phase,
432
+ reason: m.reason,
433
+ handlerError: errorMessage,
434
+ durationMs: handlerDurationMs,
435
+ });
436
+ // Continue iteration — handler errors never break the turn
437
+ }
438
+ }
439
+ // ── STEP 9: merge directives ─────────────────────────────────────────
440
+ let mergedDirective;
441
+ if (bus.length > 0) {
442
+ mergedDirective = this.mergeDirectives(bus);
443
+ // For post-phase, drop pre-LLM-only fields with debug warning
444
+ if (phase === 'post') {
445
+ if (mergedDirective.appendPrompt != null) {
446
+ utils_1.logger.debug('[Signals] Dropping appendPrompt from post-phase signal directive (pre-LLM-only field)');
447
+ delete mergedDirective.appendPrompt;
448
+ }
449
+ if (mergedDirective.injectTools != null) {
450
+ utils_1.logger.debug('[Signals] Dropping injectTools from post-phase signal directive (pre-LLM-only field)');
451
+ delete mergedDirective.injectTools;
452
+ }
453
+ if (mergedDirective.halt != null) {
454
+ utils_1.logger.debug('[Signals] Dropping halt from post-phase signal directive (pre-LLM-only field)');
455
+ delete mergedDirective.halt;
456
+ }
457
+ }
458
+ // Check if merged directive is now empty after stripping
459
+ const hasFields = Object.keys(mergedDirective).length > 0;
460
+ if (!hasFields) {
461
+ mergedDirective = undefined;
462
+ }
463
+ }
464
+ return { mergedDirective, firings, updatedSession };
465
+ }
466
+ // ──────────────────────────────────────────────────────────────────────────
467
+ // Directive merging — Algorithm 4 pattern
468
+ // ──────────────────────────────────────────────────────────────────────────
469
+ /**
470
+ * Merges an array of signal directives into a single directive.
471
+ *
472
+ * Merge strategy (matches Algorithm 4 / AutoChainExecutor pattern):
473
+ * - Position fields (`goTo`, `goToStep`, `complete`, `abort`, `reset`, `halt`): last-write-wins
474
+ * - `reply`: last-write-wins
475
+ * - `appendPrompt`: array-concat
476
+ * - `injectTools`: array-concat
477
+ * - `dataUpdate`: shallow-merge (later values overwrite earlier for same key)
478
+ * - `contextUpdate`: shallow-merge
479
+ * - `stopOtherSignals`: OR (any true → true)
480
+ */
481
+ mergeDirectives(directives) {
482
+ const merged = {};
483
+ for (const d of directives) {
484
+ // Position fields — last-write-wins
485
+ if (d.goTo !== undefined) {
486
+ merged.goTo = d.goTo;
487
+ // Clear other position fields
488
+ delete merged.goToStep;
489
+ delete merged.complete;
490
+ delete merged.abort;
491
+ delete merged.reset;
492
+ }
493
+ if (d.goToStep !== undefined) {
494
+ merged.goToStep = d.goToStep;
495
+ delete merged.goTo;
496
+ delete merged.complete;
497
+ delete merged.abort;
498
+ delete merged.reset;
499
+ }
500
+ if (d.complete !== undefined) {
501
+ merged.complete = d.complete;
502
+ delete merged.goTo;
503
+ delete merged.goToStep;
504
+ delete merged.abort;
505
+ delete merged.reset;
506
+ }
507
+ if (d.abort !== undefined) {
508
+ merged.abort = d.abort;
509
+ delete merged.goTo;
510
+ delete merged.goToStep;
511
+ delete merged.complete;
512
+ delete merged.reset;
513
+ }
514
+ if (d.reset !== undefined) {
515
+ merged.reset = d.reset;
516
+ delete merged.goTo;
517
+ delete merged.goToStep;
518
+ delete merged.complete;
519
+ delete merged.abort;
520
+ }
521
+ // halt — last-write-wins
522
+ if (d.halt !== undefined) {
523
+ merged.halt = d.halt;
524
+ }
525
+ // reply — last-write-wins
526
+ if (d.reply !== undefined) {
527
+ merged.reply = d.reply;
528
+ }
529
+ // appendPrompt — array-concat
530
+ if (d.appendPrompt != null) {
531
+ merged.appendPrompt = [
532
+ ...(merged.appendPrompt ?? []),
533
+ ...d.appendPrompt,
534
+ ];
535
+ }
536
+ // injectTools — array-concat
537
+ if (d.injectTools != null) {
538
+ merged.injectTools = [
539
+ ...(merged.injectTools ?? []),
540
+ ...d.injectTools,
541
+ ];
542
+ }
543
+ // dataUpdate — shallow-merge
544
+ if (d.dataUpdate != null) {
545
+ merged.dataUpdate = {
546
+ ...(merged.dataUpdate ?? {}),
547
+ ...d.dataUpdate,
548
+ };
549
+ }
550
+ // contextUpdate — shallow-merge
551
+ if (d.contextUpdate != null) {
552
+ merged.contextUpdate = {
553
+ ...(merged.contextUpdate ?? {}),
554
+ ...d.contextUpdate,
555
+ };
556
+ }
557
+ }
558
+ return merged;
559
+ }
560
+ }
561
+ exports.SignalProcessor = SignalProcessor;
562
+ //# sourceMappingURL=SignalProcessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignalProcessor.js","sourceRoot":"","sources":["../../../src/core/SignalProcessor.ts"],"names":[],"mappings":";AAAA,uDAAuD;AACvD;;;;;;;;;;GAUG;;;AAwCH,0DA0BC;AAuBD,sCA4CC;AAoCD,gDA0DC;AA/ND,8CAAkE;AAYlE,oCAAkC;AAElC,iFAAiF;AACjF,wCAAwC;AACxC,iFAAiF;AAEjF;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAgB,uBAAuB,CACnC,MAAoC,EACpC,OAAuC;IAEvC,2DAA2D;IAC3D,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAEjC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC;IAE7C,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACvC,IAAI,QAAQ,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IAEtC,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;QAC1B,iEAAiE;QACjE,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QAE3C,MAAM,iBAAiB,GAAG,OAAO,CAAC,eAAe,YAAY,IAAI;YAC7D,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE;YACnC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,OAAO,EAAE,CAAC;QAElD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,iBAAiB,CAAC;QACjD,OAAO,SAAS,IAAI,MAAM,CAAC,UAAU,CAAC;IAC1C,CAAC;IAED,6CAA6C;IAC7C,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,iFAAiF;AACjF,2CAA2C;AAC3C,iFAAiF;AAEjF;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,aAAa,CACzB,OAA4B,EAC5B,MAA+B,EAC/B,MAAc,EACd,KAAqB;IAErB,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,IAAI,SAAS,CAAC;IACxC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IAEvB,MAAM,gBAAgB,GAAG,OAAO,CAAC,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC;IACzD,MAAM,eAAe,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAEnD,IAAI,cAAkC,CAAC;IAEvC,IAAI,eAAe,IAAI,IAAI,EAAE,CAAC;QAC1B,gBAAgB;QAChB,cAAc,GAAG;YACb,gBAAgB,EAAE,GAAG;YACrB,eAAe,EAAE,GAAG;YACpB,KAAK,EAAE,CAAC;YACR,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,KAAK;SACnB,CAAC;IACN,CAAC;SAAM,CAAC;QACJ,kEAAkE;QAClE,cAAc,GAAG;YACb,gBAAgB,EAAE,eAAe,CAAC,gBAAgB;YAClD,eAAe,EAAE,GAAG;YACpB,KAAK,EAAE,eAAe,CAAC,KAAK,GAAG,CAAC;YAChC,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,KAAK;SACnB,CAAC;IACN,CAAC;IAED,OAAO;QACH,GAAG,OAAO;QACV,OAAO,EAAE;YACL,GAAG,OAAO,CAAC,OAAO;YAClB,QAAQ,EAAE;gBACN,GAAG,gBAAgB;gBACnB,CAAC,QAAQ,CAAC,EAAE,cAAc;aAC7B;SACJ;KACJ,CAAC;AACN,CAAC;AAuBD;;;;;;;;;;;;GAYG;AACH,SAAgB,kBAAkB,CAC9B,MAA2D;IAE3D,MAAM,EACF,MAAM,EACN,MAAM,EACN,SAAS,EACT,KAAK,EACL,OAAO,EACP,OAAO,EACP,OAAO,EACP,YAAY,EACZ,eAAe,GAClB,GAAG,MAAM,CAAC;IAEX,uDAAuD;IACvD,MAAM,eAAe,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAEvD,yDAAyD;IACzD,MAAM,aAAa,GAAG,CAAC,OAA0B,EAAiB,EAAE;QAChE,yEAAyE;QACzE,qEAAqE;QACrE,YAAY,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,OAAO,EAAsC,CAAC,CAAC;QAClF,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,CAAC,OAAuB,EAAiB,EAAE;QAC1D,MAAM,WAAW,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC;QACpD,MAAM,cAAc,GAAwB;YACxC,GAAG,OAAO;YACV,IAAI,EAAE,WAAW;SACpB,CAAC;QACF,eAAe,CAAC,cAAc,CAAC,CAAC;QAChC,oDAAoD;QACpD,YAAY,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,OAAO,EAAsC,CAAC,CAAC;QAC/E,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAC,SAA2C,EAAQ,EAAE;QACnE,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC,CAAC;IAEF,OAAO;QACH,MAAM;QACN,KAAK;QACL,OAAO,EAAE,IAAI;QACb,MAAM;QACN,SAAS;QACT,OAAO;QACP,OAAO;QACP,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO;QACP,eAAe;QACf,WAAW,EAAE,IAAI,IAAI,EAAE;QACvB,aAAa;QACb,UAAU;QACV,QAAQ;KACiC,CAAC;AAClD,CAAC;AAED,iFAAiF;AACjF,mBAAmB;AACnB,iFAAiF;AAEjF;;;GAGG;AACH,SAAS,qBAAqB,CAAC,OAAgB;IAC3C,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACzB,wEAAwE;QACxE,IAAI,KAAK,CAAC,MAAM,KAAK,qBAAe,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACpE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAqE,CAAC;YACzF,IAAI,IAAI,EAAE,OAAO,EAAE,CAAC;gBAChB,OAAO,IAAI,CAAC,OAAO,CAAC;YACxB,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAeD;;;;;;GAMG;AACH,MAAa,eAAe;IACxB,YACqB,OAAuC,EACvC,QAAoB,EACpB,SAA2C,EAC3C,OAA8B;QAH9B,YAAO,GAAP,OAAO,CAAgC;QACvC,aAAQ,GAAR,QAAQ,CAAY;QACpB,cAAS,GAAT,SAAS,CAAkC;QAC3C,YAAO,GAAP,OAAO,CAAuB;IAC/C,CAAC;IAEL,kDAAkD;IAClD,IAAI,UAAU;QACV,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;IAChH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,iBAAiB,CAAC,MAIvB;QAKG,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,kBAAkB,CAAC,MAIxB;QAKG,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,6EAA6E;IAC7E,6CAA6C;IAC7C,6EAA6E;IAErE,KAAK,CAAC,QAAQ,CAClB,KAAqB,EACrB,MAA6E;QAM7E,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;QAE7C,wEAAwE;QACxE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC;QACpD,CAAC;QAED,wEAAwE;QACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAChC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAC1E,CAAC;QACF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC;QACpD,CAAC;QAED,cAAM,CAAC,KAAK,CAAC,oBAAoB,KAAK,wBAAwB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAElH,wEAAwE;QACxE,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAChC,uBAAuB,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,SAAS,CAAC,CAAC,CAC7E,CAAC;QACF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC;QACpD,CAAC;QAED,cAAM,CAAC,KAAK,CAAC,oBAAoB,KAAK,6BAA6B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEpH,wEAAwE;QACxE,MAAM,aAAa,GAAmC,EAAE,CAAC;QACzD,MAAM,QAAQ,GAAmC,EAAE,CAAC;QACpD,MAAM,cAAc,GAAmC,EAAE,CAAC;QAE1D,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACpB,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;gBACjB,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3B,CAAC;iBAAM,IAAI,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;gBACtB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACJ,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1B,CAAC;QACL,CAAC;QAED,kEAAkE;QAClE,MAAM,YAAY,GAA4C;YAC1D,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO;YACP,OAAO;YACP,OAAO;SACV,CAAC;QAEF,wEAAwE;QACxE,MAAM,OAAO,GAAoC,EAAE,CAAC;QAEpD,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC;gBACT,MAAM,EAAE,CAAC;gBACT,MAAM,EAAE,eAAe;gBACvB,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;aAC5C,CAAC,CAAC;QACP,CAAC;QAED,uEAAuE;QACvE,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,EAAG,EAAE,YAAY,CAAC,CAAC;YACpE,IAAI,MAAM,EAAE,CAAC;gBACT,OAAO,CAAC,IAAI,CAAC;oBACT,MAAM,EAAE,CAAC;oBACT,MAAM,EAAE,WAAW;oBACnB,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;iBAC5C,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QAED,uEAAuE;QACvE,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,wCAAwC;YACxC,MAAM,OAAO,GAAmC,EAAE,CAAC;YACnD,KAAK,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC;gBAC7B,IAAI,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;oBACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACpB,CAAC;qBAAM,CAAC;oBACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;oBACnE,IAAI,MAAM,EAAE,CAAC;wBACT,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACpB,CAAC;gBACL,CAAC;YACL,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;gBAC1C,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC;oBAClE,OAAO,EAAE,OAAO;oBAChB,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;oBACjC,OAAO;oBACP,OAAO;oBACP,OAAO;iBACV,CAAC,CAAC;gBACH,MAAM,oBAAoB,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,eAAe,CAAC;gBACjE,cAAM,CAAC,KAAK,CAAC,oBAAoB,KAAK,+BAA+B,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,OAAO,CAAC,MAAM,0BAA0B,CAAC,CAAC;gBAExJ,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;oBACtB,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,SAAS,CAAC;oBAC7B,MAAM,MAAM,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAC;oBACrC,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;wBAClB,OAAO,CAAC,IAAI,CAAC;4BACT,MAAM,EAAE,CAAC;4BACT,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,SAAS;4BAClC,SAAS,EAAE,MAAM,CAAC,SAAS;4BAC3B,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;yBAC5C,CAAC,CAAC;oBACP,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAED,uEAAuE;QACvE,MAAM,wBAAwB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;QAChF,IAAI,wBAAwB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;gBACxD,OAAO,EAAE,wBAAwB;gBACjC,OAAO;gBACP,OAAO;gBACP,OAAO;aACV,CAAC,CAAC;YAEH,iEAAiE;YACjE,KAAK,MAAM,CAAC,IAAI,wBAAwB,EAAE,CAAC;gBACvC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,SAAS,CAAC;gBAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;gBAClD,IAAI,KAAK,EAAE,CAAC;oBACR,KAAK,CAAC,SAAS,GAAG,cAAc,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC;gBACpD,CAAC;YACL,CAAC;QACL,CAAC;QAED,wEAAwE;QACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAClB,MAAM,YAAY,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;YACzE,IAAI,YAAY,KAAK,CAAC;gBAAE,OAAO,YAAY,CAAC;YAC5C,OAAO,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC,gBAAgB,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,wEAAwE;QACxE,MAAM,GAAG,GAAuC,EAAE,CAAC;QACnD,MAAM,OAAO,GAAoC,EAAE,CAAC;QACpD,IAAI,cAAc,GAAG,OAAO,CAAC;QAE7B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACtB,sEAAsE;YACtE,MAAM,UAAU,GAAuC,EAAE,CAAC;YAG1D,MAAM,MAAM,GAAG,kBAAkB,CAAuB;gBACpD,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,KAAK;gBACL,OAAO,EAAE,cAAc;gBACvB,OAAO;gBACP,OAAO;gBACP,YAAY,EAAE,UAAU;gBACxB,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC;aAClD,CAAC,CAAC;YAEH,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YAEhC,IAAI,CAAC;gBAED,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAErD,yCAAyC;gBACzC,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;oBACzB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChB,CAAC;gBAED,IAAI,iBAA+D,CAAC;gBAEpE,IAAI,aAAa,IAAI,IAAI,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;oBAC7D,iBAAiB,GAAG,EAAE,GAAG,aAAa,EAAsC,CAAC;oBAE7E,4BAA4B;oBAC5B,IAAI,iBAAiB,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;wBACtC,IAAI,OAAO,iBAAiB,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;4BACpD,iEAAiE;4BACjE,iBAAiB,CAAC,KAAK,GAAG,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;wBAClE,CAAC;6BAAM,CAAC;4BACJ,iBAAiB,CAAC,KAAK,GAAG,iBAAiB,CAAC,SAAS,CAAC;wBAC1D,CAAC;wBACD,OAAO,iBAAiB,CAAC,SAAS,CAAC;oBACvC,CAAC;oBAED,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAChC,CAAC;gBAED,mCAAmC;gBACnC,cAAc,GAAG,aAAa,CAAC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAE1E,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;gBAEpD,2DAA2D;gBAC3D,MAAM,eAAe,GAAG,iBAAiB;oBACrC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAmC,CAAC,KAAK,SAAS,CAAC;oBAClH,CAAC,CAAC,EAAE,CAAC;gBACT,cAAM,CAAC,KAAK,CACR,oBAAoB,KAAK,cAAc,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,SAAS,kBAAkB,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;oBACjH,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,wBAAwB,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAC1G,CAAC;gBAEF,gBAAgB;gBAChB,OAAO,CAAC,IAAI,CAAC;oBACT,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,SAAS;oBAC5B,KAAK;oBACL,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,SAAS,EAAE,CAAC,CAAC,SAAS;oBACtB,SAAS,EAAE,iBAAiB;oBAC5B,UAAU,EAAE,iBAAiB;iBAChC,CAAC,CAAC;gBAEH,qCAAqC;gBACrC,IAAI,iBAAiB,EAAE,gBAAgB,KAAK,IAAI,EAAE,CAAC;oBAC/C,MAAM;gBACV,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC5E,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;gBAEpD,6EAA6E;gBAC7E,cAAM,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,SAAS,MAAM,YAAY,EAAE,CAAC,CAAC;gBAElG,0DAA0D;gBAC1D,cAAc,GAAG,aAAa,CAAC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAE1E,OAAO,CAAC,IAAI,CAAC;oBACT,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,SAAS;oBAC5B,KAAK;oBACL,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,YAAY,EAAE,YAAY;oBAC1B,UAAU,EAAE,iBAAiB;iBAChC,CAAC,CAAC;gBAEH,2DAA2D;YAC/D,CAAC;QACL,CAAC;QAED,wEAAwE;QACxE,IAAI,eAA0D,CAAC;QAE/D,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjB,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;YAE5C,8DAA8D;YAC9D,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;gBACnB,IAAI,eAAe,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC;oBACvC,cAAM,CAAC,KAAK,CAAC,uFAAuF,CAAC,CAAC;oBACtG,OAAO,eAAe,CAAC,YAAY,CAAC;gBACxC,CAAC;gBACD,IAAI,eAAe,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC;oBACtC,cAAM,CAAC,KAAK,CAAC,sFAAsF,CAAC,CAAC;oBACrG,OAAO,eAAe,CAAC,WAAW,CAAC;gBACvC,CAAC;gBACD,IAAI,eAAe,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;oBAC/B,cAAM,CAAC,KAAK,CAAC,+EAA+E,CAAC,CAAC;oBAC9F,OAAO,eAAe,CAAC,IAAI,CAAC;gBAChC,CAAC;YACL,CAAC;YAED,yDAAyD;YACzD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YAC1D,IAAI,CAAC,SAAS,EAAE,CAAC;gBACb,eAAe,GAAG,SAAS,CAAC;YAChC,CAAC;QACL,CAAC;QAED,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;IACxD,CAAC;IAED,6EAA6E;IAC7E,0CAA0C;IAC1C,6EAA6E;IAE7E;;;;;;;;;;;OAWG;IACK,eAAe,CACnB,UAA8C;QAE9C,MAAM,MAAM,GAAkC,EAAE,CAAC;QAEjD,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YACzB,oCAAoC;YACpC,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;gBACrB,8BAA8B;gBAC9B,OAAO,MAAM,CAAC,QAAQ,CAAC;gBACvB,OAAO,MAAM,CAAC,QAAQ,CAAC;gBACvB,OAAO,MAAM,CAAC,KAAK,CAAC;gBACpB,OAAO,MAAM,CAAC,KAAK,CAAC;YACxB,CAAC;YACD,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;gBAC7B,OAAO,MAAM,CAAC,IAAI,CAAC;gBACnB,OAAO,MAAM,CAAC,QAAQ,CAAC;gBACvB,OAAO,MAAM,CAAC,KAAK,CAAC;gBACpB,OAAO,MAAM,CAAC,KAAK,CAAC;YACxB,CAAC;YACD,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;gBAC7B,OAAO,MAAM,CAAC,IAAI,CAAC;gBACnB,OAAO,MAAM,CAAC,QAAQ,CAAC;gBACvB,OAAO,MAAM,CAAC,KAAK,CAAC;gBACpB,OAAO,MAAM,CAAC,KAAK,CAAC;YACxB,CAAC;YACD,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;gBACvB,OAAO,MAAM,CAAC,IAAI,CAAC;gBACnB,OAAO,MAAM,CAAC,QAAQ,CAAC;gBACvB,OAAO,MAAM,CAAC,QAAQ,CAAC;gBACvB,OAAO,MAAM,CAAC,KAAK,CAAC;YACxB,CAAC;YACD,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;gBACvB,OAAO,MAAM,CAAC,IAAI,CAAC;gBACnB,OAAO,MAAM,CAAC,QAAQ,CAAC;gBACvB,OAAO,MAAM,CAAC,QAAQ,CAAC;gBACvB,OAAO,MAAM,CAAC,KAAK,CAAC;YACxB,CAAC;YAED,yBAAyB;YACzB,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;YACzB,CAAC;YAED,0BAA0B;YAC1B,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;YAC3B,CAAC;YAED,8BAA8B;YAC9B,IAAI,CAAC,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC;gBACzB,MAAM,CAAC,YAAY,GAAG;oBAClB,GAAG,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC;oBAC9B,GAAG,CAAC,CAAC,YAAY;iBACpB,CAAC;YACN,CAAC;YAED,6BAA6B;YAC7B,IAAI,CAAC,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC;gBACxB,MAAM,CAAC,WAAW,GAAG;oBACjB,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;oBAC7B,GAAG,CAAC,CAAC,WAAW;iBACnB,CAAC;YACN,CAAC;YAED,6BAA6B;YAC7B,IAAI,CAAC,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,CAAC,UAAU,GAAG;oBAChB,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;oBAC5B,GAAG,CAAC,CAAC,UAAU;iBAClB,CAAC;YACN,CAAC;YAED,gCAAgC;YAChC,IAAI,CAAC,CAAC,aAAa,IAAI,IAAI,EAAE,CAAC;gBAC1B,MAAM,CAAC,aAAa,GAAG;oBACnB,GAAG,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC;oBAC/B,GAAG,CAAC,CAAC,aAAa;iBACrB,CAAC;YACN,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AAxbD,0CAwbC"}