@falai/agent 4.0.0-alpha.2 → 4.0.0-alpha.20

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 (300) hide show
  1. package/README.md +5 -3
  2. package/dist/cjs/core/Agent.d.ts +8 -1
  3. package/dist/cjs/core/Agent.d.ts.map +1 -1
  4. package/dist/cjs/core/Agent.js +18 -0
  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 +8 -3
  8. package/dist/cjs/core/CompactionEngine.js.map +1 -1
  9. package/dist/cjs/core/FlowSpec.d.ts +21 -2
  10. package/dist/cjs/core/FlowSpec.d.ts.map +1 -1
  11. package/dist/cjs/core/FlowSpec.js +324 -51
  12. package/dist/cjs/core/FlowSpec.js.map +1 -1
  13. package/dist/cjs/core/Migrate.d.ts.map +1 -1
  14. package/dist/cjs/core/Migrate.js +3 -1
  15. package/dist/cjs/core/Migrate.js.map +1 -1
  16. package/dist/cjs/core/Prompt.d.ts +16 -0
  17. package/dist/cjs/core/Prompt.d.ts.map +1 -1
  18. package/dist/cjs/core/Prompt.js +46 -1
  19. package/dist/cjs/core/Prompt.js.map +1 -1
  20. package/dist/cjs/core/Runner.d.ts +37 -4
  21. package/dist/cjs/core/Runner.d.ts.map +1 -1
  22. package/dist/cjs/core/Runner.js +269 -74
  23. package/dist/cjs/core/Runner.js.map +1 -1
  24. package/dist/cjs/core/Speak.d.ts.map +1 -1
  25. package/dist/cjs/core/Speak.js +50 -19
  26. package/dist/cjs/core/Speak.js.map +1 -1
  27. package/dist/cjs/core/Understand.d.ts +4 -3
  28. package/dist/cjs/core/Understand.d.ts.map +1 -1
  29. package/dist/cjs/core/Understand.js +22 -51
  30. package/dist/cjs/core/Understand.js.map +1 -1
  31. package/dist/cjs/core/contracts.d.ts +11 -6
  32. package/dist/cjs/core/contracts.d.ts.map +1 -1
  33. package/dist/cjs/index.d.ts +1 -1
  34. package/dist/cjs/index.d.ts.map +1 -1
  35. package/dist/cjs/persistence/OpenSearchStore.d.ts +2 -1
  36. package/dist/cjs/persistence/OpenSearchStore.d.ts.map +1 -1
  37. package/dist/cjs/persistence/OpenSearchStore.js +2 -2
  38. package/dist/cjs/persistence/OpenSearchStore.js.map +1 -1
  39. package/dist/cjs/persistence/RedisStore.d.ts +1 -1
  40. package/dist/cjs/persistence/RedisStore.d.ts.map +1 -1
  41. package/dist/cjs/providers/AnthropicProvider.d.ts +2 -5
  42. package/dist/cjs/providers/AnthropicProvider.d.ts.map +1 -1
  43. package/dist/cjs/providers/AnthropicProvider.js +3 -4
  44. package/dist/cjs/providers/AnthropicProvider.js.map +1 -1
  45. package/dist/cjs/providers/DeepSeekProvider.d.ts.map +1 -1
  46. package/dist/cjs/providers/DeepSeekProvider.js +3 -4
  47. package/dist/cjs/providers/DeepSeekProvider.js.map +1 -1
  48. package/dist/cjs/providers/FallbackAiProvider.js +1 -1
  49. package/dist/cjs/providers/FallbackAiProvider.js.map +1 -1
  50. package/dist/cjs/providers/GeminiProvider.d.ts +1 -2
  51. package/dist/cjs/providers/GeminiProvider.d.ts.map +1 -1
  52. package/dist/cjs/providers/GeminiProvider.js +3 -4
  53. package/dist/cjs/providers/GeminiProvider.js.map +1 -1
  54. package/dist/cjs/providers/GenericOpenAICompatibleProvider.js +4 -4
  55. package/dist/cjs/providers/GenericOpenAICompatibleProvider.js.map +1 -1
  56. package/dist/cjs/providers/OpenAIProvider.d.ts.map +1 -1
  57. package/dist/cjs/providers/OpenAIProvider.js +3 -4
  58. package/dist/cjs/providers/OpenAIProvider.js.map +1 -1
  59. package/dist/cjs/providers/OpenRouterProvider.d.ts.map +1 -1
  60. package/dist/cjs/providers/OpenRouterProvider.js +4 -3
  61. package/dist/cjs/providers/OpenRouterProvider.js.map +1 -1
  62. package/dist/cjs/providers/ProviderAdapter.d.ts +15 -10
  63. package/dist/cjs/providers/ProviderAdapter.d.ts.map +1 -1
  64. package/dist/cjs/providers/ProviderAdapter.js +8 -3
  65. package/dist/cjs/providers/ProviderAdapter.js.map +1 -1
  66. package/dist/cjs/providers/ZaiProvider.js +1 -1
  67. package/dist/cjs/providers/ZaiProvider.js.map +1 -1
  68. package/dist/cjs/types/agent.d.ts +19 -4
  69. package/dist/cjs/types/agent.d.ts.map +1 -1
  70. package/dist/cjs/types/ai.d.ts +4 -6
  71. package/dist/cjs/types/ai.d.ts.map +1 -1
  72. package/dist/cjs/types/compaction.d.ts +1 -0
  73. package/dist/cjs/types/compaction.d.ts.map +1 -1
  74. package/dist/cjs/types/errors.d.ts +4 -9
  75. package/dist/cjs/types/errors.d.ts.map +1 -1
  76. package/dist/cjs/types/errors.js +12 -12
  77. package/dist/cjs/types/errors.js.map +1 -1
  78. package/dist/cjs/types/flow.d.ts +15 -1
  79. package/dist/cjs/types/flow.d.ts.map +1 -1
  80. package/dist/cjs/types/history.d.ts +0 -7
  81. package/dist/cjs/types/history.d.ts.map +1 -1
  82. package/dist/cjs/types/index.d.ts +2 -2
  83. package/dist/cjs/types/index.d.ts.map +1 -1
  84. package/dist/cjs/types/session.d.ts +4 -2
  85. package/dist/cjs/types/session.d.ts.map +1 -1
  86. package/dist/cjs/utils/clock.js +1 -1
  87. package/dist/cjs/utils/clock.js.map +1 -1
  88. package/dist/cjs/utils/outcomes.d.ts +1 -0
  89. package/dist/cjs/utils/outcomes.d.ts.map +1 -1
  90. package/dist/cjs/utils/outcomes.js +1 -0
  91. package/dist/cjs/utils/outcomes.js.map +1 -1
  92. package/dist/cjs/utils/phrases.d.ts +25 -0
  93. package/dist/cjs/utils/phrases.d.ts.map +1 -0
  94. package/dist/cjs/utils/phrases.js +38 -0
  95. package/dist/cjs/utils/phrases.js.map +1 -0
  96. package/dist/cjs/utils/schema.d.ts +3 -12
  97. package/dist/cjs/utils/schema.d.ts.map +1 -1
  98. package/dist/cjs/utils/schema.js +3 -43
  99. package/dist/cjs/utils/schema.js.map +1 -1
  100. package/dist/cjs/utils/template.d.ts +8 -0
  101. package/dist/cjs/utils/template.d.ts.map +1 -1
  102. package/dist/cjs/utils/template.js +47 -3
  103. package/dist/cjs/utils/template.js.map +1 -1
  104. package/dist/core/Agent.d.ts +8 -1
  105. package/dist/core/Agent.d.ts.map +1 -1
  106. package/dist/core/Agent.js +19 -1
  107. package/dist/core/Agent.js.map +1 -1
  108. package/dist/core/CompactionEngine.d.ts.map +1 -1
  109. package/dist/core/CompactionEngine.js +8 -3
  110. package/dist/core/CompactionEngine.js.map +1 -1
  111. package/dist/core/FlowSpec.d.ts +21 -2
  112. package/dist/core/FlowSpec.d.ts.map +1 -1
  113. package/dist/core/FlowSpec.js +323 -52
  114. package/dist/core/FlowSpec.js.map +1 -1
  115. package/dist/core/Migrate.d.ts.map +1 -1
  116. package/dist/core/Migrate.js +3 -1
  117. package/dist/core/Migrate.js.map +1 -1
  118. package/dist/core/Prompt.d.ts +16 -0
  119. package/dist/core/Prompt.d.ts.map +1 -1
  120. package/dist/core/Prompt.js +44 -1
  121. package/dist/core/Prompt.js.map +1 -1
  122. package/dist/core/Runner.d.ts +37 -4
  123. package/dist/core/Runner.d.ts.map +1 -1
  124. package/dist/core/Runner.js +270 -75
  125. package/dist/core/Runner.js.map +1 -1
  126. package/dist/core/Speak.d.ts.map +1 -1
  127. package/dist/core/Speak.js +51 -20
  128. package/dist/core/Speak.js.map +1 -1
  129. package/dist/core/Understand.d.ts +4 -3
  130. package/dist/core/Understand.d.ts.map +1 -1
  131. package/dist/core/Understand.js +22 -51
  132. package/dist/core/Understand.js.map +1 -1
  133. package/dist/core/contracts.d.ts +11 -6
  134. package/dist/core/contracts.d.ts.map +1 -1
  135. package/dist/index.d.ts +1 -1
  136. package/dist/index.d.ts.map +1 -1
  137. package/dist/persistence/OpenSearchStore.d.ts +2 -1
  138. package/dist/persistence/OpenSearchStore.d.ts.map +1 -1
  139. package/dist/persistence/OpenSearchStore.js +2 -2
  140. package/dist/persistence/OpenSearchStore.js.map +1 -1
  141. package/dist/persistence/RedisStore.d.ts +1 -1
  142. package/dist/persistence/RedisStore.d.ts.map +1 -1
  143. package/dist/providers/AnthropicProvider.d.ts +2 -5
  144. package/dist/providers/AnthropicProvider.d.ts.map +1 -1
  145. package/dist/providers/AnthropicProvider.js +3 -4
  146. package/dist/providers/AnthropicProvider.js.map +1 -1
  147. package/dist/providers/DeepSeekProvider.d.ts.map +1 -1
  148. package/dist/providers/DeepSeekProvider.js +3 -4
  149. package/dist/providers/DeepSeekProvider.js.map +1 -1
  150. package/dist/providers/FallbackAiProvider.js +1 -1
  151. package/dist/providers/FallbackAiProvider.js.map +1 -1
  152. package/dist/providers/GeminiProvider.d.ts +1 -2
  153. package/dist/providers/GeminiProvider.d.ts.map +1 -1
  154. package/dist/providers/GeminiProvider.js +3 -4
  155. package/dist/providers/GeminiProvider.js.map +1 -1
  156. package/dist/providers/GenericOpenAICompatibleProvider.js +4 -4
  157. package/dist/providers/GenericOpenAICompatibleProvider.js.map +1 -1
  158. package/dist/providers/OpenAIProvider.d.ts.map +1 -1
  159. package/dist/providers/OpenAIProvider.js +3 -4
  160. package/dist/providers/OpenAIProvider.js.map +1 -1
  161. package/dist/providers/OpenRouterProvider.d.ts.map +1 -1
  162. package/dist/providers/OpenRouterProvider.js +4 -3
  163. package/dist/providers/OpenRouterProvider.js.map +1 -1
  164. package/dist/providers/ProviderAdapter.d.ts +15 -10
  165. package/dist/providers/ProviderAdapter.d.ts.map +1 -1
  166. package/dist/providers/ProviderAdapter.js +8 -3
  167. package/dist/providers/ProviderAdapter.js.map +1 -1
  168. package/dist/providers/ZaiProvider.js +1 -1
  169. package/dist/providers/ZaiProvider.js.map +1 -1
  170. package/dist/types/agent.d.ts +19 -4
  171. package/dist/types/agent.d.ts.map +1 -1
  172. package/dist/types/ai.d.ts +4 -6
  173. package/dist/types/ai.d.ts.map +1 -1
  174. package/dist/types/compaction.d.ts +1 -0
  175. package/dist/types/compaction.d.ts.map +1 -1
  176. package/dist/types/errors.d.ts +4 -9
  177. package/dist/types/errors.d.ts.map +1 -1
  178. package/dist/types/errors.js +12 -12
  179. package/dist/types/errors.js.map +1 -1
  180. package/dist/types/flow.d.ts +15 -1
  181. package/dist/types/flow.d.ts.map +1 -1
  182. package/dist/types/history.d.ts +0 -7
  183. package/dist/types/history.d.ts.map +1 -1
  184. package/dist/types/index.d.ts +2 -2
  185. package/dist/types/index.d.ts.map +1 -1
  186. package/dist/types/session.d.ts +4 -2
  187. package/dist/types/session.d.ts.map +1 -1
  188. package/dist/utils/clock.js +1 -1
  189. package/dist/utils/clock.js.map +1 -1
  190. package/dist/utils/outcomes.d.ts +1 -0
  191. package/dist/utils/outcomes.d.ts.map +1 -1
  192. package/dist/utils/outcomes.js +1 -0
  193. package/dist/utils/outcomes.js.map +1 -1
  194. package/dist/utils/phrases.d.ts +25 -0
  195. package/dist/utils/phrases.d.ts.map +1 -0
  196. package/dist/utils/phrases.js +35 -0
  197. package/dist/utils/phrases.js.map +1 -0
  198. package/dist/utils/schema.d.ts +3 -12
  199. package/dist/utils/schema.d.ts.map +1 -1
  200. package/dist/utils/schema.js +3 -42
  201. package/dist/utils/schema.js.map +1 -1
  202. package/dist/utils/template.d.ts +8 -0
  203. package/dist/utils/template.d.ts.map +1 -1
  204. package/dist/utils/template.js +47 -3
  205. package/dist/utils/template.js.map +1 -1
  206. package/docs/concepts/architecture.md +3 -3
  207. package/docs/concepts/collection.md +40 -5
  208. package/docs/concepts/pipeline.md +12 -10
  209. package/docs/concepts/runs-and-waits.md +2 -2
  210. package/docs/guides/actions-and-events.md +2 -2
  211. package/docs/guides/branching.md +4 -2
  212. package/docs/guides/compaction.md +2 -2
  213. package/docs/guides/conditions.md +1 -1
  214. package/docs/guides/error-handling.md +3 -1
  215. package/docs/guides/flow-control.md +4 -2
  216. package/docs/guides/persistence.md +2 -2
  217. package/docs/guides/testing.md +1 -1
  218. package/docs/guides/triggers.md +5 -5
  219. package/docs/migration/v3-to-v4.md +16 -11
  220. package/docs/reference/actions-events-conditions.md +2 -2
  221. package/docs/reference/agent.md +11 -7
  222. package/docs/reference/branches.md +1 -1
  223. package/docs/reference/errors.md +10 -7
  224. package/docs/reference/fields.md +5 -3
  225. package/docs/reference/flow-spec.md +36 -9
  226. package/docs/reference/flow.md +8 -3
  227. package/docs/reference/outcomes.md +3 -2
  228. package/docs/reference/providers.md +2 -0
  229. package/docs/reference/session.md +2 -0
  230. package/docs/reference/step.md +8 -5
  231. package/docs/reference/stores.md +5 -3
  232. package/docs/reference/trigger.md +24 -4
  233. package/docs/rfc/v4-one-flow.md +7 -5
  234. package/docs/start/01-install.md +5 -3
  235. package/docs/start/04-add-tools.md +1 -1
  236. package/docs/start/05-go-to-production.md +18 -1
  237. package/examples/05-branches.ts +1 -1
  238. package/examples/06-triggers-and-waits.ts +4 -3
  239. package/package.json +5 -3
  240. package/src/core/Agent.ts +23 -2
  241. package/src/core/CompactionEngine.ts +10 -3
  242. package/src/core/FlowSpec.ts +352 -60
  243. package/src/core/Migrate.ts +2 -1
  244. package/src/core/Prompt.ts +47 -1
  245. package/src/core/Runner.ts +266 -71
  246. package/src/core/Speak.ts +53 -19
  247. package/src/core/Understand.ts +17 -50
  248. package/src/core/contracts.ts +11 -4
  249. package/src/index.ts +1 -1
  250. package/src/persistence/OpenSearchStore.ts +3 -2
  251. package/src/persistence/RedisStore.ts +1 -1
  252. package/src/providers/AnthropicProvider.ts +4 -9
  253. package/src/providers/DeepSeekProvider.ts +2 -4
  254. package/src/providers/FallbackAiProvider.ts +1 -1
  255. package/src/providers/GeminiProvider.ts +3 -6
  256. package/src/providers/GenericOpenAICompatibleProvider.ts +4 -4
  257. package/src/providers/OpenAIProvider.ts +3 -4
  258. package/src/providers/OpenRouterProvider.ts +4 -2
  259. package/src/providers/ProviderAdapter.ts +18 -13
  260. package/src/providers/ZaiProvider.ts +1 -1
  261. package/src/types/agent.ts +20 -5
  262. package/src/types/ai.ts +4 -6
  263. package/src/types/compaction.ts +1 -0
  264. package/src/types/errors.ts +11 -12
  265. package/src/types/flow.ts +15 -1
  266. package/src/types/history.ts +0 -10
  267. package/src/types/index.ts +1 -1
  268. package/src/types/session.ts +4 -1
  269. package/src/utils/clock.ts +1 -1
  270. package/src/utils/outcomes.ts +1 -0
  271. package/src/utils/phrases.ts +40 -0
  272. package/src/utils/schema.ts +3 -48
  273. package/src/utils/template.ts +46 -3
  274. package/dist/cjs/providers/index.d.ts +0 -26
  275. package/dist/cjs/providers/index.d.ts.map +0 -1
  276. package/dist/cjs/providers/index.js +0 -30
  277. package/dist/cjs/providers/index.js.map +0 -1
  278. package/dist/cjs/utils/clone.d.ts +0 -8
  279. package/dist/cjs/utils/clone.d.ts.map +0 -1
  280. package/dist/cjs/utils/clone.js +0 -32
  281. package/dist/cjs/utils/clone.js.map +0 -1
  282. package/dist/cjs/utils/index.d.ts +0 -9
  283. package/dist/cjs/utils/index.d.ts.map +0 -1
  284. package/dist/cjs/utils/index.js +0 -29
  285. package/dist/cjs/utils/index.js.map +0 -1
  286. package/dist/providers/index.d.ts +0 -26
  287. package/dist/providers/index.d.ts.map +0 -1
  288. package/dist/providers/index.js +0 -17
  289. package/dist/providers/index.js.map +0 -1
  290. package/dist/utils/clone.d.ts +0 -8
  291. package/dist/utils/clone.d.ts.map +0 -1
  292. package/dist/utils/clone.js +0 -29
  293. package/dist/utils/clone.js.map +0 -1
  294. package/dist/utils/index.d.ts +0 -9
  295. package/dist/utils/index.d.ts.map +0 -1
  296. package/dist/utils/index.js +0 -9
  297. package/dist/utils/index.js.map +0 -1
  298. package/src/providers/index.ts +0 -38
  299. package/src/utils/clone.ts +0 -34
  300. package/src/utils/index.ts +0 -18
@@ -1,12 +1,12 @@
1
1
  /**
2
2
  * Every public type, in one place.
3
3
  */
4
- export type { AgentCompactionConfig, AgentOptions, BusinessHours, Clock, EndReason, Idle, OutboundMessage, ScheduleEntry, Silenced, TurnBase, TurnInput, TurnKind, TurnResult, TurnStreamChunk, } from "./agent.js";
4
+ export type { AgentCompactionConfig, AgentOptions, BusinessHours, Clock, EndReason, Idle, OutboundMessage, PendingWakesInput, ScheduleEntry, Silenced, TurnBase, TurnInput, TurnKind, TurnResult, TurnStreamChunk, } from "./agent.js";
5
5
  export type { Action, ActionCtx, ActionMap, ActionResult, Branch, Condition, ConditionMap, ConditionSpec, DoStep, Duration, EventDef, EventMap, FieldDef, FieldDefs, Flow, IfStep, InferData, InferParams, Instruction, Next, ParamDef, ParamDefs, Pred, PredCtx, Repeat, SayStep, ScalarDef, ScalarType, Step, StepBase, TalkStep, Template, Trigger, WaitEventStep, WaitStep, } from "./flow.js";
6
6
  export type { Run, RunStatus, Session, StepOutcome, StepOutcomeCode, StepOutcomeKind, StepOutcomeStatus, Store, TriggerKind, } from "./session.js";
7
7
  export type { Tool, ToolCtx, ToolPermissionResult, ToolResult, ToolValidationResult } from "./tool.js";
8
8
  export type { AgentStructuredResponse, AiProvider, GenerateMessageInput, GenerateMessageOutput, TokenUsage, GenerateMessageStreamChunk, ProviderCapabilities, ReasoningConfig, } from "./ai.js";
9
- export type { AssistantHistoryItem, EmittedEvent, Event, History, HistoryItem, MessageEventData, Participant, Role, StatusEventData, SystemHistoryItem, ToolCall, ToolEventData, ToolHistoryItem, ToolResult as EventToolResult, UserHistoryItem, } from "./history.js";
9
+ export type { AssistantHistoryItem, Event, History, HistoryItem, MessageEventData, Participant, Role, StatusEventData, SystemHistoryItem, ToolCall, ToolEventData, ToolHistoryItem, ToolResult as EventToolResult, UserHistoryItem, } from "./history.js";
10
10
  export { EventKind, MessageRole } from "./history.js";
11
11
  export type { StructuredSchema } from "./schema.js";
12
12
  export type { CompactionOptions, CompactionResult } from "./compaction.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EACV,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,KAAK,EACL,SAAS,EACT,IAAI,EACJ,eAAe,EACf,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,UAAU,EACV,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,MAAM,EACN,SAAS,EACT,SAAS,EACT,YAAY,EACZ,MAAM,EACN,SAAS,EACT,YAAY,EACZ,aAAa,EACb,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,MAAM,EACN,SAAS,EACT,WAAW,EACX,WAAW,EACX,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,OAAO,EACP,MAAM,EACN,OAAO,EACP,SAAS,EACT,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,aAAa,EACb,QAAQ,GACT,MAAM,WAAW,CAAC;AAEnB,YAAY,EACV,GAAG,EACH,SAAS,EACT,OAAO,EACP,WAAW,EACX,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,KAAK,EACL,WAAW,GACZ,MAAM,cAAc,CAAC;AAEtB,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEvG,YAAY,EACV,uBAAuB,EACvB,UAAU,EACV,oBAAoB,EACpB,qBAAqB,EACrB,UAAU,EACV,0BAA0B,EAC1B,oBAAoB,EACpB,eAAe,GAChB,MAAM,SAAS,CAAC;AAEjB,YAAY,EACV,oBAAoB,EACpB,YAAY,EACZ,KAAK,EACL,OAAO,EACP,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,IAAI,EACJ,eAAe,EACf,iBAAiB,EACjB,QAAQ,EACR,aAAa,EACb,eAAe,EACf,UAAU,IAAI,eAAe,EAC7B,eAAe,GAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEtD,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAE3E,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,oBAAoB,GACrB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EACV,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,KAAK,EACL,SAAS,EACT,IAAI,EACJ,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,UAAU,EACV,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,MAAM,EACN,SAAS,EACT,SAAS,EACT,YAAY,EACZ,MAAM,EACN,SAAS,EACT,YAAY,EACZ,aAAa,EACb,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,MAAM,EACN,SAAS,EACT,WAAW,EACX,WAAW,EACX,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,OAAO,EACP,MAAM,EACN,OAAO,EACP,SAAS,EACT,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,aAAa,EACb,QAAQ,GACT,MAAM,WAAW,CAAC;AAEnB,YAAY,EACV,GAAG,EACH,SAAS,EACT,OAAO,EACP,WAAW,EACX,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,KAAK,EACL,WAAW,GACZ,MAAM,cAAc,CAAC;AAEtB,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEvG,YAAY,EACV,uBAAuB,EACvB,UAAU,EACV,oBAAoB,EACpB,qBAAqB,EACrB,UAAU,EACV,0BAA0B,EAC1B,oBAAoB,EACpB,eAAe,GAChB,MAAM,SAAS,CAAC;AAEjB,YAAY,EACV,oBAAoB,EACpB,KAAK,EACL,OAAO,EACP,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,IAAI,EACJ,eAAe,EACf,iBAAiB,EACjB,QAAQ,EACR,aAAa,EACb,eAAe,EACf,UAAU,IAAI,eAAe,EAC7B,eAAe,GAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEtD,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAE3E,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,oBAAoB,GACrB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
@@ -28,6 +28,8 @@ export interface Run {
28
28
  startedAt: string;
29
29
  /** Set while `suspended`; the most recently suspended run resumes first. */
30
30
  suspendedAt?: string;
31
+ /** Set once an `onEnd: 'stay'` run has finished its steps: it sits on its last talk step and answers every message from there. Any other move clears it. */
32
+ staying?: true;
31
33
  waiting?: {
32
34
  kind: "timer" | "event";
33
35
  /** The wake key; only a `wake` equal to it is honoured. */
@@ -52,7 +54,7 @@ export type StepOutcomeStatus = "ok" | "skipped" | "failed" | "waiting" | "defer
52
54
  * `OUTCOME_MESSAGES` maps each one to its English sentence; a product that
53
55
  * speaks another language maps the code to its own words instead.
54
56
  */
55
- export type StepOutcomeCode = "no-session" | "duplicate-input" | "stale-wake" | "silence-broken" | "already-claimed" | "cooldown" | "hop-limit" | "already-running" | "flow-gone" | "step-loop" | "step-gone" | "customer-replied" | "premise-changed" | "silenced" | "already-known" | "another-reply" | "already-sent" | "branch" | "max-asks" | "inline-delay" | "awaiting-trigger" | "awaiting-event" | "event-arrived" | "no-event" | "replied" | "no-reply" | "action-skipped" | "action-failed" | "action-deferred" | "unknown-field" | "bad-value" | "not-in-enum" | "provider-unavailable" | "provider-quota" | "provider-context" | "provider-auth" | "provider-invalid";
57
+ export type StepOutcomeCode = "no-session" | "duplicate-input" | "stale-wake" | "silence-broken" | "already-claimed" | "cooldown" | "hop-limit" | "already-running" | "flow-gone" | "step-loop" | "step-gone" | "customer-replied" | "premise-changed" | "silenced" | "already-known" | "asked-fixed" | "another-reply" | "already-sent" | "branch" | "max-asks" | "inline-delay" | "awaiting-trigger" | "awaiting-event" | "event-arrived" | "no-event" | "replied" | "no-reply" | "action-skipped" | "action-failed" | "action-deferred" | "unknown-field" | "bad-value" | "not-in-enum" | "provider-unavailable" | "provider-quota" | "provider-context" | "provider-auth" | "provider-invalid";
56
58
  export interface StepOutcome {
57
59
  runId?: string;
58
60
  flowId?: string;
@@ -75,7 +77,7 @@ export interface StepOutcome {
75
77
  export interface Session<D = unknown> {
76
78
  id: string;
77
79
  v: 4;
78
- /** Optimistic-concurrency version; the host bumps it on save. */
80
+ /** Optimistic-concurrency version. A turn leaves it unchanged; `Store.save` bumps it and returns the saved session. */
79
81
  version: number;
80
82
  data: Partial<D>;
81
83
  /** Live runs only. */
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/types/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/types/session.ts"],"names":[],"mappings":"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"}
@@ -27,7 +27,7 @@ function fakeClock(iso) {
27
27
  function parseIso(iso) {
28
28
  const ms = Date.parse(iso);
29
29
  if (Number.isNaN(ms))
30
- throw new Error(`fakeClock: "${iso}" is not a date.`);
30
+ throw new Error(`[fakeClock] "${iso}" is not a date: Date.parse cannot read it. Pass ISO text, e.g. "2026-09-20T10:00:00.000Z".`);
31
31
  return ms;
32
32
  }
33
33
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"clock.js","sourceRoot":"","sources":["../../../src/utils/clock.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAcH,8BAcC;AAxBD,+CAA8C;AAS9C,6EAA6E;AAC7E,SAAgB,SAAS,CAAC,GAAW;IACnC,IAAI,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IACvB,MAAM,KAAK,GAAG,GAAS,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;IACvC,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE;QAC1B,GAAG,EAAE,KAAK;QACV,OAAO,CAAC,EAAqB;YAC3B,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAA,2BAAa,EAAC,EAAE,CAAC,CAAC;YACtD,OAAO,KAAK,EAAE,CAAC;QACjB,CAAC;QACD,GAAG,CAAC,IAAY;YACd,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpB,OAAO,KAAK,EAAE,CAAC;QACjB,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW;IAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,eAAe,GAAG,kBAAkB,CAAC,CAAC;IAC5E,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;GAGG;AACH,MAAa,eAAe;IAA5B;QACmB,YAAO,GAAG,IAAI,GAAG,EAAyB,CAAC;IAwB9D,CAAC;IAtBC,GAAG,CAAC,KAAoB;QACtB,IAAI,KAAK,CAAC,QAAQ;YAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,CAAC,GAAW;QAChB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,qFAAqF;IACrF,GAAG,CAAC,GAAS;QACX,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;aACrC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;aAC9C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QACnD,KAAK,MAAM,CAAC,IAAI,KAAK;YAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAClD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAzBD,0CAyBC"}
1
+ {"version":3,"file":"clock.js","sourceRoot":"","sources":["../../../src/utils/clock.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAcH,8BAcC;AAxBD,+CAA8C;AAS9C,6EAA6E;AAC7E,SAAgB,SAAS,CAAC,GAAW;IACnC,IAAI,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IACvB,MAAM,KAAK,GAAG,GAAS,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;IACvC,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE;QAC1B,GAAG,EAAE,KAAK;QACV,OAAO,CAAC,EAAqB;YAC3B,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAA,2BAAa,EAAC,EAAE,CAAC,CAAC;YACtD,OAAO,KAAK,EAAE,CAAC;QACjB,CAAC;QACD,GAAG,CAAC,IAAY;YACd,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpB,OAAO,KAAK,EAAE,CAAC;QACjB,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW;IAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,6FAA6F,CAAC,CAAC;IACxJ,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;GAGG;AACH,MAAa,eAAe;IAA5B;QACmB,YAAO,GAAG,IAAI,GAAG,EAAyB,CAAC;IAwB9D,CAAC;IAtBC,GAAG,CAAC,KAAoB;QACtB,IAAI,KAAK,CAAC,QAAQ;YAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,CAAC,GAAW;QAChB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,qFAAqF;IACrF,GAAG,CAAC,GAAS;QACX,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;aACrC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;aAC9C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QACnD,KAAK,MAAM,CAAC,IAAI,KAAK;YAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAClD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAzBD,0CAyBC"}
@@ -22,6 +22,7 @@ export declare const OUTCOME_MESSAGES: {
22
22
  readonly "premise-changed": "the flow's while condition no longer holds";
23
23
  readonly silenced: "the host cannot speak right now";
24
24
  readonly "already-known": "every field this step collects is known";
25
+ readonly "asked-fixed": "the step's fixed question went out word for word";
25
26
  readonly "another-reply": "another run already answered this turn";
26
27
  readonly "already-sent": "this message was already sent once";
27
28
  readonly branch: "a branch of this step fired";
@@ -1 +1 @@
1
- {"version":3,"file":"outcomes.d.ts","sourceRoot":"","sources":["../../../src/utils/outcomes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4CuB,CAAC"}
1
+ {"version":3,"file":"outcomes.d.ts","sourceRoot":"","sources":["../../../src/utils/outcomes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6CuB,CAAC"}
@@ -25,6 +25,7 @@ exports.OUTCOME_MESSAGES = {
25
25
  "premise-changed": "the flow's while condition no longer holds",
26
26
  silenced: "the host cannot speak right now",
27
27
  "already-known": "every field this step collects is known",
28
+ "asked-fixed": "the step's fixed question went out word for word",
28
29
  "another-reply": "another run already answered this turn",
29
30
  "already-sent": "this message was already sent once",
30
31
  branch: "a branch of this step fired",
@@ -1 +1 @@
1
- {"version":3,"file":"outcomes.js","sourceRoot":"","sources":["../../../src/utils/outcomes.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAIU,QAAA,gBAAgB,GAAG;IAC9B,YAAY,EAAE,kDAAkD;IAChE,iBAAiB,EAAE,gCAAgC;IACnD,YAAY,EAAE,gCAAgC;IAC9C,gBAAgB,EAAE,+CAA+C;IAEjE,iBAAiB,EAAE,4BAA4B;IAC/C,QAAQ,EAAE,oCAAoC;IAC9C,WAAW,EAAE,iCAAiC;IAC9C,iBAAiB,EAAE,yCAAyC;IAC5D,WAAW,EAAE,+CAA+C;IAE5D,WAAW,EAAE,4CAA4C;IACzD,WAAW,EAAE,mCAAmC;IAChD,kBAAkB,EAAE,0CAA0C;IAC9D,iBAAiB,EAAE,4CAA4C;IAC/D,QAAQ,EAAE,iCAAiC;IAE3C,eAAe,EAAE,yCAAyC;IAC1D,eAAe,EAAE,wCAAwC;IACzD,cAAc,EAAE,oCAAoC;IACpD,MAAM,EAAE,6BAA6B;IACrC,UAAU,EAAE,4CAA4C;IACxD,cAAc,EAAE,wCAAwC;IACxD,kBAAkB,EAAE,oCAAoC;IACxD,gBAAgB,EAAE,iCAAiC;IACnD,eAAe,EAAE,wBAAwB;IACzC,UAAU,EAAE,kCAAkC;IAC9C,OAAO,EAAE,2CAA2C;IACpD,UAAU,EAAE,iDAAiD;IAE7D,gBAAgB,EAAE,+BAA+B;IACjD,eAAe,EAAE,mBAAmB;IACpC,iBAAiB,EAAE,qCAAqC;IAExD,eAAe,EAAE,gDAAgD;IACjE,WAAW,EAAE,wCAAwC;IACrD,aAAa,EAAE,6CAA6C;IAE5D,gBAAgB,EAAE,qCAAqC;IACvD,kBAAkB,EAAE,qDAAqD;IACzE,eAAe,EAAE,uCAAuC;IACxD,kBAAkB,EAAE,mCAAmC;IACvD,sBAAsB,EAAE,0CAA0C;CAChB,CAAC"}
1
+ {"version":3,"file":"outcomes.js","sourceRoot":"","sources":["../../../src/utils/outcomes.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAIU,QAAA,gBAAgB,GAAG;IAC9B,YAAY,EAAE,kDAAkD;IAChE,iBAAiB,EAAE,gCAAgC;IACnD,YAAY,EAAE,gCAAgC;IAC9C,gBAAgB,EAAE,+CAA+C;IAEjE,iBAAiB,EAAE,4BAA4B;IAC/C,QAAQ,EAAE,oCAAoC;IAC9C,WAAW,EAAE,iCAAiC;IAC9C,iBAAiB,EAAE,yCAAyC;IAC5D,WAAW,EAAE,+CAA+C;IAE5D,WAAW,EAAE,4CAA4C;IACzD,WAAW,EAAE,mCAAmC;IAChD,kBAAkB,EAAE,0CAA0C;IAC9D,iBAAiB,EAAE,4CAA4C;IAC/D,QAAQ,EAAE,iCAAiC;IAE3C,eAAe,EAAE,yCAAyC;IAC1D,aAAa,EAAE,kDAAkD;IACjE,eAAe,EAAE,wCAAwC;IACzD,cAAc,EAAE,oCAAoC;IACpD,MAAM,EAAE,6BAA6B;IACrC,UAAU,EAAE,4CAA4C;IACxD,cAAc,EAAE,wCAAwC;IACxD,kBAAkB,EAAE,oCAAoC;IACxD,gBAAgB,EAAE,iCAAiC;IACnD,eAAe,EAAE,wBAAwB;IACzC,UAAU,EAAE,kCAAkC;IAC9C,OAAO,EAAE,2CAA2C;IACpD,UAAU,EAAE,iDAAiD;IAE7D,gBAAgB,EAAE,+BAA+B;IACjD,eAAe,EAAE,mBAAmB;IACpC,iBAAiB,EAAE,qCAAqC;IAExD,eAAe,EAAE,gDAAgD;IACjE,WAAW,EAAE,wCAAwC;IACrD,aAAa,EAAE,6CAA6C;IAE5D,gBAAgB,EAAE,qCAAqC;IACvD,kBAAkB,EAAE,qDAAqD;IACzE,eAAe,EAAE,uCAAuC;IACxD,kBAAkB,EAAE,mCAAmC;IACvD,sBAAsB,EAAE,0CAA0C;CAChB,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Splitting an AI-judged phrase list into what counts and what rules it out.
3
+ *
4
+ * A trigger's phrases are alternatives: one match is enough. That makes the
5
+ * list useless for saying "but not this" — and "but not this" is what keeps a
6
+ * classifier honest. A customer answering "pode sim" to an offer of a meeting
7
+ * is agreeing to the meeting, not asking for a human, and without a way to say
8
+ * so every cheerful yes reads as a handoff request.
9
+ *
10
+ * So a phrase that opens with `!` is an exclusion: it does not make the trigger
11
+ * fire, it stops it. Exclusions win over matches, and the model is told both
12
+ * lists separately.
13
+ */
14
+ export interface Phrases {
15
+ /** Any one of these makes it true. */
16
+ counts: string[];
17
+ /** Any one of these makes it false, whatever matched. */
18
+ excludes: string[];
19
+ }
20
+ /**
21
+ * Split a phrase list on the leading `!`. Blank entries and a bare `"!"` are
22
+ * dropped: they would render as an empty bullet and mean nothing to the model.
23
+ */
24
+ export declare function splitPhrases(phrases: readonly string[]): Phrases;
25
+ //# sourceMappingURL=phrases.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phrases.d.ts","sourceRoot":"","sources":["../../../src/utils/phrases.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,OAAO;IACtB,sCAAsC;IACtC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,yDAAyD;IACzD,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAchE"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ /**
3
+ * Splitting an AI-judged phrase list into what counts and what rules it out.
4
+ *
5
+ * A trigger's phrases are alternatives: one match is enough. That makes the
6
+ * list useless for saying "but not this" — and "but not this" is what keeps a
7
+ * classifier honest. A customer answering "pode sim" to an offer of a meeting
8
+ * is agreeing to the meeting, not asking for a human, and without a way to say
9
+ * so every cheerful yes reads as a handoff request.
10
+ *
11
+ * So a phrase that opens with `!` is an exclusion: it does not make the trigger
12
+ * fire, it stops it. Exclusions win over matches, and the model is told both
13
+ * lists separately.
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.splitPhrases = splitPhrases;
17
+ /**
18
+ * Split a phrase list on the leading `!`. Blank entries and a bare `"!"` are
19
+ * dropped: they would render as an empty bullet and mean nothing to the model.
20
+ */
21
+ function splitPhrases(phrases) {
22
+ const counts = [];
23
+ const excludes = [];
24
+ for (const phrase of phrases) {
25
+ const trimmed = phrase.trim();
26
+ if (!trimmed)
27
+ continue;
28
+ if (trimmed.startsWith("!")) {
29
+ const body = trimmed.slice(1).trim();
30
+ if (body)
31
+ excludes.push(body);
32
+ continue;
33
+ }
34
+ counts.push(trimmed);
35
+ }
36
+ return { counts, excludes };
37
+ }
38
+ //# sourceMappingURL=phrases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phrases.js","sourceRoot":"","sources":["../../../src/utils/phrases.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;AAaH,oCAcC;AAlBD;;;GAGG;AACH,SAAgB,YAAY,CAAC,OAA0B;IACrD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACrC,IAAI,IAAI;gBAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9B,SAAS;QACX,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC9B,CAAC"}
@@ -24,8 +24,8 @@ export type Coerced = {
24
24
  };
25
25
  /**
26
26
  * Turn a raw value from the model into the field's type. Strings are coerced
27
- * to numbers and booleans; enum membership is enforced. The `detail` is the
28
- * outcome line the host shows when a value is dropped.
27
+ * to numbers and booleans; enum membership is enforced. Returns the coerced
28
+ * value, or the code saying why it was rejected (`bad-value`, `not-in-enum`).
29
29
  */
30
30
  export declare function coerceField(def: ScalarDef, raw: unknown): Coerced;
31
31
  export interface WireOptions {
@@ -34,17 +34,8 @@ export interface WireOptions {
34
34
  }
35
35
  /**
36
36
  * The JSON schema a provider sees: an allow-list of JSON-schema keys, with
37
- * `ask`, `extract` and `optional` stripped. Closed (`additionalProperties:
37
+ * `label`, `ask`, `extract` and `optional` stripped. Closed (`additionalProperties:
38
38
  * false`); every property required unless a parameter says `optional`.
39
39
  */
40
40
  export declare function toWireSchema(defs: FieldDefs | ParamDefs, options?: WireOptions): StructuredSchema;
41
- /**
42
- * Merge field rows authored per flow into the agent's one field set. Two
43
- * rows for one slug must agree on type and enum; the first non-empty `ask`
44
- * and `description` win.
45
- */
46
- export declare function buildSchema(groups: Array<{
47
- id: string;
48
- fields: FieldDefs;
49
- }>): FieldDefs;
50
41
  //# sourceMappingURL=schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/utils/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAY,SAAS,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC5F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,yEAAyE;AACzE,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC,wEAAwE;AACxE,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAE/C;AAED,6FAA6F;AAC7F,wBAAgB,aAAa,CAC3B,IAAI,EAAE;IAAE,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EACvD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC5B,MAAM,EAAE,CAGV;AAED,+FAA+F;AAC/F,wBAAgB,WAAW,CAAC,GAAG,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,CAE/D;AAED,MAAM,MAAM,OAAO,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,WAAW,GAAG,aAAa,CAAA;CAAE,CAAC;AAExH;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAOjE;AAyBD,MAAM,WAAW,WAAW;IAC1B,yEAAyE;IACzE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,EAAE,OAAO,GAAE,WAAgB,GAAG,gBAAgB,CASrG;AAYD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAE,CAAC,GAAG,SAAS,CAiCvF"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/utils/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAY,SAAS,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC5F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,yEAAyE;AACzE,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC,wEAAwE;AACxE,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAE/C;AAED,6FAA6F;AAC7F,wBAAgB,aAAa,CAC3B,IAAI,EAAE;IAAE,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EACvD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC5B,MAAM,EAAE,CAGV;AAED,+FAA+F;AAC/F,wBAAgB,WAAW,CAAC,GAAG,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,CAE/D;AAED,MAAM,MAAM,OAAO,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,WAAW,GAAG,aAAa,CAAA;CAAE,CAAC;AAExH;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAOjE;AAyBD,MAAM,WAAW,WAAW;IAC1B,yEAAyE;IACzE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,EAAE,OAAO,GAAE,WAAgB,GAAG,gBAAgB,CASrG"}
@@ -10,8 +10,6 @@ exports.pendingFields = pendingFields;
10
10
  exports.extractMode = extractMode;
11
11
  exports.coerceField = coerceField;
12
12
  exports.toWireSchema = toWireSchema;
13
- exports.buildSchema = buildSchema;
14
- const errors_js_1 = require("../types/errors.js");
15
13
  /** The default number of times a field is asked before it is skipped. */
16
14
  exports.DEFAULT_MAX_ASKS = 3;
17
15
  /** A value counts as known unless it is `undefined`, `null` or `''`. */
@@ -29,8 +27,8 @@ function extractMode(def) {
29
27
  }
30
28
  /**
31
29
  * Turn a raw value from the model into the field's type. Strings are coerced
32
- * to numbers and booleans; enum membership is enforced. The `detail` is the
33
- * outcome line the host shows when a value is dropped.
30
+ * to numbers and booleans; enum membership is enforced. Returns the coerced
31
+ * value, or the code saying why it was rejected (`bad-value`, `not-in-enum`).
34
32
  */
35
33
  function coerceField(def, raw) {
36
34
  const value = coerceScalar(def, raw);
@@ -71,7 +69,7 @@ function coerceScalar(def, raw) {
71
69
  }
72
70
  /**
73
71
  * The JSON schema a provider sees: an allow-list of JSON-schema keys, with
74
- * `ask`, `extract` and `optional` stripped. Closed (`additionalProperties:
72
+ * `label`, `ask`, `extract` and `optional` stripped. Closed (`additionalProperties:
75
73
  * false`); every property required unless a parameter says `optional`.
76
74
  */
77
75
  function toWireSchema(defs, options = {}) {
@@ -97,42 +95,4 @@ function wireProperty(def, nullable) {
97
95
  out.type = [def.type, "null"];
98
96
  return out;
99
97
  }
100
- /**
101
- * Merge field rows authored per flow into the agent's one field set. Two
102
- * rows for one slug must agree on type and enum; the first non-empty `ask`
103
- * and `description` win.
104
- */
105
- function buildSchema(groups) {
106
- const merged = {};
107
- const owner = {};
108
- for (const group of groups) {
109
- for (const [slug, def] of Object.entries(group.fields)) {
110
- const seen = merged[slug];
111
- if (!seen) {
112
- merged[slug] = { ...def };
113
- owner[slug] = group.id;
114
- continue;
115
- }
116
- if (seen.type !== def.type) {
117
- throw new errors_js_1.FlowConfigurationError(`[FlowConfigurationError] field "${slug}" has two types: "${seen.type}" in "${owner[slug]}", ` +
118
- `"${def.type}" in "${group.id}". Give one slug one type.`);
119
- }
120
- if (seen.enum && def.enum && !sameList(seen.enum, def.enum)) {
121
- throw new errors_js_1.FlowConfigurationError(`[FlowConfigurationError] field "${slug}" has two option lists: in "${owner[slug]}" and "${group.id}". ` +
122
- `Give one slug one list.`);
123
- }
124
- merged[slug] = {
125
- ...seen,
126
- enum: seen.enum ?? def.enum,
127
- ask: seen.ask ?? def.ask,
128
- description: seen.description ?? def.description,
129
- extract: seen.extract ?? def.extract,
130
- };
131
- }
132
- }
133
- return merged;
134
- }
135
- function sameList(a, b) {
136
- return a.length === b.length && a.every((v, i) => v === b[i]);
137
- }
138
98
  //# sourceMappingURL=schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/utils/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/utils/schema.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,14 @@
5
5
  * per-turn context) and `input` (the run's trigger payload). A path that
6
6
  * resolves to nothing keeps its placeholder, so a typo stays visible instead
7
7
  * of vanishing into an empty string.
8
+ *
9
+ * A path the host answered with nothing is a different case: it knows the
10
+ * field and knows it is blank. Then the placeholder goes and `tidy` closes the
11
+ * gap it left, so "Ola {{context.lead.name}}, tudo bem?" sends "Ola, tudo bem?"
12
+ * and never "Ola , tudo bem?". Two things count as blank: an empty string, and
13
+ * a path that walks THROUGH a null — `context.lead` being `null` means there
14
+ * is no lead, so "the lead's name" is blank, not mistyped. A null at the end of
15
+ * a path is still unknown: a field that collected nothing keeps its braces.
8
16
  */
9
17
  export interface TemplateScope {
10
18
  data?: unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../../src/utils/template.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAID,wBAAgB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,MAAM,CAKrE;AAED,wFAAwF;AACxF,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,GAAG,CAAC,CAS/D"}
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../../src/utils/template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAOD,wBAAgB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,MAAM,CAcrE;AAwBD,wFAAwF;AACxF,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,GAAG,CAAC,CAS/D"}
@@ -6,16 +6,58 @@
6
6
  * per-turn context) and `input` (the run's trigger payload). A path that
7
7
  * resolves to nothing keeps its placeholder, so a typo stays visible instead
8
8
  * of vanishing into an empty string.
9
+ *
10
+ * A path the host answered with nothing is a different case: it knows the
11
+ * field and knows it is blank. Then the placeholder goes and `tidy` closes the
12
+ * gap it left, so "Ola {{context.lead.name}}, tudo bem?" sends "Ola, tudo bem?"
13
+ * and never "Ola , tudo bem?". Two things count as blank: an empty string, and
14
+ * a path that walks THROUGH a null — `context.lead` being `null` means there
15
+ * is no lead, so "the lead's name" is blank, not mistyped. A null at the end of
16
+ * a path is still unknown: a field that collected nothing keeps its braces.
9
17
  */
10
18
  Object.defineProperty(exports, "__esModule", { value: true });
11
19
  exports.render = render;
12
20
  exports.renderDeep = renderDeep;
13
21
  const PLACEHOLDER = /\{\{\s*([^}\s]+)\s*\}\}/g;
22
+ /** The path ran into a `null` on its way down: the container the host named is absent. */
23
+ const ABSENT = Symbol("absent");
14
24
  function render(template, scope) {
15
- return template.replace(PLACEHOLDER, (match, path) => {
25
+ let emptied = false;
26
+ const out = template.replace(PLACEHOLDER, (match, path) => {
16
27
  const value = lookup(scope, path.split("."));
17
- return value === undefined || value === null ? match : stringify(value);
28
+ if (value === ABSENT) {
29
+ emptied = true;
30
+ return "";
31
+ }
32
+ if (value === undefined || value === null)
33
+ return match;
34
+ const text = stringify(value);
35
+ if (text === "")
36
+ emptied = true;
37
+ return text;
18
38
  });
39
+ return emptied ? tidy(out) : out;
40
+ }
41
+ /**
42
+ * Close the hole an empty value leaves: a doubled space, a space before
43
+ * punctuation, a comma left before the end of a sentence or before another
44
+ * comma ("Oi, {{name}}!" gives "Oi!", not "Oi,!"; "Oi, {{name}}, tudo bem?"
45
+ * gives "Oi, tudo bem?", not "Oi,, tudo bem?"), punctuation stranded at the
46
+ * start of a line ("{{greeting}}, {{name}}! Tudo bem?" gives "Tudo bem?"), a
47
+ * space at the end of a line.
48
+ *
49
+ * Deliberately narrow. It only runs on a string where something substituted to
50
+ * "", and it only collapses a run of spaces that follows a visible character,
51
+ * so indentation in a markdown list survives. A line that is only punctuation
52
+ * keeps it, so a message never renders to nothing.
53
+ */
54
+ function tidy(text) {
55
+ return text
56
+ .replace(/(?<=\S)[ \t]{2,}/g, " ")
57
+ .replace(/ +([,.;:!?\u2026])/g, "$1")
58
+ .replace(/[,;]+(?=[,;.!?\u2026])/g, "")
59
+ .replace(/^([ \t]*)[,;:!?]+[ \t]+(?=\S)/gm, "$1")
60
+ .replace(/[ \t]+$/gm, "");
19
61
  }
20
62
  /** `render` over every string inside a value, recursively. Non-strings pass through. */
21
63
  function renderDeep(value, scope) {
@@ -31,7 +73,9 @@ function renderDeep(value, scope) {
31
73
  function lookup(root, keys) {
32
74
  let current = root;
33
75
  for (const key of keys) {
34
- if (current === null || typeof current !== "object")
76
+ if (current === null)
77
+ return ABSENT;
78
+ if (typeof current !== "object")
35
79
  return undefined;
36
80
  current = current[key];
37
81
  }
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/utils/template.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAUH,wBAKC;AAGD,gCASC;AAnBD,MAAM,WAAW,GAAG,0BAA0B,CAAC;AAE/C,SAAgB,MAAM,CAAC,QAAgB,EAAE,KAAoB;IAC3D,OAAO,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;QAC3D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7C,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;AACL,CAAC;AAED,wFAAwF;AACxF,SAAgB,UAAU,CAAI,KAAQ,EAAE,KAAoB;IAC1D,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,KAAK,EAAE,KAAK,CAAM,CAAC;IAChE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAa,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAM,CAAC;IAC5F,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAC5D,CAAC;IACT,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,MAAM,CAAC,IAAa,EAAE,IAAc;IAC3C,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QACtE,OAAO,GAAI,OAAmC,CAAC,GAAG,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IAClF,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/utils/template.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@
6
6
  * Runner moves the runs by code, Understand and Speak spend at most one
7
7
  * provider call apiece, and Runner settles what they returned.
8
8
  */
9
- import type { AgentOptions, TurnInput, TurnResult, TurnStreamChunk } from "../types/agent.js";
9
+ import type { AgentOptions, PendingWakesInput, ScheduleEntry, TurnInput, TurnResult, TurnStreamChunk } from "../types/agent.js";
10
10
  export declare class Agent<C = unknown, D = unknown> {
11
11
  readonly options: AgentOptions<C, D>;
12
12
  private readonly runner;
@@ -18,6 +18,13 @@ export declare class Agent<C = unknown, D = unknown> {
18
18
  turn(input: TurnInput<C, D>): Promise<TurnResult<D>>;
19
19
  /** `turn`, streaming the spoken text as it is generated; the last chunk carries the result. */
20
20
  turnStream(input: TurnInput<C, D>): AsyncIterable<TurnStreamChunk<D>>;
21
+ /**
22
+ * Every wake a saved session is waiting on, as its turns scheduled them: each parked run's,
23
+ * and each silence flow's since the assistant last spoke. For a queue that lost its jobs, and
24
+ * for sessions no turn has armed yet, such as blobs lifted by `migrateSession`. It changes
25
+ * nothing and spends no call: enqueue the entries as you would a turn's `schedule[]`.
26
+ */
27
+ pendingWakes(input: PendingWakesInput<C, D>): ScheduleEntry[];
21
28
  /** Load, Ingest, Understand, Decide and Run: everything before the one speaker is known. */
22
29
  private open;
23
30
  /** With `compaction` set, the history both calls see is trimmed once per turn; a summarization is one model call. */
@@ -1 +1 @@
1
- {"version":3,"file":"Agent.d.ts","sourceRoot":"","sources":["../../src/core/Agent.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAa9F,qBAAa,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO;IAM7B,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;IALhD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;IAC9C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAoB;gBAE3B,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;IAShD,yFAAyF;IACnF,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAM1D,+FAA+F;IACxF,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAa5E,4FAA4F;YAC9E,IAAI;IAWlB,qHAAqH;YACvG,SAAS;CAaxB"}
1
+ {"version":3,"file":"Agent.d.ts","sourceRoot":"","sources":["../../src/core/Agent.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAahI,qBAAa,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO;IAM7B,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;IALhD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;IAC9C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAoB;gBAE3B,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;IAShD,yFAAyF;IACnF,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAM1D,+FAA+F;IACxF,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAa5E;;;;;OAKG;IACH,YAAY,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,aAAa,EAAE;IAI7D,4FAA4F;YAC9E,IAAI;IAWlB,qHAAqH;YACvG,SAAS;CAaxB"}
@@ -10,7 +10,7 @@ import { FlowConfigurationError } from "../types/errors.js";
10
10
  import { logger, LoggerLevel } from "../utils/logger.js";
11
11
  import { addUsage } from "../utils/usage.js";
12
12
  import { CompactionEngine } from "./CompactionEngine.js";
13
- import { validateFlow } from "./FlowSpec.js";
13
+ import { BUILT_IN_CONDITIONS, checkPred, validateFlow } from "./FlowSpec.js";
14
14
  import { Runner } from "./Runner.js";
15
15
  import { Speak } from "./Speak.js";
16
16
  import { Understand } from "./Understand.js";
@@ -46,6 +46,15 @@ export class Agent {
46
46
  await this.runner.settle(turn, outcome);
47
47
  yield { done: true, result: this.runner.finish(turn) };
48
48
  }
49
+ /**
50
+ * Every wake a saved session is waiting on, as its turns scheduled them: each parked run's,
51
+ * and each silence flow's since the assistant last spoke. For a queue that lost its jobs, and
52
+ * for sessions no turn has armed yet, such as blobs lifted by `migrateSession`. It changes
53
+ * nothing and spends no call: enqueue the entries as you would a turn's `schedule[]`.
54
+ */
55
+ pendingWakes(input) {
56
+ return this.runner.pendingWakes(input);
57
+ }
49
58
  /** Load, Ingest, Understand, Decide and Run: everything before the one speaker is known. */
50
59
  async open(input) {
51
60
  const { runner } = this;
@@ -88,6 +97,14 @@ function compactionOptions(options) {
88
97
  }
89
98
  /** Every name a flow uses must resolve now, not on the turn that first reaches it. */
90
99
  function validate(options) {
100
+ // A host condition under a built-in's name is never called: the built-in answers first.
101
+ for (const name of Object.keys(options.conditions ?? {})) {
102
+ if (BUILT_IN_CONDITIONS.includes(name)) {
103
+ throw new FlowConfigurationError(`[FlowConfigurationError] condition "${name}" shadows a built-in: ${BUILT_IN_CONDITIONS.join(", ")} are reserved. Rename it.`);
104
+ }
105
+ }
106
+ // An agent-level `if` is judged on every turn, so an unknown name here would throw on every turn.
107
+ options.instructions?.forEach((ins, i) => checkPred(ins.if, "agent", `instructions[${i}].if`, options));
91
108
  const ids = new Set();
92
109
  for (const flow of options.flows ?? []) {
93
110
  if (ids.has(flow.id)) {
@@ -109,6 +126,7 @@ function validate(options) {
109
126
  }
110
127
  const { idle } = options;
111
128
  if (idle && idle !== "silent") {
129
+ idle.instructions?.forEach((ins, i) => checkPred(ins.if, "idle", `instructions[${i}].if`, options));
112
130
  const known = new Set((options.tools ?? []).map((tool) => tool.id));
113
131
  for (const name of idle.tools ?? []) {
114
132
  if (!known.has(name)) {
@@ -1 +1 @@
1
- {"version":3,"file":"Agent.js","sourceRoot":"","sources":["../../src/core/Agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Agent.js","sourceRoot":"","sources":["../../src/core/Agent.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"CompactionEngine.d.ts","sourceRoot":"","sources":["../../src/core/CompactionEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAGlF,qBAAa,gBAAgB;IACzB;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IA4BxD;;;;;;OAMG;IACH,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM;IAiBrD;;;;;;OAMG;IACH,MAAM,CAAC,qBAAqB,CACxB,OAAO,EAAE,WAAW,EAAE,EACtB,iBAAiB,EAAE,MAAM,GAC1B,WAAW,EAAE;IAkBhB;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IA2B3B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAc/B;;;OAGG;mBACkB,iBAAiB;IA+BtC;;;;;;;;;OASG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAWjC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAgCjC;;;;;;;;;;;OAWG;WACU,eAAe,CACxB,OAAO,EAAE,WAAW,EAAE,EACtB,OAAO,EAAE,iBAAiB,GAC3B,OAAO,CAAC,gBAAgB,CAAC;CAkG/B"}
1
+ {"version":3,"file":"CompactionEngine.d.ts","sourceRoot":"","sources":["../../src/core/CompactionEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAGlF,qBAAa,gBAAgB;IACzB;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAmCxD;;;;;;OAMG;IACH,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM;IAiBrD;;;;;;OAMG;IACH,MAAM,CAAC,qBAAqB,CACxB,OAAO,EAAE,WAAW,EAAE,EACtB,iBAAiB,EAAE,MAAM,GAC1B,WAAW,EAAE;IAkBhB;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IA2B3B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAc/B;;;OAGG;mBACkB,iBAAiB;IA+BtC;;;;;;;;;OASG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAWjC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAgCjC;;;;;;;;;;;OAWG;WACU,eAAe,CACxB,OAAO,EAAE,WAAW,EAAE,EACtB,OAAO,EAAE,iBAAiB,GAC3B,OAAO,CAAC,gBAAgB,CAAC;CAkG/B"}
@@ -14,18 +14,23 @@ export class CompactionEngine {
14
14
  * Validate CompactionOptions. Throws on invalid values.
15
15
  */
16
16
  static validateOptions(options) {
17
+ if (typeof options.maxTokens !== "number" || !(options.maxTokens > 0)) {
18
+ throw new Error(`[CompactionEngine] maxTokens is ${String(options.maxTokens)}: it must be above 0. ` +
19
+ `Set it to the most history, in tokens, each call should carry, e.g. 100000.`);
20
+ }
17
21
  if (typeof options.compactionThreshold !== "number" ||
18
22
  options.compactionThreshold < 0.5 ||
19
23
  options.compactionThreshold > 0.95) {
20
- throw new Error(`compactionThreshold must be between 0.5 and 0.95, got ${options.compactionThreshold}`);
24
+ throw new Error(`[CompactionEngine] compactionThreshold is ${String(options.compactionThreshold)}: it must be between 0.5 and 0.95. ` +
25
+ `Use 0.8 unless you measured otherwise.`);
21
26
  }
22
27
  if (typeof options.preserveRecentCount !== "number" ||
23
28
  options.preserveRecentCount < 2) {
24
- throw new Error(`preserveRecentCount must be >= 2, got ${options.preserveRecentCount}`);
29
+ throw new Error(`[CompactionEngine] preserveRecentCount is ${String(options.preserveRecentCount)}: it must be 2 or more. Use 4, the default.`);
25
30
  }
26
31
  if (typeof options.maxToolResultChars !== "number" ||
27
32
  options.maxToolResultChars <= 0) {
28
- throw new Error(`maxToolResultChars must be > 0, got ${options.maxToolResultChars}`);
33
+ throw new Error(`[CompactionEngine] maxToolResultChars is ${String(options.maxToolResultChars)}: it must be above 0. Use 5000, the default.`);
29
34
  }
30
35
  }
31
36
  /**