@falai/agent 3.4.5 → 4.0.0-alpha.2

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 (856) hide show
  1. package/README.md +41 -34
  2. package/dist/cjs/core/Agent.d.ts +22 -378
  3. package/dist/cjs/core/Agent.d.ts.map +1 -1
  4. package/dist/cjs/core/Agent.js +104 -1178
  5. package/dist/cjs/core/Agent.js.map +1 -1
  6. package/dist/cjs/core/CompactionEngine.d.ts.map +1 -1
  7. package/dist/cjs/core/CompactionEngine.js +5 -3
  8. package/dist/cjs/core/CompactionEngine.js.map +1 -1
  9. package/dist/cjs/core/FlowSpec.d.ts +136 -0
  10. package/dist/cjs/core/FlowSpec.d.ts.map +1 -0
  11. package/dist/cjs/core/FlowSpec.js +522 -0
  12. package/dist/cjs/core/FlowSpec.js.map +1 -0
  13. package/dist/cjs/core/Migrate.d.ts +38 -0
  14. package/dist/cjs/core/Migrate.d.ts.map +1 -0
  15. package/dist/cjs/core/Migrate.js +270 -0
  16. package/dist/cjs/core/Migrate.js.map +1 -0
  17. package/dist/cjs/core/Prompt.d.ts +54 -0
  18. package/dist/cjs/core/Prompt.d.ts.map +1 -0
  19. package/dist/cjs/core/Prompt.js +143 -0
  20. package/dist/cjs/core/Prompt.js.map +1 -0
  21. package/dist/cjs/core/Runner.d.ts +160 -0
  22. package/dist/cjs/core/Runner.d.ts.map +1 -0
  23. package/dist/cjs/core/Runner.js +1131 -0
  24. package/dist/cjs/core/Runner.js.map +1 -0
  25. package/dist/cjs/core/Speak.d.ts +37 -0
  26. package/dist/cjs/core/Speak.d.ts.map +1 -0
  27. package/dist/cjs/core/Speak.js +364 -0
  28. package/dist/cjs/core/Speak.js.map +1 -0
  29. package/dist/cjs/core/Understand.d.ts +28 -0
  30. package/dist/cjs/core/Understand.d.ts.map +1 -0
  31. package/dist/cjs/core/Understand.js +353 -0
  32. package/dist/cjs/core/Understand.js.map +1 -0
  33. package/dist/cjs/core/contracts.d.ts +122 -0
  34. package/dist/cjs/core/contracts.d.ts.map +1 -0
  35. package/dist/cjs/core/contracts.js +11 -0
  36. package/dist/cjs/core/contracts.js.map +1 -0
  37. package/dist/cjs/core/falai.d.ts +57 -0
  38. package/dist/cjs/core/falai.d.ts.map +1 -0
  39. package/dist/cjs/core/falai.js +43 -0
  40. package/dist/cjs/core/falai.js.map +1 -0
  41. package/dist/cjs/core/predicate.d.ts +9 -0
  42. package/dist/cjs/core/predicate.d.ts.map +1 -0
  43. package/dist/cjs/core/predicate.js +58 -0
  44. package/dist/cjs/core/predicate.js.map +1 -0
  45. package/dist/cjs/index.d.ts +26 -31
  46. package/dist/cjs/index.d.ts.map +1 -1
  47. package/dist/cjs/index.js +46 -68
  48. package/dist/cjs/index.js.map +1 -1
  49. package/dist/cjs/persistence/MemoryStore.d.ts +15 -0
  50. package/dist/cjs/persistence/MemoryStore.d.ts.map +1 -0
  51. package/dist/cjs/persistence/MemoryStore.js +39 -0
  52. package/dist/cjs/persistence/MemoryStore.js.map +1 -0
  53. package/dist/cjs/persistence/MongoStore.d.ts +42 -0
  54. package/dist/cjs/persistence/MongoStore.d.ts.map +1 -0
  55. package/dist/cjs/persistence/MongoStore.js +60 -0
  56. package/dist/cjs/persistence/MongoStore.js.map +1 -0
  57. package/dist/cjs/persistence/OpenSearchStore.d.ts +86 -0
  58. package/dist/cjs/persistence/OpenSearchStore.d.ts.map +1 -0
  59. package/dist/cjs/persistence/OpenSearchStore.js +120 -0
  60. package/dist/cjs/persistence/OpenSearchStore.js.map +1 -0
  61. package/dist/cjs/persistence/PostgresStore.d.ts +41 -0
  62. package/dist/cjs/persistence/PostgresStore.d.ts.map +1 -0
  63. package/dist/cjs/persistence/PostgresStore.js +58 -0
  64. package/dist/cjs/persistence/PostgresStore.js.map +1 -0
  65. package/dist/cjs/persistence/PrismaStore.d.ts +65 -0
  66. package/dist/cjs/persistence/PrismaStore.d.ts.map +1 -0
  67. package/dist/cjs/persistence/PrismaStore.js +95 -0
  68. package/dist/cjs/persistence/PrismaStore.js.map +1 -0
  69. package/dist/cjs/persistence/RedisStore.d.ts +34 -0
  70. package/dist/cjs/persistence/RedisStore.d.ts.map +1 -0
  71. package/dist/cjs/persistence/RedisStore.js +61 -0
  72. package/dist/cjs/persistence/RedisStore.js.map +1 -0
  73. package/dist/cjs/persistence/SQLiteStore.d.ts +45 -0
  74. package/dist/cjs/persistence/SQLiteStore.d.ts.map +1 -0
  75. package/dist/cjs/persistence/SQLiteStore.js +74 -0
  76. package/dist/cjs/persistence/SQLiteStore.js.map +1 -0
  77. package/dist/cjs/persistence/sessionRow.d.ts +14 -0
  78. package/dist/cjs/persistence/sessionRow.d.ts.map +1 -0
  79. package/dist/cjs/persistence/sessionRow.js +50 -0
  80. package/dist/cjs/persistence/sessionRow.js.map +1 -0
  81. package/dist/cjs/providers/DeepSeekProvider.d.ts.map +1 -1
  82. package/dist/cjs/providers/DeepSeekProvider.js +8 -3
  83. package/dist/cjs/providers/DeepSeekProvider.js.map +1 -1
  84. package/dist/cjs/providers/GeminiProvider.d.ts +4 -3
  85. package/dist/cjs/providers/GeminiProvider.d.ts.map +1 -1
  86. package/dist/cjs/providers/GeminiProvider.js +4 -3
  87. package/dist/cjs/providers/GeminiProvider.js.map +1 -1
  88. package/dist/cjs/providers/OpenAICompatibleProvider.d.ts +4 -0
  89. package/dist/cjs/providers/OpenAICompatibleProvider.d.ts.map +1 -1
  90. package/dist/cjs/providers/OpenAICompatibleProvider.js +2 -0
  91. package/dist/cjs/providers/OpenAICompatibleProvider.js.map +1 -1
  92. package/dist/cjs/providers/OpenRouterProvider.d.ts.map +1 -1
  93. package/dist/cjs/providers/OpenRouterProvider.js +2 -4
  94. package/dist/cjs/providers/OpenRouterProvider.js.map +1 -1
  95. package/dist/cjs/providers/ProviderAdapter.d.ts +11 -6
  96. package/dist/cjs/providers/ProviderAdapter.d.ts.map +1 -1
  97. package/dist/cjs/providers/ProviderAdapter.js +33 -10
  98. package/dist/cjs/providers/ProviderAdapter.js.map +1 -1
  99. package/dist/cjs/providers/ZaiProvider.d.ts +6 -4
  100. package/dist/cjs/providers/ZaiProvider.d.ts.map +1 -1
  101. package/dist/cjs/providers/ZaiProvider.js +6 -4
  102. package/dist/cjs/providers/ZaiProvider.js.map +1 -1
  103. package/dist/cjs/types/agent.d.ts +153 -383
  104. package/dist/cjs/types/agent.d.ts.map +1 -1
  105. package/dist/cjs/types/agent.js +1 -1
  106. package/dist/cjs/types/ai.d.ts +32 -1
  107. package/dist/cjs/types/ai.d.ts.map +1 -1
  108. package/dist/cjs/types/compaction.d.ts +3 -1
  109. package/dist/cjs/types/compaction.d.ts.map +1 -1
  110. package/dist/cjs/types/errors.d.ts +9 -12
  111. package/dist/cjs/types/errors.d.ts.map +1 -1
  112. package/dist/cjs/types/errors.js +14 -17
  113. package/dist/cjs/types/errors.js.map +1 -1
  114. package/dist/cjs/types/flow.d.ts +265 -513
  115. package/dist/cjs/types/flow.d.ts.map +1 -1
  116. package/dist/cjs/types/flow.js +7 -1
  117. package/dist/cjs/types/flow.js.map +1 -1
  118. package/dist/cjs/types/history.d.ts +7 -18
  119. package/dist/cjs/types/history.d.ts.map +1 -1
  120. package/dist/cjs/types/history.js.map +1 -1
  121. package/dist/cjs/types/index.d.ts +9 -15
  122. package/dist/cjs/types/index.d.ts.map +1 -1
  123. package/dist/cjs/types/index.js +4 -14
  124. package/dist/cjs/types/index.js.map +1 -1
  125. package/dist/cjs/types/session.d.ts +94 -64
  126. package/dist/cjs/types/session.d.ts.map +1 -1
  127. package/dist/cjs/types/session.js +5 -1
  128. package/dist/cjs/types/session.js.map +1 -1
  129. package/dist/cjs/types/tool.d.ts +37 -207
  130. package/dist/cjs/types/tool.d.ts.map +1 -1
  131. package/dist/cjs/types/tool.js +5 -14
  132. package/dist/cjs/types/tool.js.map +1 -1
  133. package/dist/cjs/utils/clock.d.ts +28 -0
  134. package/dist/cjs/utils/clock.d.ts.map +1 -0
  135. package/dist/cjs/utils/clock.js +64 -0
  136. package/dist/cjs/utils/clock.js.map +1 -0
  137. package/dist/cjs/utils/duration.d.ts +11 -0
  138. package/dist/cjs/utils/duration.d.ts.map +1 -0
  139. package/dist/cjs/utils/duration.js +31 -0
  140. package/dist/cjs/utils/duration.js.map +1 -0
  141. package/dist/cjs/utils/history.d.ts +4 -1
  142. package/dist/cjs/utils/history.d.ts.map +1 -1
  143. package/dist/cjs/utils/history.js +2 -2
  144. package/dist/cjs/utils/history.js.map +1 -1
  145. package/dist/cjs/utils/index.d.ts +4 -10
  146. package/dist/cjs/utils/index.d.ts.map +1 -1
  147. package/dist/cjs/utils/index.js +14 -61
  148. package/dist/cjs/utils/index.js.map +1 -1
  149. package/dist/cjs/utils/json.d.ts +2 -0
  150. package/dist/cjs/utils/json.d.ts.map +1 -1
  151. package/dist/cjs/utils/json.js +5 -0
  152. package/dist/cjs/utils/json.js.map +1 -1
  153. package/dist/cjs/utils/outcomes.d.ts +48 -0
  154. package/dist/cjs/utils/outcomes.d.ts.map +1 -0
  155. package/dist/cjs/utils/outcomes.js +51 -0
  156. package/dist/cjs/utils/outcomes.js.map +1 -0
  157. package/dist/cjs/utils/schema.d.ts +50 -0
  158. package/dist/cjs/utils/schema.d.ts.map +1 -0
  159. package/dist/cjs/utils/schema.js +138 -0
  160. package/dist/cjs/utils/schema.js.map +1 -0
  161. package/dist/cjs/utils/streamingMessage.d.ts +3 -2
  162. package/dist/cjs/utils/streamingMessage.d.ts.map +1 -1
  163. package/dist/cjs/utils/streamingMessage.js +38 -4
  164. package/dist/cjs/utils/streamingMessage.js.map +1 -1
  165. package/dist/cjs/utils/template.d.ts +13 -149
  166. package/dist/cjs/utils/template.d.ts.map +1 -1
  167. package/dist/cjs/utils/template.js +31 -363
  168. package/dist/cjs/utils/template.js.map +1 -1
  169. package/dist/cjs/utils/usage.d.ts +19 -0
  170. package/dist/cjs/utils/usage.d.ts.map +1 -0
  171. package/dist/cjs/utils/usage.js +35 -0
  172. package/dist/cjs/utils/usage.js.map +1 -0
  173. package/dist/core/Agent.d.ts +22 -378
  174. package/dist/core/Agent.d.ts.map +1 -1
  175. package/dist/core/Agent.js +107 -1181
  176. package/dist/core/Agent.js.map +1 -1
  177. package/dist/core/CompactionEngine.d.ts.map +1 -1
  178. package/dist/core/CompactionEngine.js +5 -3
  179. package/dist/core/CompactionEngine.js.map +1 -1
  180. package/dist/core/FlowSpec.d.ts +136 -0
  181. package/dist/core/FlowSpec.d.ts.map +1 -0
  182. package/dist/core/FlowSpec.js +516 -0
  183. package/dist/core/FlowSpec.js.map +1 -0
  184. package/dist/core/Migrate.d.ts +38 -0
  185. package/dist/core/Migrate.d.ts.map +1 -0
  186. package/dist/core/Migrate.js +264 -0
  187. package/dist/core/Migrate.js.map +1 -0
  188. package/dist/core/Prompt.d.ts +54 -0
  189. package/dist/core/Prompt.d.ts.map +1 -0
  190. package/dist/core/Prompt.js +133 -0
  191. package/dist/core/Prompt.js.map +1 -0
  192. package/dist/core/Runner.d.ts +160 -0
  193. package/dist/core/Runner.d.ts.map +1 -0
  194. package/dist/core/Runner.js +1127 -0
  195. package/dist/core/Runner.js.map +1 -0
  196. package/dist/core/Speak.d.ts +37 -0
  197. package/dist/core/Speak.d.ts.map +1 -0
  198. package/dist/core/Speak.js +360 -0
  199. package/dist/core/Speak.js.map +1 -0
  200. package/dist/core/Understand.d.ts +28 -0
  201. package/dist/core/Understand.d.ts.map +1 -0
  202. package/dist/core/Understand.js +349 -0
  203. package/dist/core/Understand.js.map +1 -0
  204. package/dist/core/contracts.d.ts +122 -0
  205. package/dist/core/contracts.d.ts.map +1 -0
  206. package/dist/core/contracts.js +10 -0
  207. package/dist/core/contracts.js.map +1 -0
  208. package/dist/core/falai.d.ts +57 -0
  209. package/dist/core/falai.d.ts.map +1 -0
  210. package/dist/core/falai.js +40 -0
  211. package/dist/core/falai.js.map +1 -0
  212. package/dist/core/predicate.d.ts +9 -0
  213. package/dist/core/predicate.d.ts.map +1 -0
  214. package/dist/core/predicate.js +54 -0
  215. package/dist/core/predicate.js.map +1 -0
  216. package/dist/index.d.ts +26 -31
  217. package/dist/index.d.ts.map +1 -1
  218. package/dist/index.js +19 -24
  219. package/dist/index.js.map +1 -1
  220. package/dist/persistence/MemoryStore.d.ts +15 -0
  221. package/dist/persistence/MemoryStore.d.ts.map +1 -0
  222. package/dist/persistence/MemoryStore.js +35 -0
  223. package/dist/persistence/MemoryStore.js.map +1 -0
  224. package/dist/persistence/MongoStore.d.ts +42 -0
  225. package/dist/persistence/MongoStore.d.ts.map +1 -0
  226. package/dist/persistence/MongoStore.js +56 -0
  227. package/dist/persistence/MongoStore.js.map +1 -0
  228. package/dist/persistence/OpenSearchStore.d.ts +86 -0
  229. package/dist/persistence/OpenSearchStore.d.ts.map +1 -0
  230. package/dist/persistence/OpenSearchStore.js +116 -0
  231. package/dist/persistence/OpenSearchStore.js.map +1 -0
  232. package/dist/persistence/PostgresStore.d.ts +41 -0
  233. package/dist/persistence/PostgresStore.d.ts.map +1 -0
  234. package/dist/persistence/PostgresStore.js +54 -0
  235. package/dist/persistence/PostgresStore.js.map +1 -0
  236. package/dist/persistence/PrismaStore.d.ts +65 -0
  237. package/dist/persistence/PrismaStore.d.ts.map +1 -0
  238. package/dist/persistence/PrismaStore.js +91 -0
  239. package/dist/persistence/PrismaStore.js.map +1 -0
  240. package/dist/persistence/RedisStore.d.ts +34 -0
  241. package/dist/persistence/RedisStore.d.ts.map +1 -0
  242. package/dist/persistence/RedisStore.js +57 -0
  243. package/dist/persistence/RedisStore.js.map +1 -0
  244. package/dist/persistence/SQLiteStore.d.ts +45 -0
  245. package/dist/persistence/SQLiteStore.d.ts.map +1 -0
  246. package/dist/persistence/SQLiteStore.js +70 -0
  247. package/dist/persistence/SQLiteStore.js.map +1 -0
  248. package/dist/persistence/sessionRow.d.ts +14 -0
  249. package/dist/persistence/sessionRow.d.ts.map +1 -0
  250. package/dist/persistence/sessionRow.js +45 -0
  251. package/dist/persistence/sessionRow.js.map +1 -0
  252. package/dist/providers/DeepSeekProvider.d.ts.map +1 -1
  253. package/dist/providers/DeepSeekProvider.js +8 -3
  254. package/dist/providers/DeepSeekProvider.js.map +1 -1
  255. package/dist/providers/GeminiProvider.d.ts +4 -3
  256. package/dist/providers/GeminiProvider.d.ts.map +1 -1
  257. package/dist/providers/GeminiProvider.js +4 -3
  258. package/dist/providers/GeminiProvider.js.map +1 -1
  259. package/dist/providers/OpenAICompatibleProvider.d.ts +4 -0
  260. package/dist/providers/OpenAICompatibleProvider.d.ts.map +1 -1
  261. package/dist/providers/OpenAICompatibleProvider.js +2 -0
  262. package/dist/providers/OpenAICompatibleProvider.js.map +1 -1
  263. package/dist/providers/OpenRouterProvider.d.ts.map +1 -1
  264. package/dist/providers/OpenRouterProvider.js +2 -4
  265. package/dist/providers/OpenRouterProvider.js.map +1 -1
  266. package/dist/providers/ProviderAdapter.d.ts +11 -6
  267. package/dist/providers/ProviderAdapter.d.ts.map +1 -1
  268. package/dist/providers/ProviderAdapter.js +34 -11
  269. package/dist/providers/ProviderAdapter.js.map +1 -1
  270. package/dist/providers/ZaiProvider.d.ts +6 -4
  271. package/dist/providers/ZaiProvider.d.ts.map +1 -1
  272. package/dist/providers/ZaiProvider.js +6 -4
  273. package/dist/providers/ZaiProvider.js.map +1 -1
  274. package/dist/types/agent.d.ts +153 -383
  275. package/dist/types/agent.d.ts.map +1 -1
  276. package/dist/types/agent.js +1 -1
  277. package/dist/types/ai.d.ts +32 -1
  278. package/dist/types/ai.d.ts.map +1 -1
  279. package/dist/types/compaction.d.ts +3 -1
  280. package/dist/types/compaction.d.ts.map +1 -1
  281. package/dist/types/errors.d.ts +9 -12
  282. package/dist/types/errors.d.ts.map +1 -1
  283. package/dist/types/errors.js +12 -15
  284. package/dist/types/errors.js.map +1 -1
  285. package/dist/types/flow.d.ts +265 -513
  286. package/dist/types/flow.d.ts.map +1 -1
  287. package/dist/types/flow.js +7 -1
  288. package/dist/types/flow.js.map +1 -1
  289. package/dist/types/history.d.ts +7 -18
  290. package/dist/types/history.d.ts.map +1 -1
  291. package/dist/types/history.js.map +1 -1
  292. package/dist/types/index.d.ts +9 -15
  293. package/dist/types/index.d.ts.map +1 -1
  294. package/dist/types/index.js +2 -7
  295. package/dist/types/index.js.map +1 -1
  296. package/dist/types/session.d.ts +94 -64
  297. package/dist/types/session.d.ts.map +1 -1
  298. package/dist/types/session.js +5 -1
  299. package/dist/types/session.js.map +1 -1
  300. package/dist/types/tool.d.ts +37 -207
  301. package/dist/types/tool.d.ts.map +1 -1
  302. package/dist/types/tool.js +6 -13
  303. package/dist/types/tool.js.map +1 -1
  304. package/dist/utils/clock.d.ts +28 -0
  305. package/dist/utils/clock.d.ts.map +1 -0
  306. package/dist/utils/clock.js +59 -0
  307. package/dist/utils/clock.js.map +1 -0
  308. package/dist/utils/duration.d.ts +11 -0
  309. package/dist/utils/duration.d.ts.map +1 -0
  310. package/dist/utils/duration.js +26 -0
  311. package/dist/utils/duration.js.map +1 -0
  312. package/dist/utils/history.d.ts +4 -1
  313. package/dist/utils/history.d.ts.map +1 -1
  314. package/dist/utils/history.js +2 -2
  315. package/dist/utils/history.js.map +1 -1
  316. package/dist/utils/index.d.ts +4 -10
  317. package/dist/utils/index.d.ts.map +1 -1
  318. package/dist/utils/index.js +4 -21
  319. package/dist/utils/index.js.map +1 -1
  320. package/dist/utils/json.d.ts +2 -0
  321. package/dist/utils/json.d.ts.map +1 -1
  322. package/dist/utils/json.js +4 -0
  323. package/dist/utils/json.js.map +1 -1
  324. package/dist/utils/outcomes.d.ts +48 -0
  325. package/dist/utils/outcomes.d.ts.map +1 -0
  326. package/dist/utils/outcomes.js +48 -0
  327. package/dist/utils/outcomes.js.map +1 -0
  328. package/dist/utils/schema.d.ts +50 -0
  329. package/dist/utils/schema.d.ts.map +1 -0
  330. package/dist/utils/schema.js +129 -0
  331. package/dist/utils/schema.js.map +1 -0
  332. package/dist/utils/streamingMessage.d.ts +3 -2
  333. package/dist/utils/streamingMessage.d.ts.map +1 -1
  334. package/dist/utils/streamingMessage.js +38 -4
  335. package/dist/utils/streamingMessage.js.map +1 -1
  336. package/dist/utils/template.d.ts +13 -149
  337. package/dist/utils/template.d.ts.map +1 -1
  338. package/dist/utils/template.js +28 -355
  339. package/dist/utils/template.js.map +1 -1
  340. package/dist/utils/usage.d.ts +19 -0
  341. package/dist/utils/usage.d.ts.map +1 -0
  342. package/dist/utils/usage.js +31 -0
  343. package/dist/utils/usage.js.map +1 -0
  344. package/docs/README.md +37 -19
  345. package/docs/concepts/architecture.md +117 -239
  346. package/docs/concepts/collection.md +170 -0
  347. package/docs/concepts/pipeline.md +132 -378
  348. package/docs/concepts/runs-and-waits.md +192 -0
  349. package/docs/guides/actions-and-events.md +276 -0
  350. package/docs/guides/branching.md +119 -208
  351. package/docs/guides/compaction.md +63 -158
  352. package/docs/guides/conditions.md +164 -128
  353. package/docs/guides/error-handling.md +168 -164
  354. package/docs/guides/flow-control.md +210 -349
  355. package/docs/guides/flows-from-json.md +224 -0
  356. package/docs/guides/instructions.md +125 -161
  357. package/docs/guides/persistence.md +182 -206
  358. package/docs/guides/streaming.md +50 -114
  359. package/docs/guides/testing.md +284 -0
  360. package/docs/guides/triggers.md +401 -0
  361. package/docs/migration/README.md +8 -15
  362. package/docs/migration/v1-to-v2.md +1 -1
  363. package/docs/migration/v2-3-to-v2-4.md +2 -2
  364. package/docs/migration/v2-6-to-v2-7.md +4 -4
  365. package/docs/migration/v3-to-v4.md +452 -0
  366. package/docs/reference/actions-events-conditions.md +396 -0
  367. package/docs/reference/agent.md +244 -0
  368. package/docs/reference/branches.md +75 -203
  369. package/docs/reference/errors.md +188 -144
  370. package/docs/reference/fields.md +125 -0
  371. package/docs/reference/flow-spec.md +248 -0
  372. package/docs/reference/flow.md +104 -192
  373. package/docs/reference/instruction.md +83 -137
  374. package/docs/reference/outcomes.md +273 -0
  375. package/docs/reference/providers.md +525 -302
  376. package/docs/reference/session.md +210 -0
  377. package/docs/reference/step.md +194 -312
  378. package/docs/reference/stores.md +496 -0
  379. package/docs/reference/tool.md +162 -231
  380. package/docs/reference/trigger.md +180 -0
  381. package/docs/rfc/v4-one-flow.md +477 -0
  382. package/docs/start/01-install.md +59 -44
  383. package/docs/start/02-first-agent.md +97 -147
  384. package/docs/start/03-collect-data.md +78 -183
  385. package/docs/start/04-add-tools.md +159 -227
  386. package/docs/start/05-go-to-production.md +167 -164
  387. package/examples/01-quickstart.ts +26 -16
  388. package/examples/02-fields.ts +75 -0
  389. package/examples/03-tools.ts +79 -119
  390. package/examples/04-instructions.ts +60 -87
  391. package/examples/05-branches.ts +78 -0
  392. package/examples/06-triggers-and-waits.ts +148 -0
  393. package/examples/07-streaming.ts +34 -60
  394. package/examples/08-store-and-migration.ts +97 -0
  395. package/examples/09-flows-from-json.ts +107 -0
  396. package/package.json +9 -6
  397. package/src/core/Agent.ts +116 -1512
  398. package/src/core/CompactionEngine.ts +7 -4
  399. package/src/core/FlowSpec.ts +712 -0
  400. package/src/core/Migrate.ts +256 -0
  401. package/src/core/Prompt.ts +156 -0
  402. package/src/core/Runner.ts +1181 -0
  403. package/src/core/Speak.ts +451 -0
  404. package/src/core/Understand.ts +422 -0
  405. package/src/core/contracts.ts +111 -0
  406. package/src/core/falai.ts +86 -0
  407. package/src/core/predicate.ts +56 -0
  408. package/src/index.ts +119 -147
  409. package/src/persistence/MemoryStore.ts +37 -0
  410. package/src/persistence/MongoStore.ts +89 -0
  411. package/src/persistence/OpenSearchStore.ts +153 -0
  412. package/src/persistence/PostgresStore.ts +89 -0
  413. package/src/persistence/PrismaStore.ts +127 -0
  414. package/src/persistence/RedisStore.ts +90 -0
  415. package/src/persistence/SQLiteStore.ts +103 -0
  416. package/src/persistence/sessionRow.ts +45 -0
  417. package/src/providers/DeepSeekProvider.ts +8 -3
  418. package/src/providers/GeminiProvider.ts +4 -3
  419. package/src/providers/OpenAICompatibleProvider.ts +6 -0
  420. package/src/providers/OpenRouterProvider.ts +2 -4
  421. package/src/providers/ProviderAdapter.ts +46 -13
  422. package/src/providers/ZaiProvider.ts +6 -4
  423. package/src/types/agent.ts +124 -397
  424. package/src/types/ai.ts +33 -1
  425. package/src/types/compaction.ts +3 -1
  426. package/src/types/errors.ts +13 -16
  427. package/src/types/flow.ts +249 -550
  428. package/src/types/history.ts +7 -20
  429. package/src/types/index.ts +87 -139
  430. package/src/types/session.ts +135 -70
  431. package/src/types/tool.ts +42 -267
  432. package/src/utils/clock.ts +70 -0
  433. package/src/utils/duration.ts +33 -0
  434. package/src/utils/history.ts +3 -2
  435. package/src/utils/index.ts +8 -66
  436. package/src/utils/json.ts +5 -0
  437. package/src/utils/outcomes.ts +56 -0
  438. package/src/utils/schema.ts +145 -0
  439. package/src/utils/streamingMessage.ts +34 -4
  440. package/src/utils/template.ts +32 -423
  441. package/src/utils/usage.ts +37 -0
  442. package/dist/adapters/MemoryAdapter.d.ts +0 -47
  443. package/dist/adapters/MemoryAdapter.d.ts.map +0 -1
  444. package/dist/adapters/MemoryAdapter.js +0 -204
  445. package/dist/adapters/MemoryAdapter.js.map +0 -1
  446. package/dist/adapters/MongoAdapter.d.ts +0 -97
  447. package/dist/adapters/MongoAdapter.d.ts.map +0 -1
  448. package/dist/adapters/MongoAdapter.js +0 -196
  449. package/dist/adapters/MongoAdapter.js.map +0 -1
  450. package/dist/adapters/OpenSearchAdapter.d.ts +0 -169
  451. package/dist/adapters/OpenSearchAdapter.d.ts.map +0 -1
  452. package/dist/adapters/OpenSearchAdapter.js +0 -471
  453. package/dist/adapters/OpenSearchAdapter.js.map +0 -1
  454. package/dist/adapters/PostgreSQLAdapter.d.ts +0 -85
  455. package/dist/adapters/PostgreSQLAdapter.d.ts.map +0 -1
  456. package/dist/adapters/PostgreSQLAdapter.js +0 -308
  457. package/dist/adapters/PostgreSQLAdapter.js.map +0 -1
  458. package/dist/adapters/PrismaAdapter.d.ts +0 -115
  459. package/dist/adapters/PrismaAdapter.d.ts.map +0 -1
  460. package/dist/adapters/PrismaAdapter.js +0 -406
  461. package/dist/adapters/PrismaAdapter.js.map +0 -1
  462. package/dist/adapters/RedisAdapter.d.ts +0 -72
  463. package/dist/adapters/RedisAdapter.d.ts.map +0 -1
  464. package/dist/adapters/RedisAdapter.js +0 -286
  465. package/dist/adapters/RedisAdapter.js.map +0 -1
  466. package/dist/adapters/SQLiteAdapter.d.ts +0 -86
  467. package/dist/adapters/SQLiteAdapter.d.ts.map +0 -1
  468. package/dist/adapters/SQLiteAdapter.js +0 -337
  469. package/dist/adapters/SQLiteAdapter.js.map +0 -1
  470. package/dist/adapters/index.d.ts +0 -17
  471. package/dist/adapters/index.d.ts.map +0 -1
  472. package/dist/adapters/index.js +0 -11
  473. package/dist/adapters/index.js.map +0 -1
  474. package/dist/adapters/sessionRow.d.ts +0 -22
  475. package/dist/adapters/sessionRow.d.ts.map +0 -1
  476. package/dist/adapters/sessionRow.js +0 -48
  477. package/dist/adapters/sessionRow.js.map +0 -1
  478. package/dist/cjs/adapters/MemoryAdapter.d.ts +0 -47
  479. package/dist/cjs/adapters/MemoryAdapter.d.ts.map +0 -1
  480. package/dist/cjs/adapters/MemoryAdapter.js +0 -208
  481. package/dist/cjs/adapters/MemoryAdapter.js.map +0 -1
  482. package/dist/cjs/adapters/MongoAdapter.d.ts +0 -97
  483. package/dist/cjs/adapters/MongoAdapter.d.ts.map +0 -1
  484. package/dist/cjs/adapters/MongoAdapter.js +0 -200
  485. package/dist/cjs/adapters/MongoAdapter.js.map +0 -1
  486. package/dist/cjs/adapters/OpenSearchAdapter.d.ts +0 -169
  487. package/dist/cjs/adapters/OpenSearchAdapter.d.ts.map +0 -1
  488. package/dist/cjs/adapters/OpenSearchAdapter.js +0 -475
  489. package/dist/cjs/adapters/OpenSearchAdapter.js.map +0 -1
  490. package/dist/cjs/adapters/PostgreSQLAdapter.d.ts +0 -85
  491. package/dist/cjs/adapters/PostgreSQLAdapter.d.ts.map +0 -1
  492. package/dist/cjs/adapters/PostgreSQLAdapter.js +0 -312
  493. package/dist/cjs/adapters/PostgreSQLAdapter.js.map +0 -1
  494. package/dist/cjs/adapters/PrismaAdapter.d.ts +0 -115
  495. package/dist/cjs/adapters/PrismaAdapter.d.ts.map +0 -1
  496. package/dist/cjs/adapters/PrismaAdapter.js +0 -410
  497. package/dist/cjs/adapters/PrismaAdapter.js.map +0 -1
  498. package/dist/cjs/adapters/RedisAdapter.d.ts +0 -72
  499. package/dist/cjs/adapters/RedisAdapter.d.ts.map +0 -1
  500. package/dist/cjs/adapters/RedisAdapter.js +0 -290
  501. package/dist/cjs/adapters/RedisAdapter.js.map +0 -1
  502. package/dist/cjs/adapters/SQLiteAdapter.d.ts +0 -86
  503. package/dist/cjs/adapters/SQLiteAdapter.d.ts.map +0 -1
  504. package/dist/cjs/adapters/SQLiteAdapter.js +0 -341
  505. package/dist/cjs/adapters/SQLiteAdapter.js.map +0 -1
  506. package/dist/cjs/adapters/index.d.ts +0 -17
  507. package/dist/cjs/adapters/index.d.ts.map +0 -1
  508. package/dist/cjs/adapters/index.js +0 -21
  509. package/dist/cjs/adapters/index.js.map +0 -1
  510. package/dist/cjs/adapters/sessionRow.d.ts +0 -22
  511. package/dist/cjs/adapters/sessionRow.d.ts.map +0 -1
  512. package/dist/cjs/adapters/sessionRow.js +0 -52
  513. package/dist/cjs/adapters/sessionRow.js.map +0 -1
  514. package/dist/cjs/constants/index.d.ts +0 -1
  515. package/dist/cjs/constants/index.d.ts.map +0 -1
  516. package/dist/cjs/constants/index.js +0 -4
  517. package/dist/cjs/constants/index.js.map +0 -1
  518. package/dist/cjs/core/AutoChainExecutor.d.ts +0 -97
  519. package/dist/cjs/core/AutoChainExecutor.d.ts.map +0 -1
  520. package/dist/cjs/core/AutoChainExecutor.js +0 -288
  521. package/dist/cjs/core/AutoChainExecutor.js.map +0 -1
  522. package/dist/cjs/core/BranchEvaluator.d.ts +0 -55
  523. package/dist/cjs/core/BranchEvaluator.d.ts.map +0 -1
  524. package/dist/cjs/core/BranchEvaluator.js +0 -125
  525. package/dist/cjs/core/BranchEvaluator.js.map +0 -1
  526. package/dist/cjs/core/DirectiveChainTracker.d.ts +0 -49
  527. package/dist/cjs/core/DirectiveChainTracker.d.ts.map +0 -1
  528. package/dist/cjs/core/DirectiveChainTracker.js +0 -121
  529. package/dist/cjs/core/DirectiveChainTracker.js.map +0 -1
  530. package/dist/cjs/core/Events.d.ts +0 -26
  531. package/dist/cjs/core/Events.d.ts.map +0 -1
  532. package/dist/cjs/core/Events.js +0 -144
  533. package/dist/cjs/core/Events.js.map +0 -1
  534. package/dist/cjs/core/Flow.d.ts +0 -183
  535. package/dist/cjs/core/Flow.d.ts.map +0 -1
  536. package/dist/cjs/core/Flow.js +0 -551
  537. package/dist/cjs/core/Flow.js.map +0 -1
  538. package/dist/cjs/core/FlowRouter.d.ts +0 -183
  539. package/dist/cjs/core/FlowRouter.d.ts.map +0 -1
  540. package/dist/cjs/core/FlowRouter.js +0 -1047
  541. package/dist/cjs/core/FlowRouter.js.map +0 -1
  542. package/dist/cjs/core/PersistenceManager.d.ts +0 -114
  543. package/dist/cjs/core/PersistenceManager.d.ts.map +0 -1
  544. package/dist/cjs/core/PersistenceManager.js +0 -336
  545. package/dist/cjs/core/PersistenceManager.js.map +0 -1
  546. package/dist/cjs/core/PromptComposer.d.ts +0 -47
  547. package/dist/cjs/core/PromptComposer.d.ts.map +0 -1
  548. package/dist/cjs/core/PromptComposer.js +0 -397
  549. package/dist/cjs/core/PromptComposer.js.map +0 -1
  550. package/dist/cjs/core/PromptSectionCache.d.ts +0 -48
  551. package/dist/cjs/core/PromptSectionCache.d.ts.map +0 -1
  552. package/dist/cjs/core/PromptSectionCache.js +0 -108
  553. package/dist/cjs/core/PromptSectionCache.js.map +0 -1
  554. package/dist/cjs/core/ResponseEngine.d.ts +0 -43
  555. package/dist/cjs/core/ResponseEngine.d.ts.map +0 -1
  556. package/dist/cjs/core/ResponseEngine.js +0 -235
  557. package/dist/cjs/core/ResponseEngine.js.map +0 -1
  558. package/dist/cjs/core/ResponseGenerationError.d.ts +0 -30
  559. package/dist/cjs/core/ResponseGenerationError.d.ts.map +0 -1
  560. package/dist/cjs/core/ResponseGenerationError.js +0 -35
  561. package/dist/cjs/core/ResponseGenerationError.js.map +0 -1
  562. package/dist/cjs/core/ResponseModal.d.ts +0 -305
  563. package/dist/cjs/core/ResponseModal.d.ts.map +0 -1
  564. package/dist/cjs/core/ResponseModal.js +0 -1414
  565. package/dist/cjs/core/ResponseModal.js.map +0 -1
  566. package/dist/cjs/core/ResponsePipeline.d.ts +0 -220
  567. package/dist/cjs/core/ResponsePipeline.d.ts.map +0 -1
  568. package/dist/cjs/core/ResponsePipeline.js +0 -1040
  569. package/dist/cjs/core/ResponsePipeline.js.map +0 -1
  570. package/dist/cjs/core/SessionFinalizer.d.ts +0 -34
  571. package/dist/cjs/core/SessionFinalizer.d.ts.map +0 -1
  572. package/dist/cjs/core/SessionFinalizer.js +0 -88
  573. package/dist/cjs/core/SessionFinalizer.js.map +0 -1
  574. package/dist/cjs/core/SessionManager.d.ts +0 -112
  575. package/dist/cjs/core/SessionManager.d.ts.map +0 -1
  576. package/dist/cjs/core/SessionManager.js +0 -308
  577. package/dist/cjs/core/SessionManager.js.map +0 -1
  578. package/dist/cjs/core/SignalCoordinator.d.ts +0 -103
  579. package/dist/cjs/core/SignalCoordinator.d.ts.map +0 -1
  580. package/dist/cjs/core/SignalCoordinator.js +0 -207
  581. package/dist/cjs/core/SignalCoordinator.js.map +0 -1
  582. package/dist/cjs/core/SignalEvaluator.d.ts +0 -86
  583. package/dist/cjs/core/SignalEvaluator.d.ts.map +0 -1
  584. package/dist/cjs/core/SignalEvaluator.js +0 -319
  585. package/dist/cjs/core/SignalEvaluator.js.map +0 -1
  586. package/dist/cjs/core/SignalProcessor.d.ts +0 -152
  587. package/dist/cjs/core/SignalProcessor.d.ts.map +0 -1
  588. package/dist/cjs/core/SignalProcessor.js +0 -505
  589. package/dist/cjs/core/SignalProcessor.js.map +0 -1
  590. package/dist/cjs/core/Step.d.ts +0 -184
  591. package/dist/cjs/core/Step.d.ts.map +0 -1
  592. package/dist/cjs/core/Step.js +0 -599
  593. package/dist/cjs/core/Step.js.map +0 -1
  594. package/dist/cjs/core/StepLifecycle.d.ts +0 -43
  595. package/dist/cjs/core/StepLifecycle.d.ts.map +0 -1
  596. package/dist/cjs/core/StepLifecycle.js +0 -180
  597. package/dist/cjs/core/StepLifecycle.js.map +0 -1
  598. package/dist/cjs/core/StreamingToolExecutor.d.ts +0 -142
  599. package/dist/cjs/core/StreamingToolExecutor.d.ts.map +0 -1
  600. package/dist/cjs/core/StreamingToolExecutor.js +0 -490
  601. package/dist/cjs/core/StreamingToolExecutor.js.map +0 -1
  602. package/dist/cjs/core/ToolLoopExecutor.d.ts +0 -133
  603. package/dist/cjs/core/ToolLoopExecutor.d.ts.map +0 -1
  604. package/dist/cjs/core/ToolLoopExecutor.js +0 -568
  605. package/dist/cjs/core/ToolLoopExecutor.js.map +0 -1
  606. package/dist/cjs/core/ToolManager.d.ts +0 -250
  607. package/dist/cjs/core/ToolManager.d.ts.map +0 -1
  608. package/dist/cjs/core/ToolManager.js +0 -1104
  609. package/dist/cjs/core/ToolManager.js.map +0 -1
  610. package/dist/cjs/core/createAgent.d.ts +0 -35
  611. package/dist/cjs/core/createAgent.d.ts.map +0 -1
  612. package/dist/cjs/core/createAgent.js +0 -39
  613. package/dist/cjs/core/createAgent.js.map +0 -1
  614. package/dist/cjs/core/flow-namespace.d.ts +0 -64
  615. package/dist/cjs/core/flow-namespace.d.ts.map +0 -1
  616. package/dist/cjs/core/flow-namespace.js +0 -182
  617. package/dist/cjs/core/flow-namespace.js.map +0 -1
  618. package/dist/cjs/core/toolGates.d.ts +0 -24
  619. package/dist/cjs/core/toolGates.d.ts.map +0 -1
  620. package/dist/cjs/core/toolGates.js +0 -52
  621. package/dist/cjs/core/toolGates.js.map +0 -1
  622. package/dist/cjs/types/persistence.d.ts +0 -254
  623. package/dist/cjs/types/persistence.d.ts.map +0 -1
  624. package/dist/cjs/types/persistence.js +0 -7
  625. package/dist/cjs/types/persistence.js.map +0 -1
  626. package/dist/cjs/types/prompt-cache.d.ts +0 -15
  627. package/dist/cjs/types/prompt-cache.d.ts.map +0 -1
  628. package/dist/cjs/types/prompt-cache.js +0 -6
  629. package/dist/cjs/types/prompt-cache.js.map +0 -1
  630. package/dist/cjs/types/signals.d.ts +0 -263
  631. package/dist/cjs/types/signals.d.ts.map +0 -1
  632. package/dist/cjs/types/signals.js +0 -11
  633. package/dist/cjs/types/signals.js.map +0 -1
  634. package/dist/cjs/types/template.d.ts +0 -84
  635. package/dist/cjs/types/template.d.ts.map +0 -1
  636. package/dist/cjs/types/template.js +0 -3
  637. package/dist/cjs/types/template.js.map +0 -1
  638. package/dist/cjs/utils/condition.d.ts +0 -63
  639. package/dist/cjs/utils/condition.d.ts.map +0 -1
  640. package/dist/cjs/utils/condition.js +0 -239
  641. package/dist/cjs/utils/condition.js.map +0 -1
  642. package/dist/cjs/utils/event.d.ts +0 -6
  643. package/dist/cjs/utils/event.d.ts.map +0 -1
  644. package/dist/cjs/utils/event.js +0 -20
  645. package/dist/cjs/utils/event.js.map +0 -1
  646. package/dist/cjs/utils/id.d.ts +0 -33
  647. package/dist/cjs/utils/id.d.ts.map +0 -1
  648. package/dist/cjs/utils/id.js +0 -84
  649. package/dist/cjs/utils/id.js.map +0 -1
  650. package/dist/cjs/utils/serialize.d.ts +0 -36
  651. package/dist/cjs/utils/serialize.d.ts.map +0 -1
  652. package/dist/cjs/utils/serialize.js +0 -77
  653. package/dist/cjs/utils/serialize.js.map +0 -1
  654. package/dist/cjs/utils/session.d.ts +0 -124
  655. package/dist/cjs/utils/session.d.ts.map +0 -1
  656. package/dist/cjs/utils/session.js +0 -396
  657. package/dist/cjs/utils/session.js.map +0 -1
  658. package/dist/constants/index.d.ts +0 -2
  659. package/dist/constants/index.d.ts.map +0 -1
  660. package/dist/constants/index.js +0 -4
  661. package/dist/constants/index.js.map +0 -1
  662. package/dist/core/AutoChainExecutor.d.ts +0 -97
  663. package/dist/core/AutoChainExecutor.d.ts.map +0 -1
  664. package/dist/core/AutoChainExecutor.js +0 -284
  665. package/dist/core/AutoChainExecutor.js.map +0 -1
  666. package/dist/core/BranchEvaluator.d.ts +0 -55
  667. package/dist/core/BranchEvaluator.d.ts.map +0 -1
  668. package/dist/core/BranchEvaluator.js +0 -121
  669. package/dist/core/BranchEvaluator.js.map +0 -1
  670. package/dist/core/DirectiveChainTracker.d.ts +0 -49
  671. package/dist/core/DirectiveChainTracker.d.ts.map +0 -1
  672. package/dist/core/DirectiveChainTracker.js +0 -117
  673. package/dist/core/DirectiveChainTracker.js.map +0 -1
  674. package/dist/core/Events.d.ts +0 -26
  675. package/dist/core/Events.d.ts.map +0 -1
  676. package/dist/core/Events.js +0 -137
  677. package/dist/core/Events.js.map +0 -1
  678. package/dist/core/Flow.d.ts +0 -183
  679. package/dist/core/Flow.d.ts.map +0 -1
  680. package/dist/core/Flow.js +0 -547
  681. package/dist/core/Flow.js.map +0 -1
  682. package/dist/core/FlowRouter.d.ts +0 -183
  683. package/dist/core/FlowRouter.d.ts.map +0 -1
  684. package/dist/core/FlowRouter.js +0 -1043
  685. package/dist/core/FlowRouter.js.map +0 -1
  686. package/dist/core/PersistenceManager.d.ts +0 -114
  687. package/dist/core/PersistenceManager.d.ts.map +0 -1
  688. package/dist/core/PersistenceManager.js +0 -332
  689. package/dist/core/PersistenceManager.js.map +0 -1
  690. package/dist/core/PromptComposer.d.ts +0 -47
  691. package/dist/core/PromptComposer.d.ts.map +0 -1
  692. package/dist/core/PromptComposer.js +0 -393
  693. package/dist/core/PromptComposer.js.map +0 -1
  694. package/dist/core/PromptSectionCache.d.ts +0 -48
  695. package/dist/core/PromptSectionCache.d.ts.map +0 -1
  696. package/dist/core/PromptSectionCache.js +0 -104
  697. package/dist/core/PromptSectionCache.js.map +0 -1
  698. package/dist/core/ResponseEngine.d.ts +0 -43
  699. package/dist/core/ResponseEngine.d.ts.map +0 -1
  700. package/dist/core/ResponseEngine.js +0 -231
  701. package/dist/core/ResponseEngine.js.map +0 -1
  702. package/dist/core/ResponseGenerationError.d.ts +0 -30
  703. package/dist/core/ResponseGenerationError.d.ts.map +0 -1
  704. package/dist/core/ResponseGenerationError.js +0 -31
  705. package/dist/core/ResponseGenerationError.js.map +0 -1
  706. package/dist/core/ResponseModal.d.ts +0 -305
  707. package/dist/core/ResponseModal.d.ts.map +0 -1
  708. package/dist/core/ResponseModal.js +0 -1410
  709. package/dist/core/ResponseModal.js.map +0 -1
  710. package/dist/core/ResponsePipeline.d.ts +0 -220
  711. package/dist/core/ResponsePipeline.d.ts.map +0 -1
  712. package/dist/core/ResponsePipeline.js +0 -1035
  713. package/dist/core/ResponsePipeline.js.map +0 -1
  714. package/dist/core/SessionFinalizer.d.ts +0 -34
  715. package/dist/core/SessionFinalizer.d.ts.map +0 -1
  716. package/dist/core/SessionFinalizer.js +0 -84
  717. package/dist/core/SessionFinalizer.js.map +0 -1
  718. package/dist/core/SessionManager.d.ts +0 -112
  719. package/dist/core/SessionManager.d.ts.map +0 -1
  720. package/dist/core/SessionManager.js +0 -301
  721. package/dist/core/SessionManager.js.map +0 -1
  722. package/dist/core/SignalCoordinator.d.ts +0 -103
  723. package/dist/core/SignalCoordinator.d.ts.map +0 -1
  724. package/dist/core/SignalCoordinator.js +0 -203
  725. package/dist/core/SignalCoordinator.js.map +0 -1
  726. package/dist/core/SignalEvaluator.d.ts +0 -86
  727. package/dist/core/SignalEvaluator.d.ts.map +0 -1
  728. package/dist/core/SignalEvaluator.js +0 -312
  729. package/dist/core/SignalEvaluator.js.map +0 -1
  730. package/dist/core/SignalProcessor.d.ts +0 -152
  731. package/dist/core/SignalProcessor.d.ts.map +0 -1
  732. package/dist/core/SignalProcessor.js +0 -498
  733. package/dist/core/SignalProcessor.js.map +0 -1
  734. package/dist/core/Step.d.ts +0 -184
  735. package/dist/core/Step.d.ts.map +0 -1
  736. package/dist/core/Step.js +0 -594
  737. package/dist/core/Step.js.map +0 -1
  738. package/dist/core/StepLifecycle.d.ts +0 -43
  739. package/dist/core/StepLifecycle.d.ts.map +0 -1
  740. package/dist/core/StepLifecycle.js +0 -176
  741. package/dist/core/StepLifecycle.js.map +0 -1
  742. package/dist/core/StreamingToolExecutor.d.ts +0 -142
  743. package/dist/core/StreamingToolExecutor.d.ts.map +0 -1
  744. package/dist/core/StreamingToolExecutor.js +0 -483
  745. package/dist/core/StreamingToolExecutor.js.map +0 -1
  746. package/dist/core/ToolLoopExecutor.d.ts +0 -133
  747. package/dist/core/ToolLoopExecutor.d.ts.map +0 -1
  748. package/dist/core/ToolLoopExecutor.js +0 -564
  749. package/dist/core/ToolLoopExecutor.js.map +0 -1
  750. package/dist/core/ToolManager.d.ts +0 -250
  751. package/dist/core/ToolManager.d.ts.map +0 -1
  752. package/dist/core/ToolManager.js +0 -1098
  753. package/dist/core/ToolManager.js.map +0 -1
  754. package/dist/core/createAgent.d.ts +0 -35
  755. package/dist/core/createAgent.d.ts.map +0 -1
  756. package/dist/core/createAgent.js +0 -36
  757. package/dist/core/createAgent.js.map +0 -1
  758. package/dist/core/flow-namespace.d.ts +0 -64
  759. package/dist/core/flow-namespace.d.ts.map +0 -1
  760. package/dist/core/flow-namespace.js +0 -179
  761. package/dist/core/flow-namespace.js.map +0 -1
  762. package/dist/core/toolGates.d.ts +0 -24
  763. package/dist/core/toolGates.d.ts.map +0 -1
  764. package/dist/core/toolGates.js +0 -49
  765. package/dist/core/toolGates.js.map +0 -1
  766. package/dist/types/persistence.d.ts +0 -254
  767. package/dist/types/persistence.d.ts.map +0 -1
  768. package/dist/types/persistence.js +0 -6
  769. package/dist/types/persistence.js.map +0 -1
  770. package/dist/types/prompt-cache.d.ts +0 -15
  771. package/dist/types/prompt-cache.d.ts.map +0 -1
  772. package/dist/types/prompt-cache.js +0 -5
  773. package/dist/types/prompt-cache.js.map +0 -1
  774. package/dist/types/signals.d.ts +0 -263
  775. package/dist/types/signals.d.ts.map +0 -1
  776. package/dist/types/signals.js +0 -10
  777. package/dist/types/signals.js.map +0 -1
  778. package/dist/types/template.d.ts +0 -84
  779. package/dist/types/template.d.ts.map +0 -1
  780. package/dist/types/template.js +0 -2
  781. package/dist/types/template.js.map +0 -1
  782. package/dist/utils/condition.d.ts +0 -63
  783. package/dist/utils/condition.d.ts.map +0 -1
  784. package/dist/utils/condition.js +0 -230
  785. package/dist/utils/condition.js.map +0 -1
  786. package/dist/utils/event.d.ts +0 -6
  787. package/dist/utils/event.d.ts.map +0 -1
  788. package/dist/utils/event.js +0 -17
  789. package/dist/utils/event.js.map +0 -1
  790. package/dist/utils/id.d.ts +0 -33
  791. package/dist/utils/id.d.ts.map +0 -1
  792. package/dist/utils/id.js +0 -77
  793. package/dist/utils/id.js.map +0 -1
  794. package/dist/utils/serialize.d.ts +0 -36
  795. package/dist/utils/serialize.d.ts.map +0 -1
  796. package/dist/utils/serialize.js +0 -72
  797. package/dist/utils/serialize.js.map +0 -1
  798. package/dist/utils/session.d.ts +0 -124
  799. package/dist/utils/session.d.ts.map +0 -1
  800. package/dist/utils/session.js +0 -379
  801. package/dist/utils/session.js.map +0 -1
  802. package/docs/concepts/directives.md +0 -369
  803. package/docs/reference/adapters.md +0 -543
  804. package/docs/reference/create-agent.md +0 -216
  805. package/docs/reference/directive.md +0 -242
  806. package/docs/reference/signals.md +0 -368
  807. package/examples/02-data-extraction.ts +0 -90
  808. package/examples/05-branching.ts +0 -140
  809. package/examples/06-flow-control.ts +0 -103
  810. package/examples/08-persistence.ts +0 -98
  811. package/examples/09-signals.ts +0 -144
  812. package/src/adapters/MemoryAdapter.ts +0 -281
  813. package/src/adapters/MongoAdapter.ts +0 -341
  814. package/src/adapters/OpenSearchAdapter.ts +0 -693
  815. package/src/adapters/PostgreSQLAdapter.ts +0 -487
  816. package/src/adapters/PrismaAdapter.ts +0 -617
  817. package/src/adapters/RedisAdapter.ts +0 -439
  818. package/src/adapters/SQLiteAdapter.ts +0 -496
  819. package/src/adapters/index.ts +0 -43
  820. package/src/adapters/sessionRow.ts +0 -57
  821. package/src/constants/index.ts +0 -2
  822. package/src/core/AutoChainExecutor.ts +0 -397
  823. package/src/core/BranchEvaluator.ts +0 -161
  824. package/src/core/DirectiveChainTracker.ts +0 -144
  825. package/src/core/Events.ts +0 -164
  826. package/src/core/Flow.ts +0 -665
  827. package/src/core/FlowRouter.ts +0 -1540
  828. package/src/core/PersistenceManager.ts +0 -446
  829. package/src/core/PromptComposer.ts +0 -448
  830. package/src/core/PromptSectionCache.ts +0 -125
  831. package/src/core/ResponseEngine.ts +0 -338
  832. package/src/core/ResponseGenerationError.ts +0 -53
  833. package/src/core/ResponseModal.ts +0 -1902
  834. package/src/core/ResponsePipeline.ts +0 -1404
  835. package/src/core/SessionFinalizer.ts +0 -108
  836. package/src/core/SessionManager.ts +0 -372
  837. package/src/core/SignalCoordinator.ts +0 -263
  838. package/src/core/SignalEvaluator.ts +0 -404
  839. package/src/core/SignalProcessor.ts +0 -663
  840. package/src/core/Step.ts +0 -782
  841. package/src/core/StepLifecycle.ts +0 -242
  842. package/src/core/StreamingToolExecutor.ts +0 -609
  843. package/src/core/ToolLoopExecutor.ts +0 -749
  844. package/src/core/ToolManager.ts +0 -1379
  845. package/src/core/createAgent.ts +0 -40
  846. package/src/core/flow-namespace.ts +0 -227
  847. package/src/core/toolGates.ts +0 -72
  848. package/src/types/persistence.ts +0 -303
  849. package/src/types/prompt-cache.ts +0 -17
  850. package/src/types/signals.ts +0 -338
  851. package/src/types/template.ts +0 -98
  852. package/src/utils/condition.ts +0 -296
  853. package/src/utils/event.ts +0 -16
  854. package/src/utils/id.ts +0 -91
  855. package/src/utils/serialize.ts +0 -86
  856. package/src/utils/session.ts +0 -501
@@ -0,0 +1,516 @@
1
+ /**
2
+ * FlowSpec: a Flow as JSON, and the checks that make a stored flow safe to run.
3
+ *
4
+ * Stored flows, flows an editor saves and flows an LLM generates are all
5
+ * FlowSpecs: the same object as `Flow` with a flat step that carries a `kind`
6
+ * and predicates only in their JSON form (`ConditionSpec`). No functions
7
+ * anywhere, so it survives `JSON.stringify`.
8
+ *
9
+ * Kind rule: a talk step is `collect` whenever it has a `collect` list, with
10
+ * or without a `prompt` beside it; it is `prompt` when it has a guideline
11
+ * alone. A wait with a duration is `wait`; a wait on an event is `waitEvent`.
12
+ *
13
+ * `fromSpec` treats `null` as absent for every optional value, because the
14
+ * generation schema (`flowSpecSchema`) says null where the type says optional.
15
+ * `toSpec` never writes null, so `toSpec(fromSpec(spec))` is the spec with its
16
+ * nulls dropped, and the identity on a spec that had none.
17
+ */
18
+ import { FlowConfigurationError } from "../types/errors.js";
19
+ import { isDuration } from "../utils/duration.js";
20
+ import { toWireSchema } from "../utils/schema.js";
21
+ // ── fromSpec / toSpec ───────────────────────────────────────────────────
22
+ /**
23
+ * A spec as a typed flow. The slugs and names inside a spec are strings from
24
+ * storage, so the result is typed by claim: `validateFlow` (which the agent
25
+ * runs on every flow it is built with) is what makes the claim true. The
26
+ * bound toolkit's `f.fromSpec(spec)` fills `C` and `D` in.
27
+ */
28
+ export function fromSpec(spec) {
29
+ const clean = stripNulls(spec);
30
+ if (!Array.isArray(clean.steps)) {
31
+ throw problem(`flow "${clean.id}"`, "has no steps list", "Write steps as a list, even an empty one.");
32
+ }
33
+ const { steps, ...rest } = clean;
34
+ const flow = { ...rest, steps: steps.map(fromStepSpec) };
35
+ return flow;
36
+ }
37
+ function fromStepSpec(step) {
38
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars -- `kind` is the one property the Flow form drops
39
+ const { kind, ...body } = step;
40
+ return body;
41
+ }
42
+ /** Throws `FlowConfigurationError` when the flow carries a function predicate: it cannot be stored. */
43
+ export function toSpec(flow) {
44
+ const at = (where) => `flow "${flow.id}", ${where}`;
45
+ return compact({
46
+ id: flow.id,
47
+ name: flow.name,
48
+ description: flow.description,
49
+ on: flow.on?.map((trigger, i) => triggerToSpec(trigger, at(`trigger #${i + 1}`))),
50
+ anchor: flow.anchor,
51
+ while: jsonPred(flow.while, at("while")),
52
+ clearOnStart: flow.clearOnStart,
53
+ steps: flow.steps.map((step) => stepToSpec(step, at(`step "${step.id}"`))),
54
+ onEnd: flow.onEnd,
55
+ instructions: flow.instructions?.map((ins, i) => instructionToSpec(ins, at(`instructions[${i}]`))),
56
+ tools: flow.tools,
57
+ });
58
+ }
59
+ function triggerToSpec(trigger, at) {
60
+ return compact({ ...trigger, if: jsonPred(trigger.if, `${at} if`) });
61
+ }
62
+ function instructionToSpec(ins, at) {
63
+ return compact({ ...ins, if: jsonPred(ins.if, `${at}.if`) });
64
+ }
65
+ function branchesToSpec(branches, at) {
66
+ return branches?.map((branch, i) => "if" in branch ? { ...branch, if: jsonPredRequired(branch.if, `${at} branches[${i}].if`) } : branch);
67
+ }
68
+ function stepToSpec(step, at) {
69
+ const base = { id: step.id, label: step.label, then: step.then, ui: step.ui };
70
+ if ("say" in step) {
71
+ return compact({ ...base, kind: "say", say: step.say, media: step.media, once: step.once });
72
+ }
73
+ if ("do" in step) {
74
+ return compact({ ...base, kind: "do", do: step.do, with: step.with, onFail: step.onFail });
75
+ }
76
+ if ("wait" in step) {
77
+ return isTimedWait(step)
78
+ ? compact({
79
+ ...base,
80
+ kind: "wait",
81
+ wait: step.wait,
82
+ businessHours: step.businessHours,
83
+ else: step.else,
84
+ branches: branchesToSpec(step.branches, at),
85
+ })
86
+ : compact({ ...base, kind: "waitEvent", wait: step.wait, else: step.else });
87
+ }
88
+ if ("if" in step) {
89
+ return compact({ ...base, kind: "if", if: jsonPredRequired(step.if, `${at} if`), else: step.else });
90
+ }
91
+ const talk = {
92
+ ask: step.ask,
93
+ maxAsks: step.maxAsks,
94
+ branches: branchesToSpec(step.branches, at),
95
+ tools: step.tools,
96
+ instructions: step.instructions?.map((ins, i) => instructionToSpec(ins, `${at} instructions[${i}]`)),
97
+ };
98
+ if (step.collect !== undefined) {
99
+ return compact({ ...base, kind: "collect", collect: step.collect, prompt: step.prompt, ...talk });
100
+ }
101
+ if (step.prompt === undefined) {
102
+ throw problem(at, "has neither prompt nor collect", "A talk step needs a guideline, fields to collect, or both.");
103
+ }
104
+ return compact({ ...base, kind: "prompt", prompt: step.prompt, ...talk });
105
+ }
106
+ /** `typeof step.wait` alone does not narrow the union for tsc; this does. */
107
+ function isTimedWait(step) {
108
+ return typeof step.wait === "string";
109
+ }
110
+ function jsonPred(pred, at) {
111
+ return pred === undefined ? undefined : jsonPredRequired(pred, at);
112
+ }
113
+ function jsonPredRequired(pred, at) {
114
+ if (typeof pred === "function") {
115
+ throw problem(at, "is a function, which cannot be stored as JSON", "Write it as a condition ({ equals }, { known }, { silenced } or a named condition) to store this flow.");
116
+ }
117
+ return pred;
118
+ }
119
+ const BUILT_IN_CONDITIONS = ["equals", "known", "silenced"];
120
+ const DURATION_HINT = 'Write a number and a unit: "30s", "5m", "24h" or "3d".';
121
+ /**
122
+ * Check a flow, typed or as a spec, against the agent's registries. Throws
123
+ * `FlowConfigurationError` on the first problem that would break at runtime;
124
+ * returns warnings for what runs but probably not as intended.
125
+ */
126
+ export function validateFlow(input, registries) {
127
+ // Nulls mean "not set" in a spec; a typed flow has none, so one pass serves both forms.
128
+ const flow = stripNulls(input);
129
+ const { fields, actions = {}, events = {}, conditions = {}, tools = [] } = registries;
130
+ const toolIds = new Set(tools.map((tool) => tool.id));
131
+ const warnings = [];
132
+ if (typeof flow.id !== "string" || flow.id === "") {
133
+ throw problem("flow", "has no id", "Give the flow a short unique id.");
134
+ }
135
+ const flowAt = `flow "${flow.id}"`;
136
+ if (!Array.isArray(flow.steps)) {
137
+ throw problem(flowAt, "has no steps list", "Write steps as a list, even an empty one.");
138
+ }
139
+ const index = new Map();
140
+ flow.steps.forEach((step, i) => {
141
+ if (typeof step.id !== "string" || step.id === "") {
142
+ throw problem(`${flowAt}, step #${i + 1}`, "has no id", "Give every step a unique id.");
143
+ }
144
+ if (step.id === "end") {
145
+ throw problem(`${flowAt}, step "end"`, 'uses the reserved id "end"', '"end" ends the run; pick another id.');
146
+ }
147
+ if (index.has(step.id)) {
148
+ throw problem(`${flowAt}, step "${step.id}"`, "duplicates an earlier step id", "Give each step its own id.");
149
+ }
150
+ index.set(step.id, i);
151
+ });
152
+ if (flow.on?.length && flow.steps.length === 0) {
153
+ throw problem(flowAt, "has triggers but no steps", "Add at least one step or remove `on`.");
154
+ }
155
+ const slug = (name, at, where) => {
156
+ if (!own(fields, name)) {
157
+ throw problem(at, `unknown field "${name}" in ${where}`, "Add it to the agent's fields or fix the slug.");
158
+ }
159
+ };
160
+ const toolNames = (names, at) => {
161
+ for (const name of names ?? []) {
162
+ if (!toolIds.has(name))
163
+ throw problem(at, `unknown tool "${name}"`, "Register it in the agent's tools or fix the name.");
164
+ }
165
+ };
166
+ const pred = (value, at, where) => {
167
+ if (value === undefined || typeof value === "function")
168
+ return;
169
+ for (const [name, arg] of Object.entries(value)) {
170
+ if (name === "equals") {
171
+ if (arg === null || typeof arg !== "object" || Array.isArray(arg)) {
172
+ throw problem(at, `${where}.equals is not an object`, "Write equals as { field: value }.");
173
+ }
174
+ for (const [field, given] of Object.entries(arg)) {
175
+ slug(field, at, `${where}.equals`);
176
+ const def = fields[field];
177
+ if (!matches(def, given)) {
178
+ throw problem(at, `${where}.equals gives "${field}" a ${describe(given)}, but the field is a ${def.type}`, `Write a ${def.type}; values are not coerced.`);
179
+ }
180
+ }
181
+ }
182
+ else if (name === "known") {
183
+ if (!Array.isArray(arg))
184
+ throw problem(at, `${where}.known is not a list`, "Write known as [field, ...].");
185
+ for (const field of arg)
186
+ slug(String(field), at, `${where}.known`);
187
+ }
188
+ else if (name === "silenced") {
189
+ if (typeof arg !== "boolean")
190
+ throw problem(at, `${where}.silenced is not a boolean`, "Write true or false.");
191
+ }
192
+ else if (!own(conditions, name)) {
193
+ throw problem(at, `unknown condition "${name}" in ${where}`, `Register it in conditions or use ${BUILT_IN_CONDITIONS.join(", ")}.`);
194
+ }
195
+ }
196
+ };
197
+ const duration = (value, at, where) => {
198
+ if (value !== undefined && !isDuration(value)) {
199
+ throw problem(at, `${where} has duration "${value}", which does not parse`, DURATION_HINT);
200
+ }
201
+ };
202
+ /** The step index a `Next` lands on; `'end'` and `{ flow }` land nowhere. */
203
+ const target = (next, at, where) => {
204
+ if (typeof next === "string") {
205
+ if (next === "end")
206
+ return undefined;
207
+ const to = index.get(next);
208
+ if (to === undefined) {
209
+ throw problem(at, `${where} points at step "${next}", which does not exist`, 'Use an existing step id or "end".');
210
+ }
211
+ return to;
212
+ }
213
+ if ("flow" in next)
214
+ return undefined;
215
+ const to = index.get(next.step);
216
+ if (to === undefined) {
217
+ throw problem(at, `${where} points at step "${next.step}", which does not exist`, 'Use an existing step id or "end".');
218
+ }
219
+ for (const field of next.clear ?? [])
220
+ slug(field, at, `${where}.clear`);
221
+ return to;
222
+ };
223
+ /** `target`, warning when the edge goes backward without clearing anything. */
224
+ const edge = (from, next, at, where) => {
225
+ if (next === undefined)
226
+ return undefined;
227
+ const to = target(next, at, where);
228
+ const clears = typeof next !== "string" && "clear" in next && (next.clear?.length ?? 0) > 0;
229
+ if (to !== undefined && to <= from && !clears) {
230
+ warnings.push(`${at}: ${where} jumps back to "${flow.steps[to].id}" without clear; the fields collected since stay known ` +
231
+ "and those steps skip. Add clear: [...] to re-ask them.");
232
+ }
233
+ return to;
234
+ };
235
+ const checkWith = (at, name, params, given = {}) => {
236
+ for (const [param, def] of Object.entries(params)) {
237
+ const value = given[param];
238
+ if (value === undefined) {
239
+ if (!def.optional)
240
+ throw problem(at, `action "${name}" needs parameter "${param}"`, "Add it to `with`.");
241
+ continue;
242
+ }
243
+ if (!matchesParam(def, value)) {
244
+ throw problem(at, `parameter "${param}" of action "${name}" must be ${describeDef(def)}, got ${describe(value)}`, "Values are not coerced; write the right type.");
245
+ }
246
+ }
247
+ for (const param of Object.keys(given)) {
248
+ if (!own(params, param)) {
249
+ throw problem(at, `action "${name}" has no parameter "${param}"`, "Remove it or fix the name.");
250
+ }
251
+ }
252
+ };
253
+ for (const field of flow.clearOnStart ?? [])
254
+ slug(field, flowAt, "clearOnStart");
255
+ pred(flow.while, flowAt, "while");
256
+ toolNames(flow.tools, flowAt);
257
+ flow.instructions?.forEach((ins, i) => pred(ins.if, flowAt, `instructions[${i}].if`));
258
+ flow.on?.forEach((trigger, i) => {
259
+ const at = `${flowAt}, trigger #${i + 1}`;
260
+ if (trigger.event !== undefined && !own(events, trigger.event)) {
261
+ throw problem(at, `unknown event "${trigger.event}"`, "Register it in events or fix the name.");
262
+ }
263
+ duration(trigger.silence, at, "silence");
264
+ duration(trigger.after, at, "after");
265
+ if (typeof trigger.repeat === "object")
266
+ duration(trigger.repeat.cooldown, at, "repeat.cooldown");
267
+ pred(trigger.if, at, "if");
268
+ });
269
+ flow.steps.forEach((step, i) => {
270
+ const at = `${flowAt}, step "${step.id}"`;
271
+ const thenTo = edge(i, step.then, at, "then");
272
+ edge(i, step.else, at, "else");
273
+ if (step.collect !== undefined || step.prompt !== undefined) {
274
+ for (const field of step.collect ?? [])
275
+ slug(field, at, "collect");
276
+ for (const field of Object.keys(step.ask ?? {}))
277
+ slug(field, at, "ask");
278
+ const fields_ = step.collect ?? [];
279
+ if (step.prompt === undefined && fields_.length > 0 && fields_.every((f) => !step.ask?.[f] && !fields[f].ask)) {
280
+ warnings.push(`${at}: collects ${fields_.map((f) => `"${f}"`).join(", ")} with no prompt and no ask; the AI has nothing ` +
281
+ "to go on. Add a prompt or an ask per field.");
282
+ }
283
+ }
284
+ step.branches?.forEach((branch, j) => {
285
+ const where = `branches[${j}]`;
286
+ if (branch.when === undefined && branch.if === undefined) {
287
+ throw problem(at, `${where} has neither when nor if`, "Give the branch an AI condition (when) or a code one (if).");
288
+ }
289
+ pred(branch.if, at, `${where}.if`);
290
+ edge(i, branch.then, at, `${where}.then`);
291
+ });
292
+ step.instructions?.forEach((ins, j) => pred(ins.if, at, `instructions[${j}].if`));
293
+ toolNames(step.tools, at);
294
+ if (step.do !== undefined) {
295
+ if (!own(actions, step.do)) {
296
+ throw problem(at, `unknown action "${step.do}"`, "Register it in actions or fix the name.");
297
+ }
298
+ checkWith(at, step.do, actions[step.do].parameters, step.with);
299
+ edge(i, step.onFail, at, "onFail");
300
+ }
301
+ if (typeof step.wait === "string") {
302
+ duration(step.wait, at, "wait");
303
+ }
304
+ else if (step.wait !== undefined) {
305
+ if (!own(events, step.wait.event)) {
306
+ throw problem(at, `unknown event "${step.wait.event}" in wait`, "Register it in events or fix the name.");
307
+ }
308
+ duration(step.wait.upTo, at, "wait.upTo");
309
+ }
310
+ if (step.if !== undefined) {
311
+ pred(step.if, at, "if");
312
+ if (thenTo !== undefined && thenTo <= i && step.else === undefined) {
313
+ throw problem(at, `"if" jumps back to "${flow.steps[thenTo].id}" with no else`, "Add else so the false branch has somewhere to go.");
314
+ }
315
+ }
316
+ });
317
+ return { warnings };
318
+ }
319
+ function matchesParam(def, value) {
320
+ if (def.type === "array")
321
+ return Array.isArray(value) && value.every((item) => matches(def.items, item));
322
+ return matches(def, value);
323
+ }
324
+ /** Strict: a string is not a number here. Enum membership is checked unless the string is a template. */
325
+ function matches(def, value) {
326
+ if (typeof value !== "string" && typeof value !== "number" && typeof value !== "boolean")
327
+ return false;
328
+ const typeOk = def.type === "string"
329
+ ? typeof value === "string"
330
+ : def.type === "boolean"
331
+ ? typeof value === "boolean"
332
+ : typeof value === "number" && (def.type === "number" ? Number.isFinite(value) : Number.isInteger(value));
333
+ if (!typeOk)
334
+ return false;
335
+ if (!def.enum || (typeof value === "string" && value.includes("{{")))
336
+ return true;
337
+ return typeof value !== "boolean" && def.enum.includes(value);
338
+ }
339
+ function describe(value) {
340
+ return Array.isArray(value) ? "list" : value === null ? "null" : typeof value;
341
+ }
342
+ function describeDef(def) {
343
+ return def.type === "array" ? `a list of ${def.items.type}` : `a ${def.type}`;
344
+ }
345
+ // ── flowSpecSchema ──────────────────────────────────────────────────────
346
+ const STRING = { type: "string" };
347
+ const NUMBER = { type: "number" };
348
+ const INTEGER = { type: "integer" };
349
+ const BOOLEAN = { type: "boolean" };
350
+ const NULL = { type: "null" };
351
+ /**
352
+ * FlowSpec's JSON schema with this workspace's actions (each with its
353
+ * parameter schema), events, conditions and field slugs as enums. Every
354
+ * object is closed and every property required, null standing for "not set",
355
+ * so Gemini accepts it as a response schema. Steps are an `anyOf` (the union
356
+ * keyword both Gemini and OpenAI strict schemas accept; `oneOf` is not)
357
+ * discriminated by `kind`, one `do` variant per action.
358
+ *
359
+ * Left out on purpose, because a model should not write them: `ui`, `tools`,
360
+ * step-level `instructions` and `ask`, a mention trigger's `extract`, and the
361
+ * `input` of `{ flow }`. A variant whose registry is empty is left out too
362
+ * (no actions: no `do` step). Condition arguments are typed loosely (string,
363
+ * number, boolean or list of strings) because conditions carry no argument
364
+ * schema yet.
365
+ */
366
+ export function flowSpecSchema(registries) {
367
+ const { fields, actions = {}, events = {}, conditions = {} } = registries;
368
+ const slugs = Object.keys(fields);
369
+ const eventNames = Object.keys(events);
370
+ const slugList = slugs.length ? list(enumOf(slugs)) : undefined;
371
+ const duration = { type: "string", description: "A number and a unit: 30s, 5m, 24h, 3d" };
372
+ const condition = closed({
373
+ equals: slugs.length
374
+ ? orNull({ ...toWireSchema(fields, { nullable: true }), description: "Fields that must hold these values" })
375
+ : undefined,
376
+ known: slugList && orNull({ ...slugList, description: "Fields that must be known" }),
377
+ silenced: orNull({ ...BOOLEAN, description: "Whether the host gate is closed" }),
378
+ ...Object.fromEntries(Object.keys(conditions).map((name) => [
379
+ name,
380
+ union([STRING, NUMBER, BOOLEAN, list(STRING)], { nullable: true, description: `Argument for condition "${name}"` }),
381
+ ])),
382
+ });
383
+ const nextBranches = [
384
+ { type: "string", description: 'A step id, or "end"' },
385
+ closed({ step: STRING, clear: slugList && orNull({ ...slugList, description: "Fields to forget before jumping" }) }),
386
+ closed({ flow: { type: "string", description: "Another flow to start; this run ends" } }),
387
+ ];
388
+ const next = union(nextBranches);
389
+ const nextOrNull = union(nextBranches, { nullable: true });
390
+ const repeat = union([enumOf(["once", "always"]), closed({ cooldown: duration })], { nullable: true, description: "How often a run may start: once per session or anchor, always, or after a cooldown" });
391
+ const triggerBase = { if: orNull(condition), repeat };
392
+ const trigger = union([
393
+ closed({ message: list(STRING, "What the lead asks for, one phrase each; [] = catch-all"), ...triggerBase }),
394
+ closed({ mention: list(STRING, "What the lead mentions, one phrase each"), ...triggerBase }),
395
+ closed({ silence: { ...duration, description: "How long the lead has been quiet" }, businessHours: orNull(BOOLEAN), ...triggerBase }),
396
+ eventNames.length
397
+ ? closed({ event: enumOf(eventNames), after: orNull(duration), businessHours: orNull(BOOLEAN), ...triggerBase })
398
+ : undefined,
399
+ ]);
400
+ const branches = orNull(list(union([closed({ when: STRING, then: next }), closed({ if: condition, then: next })]), "Exits judged while the step asks"));
401
+ const stepBase = { id: STRING, label: orNull(STRING), then: nextOrNull };
402
+ const step = union([
403
+ closed({ ...stepBase, kind: enumOf(["prompt"]), prompt: { type: "string", description: "Guideline for the AI's next message" }, branches }),
404
+ slugList &&
405
+ closed({
406
+ ...stepBase,
407
+ kind: enumOf(["collect"]),
408
+ collect: { ...slugList, description: "Fields the AI asks for until they are known" },
409
+ prompt: orNull(STRING),
410
+ maxAsks: orNull({ ...INTEGER, description: "Times a field may be asked before it is skipped; default 3" }),
411
+ branches,
412
+ }),
413
+ closed({ ...stepBase, kind: enumOf(["say"]), say: { type: "string", description: "Sent verbatim" }, media: orNull(closed({ slug: STRING })), once: orNull(BOOLEAN) }),
414
+ ...Object.entries(actions).map(([name, action]) => closed({
415
+ ...stepBase,
416
+ kind: enumOf(["do"]),
417
+ do: enumOf([name]),
418
+ with: Object.keys(action.parameters).length ? paramsSchema(action.parameters) : undefined,
419
+ onFail: nextOrNull,
420
+ })),
421
+ closed({
422
+ ...stepBase,
423
+ kind: enumOf(["wait"]),
424
+ wait: { ...duration, description: "Park this long; then = time passed, else = the lead replied" },
425
+ businessHours: orNull(BOOLEAN),
426
+ else: nextOrNull,
427
+ branches,
428
+ }),
429
+ eventNames.length
430
+ ? closed({
431
+ ...stepBase,
432
+ kind: enumOf(["waitEvent"]),
433
+ wait: closed({ event: enumOf(eventNames), upTo: orNull({ ...duration, description: "Give up after this long; default 30d" }) }),
434
+ else: nextOrNull,
435
+ })
436
+ : undefined,
437
+ closed({ ...stepBase, kind: enumOf(["if"]), if: condition, else: nextOrNull }),
438
+ ]);
439
+ const instruction = closed({
440
+ kind: orNull(enumOf(["must", "never", "should"])),
441
+ when: orNull(list(STRING, "When the rule applies, judged by the AI")),
442
+ if: orNull(condition),
443
+ prompt: STRING,
444
+ });
445
+ return closed({
446
+ id: { type: "string", description: "Short slug, unique in the workspace" },
447
+ name: STRING,
448
+ description: orNull({ type: "string", description: "When this flow should be used; the AI reads it when routing" }),
449
+ on: orNull(list(trigger, "What starts a run; null = started by hand")),
450
+ anchor: orNull({ type: "string", description: "'session' (default) or a host anchor such as 'lead'" }),
451
+ while: orNull({ ...condition, description: "The run ends when this stops holding" }),
452
+ clearOnStart: slugList && orNull({ ...slugList, description: "Fields to forget when a run starts" }),
453
+ steps: list(step, "In order; a run moves to the next step unless `then` says otherwise"),
454
+ onEnd: orNull(enumOf(["end", "stay", "reset"], "After the last step: end the run, stay on it, or reset to the first")),
455
+ instructions: orNull(list(instruction, "Rules that apply only inside this flow")),
456
+ });
457
+ }
458
+ /**
459
+ * An action's `with`: required parameters stay non-null so the model cannot
460
+ * skip them; optional ones are listed as required-but-nullable, the envelope
461
+ * style, so the object stays closed and fully required.
462
+ */
463
+ function paramsSchema(params) {
464
+ const wire = toWireSchema(params);
465
+ const properties = wire.properties ?? {};
466
+ for (const [name, def] of Object.entries(params)) {
467
+ if (def.optional)
468
+ properties[name] = orNull(properties[name]);
469
+ }
470
+ return { ...wire, properties, required: Object.keys(params) };
471
+ }
472
+ function enumOf(values, description) {
473
+ return compact({ type: "string", enum: [...values], description });
474
+ }
475
+ function list(items, description) {
476
+ return compact({ type: "array", items, description });
477
+ }
478
+ /** A closed object requiring every property it lists; `undefined` entries are left out. */
479
+ function closed(properties) {
480
+ const present = {};
481
+ for (const [name, schema] of Object.entries(properties))
482
+ if (schema)
483
+ present[name] = schema;
484
+ return { type: "object", properties: present, required: Object.keys(present), additionalProperties: false };
485
+ }
486
+ function union(branches, options = {}) {
487
+ const anyOf = branches.filter((branch) => branch !== undefined);
488
+ return compact({ anyOf: options.nullable ? [...anyOf, NULL] : anyOf, description: options.description });
489
+ }
490
+ /** The same schema, also accepting null. Single-typed schemas only; unions take `{ nullable: true }`. */
491
+ function orNull(schema) {
492
+ return typeof schema.type === "string" ? { ...schema, type: [schema.type, "null"] } : { anyOf: [schema, NULL] };
493
+ }
494
+ // ── Shared helpers ──────────────────────────────────────────────────────
495
+ function problem(at, what, fix) {
496
+ return new FlowConfigurationError(`[FlowConfigurationError] ${at}: ${what}. ${fix}`);
497
+ }
498
+ function own(record, key) {
499
+ return Object.prototype.hasOwnProperty.call(record, key);
500
+ }
501
+ /** Drop `undefined` values so a spec carries only what was written. */
502
+ function compact(value) {
503
+ return Object.fromEntries(Object.entries(value).filter(([, v]) => v !== undefined));
504
+ }
505
+ /** `null` means "not set" on the way in from JSON; drop it everywhere. */
506
+ function stripNulls(value) {
507
+ if (Array.isArray(value))
508
+ return value.map((item) => stripNulls(item));
509
+ if (value !== null && typeof value === "object") {
510
+ return Object.fromEntries(Object.entries(value)
511
+ .filter(([, v]) => v !== null)
512
+ .map(([k, v]) => [k, stripNulls(v)]));
513
+ }
514
+ return value;
515
+ }
516
+ //# sourceMappingURL=FlowSpec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlowSpec.js","sourceRoot":"","sources":["../../src/core/FlowSpec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Reading stored session blobs.
3
+ *
4
+ * `assertSession` is the v4 shape check every store runs on load.
5
+ * `migrateSession` lifts a 3.x `SessionState` into a v4 `Session` once, at
6
+ * the host's choke point (design §10). Both fail loudly: a row that is
7
+ * neither a v4 session nor a recognisable 3.x blob throws
8
+ * `InvalidSessionError` and never comes back as a fresh conversation, which
9
+ * would silently re-ask every field and re-fire every once-flow.
10
+ */
11
+ import type { Session } from "../types/session.js";
12
+ /** A stored row that cannot be read as a session. */
13
+ export declare class InvalidSessionError extends Error {
14
+ readonly sessionId: string;
15
+ constructor(sessionId: string, why: string);
16
+ }
17
+ export interface MigrateOptions {
18
+ sessionId: string;
19
+ /** The v4 flow id that took over a 3.x signal id or flow id. Identity when ids were kept. */
20
+ flowIdOf: (signalKeyOrFlowId: string) => string;
21
+ /** Stamps runs and claims that carry no date of their own. Default: now. */
22
+ now?: Date;
23
+ }
24
+ /**
25
+ * A v4 blob back to a `Session`, holding only the session keys (a store's
26
+ * own `createdAt`/`updatedAt` are dropped). Throws `InvalidSessionError`
27
+ * when the shape is off.
28
+ */
29
+ export declare function assertSession<D>(blob: unknown, sessionId: string): Session<D>;
30
+ /**
31
+ * A stored blob to a v4 `Session`. A v4 blob passes through `assertSession`.
32
+ * A 3.x `SessionState` becomes: `data` verbatim; `currentFlow`/`currentStep`
33
+ * one run at the same step; every fired signal and every completed flow a
34
+ * `once` claim, so nothing re-fires; `pendingDirective` dropped; `metadata`
35
+ * kept with its dates as ISO text. Anything else throws `InvalidSessionError`.
36
+ */
37
+ export declare function migrateSession<D>(blob: unknown, options: MigrateOptions): Session<D>;
38
+ //# sourceMappingURL=Migrate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Migrate.d.ts","sourceRoot":"","sources":["../../src/core/Migrate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAkB,OAAO,EAAe,MAAM,qBAAqB,CAAC;AAKhF,qDAAqD;AACrD,qBAAa,mBAAoB,SAAQ,KAAK;aAE1B,SAAS,EAAE,MAAM;gBAAjB,SAAS,EAAE,MAAM,EACjC,GAAG,EAAE,MAAM;CAQd;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,6FAA6F;IAC7F,QAAQ,EAAE,CAAC,iBAAiB,EAAE,MAAM,KAAK,MAAM,CAAC;IAChD,4EAA4E;IAC5E,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ;AAqBD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAiC7E;AAkDD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAMpF"}