experimental-ash 0.2.0-alpha.2 → 0.2.0-alpha.21

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 (585) hide show
  1. package/dist/src/channel/http-channel.d.ts +26 -0
  2. package/dist/src/channel/http-channel.d.ts.map +1 -0
  3. package/dist/src/channel/http-channel.js +24 -0
  4. package/dist/src/channel/http-channel.js.map +1 -0
  5. package/dist/src/channel/resolve-text.d.ts +20 -0
  6. package/dist/src/channel/resolve-text.d.ts.map +1 -0
  7. package/dist/src/channel/resolve-text.js +60 -0
  8. package/dist/src/channel/resolve-text.js.map +1 -0
  9. package/dist/src/channel/schedule-channel.d.ts +16 -0
  10. package/dist/src/channel/schedule-channel.d.ts.map +1 -0
  11. package/dist/src/channel/schedule-channel.js +20 -0
  12. package/dist/src/channel/schedule-channel.js.map +1 -0
  13. package/dist/src/channel/schedule.d.ts +4 -6
  14. package/dist/src/channel/schedule.d.ts.map +1 -1
  15. package/dist/src/channel/schedule.js +6 -9
  16. package/dist/src/channel/schedule.js.map +1 -1
  17. package/dist/src/channel/slack-channel.d.ts +125 -0
  18. package/dist/src/channel/slack-channel.d.ts.map +1 -0
  19. package/dist/src/channel/slack-channel.js +320 -0
  20. package/dist/src/channel/slack-channel.js.map +1 -0
  21. package/dist/src/channel/subagent-channel.d.ts +41 -0
  22. package/dist/src/channel/subagent-channel.d.ts.map +1 -0
  23. package/dist/src/channel/{subagent-emitter.js → subagent-channel.js} +15 -19
  24. package/dist/src/channel/subagent-channel.js.map +1 -0
  25. package/dist/src/channel/types.d.ts +157 -90
  26. package/dist/src/channel/types.d.ts.map +1 -1
  27. package/dist/src/channel/types.js +64 -1
  28. package/dist/src/channel/types.js.map +1 -1
  29. package/dist/src/cli/dev/input-requests.d.ts +4 -4
  30. package/dist/src/cli/dev/input-requests.d.ts.map +1 -1
  31. package/dist/src/cli/dev/input-requests.js +34 -65
  32. package/dist/src/cli/dev/input-requests.js.map +1 -1
  33. package/dist/src/cli/dev/repl.d.ts.map +1 -1
  34. package/dist/src/cli/dev/repl.js +41 -24
  35. package/dist/src/cli/dev/repl.js.map +1 -1
  36. package/dist/src/client/index.d.ts +3 -2
  37. package/dist/src/client/index.d.ts.map +1 -1
  38. package/dist/src/client/index.js +1 -0
  39. package/dist/src/client/index.js.map +1 -1
  40. package/dist/src/client/message-response.d.ts +5 -5
  41. package/dist/src/client/message-response.d.ts.map +1 -1
  42. package/dist/src/client/message-response.js +6 -6
  43. package/dist/src/client/message-response.js.map +1 -1
  44. package/dist/src/client/open-stream.d.ts +1 -1
  45. package/dist/src/client/open-stream.d.ts.map +1 -1
  46. package/dist/src/client/open-stream.js +1 -1
  47. package/dist/src/client/open-stream.js.map +1 -1
  48. package/dist/src/client/session-utils.d.ts +3 -3
  49. package/dist/src/client/session-utils.d.ts.map +1 -1
  50. package/dist/src/client/session-utils.js +4 -4
  51. package/dist/src/client/session-utils.js.map +1 -1
  52. package/dist/src/client/session.d.ts +5 -5
  53. package/dist/src/client/session.js +28 -28
  54. package/dist/src/client/session.js.map +1 -1
  55. package/dist/src/client/types.d.ts +8 -8
  56. package/dist/src/client/types.d.ts.map +1 -1
  57. package/dist/src/compiler/channel-url.d.ts +1 -1
  58. package/dist/src/compiler/channel-url.js +1 -1
  59. package/dist/src/compiler/manifest.d.ts +38 -5
  60. package/dist/src/compiler/manifest.d.ts.map +1 -1
  61. package/dist/src/compiler/manifest.js +15 -1
  62. package/dist/src/compiler/manifest.js.map +1 -1
  63. package/dist/src/compiler/module-map.js +8 -0
  64. package/dist/src/compiler/module-map.js.map +1 -1
  65. package/dist/src/compiler/normalize-channel.d.ts +1 -1
  66. package/dist/src/compiler/normalize-channel.js +3 -3
  67. package/dist/src/compiler/normalize-channel.js.map +1 -1
  68. package/dist/src/compiler/normalize-connection.d.ts +14 -0
  69. package/dist/src/compiler/normalize-connection.d.ts.map +1 -0
  70. package/dist/src/compiler/normalize-connection.js +29 -0
  71. package/dist/src/compiler/normalize-connection.js.map +1 -0
  72. package/dist/src/compiler/normalize-manifest.d.ts.map +1 -1
  73. package/dist/src/compiler/normalize-manifest.js +2 -0
  74. package/dist/src/compiler/normalize-manifest.js.map +1 -1
  75. package/dist/src/context/accessors.d.ts +13 -12
  76. package/dist/src/context/accessors.d.ts.map +1 -1
  77. package/dist/src/context/accessors.js +16 -17
  78. package/dist/src/context/accessors.js.map +1 -1
  79. package/dist/src/context/container.d.ts +17 -19
  80. package/dist/src/context/container.d.ts.map +1 -1
  81. package/dist/src/context/container.js +21 -14
  82. package/dist/src/context/container.js.map +1 -1
  83. package/dist/src/context/durable-context.d.ts +18 -0
  84. package/dist/src/context/durable-context.d.ts.map +1 -0
  85. package/dist/src/context/durable-context.js +49 -0
  86. package/dist/src/context/durable-context.js.map +1 -0
  87. package/dist/src/context/key.d.ts +43 -83
  88. package/dist/src/context/key.d.ts.map +1 -1
  89. package/dist/src/context/key.js +58 -80
  90. package/dist/src/context/key.js.map +1 -1
  91. package/dist/src/context/keys.d.ts +8 -20
  92. package/dist/src/context/keys.d.ts.map +1 -1
  93. package/dist/src/context/keys.js +20 -34
  94. package/dist/src/context/keys.js.map +1 -1
  95. package/dist/src/context/provider.d.ts +2 -2
  96. package/dist/src/context/provider.d.ts.map +1 -1
  97. package/dist/src/context/providers/connection.d.ts +4 -0
  98. package/dist/src/context/providers/connection.d.ts.map +1 -0
  99. package/dist/src/context/providers/connection.js +18 -0
  100. package/dist/src/context/providers/connection.js.map +1 -0
  101. package/dist/src/context/providers/session.d.ts.map +1 -1
  102. package/dist/src/context/providers/session.js +1 -2
  103. package/dist/src/context/providers/session.js.map +1 -1
  104. package/dist/src/context/providers/skill.d.ts.map +1 -1
  105. package/dist/src/context/providers/skill.js +2 -15
  106. package/dist/src/context/providers/skill.js.map +1 -1
  107. package/dist/src/context/run-step.d.ts +6 -8
  108. package/dist/src/context/run-step.d.ts.map +1 -1
  109. package/dist/src/context/run-step.js +15 -17
  110. package/dist/src/context/run-step.js.map +1 -1
  111. package/dist/src/context/seed-keys.d.ts +21 -0
  112. package/dist/src/context/seed-keys.d.ts.map +1 -0
  113. package/dist/src/context/seed-keys.js +31 -0
  114. package/dist/src/context/seed-keys.js.map +1 -0
  115. package/dist/src/context/serialize.d.ts +8 -9
  116. package/dist/src/context/serialize.d.ts.map +1 -1
  117. package/dist/src/context/serialize.js +38 -15
  118. package/dist/src/context/serialize.js.map +1 -1
  119. package/dist/src/discover/connections.d.ts +48 -0
  120. package/dist/src/discover/connections.d.ts.map +1 -0
  121. package/dist/src/discover/connections.js +169 -0
  122. package/dist/src/discover/connections.js.map +1 -0
  123. package/dist/src/discover/discover-agent.d.ts +1 -0
  124. package/dist/src/discover/discover-agent.d.ts.map +1 -1
  125. package/dist/src/discover/discover-agent.js +8 -0
  126. package/dist/src/discover/discover-agent.js.map +1 -1
  127. package/dist/src/discover/discover-subagent.js +7 -0
  128. package/dist/src/discover/discover-subagent.js.map +1 -1
  129. package/dist/src/discover/filesystem.d.ts +3 -3
  130. package/dist/src/discover/filesystem.d.ts.map +1 -1
  131. package/dist/src/discover/filesystem.js +7 -0
  132. package/dist/src/discover/filesystem.js.map +1 -1
  133. package/dist/src/discover/grammar.d.ts +20 -4
  134. package/dist/src/discover/grammar.d.ts.map +1 -1
  135. package/dist/src/discover/grammar.js +31 -5
  136. package/dist/src/discover/grammar.js.map +1 -1
  137. package/dist/src/discover/manifest.d.ts +28 -1
  138. package/dist/src/discover/manifest.d.ts.map +1 -1
  139. package/dist/src/discover/manifest.js +11 -1
  140. package/dist/src/discover/manifest.js.map +1 -1
  141. package/dist/src/evals/runner/artifacts.js +1 -1
  142. package/dist/src/evals/runner/artifacts.js.map +1 -1
  143. package/dist/src/evals/runner/derive-run-facts.js +5 -5
  144. package/dist/src/evals/runner/derive-run-facts.js.map +1 -1
  145. package/dist/src/evals/runner/execute-case.js +4 -4
  146. package/dist/src/evals/runner/execute-case.js.map +1 -1
  147. package/dist/src/evals/runner/execute-suite.js +1 -1
  148. package/dist/src/evals/runner/execute-suite.js.map +1 -1
  149. package/dist/src/evals/runner/reporters/braintrust.js +2 -2
  150. package/dist/src/evals/runner/reporters/braintrust.js.map +1 -1
  151. package/dist/src/evals/types.d.ts +4 -4
  152. package/dist/src/evals/types.d.ts.map +1 -1
  153. package/dist/src/execution/continuous-entry.d.ts +18 -9
  154. package/dist/src/execution/continuous-entry.d.ts.map +1 -1
  155. package/dist/src/execution/continuous-entry.js +62 -18
  156. package/dist/src/execution/continuous-entry.js.map +1 -1
  157. package/dist/src/execution/continuous-runtime.d.ts +1 -1
  158. package/dist/src/execution/continuous-runtime.d.ts.map +1 -1
  159. package/dist/src/execution/continuous-runtime.js +14 -10
  160. package/dist/src/execution/continuous-runtime.js.map +1 -1
  161. package/dist/src/execution/node-step.d.ts +1 -2
  162. package/dist/src/execution/node-step.d.ts.map +1 -1
  163. package/dist/src/execution/node-step.js +42 -55
  164. package/dist/src/execution/node-step.js.map +1 -1
  165. package/dist/src/execution/runtime-context.d.ts +3 -0
  166. package/dist/src/execution/runtime-context.d.ts.map +1 -1
  167. package/dist/src/execution/runtime-context.js +6 -4
  168. package/dist/src/execution/runtime-context.js.map +1 -1
  169. package/dist/src/execution/session.d.ts +2 -1
  170. package/dist/src/execution/session.d.ts.map +1 -1
  171. package/dist/src/execution/session.js +1 -0
  172. package/dist/src/execution/session.js.map +1 -1
  173. package/dist/src/execution/skills/access.d.ts.map +1 -1
  174. package/dist/src/execution/skills/instructions.d.ts +6 -6
  175. package/dist/src/execution/skills/instructions.d.ts.map +1 -1
  176. package/dist/src/execution/skills/instructions.js +15 -15
  177. package/dist/src/execution/skills/instructions.js.map +1 -1
  178. package/dist/src/execution/skills/types.d.ts +4 -4
  179. package/dist/src/execution/skills/types.d.ts.map +1 -1
  180. package/dist/src/execution/step-context.d.ts +27 -0
  181. package/dist/src/execution/step-context.d.ts.map +1 -0
  182. package/dist/src/execution/step-context.js +54 -0
  183. package/dist/src/execution/step-context.js.map +1 -0
  184. package/dist/src/execution/subagent-tool.d.ts +1 -1
  185. package/dist/src/execution/subagent-tool.d.ts.map +1 -1
  186. package/dist/src/execution/subagent-tool.js +3 -4
  187. package/dist/src/execution/subagent-tool.js.map +1 -1
  188. package/dist/src/execution/tool-compaction.d.ts +1 -3
  189. package/dist/src/execution/tool-compaction.d.ts.map +1 -1
  190. package/dist/src/execution/tool-compaction.js +6 -20
  191. package/dist/src/execution/tool-compaction.js.map +1 -1
  192. package/dist/src/execution/types.d.ts +1 -1
  193. package/dist/src/execution/types.d.ts.map +1 -1
  194. package/dist/src/execution/workflow-entry.d.ts +4 -5
  195. package/dist/src/execution/workflow-entry.d.ts.map +1 -1
  196. package/dist/src/execution/workflow-entry.js +7 -2
  197. package/dist/src/execution/workflow-entry.js.map +1 -1
  198. package/dist/src/execution/workflow-runtime.d.ts.map +1 -1
  199. package/dist/src/execution/workflow-runtime.js +10 -5
  200. package/dist/src/execution/workflow-runtime.js.map +1 -1
  201. package/dist/src/execution/workflow-steps.d.ts +13 -6
  202. package/dist/src/execution/workflow-steps.d.ts.map +1 -1
  203. package/dist/src/execution/workflow-steps.js +24 -19
  204. package/dist/src/execution/workflow-steps.js.map +1 -1
  205. package/dist/src/harness/emission.d.ts +36 -27
  206. package/dist/src/harness/emission.d.ts.map +1 -1
  207. package/dist/src/harness/emission.js +130 -84
  208. package/dist/src/harness/emission.js.map +1 -1
  209. package/dist/src/harness/execute-tool.d.ts +52 -0
  210. package/dist/src/harness/execute-tool.d.ts.map +1 -0
  211. package/dist/src/harness/execute-tool.js +59 -0
  212. package/dist/src/harness/execute-tool.js.map +1 -0
  213. package/dist/src/harness/input-extraction.d.ts +3 -3
  214. package/dist/src/harness/input-extraction.d.ts.map +1 -1
  215. package/dist/src/harness/input-extraction.js +15 -8
  216. package/dist/src/harness/input-extraction.js.map +1 -1
  217. package/dist/src/harness/input-requests.d.ts +46 -40
  218. package/dist/src/harness/input-requests.d.ts.map +1 -1
  219. package/dist/src/harness/input-requests.js +169 -245
  220. package/dist/src/harness/input-requests.js.map +1 -1
  221. package/dist/src/harness/messages.d.ts +10 -9
  222. package/dist/src/harness/messages.d.ts.map +1 -1
  223. package/dist/src/harness/messages.js +23 -20
  224. package/dist/src/harness/messages.js.map +1 -1
  225. package/dist/src/harness/provider-tools.d.ts +2 -2
  226. package/dist/src/harness/provider-tools.d.ts.map +1 -1
  227. package/dist/src/harness/provider-tools.js +7 -3
  228. package/dist/src/harness/provider-tools.js.map +1 -1
  229. package/dist/src/harness/step-hooks.d.ts +77 -0
  230. package/dist/src/harness/step-hooks.d.ts.map +1 -0
  231. package/dist/src/harness/step-hooks.js +192 -0
  232. package/dist/src/harness/step-hooks.js.map +1 -0
  233. package/dist/src/harness/tool-loop.d.ts +4 -2
  234. package/dist/src/harness/tool-loop.d.ts.map +1 -1
  235. package/dist/src/harness/tool-loop.js +130 -181
  236. package/dist/src/harness/tool-loop.js.map +1 -1
  237. package/dist/src/harness/tools.d.ts +12 -16
  238. package/dist/src/harness/tools.d.ts.map +1 -1
  239. package/dist/src/harness/tools.js +39 -33
  240. package/dist/src/harness/tools.js.map +1 -1
  241. package/dist/src/harness/types.d.ts +44 -28
  242. package/dist/src/harness/types.d.ts.map +1 -1
  243. package/dist/src/harness/types.js +6 -1
  244. package/dist/src/harness/types.js.map +1 -1
  245. package/dist/src/internal/application/compiled-artifacts.d.ts +5 -3
  246. package/dist/src/internal/application/compiled-artifacts.d.ts.map +1 -1
  247. package/dist/src/internal/application/compiled-artifacts.js +19 -40
  248. package/dist/src/internal/application/compiled-artifacts.js.map +1 -1
  249. package/dist/src/internal/application/package.js +1 -1
  250. package/dist/src/internal/authored-definition/channel.d.ts +3 -3
  251. package/dist/src/internal/authored-definition/channel.d.ts.map +1 -1
  252. package/dist/src/internal/authored-definition/channel.js +28 -4
  253. package/dist/src/internal/authored-definition/channel.js.map +1 -1
  254. package/dist/src/internal/authored-definition/connection.d.ts +10 -0
  255. package/dist/src/internal/authored-definition/connection.d.ts.map +1 -0
  256. package/dist/src/internal/authored-definition/connection.js +134 -0
  257. package/dist/src/internal/authored-definition/connection.js.map +1 -0
  258. package/dist/src/internal/authored-module.js +1 -1
  259. package/dist/src/internal/authored-module.js.map +1 -1
  260. package/dist/src/internal/message/builder.d.ts +1 -2
  261. package/dist/src/internal/message/builder.d.ts.map +1 -1
  262. package/dist/src/internal/message/builder.js +4 -12
  263. package/dist/src/internal/message/builder.js.map +1 -1
  264. package/dist/src/internal/nitro/host/configure-message-routes.d.ts +3 -1
  265. package/dist/src/internal/nitro/host/configure-message-routes.d.ts.map +1 -1
  266. package/dist/src/internal/nitro/host/configure-message-routes.js +124 -25
  267. package/dist/src/internal/nitro/host/configure-message-routes.js.map +1 -1
  268. package/dist/src/internal/nitro/host/create-application-nitro.d.ts.map +1 -1
  269. package/dist/src/internal/nitro/host/create-application-nitro.js +63 -21
  270. package/dist/src/internal/nitro/host/create-application-nitro.js.map +1 -1
  271. package/dist/src/internal/nitro/host/load-home-page-web-assets.d.ts +13 -0
  272. package/dist/src/internal/nitro/host/load-home-page-web-assets.d.ts.map +1 -0
  273. package/dist/src/internal/nitro/host/load-home-page-web-assets.js +35 -0
  274. package/dist/src/internal/nitro/host/load-home-page-web-assets.js.map +1 -0
  275. package/dist/src/internal/nitro/host/prepare-application-host.js +1 -1
  276. package/dist/src/internal/nitro/host/prepare-application-host.js.map +1 -1
  277. package/dist/src/internal/nitro/routes/channel-dispatch.d.ts +10 -18
  278. package/dist/src/internal/nitro/routes/channel-dispatch.d.ts.map +1 -1
  279. package/dist/src/internal/nitro/routes/channel-dispatch.js +16 -45
  280. package/dist/src/internal/nitro/routes/channel-dispatch.js.map +1 -1
  281. package/dist/src/internal/nitro/routes/home-page/build-home-page-response.d.ts +88 -0
  282. package/dist/src/internal/nitro/routes/home-page/build-home-page-response.d.ts.map +1 -0
  283. package/dist/src/internal/nitro/routes/home-page/build-home-page-response.js +175 -0
  284. package/dist/src/internal/nitro/routes/home-page/build-home-page-response.js.map +1 -0
  285. package/dist/src/internal/nitro/routes/home.d.ts +7 -0
  286. package/dist/src/internal/nitro/routes/home.d.ts.map +1 -0
  287. package/dist/src/internal/nitro/routes/home.js +22 -0
  288. package/dist/src/internal/nitro/routes/home.js.map +1 -0
  289. package/dist/src/internal/nitro/routes/index.d.ts +3 -8
  290. package/dist/src/internal/nitro/routes/index.d.ts.map +1 -1
  291. package/dist/src/internal/nitro/routes/index.js +18 -36
  292. package/dist/src/internal/nitro/routes/index.js.map +1 -1
  293. package/dist/src/internal/nitro/routes/runtime-artifacts.d.ts +10 -3
  294. package/dist/src/internal/nitro/routes/runtime-artifacts.d.ts.map +1 -1
  295. package/dist/src/internal/nitro/routes/runtime-artifacts.js +2 -9
  296. package/dist/src/internal/nitro/routes/runtime-artifacts.js.map +1 -1
  297. package/dist/src/internal/nitro/routes/runtime-stack.d.ts +8 -7
  298. package/dist/src/internal/nitro/routes/runtime-stack.d.ts.map +1 -1
  299. package/dist/src/internal/nitro/routes/runtime-stack.js +10 -10
  300. package/dist/src/internal/nitro/routes/runtime-stack.js.map +1 -1
  301. package/dist/src/internal/nitro/routes/schedule-task.d.ts +7 -7
  302. package/dist/src/internal/nitro/routes/schedule-task.d.ts.map +1 -1
  303. package/dist/src/internal/nitro/routes/schedule-task.js +22 -30
  304. package/dist/src/internal/nitro/routes/schedule-task.js.map +1 -1
  305. package/dist/src/internal/nitro/routes/web-ui/assets/index.js +10 -0
  306. package/dist/src/internal/nitro/routes/web-ui/assets/style.css +2 -0
  307. package/dist/src/internal/nitro/routes/web-ui/index.html +17 -0
  308. package/dist/src/internal/nitro/routes/workflow-data.d.ts +32 -0
  309. package/dist/src/internal/nitro/routes/workflow-data.d.ts.map +1 -0
  310. package/dist/src/internal/nitro/routes/workflow-data.js +142 -0
  311. package/dist/src/internal/nitro/routes/workflow-data.js.map +1 -0
  312. package/dist/src/internal/nitro/routes/workflow-route-helpers.d.ts +46 -0
  313. package/dist/src/internal/nitro/routes/workflow-route-helpers.d.ts.map +1 -0
  314. package/dist/src/internal/nitro/routes/workflow-route-helpers.js +137 -0
  315. package/dist/src/internal/nitro/routes/workflow-route-helpers.js.map +1 -0
  316. package/dist/src/internal/nitro/routes/workflow-run-events.d.ts +14 -0
  317. package/dist/src/internal/nitro/routes/workflow-run-events.d.ts.map +1 -0
  318. package/dist/src/internal/nitro/routes/workflow-run-events.js +42 -0
  319. package/dist/src/internal/nitro/routes/workflow-run-events.js.map +1 -0
  320. package/dist/src/internal/nitro/routes/workflow-run-steps.d.ts +14 -0
  321. package/dist/src/internal/nitro/routes/workflow-run-steps.d.ts.map +1 -0
  322. package/dist/src/internal/nitro/routes/workflow-run-steps.js +42 -0
  323. package/dist/src/internal/nitro/routes/workflow-run-steps.js.map +1 -0
  324. package/dist/src/internal/nitro/routes/workflow-run.d.ts +13 -0
  325. package/dist/src/internal/nitro/routes/workflow-run.d.ts.map +1 -0
  326. package/dist/src/internal/nitro/routes/workflow-run.js +35 -0
  327. package/dist/src/internal/nitro/routes/workflow-run.js.map +1 -0
  328. package/dist/src/internal/nitro/routes/workflow-runs.d.ts +11 -0
  329. package/dist/src/internal/nitro/routes/workflow-runs.d.ts.map +1 -0
  330. package/dist/src/internal/nitro/routes/workflow-runs.js +29 -0
  331. package/dist/src/internal/nitro/routes/workflow-runs.js.map +1 -0
  332. package/dist/src/protocol/message.d.ts +160 -76
  333. package/dist/src/protocol/message.d.ts.map +1 -1
  334. package/dist/src/protocol/message.js +92 -36
  335. package/dist/src/protocol/message.js.map +1 -1
  336. package/dist/src/protocol/routes.d.ts +11 -3
  337. package/dist/src/protocol/routes.d.ts.map +1 -1
  338. package/dist/src/protocol/routes.js +12 -4
  339. package/dist/src/protocol/routes.js.map +1 -1
  340. package/dist/src/public/channels/auth.d.ts +32 -81
  341. package/dist/src/public/channels/auth.d.ts.map +1 -1
  342. package/dist/src/public/channels/auth.js +23 -86
  343. package/dist/src/public/channels/auth.js.map +1 -1
  344. package/dist/src/public/channels/http.d.ts +66 -26
  345. package/dist/src/public/channels/http.d.ts.map +1 -1
  346. package/dist/src/public/channels/http.js +88 -78
  347. package/dist/src/public/channels/http.js.map +1 -1
  348. package/dist/src/public/channels/index.d.ts +9 -10
  349. package/dist/src/public/channels/index.d.ts.map +1 -1
  350. package/dist/src/public/channels/index.js +9 -9
  351. package/dist/src/public/channels/index.js.map +1 -1
  352. package/dist/src/public/channels/slack/index.d.ts +104 -37
  353. package/dist/src/public/channels/slack/index.d.ts.map +1 -1
  354. package/dist/src/public/channels/slack/index.js +168 -47
  355. package/dist/src/public/channels/slack/index.js.map +1 -1
  356. package/dist/src/public/channels/slack/lowlevel.d.ts +5 -5
  357. package/dist/src/public/channels/slack/lowlevel.d.ts.map +1 -1
  358. package/dist/src/public/channels/slack/lowlevel.js +4 -4
  359. package/dist/src/public/channels/slack/lowlevel.js.map +1 -1
  360. package/dist/src/public/connections/index.d.ts +25 -0
  361. package/dist/src/public/connections/index.d.ts.map +1 -0
  362. package/dist/src/public/connections/index.js +24 -0
  363. package/dist/src/public/connections/index.js.map +1 -0
  364. package/dist/src/public/definitions/channel.d.ts +89 -60
  365. package/dist/src/public/definitions/channel.d.ts.map +1 -1
  366. package/dist/src/public/definitions/channel.js +42 -24
  367. package/dist/src/public/definitions/channel.js.map +1 -1
  368. package/dist/src/public/definitions/connections/mcp.d.ts +60 -0
  369. package/dist/src/public/definitions/connections/mcp.d.ts.map +1 -0
  370. package/dist/src/public/definitions/connections/mcp.js +7 -0
  371. package/dist/src/public/definitions/connections/mcp.js.map +1 -0
  372. package/dist/src/public/definitions/tool.d.ts +14 -7
  373. package/dist/src/public/definitions/tool.d.ts.map +1 -1
  374. package/dist/src/public/definitions/tool.js.map +1 -1
  375. package/dist/src/public/index.d.ts +10 -9
  376. package/dist/src/public/index.d.ts.map +1 -1
  377. package/dist/src/public/index.js +7 -6
  378. package/dist/src/public/index.js.map +1 -1
  379. package/dist/src/public/sandboxes/internal.d.ts +1 -1
  380. package/dist/src/public/sandboxes/internal.js +1 -1
  381. package/dist/src/public/tools/defaults.d.ts +6 -6
  382. package/dist/src/public/tools/defaults.d.ts.map +1 -1
  383. package/dist/src/public/tools/defaults.js +6 -6
  384. package/dist/src/public/tools/defaults.js.map +1 -1
  385. package/dist/src/public/tools/internal.d.ts +1 -1
  386. package/dist/src/public/tools/internal.js +1 -1
  387. package/dist/src/runtime/actions/types.d.ts +21 -18
  388. package/dist/src/runtime/actions/types.d.ts.map +1 -1
  389. package/dist/src/runtime/actions/types.js +22 -19
  390. package/dist/src/runtime/actions/types.js.map +1 -1
  391. package/dist/src/runtime/agent/bootstrap-model-utils.d.ts +37 -0
  392. package/dist/src/runtime/agent/bootstrap-model-utils.d.ts.map +1 -0
  393. package/dist/src/runtime/agent/bootstrap-model-utils.js +149 -0
  394. package/dist/src/runtime/agent/bootstrap-model-utils.js.map +1 -0
  395. package/dist/src/runtime/agent/bootstrap-model.d.ts.map +1 -1
  396. package/dist/src/runtime/agent/bootstrap-model.js +11 -80
  397. package/dist/src/runtime/agent/bootstrap-model.js.map +1 -1
  398. package/dist/src/runtime/agent/bootstrap.d.ts.map +1 -1
  399. package/dist/src/runtime/agent/bootstrap.js +4 -1
  400. package/dist/src/runtime/agent/bootstrap.js.map +1 -1
  401. package/dist/src/runtime/agent/mock-model-adapter.d.ts.map +1 -1
  402. package/dist/src/runtime/agent/mock-model-adapter.js +72 -134
  403. package/dist/src/runtime/agent/mock-model-adapter.js.map +1 -1
  404. package/dist/src/runtime/channels/registry.d.ts +21 -0
  405. package/dist/src/runtime/channels/registry.d.ts.map +1 -0
  406. package/dist/src/runtime/channels/registry.js +65 -0
  407. package/dist/src/runtime/channels/registry.js.map +1 -0
  408. package/dist/src/runtime/connections/mcp-client.d.ts +48 -0
  409. package/dist/src/runtime/connections/mcp-client.d.ts.map +1 -0
  410. package/dist/src/runtime/connections/mcp-client.js +182 -0
  411. package/dist/src/runtime/connections/mcp-client.js.map +1 -0
  412. package/dist/src/runtime/connections/registry.d.ts +33 -0
  413. package/dist/src/runtime/connections/registry.d.ts.map +1 -0
  414. package/dist/src/runtime/connections/registry.js +54 -0
  415. package/dist/src/runtime/connections/registry.js.map +1 -0
  416. package/dist/src/runtime/connections/types.d.ts +75 -0
  417. package/dist/src/runtime/connections/types.d.ts.map +1 -0
  418. package/dist/src/runtime/connections/types.js +9 -0
  419. package/dist/src/runtime/connections/types.js.map +1 -0
  420. package/dist/src/runtime/framework-channels/index.d.ts +6 -6
  421. package/dist/src/runtime/framework-channels/index.d.ts.map +1 -1
  422. package/dist/src/runtime/framework-channels/index.js +16 -14
  423. package/dist/src/runtime/framework-channels/index.js.map +1 -1
  424. package/dist/src/runtime/framework-tools/ask-question.js +4 -4
  425. package/dist/src/runtime/framework-tools/ask-question.js.map +1 -1
  426. package/dist/src/runtime/framework-tools/connection-execute.d.ts +10 -0
  427. package/dist/src/runtime/framework-tools/connection-execute.d.ts.map +1 -0
  428. package/dist/src/runtime/framework-tools/connection-execute.js +50 -0
  429. package/dist/src/runtime/framework-tools/connection-execute.js.map +1 -0
  430. package/dist/src/runtime/framework-tools/connection-search.d.ts +43 -0
  431. package/dist/src/runtime/framework-tools/connection-search.d.ts.map +1 -0
  432. package/dist/src/runtime/framework-tools/connection-search.js +135 -0
  433. package/dist/src/runtime/framework-tools/connection-search.js.map +1 -0
  434. package/dist/src/runtime/framework-tools/file-state.d.ts +5 -5
  435. package/dist/src/runtime/framework-tools/file-state.d.ts.map +1 -1
  436. package/dist/src/runtime/framework-tools/file-state.js +6 -8
  437. package/dist/src/runtime/framework-tools/file-state.js.map +1 -1
  438. package/dist/src/runtime/framework-tools/index.d.ts +3 -1
  439. package/dist/src/runtime/framework-tools/index.d.ts.map +1 -1
  440. package/dist/src/runtime/framework-tools/index.js +10 -1
  441. package/dist/src/runtime/framework-tools/index.js.map +1 -1
  442. package/dist/src/runtime/framework-tools/skill.d.ts +4 -4
  443. package/dist/src/runtime/framework-tools/skill.d.ts.map +1 -1
  444. package/dist/src/runtime/framework-tools/skill.js +14 -11
  445. package/dist/src/runtime/framework-tools/skill.js.map +1 -1
  446. package/dist/src/runtime/framework-tools/todo.d.ts.map +1 -1
  447. package/dist/src/runtime/framework-tools/todo.js +2 -4
  448. package/dist/src/runtime/framework-tools/todo.js.map +1 -1
  449. package/dist/src/runtime/input/types.d.ts +40 -115
  450. package/dist/src/runtime/input/types.d.ts.map +1 -1
  451. package/dist/src/runtime/input/types.js +28 -66
  452. package/dist/src/runtime/input/types.js.map +1 -1
  453. package/dist/src/runtime/loaders/module-map.js +8 -0
  454. package/dist/src/runtime/loaders/module-map.js.map +1 -1
  455. package/dist/src/runtime/prompt/compose.d.ts +4 -1
  456. package/dist/src/runtime/prompt/compose.d.ts.map +1 -1
  457. package/dist/src/runtime/prompt/compose.js +18 -1
  458. package/dist/src/runtime/prompt/compose.js.map +1 -1
  459. package/dist/src/runtime/prompt/connections.d.ts +10 -0
  460. package/dist/src/runtime/prompt/connections.d.ts.map +1 -0
  461. package/dist/src/runtime/prompt/connections.js +25 -0
  462. package/dist/src/runtime/prompt/connections.js.map +1 -0
  463. package/dist/src/runtime/resolve-agent-graph.d.ts.map +1 -1
  464. package/dist/src/runtime/resolve-agent-graph.js +29 -7
  465. package/dist/src/runtime/resolve-agent-graph.js.map +1 -1
  466. package/dist/src/runtime/resolve-agent.d.ts.map +1 -1
  467. package/dist/src/runtime/resolve-agent.js +3 -0
  468. package/dist/src/runtime/resolve-agent.js.map +1 -1
  469. package/dist/src/runtime/resolve-channel.d.ts.map +1 -1
  470. package/dist/src/runtime/resolve-channel.js +1 -0
  471. package/dist/src/runtime/resolve-channel.js.map +1 -1
  472. package/dist/src/runtime/resolve-connection.d.ts +16 -0
  473. package/dist/src/runtime/resolve-connection.d.ts.map +1 -0
  474. package/dist/src/runtime/resolve-connection.js +69 -0
  475. package/dist/src/runtime/resolve-connection.js.map +1 -0
  476. package/dist/src/runtime/resolve-tool.d.ts.map +1 -1
  477. package/dist/src/runtime/resolve-tool.js +8 -0
  478. package/dist/src/runtime/resolve-tool.js.map +1 -1
  479. package/dist/src/runtime/sessions/auth.d.ts +1 -1
  480. package/dist/src/runtime/sessions/compiled-agent-cache.d.ts +2 -0
  481. package/dist/src/runtime/sessions/compiled-agent-cache.d.ts.map +1 -1
  482. package/dist/src/runtime/sessions/compiled-agent-cache.js +14 -0
  483. package/dist/src/runtime/sessions/compiled-agent-cache.js.map +1 -1
  484. package/dist/src/runtime/skills/fragment-context.d.ts +2 -2
  485. package/dist/src/runtime/skills/fragment-context.d.ts.map +1 -1
  486. package/dist/src/runtime/skills/fragment-context.js +2 -2
  487. package/dist/src/runtime/skills/fragment-context.js.map +1 -1
  488. package/dist/src/runtime/standard-schema.d.ts +28 -0
  489. package/dist/src/runtime/standard-schema.d.ts.map +1 -0
  490. package/dist/src/runtime/standard-schema.js +65 -0
  491. package/dist/src/runtime/standard-schema.js.map +1 -0
  492. package/dist/src/runtime/types.d.ts +29 -3
  493. package/dist/src/runtime/types.d.ts.map +1 -1
  494. package/dist/src/services/dev-client/send-message.d.ts +2 -2
  495. package/dist/src/services/dev-client/send-message.d.ts.map +1 -1
  496. package/dist/src/services/dev-client/send-message.js +21 -22
  497. package/dist/src/services/dev-client/send-message.js.map +1 -1
  498. package/dist/src/services/dev-client/session.d.ts +5 -5
  499. package/dist/src/services/dev-client/session.d.ts.map +1 -1
  500. package/dist/src/services/dev-client/session.js +2 -2
  501. package/dist/src/services/dev-client/session.js.map +1 -1
  502. package/dist/src/services/dev-client.d.ts +6 -6
  503. package/dist/src/services/dev-client.d.ts.map +1 -1
  504. package/dist/src/services/dev-client.js +3 -3
  505. package/dist/src/services/dev-client.js.map +1 -1
  506. package/docs/external-agent-protocol.md +37 -34
  507. package/docs/internals/channels.md +15 -12
  508. package/docs/internals/context.md +81 -161
  509. package/docs/internals/message-runtime.md +28 -26
  510. package/docs/public/README.md +22 -20
  511. package/docs/public/auth-and-route-protection.md +15 -12
  512. package/docs/public/channels/README.md +16 -11
  513. package/docs/public/cli-build-and-debugging.md +1 -1
  514. package/docs/public/context-control.md +7 -3
  515. package/docs/public/evals.md +3 -3
  516. package/docs/public/getting-started.md +15 -12
  517. package/docs/public/human-in-the-loop.md +45 -57
  518. package/docs/public/migration-guide.md +71 -0
  519. package/docs/public/project-layout.md +5 -0
  520. package/docs/public/runs-and-streaming.md +32 -25
  521. package/docs/public/schedules.md +4 -4
  522. package/docs/public/session-context.md +131 -15
  523. package/docs/public/skills.md +27 -3
  524. package/docs/public/subagents.md +2 -2
  525. package/docs/public/tools.md +23 -30
  526. package/docs/public/typescript-api.md +16 -12
  527. package/docs/public/vercel-deployment.md +3 -4
  528. package/docs/public/workspace.md +11 -11
  529. package/package.json +18 -11
  530. package/dist/src/channel/emitter-registry.d.ts +0 -34
  531. package/dist/src/channel/emitter-registry.d.ts.map +0 -1
  532. package/dist/src/channel/emitter-registry.js +0 -63
  533. package/dist/src/channel/emitter-registry.js.map +0 -1
  534. package/dist/src/channel/http-emitter.d.ts +0 -16
  535. package/dist/src/channel/http-emitter.d.ts.map +0 -1
  536. package/dist/src/channel/http-emitter.js +0 -22
  537. package/dist/src/channel/http-emitter.js.map +0 -1
  538. package/dist/src/channel/schedule-emitter.d.ts +0 -15
  539. package/dist/src/channel/schedule-emitter.d.ts.map +0 -1
  540. package/dist/src/channel/schedule-emitter.js +0 -21
  541. package/dist/src/channel/schedule-emitter.js.map +0 -1
  542. package/dist/src/channel/slack-emitter.d.ts +0 -56
  543. package/dist/src/channel/slack-emitter.d.ts.map +0 -1
  544. package/dist/src/channel/slack-emitter.js +0 -235
  545. package/dist/src/channel/slack-emitter.js.map +0 -1
  546. package/dist/src/channel/subagent-emitter.d.ts +0 -41
  547. package/dist/src/channel/subagent-emitter.d.ts.map +0 -1
  548. package/dist/src/channel/subagent-emitter.js.map +0 -1
  549. package/dist/src/context/state.d.ts +0 -27
  550. package/dist/src/context/state.d.ts.map +0 -1
  551. package/dist/src/context/state.js +0 -53
  552. package/dist/src/context/state.js.map +0 -1
  553. package/dist/src/internal/message/nitro-route-shims.d.ts +0 -6
  554. package/dist/src/internal/message/nitro-route-shims.d.ts.map +0 -1
  555. package/dist/src/internal/message/nitro-route-shims.js +0 -38
  556. package/dist/src/internal/message/nitro-route-shims.js.map +0 -1
  557. package/dist/src/internal/message/rewrite-generated-imports.d.ts +0 -15
  558. package/dist/src/internal/message/rewrite-generated-imports.d.ts.map +0 -1
  559. package/dist/src/internal/message/rewrite-generated-imports.js +0 -59
  560. package/dist/src/internal/message/rewrite-generated-imports.js.map +0 -1
  561. package/dist/src/internal/nitro/host/channel-url-matcher.d.ts +0 -35
  562. package/dist/src/internal/nitro/host/channel-url-matcher.d.ts.map +0 -1
  563. package/dist/src/internal/nitro/host/channel-url-matcher.js +0 -57
  564. package/dist/src/internal/nitro/host/channel-url-matcher.js.map +0 -1
  565. package/dist/src/internal/nitro/routes/home-page/build-home-page-view-model.d.ts +0 -11
  566. package/dist/src/internal/nitro/routes/home-page/build-home-page-view-model.d.ts.map +0 -1
  567. package/dist/src/internal/nitro/routes/home-page/build-home-page-view-model.js +0 -264
  568. package/dist/src/internal/nitro/routes/home-page/build-home-page-view-model.js.map +0 -1
  569. package/dist/src/internal/nitro/routes/home-page/render-home-page.d.ts +0 -9
  570. package/dist/src/internal/nitro/routes/home-page/render-home-page.d.ts.map +0 -1
  571. package/dist/src/internal/nitro/routes/home-page/render-home-page.js +0 -15
  572. package/dist/src/internal/nitro/routes/home-page/render-home-page.js.map +0 -1
  573. package/dist/src/internal/nitro/routes/index.html +0 -525
  574. package/dist/src/internal/nitro/runtime-configuration.d.ts +0 -16
  575. package/dist/src/internal/nitro/runtime-configuration.d.ts.map +0 -1
  576. package/dist/src/internal/nitro/runtime-configuration.js +0 -23
  577. package/dist/src/internal/nitro/runtime-configuration.js.map +0 -1
  578. package/dist/src/internal/nitro/shims/runtime-configuration-plugin.d.ts +0 -10
  579. package/dist/src/internal/nitro/shims/runtime-configuration-plugin.d.ts.map +0 -1
  580. package/dist/src/internal/nitro/shims/runtime-configuration-plugin.js +0 -17
  581. package/dist/src/internal/nitro/shims/runtime-configuration-plugin.js.map +0 -1
  582. package/dist/src/runtime/tools/execute-tool.d.ts +0 -20
  583. package/dist/src/runtime/tools/execute-tool.d.ts.map +0 -1
  584. package/dist/src/runtime/tools/execute-tool.js +0 -69
  585. package/dist/src/runtime/tools/execute-tool.js.map +0 -1
@@ -1,12 +1,12 @@
1
- import { stepCountIs, ToolLoopAgent, } from "ai";
2
- import { createCompactionCompletedEvent, createCompactionRequestedEvent, createInputRequestedEvent, createRunFailedEvent, } from "../protocol/message.js";
1
+ import { stepCountIs, ToolLoopAgent } from "ai";
2
+ import { createInputRequestedEvent } from "../protocol/message.js";
3
3
  import { ASK_QUESTION_TOOL_NAME } from "../runtime/framework-tools/ask-question.js";
4
- import { compactMessages, getInputTokenCount, resolveCompactionModel, shouldCompact, } from "./compaction.js";
5
- import { emitCompletedStepOutput, emitToolCallActionsAndResults, emitTurnEpilogue, emitTurnPreamble, getHarnessEmissionState, setHarnessEmissionState, } from "./emission.js";
4
+ import { advanceStep, emitFailedStep, emitStreamContent, emitTurnEpilogue, emitTurnPreamble, getHarnessEmissionState, setHarnessEmissionState, } from "./emission.js";
6
5
  import { extractQuestionInputRequests, extractToolApprovalInputRequests, } from "./input-extraction.js";
7
- import { applyStepInputToMessages, consumeDeferredStepInput, getApprovedTools, hasDeferredStepInput, hasStepInput, recordApprovedTools, resolveEmitterInput, setPendingRuntimeInputBatch, } from "./input-requests.js";
6
+ import { consumeDeferredStepInput, getApprovedTools, hasDeferredStepInput, hasStepInput, resolvePendingInput, setPendingInputBatch, } from "./input-requests.js";
8
7
  import { resolveAssistantStepText } from "./messages.js";
9
- import { applyLastToolCacheBreakpoint, buildPromptCachePrepareStep, detectPromptCachePath, getAnthropicCacheMarker, mergeGatewayAutoCaching, } from "./prompt-cache.js";
8
+ import { applyLastToolCacheBreakpoint, detectPromptCachePath, getAnthropicCacheMarker, } from "./prompt-cache.js";
9
+ import { buildStepHooks, emitStepActions } from "./step-hooks.js";
10
10
  import { buildToolSetWithProviderTools } from "./tools.js";
11
11
  /**
12
12
  * Creates a tool-loop harness step function backed by AI SDK `ToolLoopAgent`.
@@ -17,220 +17,169 @@ import { buildToolSetWithProviderTools } from "./tools.js";
17
17
  * and let the agent execute any tool calls. Returns the updated session and a
18
18
  * `next` instruction telling the runtime what to do.
19
19
  *
20
- * When an `emit` callback is provided via config, the harness emits the full
21
- * lifecycle event sequence at the appropriate points during execution.
20
+ * Step-internal work (step.started emission, compaction, prompt caching,
21
+ * action emission, step.completed) is delegated to `ToolLoopAgent` hooks
22
+ * via {@link buildStepHooks}. The harness itself owns only turn-level
23
+ * bookends, input resolution, and the continuation decision.
22
24
  */
23
25
  export function createToolLoopHarness(config) {
24
26
  const emit = config.emit;
25
27
  async function runStep(initialSession, input) {
26
28
  let session = initialSession;
27
29
  let emissionState = getHarnessEmissionState(session);
30
+ // --- Input resolution ---------------------------------------------------
31
+ const stepInput = consumeDeferredStepInput({ input, session });
32
+ session = stepInput.session;
33
+ const pending = resolvePendingInput({ session, stepInput: stepInput.input });
34
+ if (pending.outcome === "unresolved") {
35
+ return { next: null, session: pending.session };
36
+ }
37
+ // --- Turn preamble ------------------------------------------------------
28
38
  if (emit && hasStepInput(input)) {
29
39
  emissionState = await emitTurnPreamble(emit, input ?? {}, emissionState, config.runtimeIdentity);
30
40
  session = setHarnessEmissionState(session, emissionState);
31
41
  }
32
- const stepInput = consumeDeferredStepInput({
33
- input,
34
- session,
35
- });
36
- session = stepInput.session;
37
- // Let the channel emitter convert raw text into structured input
38
- // results when the session has a pending input batch (e.g. Slack
39
- // user replies "yes" to approve a tool call).
40
- const resolvedInput = resolveEmitterInput({
41
- channelEmitter: config.channelEmitter,
42
- session,
43
- stepInput: stepInput.input,
44
- });
45
- session = recordApprovedTools({
46
- inputResults: resolvedInput?.inputResults ?? [],
47
- session,
48
- });
49
- const preparedInput = applyStepInputToMessages({ input: resolvedInput, session });
50
- let messages = preparedInput.messages;
51
- session = preparedInput.session;
42
+ session = pending.session;
43
+ const messages = pending.messages;
44
+ if (stepInput.input?.message !== undefined && !pending.deferredMessage) {
45
+ messages.push({ content: stepInput.input.message, role: "user" });
46
+ }
47
+ // --- Model + tools ------------------------------------------------------
52
48
  const model = await config.resolveModel(session.agent.modelReference);
53
49
  const cachePath = detectPromptCachePath(model);
54
- const providerOptions = toToolLoopProviderOptions(cachePath.kind === "gateway-auto"
55
- ? mergeGatewayAutoCaching(session.agent.modelReference.providerOptions)
56
- : session.agent.modelReference.providerOptions);
57
- if (shouldCompact(messages, session.compaction)) {
58
- const compaction = await resolveCompactionModel({
59
- compactionModelReference: session.agent.compactionModelReference,
60
- model,
61
- modelReference: session.agent.modelReference,
62
- resolveModel: config.resolveModel,
63
- });
64
- if (emit) {
65
- await emit(createCompactionRequestedEvent({
66
- modelId: formatModelId(compaction.model),
67
- runId: "",
68
- sequence: emissionState.sequence,
69
- sessionId: "",
70
- thresholdPercent: 0,
71
- turnId: emissionState.turnId,
72
- usageInputTokens: getInputTokenCount(messages, session.compaction),
73
- }));
74
- }
75
- messages = await compactMessages(messages, compaction.model, session.compaction, compaction.providerOptions);
76
- if (config.onCompaction) {
77
- const compacted = await config.onCompaction(session);
78
- session = compacted.session;
79
- for (const msg of compacted.messages) {
80
- messages.push(msg);
81
- }
82
- }
83
- if (emit) {
84
- await emit(createCompactionCompletedEvent({
85
- lastCompactionIndex: 0,
86
- modelId: formatModelId(compaction.model),
87
- runId: "",
88
- sequence: emissionState.sequence,
89
- sessionId: "",
90
- turnId: emissionState.turnId,
91
- }));
92
- }
93
- }
50
+ const marker = cachePath.kind === "anthropic-direct" ? getAnthropicCacheMarker() : undefined;
94
51
  const tools = await buildToolSetWithProviderTools({
95
52
  approvedTools: getApprovedTools(session),
96
- definitions: session.agent.tools,
97
- executors: config.toolExecutors,
98
53
  isRoot: session.agent.isRoot,
99
54
  modelReference: session.agent.modelReference,
100
- needsApprovalFns: config.toolNeedsApprovalFns,
55
+ tools: config.tools,
101
56
  });
102
- let effectiveTools = tools;
103
- let prepareStep;
104
- if (cachePath.kind === "anthropic-direct") {
105
- const marker = getAnthropicCacheMarker();
106
- effectiveTools = applyLastToolCacheBreakpoint(tools, marker);
107
- prepareStep = buildPromptCachePrepareStep(marker);
108
- }
57
+ const effectiveTools = marker ? applyLastToolCacheBreakpoint(tools, marker) : tools;
58
+ // --- Build hooks --------------------------------------------------------
59
+ const hooks = buildStepHooks({
60
+ cachePath,
61
+ emit,
62
+ emissionState,
63
+ marker,
64
+ model,
65
+ onCompaction: config.onCompaction,
66
+ resolveModel: config.resolveModel,
67
+ session,
68
+ });
69
+ // --- Execute via ToolLoopAgent ------------------------------------------
109
70
  const agent = new ToolLoopAgent({
110
71
  instructions: session.agent.system || undefined,
111
72
  model,
112
- prepareStep,
113
- providerOptions,
73
+ onStepFinish: hooks.onStepFinish,
74
+ prepareStep: hooks.prepareStep,
114
75
  stopWhen: stepCountIs(1),
115
76
  tools: effectiveTools,
116
77
  });
117
78
  let result;
118
79
  try {
119
- result = await agent.generate({ messages });
80
+ if (emit) {
81
+ const streamResult = await agent.stream({ messages });
82
+ await emitStreamContent(emit, emissionState, streamResult.fullStream);
83
+ result = await hooks.stepResult;
84
+ await emitStepActions(emit, emissionState, result, {
85
+ excludedActionToolNames: new Set([ASK_QUESTION_TOOL_NAME]),
86
+ });
87
+ }
88
+ else {
89
+ await agent.generate({ messages });
90
+ result = await hooks.stepResult;
91
+ }
120
92
  }
121
93
  catch (error) {
122
94
  if (emit) {
123
- await emit(createRunFailedEvent({
95
+ await emitFailedStep(emit, emissionState, {
124
96
  code: "MODEL_CALL_FAILED",
125
97
  message: error instanceof Error ? error.message : String(error),
126
- runId: "",
127
- sessionId: "",
128
- }));
98
+ sessionId: session.sessionId,
99
+ });
129
100
  }
130
101
  throw error;
131
102
  }
132
- const responseMessages = result.response.messages;
133
- const stepOutput = resolveAssistantStepText(responseMessages, result.text);
134
- const approvalRequests = extractToolApprovalInputRequests({ content: result.content ?? [] });
135
- const approvalRequestCallIds = new Set(approvalRequests.map((request) => request.action.callId));
136
- const questionRequests = extractQuestionInputRequests({
137
- toolCalls: result.toolCalls,
138
- excludedCallIds: approvalRequestCallIds,
103
+ session = hooks.getSession();
104
+ // --- Handle result ------------------------------------------------------
105
+ return handleStepResult({
106
+ config,
107
+ emit,
108
+ emissionState,
109
+ messages,
110
+ result,
111
+ runStep,
112
+ session,
113
+ });
114
+ }
115
+ return runStep;
116
+ }
117
+ // ---------------------------------------------------------------------------
118
+ // Post-step result handling
119
+ // ---------------------------------------------------------------------------
120
+ /**
121
+ * Processes the step result: extracts input requests, decides whether to
122
+ * park, continue the tool loop, or terminate.
123
+ */
124
+ async function handleStepResult(input) {
125
+ const { config, emit, messages, result, runStep } = input;
126
+ let { emissionState, session } = input;
127
+ const responseMessages = result.response.messages;
128
+ const stepOutput = resolveAssistantStepText(responseMessages, result.text);
129
+ const approvalRequests = extractToolApprovalInputRequests({ content: result.content ?? [] });
130
+ const approvalRequestCallIds = new Set(approvalRequests.map((request) => request.action.callId));
131
+ const questionRequests = extractQuestionInputRequests({
132
+ toolCalls: result.toolCalls,
133
+ excludedCallIds: approvalRequestCallIds,
134
+ });
135
+ const inputRequests = [...approvalRequests, ...questionRequests];
136
+ const baseSession = {
137
+ ...session,
138
+ compaction: {
139
+ ...session.compaction,
140
+ lastKnownInputTokens: result.usage?.inputTokens,
141
+ },
142
+ };
143
+ // --- Park on input requests -----------------------------------------------
144
+ if (inputRequests.length > 0) {
145
+ let parkedSession = setPendingInputBatch({
146
+ requests: inputRequests,
147
+ responseMessages,
148
+ session: { ...baseSession, history: messages },
139
149
  });
140
- const runtimeInputRequests = [...approvalRequests, ...questionRequests];
141
- const runtimeActionToolCalls = result.toolCalls.filter((call) => call.toolName !== ASK_QUESTION_TOOL_NAME && !approvalRequestCallIds.has(call.toolCallId));
142
- const baseSession = {
143
- ...session,
144
- compaction: {
145
- ...session.compaction,
146
- lastKnownInputTokens: result.usage?.inputTokens,
147
- },
148
- };
149
- const completedStepOutput = {
150
- finishReason: normalizeAssistantStepFinishReason(result.finishReason),
151
- message: stepOutput,
152
- reasoning: result.reasoningText,
153
- };
154
- if (runtimeInputRequests.length > 0) {
155
- let parkedSession = setPendingRuntimeInputBatch({
156
- requests: runtimeInputRequests,
157
- responseMessages,
158
- session: {
159
- ...baseSession,
160
- history: messages,
161
- },
162
- });
163
- if (emit) {
164
- await emitCompletedStepOutput(emit, emissionState, completedStepOutput);
165
- if (runtimeActionToolCalls.length > 0) {
166
- await emitToolCallActionsAndResults(emit, emissionState, {
167
- toolCalls: runtimeActionToolCalls,
168
- toolResults: result.toolResults,
169
- });
170
- }
171
- await emit(createInputRequestedEvent({
172
- requests: runtimeInputRequests,
173
- sequence: emissionState.sequence,
174
- turnId: emissionState.turnId,
175
- }));
176
- if (config.mode === "conversation") {
177
- emissionState = await emitTurnEpilogue(emit, emissionState, config.mode, result.usage);
178
- parkedSession = setHarnessEmissionState(parkedSession, emissionState);
179
- }
180
- }
181
- return {
182
- next: null,
183
- session: parkedSession,
184
- };
185
- }
186
- const updatedHistory = [...messages, ...responseMessages];
187
- let nextSession = {
188
- ...baseSession,
189
- history: updatedHistory,
190
- };
191
- const continueLoop = runtimeActionToolCalls.length > 0 || hasDeferredStepInput(nextSession);
192
150
  if (emit) {
193
- await emitCompletedStepOutput(emit, emissionState, completedStepOutput);
194
- if (runtimeActionToolCalls.length > 0) {
195
- await emitToolCallActionsAndResults(emit, emissionState, {
196
- toolCalls: runtimeActionToolCalls,
197
- toolResults: result.toolResults,
198
- });
151
+ await emit(createInputRequestedEvent({
152
+ requests: inputRequests,
153
+ sequence: emissionState.sequence,
154
+ stepIndex: emissionState.stepIndex,
155
+ turnId: emissionState.turnId,
156
+ }));
157
+ if (config.mode === "conversation") {
158
+ emissionState = await emitTurnEpilogue(emit, emissionState, config.mode);
159
+ parkedSession = setHarnessEmissionState(parkedSession, emissionState);
199
160
  }
200
- if (!continueLoop) {
201
- emissionState = await emitTurnEpilogue(emit, emissionState, config.mode, result.usage);
202
- }
203
- nextSession = setHarnessEmissionState(nextSession, emissionState);
204
- }
205
- if (continueLoop) {
206
- return { next: runStep, session: nextSession };
207
161
  }
208
- return {
209
- next: config.mode === "task" ? { done: true, output: stepOutput ?? "" } : null,
210
- session: nextSession,
211
- };
162
+ return { next: null, session: parkedSession };
212
163
  }
213
- return runStep;
214
- }
215
- function formatModelId(model) {
216
- if (typeof model === "string") {
217
- return model;
164
+ // --- Continue or terminate ------------------------------------------------
165
+ const updatedHistory = [...messages, ...responseMessages];
166
+ let nextSession = { ...baseSession, history: updatedHistory };
167
+ const continueLoop = responseMessages.at(-1)?.role === "tool" || hasDeferredStepInput(nextSession);
168
+ if (emit) {
169
+ if (!continueLoop) {
170
+ emissionState = await emitTurnEpilogue(emit, emissionState, config.mode);
171
+ }
172
+ else {
173
+ emissionState = advanceStep(emissionState);
174
+ }
175
+ nextSession = setHarnessEmissionState(nextSession, emissionState);
218
176
  }
219
- return `${model.provider}/${model.modelId}`;
220
- }
221
- function toToolLoopProviderOptions(value) {
222
- return value;
223
- }
224
- function normalizeAssistantStepFinishReason(value) {
225
- switch (value) {
226
- case "content-filter":
227
- case "error":
228
- case "length":
229
- case "stop":
230
- case "tool-calls":
231
- return value;
232
- default:
233
- return "other";
177
+ if (continueLoop) {
178
+ return { next: runStep, session: nextSession };
234
179
  }
180
+ return {
181
+ next: config.mode === "task" ? { done: true, output: stepOutput ?? "" } : null,
182
+ session: nextSession,
183
+ };
235
184
  }
236
185
  //# sourceMappingURL=tool-loop.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-loop.js","sourceRoot":"","sources":["../../../src/harness/tool-loop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-loop.js","sourceRoot":"","sources":["../../../src/harness/tool-loop.ts"],"names":[],"mappings":"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"}
@@ -1,27 +1,25 @@
1
1
  import { type ToolSet } from "ai";
2
- import type { NeedsApprovalContext } from "../public/definitions/tool.js";
3
2
  import type { RuntimeModelReference } from "../runtime/agent/bootstrap.js";
4
- import type { SessionToolDefinition, ToolExecutorMap } from "./types.js";
3
+ import type { HarnessToolMap } from "./types.js";
5
4
  /**
6
- * Builds an AI SDK `ToolSet` from serializable session definitions and an
7
- * executor map that provides the actual execute functions.
5
+ * Builds an AI SDK `ToolSet` from unified harness tool definitions.
6
+ *
7
+ * Each tool's schema, execute function, and approval gate are read from
8
+ * the same {@link HarnessToolDefinition}. Tools without `execute` are
9
+ * surfaced to the model as client-side tools (no server execution).
8
10
  */
9
11
  export declare function buildToolSet(input: {
10
12
  readonly approvedTools?: ReadonlySet<string>;
11
- readonly definitions: readonly SessionToolDefinition[];
12
- readonly executors: ToolExecutorMap;
13
13
  readonly isRoot?: boolean;
14
- readonly needsApprovalFns?: ReadonlyMap<string, (ctx: NeedsApprovalContext) => boolean>;
14
+ readonly tools: HarnessToolMap;
15
15
  }): ToolSet;
16
16
  /**
17
17
  * Builds the AI SDK ToolSet for one harness step.
18
18
  *
19
- * Most tools have local executors registered by the execution layer and are
20
- * assembled by {@link buildToolSet}. Provider-managed tools (those whose
21
- * `execute` is the {@link PROVIDER_MANAGED_EXECUTE} sentinel) have no local
22
- * executor the execution layer intentionally skips them. This function
23
- * detects the gap in the executor map and injects the real AI SDK provider
24
- * tool in their place.
19
+ * Most tools have local executors and are assembled by {@link buildToolSet}.
20
+ * Provider-managed tools (e.g. web_search) have no local `execute` — the
21
+ * execution layer intentionally omits it. This function detects the gap and
22
+ * injects the real AI SDK provider tool in their place.
25
23
  *
26
24
  * When a user overrides a provider-managed tool via `defineTool()`, their
27
25
  * tool has a real executor and flows through the normal path — no
@@ -29,10 +27,8 @@ export declare function buildToolSet(input: {
29
27
  */
30
28
  export declare function buildToolSetWithProviderTools(input: {
31
29
  readonly approvedTools?: ReadonlySet<string>;
32
- readonly definitions: readonly SessionToolDefinition[];
33
- readonly executors: ToolExecutorMap;
34
30
  readonly isRoot?: boolean;
35
31
  readonly modelReference: RuntimeModelReference;
36
- readonly needsApprovalFns?: ReadonlyMap<string, (ctx: NeedsApprovalContext) => boolean>;
32
+ readonly tools: HarnessToolMap;
37
33
  }): Promise<ToolSet>;
38
34
  //# sourceMappingURL=tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/harness/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,OAAO,EAAQ,MAAM,IAAI,CAAC;AACpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAI3E,OAAO,KAAK,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEzE;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE;IAClC,QAAQ,CAAC,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7C,QAAQ,CAAC,WAAW,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACvD,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,oBAAoB,KAAK,OAAO,CAAC,CAAC;CACzF,GAAG,OAAO,CA6CV;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,6BAA6B,CAAC,KAAK,EAAE;IACzD,QAAQ,CAAC,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7C,QAAQ,CAAC,WAAW,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACvD,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,qBAAqB,CAAC;IAC/C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,oBAAoB,KAAK,OAAO,CAAC,CAAC;CACzF,GAAG,OAAO,CAAC,OAAO,CAAC,CAwBnB"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/harness/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,OAAO,EAAQ,MAAM,IAAI,CAAC;AACpD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAK3E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE;IAClC,QAAQ,CAAC,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7C,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;CAChC,GAAG,OAAO,CAmCV;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,6BAA6B,CAAC,KAAK,EAAE;IACzD,QAAQ,CAAC,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7C,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,qBAAqB,CAAC;IAC/C,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;CAChC,GAAG,OAAO,CAAC,OAAO,CAAC,CAoBnB"}
@@ -1,37 +1,33 @@
1
1
  import { jsonSchema, tool } from "ai";
2
2
  import { WEB_SEARCH_TOOL_DEFINITION } from "../runtime/framework-tools/web-search.js";
3
+ import { executeAuthoredTool } from "./execute-tool.js";
3
4
  import { resolveWebSearchBackend, resolveWebSearchProviderTool } from "./provider-tools.js";
4
5
  import { normalizeToolInputSchema } from "./tool-schema.js";
5
6
  /**
6
- * Builds an AI SDK `ToolSet` from serializable session definitions and an
7
- * executor map that provides the actual execute functions.
7
+ * Builds an AI SDK `ToolSet` from unified harness tool definitions.
8
+ *
9
+ * Each tool's schema, execute function, and approval gate are read from
10
+ * the same {@link HarnessToolDefinition}. Tools without `execute` are
11
+ * surfaced to the model as client-side tools (no server execution).
8
12
  */
9
13
  export function buildToolSet(input) {
10
14
  const tools = {};
11
- for (const definition of input.definitions) {
15
+ for (const definition of input.tools.values()) {
12
16
  const baseToolDefinition = {
13
17
  description: definition.description,
14
- inputSchema: jsonSchema(normalizeToolInputSchema(definition.parameters)),
15
- needsApproval: async () => {
16
- const toolFn = input.needsApprovalFns?.get(definition.name);
17
- const required = toolFn !== undefined
18
- ? toolFn({
19
- approvedTools: input.approvedTools ?? new Set(),
20
- toolName: definition.name,
21
- })
22
- : false;
23
- if (required && input.isRoot === false) {
24
- throw new Error(`Tool approval is currently not supported for subagent runs. Remove the needsApproval override on "${definition.name}" for the subagent or use never().`);
25
- }
26
- return required;
27
- },
18
+ inputSchema: jsonSchema(normalizeToolInputSchema(definition.inputSchema)),
19
+ needsApproval: buildNeedsApprovalFn(definition, input),
28
20
  };
29
- const execute = input.executors.get(definition.name);
30
- if (execute !== undefined) {
21
+ if (definition.execute !== undefined) {
22
+ const executableDefinition = definition;
31
23
  tools[definition.name] = tool({
32
24
  ...baseToolDefinition,
33
25
  execute: async (rawInput) => {
34
- return (await execute(rawInput));
26
+ const result = await executeAuthoredTool(executableDefinition, rawInput);
27
+ if (!result.ok) {
28
+ return { code: result.code, message: result.message };
29
+ }
30
+ return result.output;
35
31
  },
36
32
  });
37
33
  continue;
@@ -43,12 +39,10 @@ export function buildToolSet(input) {
43
39
  /**
44
40
  * Builds the AI SDK ToolSet for one harness step.
45
41
  *
46
- * Most tools have local executors registered by the execution layer and are
47
- * assembled by {@link buildToolSet}. Provider-managed tools (those whose
48
- * `execute` is the {@link PROVIDER_MANAGED_EXECUTE} sentinel) have no local
49
- * executor the execution layer intentionally skips them. This function
50
- * detects the gap in the executor map and injects the real AI SDK provider
51
- * tool in their place.
42
+ * Most tools have local executors and are assembled by {@link buildToolSet}.
43
+ * Provider-managed tools (e.g. web_search) have no local `execute` — the
44
+ * execution layer intentionally omits it. This function detects the gap and
45
+ * injects the real AI SDK provider tool in their place.
52
46
  *
53
47
  * When a user overrides a provider-managed tool via `defineTool()`, their
54
48
  * tool has a real executor and flows through the normal path — no
@@ -58,16 +52,14 @@ export async function buildToolSetWithProviderTools(input) {
58
52
  const tools = {
59
53
  ...buildToolSet({
60
54
  approvedTools: input.approvedTools,
61
- definitions: input.definitions,
62
- executors: input.executors,
63
55
  isRoot: input.isRoot,
64
- needsApprovalFns: input.needsApprovalFns,
56
+ tools: input.tools,
65
57
  }),
66
58
  };
67
- // Inject the real provider tool for web_search when the execution layer
68
- // skipped its executor (i.e. the framework definition uses the sentinel).
69
- const hasWebSearchInSession = input.definitions.some((t) => t.name === WEB_SEARCH_TOOL_DEFINITION.name);
70
- if (hasWebSearchInSession && !input.executors.has(WEB_SEARCH_TOOL_DEFINITION.name)) {
59
+ // Inject the real provider tool for web_search when the definition has
60
+ // no local execute (i.e. the framework definition uses the provider sentinel).
61
+ const webSearchTool = input.tools.get(WEB_SEARCH_TOOL_DEFINITION.name);
62
+ if (webSearchTool !== undefined && webSearchTool.execute === undefined) {
71
63
  const backend = resolveWebSearchBackend(input.modelReference);
72
64
  if (backend !== null) {
73
65
  tools[WEB_SEARCH_TOOL_DEFINITION.name] = await resolveWebSearchProviderTool(backend);
@@ -75,4 +67,18 @@ export async function buildToolSetWithProviderTools(input) {
75
67
  }
76
68
  return tools;
77
69
  }
70
+ function buildNeedsApprovalFn(definition, input) {
71
+ return async () => {
72
+ if (definition.needsApproval === undefined)
73
+ return false;
74
+ const required = definition.needsApproval({
75
+ approvedTools: input.approvedTools ?? new Set(),
76
+ toolName: definition.name,
77
+ });
78
+ if (required && input.isRoot === false) {
79
+ throw new Error(`Tool approval is currently not supported for subagent runs. Remove the needsApproval override on "${definition.name}" for the subagent or use never().`);
80
+ }
81
+ return required;
82
+ };
83
+ }
78
84
  //# sourceMappingURL=tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/harness/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/harness/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAgB,IAAI,EAAE,MAAM,IAAI,CAAC;AAEpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAA8B,MAAM,mBAAmB,CAAC;AACpF,OAAO,EAAE,uBAAuB,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AAC5F,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAG5D;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,KAI5B;IACC,MAAM,KAAK,GAAoC,EAAE,CAAC;IAElD,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;QAC9C,MAAM,kBAAkB,GAAG;YACzB,WAAW,EAAE,UAAU,CAAC,WAAW;YACnC,WAAW,EAAE,UAAU,CACrB,wBAAwB,CAAC,UAAU,CAAC,WAAW,CAAqC,CACrF;YACD,aAAa,EAAE,oBAAoB,CAAC,UAAU,EAAE,KAAK,CAAC;SACvD,CAAC;QAEF,IAAI,UAAU,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACrC,MAAM,oBAAoB,GAAG,UAE5B,CAAC;YACF,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;gBAC5B,GAAG,kBAAkB;gBACrB,OAAO,EAAE,KAAK,EAAE,QAAiB,EAAE,EAAE;oBACnC,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;oBAEzE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;wBACf,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;oBACxD,CAAC;oBAED,OAAO,MAAM,CAAC,MAAM,CAAC;gBACvB,CAAC;aACF,CAAoB,CAAC;YACtB,SAAS;QACX,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAoB,CAAC;IACvE,CAAC;IAED,OAAO,KAAgB,CAAC;AAC1B,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAAC,KAKnD;IACC,MAAM,KAAK,GAAY;QACrB,GAAG,YAAY,CAAC;YACd,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC;KACH,CAAC;IAEF,uEAAuE;IACvE,+EAA+E;IAC/E,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;IACvE,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACvE,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC9D,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,KAAK,CAAC,0BAA0B,CAAC,IAAI,CAAC,GAAG,MAAM,4BAA4B,CAAC,OAAO,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,oBAAoB,CAC3B,UAAiC,EACjC,KAAkF;IAElF,OAAO,KAAK,IAAI,EAAE;QAChB,IAAI,UAAU,CAAC,aAAa,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QAEzD,MAAM,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC;YACxC,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,IAAI,GAAG,EAAE;YAC/C,QAAQ,EAAE,UAAU,CAAC,IAAI;SAC1B,CAAC,CAAC;QAEH,IAAI,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CACb,qGAAqG,UAAU,CAAC,IAAI,oCAAoC,CACzJ,CAAC;QACJ,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;AACJ,CAAC"}