@gaodefa/daocore 2026.5.25 → 2026.5.26

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 (1740) hide show
  1. package/dist/abort-By0wxKlI.js +277 -0
  2. package/dist/abort.runtime-C7zfjxBp.js +2 -0
  3. package/dist/abort.runtime.js +1 -1
  4. package/dist/account-inspect-DTeLlJz-.js +173 -0
  5. package/dist/accounts-B776XBaL.js +119 -0
  6. package/dist/accounts-CLyZILFF.js +107 -0
  7. package/dist/accounts-DiXgq14W.js +107 -0
  8. package/dist/accounts-iTlRLYN8.js +2 -0
  9. package/dist/acp/control-plane/manager.d.ts +2 -1
  10. package/dist/acp-runtime-D9YQyGax.js +26 -0
  11. package/dist/acp-spawn-CWciV70C.js +1275 -0
  12. package/dist/acp-spawn-DjaS4O_V.js +2 -0
  13. package/dist/acp-stateful-target-driver-ByvGCj_i.js +89 -0
  14. package/dist/action-kill-DXeOA6YH.js +33 -0
  15. package/dist/action-runtime-BjQnG6qb.js +469 -0
  16. package/dist/action-runtime-api-a73ODsYk.js +2 -0
  17. package/dist/action-send-B_F3xwIu.js +39 -0
  18. package/dist/action-spawn-BFiW7gZJ.js +47 -0
  19. package/dist/actions-Bi7eE2I6.js +161 -0
  20. package/dist/actions.runtime-DmtbCLld.js +5 -0
  21. package/dist/agent-BOI4AdYK.js +3 -0
  22. package/dist/agent-DQPyDWP5.js +2 -0
  23. package/dist/agent-command-ClCxEw82.js +1367 -0
  24. package/dist/agent-command-DKqx29vm.d.ts +105 -0
  25. package/dist/agent-components.runtime-C5wxy4D_.js +10 -0
  26. package/dist/agent-components.runtime.js +1 -1
  27. package/dist/agent-harness-BsBVO7nU.d.ts +146 -0
  28. package/dist/agent-harness-runtime-CkdXIMHI.js +180 -0
  29. package/dist/agent-harness-runtime-KHFO733B.d.ts +691 -0
  30. package/dist/agent-harness-task-runtime-CDtn5RjX.js +140 -0
  31. package/dist/agent-runner-execution-lXW8y0i2.js +1713 -0
  32. package/dist/agent-runner-utils-OdM9hLGt.js +266 -0
  33. package/dist/agent-runner.runtime-fZnfhCJI.js +3455 -0
  34. package/dist/agent-runner.runtime.js +1 -1
  35. package/dist/agent-runtime-Dp0RDnX1.js +229 -0
  36. package/dist/agent-via-gateway-vsBf3nqZ.js +463 -0
  37. package/dist/agents/pi-embedded-runner/tool-split.d.ts +1 -1
  38. package/dist/agents.commands.add-C94vGOFH.js +304 -0
  39. package/dist/agents.commands.delete-D-p2NL4v.js +128 -0
  40. package/dist/api-BZ2QC7WM.js +2 -0
  41. package/dist/api-BmYK5Dge.js +6 -0
  42. package/dist/api-CGdlHCIH.js +3 -0
  43. package/dist/api-CGjlsXii.js +134 -0
  44. package/dist/api-DGqp6wZo.js +2 -0
  45. package/dist/api-DKpE-zdY.js +639 -0
  46. package/dist/api-DNyivJXK.d.ts +52 -0
  47. package/dist/apply-GK4z5lYw.js +54 -0
  48. package/dist/apply-_yxsBkiR.js +41 -0
  49. package/dist/approval-handler.runtime-C7d9p3DG.js +130 -0
  50. package/dist/assistant-B-h25aRy.js +291 -0
  51. package/dist/attachment-normalize-DWZ4Nrn-.js +225 -0
  52. package/dist/attempt-execution-BY9C1EOu.js +558 -0
  53. package/dist/attempt-execution.runtime-SR7eolDa.js +3 -0
  54. package/dist/attempt-execution.runtime.js +1 -1
  55. package/dist/attempt-execution.shared-h6uYmkJz.js +38 -0
  56. package/dist/attempt.prompt-helpers-COc5m_TZ.js +475 -0
  57. package/dist/attempt.tool-run-context-CAtfgOqC.js +2094 -0
  58. package/dist/auth-BdkNYTYU.js +541 -0
  59. package/dist/banner-0TOO6XHd.js +397 -0
  60. package/dist/banner-DTHug6Ey.js +2 -0
  61. package/dist/binding-routing-BJ_A83Nl.js +113 -0
  62. package/dist/binding-targets-D5dmPh4R.js +121 -0
  63. package/dist/bot-DX1uG3P-.js +7894 -0
  64. package/dist/bot-deps-BpaYejaN.js +2 -0
  65. package/dist/bot-deps-CKFDy5y3.js +747 -0
  66. package/dist/bot-message-context.runtime-BKOeRg34.js +7 -0
  67. package/dist/bot-message-context.runtime.js +1 -1
  68. package/dist/bot-message-context.session.runtime-xgZdFv6P.js +12 -0
  69. package/dist/bot-message-context.session.runtime.js +1 -1
  70. package/dist/bot-native-commands.delivery.runtime-DDMQrRfJ.js +4 -0
  71. package/dist/bot-native-commands.delivery.runtime.js +1 -1
  72. package/dist/bot-native-commands.runtime-CVVvUz0h.js +13 -0
  73. package/dist/bot-native-commands.runtime.js +1 -1
  74. package/dist/bridge-server-37OWsDZc.js +113 -0
  75. package/dist/browser-cli-BC_6aZJV.js +2 -0
  76. package/dist/browser-cli-Dg1ipmgf.js +230 -0
  77. package/dist/browser-cli-actions-input-B0QuzzSW.js +473 -0
  78. package/dist/browser-cli-actions-observe-C246bas5.js +81 -0
  79. package/dist/browser-cli-debug-F64e_v4B.js +137 -0
  80. package/dist/browser-cli-inspect-Srn6eWjO.js +104 -0
  81. package/dist/browser-cli-manage-CaZ97-Me.js +443 -0
  82. package/dist/browser-cli-resize-CUR20fvZ.js +26 -0
  83. package/dist/browser-cli-shared-BhphnFVo.js +50 -0
  84. package/dist/browser-cli-state-CzaNXNWF.js +337 -0
  85. package/dist/browser-control-auth-DTY0Wx2B.js +2 -0
  86. package/dist/browser-profiles-BDGPPDJ7.js +2 -0
  87. package/dist/browser-runtime-aqBKI8Oi.js +384 -0
  88. package/dist/build-CG7aTzO9.js +257 -0
  89. package/dist/build-info.json +3 -3
  90. package/dist/bundled/boot-md/handler.js +2 -2
  91. package/dist/bundled/session-memory/handler.js +1 -1
  92. package/dist/bundled-channel-config-schema-vrKpzJVf.d.ts +3163 -0
  93. package/dist/call-Za47o1YZ.d.ts +43 -0
  94. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  95. package/dist/capability-cli-BhF26gVm.js +1782 -0
  96. package/dist/channel-5RHqx1Ge.d.ts +26 -0
  97. package/dist/channel-5_XS0Mss.js +508 -0
  98. package/dist/channel-7L-vyWOO.js +362 -0
  99. package/dist/channel-B07xPK0L.d.ts +114 -0
  100. package/dist/channel-B9b-GX-e.d.ts +14 -0
  101. package/dist/channel-BBWX_bA0.d.ts +7 -0
  102. package/dist/channel-BVxTyJ0I.js +376 -0
  103. package/dist/channel-BWIsr1r-.js +808 -0
  104. package/dist/channel-Ba0p4xM-.js +1134 -0
  105. package/dist/channel-Bi2nTop1.js +481 -0
  106. package/dist/channel-Bj29iFgF.js +740 -0
  107. package/dist/channel-Bl8tKAuG.d.ts +427 -0
  108. package/dist/channel-Bqy7BYGm.d.ts +28 -0
  109. package/dist/channel-BvzHMdKo.d.ts +8 -0
  110. package/dist/channel-C6G6-tH6.js +562 -0
  111. package/dist/channel-CBhuuq-_.js +2126 -0
  112. package/dist/channel-CMmVpcnl.js +867 -0
  113. package/dist/channel-COc7idAe.js +653 -0
  114. package/dist/channel-CcsuLAYt.d.ts +49 -0
  115. package/dist/channel-CjfuHhSU.js +1556 -0
  116. package/dist/channel-Cquy73C-.js +1249 -0
  117. package/dist/channel-Cu7Jxm_X.d.ts +104 -0
  118. package/dist/channel-CzvuskEn.js +955 -0
  119. package/dist/channel-D6u-243v.js +1777 -0
  120. package/dist/channel-DId5JNlc.d.ts +47 -0
  121. package/dist/channel-DR8PbP31.js +238 -0
  122. package/dist/channel-DUYRu5km.d.ts +7 -0
  123. package/dist/channel-DUZ0s98I.js +1496 -0
  124. package/dist/channel-DXelghSl.d.ts +8 -0
  125. package/dist/channel-FhfE8D-t.d.ts +6 -0
  126. package/dist/channel-PEX_yYEO.d.ts +64 -0
  127. package/dist/channel-aWqPl-K4.d.ts +106 -0
  128. package/dist/channel-actions.runtime-BzEqt_Va.js +265 -0
  129. package/dist/channel-actions.runtime.js +1 -1
  130. package/dist/channel-cSdO0kAq.d.ts +8 -0
  131. package/dist/channel-core-ClgodQav.d.ts +6 -0
  132. package/dist/channel-core-DDZnTvT6.js +5 -0
  133. package/dist/channel-entry-contract-Bzkb_oJX.d.ts +112 -0
  134. package/dist/channel-inbound-C2wLEE7Q.js +80 -0
  135. package/dist/channel-lifecycle-DCTZ2J_8.d.ts +126 -0
  136. package/dist/channel-pairing-pKisqGWj.d.ts +58 -0
  137. package/dist/channel-plugin-runtime-B8AWkA0i.js +998 -0
  138. package/dist/channel-plugin-runtime-ntEeH9SC.d.ts +7 -0
  139. package/dist/channel-runtime-CciKN6E5.js +408 -0
  140. package/dist/channel-za2kUUnL.d.ts +12 -0
  141. package/dist/channel.runtime-BQN8Bkb0.js +254 -0
  142. package/dist/channel.runtime-BXeGEvv7.js +21009 -0
  143. package/dist/channel.runtime-C40ILulM.js +1008 -0
  144. package/dist/channel.runtime-CJ2DSojv.js +733 -0
  145. package/dist/channel.runtime-CUaygROD.js +652 -0
  146. package/dist/channel.runtime-CcCbJhDb.js +88 -0
  147. package/dist/channel.runtime-DJbKu9D3.js +4 -0
  148. package/dist/channel.runtime-DgRuSo5T.js +109 -0
  149. package/dist/channel.runtime-tRXUD2p2.js +2528 -0
  150. package/dist/channel.setup-3aVku-g-.js +1098 -0
  151. package/dist/channel.setup-Cau-V9UT.d.ts +7 -0
  152. package/dist/channel.setup-DT7Z9egu.js +343 -0
  153. package/dist/channel.setup-DhlkGTJV.js +10 -0
  154. package/dist/channel.setup-P5V7jWHY.d.ts +6 -0
  155. package/dist/channel.setup-x333W0eZ.d.ts +8 -0
  156. package/dist/chat-D3LWYymW.js +2666 -0
  157. package/dist/chrome--ATU1T0X.js +1503 -0
  158. package/dist/cli/run-main.js +9 -9
  159. package/dist/cli-D8hIXnS1.js +1341 -0
  160. package/dist/cli-backend-C1JA33SE.d.ts +5 -0
  161. package/dist/cli-backend-D8WmqNqJ.d.ts +5 -0
  162. package/dist/cli-compaction-jmi3u2HG.js +347 -0
  163. package/dist/cli-daS2Mzjd.d.ts +20 -0
  164. package/dist/cli-metadata-Cy9MEdPv.js +22 -0
  165. package/dist/cli-runner-DuT8oeZF.js +540 -0
  166. package/dist/cli-runner-DvKgnkCL.js +2 -0
  167. package/dist/cli-runner.runtime-B-aD16MD.js +4 -0
  168. package/dist/cli-runner.runtime-DofcKX1U.js +3 -0
  169. package/dist/cli-runner.runtime.js +1 -1
  170. package/dist/cli-shared-BFZytJBA.d.ts +20 -0
  171. package/dist/cli-startup-metadata.json +13 -13
  172. package/dist/client-B5IcAlfB.js +650 -0
  173. package/dist/client-adapter-CXA67h2E.js +897 -0
  174. package/dist/client-factory-aY6TuKfQ.js +9 -0
  175. package/dist/command-auth-DS9XgXEG.js +135 -0
  176. package/dist/command-execution-startup-DQOLt5Sz.js +87 -0
  177. package/dist/command-handlers-DqxF-IM9.js +1609 -0
  178. package/dist/command-registry-BSVx1oOc.js +4 -0
  179. package/dist/command-registry-CsPIOiQ3.js +9 -0
  180. package/dist/command-registry-core-Bzu5ff5F.js +110 -0
  181. package/dist/command-status.runtime-MKsizBC-.js +90 -0
  182. package/dist/command-status.runtime.js +1 -1
  183. package/dist/commands-B6Y6rqal.d.ts +113 -0
  184. package/dist/commands-acp-ClJofWty.js +74 -0
  185. package/dist/commands-compact.runtime-7VqYX4tS.js +10 -0
  186. package/dist/commands-compact.runtime.js +1 -1
  187. package/dist/commands-handlers.runtime-Dfqf_Oyp.js +6154 -0
  188. package/dist/commands-handlers.runtime.js +1 -1
  189. package/dist/commands-status-CRaEj9Vf.js +16 -0
  190. package/dist/commands-status-uDaqCP2F.js +3 -0
  191. package/dist/commands-status.runtime-uDaqCP2F.js +3 -0
  192. package/dist/commands-status.runtime.js +1 -1
  193. package/dist/commands-subagents-control.runtime-BaYcGLtc.js +2 -0
  194. package/dist/commands-subagents-control.runtime-C4xMpLed.js +3 -0
  195. package/dist/commands-subagents-control.runtime.js +1 -1
  196. package/dist/commands-system-prompt-C3lzz7wW.js +162 -0
  197. package/dist/commands-system-prompt-DpiW5FkQ.js +2 -0
  198. package/dist/commands.runtime-l4fGcB5c.js +176 -0
  199. package/dist/commands.runtime.js +1 -1
  200. package/dist/commitments/runtime.js +1 -1
  201. package/dist/compact-Dq0mi-y_.js +480 -0
  202. package/dist/compact-voJdoXm-.js +1141 -0
  203. package/dist/compact.runtime-BNLPSDQQ.js +12 -0
  204. package/dist/compact.runtime.js +1 -1
  205. package/dist/completion-cli-qHUelvvd.js +315 -0
  206. package/dist/computer-use-dP3FCUtq.js +367 -0
  207. package/dist/config-BDGPPDJ7.js +2 -0
  208. package/dist/config-Dg3sgjXu.js +373 -0
  209. package/dist/config-cli-INHPnZOG.js +1633 -0
  210. package/dist/config-mutations-CAgnXnDt.js +159 -0
  211. package/dist/config-schema-BkkovNaj.d.ts +20 -0
  212. package/dist/configure-M1VU0h9O.js +3 -0
  213. package/dist/configure.commands-CM8RXyn3.js +1251 -0
  214. package/dist/configure.commands-PvOJd4nu.js +2 -0
  215. package/dist/context-engine-host-compat-D7I7Q63Z.js +288 -0
  216. package/dist/context-engine-host-compat-DGHUiQUV.js +2 -0
  217. package/dist/context-engine-lifecycle-Zsi-S6qy.js +1274 -0
  218. package/dist/contracts-testkit-Ch7UfUw6.d.ts +145 -0
  219. package/dist/control-auth-BKUTwIvH.js +114 -0
  220. package/dist/control-service-CKUzEAa0.js +145 -0
  221. package/dist/control-ui/assets/agents-CUjpwxUf.js +1008 -0
  222. package/dist/control-ui/assets/channel-config-extras-Dd4z5RQ8.js +2 -0
  223. package/dist/control-ui/assets/channels-554ojNKp.js +367 -0
  224. package/dist/control-ui/assets/cron-BAd2PXq5.js +1013 -0
  225. package/dist/control-ui/assets/debug-BGCb3cT4.js +97 -0
  226. package/dist/control-ui/assets/index-BXico1DI.js +7370 -0
  227. package/dist/control-ui/assets/instances-EkBPy6m3.js +57 -0
  228. package/dist/control-ui/assets/logs-zcOeZekZ.js +74 -0
  229. package/dist/control-ui/assets/nodes-BymRwDa6.js +436 -0
  230. package/dist/control-ui/assets/sessions-C_oSuy7x.js +399 -0
  231. package/dist/control-ui/assets/skills-BVjEetcV.js +314 -0
  232. package/dist/control-ui/assets/skills-shared-weS2ZYM5.js +11 -0
  233. package/dist/control-ui/index.html +1 -1
  234. package/dist/control-ui/sw.js +1 -1
  235. package/dist/conversation-binding-runtime-rXAYUZyM.js +4 -0
  236. package/dist/conversation-runtime-CV0pSg81.js +31 -0
  237. package/dist/core-BV0irASW.js +282 -0
  238. package/dist/core-DIjsbXou.d.ts +224 -0
  239. package/dist/core-api-CyhjZVzn.js +5 -0
  240. package/dist/core-api-YdHGjff8.js +2 -0
  241. package/dist/crestodian/crestodian.js +1 -1
  242. package/dist/crestodian/rescue-message.js +1 -1
  243. package/dist/crestodian-n5FVHIW5.js +55 -0
  244. package/dist/daocore-runtime-DhfJoXrT.d.ts +151 -0
  245. package/dist/daocore-tools-CXDZ1Xhe.js +11727 -0
  246. package/dist/dashboard-CeQV6L1K.js +263 -0
  247. package/dist/delivery-D7LfafSk.js +1002 -0
  248. package/dist/dev-BSY4rs1s.js +97 -0
  249. package/dist/dialogue-DWFnjTiN.js +37 -0
  250. package/dist/dir-fetch-tool-BnlEyfZh.js +565 -0
  251. package/dist/dir-list-tool-Blhg_vTH.js +100 -0
  252. package/dist/direct-dm-DJPIaf5J.js +64 -0
  253. package/dist/directive-handling.fast-lane-DGV6PZYZ.js +68 -0
  254. package/dist/directive-handling.impl-CTDwclQa.js +818 -0
  255. package/dist/directive-handling.impl-_zI0_GsT.js +2 -0
  256. package/dist/directive-handling.model-selection-C8lG4FHQ.js +122 -0
  257. package/dist/directive-handling.persist.runtime-CmLb1evR.js +263 -0
  258. package/dist/directive-handling.persist.runtime.js +1 -1
  259. package/dist/dispatch-DvZRbIrc.js +1640 -0
  260. package/dist/dispatch-acp-transcript.runtime-PehNIsnR.js +40 -0
  261. package/dist/dispatch-acp-transcript.runtime.js +1 -1
  262. package/dist/dispatch-acp.runtime-Dg8ft-Ve.js +18 -0
  263. package/dist/dispatch-acp.runtime.js +1 -1
  264. package/dist/doctor-DJFM3lrT.js +6 -0
  265. package/dist/doctor-_ob4EiVf.js +2 -0
  266. package/dist/doctor-config-flow-D6iEk-en.js +1741 -0
  267. package/dist/doctor-core-checks-CCfWWL1-.js +573 -0
  268. package/dist/doctor-core-checks-CqkHUVcZ.js +2 -0
  269. package/dist/doctor-health-CrNPft4G.js +65 -0
  270. package/dist/doctor-health-contributions-Bwu5M_GQ.js +696 -0
  271. package/dist/doctor-lint-B2Wb_jEn.js +94 -0
  272. package/dist/doctor-prompter-cXq7RExi.js +58 -0
  273. package/dist/doctor-state-integrity-DfYyVFbQ.js +1231 -0
  274. package/dist/dynamic-tools-CbHsYkuk.js +486 -0
  275. package/dist/embedded-backend-IYuqoxzv.js +579 -0
  276. package/dist/embedded-gateway-stub.runtime-BjJ_93Pp.js +12 -0
  277. package/dist/embedded-gateway-stub.runtime.js +1 -1
  278. package/dist/embedding-provider-B50jxKn8.d.ts +65 -0
  279. package/dist/embedding-provider-DOktf4gm.d.ts +21 -0
  280. package/dist/embedding-provider-DZOjws8e.d.ts +16 -0
  281. package/dist/entry.d.ts +1 -1
  282. package/dist/entry.js +1 -1
  283. package/dist/exec-approvals-VjIKwFog.js +149 -0
  284. package/dist/extensionAPI.js +1 -1
  285. package/dist/extensions/active-memory/index.d.ts +1 -1
  286. package/dist/extensions/active-memory/index.js +1 -1
  287. package/dist/extensions/admin-http-rpc/index.d.ts +1 -1
  288. package/dist/extensions/admin-http-rpc/index.js +1 -1
  289. package/dist/extensions/alibaba/index.d.ts +1 -1
  290. package/dist/extensions/anthropic/api.d.ts +3 -3
  291. package/dist/extensions/anthropic/cli-backend-api.d.ts +2 -2
  292. package/dist/extensions/anthropic/cli-backend.d.ts +1 -1
  293. package/dist/extensions/anthropic/cli-migration.d.ts +1 -1
  294. package/dist/extensions/anthropic/cli-shared.d.ts +1 -1
  295. package/dist/extensions/anthropic/contract-api.d.ts +1 -1
  296. package/dist/extensions/anthropic/index.d.ts +1 -1
  297. package/dist/extensions/anthropic/provider-contract-api.d.ts +1 -1
  298. package/dist/extensions/anthropic/provider-discovery.d.ts +1 -1
  299. package/dist/extensions/anthropic/provider-policy-api.d.ts +1 -1
  300. package/dist/extensions/anthropic/register.runtime.d.ts +1 -1
  301. package/dist/extensions/anthropic/replay-policy.d.ts +1 -1
  302. package/dist/extensions/anthropic/setup-api.d.ts +1 -1
  303. package/dist/extensions/anthropic/stream-wrappers.d.ts +1 -1
  304. package/dist/extensions/anthropic/test-api.d.ts +2 -2
  305. package/dist/extensions/arcee/index.d.ts +1 -1
  306. package/dist/extensions/azure-speech/index.d.ts +1 -1
  307. package/dist/extensions/azure-speech/speech-provider.d.ts +1 -1
  308. package/dist/extensions/bonjour/index.d.ts +1 -1
  309. package/dist/extensions/browser/browser-bridge.js +1 -1
  310. package/dist/extensions/browser/browser-config.js +4 -4
  311. package/dist/extensions/browser/browser-control-auth.js +2 -2
  312. package/dist/extensions/browser/browser-doctor.js +2 -2
  313. package/dist/extensions/browser/browser-maintenance.js +1 -1
  314. package/dist/extensions/browser/browser-profiles.js +2 -2
  315. package/dist/extensions/browser/browser-runtime-api.js +11 -11
  316. package/dist/extensions/browser/cli-metadata.d.ts +1 -1
  317. package/dist/extensions/browser/cli-metadata.js +1 -1
  318. package/dist/extensions/browser/index.d.ts +1 -1
  319. package/dist/extensions/browser/index.js +1 -1
  320. package/dist/extensions/browser/plugin-registration.d.ts +1 -1
  321. package/dist/extensions/browser/plugin-registration.js +1 -1
  322. package/dist/extensions/browser/register.runtime.d.ts +2 -2
  323. package/dist/extensions/browser/register.runtime.js +4 -4
  324. package/dist/extensions/browser/runtime-api.d.ts +3 -3
  325. package/dist/extensions/browser/runtime-api.js +13 -13
  326. package/dist/extensions/browser/setup-api.d.ts +1 -1
  327. package/dist/extensions/byteplus/index.d.ts +1 -1
  328. package/dist/extensions/byteplus/provider-discovery.d.ts +1 -1
  329. package/dist/extensions/canvas/cli-metadata.d.ts +1 -1
  330. package/dist/extensions/canvas/index.d.ts +1 -1
  331. package/dist/extensions/canvas/index.js +1 -1
  332. package/dist/extensions/canvas/runtime-api.d.ts +2 -2
  333. package/dist/extensions/canvas/setup-api.d.ts +1 -1
  334. package/dist/extensions/cerebras/index.d.ts +1 -1
  335. package/dist/extensions/chutes/index.d.ts +1 -1
  336. package/dist/extensions/clickclack/api.d.ts +2 -2
  337. package/dist/extensions/clickclack/api.js +2 -2
  338. package/dist/extensions/clickclack/channel-plugin-api.d.ts +1 -1
  339. package/dist/extensions/clickclack/channel-plugin-api.js +1 -1
  340. package/dist/extensions/clickclack/index.d.ts +2 -2
  341. package/dist/extensions/clickclack/runtime-api.d.ts +2 -2
  342. package/dist/extensions/clickclack/runtime-api.js +2 -2
  343. package/dist/extensions/cloudflare-ai-gateway/index.d.ts +1 -1
  344. package/dist/extensions/cloudflare-ai-gateway/stream-wrappers.d.ts +1 -1
  345. package/dist/extensions/comfy/index.d.ts +1 -1
  346. package/dist/extensions/copilot-proxy/index.d.ts +1 -1
  347. package/dist/extensions/copilot-proxy/runtime-api.d.ts +2 -2
  348. package/dist/extensions/deepgram/index.d.ts +1 -1
  349. package/dist/extensions/deepgram/realtime-transcription-provider.d.ts +1 -1
  350. package/dist/extensions/deepgram/test-api.d.ts +1 -1
  351. package/dist/extensions/deepinfra/api.d.ts +2 -2
  352. package/dist/extensions/deepinfra/embedding-provider.d.ts +1 -1
  353. package/dist/extensions/deepinfra/index.d.ts +1 -1
  354. package/dist/extensions/deepinfra/memory-embedding-adapter.d.ts +1 -1
  355. package/dist/extensions/deepinfra/speech-provider.d.ts +1 -1
  356. package/dist/extensions/deepseek/api.d.ts +1 -1
  357. package/dist/extensions/deepseek/index.d.ts +1 -1
  358. package/dist/extensions/deepseek/provider-discovery.d.ts +1 -1
  359. package/dist/extensions/deepseek/provider-policy-api.d.ts +1 -1
  360. package/dist/extensions/deepseek/stream.d.ts +1 -1
  361. package/dist/extensions/deepseek/thinking.d.ts +1 -1
  362. package/dist/extensions/device-pair/api.d.ts +3 -3
  363. package/dist/extensions/device-pair/api.js +1 -1
  364. package/dist/extensions/device-pair/index.d.ts +1 -1
  365. package/dist/extensions/device-pair/notify.d.ts +1 -1
  366. package/dist/extensions/device-pair/pair-command-approve.js +1 -1
  367. package/dist/extensions/document-extract/index.d.ts +1 -1
  368. package/dist/extensions/duckduckgo/index.d.ts +1 -1
  369. package/dist/extensions/elevenlabs/index.d.ts +1 -1
  370. package/dist/extensions/elevenlabs/realtime-transcription-provider.d.ts +1 -1
  371. package/dist/extensions/elevenlabs/setup-api.d.ts +1 -1
  372. package/dist/extensions/elevenlabs/speech-provider.d.ts +1 -1
  373. package/dist/extensions/elevenlabs/test-api.d.ts +2 -2
  374. package/dist/extensions/exa/index.d.ts +1 -1
  375. package/dist/extensions/fal/index.d.ts +1 -1
  376. package/dist/extensions/fal/provider-contract-api.d.ts +1 -1
  377. package/dist/extensions/fal/provider-registration.d.ts +1 -1
  378. package/dist/extensions/file-transfer/index.d.ts +1 -1
  379. package/dist/extensions/file-transfer/index.js +4 -4
  380. package/dist/extensions/firecrawl/index.d.ts +1 -1
  381. package/dist/extensions/fireworks/index.d.ts +1 -1
  382. package/dist/extensions/fireworks/provider-policy-api.d.ts +1 -1
  383. package/dist/extensions/fireworks/stream.d.ts +1 -1
  384. package/dist/extensions/fireworks/thinking-policy.d.ts +1 -1
  385. package/dist/extensions/github-copilot/embeddings.d.ts +1 -1
  386. package/dist/extensions/github-copilot/index.d.ts +1 -1
  387. package/dist/extensions/github-copilot/models.d.ts +1 -1
  388. package/dist/extensions/github-copilot/register.runtime.d.ts +2 -2
  389. package/dist/extensions/github-copilot/stream.d.ts +1 -1
  390. package/dist/extensions/google/api.d.ts +5 -5
  391. package/dist/extensions/google/cli-backend.d.ts +1 -1
  392. package/dist/extensions/google/embedding-batch.d.ts +1 -1
  393. package/dist/extensions/google/embedding-provider.d.ts +1 -1
  394. package/dist/extensions/google/gemini-cli-provider.d.ts +1 -1
  395. package/dist/extensions/google/index.d.ts +1 -1
  396. package/dist/extensions/google/memory-embedding-adapter.d.ts +1 -1
  397. package/dist/extensions/google/provider-contract-api.d.ts +1 -1
  398. package/dist/extensions/google/provider-hooks.d.ts +2 -2
  399. package/dist/extensions/google/provider-models.d.ts +1 -1
  400. package/dist/extensions/google/provider-policy-api.d.ts +1 -1
  401. package/dist/extensions/google/provider-policy.d.ts +1 -1
  402. package/dist/extensions/google/provider-registration.d.ts +1 -1
  403. package/dist/extensions/google/realtime-voice-provider.d.ts +1 -1
  404. package/dist/extensions/google/runtime-api.d.ts +3 -3
  405. package/dist/extensions/google/setup-api.d.ts +1 -1
  406. package/dist/extensions/google/speech-provider.d.ts +1 -1
  407. package/dist/extensions/google/test-api.d.ts +2 -2
  408. package/dist/extensions/google/thinking-api.d.ts +1 -1
  409. package/dist/extensions/google/thinking.d.ts +1 -1
  410. package/dist/extensions/google/transport-stream.d.ts +1 -1
  411. package/dist/extensions/gradium/index.d.ts +1 -1
  412. package/dist/extensions/gradium/speech-provider.d.ts +1 -1
  413. package/dist/extensions/groq/index.d.ts +1 -1
  414. package/dist/extensions/huggingface/index.d.ts +1 -1
  415. package/dist/extensions/image-generation-core/api.d.ts +4 -4
  416. package/dist/extensions/image-generation-core/runtime-api.d.ts +1 -1
  417. package/dist/extensions/imessage/api.d.ts +2 -2
  418. package/dist/extensions/imessage/api.js +2 -2
  419. package/dist/extensions/imessage/channel-plugin-api.d.ts +1 -1
  420. package/dist/extensions/imessage/channel-plugin-api.js +1 -1
  421. package/dist/extensions/imessage/index.d.ts +2 -2
  422. package/dist/extensions/imessage/message-tool-api.d.ts +1 -1
  423. package/dist/extensions/imessage/runtime-api.d.ts +4 -4
  424. package/dist/extensions/imessage/runtime-api.js +3 -3
  425. package/dist/extensions/imessage/setup-entry.d.ts +2 -2
  426. package/dist/extensions/imessage/test-api.d.ts +1 -1
  427. package/dist/extensions/inworld/index.d.ts +1 -1
  428. package/dist/extensions/inworld/speech-provider.d.ts +1 -1
  429. package/dist/extensions/irc/api.d.ts +1 -1
  430. package/dist/extensions/irc/api.js +2 -2
  431. package/dist/extensions/irc/channel-plugin-api.d.ts +1 -1
  432. package/dist/extensions/irc/channel-plugin-api.js +1 -1
  433. package/dist/extensions/irc/index.d.ts +2 -2
  434. package/dist/extensions/irc/setup-entry.d.ts +2 -2
  435. package/dist/extensions/kilocode/index.d.ts +1 -1
  436. package/dist/extensions/kimi-coding/index.d.ts +1 -1
  437. package/dist/extensions/kimi-coding/stream.d.ts +1 -1
  438. package/dist/extensions/litellm/index.d.ts +1 -1
  439. package/dist/extensions/llm-task/api.d.ts +2 -2
  440. package/dist/extensions/llm-task/index.d.ts +1 -1
  441. package/dist/extensions/llm-task/index.js +1 -1
  442. package/dist/extensions/lmstudio/api.d.ts +1 -1
  443. package/dist/extensions/lmstudio/index.d.ts +1 -1
  444. package/dist/extensions/lmstudio/memory-embedding-adapter.d.ts +1 -1
  445. package/dist/extensions/mattermost/api.js +1 -1
  446. package/dist/extensions/mattermost/channel-plugin-api.d.ts +2 -2
  447. package/dist/extensions/mattermost/channel-plugin-api.js +1 -1
  448. package/dist/extensions/mattermost/channel-plugin-runtime.d.ts +1 -1
  449. package/dist/extensions/mattermost/channel-plugin-runtime.js +1 -1
  450. package/dist/extensions/mattermost/index.d.ts +2 -2
  451. package/dist/extensions/mattermost/policy-api.js +1 -1
  452. package/dist/extensions/mattermost/runtime-api.d.ts +9 -9
  453. package/dist/extensions/mattermost/runtime-api.js +2 -2
  454. package/dist/extensions/mattermost/setup-entry.d.ts +2 -2
  455. package/dist/extensions/mattermost/slash-route-api.d.ts +1 -1
  456. package/dist/extensions/mattermost/slash-route-api.js +1 -1
  457. package/dist/extensions/memory-core/api.d.ts +1 -1
  458. package/dist/extensions/memory-core/cli-metadata.d.ts +1 -1
  459. package/dist/extensions/memory-core/cli-metadata.js +1 -1
  460. package/dist/extensions/memory-core/index.d.ts +1 -1
  461. package/dist/extensions/memory-core/manager-runtime.d.ts +1 -1
  462. package/dist/extensions/memory-core/runtime-api.d.ts +2 -2
  463. package/dist/extensions/memory-wiki/api.d.ts +3 -3
  464. package/dist/extensions/memory-wiki/cli-metadata.d.ts +1 -1
  465. package/dist/extensions/memory-wiki/index.d.ts +1 -1
  466. package/dist/extensions/memory-wiki/setup-api.d.ts +1 -1
  467. package/dist/extensions/microsoft/index.d.ts +1 -1
  468. package/dist/extensions/microsoft/speech-provider.d.ts +1 -1
  469. package/dist/extensions/microsoft/test-api.d.ts +1 -1
  470. package/dist/extensions/microsoft-foundry/auth.d.ts +1 -1
  471. package/dist/extensions/microsoft-foundry/cli.d.ts +1 -1
  472. package/dist/extensions/microsoft-foundry/index.d.ts +1 -1
  473. package/dist/extensions/microsoft-foundry/onboard.d.ts +3 -3
  474. package/dist/extensions/microsoft-foundry/provider.d.ts +1 -1
  475. package/dist/extensions/microsoft-foundry/runtime.d.ts +1 -1
  476. package/dist/extensions/microsoft-foundry/shared-runtime.d.ts +1 -1
  477. package/dist/extensions/microsoft-foundry/shared.d.ts +1 -1
  478. package/dist/extensions/migrate-claude/apply.d.ts +1 -1
  479. package/dist/extensions/migrate-claude/apply.js +1 -1
  480. package/dist/extensions/migrate-claude/config.d.ts +1 -1
  481. package/dist/extensions/migrate-claude/helpers.d.ts +1 -1
  482. package/dist/extensions/migrate-claude/index.d.ts +1 -1
  483. package/dist/extensions/migrate-claude/index.js +1 -1
  484. package/dist/extensions/migrate-claude/memory.d.ts +2 -2
  485. package/dist/extensions/migrate-claude/plan.d.ts +1 -1
  486. package/dist/extensions/migrate-claude/plan.js +1 -1
  487. package/dist/extensions/migrate-claude/provider.d.ts +1 -1
  488. package/dist/extensions/migrate-claude/provider.js +1 -1
  489. package/dist/extensions/migrate-claude/skills.d.ts +2 -2
  490. package/dist/extensions/migrate-claude/targets.d.ts +1 -1
  491. package/dist/extensions/migrate-claude/targets.js +1 -1
  492. package/dist/extensions/migrate-hermes/apply.d.ts +1 -1
  493. package/dist/extensions/migrate-hermes/apply.js +1 -1
  494. package/dist/extensions/migrate-hermes/config.d.ts +1 -1
  495. package/dist/extensions/migrate-hermes/helpers.d.ts +1 -1
  496. package/dist/extensions/migrate-hermes/index.d.ts +1 -1
  497. package/dist/extensions/migrate-hermes/index.js +1 -1
  498. package/dist/extensions/migrate-hermes/items.d.ts +1 -1
  499. package/dist/extensions/migrate-hermes/model.d.ts +1 -1
  500. package/dist/extensions/migrate-hermes/model.js +1 -1
  501. package/dist/extensions/migrate-hermes/plan.d.ts +1 -1
  502. package/dist/extensions/migrate-hermes/plan.js +1 -1
  503. package/dist/extensions/migrate-hermes/provider.d.ts +1 -1
  504. package/dist/extensions/migrate-hermes/provider.js +1 -1
  505. package/dist/extensions/migrate-hermes/secrets.d.ts +2 -2
  506. package/dist/extensions/migrate-hermes/secrets.js +1 -1
  507. package/dist/extensions/migrate-hermes/skills.d.ts +2 -2
  508. package/dist/extensions/migrate-hermes/targets.d.ts +1 -1
  509. package/dist/extensions/migrate-hermes/targets.js +1 -1
  510. package/dist/extensions/minimax/index.d.ts +1 -1
  511. package/dist/extensions/minimax/provider-contract-api.d.ts +1 -1
  512. package/dist/extensions/minimax/provider-registration.d.ts +1 -1
  513. package/dist/extensions/minimax/speech-provider.d.ts +1 -1
  514. package/dist/extensions/mistral/embedding-provider.d.ts +1 -1
  515. package/dist/extensions/mistral/index.d.ts +1 -1
  516. package/dist/extensions/mistral/memory-embedding-adapter.d.ts +1 -1
  517. package/dist/extensions/mistral/realtime-transcription-provider.d.ts +1 -1
  518. package/dist/extensions/mistral/test-api.d.ts +1 -1
  519. package/dist/extensions/moonshot/index.d.ts +1 -1
  520. package/dist/extensions/moonshot/provider-contract-api.d.ts +1 -1
  521. package/dist/extensions/moonshot/provider-discovery.d.ts +1 -1
  522. package/dist/extensions/nvidia/index.d.ts +1 -1
  523. package/dist/extensions/oc-path/cli-metadata.d.ts +1 -1
  524. package/dist/extensions/oc-path/cli-registration.d.ts +1 -1
  525. package/dist/extensions/oc-path/index.d.ts +1 -1
  526. package/dist/extensions/ollama/api.d.ts +1 -1
  527. package/dist/extensions/ollama/index.d.ts +1 -1
  528. package/dist/extensions/ollama/provider-discovery.d.ts +1 -1
  529. package/dist/extensions/ollama/provider-policy-api.d.ts +1 -1
  530. package/dist/extensions/ollama/runtime-api.d.ts +1 -1
  531. package/dist/extensions/open-prose/index.d.ts +1 -1
  532. package/dist/extensions/open-prose/runtime-api.d.ts +2 -2
  533. package/dist/extensions/openai/api.d.ts +4 -4
  534. package/dist/extensions/openai/embedding-batch.d.ts +1 -1
  535. package/dist/extensions/openai/embedding-provider.d.ts +1 -1
  536. package/dist/extensions/openai/index.d.ts +1 -1
  537. package/dist/extensions/openai/memory-embedding-adapter.d.ts +1 -1
  538. package/dist/extensions/openai/openai-codex-oauth.runtime.d.ts +1 -1
  539. package/dist/extensions/openai/openai-codex-provider.d.ts +1 -1
  540. package/dist/extensions/openai/openai-provider.d.ts +1 -1
  541. package/dist/extensions/openai/prompt-overlay.d.ts +1 -1
  542. package/dist/extensions/openai/provider-contract-api.d.ts +1 -1
  543. package/dist/extensions/openai/provider-policy-api.d.ts +1 -1
  544. package/dist/extensions/openai/realtime-transcription-provider.d.ts +1 -1
  545. package/dist/extensions/openai/realtime-voice-provider.d.ts +1 -1
  546. package/dist/extensions/openai/register.runtime.d.ts +6 -6
  547. package/dist/extensions/openai/replay-policy.d.ts +1 -1
  548. package/dist/extensions/openai/setup-api.d.ts +1 -1
  549. package/dist/extensions/openai/shared.d.ts +3 -3
  550. package/dist/extensions/openai/speech-provider.d.ts +1 -1
  551. package/dist/extensions/openai/test-api.d.ts +3 -3
  552. package/dist/extensions/openai/thinking-policy.d.ts +1 -1
  553. package/dist/extensions/openai/transport-policy.d.ts +1 -1
  554. package/dist/extensions/opencode/index.d.ts +1 -1
  555. package/dist/extensions/opencode/provider-policy-api.d.ts +1 -1
  556. package/dist/extensions/opencode-go/index.d.ts +1 -1
  557. package/dist/extensions/opencode-go/provider-catalog.d.ts +1 -1
  558. package/dist/extensions/opencode-go/stream.d.ts +1 -1
  559. package/dist/extensions/openrouter/api.d.ts +1 -1
  560. package/dist/extensions/openrouter/index.d.ts +1 -1
  561. package/dist/extensions/openrouter/provider-contract-api.d.ts +1 -1
  562. package/dist/extensions/openrouter/provider-policy-api.d.ts +1 -1
  563. package/dist/extensions/openrouter/speech-provider.d.ts +1 -1
  564. package/dist/extensions/openrouter/stream.d.ts +1 -1
  565. package/dist/extensions/openrouter/test-api.d.ts +1 -1
  566. package/dist/extensions/openrouter/thinking-policy.d.ts +1 -1
  567. package/dist/extensions/openrouter/video-generation-provider.d.ts +1 -1
  568. package/dist/extensions/openrouter/video-model-catalog.d.ts +1 -1
  569. package/dist/extensions/perplexity/index.d.ts +1 -1
  570. package/dist/extensions/phone-control/index.d.ts +1 -1
  571. package/dist/extensions/phone-control/runtime-api.d.ts +2 -2
  572. package/dist/extensions/policy/api.js +1 -1
  573. package/dist/extensions/policy/index.d.ts +1 -1
  574. package/dist/extensions/policy/index.js +2 -2
  575. package/dist/extensions/qianfan/index.d.ts +1 -1
  576. package/dist/extensions/qwen/api.d.ts +1 -1
  577. package/dist/extensions/qwen/index.d.ts +1 -1
  578. package/dist/extensions/qwen/stream.d.ts +1 -1
  579. package/dist/extensions/runway/index.d.ts +1 -1
  580. package/dist/extensions/searxng/index.d.ts +1 -1
  581. package/dist/extensions/senseaudio/index.d.ts +1 -1
  582. package/dist/extensions/sglang/index.d.ts +1 -1
  583. package/dist/extensions/signal/api.d.ts +3 -3
  584. package/dist/extensions/signal/api.js +6 -6
  585. package/dist/extensions/signal/channel-entry.d.ts +2 -2
  586. package/dist/extensions/signal/channel-plugin-api.d.ts +1 -1
  587. package/dist/extensions/signal/channel-plugin-api.js +1 -1
  588. package/dist/extensions/signal/index.d.ts +2 -2
  589. package/dist/extensions/signal/reaction-runtime-api.js +1 -1
  590. package/dist/extensions/signal/runtime-api.d.ts +7 -7
  591. package/dist/extensions/signal/runtime-api.js +7 -7
  592. package/dist/extensions/signal/setup-entry.d.ts +2 -2
  593. package/dist/extensions/skill-workshop/api.d.ts +2 -2
  594. package/dist/extensions/skill-workshop/api.js +1 -1
  595. package/dist/extensions/skill-workshop/index.d.ts +1 -1
  596. package/dist/extensions/skill-workshop/index.js +2 -2
  597. package/dist/extensions/speech-core/api.d.ts +3 -3
  598. package/dist/extensions/speech-core/runtime-api.d.ts +2 -2
  599. package/dist/extensions/stepfun/index.d.ts +1 -1
  600. package/dist/extensions/synthetic/index.d.ts +1 -1
  601. package/dist/extensions/talk-voice/api.d.ts +2 -2
  602. package/dist/extensions/talk-voice/index.d.ts +1 -1
  603. package/dist/extensions/tavily/index.d.ts +1 -1
  604. package/dist/extensions/telegram/account-inspect-api.js +1 -1
  605. package/dist/extensions/telegram/api.d.ts +4 -4
  606. package/dist/extensions/telegram/api.js +11 -11
  607. package/dist/extensions/telegram/channel-plugin-api.d.ts +2 -2
  608. package/dist/extensions/telegram/channel-plugin-api.js +2 -2
  609. package/dist/extensions/telegram/contract-api.d.ts +1 -1
  610. package/dist/extensions/telegram/contract-api.js +3 -3
  611. package/dist/extensions/telegram/index.d.ts +2 -2
  612. package/dist/extensions/telegram/runtime-api.d.ts +4 -4
  613. package/dist/extensions/telegram/runtime-api.js +7 -7
  614. package/dist/extensions/telegram/security-audit-contract-api.js +1 -1
  615. package/dist/extensions/telegram/setup-entry.d.ts +2 -2
  616. package/dist/extensions/telegram/setup-plugin-api.d.ts +1 -1
  617. package/dist/extensions/telegram/setup-plugin-api.js +1 -1
  618. package/dist/extensions/telegram/test-api.js +2 -2
  619. package/dist/extensions/tencent/index.d.ts +1 -1
  620. package/dist/extensions/tencent/provider-discovery.d.ts +1 -1
  621. package/dist/extensions/thread-ownership/api.d.ts +2 -2
  622. package/dist/extensions/thread-ownership/index.d.ts +1 -1
  623. package/dist/extensions/together/index.d.ts +1 -1
  624. package/dist/extensions/tokenjuice/index.d.ts +1 -1
  625. package/dist/extensions/tokenjuice/tool-result-middleware.d.ts +1 -1
  626. package/dist/extensions/tts-local-cli/index.d.ts +1 -1
  627. package/dist/extensions/tts-local-cli/speech-provider.d.ts +1 -1
  628. package/dist/extensions/venice/index.d.ts +1 -1
  629. package/dist/extensions/venice/stream.d.ts +1 -1
  630. package/dist/extensions/vercel-ai-gateway/index.d.ts +1 -1
  631. package/dist/extensions/vercel-ai-gateway/thinking.d.ts +1 -1
  632. package/dist/extensions/video-generation-core/api.d.ts +3 -3
  633. package/dist/extensions/video-generation-core/runtime-api.d.ts +1 -1
  634. package/dist/extensions/vllm/api.d.ts +1 -1
  635. package/dist/extensions/vllm/index.d.ts +1 -1
  636. package/dist/extensions/vllm/stream.d.ts +1 -1
  637. package/dist/extensions/volcengine/index.d.ts +1 -1
  638. package/dist/extensions/volcengine/provider-discovery.d.ts +1 -1
  639. package/dist/extensions/volcengine/speech-provider.d.ts +1 -1
  640. package/dist/extensions/voyage/embedding-batch.d.ts +1 -1
  641. package/dist/extensions/voyage/embedding-provider.d.ts +1 -1
  642. package/dist/extensions/voyage/index.d.ts +1 -1
  643. package/dist/extensions/voyage/memory-embedding-adapter.d.ts +1 -1
  644. package/dist/extensions/vydra/index.d.ts +1 -1
  645. package/dist/extensions/vydra/speech-provider.d.ts +1 -1
  646. package/dist/extensions/web-readability/index.d.ts +1 -1
  647. package/dist/extensions/webhooks/api.d.ts +2 -2
  648. package/dist/extensions/webhooks/api.js +1 -1
  649. package/dist/extensions/webhooks/index.d.ts +1 -1
  650. package/dist/extensions/webhooks/index.js +1 -1
  651. package/dist/extensions/webhooks/runtime-api.d.ts +2 -2
  652. package/dist/extensions/xai/api.d.ts +1 -1
  653. package/dist/extensions/xai/index.d.ts +1 -1
  654. package/dist/extensions/xai/index.js +4 -4
  655. package/dist/extensions/xai/provider-contract-api.d.ts +1 -1
  656. package/dist/extensions/xai/provider-discovery.d.ts +1 -1
  657. package/dist/extensions/xai/provider-models.d.ts +1 -1
  658. package/dist/extensions/xai/provider-policy-api.d.ts +1 -1
  659. package/dist/extensions/xai/realtime-transcription-provider.d.ts +1 -1
  660. package/dist/extensions/xai/realtime-transcription-provider.js +1 -1
  661. package/dist/extensions/xai/setup-api.d.ts +1 -1
  662. package/dist/extensions/xai/speech-provider.d.ts +1 -1
  663. package/dist/extensions/xai/speech-provider.js +1 -1
  664. package/dist/extensions/xai/stream.d.ts +1 -1
  665. package/dist/extensions/xai/test-api.js +1 -1
  666. package/dist/extensions/xai/tts.js +1 -1
  667. package/dist/extensions/xai/web-search.js +1 -1
  668. package/dist/extensions/xai/xai-oauth.d.ts +1 -1
  669. package/dist/extensions/xai/xai-oauth.js +1 -1
  670. package/dist/extensions/xiaomi/index.d.ts +1 -1
  671. package/dist/extensions/xiaomi/speech-provider.d.ts +1 -1
  672. package/dist/extensions/xiaomi/stream.d.ts +1 -1
  673. package/dist/extensions/xiaomi/thinking.d.ts +1 -1
  674. package/dist/extensions/zai/index.d.ts +1 -1
  675. package/dist/file-fetch-tool-smMykVXl.js +124 -0
  676. package/dist/file-write-tool-yEYLZ2hU.js +127 -0
  677. package/dist/format-DyREJP5V.js +1145 -0
  678. package/dist/gateway/protocol/index.d.ts +1 -1
  679. package/dist/gateway-cli-D4yhwJa8.js +435 -0
  680. package/dist/gateway-method-runtime-B8AOnwqD.js +21 -0
  681. package/dist/gateway-runtime-BqKz92h9.d.ts +163 -0
  682. package/dist/gemini-cli-provider-wUxyeRzT.d.ts +6 -0
  683. package/dist/get-reply-Co-_Qlr-.js +4689 -0
  684. package/dist/get-reply-from-config.runtime-BcbRKxzJ.js +2 -0
  685. package/dist/get-reply-from-config.runtime.js +1 -1
  686. package/dist/graph-users-CF7Dlee2.js +1419 -0
  687. package/dist/group-access-BTU-w5S5.js +112 -0
  688. package/dist/group-keys-B_lbVBmI.d.ts +17 -0
  689. package/dist/handle-action.guild-admin-DS29y_6h.js +288 -0
  690. package/dist/harness-d9YmZWA3.js +61 -0
  691. package/dist/health-Cov1Kryj.js +4 -0
  692. package/dist/heartbeat-runner-B2wo_xDj.js +5 -0
  693. package/dist/heartbeat-runner.runtime-DrHZD-P2.js +4 -0
  694. package/dist/heartbeat-runner.runtime.js +1 -1
  695. package/dist/help-BgDd1atJ.js +136 -0
  696. package/dist/hook-runtime-UU80d5qW.d.ts +108 -0
  697. package/dist/hooks-CgXKCJSD.js +534 -0
  698. package/dist/http-registry-CBDAGRJy.d.ts +23 -0
  699. package/dist/image-generation-runtime-BFOnMPYD.d.ts +21 -0
  700. package/dist/inbound-direct-dm-runtime-DjOHl6c_.js +2 -0
  701. package/dist/inbound-reply-dispatch-BCTiM2jm.js +148 -0
  702. package/dist/index-D7Vsu6c4.d.ts +3971 -0
  703. package/dist/index.d.ts +1 -1
  704. package/dist/index.js +1 -1
  705. package/dist/init-CreYGHpp.js +59 -0
  706. package/dist/inline-buttons-C94TOhmL.js +40 -0
  707. package/dist/interactive-dispatch-AIMj_vt7.d.ts +143 -0
  708. package/dist/interactive-dispatch-Bh_T3uZG.d.ts +56 -0
  709. package/dist/internal-events-B6D5bqsn.js +90 -0
  710. package/dist/isolated-agent-9faqxl7c.js +1118 -0
  711. package/dist/isolated-agent-CaY4uTcE.js +2 -0
  712. package/dist/lifecycle-pTz4liUn.js +571 -0
  713. package/dist/list.probe-B8pt-DOd.js +449 -0
  714. package/dist/list.status-command-Wgmt361J.js +789 -0
  715. package/dist/llm-slug-generator-Do4oXnXl.js +78 -0
  716. package/dist/llm-slug-generator.js +1 -1
  717. package/dist/loader-BFBzvUK_.d.ts +142 -0
  718. package/dist/local-dispatch.runtime-7keeuHHm.js +9 -0
  719. package/dist/local-dispatch.runtime.js +1 -1
  720. package/dist/manager-D058VQAp.d.ts +10 -0
  721. package/dist/manager-DerRaxsV.d.ts +356 -0
  722. package/dist/manager.core-DKeUsAcV.d.ts +198 -0
  723. package/dist/manager.runtime-B3nVh8Nl.js +2714 -0
  724. package/dist/manager.runtime.js +1 -1
  725. package/dist/markdown-to-line-CZLeX0SL.js +811 -0
  726. package/dist/mcp-http-LaAmzBev.js +2 -0
  727. package/dist/mcp-http-M4GjuKFd.js +555 -0
  728. package/dist/media-understanding-provider-DLA6VsQZ.js +339 -0
  729. package/dist/memory-core-host-engine-storage-MF-67Z8w.d.ts +54 -0
  730. package/dist/memory-embedding-adapter-CEwgurWU.d.ts +5 -0
  731. package/dist/message-actions-Dlv-B5yk.js +145 -0
  732. package/dist/message-handler-2HSbEoAi.js +384 -0
  733. package/dist/message-handler-XiApv_iS.js +1715 -0
  734. package/dist/message-handler.preflight-CN-g4nxs.js +1125 -0
  735. package/dist/message-handler.process-BzVq3Lq_.js +1484 -0
  736. package/dist/migration-BXmTbRk9.d.ts +45 -0
  737. package/dist/model-Ci5kQ7PA.d.ts +33 -0
  738. package/dist/model-Sqz99RFi.js +74 -0
  739. package/dist/model-selection-Bh9QtqlJ.js +272 -0
  740. package/dist/models-C_dD1FNN.js +2 -0
  741. package/dist/models-CtpB-fi2.js +104 -0
  742. package/dist/models-Cxa7r3rl.d.ts +24 -0
  743. package/dist/models-cli-I2sJE5tg.js +256 -0
  744. package/dist/monitor-B4J6Kn4-.js +60 -0
  745. package/dist/monitor-BIFxJ3Ql.js +2788 -0
  746. package/dist/monitor-BTkcXHvw.js +834 -0
  747. package/dist/monitor-BX7Encm5.js +1657 -0
  748. package/dist/monitor-CZsJ4D3J.js +4377 -0
  749. package/dist/monitor-CvKt9k7P.js +2 -0
  750. package/dist/monitor-Dy9phiVJ.js +1370 -0
  751. package/dist/monitor-auth-CjtJPc9C.js +179 -0
  752. package/dist/monitor-jQpVHEky.js +715 -0
  753. package/dist/monitor-polling.runtime-Li4-3e2G.js +883 -0
  754. package/dist/monitor-polling.runtime.js +1 -1
  755. package/dist/monitor-webhook.runtime-CQ2kN5ya.js +387 -0
  756. package/dist/monitor-webhook.runtime.js +1 -1
  757. package/dist/monitor.account-CFdazLEm.js +5233 -0
  758. package/dist/monitor.runtime-B774iFU_.js +2 -0
  759. package/dist/monitor.runtime.js +1 -1
  760. package/dist/monitor.webhook-NNrWA5P9.js +180 -0
  761. package/dist/node-cli-sessions-Ct-6bGab.js +1228 -0
  762. package/dist/onboard-DEUA1HCQ.js +733 -0
  763. package/dist/onboard-helpers-Cupkjkec.js +251 -0
  764. package/dist/onboard-helpers-D1Pvowo1.js +6 -0
  765. package/dist/onboard-remote-BN_7wNqG.js +2 -0
  766. package/dist/onboard-remote-BqYAK5dF.js +212 -0
  767. package/dist/onboard-skills-BM40qOkc.js +160 -0
  768. package/dist/onboard-skills-rSLgDOzB.js +2 -0
  769. package/dist/openai-codex-provider-Fo-TKiyf.d.ts +5 -0
  770. package/dist/openai-http-BRnxRJ_y.js +824 -0
  771. package/dist/openai-provider-BqDrspuV.d.ts +5 -0
  772. package/dist/openresponses-http-Dg3OL0qA.js +1173 -0
  773. package/dist/operations-jvr0A8cu.js +805 -0
  774. package/dist/outbound-adapter-BJej9JpO.js +543 -0
  775. package/dist/outbound-session-route-D3QVwFKr.js +45 -0
  776. package/dist/outbound.runtime-gdOoPtOh.js +2 -0
  777. package/dist/outbound.runtime.js +1 -1
  778. package/dist/pairing-store-C-WQTUHq.d.ts +87 -0
  779. package/dist/pi-embedded-CwD_xrGP.js +3796 -0
  780. package/dist/pi-embedded-DL6l8KBl.js +4 -0
  781. package/dist/pi-embedded.runtime-DyGCj24d.js +4 -0
  782. package/dist/pi-embedded.runtime.js +1 -1
  783. package/dist/pi-tools-BzbgexEG.js +2413 -0
  784. package/dist/plan-HWBV2Rhq.js +112 -0
  785. package/dist/plan-iN77JYw-.js +81 -0
  786. package/dist/plugin-BbOOGgCS.d.ts +17 -0
  787. package/dist/plugin-CbNvjum_.js +12396 -0
  788. package/dist/plugin-app-cache-key-CHpwYM0e.js +46 -0
  789. package/dist/plugin-enabled-DjbDhNRG.js +233 -0
  790. package/dist/plugin-entry-B3_M6paP.d.ts +47 -0
  791. package/dist/plugin-registration-BM_Iko3e.js +88 -0
  792. package/dist/plugin-runtime-QzTPitsy.d.ts +117 -0
  793. package/dist/plugin-sdk/.boundary-entry-shims.stamp +1 -1
  794. package/dist/plugin-sdk/acp-runtime-backend.js +1 -1
  795. package/dist/plugin-sdk/acp-runtime.js +2 -2
  796. package/dist/plugin-sdk/agent-harness-runtime.js +6 -6
  797. package/dist/plugin-sdk/agent-harness-task-runtime.js +1 -1
  798. package/dist/plugin-sdk/agent-harness.js +7 -7
  799. package/dist/plugin-sdk/agent-runtime.js +2 -2
  800. package/dist/plugin-sdk/channel-core.js +2 -2
  801. package/dist/plugin-sdk/channel-inbound.js +2 -2
  802. package/dist/plugin-sdk/channel-test-helpers.js +1 -1
  803. package/dist/plugin-sdk/command-auth.js +1 -1
  804. package/dist/plugin-sdk/command-status-runtime.js +1 -1
  805. package/dist/plugin-sdk/compat.js +1 -1
  806. package/dist/plugin-sdk/conversation-binding-runtime.js +2 -2
  807. package/dist/plugin-sdk/conversation-runtime.js +3 -3
  808. package/dist/plugin-sdk/core.js +2 -2
  809. package/dist/plugin-sdk/direct-dm.js +1 -1
  810. package/dist/plugin-sdk/gateway-method-runtime.js +1 -1
  811. package/dist/plugin-sdk/health.js +2 -2
  812. package/dist/plugin-sdk/inbound-reply-dispatch.js +1 -1
  813. package/dist/plugin-sdk/index.js +1 -1
  814. package/dist/plugin-sdk/mattermost.js +1 -1
  815. package/dist/plugin-sdk/plugin-test-contracts.js +2 -2
  816. package/dist/plugin-sdk/provider-test-contracts.js +4 -4
  817. package/dist/plugin-sdk/reply-runtime.js +4 -4
  818. package/dist/plugin-sdk/testing.js +2 -2
  819. package/dist/plugin-sdk/zalouser.js +1 -1
  820. package/dist/plugin-service-CVyMm03C.js +1229 -0
  821. package/dist/plugin-service-bHD8oLfO.d.ts +24 -0
  822. package/dist/plugins/build-smoke-entry.d.ts +2 -2
  823. package/dist/plugins/loader.d.ts +1 -1
  824. package/dist/plugins/provider-discovery.runtime.d.ts +1 -1
  825. package/dist/plugins/provider-runtime.runtime.d.ts +1 -1
  826. package/dist/plugins/runtime/index.js +4 -4
  827. package/dist/policy-B2lTxn8H.js +680 -0
  828. package/dist/policy-Bp9GYcSZ.js +138 -0
  829. package/dist/prepare.runtime-CxhQeo9l.js +732 -0
  830. package/dist/prepare.runtime.js +1 -1
  831. package/dist/preview-warnings-FVRS7Mcs.js +392 -0
  832. package/dist/probe-BRLc43oX.js +47 -0
  833. package/dist/probe-C1eD9yG7.js +2204 -0
  834. package/dist/probe-C1giMJtz.js +682 -0
  835. package/dist/probe-rIUNPFef.js +2 -0
  836. package/dist/program-DfIqBXRH.js +131 -0
  837. package/dist/prompt-overlay-Bq3sUpDV.d.ts +23 -0
  838. package/dist/provider-BCxvG42s.js +152 -0
  839. package/dist/provider-BHPMcHk-.js +32 -0
  840. package/dist/provider-CIAQ8D7q.js +32 -0
  841. package/dist/provider-api-key-auth-BsEQw2pm.d.ts +27 -0
  842. package/dist/provider-auth-result-B204hPXB.d.ts +21 -0
  843. package/dist/provider-catalog-runtime-Dcyw8skT.d.ts +23 -0
  844. package/dist/provider-catalog-shared-qfgsIQS-.d.ts +62 -0
  845. package/dist/provider-dispatcher-DyJDef6y.js +22 -0
  846. package/dist/provider-dispatcher.runtime.js +1 -1
  847. package/dist/provider-hook-runtime-NiAPyKFa.d.ts +61 -0
  848. package/dist/provider-j7cYms68.js +8735 -0
  849. package/dist/provider-model-shared-BwE02tDa.d.ts +143 -0
  850. package/dist/provider-models-hfm5XTTN.d.ts +12 -0
  851. package/dist/provider-policy-BB7uTrIp.d.ts +30 -0
  852. package/dist/provider-registration-DEjYSu9M.d.ts +6 -0
  853. package/dist/provider-registry-D5hn-VAM.d.ts +8 -0
  854. package/dist/provider-registry-DHIsMEbc.d.ts +8 -0
  855. package/dist/provider-registry-VyHjmzoh.d.ts +30 -0
  856. package/dist/provider-runtime-CdtuIOgf.d.ts +359 -0
  857. package/dist/provider-self-hosted-setup-xR0Nsu7L.d.ts +74 -0
  858. package/dist/provider-session.runtime-CmNY15Mr.js +9 -0
  859. package/dist/provider-session.runtime.js +1 -1
  860. package/dist/provider-stream-CxVko1CO.d.ts +140 -0
  861. package/dist/provider-stream-shared-BxFPKFGe.d.ts +128 -0
  862. package/dist/provider.runtime-DJO3dwrX.js +2 -0
  863. package/dist/provider.runtime.js +1 -1
  864. package/dist/providers.runtime-CJOUbS2S.d.ts +25 -0
  865. package/dist/public-surface-loader-CgBnme5n.js +114 -0
  866. package/dist/pw-ai-UeRWGzcL.js +3029 -0
  867. package/dist/pw-role-snapshot-BtlutwlO.js +333 -0
  868. package/dist/reaction-level-DWOV-qJM.js +19 -0
  869. package/dist/reaction-runtime-api-5ZiPcbGJ.js +116 -0
  870. package/dist/realtime-transcription-CZadifvk.d.ts +43 -0
  871. package/dist/realtime-transcription-provider-BF9HxM3d.d.ts +5 -0
  872. package/dist/realtime-transcription-provider-Bcj92hEI.d.ts +32 -0
  873. package/dist/realtime-transcription-provider-DKZ9iHkc.d.ts +28 -0
  874. package/dist/realtime-transcription-provider-DcsAmQEp.js +205 -0
  875. package/dist/realtime-transcription-provider-DhjVTTqb.d.ts +37 -0
  876. package/dist/realtime-voice-B2W34yTP.d.ts +333 -0
  877. package/dist/realtime-voice-provider-CgNNrGwQ.d.ts +5 -0
  878. package/dist/register-Dga1nJRL.js +2178 -0
  879. package/dist/register.agent-VIgyZLKG.js +156 -0
  880. package/dist/register.configure-C21zJ4Qb.js +16 -0
  881. package/dist/register.crestodian-Bam6mUXr.js +24 -0
  882. package/dist/register.maintenance-D9E-Hh90.js +83 -0
  883. package/dist/register.onboard-BnUcaZsb.js +113 -0
  884. package/dist/register.runtime-BdRAp4xz.js +54 -0
  885. package/dist/register.runtime-D3abILg7.d.ts +6 -0
  886. package/dist/register.setup-Bq-9IQdV.js +40 -0
  887. package/dist/register.subclis-DubBtg8Z.js +31 -0
  888. package/dist/register.subclis-H_qmmDFx.js +3 -0
  889. package/dist/register.subclis-core-fg3DalSH.js +273 -0
  890. package/dist/registry-CPtiHUu_.d.ts +91 -0
  891. package/dist/registry-types-XtFJDNYl.d.ts +392 -0
  892. package/dist/repair-sequencing-Dn0sDvBE.js +640 -0
  893. package/dist/reply-delivery-DZGfRh-W.js +196 -0
  894. package/dist/reply-runtime-BdCPL-OF.js +11 -0
  895. package/dist/reply-runtime-DuaOZ9MH.d.ts +34 -0
  896. package/dist/reply.runtime-BcbRKxzJ.js +2 -0
  897. package/dist/reply.runtime.js +1 -1
  898. package/dist/request-Ca681Kt1.js +54 -0
  899. package/dist/resolve-allowlist-DWjCzDq1.js +220 -0
  900. package/dist/result-fallback-classifier-BWIh0wzc.js +79 -0
  901. package/dist/root-help-8a3TWleF.js +43 -0
  902. package/dist/route-BsWREv6-.js +469 -0
  903. package/dist/route-resolution-D8FyF30I.js +274 -0
  904. package/dist/routes-BxkaJuyM.js +3602 -0
  905. package/dist/routes-DdwFgSv9.js +2 -0
  906. package/dist/run-attempt-Ca7HP1Nd.js +7704 -0
  907. package/dist/run-command-JwrnqCIB.js +2 -0
  908. package/dist/run-command-wWvfXyIf.js +23 -0
  909. package/dist/run-embedded.runtime-0QIAc8PG.js +4 -0
  910. package/dist/run-embedded.runtime.js +1 -1
  911. package/dist/run-execution-cli.runtime-LhD-S0h_.js +4 -0
  912. package/dist/run-execution-cli.runtime.js +1 -1
  913. package/dist/run-executor.runtime.js +1 -1
  914. package/dist/run-prKMVvM2.js +1162 -0
  915. package/dist/run-subagent-registry.runtime-C07jSlV2.js +2 -0
  916. package/dist/run-subagent-registry.runtime.js +1 -1
  917. package/dist/runtime-3PDZU_1b.d.ts +17 -0
  918. package/dist/runtime-7Xhj2T8S.js +6179 -0
  919. package/dist/runtime-CXUwJU3q.js +438 -0
  920. package/dist/runtime-DeQypuDs.js +1287 -0
  921. package/dist/runtime-api-0djTIsuz.js +13 -0
  922. package/dist/runtime-api-9CEihqK3.d.ts +3151 -0
  923. package/dist/runtime-api-Bz1h0p3i.js +17 -0
  924. package/dist/runtime-api-CLcJZKu2.js +13 -0
  925. package/dist/runtime-api-Ce7axAAW.js +24 -0
  926. package/dist/runtime-api-CoAsju8a.js +4 -0
  927. package/dist/runtime-api-DEuynhDr.js +3 -0
  928. package/dist/runtime-api-oZFIOS9l.js +21 -0
  929. package/dist/runtime-api.actions-Blt2bAHw.d.ts +23 -0
  930. package/dist/runtime-api.actions-DWLRlSej.js +3 -0
  931. package/dist/runtime-api.monitor-DtXB3_sf.js +6 -0
  932. package/dist/runtime-api.send-BU586hbs.js +4 -0
  933. package/dist/runtime-api.send-BygcWA7R.d.ts +38 -0
  934. package/dist/runtime-api.threads-Djhr5AJy.js +2 -0
  935. package/dist/runtime-channel-BIgBTs_X.js +2 -0
  936. package/dist/runtime-channel-CsUTBjYU.js +150 -0
  937. package/dist/runtime-embedded-pi.runtime-Rszd_KCt.js +2 -0
  938. package/dist/runtime-embedded-pi.runtime.js +1 -1
  939. package/dist/runtime-taskflow-s80xQc2H.d.ts +435 -0
  940. package/dist/sanitize-outbound-2umQeW_U.js +127 -0
  941. package/dist/sdk-setup-tools-TiaNam05.js +8 -0
  942. package/dist/secrets-BmyFSkt-.js +113 -0
  943. package/dist/secrets-cli-DPAwFvtH.js +149 -0
  944. package/dist/security-audit-BR9FBcLD.js +122 -0
  945. package/dist/security-audit-RKut1lWG.js +118 -0
  946. package/dist/security-audit.runtime-Pe7YbS9P.js +2 -0
  947. package/dist/security-audit.runtime.js +1 -1
  948. package/dist/selection-Cqhmjpyl.js +16157 -0
  949. package/dist/selection-xFFMaq92.js +3 -0
  950. package/dist/send-BDHagrwl.js +1631 -0
  951. package/dist/send-BETlETJ5.d.ts +231 -0
  952. package/dist/send-BV_O_Ljd.js +192 -0
  953. package/dist/send-CpcmWYrM.d.ts +104 -0
  954. package/dist/send-W-DVyil6.js +2 -0
  955. package/dist/send-jUp2-szO.js +143 -0
  956. package/dist/send.components-BR_yPtKv.js +500 -0
  957. package/dist/send.components-CK7UbpRP.js +2 -0
  958. package/dist/send.runtime-DHLfdHbS.js +2 -0
  959. package/dist/send.runtime.js +1 -1
  960. package/dist/send.types-D_3tsfSL.d.ts +159 -0
  961. package/dist/server-DRcdRu6J.js +73 -0
  962. package/dist/server-Ddv-oAKv.js +24 -0
  963. package/dist/server-close.runtime.d.ts +1 -1
  964. package/dist/server-close.runtime.js +1 -1
  965. package/dist/server-context-9rW0Cvdw.js +2 -0
  966. package/dist/server-context-uRD5N8_D.js +955 -0
  967. package/dist/server-cron-BClEPtbv.js +2 -0
  968. package/dist/server-cron-CNGar45o.js +2989 -0
  969. package/dist/server-methods-CAMhJf7g.js +16494 -0
  970. package/dist/server-node-events-DW5DoAxk.js +596 -0
  971. package/dist/server-plugin-bootstrap-CqX4dDcN.js +70 -0
  972. package/dist/server-plugins-BIhs3eCz.js +432 -0
  973. package/dist/server-reload-handlers-54HSfSr7.js +714 -0
  974. package/dist/server-restart-sentinel-C47-O08k.js +747 -0
  975. package/dist/server-restart-sentinel-Cx-3Rzl0.js +2 -0
  976. package/dist/server-runtime-services-D-SWzUww.js +267 -0
  977. package/dist/server-runtime-services-D0GOFPFq.js +2 -0
  978. package/dist/server-startup-plugins-C8pzVvkb.js +113 -0
  979. package/dist/server-startup-post-attach-2xoGJJts.js +716 -0
  980. package/dist/server-ws-runtime-Dywo6GC-.js +349 -0
  981. package/dist/server.impl-xK22fZyJ.js +2586 -0
  982. package/dist/service-Ci8roOZn.js +1446 -0
  983. package/dist/session-binding-BsdbGBhb.js +219 -0
  984. package/dist/session-binding-D42jROcb.js +2 -0
  985. package/dist/session-kill-http-kU4rUj1_.js +121 -0
  986. package/dist/session-reset-service-DkCGElAA.js +625 -0
  987. package/dist/session-route-hmQSEijy.js +93 -0
  988. package/dist/session-status.runtime-Dsz-54he.js +2 -0
  989. package/dist/session-status.runtime.js +1 -1
  990. package/dist/session-subagent-reactivation.runtime-CYJIkiW8.js +2 -0
  991. package/dist/session-subagent-reactivation.runtime.js +1 -1
  992. package/dist/session-tab-registry-YfQve--K.js +521 -0
  993. package/dist/sessions-history-http-DeuZSSGj.js +430 -0
  994. package/dist/sessions.runtime-wAccC8Lk.js +2 -0
  995. package/dist/sessions.runtime.js +1 -1
  996. package/dist/setup-B8caUFIZ.js +586 -0
  997. package/dist/setup-CgHGdMpV.js +2 -0
  998. package/dist/setup-api-Uew7qBry.js +29 -0
  999. package/dist/setup-core-BP_fjsmA.js +174 -0
  1000. package/dist/setup-onboard-configure-help-fast-path-ykLp2JqU.js +64 -0
  1001. package/dist/setup-surface-BgEGrdZ3.js +320 -0
  1002. package/dist/setup-surface-BvSqsFEu.js +221 -0
  1003. package/dist/setup-surface-CHzMJ7_T.js +405 -0
  1004. package/dist/setup-surface-DYm3Xvgt.js +288 -0
  1005. package/dist/setup.finalize-BgLIjblM.js +582 -0
  1006. package/dist/setup.gateway-config-BBguRpIc.js +281 -0
  1007. package/dist/setup.migration-import-BY06brv-.js +200 -0
  1008. package/dist/setup.migration-import-Igj5NMey.js +2 -0
  1009. package/dist/shared-client-GL2KQ2Eu.js +2 -0
  1010. package/dist/shared-client-Mc7bTBoQ.js +629 -0
  1011. package/dist/shared-moi7PK0C.js +121 -0
  1012. package/dist/shared-rlOyTpAw.d.ts +115 -0
  1013. package/dist/side-question-BEHswpGw.js +683 -0
  1014. package/dist/simple-completion-runtime-CsXJkjY5.d.ts +73 -0
  1015. package/dist/skill-tool-dispatch.runtime-O5uXeees.js +143 -0
  1016. package/dist/skill-tool-dispatch.runtime.js +1 -1
  1017. package/dist/slash-state-BAYUTcHl.js +2166 -0
  1018. package/dist/speech-BAP4NgqI.d.ts +47 -0
  1019. package/dist/speech-core-DZmhKq_b.d.ts +36 -0
  1020. package/dist/speech-provider-22oDk8Tz.js +184 -0
  1021. package/dist/speech-provider-79S_bTlE.d.ts +8 -0
  1022. package/dist/speech-provider-BYJna1nq.d.ts +5 -0
  1023. package/dist/speech-provider-BvKhsuyg.d.ts +5 -0
  1024. package/dist/speech-provider-CdVIHtT6.d.ts +5 -0
  1025. package/dist/speech-provider-OiRKJFwo.d.ts +8 -0
  1026. package/dist/speech-provider-xUDd1kmD.d.ts +34 -0
  1027. package/dist/src-C8wkJgE6.js +4256 -0
  1028. package/dist/startup-context-BhLJufFU.js +313 -0
  1029. package/dist/status-C20LHDLA.js +73 -0
  1030. package/dist/status-message-CmzgS8zM.js +484 -0
  1031. package/dist/status-message.runtime-iG6qi7wn.js +6 -0
  1032. package/dist/status-message.runtime.js +1 -1
  1033. package/dist/status-subagents.runtime-D49P_RIr.js +18 -0
  1034. package/dist/status-subagents.runtime.js +1 -1
  1035. package/dist/status-text-BI7Q1z4U.js +296 -0
  1036. package/dist/status.runtime-RQes0TI5.js +2 -0
  1037. package/dist/sticker-cache-Dh4joqan.js +206 -0
  1038. package/dist/sticker-vision.runtime-5SRgpo_k.js +17 -0
  1039. package/dist/sticker-vision.runtime.js +1 -1
  1040. package/dist/stream-BrMwI7HV.d.ts +10 -0
  1041. package/dist/stream-Bx_akKgo.d.ts +16 -0
  1042. package/dist/stream-D094UIVI.d.ts +5 -0
  1043. package/dist/stream-D5DoOmTT.d.ts +19 -0
  1044. package/dist/stream-Tt9cSOCl.d.ts +120 -0
  1045. package/dist/stream-wrappers-CUkNtyZK.d.ts +21 -0
  1046. package/dist/subagent-announce-BEPlkjCS.js +354 -0
  1047. package/dist/subagent-announce-delivery-jcxPIfNG.js +958 -0
  1048. package/dist/subagent-control-DdMWVJXs.js +508 -0
  1049. package/dist/subagent-hooks-BsTVb6ur.js +2 -0
  1050. package/dist/subagent-hooks-CBlMBrss.js +2 -0
  1051. package/dist/subagent-hooks-Ch5oDUxb.js +116 -0
  1052. package/dist/subagent-hooks-DmUeAwY3.js +146 -0
  1053. package/dist/subagent-hooks-PNuPbYEl.js +2 -0
  1054. package/dist/subagent-hooks-api-BQ051dF0.js +23 -0
  1055. package/dist/subagent-hooks-api-DcVS0aJZ.js +22 -0
  1056. package/dist/subagent-hooks-api-Dlbc5Mtd.js +23 -0
  1057. package/dist/subagent-hooks-dwsegI07.js +230 -0
  1058. package/dist/subagent-orphan-recovery-Cl_y6Poi.js +352 -0
  1059. package/dist/subagent-registry-BVVgDSdq.d.ts +1 -0
  1060. package/dist/subagent-registry-BosUdBW6.js +2351 -0
  1061. package/dist/subagent-registry-Bxd6vaAO.js +3 -0
  1062. package/dist/subagent-registry-read-BVVgDSdq.d.ts +1 -0
  1063. package/dist/subagent-registry.runtime.js +1 -1
  1064. package/dist/subagent-session-cleanup-Bd6d93qi.js +525 -0
  1065. package/dist/subagent-spawn-ViO3XAR1.js +1164 -0
  1066. package/dist/target-id-Bje_v2Ax.js +107 -0
  1067. package/dist/targets-9q_q5M9n.d.ts +10 -0
  1068. package/dist/targets-C4byiOgQ.js +19 -0
  1069. package/dist/targets-J0MVE-dD.js +44 -0
  1070. package/dist/targets-ZMEvyNa8.js +19 -0
  1071. package/dist/targets-qBcfKetP.d.ts +10 -0
  1072. package/dist/task-registry-control.runtime.d.ts +1 -1
  1073. package/dist/task-registry-control.runtime.js +1 -1
  1074. package/dist/telegram/token.js +1 -1
  1075. package/dist/testing-Dk757Ggg.js +267 -0
  1076. package/dist/thinking-policy-DO6T8IfK.d.ts +5 -0
  1077. package/dist/thread-bindings-CYrmTzFY.js +232 -0
  1078. package/dist/thread-bindings-Cf7fkXxk.js +571 -0
  1079. package/dist/thread-bindings-DI6LNGbW.js +8 -0
  1080. package/dist/thread-bindings-DdmuKtVD.js +228 -0
  1081. package/dist/thread-bindings.discord-api-C01V3kFk.js +187 -0
  1082. package/dist/thread-bindings.manager--WOGVrL-.js +2 -0
  1083. package/dist/thread-bindings.manager-HzjqZNiL.js +536 -0
  1084. package/dist/thread-lifecycle-CJKTxWnQ.js +1614 -0
  1085. package/dist/token-D-FQ8AQz.js +134 -0
  1086. package/dist/tool-DTCfs0DU.js +139 -0
  1087. package/dist/tool-actions.runtime-Cb3iA3Os.js +534 -0
  1088. package/dist/tool-actions.runtime.js +1 -1
  1089. package/dist/tool-plugin-CbbLM31f.d.ts +77 -0
  1090. package/dist/tool-resolution-CbqzNutV.js +149 -0
  1091. package/dist/tool-split-bLqMPHTZ.d.ts +19 -0
  1092. package/dist/tools-effective-inventory-BsAax-ML.js +204 -0
  1093. package/dist/tools-invoke-http-DAqZxikd.js +67 -0
  1094. package/dist/tools-invoke-shared-CsVRemTL.js +200 -0
  1095. package/dist/transport-stream-DOXZsjVL.d.ts +42 -0
  1096. package/dist/tts-Ckj6MJNr.js +66 -0
  1097. package/dist/tui-CwwCXMCq.js +2 -0
  1098. package/dist/tui-DpJn3v2D.js +4709 -0
  1099. package/dist/tui-backend-DQ9wF5es.js +256 -0
  1100. package/dist/tui-cli-k3AYPBn3.js +37 -0
  1101. package/dist/types--0xYmMG9.d.ts +786 -0
  1102. package/dist/types-CMDl9l_P2.d.ts +3650 -0
  1103. package/dist/types.public-DvhPzYJi.d.ts +70 -0
  1104. package/dist/update-cli-DB5Doqld.js +3664 -0
  1105. package/dist/video-generation-runtime-CTQN-4SI.d.ts +21 -0
  1106. package/dist/video-model-catalog-CTyt4dXa.d.ts +16 -0
  1107. package/dist/vision-tools-Dp0JrLRi.js +1409 -0
  1108. package/dist/web-search-B0yvxuiq.js +62 -0
  1109. package/dist/web-search-provider.runtime-B-cNT-5J.js +2 -0
  1110. package/dist/web-search-provider.runtime-HhmIlk_Z.js +328 -0
  1111. package/dist/web-search-provider.runtime.js +1 -1
  1112. package/dist/webhook-targets-3u4hOqRl.d.ts +99 -0
  1113. package/dist/xai-oauth-cZGjnEjh.js +479 -0
  1114. package/dist/xai-user-agent-DA8le6vP.js +32 -0
  1115. package/dist/zod-schema.core-i5HaY1T4.d.ts +166 -0
  1116. package/package.json +1 -1
  1117. package/dist/abort-CvuLeqr1.js +0 -277
  1118. package/dist/abort.runtime-DNoavlKn.js +0 -2
  1119. package/dist/account-inspect-ByX21U_z.js +0 -173
  1120. package/dist/accounts-B0sjdn0w.js +0 -119
  1121. package/dist/accounts-BF_AfTED.js +0 -107
  1122. package/dist/accounts-DX1c8NKM.js +0 -107
  1123. package/dist/accounts-EA2GGTep.js +0 -2
  1124. package/dist/acp-runtime-BC8oA7xM.js +0 -26
  1125. package/dist/acp-spawn-CPYDCZ95.js +0 -2
  1126. package/dist/acp-spawn-Cqi47GCL.js +0 -1275
  1127. package/dist/acp-stateful-target-driver-CcWMRAQ2.js +0 -89
  1128. package/dist/action-kill-CZrPfOIS.js +0 -33
  1129. package/dist/action-runtime-DuhVKLRJ.js +0 -469
  1130. package/dist/action-runtime-api-BKaUWi7b.js +0 -2
  1131. package/dist/action-send-_NpIHMwj.js +0 -39
  1132. package/dist/action-spawn-Dymn4rUo.js +0 -47
  1133. package/dist/actions-Bk_WaEAa.js +0 -161
  1134. package/dist/actions.runtime-Hh7HYOlJ.js +0 -5
  1135. package/dist/agent-CQzGVmy1.js +0 -2
  1136. package/dist/agent-ClmYyW81.js +0 -3
  1137. package/dist/agent-command-D5KxwCVS.d.ts +0 -141
  1138. package/dist/agent-command-DbU2fo-p.js +0 -1367
  1139. package/dist/agent-components.runtime-BpXJmJXk.js +0 -10
  1140. package/dist/agent-harness-D8c6PLE_.d.ts +0 -146
  1141. package/dist/agent-harness-runtime-AHXS4Jj3.d.ts +0 -691
  1142. package/dist/agent-harness-runtime-TzbK9YTz.js +0 -180
  1143. package/dist/agent-harness-task-runtime-CZWJEsKk.js +0 -140
  1144. package/dist/agent-runner-execution-CmHT78Vr.js +0 -1713
  1145. package/dist/agent-runner-utils-B0i1PW18.js +0 -266
  1146. package/dist/agent-runner.runtime-B6Ah_MlB.js +0 -3455
  1147. package/dist/agent-runtime-BOMioAX6.js +0 -229
  1148. package/dist/agent-via-gateway-DfxQCPit.js +0 -463
  1149. package/dist/agents.commands.add-CszEBxoJ.js +0 -304
  1150. package/dist/agents.commands.delete-ulnJ7RH9.js +0 -128
  1151. package/dist/api-6SmEQDkK.js +0 -134
  1152. package/dist/api-B7QdoMF5.js +0 -2
  1153. package/dist/api-BBgby6ck.js +0 -639
  1154. package/dist/api-DwKV-xfM.d.ts +0 -52
  1155. package/dist/api-RfjCqA7Y.js +0 -6
  1156. package/dist/api-VDkFlOiv.js +0 -2
  1157. package/dist/api-We4xoZFr.js +0 -3
  1158. package/dist/apply-Cgtzilem.js +0 -41
  1159. package/dist/apply-Csp3U8cA.js +0 -54
  1160. package/dist/approval-handler.runtime-aQaSBbpF.js +0 -130
  1161. package/dist/assistant-UMyirSUH.js +0 -291
  1162. package/dist/attachment-normalize-BupK-_Ox.js +0 -225
  1163. package/dist/attempt-execution-oLlyFjHk.js +0 -558
  1164. package/dist/attempt-execution.runtime-Cq8RE0x_.js +0 -3
  1165. package/dist/attempt-execution.shared-DyBzUJGB.js +0 -38
  1166. package/dist/attempt.prompt-helpers-CVBP6t5J.js +0 -475
  1167. package/dist/attempt.tool-run-context-UU1BUUC9.js +0 -2094
  1168. package/dist/auth-BDaK_y-g.js +0 -541
  1169. package/dist/banner-VbID973v.js +0 -2
  1170. package/dist/banner-W77piyz6.js +0 -397
  1171. package/dist/binding-routing-DahKvjr3.js +0 -113
  1172. package/dist/binding-targets-C3mqUdUT.js +0 -121
  1173. package/dist/bot-DonUKEuy.js +0 -7894
  1174. package/dist/bot-deps-CroXwZeM.js +0 -747
  1175. package/dist/bot-deps-DKoy3x0l.js +0 -2
  1176. package/dist/bot-message-context.runtime-BI_zyqDu.js +0 -7
  1177. package/dist/bot-message-context.session.runtime-Cpy2H9Ez.js +0 -12
  1178. package/dist/bot-native-commands.delivery.runtime-CsHg3h1O.js +0 -4
  1179. package/dist/bot-native-commands.runtime-rmoBpwZY.js +0 -13
  1180. package/dist/bridge-server-BmDNWgHD.js +0 -113
  1181. package/dist/browser-cli-BQLwmLw3.js +0 -2
  1182. package/dist/browser-cli-CHHIN-of.js +0 -230
  1183. package/dist/browser-cli-actions-input-DBZ7uwag.js +0 -473
  1184. package/dist/browser-cli-actions-observe-BdH2-WTk.js +0 -81
  1185. package/dist/browser-cli-debug-C82Apbgb.js +0 -137
  1186. package/dist/browser-cli-inspect-CrO1qca7.js +0 -104
  1187. package/dist/browser-cli-manage-Dgm1IUZT.js +0 -443
  1188. package/dist/browser-cli-resize-DqgMr3DY.js +0 -26
  1189. package/dist/browser-cli-shared-BTnXMCKA.js +0 -50
  1190. package/dist/browser-cli-state-DT3bVOtg.js +0 -337
  1191. package/dist/browser-control-auth-BRwKCt45.js +0 -2
  1192. package/dist/browser-profiles-DhGtxK9v.js +0 -2
  1193. package/dist/browser-runtime-BL6b-qtr.js +0 -384
  1194. package/dist/build-33AnG55F.js +0 -257
  1195. package/dist/bundled-channel-config-schema-4eXcH-RE.d.ts +0 -3163
  1196. package/dist/call-dct8amtn.d.ts +0 -43
  1197. package/dist/capability-cli-D-KoVyyP.js +0 -1782
  1198. package/dist/channel-0tgrzPag.js +0 -867
  1199. package/dist/channel-4g20sJKJ.d.ts +0 -104
  1200. package/dist/channel-6tG8jWsw.d.ts +0 -8
  1201. package/dist/channel-7OEbQ8xS.d.ts +0 -6
  1202. package/dist/channel-7rVapSdN.d.ts +0 -8
  1203. package/dist/channel-B1fZN0iI.d.ts +0 -427
  1204. package/dist/channel-B5Q7fRiN.js +0 -1134
  1205. package/dist/channel-BEg_0h_C.d.ts +0 -12
  1206. package/dist/channel-BNp1J_eZ.js +0 -376
  1207. package/dist/channel-BP6RWm-M.d.ts +0 -47
  1208. package/dist/channel-BRjqrJfj.d.ts +0 -49
  1209. package/dist/channel-BUoyH_tP.d.ts +0 -114
  1210. package/dist/channel-BVBG4Tmn.d.ts +0 -28
  1211. package/dist/channel-Bap23sAx.js +0 -481
  1212. package/dist/channel-BhZ7x0SB.d.ts +0 -26
  1213. package/dist/channel-Bxod9CjX.js +0 -508
  1214. package/dist/channel-C6LASGjS.js +0 -808
  1215. package/dist/channel-COWZEKCw.js +0 -1249
  1216. package/dist/channel-CRAIreZ3.js +0 -238
  1217. package/dist/channel-CVY2hnJh.js +0 -1556
  1218. package/dist/channel-CgKdh_Jd.d.ts +0 -106
  1219. package/dist/channel-Cxo62btA.js +0 -1496
  1220. package/dist/channel-D5SzoyWI.js +0 -562
  1221. package/dist/channel-DE4vIsYF.d.ts +0 -64
  1222. package/dist/channel-DOdRHxJg.js +0 -1777
  1223. package/dist/channel-DZygtXdy.js +0 -362
  1224. package/dist/channel-DfhOnM71.d.ts +0 -7
  1225. package/dist/channel-DhZiptRe.d.ts +0 -8
  1226. package/dist/channel-DqPZviVV.js +0 -2126
  1227. package/dist/channel-Dssy3NQA.js +0 -740
  1228. package/dist/channel-actions.runtime-CDaMC9SV.js +0 -265
  1229. package/dist/channel-buMY8xZQ.d.ts +0 -7
  1230. package/dist/channel-core-CBhC_PNR.js +0 -5
  1231. package/dist/channel-core-x9b94azO.d.ts +0 -6
  1232. package/dist/channel-cvGHll3-.js +0 -955
  1233. package/dist/channel-entry-contract-BfZdcgTS.d.ts +0 -112
  1234. package/dist/channel-inbound-CNdyzYlz.js +0 -80
  1235. package/dist/channel-l8amaSI9.js +0 -653
  1236. package/dist/channel-lifecycle-DCl2GbRW.d.ts +0 -125
  1237. package/dist/channel-pairing-BRqfYy30.d.ts +0 -58
  1238. package/dist/channel-plugin-runtime-CvcVGjj4.js +0 -998
  1239. package/dist/channel-plugin-runtime-D5n9A86n.d.ts +0 -7
  1240. package/dist/channel-runtime-BAbg8Dcv.js +0 -408
  1241. package/dist/channel-sWtDTVwd.d.ts +0 -14
  1242. package/dist/channel.runtime-9o-iF8zm.js +0 -2528
  1243. package/dist/channel.runtime-BotO7RD0.js +0 -21009
  1244. package/dist/channel.runtime-BrDb4cP8.js +0 -88
  1245. package/dist/channel.runtime-C1cLfrDt.js +0 -254
  1246. package/dist/channel.runtime-CTM3VO2E.js +0 -4
  1247. package/dist/channel.runtime-CnodqvCJ.js +0 -733
  1248. package/dist/channel.runtime-Dmr8503H.js +0 -1008
  1249. package/dist/channel.runtime-DqzR3Gd9.js +0 -109
  1250. package/dist/channel.runtime-LOf0PHu_.js +0 -652
  1251. package/dist/channel.setup-1leD5F5B.js +0 -343
  1252. package/dist/channel.setup-D9UyWhXM.js +0 -1098
  1253. package/dist/channel.setup-DkVld-9Z.d.ts +0 -7
  1254. package/dist/channel.setup-DxT4prSl.d.ts +0 -8
  1255. package/dist/channel.setup-IHNFkdUD.js +0 -10
  1256. package/dist/channel.setup-YwXqilBB.d.ts +0 -6
  1257. package/dist/chat-DrycI6KH.js +0 -2666
  1258. package/dist/chrome-CgGY9FsG.js +0 -1503
  1259. package/dist/cli-backend-B3aNoTD4.d.ts +0 -5
  1260. package/dist/cli-backend-BVUFOLXj.d.ts +0 -5
  1261. package/dist/cli-compaction-DPmSHZx7.js +0 -347
  1262. package/dist/cli-metadata-eFfCoGmY.js +0 -22
  1263. package/dist/cli-nmYmL8lb.js +0 -1341
  1264. package/dist/cli-runner-BTOYShgV.js +0 -2
  1265. package/dist/cli-runner-DgXAxJVr.js +0 -540
  1266. package/dist/cli-runner.runtime-BeMsKcaS.js +0 -4
  1267. package/dist/cli-runner.runtime-DMD8X8-h.js +0 -3
  1268. package/dist/cli-shared-BAuePn3e.d.ts +0 -20
  1269. package/dist/cli-v6XF4hHd.d.ts +0 -20
  1270. package/dist/client-CKLZqMCW.js +0 -650
  1271. package/dist/client-adapter-B_0W-6Fx.js +0 -897
  1272. package/dist/client-factory-CdMLQFeA.js +0 -9
  1273. package/dist/command-auth-BxYfnQzs.js +0 -135
  1274. package/dist/command-execution-startup-CiV5yFW1.js +0 -87
  1275. package/dist/command-handlers-BAWROGlt.js +0 -1609
  1276. package/dist/command-registry-BqTMebZr.js +0 -4
  1277. package/dist/command-registry-C2Y8GeJl.js +0 -9
  1278. package/dist/command-registry-core-Bi-d0-WH.js +0 -110
  1279. package/dist/command-status.runtime-BSXHZzOq.js +0 -90
  1280. package/dist/commands-Z6AfrJar.d.ts +0 -113
  1281. package/dist/commands-acp-BYWOkjAx.js +0 -74
  1282. package/dist/commands-compact.runtime-Cyb7Pu12.js +0 -10
  1283. package/dist/commands-handlers.runtime-DdJ20XTn.js +0 -6154
  1284. package/dist/commands-status-6uhiUw13.js +0 -3
  1285. package/dist/commands-status-BJ5AnkOG.js +0 -16
  1286. package/dist/commands-status.runtime-6uhiUw13.js +0 -3
  1287. package/dist/commands-subagents-control.runtime-DZrrLjSk.js +0 -2
  1288. package/dist/commands-subagents-control.runtime-_R3XgUpp.js +0 -3
  1289. package/dist/commands-system-prompt-CHGtJPnx.js +0 -162
  1290. package/dist/commands-system-prompt-CM23NlDu.js +0 -2
  1291. package/dist/commands.runtime-DUEbtHG1.js +0 -176
  1292. package/dist/compact-BA6lVtLj.js +0 -480
  1293. package/dist/compact-BfC-utPW.js +0 -1141
  1294. package/dist/compact.runtime-BRL2wCqh.js +0 -12
  1295. package/dist/completion-cli-CYKoLZLl.js +0 -315
  1296. package/dist/computer-use-BWgYktaW.js +0 -367
  1297. package/dist/config-B_HanwOV.js +0 -373
  1298. package/dist/config-DhGtxK9v.js +0 -2
  1299. package/dist/config-cli-CI5UtWr-.js +0 -1633
  1300. package/dist/config-mutations-D2GtlLMA.js +0 -159
  1301. package/dist/config-schema-BKOfHz23.d.ts +0 -20
  1302. package/dist/configure-CuPwIiwW.js +0 -3
  1303. package/dist/configure.commands-BWpwrafi.js +0 -1251
  1304. package/dist/configure.commands-qzipmoDP.js +0 -2
  1305. package/dist/context-engine-host-compat-D246ZMR2.js +0 -2
  1306. package/dist/context-engine-host-compat-KMl-oqCw.js +0 -288
  1307. package/dist/context-engine-lifecycle-DvEDHkQz.js +0 -1274
  1308. package/dist/contracts-testkit-Ym3exIK5.d.ts +0 -145
  1309. package/dist/control-auth-B_RiUaHt.js +0 -114
  1310. package/dist/control-service-DcQFx6_O.js +0 -145
  1311. package/dist/control-ui/assets/agents-Bc8cIfWF.js +0 -1008
  1312. package/dist/control-ui/assets/channel-config-extras-DQru4ECs.js +0 -2
  1313. package/dist/control-ui/assets/channels-BfncerPV.js +0 -367
  1314. package/dist/control-ui/assets/cron-DHLcga_r.js +0 -1013
  1315. package/dist/control-ui/assets/debug-DprDzDn1.js +0 -97
  1316. package/dist/control-ui/assets/index-XTZKpkBL.js +0 -7370
  1317. package/dist/control-ui/assets/instances-D1_lOT13.js +0 -57
  1318. package/dist/control-ui/assets/logs-DINx8syb.js +0 -74
  1319. package/dist/control-ui/assets/nodes-BH4XOUmD.js +0 -436
  1320. package/dist/control-ui/assets/sessions-D5Xt25SY.js +0 -399
  1321. package/dist/control-ui/assets/skills-BmayrBHY.js +0 -314
  1322. package/dist/control-ui/assets/skills-shared-CHaYSJ_s.js +0 -11
  1323. package/dist/conversation-binding-runtime-_jhzwiiC.js +0 -4
  1324. package/dist/conversation-runtime-F5kCN0Sj.js +0 -31
  1325. package/dist/core-BpeKfqbI.d.ts +0 -224
  1326. package/dist/core-DE71gncT.js +0 -282
  1327. package/dist/core-api-B4L5WkKc.js +0 -5
  1328. package/dist/core-api-Q9oM19yY.js +0 -2
  1329. package/dist/crestodian-DLpxYmzP.js +0 -55
  1330. package/dist/daocore-runtime-BnYtDbMC.d.ts +0 -151
  1331. package/dist/daocore-tools-wNTIZIO3.js +0 -11727
  1332. package/dist/dashboard-SHmcCcnT.js +0 -263
  1333. package/dist/delivery-BA4di5Tw.js +0 -1002
  1334. package/dist/dev-Cr2Dhgoc.js +0 -97
  1335. package/dist/dialogue-xI4qAuLY.js +0 -37
  1336. package/dist/dir-fetch-tool-6d4yElM4.js +0 -565
  1337. package/dist/dir-list-tool-D2k-hax6.js +0 -100
  1338. package/dist/direct-dm-eGyFHTug.js +0 -64
  1339. package/dist/directive-handling.fast-lane-Ci1l6GN_.js +0 -68
  1340. package/dist/directive-handling.impl-Co3i_YQ4.js +0 -818
  1341. package/dist/directive-handling.impl-DHKC0TrU.js +0 -2
  1342. package/dist/directive-handling.model-selection-bv5KrHOw.js +0 -122
  1343. package/dist/directive-handling.persist.runtime-CPLg-YHh.js +0 -263
  1344. package/dist/dispatch-CdvERWY-.js +0 -1640
  1345. package/dist/dispatch-acp-transcript.runtime-BhQo1XEg.js +0 -40
  1346. package/dist/dispatch-acp.runtime-Dtiu2EgE.js +0 -18
  1347. package/dist/doctor-BzsPHvLP.js +0 -2
  1348. package/dist/doctor-Cg4FWB15.js +0 -6
  1349. package/dist/doctor-config-flow-SYjHcyu4.js +0 -1741
  1350. package/dist/doctor-core-checks-75amkN-e.js +0 -2
  1351. package/dist/doctor-core-checks-B1fu7KDm.js +0 -573
  1352. package/dist/doctor-health-contributions-BMdJKStr.js +0 -696
  1353. package/dist/doctor-health-vLyDQqfq.js +0 -65
  1354. package/dist/doctor-lint-DfvFyBgL.js +0 -94
  1355. package/dist/doctor-prompter-C-dTuOnw.js +0 -58
  1356. package/dist/doctor-state-integrity-Cv-ECLuv.js +0 -1231
  1357. package/dist/dynamic-tools-BG8ijDFH.js +0 -486
  1358. package/dist/embedded-backend-bRfALCWz.js +0 -579
  1359. package/dist/embedded-gateway-stub.runtime-CAh3IhtZ.js +0 -12
  1360. package/dist/embedding-provider-B7kg9IhC.d.ts +0 -16
  1361. package/dist/embedding-provider-jB1zjkZy.d.ts +0 -65
  1362. package/dist/embedding-provider-sea2CddJ.d.ts +0 -21
  1363. package/dist/exec-approvals-BBa28Sct.js +0 -149
  1364. package/dist/file-fetch-tool-DRIsI7eQ.js +0 -124
  1365. package/dist/file-write-tool-vTMh7eW6.js +0 -127
  1366. package/dist/format-nrhTS41q.js +0 -1145
  1367. package/dist/gateway-cli-CCgw11Ik.js +0 -435
  1368. package/dist/gateway-method-runtime-BNAVGCC_.js +0 -21
  1369. package/dist/gateway-runtime-DGdJumdK.d.ts +0 -163
  1370. package/dist/gemini-cli-provider-Bbpd5lx5.d.ts +0 -6
  1371. package/dist/get-reply-DGFCqKen.js +0 -4689
  1372. package/dist/get-reply-from-config.runtime-l7NTyCh5.js +0 -2
  1373. package/dist/graph-users-CGpakgek.js +0 -1419
  1374. package/dist/group-access-D095jQ78.js +0 -112
  1375. package/dist/group-keys-DnxWQtll.d.ts +0 -17
  1376. package/dist/handle-action.guild-admin-B3pALmMq.js +0 -288
  1377. package/dist/harness-Bs-sPbOD.js +0 -61
  1378. package/dist/health-4gWMIKHu.js +0 -4
  1379. package/dist/heartbeat-runner-Sky_Rjw7.js +0 -5
  1380. package/dist/heartbeat-runner.runtime-CRZ-NbrW.js +0 -4
  1381. package/dist/help-B68Ov4LD.js +0 -136
  1382. package/dist/hook-runtime-Cm73yH0T.d.ts +0 -107
  1383. package/dist/hooks-DWSdYas_.js +0 -534
  1384. package/dist/http-registry-CHKiFHCC.d.ts +0 -23
  1385. package/dist/image-generation-runtime-p-dfXZTf.d.ts +0 -21
  1386. package/dist/inbound-direct-dm-runtime-5z3W9Oqn.js +0 -2
  1387. package/dist/inbound-reply-dispatch-D7NeeFC1.js +0 -148
  1388. package/dist/index-CKAHTIU4.d.ts +0 -3971
  1389. package/dist/init-BXF3o80o.js +0 -59
  1390. package/dist/inline-buttons-DsHwKEVU.js +0 -40
  1391. package/dist/interactive-dispatch-BsKWomnh.d.ts +0 -143
  1392. package/dist/interactive-dispatch-CItEYOu3.d.ts +0 -56
  1393. package/dist/internal-events-TAN9dPEj.js +0 -90
  1394. package/dist/isolated-agent-CTrVGI6q.js +0 -2
  1395. package/dist/isolated-agent-DPyibJ8B.js +0 -1118
  1396. package/dist/lifecycle-BwTg0Djv.js +0 -571
  1397. package/dist/list.probe-BpM4PKu7.js +0 -449
  1398. package/dist/list.status-command-BbcloYBd.js +0 -789
  1399. package/dist/llm-slug-generator-UG7Bhj_y.js +0 -78
  1400. package/dist/loader-D6z2PEKl.d.ts +0 -142
  1401. package/dist/local-dispatch.runtime-CU6Y-BDa.js +0 -9
  1402. package/dist/manager-C3AVKMSl.d.ts +0 -356
  1403. package/dist/manager-CSN9j9hh.d.ts +0 -205
  1404. package/dist/manager.runtime-Da5LiiaQ.js +0 -2714
  1405. package/dist/markdown-to-line-BnESmsY4.js +0 -811
  1406. package/dist/mcp-http-C38KS7On.js +0 -2
  1407. package/dist/mcp-http-CcGhAZcF.js +0 -555
  1408. package/dist/media-understanding-provider-BCz5dVl6.js +0 -339
  1409. package/dist/memory-core-host-engine-storage-sWQlfr8J.d.ts +0 -54
  1410. package/dist/memory-embedding-adapter-BrGY0ecB.d.ts +0 -5
  1411. package/dist/message-actions-CQURSOZH.js +0 -145
  1412. package/dist/message-handler-C2U3bt-X.js +0 -1715
  1413. package/dist/message-handler-CwZfuHhP.js +0 -384
  1414. package/dist/message-handler.preflight-Cosa3kg0.js +0 -1125
  1415. package/dist/message-handler.process-BlKFMYXw.js +0 -1484
  1416. package/dist/migration-hAtbc95i.d.ts +0 -45
  1417. package/dist/model-B8M2deNL.js +0 -74
  1418. package/dist/model-Ck-vNyGd.d.ts +0 -33
  1419. package/dist/model-selection-v2wQWgsT.js +0 -272
  1420. package/dist/models-B7IiQBWY.js +0 -104
  1421. package/dist/models-CnWFsPX6.d.ts +0 -24
  1422. package/dist/models-DMNzBNgt.js +0 -2
  1423. package/dist/models-cli-CQaOg02d.js +0 -256
  1424. package/dist/monitor-Bd9kOezJ.js +0 -1370
  1425. package/dist/monitor-Cy6D6MyS.js +0 -715
  1426. package/dist/monitor-DStY23C4.js +0 -834
  1427. package/dist/monitor-DnF8eltK.js +0 -1657
  1428. package/dist/monitor-DrFJ63I1.js +0 -4377
  1429. package/dist/monitor-J8jOsDaJ.js +0 -60
  1430. package/dist/monitor-auth-DKkbt_CR.js +0 -179
  1431. package/dist/monitor-jp3H9Ri_.js +0 -2
  1432. package/dist/monitor-polling.runtime-DPCAacPc.js +0 -883
  1433. package/dist/monitor-tBNmyf1s.js +0 -2788
  1434. package/dist/monitor-webhook.runtime-BnjEsLRS.js +0 -387
  1435. package/dist/monitor.account-Gh8FuMEq.js +0 -5233
  1436. package/dist/monitor.runtime-Bdh6dxyq.js +0 -2
  1437. package/dist/monitor.webhook-BosT2ylg.js +0 -180
  1438. package/dist/node-cli-sessions-B0_DtIxz.js +0 -1228
  1439. package/dist/onboard-CiTp3HuT.js +0 -733
  1440. package/dist/onboard-helpers-6NgX4RkW.js +0 -251
  1441. package/dist/onboard-helpers-BwxJT_0T.js +0 -6
  1442. package/dist/onboard-remote-CNCFouj7.js +0 -212
  1443. package/dist/onboard-remote-DXzWgH_H.js +0 -2
  1444. package/dist/onboard-skills-Dx58zrXg.js +0 -160
  1445. package/dist/onboard-skills-qaynAMqw.js +0 -2
  1446. package/dist/openai-codex-provider-Bj9cyh4I.d.ts +0 -5
  1447. package/dist/openai-http-Dp0cp01u.js +0 -824
  1448. package/dist/openai-provider-Dm3YkkWf.d.ts +0 -5
  1449. package/dist/openresponses-http-acbxr5UW.js +0 -1173
  1450. package/dist/operations-BZVuEl9E.js +0 -805
  1451. package/dist/outbound-adapter-BKGzT1Rl.js +0 -543
  1452. package/dist/outbound-session-route-mWVuRF9I.js +0 -45
  1453. package/dist/outbound.runtime-BTjY78St.js +0 -2
  1454. package/dist/pairing-challenge-DD0D0sfM.d.ts +0 -87
  1455. package/dist/pi-embedded-CFP2IrYS.js +0 -3796
  1456. package/dist/pi-embedded-D8caT0Nm.js +0 -4
  1457. package/dist/pi-embedded.runtime-eBik36nq.js +0 -4
  1458. package/dist/pi-tools-DOiFN8QJ.js +0 -2413
  1459. package/dist/plan-Cq2-YWkv.js +0 -112
  1460. package/dist/plan-DZacZ3Zv.js +0 -81
  1461. package/dist/plugin-BcNkVMQf.d.ts +0 -17
  1462. package/dist/plugin-app-cache-key-CBK84hKp.js +0 -46
  1463. package/dist/plugin-enabled-CMfz3hfi.js +0 -233
  1464. package/dist/plugin-entry-BS5QKDoz.d.ts +0 -47
  1465. package/dist/plugin-k9ChkvvX.js +0 -12396
  1466. package/dist/plugin-registration-DzPoDboh.js +0 -88
  1467. package/dist/plugin-runtime-BNGhLQ-_.d.ts +0 -117
  1468. package/dist/plugin-service-BynKHNHj.d.ts +0 -24
  1469. package/dist/plugin-service-Ckp9CgP5.js +0 -1229
  1470. package/dist/policy-CBa8yH5k.js +0 -680
  1471. package/dist/policy-Dlam-IbU.js +0 -138
  1472. package/dist/prepare.runtime-B8h04--2.js +0 -732
  1473. package/dist/preview-warnings-DPDK9HPk.js +0 -392
  1474. package/dist/probe-Bts3wK7l.js +0 -682
  1475. package/dist/probe-ByHrOECy.js +0 -47
  1476. package/dist/probe-CXqCx5yV.js +0 -2204
  1477. package/dist/probe-fhhJ0LMx.js +0 -2
  1478. package/dist/program-DfNLP_PI.js +0 -131
  1479. package/dist/prompt-overlay-qKGGXVs-.d.ts +0 -23
  1480. package/dist/provider-CeG5mirD.js +0 -8735
  1481. package/dist/provider-D_TXf9b1.js +0 -152
  1482. package/dist/provider-Fb0fhEC5.js +0 -32
  1483. package/dist/provider-api-key-auth-BIph5btg.d.ts +0 -27
  1484. package/dist/provider-auth-result-BFvMZrH6.d.ts +0 -21
  1485. package/dist/provider-catalog-runtime-Du74RUel.d.ts +0 -23
  1486. package/dist/provider-catalog-shared-B3nN3sf2.d.ts +0 -62
  1487. package/dist/provider-dispatcher-DQ0FP7Oj.js +0 -22
  1488. package/dist/provider-hook-runtime-CRpS8VJ_.d.ts +0 -61
  1489. package/dist/provider-model-shared-GrPEK3SY.d.ts +0 -143
  1490. package/dist/provider-models-iUJVn9QI.d.ts +0 -12
  1491. package/dist/provider-policy-DliVEM__.d.ts +0 -30
  1492. package/dist/provider-registration-BxzmE1yB.d.ts +0 -6
  1493. package/dist/provider-registry-B4AQXjYK.d.ts +0 -8
  1494. package/dist/provider-registry-BHyB46kI.d.ts +0 -30
  1495. package/dist/provider-registry-CnfpUSqh.d.ts +0 -8
  1496. package/dist/provider-runtime-D3j0VBbF.d.ts +0 -359
  1497. package/dist/provider-self-hosted-setup-_11XAmRH.d.ts +0 -74
  1498. package/dist/provider-session.runtime-CIMJ-7ay.js +0 -9
  1499. package/dist/provider-stream-mWxYXsAm.d.ts +0 -140
  1500. package/dist/provider-stream-shared-QayId-fm.d.ts +0 -128
  1501. package/dist/provider-xNaUQ5Lv.js +0 -32
  1502. package/dist/provider.runtime-CGsYbZGk.js +0 -2
  1503. package/dist/providers.runtime-fmZQlSRt.d.ts +0 -25
  1504. package/dist/public-surface-loader-CuVkM64A.js +0 -114
  1505. package/dist/pw-ai-BDGftH9e.js +0 -3029
  1506. package/dist/pw-role-snapshot-C_P091Iv.js +0 -333
  1507. package/dist/reaction-level-DKxiNfWB.js +0 -19
  1508. package/dist/reaction-runtime-api-TY4aPHui.js +0 -116
  1509. package/dist/realtime-transcription-CmRx7wX7.d.ts +0 -43
  1510. package/dist/realtime-transcription-provider-BNca2pAl.js +0 -205
  1511. package/dist/realtime-transcription-provider-Csl2NRiB.d.ts +0 -5
  1512. package/dist/realtime-transcription-provider-CtUTdTS4.d.ts +0 -37
  1513. package/dist/realtime-transcription-provider-DKd69ns6.d.ts +0 -28
  1514. package/dist/realtime-transcription-provider-DPj1VZIg.d.ts +0 -32
  1515. package/dist/realtime-voice-CVgV9cqF.d.ts +0 -333
  1516. package/dist/realtime-voice-provider-CmtxwZon.d.ts +0 -5
  1517. package/dist/register-DLjqO2vR.js +0 -2178
  1518. package/dist/register.agent-FV7a6yzo.js +0 -156
  1519. package/dist/register.configure-DrkSyKW3.js +0 -16
  1520. package/dist/register.crestodian-CQGAa8z2.js +0 -24
  1521. package/dist/register.maintenance-tocHfiS3.js +0 -83
  1522. package/dist/register.onboard-BomHnBGE.js +0 -113
  1523. package/dist/register.runtime-6AmV3Vgs.js +0 -54
  1524. package/dist/register.runtime-CSz0gVBB.d.ts +0 -6
  1525. package/dist/register.setup-ENYtNAA5.js +0 -40
  1526. package/dist/register.subclis-BC6TefAM.js +0 -31
  1527. package/dist/register.subclis-DZdEZgSS.js +0 -3
  1528. package/dist/register.subclis-core-C-EfowrU.js +0 -273
  1529. package/dist/registry-VitXYFE8.d.ts +0 -91
  1530. package/dist/registry-types-C4eAzEgQ.d.ts +0 -392
  1531. package/dist/repair-sequencing-l8dFaytn.js +0 -640
  1532. package/dist/reply-delivery-DdeUWVuk.js +0 -196
  1533. package/dist/reply-runtime-Bd91JEZL.js +0 -11
  1534. package/dist/reply.runtime-l7NTyCh5.js +0 -2
  1535. package/dist/request-BY_4UukN.js +0 -54
  1536. package/dist/resolve-allowlist-C4lmxl4V.js +0 -220
  1537. package/dist/result-fallback-classifier-XORMMp30.js +0 -79
  1538. package/dist/root-help-CTW0Wyrf.js +0 -43
  1539. package/dist/route-dOf1WMkJ.js +0 -469
  1540. package/dist/route-resolution-BddNYZEI.js +0 -274
  1541. package/dist/routes-D0xw72Lf.js +0 -3602
  1542. package/dist/routes-TXSPQFWS.js +0 -2
  1543. package/dist/run-DpvUuaWB.js +0 -1162
  1544. package/dist/run-attempt-Bet0PiSc.js +0 -7704
  1545. package/dist/run-command-C5vMVqMt.js +0 -23
  1546. package/dist/run-command-pNDd7NqP.js +0 -2
  1547. package/dist/run-embedded.runtime-CBZV6YWj.js +0 -4
  1548. package/dist/run-execution-cli.runtime-DTQLV8tA.js +0 -4
  1549. package/dist/run-subagent-registry.runtime-DJCvSdhY.js +0 -2
  1550. package/dist/runtime-CNXeG8vX.js +0 -1287
  1551. package/dist/runtime-DEOSWxv9.js +0 -438
  1552. package/dist/runtime-DbTiSX85.d.ts +0 -17
  1553. package/dist/runtime-api-BCM7T4WV.js +0 -17
  1554. package/dist/runtime-api-BTnMvj8L.js +0 -13
  1555. package/dist/runtime-api-By6LEySM.js +0 -3
  1556. package/dist/runtime-api-Cd0b5LPQ.js +0 -4
  1557. package/dist/runtime-api-CtuDiikz.js +0 -21
  1558. package/dist/runtime-api-DjySILXC.js +0 -13
  1559. package/dist/runtime-api-XJTq_pyQ.js +0 -24
  1560. package/dist/runtime-api-k3v6Q0lb2.d.ts +0 -3151
  1561. package/dist/runtime-api.actions-BmsSg8Ai.js +0 -3
  1562. package/dist/runtime-api.actions-C2-n4QQ5.d.ts +0 -23
  1563. package/dist/runtime-api.monitor-DSk7Pd5H.js +0 -6
  1564. package/dist/runtime-api.send-D3sPncy9.js +0 -4
  1565. package/dist/runtime-api.send-t0FX9tXf.d.ts +0 -38
  1566. package/dist/runtime-api.threads-BK9cB4L1.js +0 -2
  1567. package/dist/runtime-channel--Wjr2ePx.js +0 -150
  1568. package/dist/runtime-channel-WdTa9hHZ.js +0 -2
  1569. package/dist/runtime-embedded-pi.runtime-BNYBvaxo.js +0 -2
  1570. package/dist/runtime-r3jS5wSq.js +0 -6179
  1571. package/dist/runtime-taskflow-DMBY6o56.d.ts +0 -435
  1572. package/dist/sanitize-outbound-D6IBCCpn.js +0 -127
  1573. package/dist/sdk-setup-tools-DcDrd8tW.js +0 -8
  1574. package/dist/secrets-OV1uTwRt.js +0 -113
  1575. package/dist/secrets-cli-llC7t41S.js +0 -149
  1576. package/dist/security-audit-BM_fypcl.js +0 -118
  1577. package/dist/security-audit-CQ2yKgF8.js +0 -122
  1578. package/dist/security-audit.runtime-CRgJUegH.js +0 -2
  1579. package/dist/selection-DkJ7MaPC.js +0 -16157
  1580. package/dist/selection-LeUiOSn0.js +0 -3
  1581. package/dist/send-B5TXXeBz.d.ts +0 -231
  1582. package/dist/send-C0ZHzB6o.js +0 -1631
  1583. package/dist/send-CXL3cM-w.js +0 -192
  1584. package/dist/send-CuDA29HM.js +0 -2
  1585. package/dist/send-D7qhwK7Z.js +0 -143
  1586. package/dist/send-DEMaBWpw.d.ts +0 -105
  1587. package/dist/send.components-BNeg1zrc.js +0 -2
  1588. package/dist/send.components-DwRyC_Hc.js +0 -500
  1589. package/dist/send.runtime-DBIUdxpO.js +0 -2
  1590. package/dist/send.types-DywwIqYK.d.ts +0 -160
  1591. package/dist/server-DGcm6Swr.js +0 -24
  1592. package/dist/server-DPvleC-x.js +0 -73
  1593. package/dist/server-context-BWBM4f-_.js +0 -955
  1594. package/dist/server-context-CFgwcLlu.js +0 -2
  1595. package/dist/server-cron-C1kChsjw.js +0 -2989
  1596. package/dist/server-cron-CS1EP5Li.js +0 -2
  1597. package/dist/server-methods-BcIlC8iD.js +0 -16494
  1598. package/dist/server-node-events-BAZCvZOy.js +0 -596
  1599. package/dist/server-plugin-bootstrap-cQUi21Uu.js +0 -70
  1600. package/dist/server-plugins-BRFre223.js +0 -432
  1601. package/dist/server-reload-handlers-DfcsAX-5.js +0 -714
  1602. package/dist/server-restart-sentinel-CFX5zQkM.js +0 -747
  1603. package/dist/server-restart-sentinel-DUvs77Q0.js +0 -2
  1604. package/dist/server-runtime-services-0vm5XmvV.js +0 -2
  1605. package/dist/server-runtime-services-CLz_vkLy.js +0 -267
  1606. package/dist/server-startup-plugins-CPXqqIRV.js +0 -113
  1607. package/dist/server-startup-post-attach-BkNe1Z6g.js +0 -716
  1608. package/dist/server-ws-runtime-rcJeRHFO.js +0 -349
  1609. package/dist/server.impl-a6knQ-N8.js +0 -2586
  1610. package/dist/service-H-BcELwS.js +0 -1446
  1611. package/dist/session-binding-BQliaqL7.js +0 -2
  1612. package/dist/session-binding-DPvZil_F.js +0 -219
  1613. package/dist/session-kill-http-DJMipluP.js +0 -121
  1614. package/dist/session-reset-service-Dn9FU5wA.js +0 -625
  1615. package/dist/session-route-JLWNmJxD.js +0 -93
  1616. package/dist/session-status.runtime-D0OptHcW.js +0 -2
  1617. package/dist/session-subagent-reactivation.runtime-BUmf1vNS.js +0 -2
  1618. package/dist/session-tab-registry-CoBvJVRj.js +0 -521
  1619. package/dist/sessions-history-http-B8CkLDAn.js +0 -430
  1620. package/dist/sessions.runtime-DbNqS_Gy.js +0 -2
  1621. package/dist/setup-CTZUUn1s.js +0 -586
  1622. package/dist/setup-D6fXOEjD.js +0 -2
  1623. package/dist/setup-api-DLPEXHCv.js +0 -29
  1624. package/dist/setup-core-DLXb29jm.js +0 -174
  1625. package/dist/setup-onboard-configure-help-fast-path-CrcZmKPI.js +0 -64
  1626. package/dist/setup-surface--Cct-rCt.js +0 -288
  1627. package/dist/setup-surface-CW8YN207.js +0 -320
  1628. package/dist/setup-surface-DIxcfqD0.js +0 -221
  1629. package/dist/setup-surface-IJ6kmKgi.js +0 -405
  1630. package/dist/setup.finalize-gWpWnCCk.js +0 -582
  1631. package/dist/setup.gateway-config-D_DaSfpW.js +0 -281
  1632. package/dist/setup.migration-import-CYZjCkle.js +0 -2
  1633. package/dist/setup.migration-import-CZJU4scH.js +0 -200
  1634. package/dist/shared-Bp_Fgv6B.js +0 -121
  1635. package/dist/shared-CLqPY0yv.d.ts +0 -115
  1636. package/dist/shared-client-OQdg8NGC.js +0 -629
  1637. package/dist/shared-client-dk1ICVBm.js +0 -2
  1638. package/dist/side-question-CbhRW3UI.js +0 -683
  1639. package/dist/simple-completion-runtime-XIF65b47.d.ts +0 -73
  1640. package/dist/skill-tool-dispatch.runtime-EcycYnWE.js +0 -143
  1641. package/dist/slash-state-BoX6WwB5.js +0 -2166
  1642. package/dist/speech-CvkJG5Mt.d.ts +0 -47
  1643. package/dist/speech-core-MG83lB3i.d.ts +0 -36
  1644. package/dist/speech-provider-1EN9hT-3.d.ts +0 -8
  1645. package/dist/speech-provider-67ebyEcs.js +0 -184
  1646. package/dist/speech-provider-B6tb45De.d.ts +0 -5
  1647. package/dist/speech-provider-C74wAyBX.d.ts +0 -5
  1648. package/dist/speech-provider-CYJoZZpj.d.ts +0 -8
  1649. package/dist/speech-provider-DavEMdKC.d.ts +0 -34
  1650. package/dist/speech-provider-DvFtveg6.d.ts +0 -5
  1651. package/dist/src-CbfOifft.js +0 -4256
  1652. package/dist/startup-context-YF24NARp.js +0 -313
  1653. package/dist/status-message-CcrZdfCO.js +0 -484
  1654. package/dist/status-message.runtime-Cptt1EPV.js +0 -6
  1655. package/dist/status-subagents.runtime-v2eijc4R.js +0 -18
  1656. package/dist/status-text-BWwar3Yc.js +0 -296
  1657. package/dist/status-tn3uQDY7.js +0 -73
  1658. package/dist/status.runtime-BFjTHLiQ.js +0 -2
  1659. package/dist/sticker-cache-Cs7LV_3a.js +0 -206
  1660. package/dist/sticker-vision.runtime-CyPMpoCs.js +0 -17
  1661. package/dist/stream-1rWKMSqV.d.ts +0 -16
  1662. package/dist/stream-Bk9TnoRV.d.ts +0 -10
  1663. package/dist/stream-DZeY9rhs.d.ts +0 -120
  1664. package/dist/stream-DgCoKjcL.d.ts +0 -19
  1665. package/dist/stream-exnufPSG.d.ts +0 -5
  1666. package/dist/stream-wrappers-D2EuY1tP.d.ts +0 -21
  1667. package/dist/subagent-announce-CRjGGxSB.js +0 -354
  1668. package/dist/subagent-announce-delivery-CbfRRdwt.js +0 -958
  1669. package/dist/subagent-control-VTsWynTB.js +0 -508
  1670. package/dist/subagent-hooks-BB__aHul.js +0 -2
  1671. package/dist/subagent-hooks-Cb5fJ2H0.js +0 -146
  1672. package/dist/subagent-hooks-CwVBMhp_.js +0 -2
  1673. package/dist/subagent-hooks-Cx9_GAMF.js +0 -116
  1674. package/dist/subagent-hooks-DOJhvTDx.js +0 -230
  1675. package/dist/subagent-hooks-DUMqhB3r.js +0 -2
  1676. package/dist/subagent-hooks-api-BDGmCxB2.js +0 -22
  1677. package/dist/subagent-hooks-api-CcTdPqP1.js +0 -23
  1678. package/dist/subagent-hooks-api-D18tQta6.js +0 -23
  1679. package/dist/subagent-orphan-recovery-6bNIX25Q.js +0 -352
  1680. package/dist/subagent-registry-DokIxoQ6.js +0 -2351
  1681. package/dist/subagent-registry-tlyJE0hN.js +0 -3
  1682. package/dist/subagent-session-cleanup-BWHQ6rcm.js +0 -525
  1683. package/dist/subagent-spawn-BUdUAwoc.js +0 -1164
  1684. package/dist/target-id-CI1U3MSO.js +0 -107
  1685. package/dist/targets-CbBORUXB.d.ts +0 -10
  1686. package/dist/targets-CgmlXrhv.js +0 -44
  1687. package/dist/targets-D-jSrLUN.js +0 -19
  1688. package/dist/targets-DPDu8x6v.js +0 -19
  1689. package/dist/targets-D_fXvxrg.d.ts +0 -10
  1690. package/dist/testing-D-48HuIK.js +0 -267
  1691. package/dist/thinking-policy-CY16OlCs.d.ts +0 -5
  1692. package/dist/thread-bindings-B9J0nGG7.js +0 -232
  1693. package/dist/thread-bindings-BByWvFZq.js +0 -8
  1694. package/dist/thread-bindings-Cxjm2mLg.js +0 -571
  1695. package/dist/thread-bindings-DQWmglaO.js +0 -228
  1696. package/dist/thread-bindings.discord-api-DWWDvMgL.js +0 -187
  1697. package/dist/thread-bindings.manager-CQW6bNs5.js +0 -2
  1698. package/dist/thread-bindings.manager-DpBYBs9s.js +0 -536
  1699. package/dist/thread-lifecycle-PpB8gTx1.js +0 -1614
  1700. package/dist/token-CBy6YYM_.js +0 -134
  1701. package/dist/tool-BCHcwX9p.js +0 -139
  1702. package/dist/tool-actions.runtime-Cwxr2NmB.js +0 -534
  1703. package/dist/tool-plugin-DHZYdwyJ.d.ts +0 -77
  1704. package/dist/tool-resolution-DQpf531V.js +0 -149
  1705. package/dist/tool-split-ClZW5eN5.d.ts +0 -19
  1706. package/dist/tools-effective-inventory-BHxeIAri.js +0 -204
  1707. package/dist/tools-invoke-http-Bv2LES5Q.js +0 -67
  1708. package/dist/tools-invoke-shared-Cf_ifab9.js +0 -200
  1709. package/dist/transport-stream-D_pZ9Qwv.d.ts +0 -42
  1710. package/dist/tts-CjTcF0YS.js +0 -66
  1711. package/dist/tui-D3_WpyGV.js +0 -2
  1712. package/dist/tui-Y8IezK6P.js +0 -4709
  1713. package/dist/tui-backend-BIJbrfDK.js +0 -256
  1714. package/dist/tui-cli-YVLQJGLU.js +0 -37
  1715. package/dist/types-CnKegQ41.d.ts +0 -786
  1716. package/dist/types-Dyry5PA_2.d.ts +0 -3650
  1717. package/dist/types.public-AUFnQi6j.d.ts +0 -70
  1718. package/dist/update-cli-B7MOXy4Y.js +0 -3664
  1719. package/dist/video-generation-runtime-Cc8klYNS.d.ts +0 -21
  1720. package/dist/video-model-catalog-XG42YlJS.d.ts +0 -16
  1721. package/dist/vision-tools-kEwnV2UO.js +0 -1409
  1722. package/dist/web-search-DH1W_lfx.js +0 -62
  1723. package/dist/web-search-provider.runtime-BX9TezsY.js +0 -328
  1724. package/dist/web-search-provider.runtime-BhRjYeyp.js +0 -2
  1725. package/dist/webhook-targets--wGRjxMd.d.ts +0 -99
  1726. package/dist/xai-oauth-BZQ--94U.js +0 -479
  1727. package/dist/xai-user-agent-SpZaKTGR.js +0 -32
  1728. package/dist/zod-schema.core-BhLPa6BF.d.ts +0 -166
  1729. /package/dist/{accounts-CqgATPC-2.d.ts → accounts-CqgATPC-.d.ts} +0 -0
  1730. /package/dist/{acp-runtime-backend-DU5R8SXu.js → acp-runtime-backend-DHyoMnZY.js} +0 -0
  1731. /package/dist/{channel-actions-Ce2Sna1a.js → channel-actions-B5OPAiNK.js} +0 -0
  1732. /package/dist/{command-status-runtime-Cj5vB8lc.js → command-status-runtime-BqQvv1BR.js} +0 -0
  1733. /package/dist/{delegate-BeKeQwNR.js → delegate-B1QIF1j8.js} +0 -0
  1734. /package/dist/{dispatch-acp-DXlzEM_A.js → dispatch-acp-Ch9ZmM4b.js} +0 -0
  1735. /package/dist/{heartbeat-runner-Dncw_0KS.js → heartbeat-runner-BkgH94IS.js} +0 -0
  1736. /package/dist/{library-6cU4n1-c.js → library-DP1oARlw.js} +0 -0
  1737. /package/dist/{run-executor.runtime-DjwaphFT.js → run-executor.runtime-Czk4Lxkj.js} +0 -0
  1738. /package/dist/{video-generation-core-BVVgDSdq.d.ts → server-plugins-BVVgDSdq.d.ts} +0 -0
  1739. /package/dist/{shared-BE5PSFeb.js → shared-SiM6kZAE.js} +0 -0
  1740. /package/dist/{model-ref-mtPT-mlX.d.ts → video-generation-core-mtPT-mlX.d.ts} +0 -0
@@ -1,2989 +0,0 @@
1
- import { a as normalizeLowercaseStringOrEmpty, c as normalizeOptionalString, s as normalizeOptionalLowercaseString } from "./string-coerce-DyL154ka.js";
2
- import { i as formatErrorMessage } from "./errors-DCgU20d6.js";
3
- import "./agent-scope-BvhOCChS.js";
4
- import { a as isSubagentSessionKey, c as parseAgentSessionKey, r as isCronRunSessionKey } from "./session-key-utils-Ce_xWkNq.js";
5
- import { d as resolveAgentIdFromSessionKey, f as resolveEventSessionKey, l as normalizeAgentId, v as toAgentStoreSessionKey } from "./session-key-Bte0mmcq.js";
6
- import { c as resolveDefaultAgentId } from "./agent-scope-config-JLvcfwLC.js";
7
- import { n as defaultRuntime } from "./runtime-E_A14BX_.js";
8
- import { r as getChildLogger } from "./logger-Dtqpfdc8.js";
9
- import { i as getRuntimeConfig } from "./io-CcynUC5m.js";
10
- import { t as parseDurationMs } from "./parse-duration-CD4d_yk2.js";
11
- import { t as getGlobalHookRunner } from "./hook-runner-global-DfvRzdbT.js";
12
- import { n as resolveAgentMainSessionKey, t as canonicalizeMainSessionAlias } from "./main-session-D3q_5w0B.js";
13
- import { n as deliveryContextFromSession } from "./delivery-context.shared-BP9Iy2G-.js";
14
- import { u as resolveStorePath } from "./paths-8MFrTNIB.js";
15
- import { i as readSessionEntry, t as loadSessionStore } from "./store-load-BIBESNhm.js";
16
- import { t as archiveRemovedSessionTranscripts, u as updateSessionStore } from "./store-BMkMyEnW.js";
17
- import "./sessions-CevgdiMi.js";
18
- import "./logging-C0LHEG_S.js";
19
- import { a as isRetryableHeartbeatBusySkipReason, o as requestHeartbeat } from "./heartbeat-wake-BEc0M8hq.js";
20
- import { a as enqueueSystemEvent } from "./system-events-BcFIWc-9.js";
21
- import { a as failTaskRunByRunId, i as createRunningTaskRun, n as completeTaskRunByRunId } from "./detached-task-runtime-vaVUN-4P.js";
22
- import { t as abortAndDrainEmbeddedPiRun } from "./runs-g3A6Mtnd.js";
23
- import "./session-utils.fs-CG2Uh2qt.js";
24
- import { i as cleanupArchivedSessionTranscripts } from "./session-transcript-files.fs-Bv7kT0GX.js";
25
- import { i as enqueueCommandInLane } from "./command-queue-B1aRL_eL.js";
26
- import { i as markCronJobActive, t as clearCronJobActive } from "./active-jobs-CbP6gty6.js";
27
- import { a as summarizeCronRunDiagnostics, i as normalizeCronRunDiagnostics, n as createCronRunDiagnosticsFromError } from "./run-diagnostics-kAuHJ8-R.js";
28
- import { a as resolveCronRunLogPath, o as resolveCronRunLogPruneOptions, t as appendCronRunLog } from "./run-log-OtFV2-Sn.js";
29
- import { a as cronSchedulingInputsEqual, i as saveCronStore, r as resolveCronStorePath, t as loadCronStore } from "./store-jjhplGXD.js";
30
- import { d as normalizeCronJobInput } from "./daocore-tools-wNTIZIO3.js";
31
- import { s as resolveFailoverReasonFromError } from "./failover-error-DcavCkbi.js";
32
- import { r as resolveMainScopedEventSessionKey } from "./event-session-routing-DEkypgfp.js";
33
- import { a as resolveCronDeliverySessionKey, o as resolveCronNotificationSessionKey, r as isInvalidCronSessionTargetIdError, s as resolveCronSessionTargetSessionKey, t as normalizeHttpWebhookUrl } from "./webhook-url-BnIhBhHn.js";
34
- import { n as normalizeOptionalAgentId } from "./normalize-esRscAf6.js";
35
- import { t as SsrFBlockedError } from "./ssrf-BNF8aODC.js";
36
- import { n as fetchWithSsrFGuard } from "./fetch-guard-D1q9neTt.js";
37
- import { t as buildOutboundSessionContext } from "./session-context-B3TnD7i3.js";
38
- import { t as sendDurableMessageBatch } from "./send-Dw33crQP.js";
39
- import "./runtime-CubxIdpX.js";
40
- import "./pi-embedded-CFP2IrYS.js";
41
- import { n as resolveAgentOutboundIdentity } from "./identity-DtG5EcSy.js";
42
- import { t as createOutboundSendDeps } from "./outbound-send-deps-CGRtDmXy.js";
43
- import { t as cleanupBrowserSessionsForLifecycleEnd } from "./browser-lifecycle-cleanup-CS2lM2H5.js";
44
- import { t as getInvalidPersistedCronJobReason } from "./persisted-shape-DyK3Ydhz.js";
45
- import { t as runCronIsolatedAgentTurn } from "./isolated-agent-DPyibJ8B.js";
46
- import { n as resolveFailureDestination, t as resolveCronDeliveryPlan } from "./delivery-plan-DajBa_ex.js";
47
- import { t as resolveCronAgentSessionKey } from "./session-key-D_ijetg2.js";
48
- import { _ as resolveDeliveryTarget, a as computeJobPreviousRunAtMs, c as findJobOrThrow, d as isJobEnabled, f as nextWakeAtMs, g as resolveJobPayloadTextForMain, h as recordScheduleComputeError, i as computeJobNextRunAtMs, l as hasScheduledNextRunAtMs, m as recomputeNextRunsForMaintenance, n as applyJobPatch, o as createJob, p as recomputeNextRuns, r as assertSupportedJobSpec, s as errorBackoffMs, t as DEFAULT_ERROR_BACKOFF_SCHEDULE_MS, u as isJobDue } from "./jobs-ByS1CKqd.js";
49
- import { t as createCronExecutionId } from "./run-id-BEdij8BZ.js";
50
- import { n as runHeartbeatOnce } from "./heartbeat-runner-Dncw_0KS.js";
51
- import fs from "node:fs";
52
- //#region src/cron/service/locked.ts
53
- const storeLocks = /* @__PURE__ */ new Map();
54
- const resolveChain = (promise) => promise.then(() => void 0, () => void 0);
55
- async function locked(state, fn) {
56
- const storePath = state.deps.storePath;
57
- const storeOp = storeLocks.get(storePath) ?? Promise.resolve();
58
- const next = Promise.all([resolveChain(state.op), resolveChain(storeOp)]).then(fn);
59
- const keepAlive = resolveChain(next);
60
- state.op = keepAlive;
61
- storeLocks.set(storePath, keepAlive);
62
- return await next;
63
- }
64
- //#endregion
65
- //#region src/cron/normalize-job-identity.ts
66
- function normalizeCronJobIdentityFields(raw) {
67
- const rawId = normalizeOptionalString(raw.id) ?? "";
68
- const legacyJobId = normalizeOptionalString(raw.jobId) ?? "";
69
- const hadJobIdKey = "jobId" in raw;
70
- const normalizedId = rawId || legacyJobId;
71
- const idChanged = Boolean(normalizedId && raw.id !== normalizedId);
72
- if (idChanged) raw.id = normalizedId;
73
- if (hadJobIdKey) delete raw.jobId;
74
- return {
75
- mutated: idChanged || hadJobIdKey,
76
- legacyJobIdIssue: hadJobIdKey
77
- };
78
- }
79
- //#endregion
80
- //#region src/cron/service/store.ts
81
- function invalidateStaleNextRunOnScheduleChange(params) {
82
- const previousJob = params.previousJobsById.get(params.hydrated.id);
83
- if (!previousJob || cronSchedulingInputsEqual(previousJob, params.hydrated)) return;
84
- params.hydrated.state ??= {};
85
- params.hydrated.state.nextRunAtMs = void 0;
86
- }
87
- function warnInvalidPersistedCronJob(params) {
88
- const jobId = typeof params.raw.id === "string" ? params.raw.id : void 0;
89
- const dedupeKey = jobId ?? `index:${params.index}`;
90
- if (params.state.warnedInvalidPersistedJobKeys.has(dedupeKey)) return;
91
- params.state.warnedInvalidPersistedJobKeys.add(dedupeKey);
92
- params.state.deps.log.warn({
93
- storePath: params.state.deps.storePath,
94
- jobId,
95
- jobIndex: params.index,
96
- reason: params.reason
97
- }, "cron: skipped invalid persisted job; run daocore doctor --fix to repair");
98
- }
99
- async function getFileMtimeMs(path) {
100
- try {
101
- return (await fs.promises.stat(path)).mtimeMs;
102
- } catch {
103
- return null;
104
- }
105
- }
106
- async function ensureLoaded(state, opts) {
107
- if (state.store && !opts?.forceReload) return;
108
- const previousJobsById = /* @__PURE__ */ new Map();
109
- for (const job of state.store?.jobs ?? []) previousJobsById.set(job.id, job);
110
- const fileMtimeMs = await getFileMtimeMs(state.deps.storePath);
111
- const loadedJobs = (await loadCronStore(state.deps.storePath)).jobs ?? [];
112
- const jobs = [];
113
- for (const [index, job] of loadedJobs.entries()) {
114
- const raw = job;
115
- const { legacyJobIdIssue } = normalizeCronJobIdentityFields(raw);
116
- let normalized;
117
- try {
118
- normalized = normalizeCronJobInput(raw);
119
- } catch (error) {
120
- if (!isInvalidCronSessionTargetIdError(error)) throw error;
121
- normalized = null;
122
- state.deps.log.warn({
123
- storePath: state.deps.storePath,
124
- jobId: typeof raw.id === "string" ? raw.id : void 0
125
- }, "cron: job has invalid persisted sessionTarget; run daocore doctor --fix to repair");
126
- }
127
- const hydrated = normalized && typeof normalized === "object" ? normalized : job;
128
- const invalidReason = getInvalidPersistedCronJobReason(hydrated);
129
- if (invalidReason) {
130
- warnInvalidPersistedCronJob({
131
- state,
132
- raw,
133
- index,
134
- reason: invalidReason
135
- });
136
- continue;
137
- }
138
- jobs.push(hydrated);
139
- if (legacyJobIdIssue) {
140
- const resolvedId = typeof hydrated.id === "string" ? hydrated.id : void 0;
141
- state.deps.log.warn({
142
- storePath: state.deps.storePath,
143
- jobId: resolvedId
144
- }, "cron: job used legacy jobId field; normalized id in memory (run daocore doctor --fix to persist canonical shape)");
145
- }
146
- if (typeof hydrated.enabled !== "boolean") hydrated.enabled = true;
147
- invalidateStaleNextRunOnScheduleChange({
148
- previousJobsById,
149
- hydrated
150
- });
151
- if (typeof hydrated.sessionTarget !== "string") {
152
- const payload = hydrated.payload;
153
- const payloadKind = payload && typeof payload === "object" && !Array.isArray(payload) && Object.hasOwn(payload, "kind") ? payload.kind : void 0;
154
- let defaulted;
155
- if (payloadKind === "systemEvent") defaulted = "main";
156
- else if (payloadKind === "agentTurn") defaulted = "isolated";
157
- if (defaulted) {
158
- hydrated.sessionTarget = defaulted;
159
- const jobId = typeof hydrated.id === "string" ? hydrated.id : void 0;
160
- const dedupeKey = jobId ?? "<unknown>";
161
- if (!state.warnedMissingSessionTargetJobIds.has(dedupeKey)) {
162
- state.warnedMissingSessionTargetJobIds.add(dedupeKey);
163
- state.deps.log.warn({
164
- storePath: state.deps.storePath,
165
- jobId,
166
- defaulted
167
- }, "cron: job missing sessionTarget; defaulted in memory (edit jobs.json to persist canonical shape)");
168
- }
169
- }
170
- }
171
- }
172
- state.store = {
173
- version: 1,
174
- jobs
175
- };
176
- state.storeLoadedAtMs = state.deps.nowMs();
177
- state.storeFileMtimeMs = fileMtimeMs;
178
- if (!opts?.skipRecompute) recomputeNextRuns(state);
179
- }
180
- function warnIfDisabled(state, action) {
181
- if (state.deps.cronEnabled) return;
182
- if (state.warnedDisabled) return;
183
- state.warnedDisabled = true;
184
- state.deps.log.warn({
185
- enabled: false,
186
- action,
187
- storePath: state.deps.storePath
188
- }, "cron: scheduler disabled; jobs will not run automatically");
189
- }
190
- async function persist(state, opts) {
191
- if (!state.store) return;
192
- await saveCronStore(state.deps.storePath, state.store, opts);
193
- state.storeFileMtimeMs = await getFileMtimeMs(state.deps.storePath);
194
- }
195
- //#endregion
196
- //#region src/agents/pi-embedded-runner/execution-phase.ts
197
- const EMBEDDED_AGENT_EXECUTION_PHASE_LABELS = {
198
- runner_entered: "runner-entered",
199
- workspace: "workspace",
200
- runtime_plugins: "runtime-plugins",
201
- before_agent_reply: "before-agent-reply",
202
- model_resolution: "model-resolution",
203
- auth: "auth",
204
- context_engine: "context-engine",
205
- attempt_dispatch: "attempt-dispatch",
206
- context_assembled: "context-assembled",
207
- turn_accepted: "turn-accepted",
208
- process_spawned: "process-spawned",
209
- tool_execution_started: "tool-execution-started",
210
- assistant_output_started: "assistant-output-started",
211
- model_call_started: "model-call-started"
212
- };
213
- function formatEmbeddedAgentExecutionPhase(phase) {
214
- return phase ? EMBEDDED_AGENT_EXECUTION_PHASE_LABELS[phase] : void 0;
215
- }
216
- //#endregion
217
- //#region src/cron/retry-hint.ts
218
- const TRANSIENT_PATTERNS = {
219
- rate_limit: /(rate[_ ]limit|too many requests|429|resource has been exhausted|cloudflare|tokens per day)/i,
220
- overloaded: /\b529\b|\boverloaded(?:_error)?\b|high demand|temporar(?:ily|y) overloaded|capacity exceeded/i,
221
- network: /(network|fetch failed|socket|econnreset|econnrefused|eai_again|ehostunreach|ehostdown|enetreset|enetunreach|epipe)/i,
222
- timeout: /(timeout|etimedout)/i,
223
- server_error: /\b5\d{2}\b/
224
- };
225
- function resolveCronExecutionRetryHint(error, retryOn, classifiedReason) {
226
- if (!error || typeof error !== "string") return { retryable: false };
227
- const keys = retryOn?.length ? retryOn : Object.keys(TRANSIENT_PATTERNS);
228
- const classified = classifiedReason ?? void 0;
229
- if (classified && keys.includes(classified)) return {
230
- retryable: true,
231
- category: classified
232
- };
233
- for (const key of keys) if (TRANSIENT_PATTERNS[key]?.test(error)) return {
234
- retryable: true,
235
- category: key
236
- };
237
- return { retryable: false };
238
- }
239
- //#endregion
240
- //#region src/cron/session-reaper.ts
241
- /**
242
- * Cron session reaper — prunes completed isolated cron run sessions
243
- * from the session store after a configurable retention period.
244
- *
245
- * Pattern: sessions keyed as `...:cron:<jobId>:run:<uuid>` are ephemeral
246
- * run records. The base session (`...:cron:<jobId>`) is kept as-is.
247
- */
248
- const DEFAULT_RETENTION_MS = 24 * 36e5;
249
- /** Minimum interval between reaper sweeps (avoid running every timer tick). */
250
- const MIN_SWEEP_INTERVAL_MS = 5 * 6e4;
251
- const lastSweepAtMsByStore = /* @__PURE__ */ new Map();
252
- function resolveRetentionMs(cronConfig) {
253
- if (cronConfig?.sessionRetention === false) return null;
254
- const raw = cronConfig?.sessionRetention;
255
- if (typeof raw === "string" && raw.trim()) try {
256
- return parseDurationMs(raw.trim(), { defaultUnit: "h" });
257
- } catch {
258
- return DEFAULT_RETENTION_MS;
259
- }
260
- return DEFAULT_RETENTION_MS;
261
- }
262
- /**
263
- * Sweep the session store and prune expired cron run sessions.
264
- * Designed to be called from the cron timer tick — self-throttles via
265
- * MIN_SWEEP_INTERVAL_MS to avoid excessive I/O.
266
- *
267
- * Lock ordering: this function acquires the session-store file lock via
268
- * `updateSessionStore`. It must be called OUTSIDE of the cron service's
269
- * own `locked()` section to avoid lock-order inversions. The cron timer
270
- * calls this after all `locked()` sections have been released.
271
- */
272
- async function sweepCronRunSessions(params) {
273
- const now = params.nowMs ?? Date.now();
274
- const storePath = params.sessionStorePath;
275
- const lastSweepAtMs = lastSweepAtMsByStore.get(storePath) ?? 0;
276
- if (!params.force && now - lastSweepAtMs < MIN_SWEEP_INTERVAL_MS) return {
277
- swept: false,
278
- pruned: 0
279
- };
280
- const retentionMs = resolveRetentionMs(params.cronConfig);
281
- if (retentionMs === null) {
282
- lastSweepAtMsByStore.set(storePath, now);
283
- return {
284
- swept: false,
285
- pruned: 0
286
- };
287
- }
288
- let pruned = 0;
289
- const prunedSessions = /* @__PURE__ */ new Map();
290
- try {
291
- await updateSessionStore(storePath, (store) => {
292
- const cutoff = now - retentionMs;
293
- for (const key of Object.keys(store)) {
294
- if (!isCronRunSessionKey(key)) continue;
295
- const entry = store[key];
296
- if (!entry) continue;
297
- if ((entry.updatedAt ?? 0) < cutoff) {
298
- if (!prunedSessions.has(entry.sessionId) || entry.sessionFile) prunedSessions.set(entry.sessionId, entry.sessionFile);
299
- delete store[key];
300
- pruned++;
301
- }
302
- }
303
- });
304
- } catch (err) {
305
- params.log.warn({ err: String(err) }, "cron-reaper: failed to sweep session store");
306
- return {
307
- swept: false,
308
- pruned: 0
309
- };
310
- }
311
- lastSweepAtMsByStore.set(storePath, now);
312
- if (prunedSessions.size > 0) try {
313
- const store = loadSessionStore(storePath, { skipCache: true });
314
- const archivedDirs = await archiveRemovedSessionTranscripts({
315
- removedSessionFiles: prunedSessions,
316
- referencedSessionIds: new Set(Object.values(store).map((entry) => entry?.sessionId).filter((id) => Boolean(id))),
317
- storePath,
318
- reason: "deleted",
319
- restrictToStoreDir: true
320
- });
321
- if (archivedDirs.size > 0) await cleanupArchivedSessionTranscripts({
322
- directories: [...archivedDirs],
323
- olderThanMs: retentionMs,
324
- reason: "deleted",
325
- nowMs: now
326
- });
327
- } catch (err) {
328
- params.log.warn({ err: String(err) }, "cron-reaper: transcript cleanup failed");
329
- }
330
- if (pruned > 0) params.log.info({
331
- pruned,
332
- retentionMs
333
- }, `cron-reaper: pruned ${pruned} expired cron run session(s)`);
334
- return {
335
- swept: true,
336
- pruned
337
- };
338
- }
339
- //#endregion
340
- //#region src/cron/service/timeout-policy.ts
341
- /**
342
- * Maximum wall-clock time for a single job execution. Acts as a safety net
343
- * on top of per-provider/per-agent timeouts to prevent one stuck job from
344
- * wedging the entire cron lane.
345
- */
346
- const DEFAULT_JOB_TIMEOUT_MS = 10 * 6e4;
347
- /**
348
- * Agent turns can legitimately run much longer than generic cron jobs.
349
- * Use a larger safety ceiling when no explicit timeout is set.
350
- */
351
- const AGENT_TURN_SAFETY_TIMEOUT_MS = 60 * 6e4;
352
- function resolveCronJobTimeoutMs(job) {
353
- const configuredTimeoutMs = job.payload.kind === "agentTurn" && typeof job.payload.timeoutSeconds === "number" ? Math.floor(job.payload.timeoutSeconds * 1e3) : void 0;
354
- if (configuredTimeoutMs === void 0) return job.payload.kind === "agentTurn" ? AGENT_TURN_SAFETY_TIMEOUT_MS : DEFAULT_JOB_TIMEOUT_MS;
355
- return configuredTimeoutMs <= 0 ? void 0 : configuredTimeoutMs;
356
- }
357
- //#endregion
358
- //#region src/cron/service/timer.ts
359
- const MAX_TIMER_DELAY_MS = 6e4;
360
- const CRON_TIMEOUT_CLEANUP_GUARD_MS = 2e4;
361
- const CRON_AGENT_SETUP_WATCHDOG_MS = 6e4;
362
- const CRON_AGENT_PRE_EXECUTION_WATCHDOG_MS = 6e4;
363
- const CRON_AGENT_PRE_EXECUTION_MIN_WATCHDOG_MS = 1e3;
364
- /**
365
- * Minimum gap between consecutive fires of the same cron job. This is a
366
- * safety net that prevents spin-loops when `computeJobNextRunAtMs` returns
367
- * a value within the same second as the just-completed run. The guard
368
- * is intentionally generous (2 s) so it never masks a legitimate schedule
369
- * but always breaks an infinite re-trigger cycle. (See #17821)
370
- */
371
- const MIN_REFIRE_GAP_MS = 2e3;
372
- const DEFAULT_MISSED_JOB_STAGGER_MS = 5e3;
373
- const DEFAULT_MAX_MISSED_JOBS_PER_RESTART = 5;
374
- const DEFAULT_STARTUP_DEFERRED_MISSED_AGENT_JOB_DELAY_MS = 2 * 6e4;
375
- const DEFAULT_FAILURE_ALERT_AFTER = 2;
376
- const DEFAULT_FAILURE_ALERT_COOLDOWN_MS = 60 * 6e4;
377
- const CRON_AGENT_PHASE_WATCHDOG_STAGE = {
378
- runner_entered: "pre_execution",
379
- workspace: "pre_execution",
380
- runtime_plugins: "pre_execution",
381
- before_agent_reply: "execution",
382
- model_resolution: "pre_execution",
383
- auth: "pre_execution",
384
- context_engine: "pre_execution",
385
- attempt_dispatch: "execution",
386
- context_assembled: "execution",
387
- turn_accepted: "execution",
388
- process_spawned: "execution",
389
- tool_execution_started: "execution",
390
- assistant_output_started: "execution",
391
- model_call_started: "execution"
392
- };
393
- async function executeJobCoreWithTimeout(state, job) {
394
- const jobTimeoutMs = resolveCronJobTimeoutMs(job);
395
- if (typeof jobTimeoutMs !== "number") return await executeJobCore(state, job);
396
- const runAbortController = new AbortController();
397
- let timeoutReason;
398
- const timeoutMarker = Symbol("cron-timeout");
399
- let resolveTimeout;
400
- const timeoutPromise = new Promise((resolve) => {
401
- resolveTimeout = resolve;
402
- });
403
- const deferTimeoutUntilExecutionStart = job.sessionTarget !== "main" && job.payload.kind === "agentTurn";
404
- const triggerTimeout = (reason) => {
405
- if (runAbortController.signal.aborted) return;
406
- timeoutReason = reason;
407
- runAbortController.abort(reason);
408
- resolveTimeout?.(timeoutMarker);
409
- };
410
- const watchdog = createCronAgentWatchdog({
411
- deferUntilRunner: deferTimeoutUntilExecutionStart,
412
- jobTimeoutMs,
413
- triggerTimeout
414
- });
415
- const corePromise = executeJobCore(state, job, runAbortController.signal, {
416
- onExecutionStarted: deferTimeoutUntilExecutionStart ? watchdog.noteRunnerStarted : void 0,
417
- onExecutionPhase: deferTimeoutUntilExecutionStart ? watchdog.notePhase : void 0
418
- });
419
- watchdog.start();
420
- corePromise.catch((err) => {
421
- if (runAbortController.signal.aborted) state.deps.log.warn({
422
- jobId: job.id,
423
- err: String(err)
424
- }, "cron: job core rejected after timeout abort");
425
- });
426
- try {
427
- const first = await Promise.race([corePromise, timeoutPromise]);
428
- if (first !== timeoutMarker) return first;
429
- const activeExecution = watchdog.activeExecution();
430
- await cleanupTimedOutCronAgentRun(state, job, jobTimeoutMs, activeExecution);
431
- const error = timeoutReason ?? timeoutErrorMessage(activeExecution);
432
- return {
433
- status: "error",
434
- error,
435
- diagnostics: createCronRunDiagnosticsFromError("cron-setup", error, { nowMs: state.deps.nowMs })
436
- };
437
- } finally {
438
- watchdog.dispose();
439
- }
440
- }
441
- function createCronAgentWatchdog(params) {
442
- let state = params.deferUntilRunner ? "waiting_for_runner" : "executing";
443
- let timeoutId;
444
- let setupTimeoutId;
445
- let preExecutionTimeoutId;
446
- let activeExecution;
447
- const setTimedOut = (reason) => {
448
- if (state === "timed_out" || state === "disposed") return;
449
- state = "timed_out";
450
- params.triggerTimeout(reason);
451
- };
452
- const startTimeout = () => {
453
- if (timeoutId || state === "disposed") return;
454
- timeoutId = setTimeout(() => {
455
- setTimedOut(timeoutErrorMessage(activeExecution));
456
- }, params.jobTimeoutMs);
457
- };
458
- const clearSetupTimeout = () => {
459
- if (!setupTimeoutId) return;
460
- clearTimeout(setupTimeoutId);
461
- setupTimeoutId = void 0;
462
- };
463
- const clearPreExecutionTimeout = () => {
464
- if (!preExecutionTimeoutId) return;
465
- clearTimeout(preExecutionTimeoutId);
466
- preExecutionTimeoutId = void 0;
467
- };
468
- const startPreExecutionTimeout = () => {
469
- if (preExecutionTimeoutId || state !== "waiting_for_execution") return;
470
- preExecutionTimeoutId = setTimeout(() => {
471
- if (state === "waiting_for_execution") setTimedOut(preExecutionTimeoutErrorMessage(activeExecution));
472
- }, resolveCronAgentPreExecutionWatchdogMs(params.jobTimeoutMs));
473
- };
474
- const noteExecutionProgress = (info) => {
475
- if (!info) return;
476
- const previousPhase = activeExecution?.phase;
477
- activeExecution = {
478
- ...activeExecution,
479
- ...info
480
- };
481
- const stage = info.phase ? CRON_AGENT_PHASE_WATCHDOG_STAGE[info.phase] : void 0;
482
- if (state === "executing" && previousPhase === "before_agent_reply" && stage === "pre_execution") {
483
- state = "waiting_for_execution";
484
- startPreExecutionTimeout();
485
- return;
486
- }
487
- if (stage === "execution" || info.firstModelCallStarted) {
488
- state = "executing";
489
- clearPreExecutionTimeout();
490
- }
491
- };
492
- return {
493
- start: () => {
494
- if (params.deferUntilRunner) {
495
- setupTimeoutId = setTimeout(() => {
496
- if (state === "waiting_for_runner") setTimedOut(setupTimeoutErrorMessage(activeExecution));
497
- }, CRON_AGENT_SETUP_WATCHDOG_MS);
498
- return;
499
- }
500
- startTimeout();
501
- },
502
- noteRunnerStarted: (info) => {
503
- if (state === "disposed" || state === "timed_out") return;
504
- clearSetupTimeout();
505
- startTimeout();
506
- if (state !== "executing") state = "waiting_for_execution";
507
- noteExecutionProgress(info);
508
- startPreExecutionTimeout();
509
- },
510
- notePhase: (info) => {
511
- if (state === "disposed" || state === "timed_out") return;
512
- noteExecutionProgress(info);
513
- },
514
- activeExecution: () => activeExecution,
515
- dispose: () => {
516
- state = "disposed";
517
- if (timeoutId) clearTimeout(timeoutId);
518
- clearSetupTimeout();
519
- clearPreExecutionTimeout();
520
- }
521
- };
522
- }
523
- async function cleanupTimedOutCronAgentRun(state, job, timeoutMs, execution) {
524
- if (!state.deps.cleanupTimedOutAgentRun) return;
525
- let settleTimer;
526
- const cleanupPromise = state.deps.cleanupTimedOutAgentRun({
527
- job,
528
- timeoutMs,
529
- execution
530
- });
531
- const settleTimeout = new Promise((resolve) => {
532
- settleTimer = setTimeout(resolve, CRON_TIMEOUT_CLEANUP_GUARD_MS);
533
- });
534
- try {
535
- await Promise.race([cleanupPromise, settleTimeout]);
536
- } catch (err) {
537
- state.deps.log.warn({
538
- jobId: job.id,
539
- err: String(err)
540
- }, "cron: timed-out agent cleanup failed");
541
- } finally {
542
- if (settleTimer) clearTimeout(settleTimer);
543
- }
544
- }
545
- function resolveRunConcurrency(state) {
546
- const raw = state.deps.cronConfig?.maxConcurrentRuns;
547
- if (typeof raw !== "number" || !Number.isFinite(raw)) return 1;
548
- return Math.max(1, Math.floor(raw));
549
- }
550
- function timeoutErrorMessage(execution) {
551
- const phase = formatCronAgentExecutionPhase(execution);
552
- if (!phase) return "cron: job execution timed out";
553
- return `cron: job execution timed out (last phase: ${phase})`;
554
- }
555
- function setupTimeoutErrorMessage(execution) {
556
- const phase = formatCronAgentExecutionPhase(execution);
557
- if (!phase) return "cron: isolated agent setup timed out before runner start";
558
- return `cron: isolated agent setup timed out before runner start (last phase: ${phase})`;
559
- }
560
- function preExecutionTimeoutErrorMessage(execution) {
561
- const phase = formatCronAgentExecutionPhase(execution);
562
- if (!phase) return "cron: isolated agent run stalled before execution start";
563
- return `cron: isolated agent run stalled before execution start (last phase: ${phase})`;
564
- }
565
- function formatCronAgentExecutionPhase(execution) {
566
- return formatEmbeddedAgentExecutionPhase(execution?.phase);
567
- }
568
- function resolveCronAgentPreExecutionWatchdogMs(jobTimeoutMs) {
569
- return Math.max(CRON_AGENT_PRE_EXECUTION_MIN_WATCHDOG_MS, Math.min(CRON_AGENT_PRE_EXECUTION_WATCHDOG_MS, Math.floor(jobTimeoutMs / 2)));
570
- }
571
- function abortErrorMessage(signal) {
572
- const reason = signal?.reason;
573
- if (typeof reason === "string" && reason.trim()) return reason.trim();
574
- return timeoutErrorMessage();
575
- }
576
- function isAbortError(err) {
577
- if (!(err instanceof Error)) return false;
578
- return err.name === "AbortError" || err.message === timeoutErrorMessage();
579
- }
580
- function normalizeCronRunErrorText(err) {
581
- if (isAbortError(err)) return timeoutErrorMessage();
582
- if (typeof err === "string") return err === `Error: ${timeoutErrorMessage()}` ? timeoutErrorMessage() : err;
583
- return String(err);
584
- }
585
- function normalizeCronLaneSegment(value, fallback) {
586
- return normalizeOptionalLowercaseString(value)?.replace(/[^a-z0-9_-]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 64) || fallback;
587
- }
588
- function resolveMainSessionCronRunSessionKey(job, startedAt) {
589
- const explicitAgentId = job.agentId?.trim();
590
- return `agent:${normalizeAgentId(explicitAgentId || resolveAgentIdFromSessionKey(job.sessionKey))}:cron:${normalizeCronLaneSegment(job.id, "job")}:run:${normalizeCronLaneSegment(String(Math.max(0, Math.floor(startedAt))), "run")}`;
591
- }
592
- function resolveMainSessionCronDeliveryContext(state, job) {
593
- const targetSessionKey = job.sessionKey?.trim();
594
- if (!targetSessionKey) return;
595
- const explicitAgentId = job.agentId?.trim();
596
- const agentId = normalizeAgentId(explicitAgentId || resolveAgentIdFromSessionKey(targetSessionKey));
597
- const storePath = state.deps.resolveSessionStorePath?.(agentId) ?? state.deps.sessionStorePath;
598
- if (!storePath) return;
599
- try {
600
- return deliveryContextFromSession(readSessionEntry(storePath, targetSessionKey));
601
- } catch {
602
- return;
603
- }
604
- }
605
- function resolveCronTaskChildSessionKey(params) {
606
- if (params.job.sessionTarget === "main") return resolveMainSessionCronRunSessionKey(params.job, params.startedAt);
607
- const explicitSessionKey = params.job.sessionKey?.trim();
608
- if (explicitSessionKey) return explicitSessionKey;
609
- if (params.job.sessionTarget !== "isolated") return;
610
- return resolveCronAgentSessionKey({
611
- sessionKey: `cron:${params.job.id}`,
612
- agentId: params.job.agentId ?? params.state.deps.defaultAgentId ?? "main"
613
- });
614
- }
615
- function tryCreateCronTaskRun(params) {
616
- const runId = createCronExecutionId(params.job.id, params.startedAt);
617
- try {
618
- createRunningTaskRun({
619
- runtime: "cron",
620
- sourceId: params.job.id,
621
- ownerKey: "",
622
- scopeKind: "system",
623
- childSessionKey: resolveCronTaskChildSessionKey(params),
624
- agentId: params.job.agentId,
625
- runId,
626
- label: params.job.name,
627
- task: params.job.name || params.job.id,
628
- deliveryStatus: "not_applicable",
629
- notifyPolicy: "silent",
630
- startedAt: params.startedAt,
631
- lastEventAt: params.startedAt
632
- });
633
- return runId;
634
- } catch (error) {
635
- params.state.deps.log.warn({
636
- jobId: params.job.id,
637
- error
638
- }, "cron: failed to create task ledger record");
639
- return;
640
- }
641
- }
642
- function tryFinishCronTaskRun(state, result) {
643
- if (!result.taskRunId) return;
644
- try {
645
- if (result.status === "ok" || result.status === "skipped") {
646
- completeTaskRunByRunId({
647
- runId: result.taskRunId,
648
- runtime: "cron",
649
- endedAt: result.endedAt,
650
- lastEventAt: result.endedAt,
651
- terminalSummary: result.summary ?? void 0
652
- });
653
- return;
654
- }
655
- failTaskRunByRunId({
656
- runId: result.taskRunId,
657
- runtime: "cron",
658
- status: normalizeCronRunErrorText(result.error) === timeoutErrorMessage() ? "timed_out" : "failed",
659
- endedAt: result.endedAt,
660
- lastEventAt: result.endedAt,
661
- error: result.status === "error" ? normalizeCronRunErrorText(result.error) : void 0,
662
- terminalSummary: result.summary ?? void 0
663
- });
664
- } catch (error) {
665
- state.deps.log.warn({
666
- runId: result.taskRunId,
667
- jobStatus: result.status,
668
- error
669
- }, "cron: failed to update task ledger record");
670
- }
671
- }
672
- /** Default max retries for one-shot jobs on transient errors (#24355). */
673
- const DEFAULT_MAX_TRANSIENT_RETRIES = 3;
674
- function resolveCronNextRunWithLowerBound(params) {
675
- if (params.naturalNext === void 0) {
676
- params.state.deps.log.warn({
677
- jobId: params.job.id,
678
- jobName: params.job.name,
679
- context: params.context
680
- }, "cron: next run unresolved; clearing schedule to avoid a refire loop");
681
- return;
682
- }
683
- return Math.max(params.naturalNext, params.lowerBoundMs);
684
- }
685
- function resolveRetryConfig(cronConfig) {
686
- const retry = cronConfig?.retry;
687
- return {
688
- maxAttempts: typeof retry?.maxAttempts === "number" ? retry.maxAttempts : DEFAULT_MAX_TRANSIENT_RETRIES,
689
- backoffMs: Array.isArray(retry?.backoffMs) && retry.backoffMs.length > 0 ? retry.backoffMs : DEFAULT_ERROR_BACKOFF_SCHEDULE_MS.slice(0, 3),
690
- retryOn: Array.isArray(retry?.retryOn) && retry.retryOn.length > 0 ? retry.retryOn : void 0
691
- };
692
- }
693
- function resolveDeliveryState(params) {
694
- const primaryDeliveryRequested = resolveCronDeliveryPlan(params.job).requested;
695
- const alternateFailureNotificationRequested = params.runStatus === "error" && params.job.delivery?.bestEffort !== true && resolveFailureDestination(params.job, params.globalFailureDestination) !== null;
696
- if (!primaryDeliveryRequested) return {
697
- status: "not-requested",
698
- failureNotification: { status: alternateFailureNotificationRequested ? "unknown" : "not-requested" }
699
- };
700
- if (params.runStatus === "error") {
701
- const failureNotification = alternateFailureNotificationRequested ? { status: "unknown" } : { status: "delivered" };
702
- if (params.delivered === true) return {
703
- delivered: false,
704
- status: "not-delivered",
705
- error: params.error,
706
- failureNotification: alternateFailureNotificationRequested ? failureNotification : {
707
- delivered: true,
708
- status: "delivered"
709
- }
710
- };
711
- if (params.delivered === false) return {
712
- delivered: false,
713
- status: "not-delivered",
714
- error: params.error,
715
- failureNotification: alternateFailureNotificationRequested ? failureNotification : {
716
- delivered: false,
717
- status: "not-delivered",
718
- ...params.error ? { error: params.error } : {}
719
- }
720
- };
721
- return {
722
- status: "unknown",
723
- error: params.error,
724
- failureNotification: { status: "unknown" }
725
- };
726
- }
727
- if (params.delivered === true) return {
728
- delivered: true,
729
- status: "delivered",
730
- failureNotification: { status: "not-requested" }
731
- };
732
- if (params.delivered === false) return {
733
- delivered: false,
734
- status: "not-delivered",
735
- error: params.error,
736
- failureNotification: { status: "not-requested" }
737
- };
738
- return {
739
- status: "unknown",
740
- failureNotification: { status: "not-requested" }
741
- };
742
- }
743
- function failureNotificationDeliveryFromJobState(job) {
744
- const status = job.state.lastFailureNotificationDeliveryStatus;
745
- if (!status || status === "not-requested") return;
746
- return {
747
- delivered: job.state.lastFailureNotificationDelivered,
748
- status,
749
- error: job.state.lastFailureNotificationDeliveryError
750
- };
751
- }
752
- function normalizeCronMessageChannel(input) {
753
- const channel = normalizeOptionalLowercaseString(input);
754
- return channel ? channel : void 0;
755
- }
756
- function normalizeTo(input) {
757
- if (typeof input !== "string") return;
758
- const to = input.trim();
759
- return to ? to : void 0;
760
- }
761
- function clampPositiveInt(value, fallback) {
762
- if (typeof value !== "number" || !Number.isFinite(value)) return fallback;
763
- const floored = Math.floor(value);
764
- return floored >= 1 ? floored : fallback;
765
- }
766
- function clampNonNegativeInt(value, fallback) {
767
- if (typeof value !== "number" || !Number.isFinite(value)) return fallback;
768
- const floored = Math.floor(value);
769
- return floored >= 0 ? floored : fallback;
770
- }
771
- function resolveFailureAlert(state, job) {
772
- const globalConfig = state.deps.cronConfig?.failureAlert;
773
- const jobConfig = job.failureAlert === false ? void 0 : job.failureAlert;
774
- if (job.failureAlert === false) return null;
775
- if (!jobConfig && globalConfig?.enabled !== true) return null;
776
- const mode = jobConfig?.mode ?? globalConfig?.mode;
777
- const explicitTo = normalizeTo(jobConfig?.to);
778
- return {
779
- after: clampPositiveInt(jobConfig?.after ?? globalConfig?.after, DEFAULT_FAILURE_ALERT_AFTER),
780
- cooldownMs: clampNonNegativeInt(jobConfig?.cooldownMs ?? globalConfig?.cooldownMs, DEFAULT_FAILURE_ALERT_COOLDOWN_MS),
781
- channel: normalizeCronMessageChannel(jobConfig?.channel) ?? normalizeCronMessageChannel(job.delivery?.channel) ?? "last",
782
- to: mode === "webhook" ? explicitTo : explicitTo ?? normalizeTo(job.delivery?.to),
783
- mode,
784
- accountId: jobConfig?.accountId ?? globalConfig?.accountId,
785
- includeSkipped: jobConfig?.includeSkipped ?? globalConfig?.includeSkipped ?? false
786
- };
787
- }
788
- function emitFailureAlert(state, params) {
789
- const safeJobName = params.job.name || params.job.id;
790
- const truncatedError = (params.error?.trim() || "unknown reason").slice(0, 200);
791
- const statusVerb = params.status === "skipped" ? "skipped" : "failed";
792
- const detailLabel = params.status === "skipped" ? "Skip reason" : "Last error";
793
- const text = [`Cron job "${safeJobName}" ${statusVerb} ${params.consecutiveErrors} times`, `${detailLabel}: ${truncatedError}`].join("\n");
794
- if (state.deps.sendCronFailureAlert) {
795
- state.deps.sendCronFailureAlert({
796
- job: params.job,
797
- text,
798
- channel: params.channel,
799
- to: params.to,
800
- mode: params.mode,
801
- accountId: params.accountId
802
- }).catch((err) => {
803
- state.deps.log.warn({
804
- jobId: params.job.id,
805
- err: String(err)
806
- }, "cron: failure alert delivery failed");
807
- });
808
- return;
809
- }
810
- state.deps.enqueueSystemEvent(text, { agentId: params.job.agentId });
811
- if (params.job.wakeMode === "now") state.deps.requestHeartbeat({
812
- source: "cron",
813
- intent: "immediate",
814
- reason: `cron:${params.job.id}:failure-alert`
815
- });
816
- }
817
- function maybeEmitFailureAlert(state, params) {
818
- if (!params.alertConfig || params.consecutiveCount < params.alertConfig.after) return;
819
- if (params.job.delivery?.bestEffort === true) return;
820
- const now = state.deps.nowMs();
821
- const lastAlert = params.job.state.lastFailureAlertAtMs;
822
- if (typeof lastAlert === "number" && now - lastAlert < Math.max(0, params.alertConfig.cooldownMs)) return;
823
- emitFailureAlert(state, {
824
- job: params.job,
825
- error: params.error,
826
- consecutiveErrors: params.consecutiveCount,
827
- channel: params.alertConfig.channel,
828
- to: params.alertConfig.to,
829
- mode: params.alertConfig.mode,
830
- accountId: params.alertConfig.accountId,
831
- status: params.status
832
- });
833
- params.job.state.lastFailureAlertAtMs = now;
834
- }
835
- /**
836
- * Apply the result of a job execution to the job's state.
837
- * Handles consecutive error tracking, exponential backoff, one-shot disable,
838
- * and nextRunAtMs computation. Returns `true` if the job should be deleted.
839
- */
840
- function applyJobResult(state, job, result, opts) {
841
- const prevLastRunAtMs = job.state.lastRunAtMs;
842
- const computeNextWithPreservedLastRun = (nowMs) => {
843
- const saved = job.state.lastRunAtMs;
844
- job.state.lastRunAtMs = prevLastRunAtMs;
845
- try {
846
- return computeJobNextRunAtMs(job, nowMs);
847
- } finally {
848
- job.state.lastRunAtMs = saved;
849
- }
850
- };
851
- job.state.runningAtMs = void 0;
852
- job.state.lastRunAtMs = result.startedAt;
853
- job.state.lastRunStatus = result.status;
854
- job.state.lastStatus = result.status;
855
- job.state.lastDurationMs = Math.max(0, result.endedAt - result.startedAt);
856
- job.state.lastError = result.error;
857
- job.state.lastDiagnostics = normalizeCronRunDiagnostics(result.diagnostics);
858
- job.state.lastDiagnosticSummary = summarizeCronRunDiagnostics(job.state.lastDiagnostics);
859
- job.state.lastErrorReason = result.status === "error" && typeof result.error === "string" ? resolveFailoverReasonFromError(result.error) ?? void 0 : void 0;
860
- if (result.status === "error") state.deps.log.warn({
861
- jobId: job.id,
862
- jobName: job.name,
863
- error: result.error,
864
- diagnosticsSummary: job.state.lastDiagnosticSummary
865
- }, "cron: job run returned error status");
866
- const deliveryState = resolveDeliveryState({
867
- job,
868
- runStatus: result.status,
869
- delivered: result.delivered,
870
- error: result.error,
871
- globalFailureDestination: state.deps.cronConfig?.failureDestination
872
- });
873
- job.state.lastDelivered = deliveryState.delivered;
874
- job.state.lastDeliveryStatus = deliveryState.status;
875
- job.state.lastDeliveryError = deliveryState.status === "not-delivered" && deliveryState.error ? deliveryState.error : void 0;
876
- job.state.lastFailureNotificationDelivered = deliveryState.failureNotification.delivered;
877
- job.state.lastFailureNotificationDeliveryStatus = deliveryState.failureNotification.status;
878
- job.state.lastFailureNotificationDeliveryError = deliveryState.failureNotification.error;
879
- job.updatedAtMs = result.endedAt;
880
- const alertConfig = resolveFailureAlert(state, job);
881
- if (result.status === "error") {
882
- job.state.consecutiveErrors = (job.state.consecutiveErrors ?? 0) + 1;
883
- job.state.consecutiveSkipped = 0;
884
- maybeEmitFailureAlert(state, {
885
- job,
886
- alertConfig,
887
- status: "error",
888
- error: result.error,
889
- consecutiveCount: job.state.consecutiveErrors
890
- });
891
- } else if (result.status === "skipped") {
892
- job.state.consecutiveErrors = 0;
893
- job.state.consecutiveSkipped = (job.state.consecutiveSkipped ?? 0) + 1;
894
- if (alertConfig?.includeSkipped) maybeEmitFailureAlert(state, {
895
- job,
896
- alertConfig,
897
- status: "skipped",
898
- error: result.error,
899
- consecutiveCount: job.state.consecutiveSkipped
900
- });
901
- else job.state.lastFailureAlertAtMs = void 0;
902
- } else {
903
- job.state.consecutiveErrors = 0;
904
- job.state.consecutiveSkipped = 0;
905
- job.state.lastFailureAlertAtMs = void 0;
906
- }
907
- const shouldDelete = job.schedule.kind === "at" && job.deleteAfterRun === true && result.status === "ok";
908
- if (!shouldDelete) if (job.schedule.kind === "at") {
909
- if (result.status === "ok" || result.status === "skipped") {
910
- job.enabled = false;
911
- job.state.nextRunAtMs = void 0;
912
- } else if (result.status === "error") {
913
- const retryConfig = resolveRetryConfig(state.deps.cronConfig);
914
- const retryHint = resolveCronExecutionRetryHint(result.error, retryConfig.retryOn, job.state.lastErrorReason);
915
- const consecutive = job.state.consecutiveErrors;
916
- if (retryHint.retryable && consecutive <= retryConfig.maxAttempts) {
917
- const backoff = errorBackoffMs(consecutive, retryConfig.backoffMs);
918
- job.state.nextRunAtMs = result.endedAt + backoff;
919
- state.deps.log.info({
920
- jobId: job.id,
921
- jobName: job.name,
922
- consecutiveErrors: consecutive,
923
- backoffMs: backoff,
924
- nextRunAtMs: job.state.nextRunAtMs
925
- }, "cron: scheduling one-shot retry after transient error");
926
- } else {
927
- job.enabled = false;
928
- job.state.nextRunAtMs = void 0;
929
- state.deps.log.warn({
930
- jobId: job.id,
931
- jobName: job.name,
932
- consecutiveErrors: consecutive,
933
- error: result.error,
934
- reason: retryHint.retryable ? "max retries exhausted" : "permanent error",
935
- retryCategory: retryHint.category
936
- }, "cron: disabling one-shot job after error");
937
- }
938
- }
939
- } else if (result.status === "error" && isJobEnabled(job)) {
940
- const backoff = errorBackoffMs(job.state.consecutiveErrors ?? 1);
941
- let normalNext;
942
- try {
943
- normalNext = opts?.preserveSchedule && job.schedule.kind === "every" ? computeNextWithPreservedLastRun(result.endedAt) : computeJobNextRunAtMs(job, result.endedAt);
944
- } catch (err) {
945
- recordScheduleComputeError({
946
- state,
947
- job,
948
- err
949
- });
950
- }
951
- const backoffNext = result.endedAt + backoff;
952
- job.state.nextRunAtMs = job.schedule.kind === "cron" ? resolveCronNextRunWithLowerBound({
953
- state,
954
- job,
955
- naturalNext: normalNext,
956
- lowerBoundMs: backoffNext,
957
- context: "error_backoff"
958
- }) : normalNext !== void 0 ? Math.max(normalNext, backoffNext) : backoffNext;
959
- state.deps.log.info({
960
- jobId: job.id,
961
- consecutiveErrors: job.state.consecutiveErrors,
962
- backoffMs: backoff,
963
- nextRunAtMs: job.state.nextRunAtMs
964
- }, "cron: applying error backoff");
965
- } else if (isJobEnabled(job)) {
966
- let naturalNext;
967
- try {
968
- naturalNext = opts?.preserveSchedule && job.schedule.kind === "every" ? computeNextWithPreservedLastRun(result.endedAt) : computeJobNextRunAtMs(job, result.endedAt);
969
- } catch (err) {
970
- recordScheduleComputeError({
971
- state,
972
- job,
973
- err
974
- });
975
- }
976
- if (job.schedule.kind === "cron") {
977
- const minNext = result.endedAt + MIN_REFIRE_GAP_MS;
978
- job.state.nextRunAtMs = resolveCronNextRunWithLowerBound({
979
- state,
980
- job,
981
- naturalNext,
982
- lowerBoundMs: minNext,
983
- context: "completion"
984
- });
985
- } else job.state.nextRunAtMs = naturalNext;
986
- } else job.state.nextRunAtMs = void 0;
987
- return shouldDelete;
988
- }
989
- function applyOutcomeToStoredJob(state, result) {
990
- clearCronJobActive(result.jobId);
991
- tryFinishCronTaskRun(state, result);
992
- const store = state.store;
993
- if (!store) return;
994
- const jobs = store.jobs;
995
- const job = jobs.find((entry) => entry.id === result.jobId);
996
- if (!job) {
997
- if (result.status === "ok") {
998
- applyJobResult(state, result.job, {
999
- status: result.status,
1000
- error: result.error,
1001
- diagnostics: result.diagnostics,
1002
- delivered: result.delivered,
1003
- startedAt: result.startedAt,
1004
- endedAt: result.endedAt
1005
- });
1006
- emitJobFinished(state, result.job, result, result.startedAt);
1007
- state.deps.log.info({ jobId: result.jobId }, "cron: finalized successful run after job was removed during execution");
1008
- return;
1009
- }
1010
- state.deps.log.warn({ jobId: result.jobId }, "cron: applyOutcomeToStoredJob — job not found after forceReload, result discarded");
1011
- return;
1012
- }
1013
- const shouldDelete = applyJobResult(state, job, {
1014
- status: result.status,
1015
- error: result.error,
1016
- diagnostics: result.diagnostics,
1017
- delivered: result.delivered,
1018
- startedAt: result.startedAt,
1019
- endedAt: result.endedAt
1020
- });
1021
- emitJobFinished(state, job, result, result.startedAt);
1022
- if (shouldDelete) {
1023
- store.jobs = jobs.filter((entry) => entry.id !== job.id);
1024
- emit(state, {
1025
- jobId: job.id,
1026
- action: "removed",
1027
- job
1028
- });
1029
- }
1030
- }
1031
- function armTimer(state) {
1032
- if (state.timer) clearTimeout(state.timer);
1033
- state.timer = null;
1034
- if (!state.deps.cronEnabled) {
1035
- state.deps.log.debug({}, "cron: armTimer skipped - scheduler disabled");
1036
- return;
1037
- }
1038
- const nextAt = nextWakeAtMs(state);
1039
- if (!nextAt) {
1040
- const jobCount = state.store?.jobs.length ?? 0;
1041
- const enabledCount = state.store?.jobs.filter((j) => j.enabled).length ?? 0;
1042
- const withNextRun = state.store?.jobs.filter((j) => j.enabled && hasScheduledNextRunAtMs(j.state.nextRunAtMs)).length ?? 0;
1043
- if (enabledCount > 0) {
1044
- armRunningRecheckTimer(state);
1045
- state.deps.log.debug({
1046
- jobCount,
1047
- enabledCount,
1048
- withNextRun,
1049
- delayMs: MAX_TIMER_DELAY_MS
1050
- }, "cron: timer armed for maintenance recheck");
1051
- return;
1052
- }
1053
- state.deps.log.debug({
1054
- jobCount,
1055
- enabledCount,
1056
- withNextRun
1057
- }, "cron: armTimer skipped - no jobs with nextRunAtMs");
1058
- return;
1059
- }
1060
- const now = state.deps.nowMs();
1061
- const delay = Math.max(nextAt - now, 0);
1062
- const clampedDelay = Math.min(delay === 0 ? MIN_REFIRE_GAP_MS : delay, MAX_TIMER_DELAY_MS);
1063
- state.timer = setTimeout(() => {
1064
- onTimer(state).catch((err) => {
1065
- state.deps.log.error({ err: String(err) }, "cron: timer tick failed");
1066
- });
1067
- }, clampedDelay);
1068
- state.deps.log.debug({
1069
- nextAt,
1070
- delayMs: clampedDelay,
1071
- clamped: delay > MAX_TIMER_DELAY_MS
1072
- }, "cron: timer armed");
1073
- }
1074
- function armRunningRecheckTimer(state) {
1075
- if (state.timer) clearTimeout(state.timer);
1076
- state.timer = setTimeout(() => {
1077
- onTimer(state).catch((err) => {
1078
- state.deps.log.error({ err: String(err) }, "cron: timer tick failed");
1079
- });
1080
- }, MAX_TIMER_DELAY_MS);
1081
- }
1082
- async function onTimer(state) {
1083
- if (state.running) {
1084
- armRunningRecheckTimer(state);
1085
- return;
1086
- }
1087
- state.running = true;
1088
- armRunningRecheckTimer(state);
1089
- try {
1090
- const dueJobs = await locked(state, async () => {
1091
- await ensureLoaded(state, {
1092
- forceReload: true,
1093
- skipRecompute: true
1094
- });
1095
- const dueCheckNow = state.deps.nowMs();
1096
- const due = collectRunnableJobs(state, dueCheckNow);
1097
- if (due.length === 0) {
1098
- if (recomputeNextRunsForMaintenance(state, {
1099
- recomputeExpired: true,
1100
- nowMs: dueCheckNow
1101
- })) await persist(state);
1102
- return [];
1103
- }
1104
- const now = state.deps.nowMs();
1105
- for (const job of due) {
1106
- job.state.runningAtMs = now;
1107
- job.state.lastError = void 0;
1108
- }
1109
- await persist(state);
1110
- return due.map((j) => ({
1111
- id: j.id,
1112
- job: j
1113
- }));
1114
- });
1115
- const runDueJob = async (params) => {
1116
- const { id, job } = params;
1117
- const startedAt = state.deps.nowMs();
1118
- job.state.runningAtMs = startedAt;
1119
- markCronJobActive(job.id);
1120
- emit(state, {
1121
- jobId: job.id,
1122
- action: "started",
1123
- job,
1124
- runAtMs: startedAt
1125
- });
1126
- const jobTimeoutMs = resolveCronJobTimeoutMs(job);
1127
- const taskRunId = tryCreateCronTaskRun({
1128
- state,
1129
- job,
1130
- startedAt
1131
- });
1132
- try {
1133
- return {
1134
- jobId: id,
1135
- job,
1136
- taskRunId,
1137
- ...await executeJobCoreWithTimeout(state, job),
1138
- startedAt,
1139
- endedAt: state.deps.nowMs()
1140
- };
1141
- } catch (err) {
1142
- const errorText = normalizeCronRunErrorText(err);
1143
- state.deps.log.warn({
1144
- jobId: id,
1145
- jobName: job.name,
1146
- timeoutMs: jobTimeoutMs ?? null
1147
- }, `cron: job failed: ${errorText}`);
1148
- return {
1149
- jobId: id,
1150
- job,
1151
- taskRunId,
1152
- status: "error",
1153
- error: errorText,
1154
- diagnostics: createCronRunDiagnosticsFromError("cron-setup", errorText, { nowMs: state.deps.nowMs }),
1155
- startedAt,
1156
- endedAt: state.deps.nowMs()
1157
- };
1158
- }
1159
- };
1160
- const concurrency = Math.min(resolveRunConcurrency(state), Math.max(1, dueJobs.length));
1161
- const results = Array.from({ length: dueJobs.length });
1162
- let cursor = 0;
1163
- const workers = Array.from({ length: concurrency }, async () => {
1164
- for (;;) {
1165
- const index = cursor++;
1166
- if (index >= dueJobs.length) return;
1167
- const due = dueJobs[index];
1168
- if (!due) return;
1169
- results[index] = await runDueJob(due);
1170
- }
1171
- });
1172
- await Promise.all(workers);
1173
- const completedResults = results.filter((entry) => entry !== void 0);
1174
- if (completedResults.length > 0) await locked(state, async () => {
1175
- await ensureLoaded(state, {
1176
- forceReload: true,
1177
- skipRecompute: true
1178
- });
1179
- for (const result of completedResults) applyOutcomeToStoredJob(state, result);
1180
- recomputeNextRunsForMaintenance(state);
1181
- await persist(state);
1182
- });
1183
- } finally {
1184
- const storePaths = /* @__PURE__ */ new Set();
1185
- if (state.deps.resolveSessionStorePath) {
1186
- const defaultAgentId = state.deps.defaultAgentId ?? "main";
1187
- if (state.store?.jobs?.length) for (const job of state.store.jobs) {
1188
- const agentId = typeof job.agentId === "string" && job.agentId.trim() ? job.agentId : defaultAgentId;
1189
- storePaths.add(state.deps.resolveSessionStorePath(agentId));
1190
- }
1191
- else storePaths.add(state.deps.resolveSessionStorePath(defaultAgentId));
1192
- } else if (state.deps.sessionStorePath) storePaths.add(state.deps.sessionStorePath);
1193
- if (storePaths.size > 0) {
1194
- const nowMs = state.deps.nowMs();
1195
- for (const storePath of storePaths) try {
1196
- await sweepCronRunSessions({
1197
- cronConfig: state.deps.cronConfig,
1198
- sessionStorePath: storePath,
1199
- nowMs,
1200
- log: state.deps.log
1201
- });
1202
- } catch (err) {
1203
- state.deps.log.warn({
1204
- err: String(err),
1205
- storePath
1206
- }, "cron: session reaper sweep failed");
1207
- }
1208
- }
1209
- state.running = false;
1210
- armTimer(state);
1211
- }
1212
- }
1213
- function isRunnableJob(params) {
1214
- const { job, nowMs } = params;
1215
- if (!job.state) job.state = {};
1216
- if (!isJobEnabled(job)) return false;
1217
- if (params.skipJobIds?.has(job.id)) return false;
1218
- if (typeof job.state.runningAtMs === "number") return false;
1219
- if (params.skipAtIfAlreadyRan && job.schedule.kind === "at" && job.state.lastStatus) {
1220
- const lastRun = job.state.lastRunAtMs;
1221
- const nextRun = job.state.nextRunAtMs;
1222
- if (job.state.lastStatus === "error" && isJobEnabled(job) && typeof nextRun === "number" && typeof lastRun === "number" && nextRun > lastRun) return nowMs >= nextRun;
1223
- return false;
1224
- }
1225
- const next = job.state.nextRunAtMs;
1226
- if (hasScheduledNextRunAtMs(next) && nowMs >= next) return true;
1227
- if (hasScheduledNextRunAtMs(next) && next > nowMs && isErrorBackoffPending(job, nowMs)) return false;
1228
- if (!params.allowCronMissedRunByLastRun || job.schedule.kind !== "cron") return false;
1229
- let previousRunAtMs;
1230
- try {
1231
- previousRunAtMs = computeJobPreviousRunAtMs(job, nowMs);
1232
- } catch {
1233
- return false;
1234
- }
1235
- if (typeof previousRunAtMs !== "number" || !Number.isFinite(previousRunAtMs)) return false;
1236
- const lastRunAtMs = job.state.lastRunAtMs;
1237
- if (typeof lastRunAtMs !== "number" || !Number.isFinite(lastRunAtMs)) return false;
1238
- return previousRunAtMs > lastRunAtMs;
1239
- }
1240
- function isErrorBackoffPending(job, nowMs) {
1241
- if (job.schedule.kind === "at" || job.state.lastStatus !== "error") return false;
1242
- const lastRunAtMs = job.state.lastRunAtMs;
1243
- if (typeof lastRunAtMs !== "number" || !Number.isFinite(lastRunAtMs)) return false;
1244
- const consecutiveErrorsRaw = job.state.consecutiveErrors;
1245
- return nowMs < lastRunAtMs + errorBackoffMs(typeof consecutiveErrorsRaw === "number" && Number.isFinite(consecutiveErrorsRaw) ? Math.max(1, Math.floor(consecutiveErrorsRaw)) : 1);
1246
- }
1247
- function collectRunnableJobs(state, nowMs, opts) {
1248
- if (!state.store) return [];
1249
- return state.store.jobs.filter((job) => isRunnableJob({
1250
- job,
1251
- nowMs,
1252
- skipJobIds: opts?.skipJobIds,
1253
- skipAtIfAlreadyRan: opts?.skipAtIfAlreadyRan,
1254
- allowCronMissedRunByLastRun: opts?.allowCronMissedRunByLastRun
1255
- }));
1256
- }
1257
- async function runMissedJobs(state, opts) {
1258
- const plan = await planStartupCatchup(state, opts);
1259
- if (plan.candidates.length === 0 && plan.deferredJobs.length === 0) return;
1260
- await applyStartupCatchupOutcomes(state, plan, await executeStartupCatchupPlan(state, plan));
1261
- }
1262
- async function planStartupCatchup(state, opts) {
1263
- const maxImmediate = Math.max(0, state.deps.maxMissedJobsPerRestart ?? DEFAULT_MAX_MISSED_JOBS_PER_RESTART);
1264
- return locked(state, async () => {
1265
- await ensureLoaded(state, { skipRecompute: true });
1266
- if (!state.store) return {
1267
- candidates: [],
1268
- deferredJobs: []
1269
- };
1270
- const now = state.deps.nowMs();
1271
- const missed = collectRunnableJobs(state, now, {
1272
- skipJobIds: opts?.skipJobIds,
1273
- skipAtIfAlreadyRan: true,
1274
- allowCronMissedRunByLastRun: true
1275
- });
1276
- if (missed.length === 0) return {
1277
- candidates: [],
1278
- deferredJobs: []
1279
- };
1280
- const sorted = missed.toSorted((a, b) => (a.state.nextRunAtMs ?? 0) - (b.state.nextRunAtMs ?? 0));
1281
- const deferredAgentJobs = opts?.deferAgentTurnJobs ? sorted.filter((job) => job.payload.kind === "agentTurn") : [];
1282
- const startupEligible = opts?.deferAgentTurnJobs ? sorted.filter((job) => job.payload.kind !== "agentTurn") : sorted;
1283
- const startupCandidates = startupEligible.slice(0, maxImmediate);
1284
- const deferredOverflow = startupEligible.slice(maxImmediate);
1285
- const deferredAgentDelayMs = Math.max(0, state.deps.startupDeferredMissedAgentJobDelayMs ?? DEFAULT_STARTUP_DEFERRED_MISSED_AGENT_JOB_DELAY_MS);
1286
- const deferred = [...deferredOverflow.map((job) => ({ jobId: job.id })), ...deferredAgentJobs.map((job) => ({
1287
- jobId: job.id,
1288
- delayMs: deferredAgentDelayMs
1289
- }))];
1290
- if (deferred.length > 0) state.deps.log.info({
1291
- immediateCount: startupCandidates.length,
1292
- deferredCount: deferred.length,
1293
- totalMissed: missed.length
1294
- }, "cron: staggering missed jobs to prevent gateway overload");
1295
- if (deferredAgentJobs.length > 0) state.deps.log.info({
1296
- count: deferredAgentJobs.length,
1297
- jobIds: deferredAgentJobs.map((job) => job.id),
1298
- delayMs: deferredAgentDelayMs
1299
- }, "cron: deferring missed agent jobs until after gateway startup");
1300
- if (startupCandidates.length > 0) state.deps.log.info({
1301
- count: startupCandidates.length,
1302
- jobIds: startupCandidates.map((j) => j.id)
1303
- }, "cron: running missed jobs after restart");
1304
- for (const job of startupCandidates) {
1305
- job.state.runningAtMs = now;
1306
- job.state.lastError = void 0;
1307
- }
1308
- await persist(state);
1309
- return {
1310
- candidates: startupCandidates.map((job) => ({
1311
- jobId: job.id,
1312
- job
1313
- })),
1314
- deferredJobs: deferred
1315
- };
1316
- });
1317
- }
1318
- async function executeStartupCatchupPlan(state, plan) {
1319
- const outcomes = [];
1320
- for (const candidate of plan.candidates) outcomes.push(await runStartupCatchupCandidate(state, candidate));
1321
- return outcomes;
1322
- }
1323
- async function runStartupCatchupCandidate(state, candidate) {
1324
- const startedAt = state.deps.nowMs();
1325
- const taskRunId = tryCreateCronTaskRun({
1326
- state,
1327
- job: candidate.job,
1328
- startedAt
1329
- });
1330
- emit(state, {
1331
- jobId: candidate.job.id,
1332
- action: "started",
1333
- job: candidate.job,
1334
- runAtMs: startedAt
1335
- });
1336
- try {
1337
- const result = await executeJobCoreWithTimeout(state, candidate.job);
1338
- return {
1339
- jobId: candidate.jobId,
1340
- job: candidate.job,
1341
- taskRunId,
1342
- status: result.status,
1343
- error: result.error,
1344
- summary: result.summary,
1345
- diagnostics: result.diagnostics,
1346
- delivered: result.delivered,
1347
- sessionId: result.sessionId,
1348
- sessionKey: result.sessionKey,
1349
- model: result.model,
1350
- provider: result.provider,
1351
- usage: result.usage,
1352
- startedAt,
1353
- endedAt: state.deps.nowMs()
1354
- };
1355
- } catch (err) {
1356
- return {
1357
- jobId: candidate.jobId,
1358
- job: candidate.job,
1359
- taskRunId,
1360
- status: "error",
1361
- error: normalizeCronRunErrorText(err),
1362
- diagnostics: createCronRunDiagnosticsFromError("cron-setup", normalizeCronRunErrorText(err), { nowMs: state.deps.nowMs }),
1363
- startedAt,
1364
- endedAt: state.deps.nowMs()
1365
- };
1366
- }
1367
- }
1368
- async function applyStartupCatchupOutcomes(state, plan, outcomes) {
1369
- const staggerMs = Math.max(0, state.deps.missedJobStaggerMs ?? DEFAULT_MISSED_JOB_STAGGER_MS);
1370
- await locked(state, async () => {
1371
- await ensureLoaded(state, { skipRecompute: true });
1372
- if (!state.store) return;
1373
- for (const result of outcomes) applyOutcomeToStoredJob(state, result);
1374
- if (plan.deferredJobs.length > 0) {
1375
- const baseNow = state.deps.nowMs();
1376
- let offset = staggerMs;
1377
- for (const deferred of plan.deferredJobs) {
1378
- const jobId = deferred.jobId;
1379
- const job = state.store.jobs.find((entry) => entry.id === jobId);
1380
- if (!job || !isJobEnabled(job)) continue;
1381
- if (typeof deferred.delayMs === "number") {
1382
- job.state.nextRunAtMs = baseNow + deferred.delayMs + offset - staggerMs;
1383
- offset += staggerMs;
1384
- continue;
1385
- }
1386
- job.state.nextRunAtMs = baseNow + offset;
1387
- offset += staggerMs;
1388
- }
1389
- }
1390
- recomputeNextRunsForMaintenance(state, { repairFutureCronNextRunAtMs: false });
1391
- await persist(state);
1392
- });
1393
- }
1394
- async function executeJobCore(state, job, abortSignal, options) {
1395
- const resolveAbortError = () => ({
1396
- status: "error",
1397
- error: abortErrorMessage(abortSignal)
1398
- });
1399
- const waitWithAbort = async (ms) => {
1400
- if (!abortSignal) {
1401
- await new Promise((resolve) => setTimeout(resolve, ms));
1402
- return;
1403
- }
1404
- if (abortSignal.aborted) return;
1405
- await new Promise((resolve) => {
1406
- const timer = setTimeout(() => {
1407
- abortSignal.removeEventListener("abort", onAbort);
1408
- resolve();
1409
- }, ms);
1410
- const onAbort = () => {
1411
- clearTimeout(timer);
1412
- abortSignal.removeEventListener("abort", onAbort);
1413
- resolve();
1414
- };
1415
- abortSignal.addEventListener("abort", onAbort, { once: true });
1416
- });
1417
- };
1418
- if (abortSignal?.aborted) return resolveAbortError();
1419
- if (job.sessionTarget === "main") return await executeMainSessionCronJob(state, job, abortSignal, waitWithAbort);
1420
- return await executeDetachedCronJob(state, job, abortSignal, resolveAbortError, options);
1421
- }
1422
- async function executeMainSessionCronJob(state, job, abortSignal, waitWithAbort) {
1423
- const text = resolveJobPayloadTextForMain(job);
1424
- if (!text) return {
1425
- status: "skipped",
1426
- error: job.payload.kind === "systemEvent" ? "main job requires non-empty systemEvent text" : "main job requires payload.kind=\"systemEvent\""
1427
- };
1428
- const cronRunSessionKey = resolveMainSessionCronRunSessionKey(job, typeof job.state.runningAtMs === "number" ? job.state.runningAtMs : state.deps.nowMs());
1429
- const deliveryContext = resolveMainSessionCronDeliveryContext(state, job);
1430
- state.deps.enqueueSystemEvent(text, {
1431
- agentId: job.agentId,
1432
- sessionKey: cronRunSessionKey,
1433
- contextKey: `cron:${job.id}`,
1434
- ...deliveryContext ? { deliveryContext } : {}
1435
- });
1436
- if (job.wakeMode === "now" && state.deps.runHeartbeatOnce) {
1437
- const reason = `cron:${job.id}`;
1438
- const maxWaitMs = state.deps.wakeNowHeartbeatBusyMaxWaitMs ?? 2 * 6e4;
1439
- const retryDelayMs = state.deps.wakeNowHeartbeatBusyRetryDelayMs ?? 250;
1440
- const waitStartedAt = state.deps.nowMs();
1441
- let heartbeatResult;
1442
- for (;;) {
1443
- if (abortSignal?.aborted) return {
1444
- status: "error",
1445
- error: timeoutErrorMessage()
1446
- };
1447
- heartbeatResult = await state.deps.runHeartbeatOnce({
1448
- source: "cron",
1449
- intent: "immediate",
1450
- reason,
1451
- agentId: job.agentId,
1452
- sessionKey: cronRunSessionKey,
1453
- heartbeat: { target: "last" }
1454
- });
1455
- if (heartbeatResult.status !== "skipped" || !isRetryableHeartbeatBusySkipReason(heartbeatResult.reason)) break;
1456
- if (heartbeatResult.reason === "cron-in-progress") {
1457
- state.deps.requestHeartbeat({
1458
- source: "cron",
1459
- intent: "immediate",
1460
- reason,
1461
- agentId: job.agentId,
1462
- sessionKey: cronRunSessionKey,
1463
- heartbeat: { target: "last" }
1464
- });
1465
- return {
1466
- status: "ok",
1467
- summary: text,
1468
- sessionKey: cronRunSessionKey
1469
- };
1470
- }
1471
- if (abortSignal?.aborted) return {
1472
- status: "error",
1473
- error: timeoutErrorMessage()
1474
- };
1475
- if (state.deps.nowMs() - waitStartedAt > maxWaitMs) {
1476
- if (abortSignal?.aborted) return {
1477
- status: "error",
1478
- error: timeoutErrorMessage()
1479
- };
1480
- state.deps.requestHeartbeat({
1481
- source: "cron",
1482
- intent: "immediate",
1483
- reason,
1484
- agentId: job.agentId,
1485
- sessionKey: cronRunSessionKey,
1486
- heartbeat: { target: "last" }
1487
- });
1488
- return {
1489
- status: "ok",
1490
- summary: text,
1491
- sessionKey: cronRunSessionKey
1492
- };
1493
- }
1494
- await waitWithAbort(retryDelayMs);
1495
- }
1496
- if (heartbeatResult.status === "ran") return {
1497
- status: "ok",
1498
- summary: text,
1499
- sessionKey: cronRunSessionKey
1500
- };
1501
- if (heartbeatResult.status === "skipped") return {
1502
- status: "skipped",
1503
- error: heartbeatResult.reason,
1504
- summary: text,
1505
- sessionKey: cronRunSessionKey
1506
- };
1507
- return {
1508
- status: "error",
1509
- error: heartbeatResult.reason,
1510
- summary: text,
1511
- sessionKey: cronRunSessionKey
1512
- };
1513
- }
1514
- if (abortSignal?.aborted) return {
1515
- status: "error",
1516
- error: timeoutErrorMessage()
1517
- };
1518
- state.deps.requestHeartbeat({
1519
- source: "cron",
1520
- intent: job.wakeMode === "now" ? "immediate" : "event",
1521
- reason: `cron:${job.id}`,
1522
- agentId: job.agentId,
1523
- sessionKey: cronRunSessionKey,
1524
- heartbeat: { target: "last" }
1525
- });
1526
- return {
1527
- status: "ok",
1528
- summary: text,
1529
- sessionKey: cronRunSessionKey
1530
- };
1531
- }
1532
- async function executeDetachedCronJob(state, job, abortSignal, resolveAbortError, options) {
1533
- if (job.payload.kind !== "agentTurn") {
1534
- const error = "isolated job requires payload.kind=agentTurn";
1535
- return {
1536
- status: "skipped",
1537
- error,
1538
- diagnostics: createCronRunDiagnosticsFromError("cron-preflight", error, {
1539
- severity: "warn",
1540
- nowMs: state.deps.nowMs
1541
- })
1542
- };
1543
- }
1544
- if (abortSignal?.aborted) {
1545
- const aborted = resolveAbortError();
1546
- return {
1547
- ...aborted,
1548
- diagnostics: createCronRunDiagnosticsFromError("cron-setup", aborted.error, { nowMs: state.deps.nowMs })
1549
- };
1550
- }
1551
- const res = await state.deps.runIsolatedAgentJob({
1552
- job,
1553
- message: job.payload.message,
1554
- abortSignal,
1555
- onExecutionStarted: options?.onExecutionStarted,
1556
- onExecutionPhase: options?.onExecutionPhase
1557
- });
1558
- if (abortSignal?.aborted) {
1559
- const error = abortErrorMessage(abortSignal);
1560
- return {
1561
- status: "error",
1562
- error,
1563
- diagnostics: createCronRunDiagnosticsFromError("cron-setup", error, { nowMs: state.deps.nowMs })
1564
- };
1565
- }
1566
- return {
1567
- status: res.status,
1568
- error: res.error,
1569
- summary: res.summary,
1570
- delivered: res.delivered,
1571
- deliveryAttempted: res.deliveryAttempted,
1572
- delivery: res.delivery,
1573
- sessionId: res.sessionId,
1574
- sessionKey: res.sessionKey,
1575
- diagnostics: res.diagnostics,
1576
- model: res.model,
1577
- provider: res.provider,
1578
- usage: res.usage
1579
- };
1580
- }
1581
- function emitJobFinished(state, job, result, runAtMs) {
1582
- emit(state, {
1583
- jobId: job.id,
1584
- action: "finished",
1585
- job,
1586
- status: result.status,
1587
- error: result.error,
1588
- summary: result.summary,
1589
- diagnostics: result.diagnostics,
1590
- delivered: job.state.lastDelivered,
1591
- deliveryStatus: job.state.lastDeliveryStatus,
1592
- deliveryError: job.state.lastDeliveryError,
1593
- failureNotificationDelivery: failureNotificationDeliveryFromJobState(job),
1594
- delivery: result.delivery,
1595
- sessionId: result.sessionId,
1596
- sessionKey: result.sessionKey,
1597
- runAtMs,
1598
- durationMs: job.state.lastDurationMs,
1599
- nextRunAtMs: job.state.nextRunAtMs,
1600
- model: result.model,
1601
- provider: result.provider,
1602
- usage: result.usage
1603
- });
1604
- }
1605
- function wake(state, opts) {
1606
- const text = opts.text.trim();
1607
- if (!text) return { ok: false };
1608
- const sessionKey = opts.sessionKey?.trim() || void 0;
1609
- if (sessionKey && isSubagentSessionKey(sessionKey)) return {
1610
- ok: false,
1611
- reason: "unwakeable-session-key"
1612
- };
1613
- state.deps.enqueueSystemEvent(text, sessionKey ? { sessionKey } : void 0);
1614
- if (opts.mode === "now") state.deps.requestHeartbeat({
1615
- source: "manual",
1616
- intent: "immediate",
1617
- reason: "wake",
1618
- ...sessionKey ? { sessionKey } : {}
1619
- });
1620
- else if (sessionKey) state.deps.requestHeartbeat({
1621
- source: "manual",
1622
- intent: "immediate",
1623
- reason: "wake",
1624
- sessionKey
1625
- });
1626
- return { ok: true };
1627
- }
1628
- function stopTimer(state) {
1629
- if (state.timer) clearTimeout(state.timer);
1630
- state.timer = null;
1631
- }
1632
- function emit(state, evt) {
1633
- try {
1634
- state.deps.onEvent?.(evt);
1635
- } catch {}
1636
- }
1637
- //#endregion
1638
- //#region src/cron/service/ops.ts
1639
- const STARTUP_INTERRUPTED_ERROR = "cron: job interrupted by gateway restart";
1640
- function resolveInterruptedStartupFailureNotificationStatus(params) {
1641
- if (params.job.delivery?.bestEffort === true) return "not-requested";
1642
- if (resolveFailureDestination(params.job, params.state.deps.cronConfig?.failureDestination)) return "unknown";
1643
- const primaryPlan = resolveCronDeliveryPlan(params.job);
1644
- return primaryPlan.mode === "announce" && primaryPlan.requested ? "unknown" : "not-requested";
1645
- }
1646
- function markInterruptedStartupRun(params) {
1647
- const { job, runningAtMs, nowMs } = params;
1648
- const failureNotificationStatus = resolveInterruptedStartupFailureNotificationStatus({
1649
- state: params.state,
1650
- job
1651
- });
1652
- const previousErrors = typeof job.state.consecutiveErrors === "number" && Number.isFinite(job.state.consecutiveErrors) ? Math.max(0, Math.floor(job.state.consecutiveErrors)) : 0;
1653
- params.state.deps.log.warn({
1654
- jobId: job.id,
1655
- runningAtMs
1656
- }, "cron: marking interrupted running job failed on startup");
1657
- job.state.runningAtMs = void 0;
1658
- job.state.lastRunAtMs = runningAtMs;
1659
- job.state.lastRunStatus = "error";
1660
- job.state.lastStatus = "error";
1661
- job.state.lastError = STARTUP_INTERRUPTED_ERROR;
1662
- job.state.lastDurationMs = Math.max(0, nowMs - runningAtMs);
1663
- job.state.consecutiveErrors = previousErrors + 1;
1664
- job.state.lastDelivered = false;
1665
- job.state.lastDeliveryStatus = "unknown";
1666
- job.state.lastDeliveryError = STARTUP_INTERRUPTED_ERROR;
1667
- job.state.lastFailureNotificationDelivered = void 0;
1668
- job.state.lastFailureNotificationDeliveryStatus = failureNotificationStatus;
1669
- job.state.lastFailureNotificationDeliveryError = void 0;
1670
- job.state.nextRunAtMs = void 0;
1671
- job.updatedAtMs = nowMs;
1672
- if (job.schedule.kind === "at") job.enabled = false;
1673
- return {
1674
- jobId: job.id,
1675
- runAtMs: runningAtMs,
1676
- durationMs: job.state.lastDurationMs
1677
- };
1678
- }
1679
- function mergeManualRunSnapshotAfterReload(params) {
1680
- if (!params.state.store) return;
1681
- if (params.removed) {
1682
- params.state.store.jobs = params.state.store.jobs.filter((job) => job.id !== params.jobId);
1683
- return;
1684
- }
1685
- if (!params.snapshot) return;
1686
- const reloaded = params.state.store.jobs.find((job) => job.id === params.jobId);
1687
- if (!reloaded) return;
1688
- reloaded.enabled = params.snapshot.enabled;
1689
- reloaded.updatedAtMs = params.snapshot.updatedAtMs;
1690
- reloaded.state = params.snapshot.state;
1691
- }
1692
- async function ensureLoadedForRead(state) {
1693
- await ensureLoaded(state, { skipRecompute: true });
1694
- if (!state.store) return;
1695
- if (recomputeNextRunsForMaintenance(state)) await persist(state);
1696
- }
1697
- async function start(state) {
1698
- if (!state.deps.cronEnabled) {
1699
- state.deps.log.info({ enabled: false }, "cron: disabled");
1700
- return;
1701
- }
1702
- const interruptedJobIds = /* @__PURE__ */ new Set();
1703
- const interruptedRuns = [];
1704
- let markedAnyInterruptedRun = false;
1705
- await locked(state, async () => {
1706
- await ensureLoaded(state, { skipRecompute: true });
1707
- const jobs = state.store?.jobs ?? [];
1708
- for (const job of jobs) {
1709
- job.state ??= {};
1710
- if (typeof job.state.runningAtMs === "number") {
1711
- const nowMs = state.deps.nowMs();
1712
- const interrupted = markInterruptedStartupRun({
1713
- state,
1714
- job,
1715
- runningAtMs: job.state.runningAtMs,
1716
- nowMs
1717
- });
1718
- interruptedJobIds.add(job.id);
1719
- interruptedRuns.push(interrupted);
1720
- markedAnyInterruptedRun = true;
1721
- }
1722
- }
1723
- if (markedAnyInterruptedRun || jobs.length > 0) await persist(state, markedAnyInterruptedRun ? void 0 : { stateOnly: true });
1724
- });
1725
- await runMissedJobs(state, {
1726
- skipJobIds: interruptedJobIds.size > 0 ? interruptedJobIds : void 0,
1727
- deferAgentTurnJobs: true
1728
- });
1729
- await locked(state, async () => {
1730
- await ensureLoaded(state, { skipRecompute: true });
1731
- if (recomputeNextRunsForMaintenance(state, { recomputeExpired: true })) await persist(state);
1732
- for (const interrupted of interruptedRuns) {
1733
- const job = state.store?.jobs.find((entry) => entry.id === interrupted.jobId);
1734
- emit(state, {
1735
- jobId: interrupted.jobId,
1736
- action: "finished",
1737
- job,
1738
- status: "error",
1739
- error: STARTUP_INTERRUPTED_ERROR,
1740
- delivered: false,
1741
- deliveryStatus: "unknown",
1742
- deliveryError: STARTUP_INTERRUPTED_ERROR,
1743
- failureNotificationDelivery: job ? failureNotificationDeliveryFromJobState(job) : void 0,
1744
- runAtMs: interrupted.runAtMs,
1745
- durationMs: interrupted.durationMs,
1746
- nextRunAtMs: job?.state.nextRunAtMs
1747
- });
1748
- }
1749
- armTimer(state);
1750
- state.deps.log.info({
1751
- enabled: true,
1752
- jobs: state.store?.jobs.length ?? 0,
1753
- nextWakeAtMs: nextWakeAtMs(state) ?? null
1754
- }, "cron: started");
1755
- });
1756
- }
1757
- function stop(state) {
1758
- stopTimer(state);
1759
- }
1760
- async function status(state) {
1761
- return await locked(state, async () => {
1762
- await ensureLoadedForRead(state);
1763
- return {
1764
- enabled: state.deps.cronEnabled,
1765
- storePath: state.deps.storePath,
1766
- jobs: state.store?.jobs.length ?? 0,
1767
- nextWakeAtMs: state.deps.cronEnabled ? nextWakeAtMs(state) ?? null : null
1768
- };
1769
- });
1770
- }
1771
- async function list(state, opts) {
1772
- return await locked(state, async () => {
1773
- await ensureLoadedForRead(state);
1774
- const includeDisabled = opts?.includeDisabled === true;
1775
- return (state.store?.jobs ?? []).filter((j) => includeDisabled || isJobEnabled(j)).toSorted((a, b) => (a.state.nextRunAtMs ?? 0) - (b.state.nextRunAtMs ?? 0));
1776
- });
1777
- }
1778
- async function readJob(state, id) {
1779
- return await locked(state, async () => {
1780
- await ensureLoadedForRead(state);
1781
- return state.store?.jobs.find((job) => job.id === id);
1782
- });
1783
- }
1784
- function resolveEnabledFilter(opts) {
1785
- if (opts?.enabled === "all" || opts?.enabled === "enabled" || opts?.enabled === "disabled") return opts.enabled;
1786
- return opts?.includeDisabled ? "all" : "enabled";
1787
- }
1788
- function sortJobs(jobs, sortBy, sortDir) {
1789
- const dir = sortDir === "desc" ? -1 : 1;
1790
- return jobs.toSorted((a, b) => {
1791
- let cmp = 0;
1792
- if (sortBy === "name") {
1793
- const aName = typeof a.name === "string" ? a.name : "";
1794
- const bName = typeof b.name === "string" ? b.name : "";
1795
- cmp = aName.localeCompare(bName, void 0, { sensitivity: "base" });
1796
- } else if (sortBy === "updatedAtMs") cmp = a.updatedAtMs - b.updatedAtMs;
1797
- else {
1798
- const aNext = a.state.nextRunAtMs;
1799
- const bNext = b.state.nextRunAtMs;
1800
- if (typeof aNext === "number" && typeof bNext === "number") cmp = aNext - bNext;
1801
- else if (typeof aNext === "number") cmp = -1;
1802
- else if (typeof bNext === "number") cmp = 1;
1803
- else cmp = 0;
1804
- }
1805
- if (cmp !== 0) return cmp * dir;
1806
- const aId = typeof a.id === "string" ? a.id : "";
1807
- const bId = typeof b.id === "string" ? b.id : "";
1808
- return aId.localeCompare(bId);
1809
- });
1810
- }
1811
- function resolveEffectiveJobAgentId(job, defaultAgentId) {
1812
- return normalizeOptionalAgentId(job.agentId) ?? normalizeOptionalAgentId(defaultAgentId) ?? "main";
1813
- }
1814
- async function listPage(state, opts) {
1815
- return await locked(state, async () => {
1816
- await ensureLoadedForRead(state);
1817
- const query = normalizeLowercaseStringOrEmpty(opts?.query);
1818
- const enabledFilter = resolveEnabledFilter(opts);
1819
- const sortBy = opts?.sortBy ?? "nextRunAtMs";
1820
- const sortDir = opts?.sortDir ?? "asc";
1821
- const requestedAgentId = normalizeOptionalAgentId(opts?.agentId);
1822
- const sorted = sortJobs((state.store?.jobs ?? []).filter((job) => {
1823
- if (enabledFilter === "enabled" && !isJobEnabled(job)) return false;
1824
- if (enabledFilter === "disabled" && isJobEnabled(job)) return false;
1825
- if (requestedAgentId && resolveEffectiveJobAgentId(job, state.deps.defaultAgentId) !== requestedAgentId) return false;
1826
- if (!query) return true;
1827
- return normalizeLowercaseStringOrEmpty([
1828
- job.name,
1829
- job.description ?? "",
1830
- job.agentId ?? ""
1831
- ].join(" ")).includes(query);
1832
- }), sortBy, sortDir);
1833
- const total = sorted.length;
1834
- const offset = Math.max(0, Math.min(total, Math.floor(opts?.offset ?? 0)));
1835
- const defaultLimit = total === 0 ? 50 : total;
1836
- const limit = Math.max(1, Math.min(200, Math.floor(opts?.limit ?? defaultLimit)));
1837
- const jobs = sorted.slice(offset, offset + limit);
1838
- const nextOffset = offset + jobs.length;
1839
- return {
1840
- jobs,
1841
- total,
1842
- offset,
1843
- limit,
1844
- hasMore: nextOffset < total,
1845
- nextOffset: nextOffset < total ? nextOffset : null
1846
- };
1847
- });
1848
- }
1849
- async function add(state, input) {
1850
- return await locked(state, async () => {
1851
- warnIfDisabled(state, "add");
1852
- await ensureLoaded(state);
1853
- const job = createJob(state, input);
1854
- state.store?.jobs.push(job);
1855
- recomputeNextRuns(state);
1856
- await persist(state);
1857
- armTimer(state);
1858
- state.deps.log.info({
1859
- jobId: job.id,
1860
- jobName: job.name,
1861
- nextRunAtMs: job.state.nextRunAtMs,
1862
- schedulerNextWakeAtMs: nextWakeAtMs(state) ?? null,
1863
- timerArmed: state.timer !== null,
1864
- cronEnabled: state.deps.cronEnabled
1865
- }, "cron: job added");
1866
- emit(state, {
1867
- jobId: job.id,
1868
- action: "added",
1869
- job,
1870
- nextRunAtMs: job.state.nextRunAtMs
1871
- });
1872
- return job;
1873
- });
1874
- }
1875
- async function update(state, id, patch) {
1876
- return await locked(state, async () => {
1877
- warnIfDisabled(state, "update");
1878
- await ensureLoaded(state, { skipRecompute: true });
1879
- const job = findJobOrThrow(state, id);
1880
- const now = state.deps.nowMs();
1881
- const nextJob = structuredClone(job);
1882
- applyJobPatch(nextJob, patch, { defaultAgentId: state.deps.defaultAgentId });
1883
- if (nextJob.schedule.kind === "every") {
1884
- const anchor = nextJob.schedule.anchorMs;
1885
- if (typeof anchor !== "number" || !Number.isFinite(anchor)) {
1886
- const fallbackAnchorMs = patch.schedule?.kind === "every" ? now : typeof nextJob.createdAtMs === "number" && Number.isFinite(nextJob.createdAtMs) ? nextJob.createdAtMs : now;
1887
- nextJob.schedule = {
1888
- ...nextJob.schedule,
1889
- anchorMs: Math.max(0, Math.floor(fallbackAnchorMs))
1890
- };
1891
- }
1892
- }
1893
- const scheduleChanged = patch.schedule !== void 0;
1894
- const enabledChanged = patch.enabled !== void 0;
1895
- if (scheduleChanged && nextJob.schedule.kind === "cron" && !isJobEnabled(nextJob)) computeJobNextRunAtMs({
1896
- ...nextJob,
1897
- enabled: true
1898
- }, now);
1899
- nextJob.updatedAtMs = now;
1900
- if (scheduleChanged || enabledChanged) if (isJobEnabled(nextJob)) nextJob.state.nextRunAtMs = computeJobNextRunAtMs(nextJob, now);
1901
- else {
1902
- nextJob.state.nextRunAtMs = void 0;
1903
- nextJob.state.runningAtMs = void 0;
1904
- }
1905
- else if (isJobEnabled(nextJob) && !hasScheduledNextRunAtMs(nextJob.state.nextRunAtMs)) nextJob.state.nextRunAtMs = computeJobNextRunAtMs(nextJob, now);
1906
- if (state.store) {
1907
- const index = state.store.jobs.findIndex((entry) => entry.id === id);
1908
- if (index >= 0) state.store.jobs[index] = nextJob;
1909
- }
1910
- await persist(state);
1911
- armTimer(state);
1912
- emit(state, {
1913
- jobId: id,
1914
- action: "updated",
1915
- job: nextJob,
1916
- nextRunAtMs: nextJob.state.nextRunAtMs
1917
- });
1918
- return nextJob;
1919
- });
1920
- }
1921
- async function remove(state, id) {
1922
- return await locked(state, async () => {
1923
- warnIfDisabled(state, "remove");
1924
- await ensureLoaded(state);
1925
- const before = state.store?.jobs.length ?? 0;
1926
- if (!state.store) return {
1927
- ok: false,
1928
- removed: false
1929
- };
1930
- const removedJob = state.store.jobs.find((j) => j.id === id);
1931
- state.store.jobs = state.store.jobs.filter((j) => j.id !== id);
1932
- const removed = (state.store.jobs.length ?? 0) !== before;
1933
- await persist(state);
1934
- armTimer(state);
1935
- if (removed) emit(state, {
1936
- jobId: id,
1937
- action: "removed",
1938
- job: removedJob
1939
- });
1940
- return {
1941
- ok: true,
1942
- removed
1943
- };
1944
- });
1945
- }
1946
- let nextManualRunId = 1;
1947
- async function skipInvalidPersistedManualRun(params) {
1948
- const endedAt = params.state.deps.nowMs();
1949
- const errorText = normalizeCronRunErrorText(params.error);
1950
- const diagnostics = createCronRunDiagnosticsFromError("cron-preflight", errorText, {
1951
- severity: "warn",
1952
- nowMs: params.state.deps.nowMs
1953
- });
1954
- const shouldDelete = applyJobResult(params.state, params.job, {
1955
- status: "skipped",
1956
- error: errorText,
1957
- diagnostics,
1958
- startedAt: endedAt,
1959
- endedAt
1960
- }, { preserveSchedule: params.mode === "force" });
1961
- emit(params.state, {
1962
- jobId: params.job.id,
1963
- action: "finished",
1964
- status: "skipped",
1965
- error: errorText,
1966
- diagnostics,
1967
- runAtMs: endedAt,
1968
- durationMs: params.job.state.lastDurationMs,
1969
- nextRunAtMs: params.job.state.nextRunAtMs,
1970
- deliveryStatus: params.job.state.lastDeliveryStatus,
1971
- deliveryError: params.job.state.lastDeliveryError,
1972
- failureNotificationDelivery: failureNotificationDeliveryFromJobState(params.job)
1973
- });
1974
- if (shouldDelete && params.state.store) {
1975
- params.state.store.jobs = params.state.store.jobs.filter((entry) => entry.id !== params.job.id);
1976
- emit(params.state, {
1977
- jobId: params.job.id,
1978
- action: "removed"
1979
- });
1980
- }
1981
- recomputeNextRunsForMaintenance(params.state, { recomputeExpired: true });
1982
- await persist(params.state);
1983
- armTimer(params.state);
1984
- }
1985
- function tryCreateManualTaskRun(params) {
1986
- const runId = createCronExecutionId(params.job.id, params.startedAt);
1987
- try {
1988
- createRunningTaskRun({
1989
- runtime: "cron",
1990
- sourceId: params.job.id,
1991
- ownerKey: "",
1992
- scopeKind: "system",
1993
- childSessionKey: params.job.sessionKey,
1994
- agentId: params.job.agentId,
1995
- runId,
1996
- label: params.job.name,
1997
- task: params.job.name || params.job.id,
1998
- deliveryStatus: "not_applicable",
1999
- notifyPolicy: "silent",
2000
- startedAt: params.startedAt,
2001
- lastEventAt: params.startedAt
2002
- });
2003
- return runId;
2004
- } catch (error) {
2005
- params.state.deps.log.warn({
2006
- jobId: params.job.id,
2007
- error
2008
- }, "cron: failed to create task ledger record");
2009
- return;
2010
- }
2011
- }
2012
- function tryFinishManualTaskRun(state, params) {
2013
- if (!params.taskRunId) return;
2014
- try {
2015
- if (params.coreResult.status === "ok" || params.coreResult.status === "skipped") {
2016
- completeTaskRunByRunId({
2017
- runId: params.taskRunId,
2018
- runtime: "cron",
2019
- endedAt: params.endedAt,
2020
- lastEventAt: params.endedAt,
2021
- terminalSummary: params.coreResult.summary ?? void 0
2022
- });
2023
- return;
2024
- }
2025
- failTaskRunByRunId({
2026
- runId: params.taskRunId,
2027
- runtime: "cron",
2028
- status: normalizeCronRunErrorText(params.coreResult.error) === "cron: job execution timed out" ? "timed_out" : "failed",
2029
- endedAt: params.endedAt,
2030
- lastEventAt: params.endedAt,
2031
- error: params.coreResult.status === "error" ? normalizeCronRunErrorText(params.coreResult.error) : void 0,
2032
- terminalSummary: params.coreResult.summary ?? void 0
2033
- });
2034
- } catch (error) {
2035
- state.deps.log.warn({
2036
- runId: params.taskRunId,
2037
- jobStatus: params.coreResult.status,
2038
- error
2039
- }, "cron: failed to update task ledger record");
2040
- }
2041
- }
2042
- async function inspectManualRunPreflight(state, id, mode) {
2043
- return await locked(state, async () => {
2044
- warnIfDisabled(state, "run");
2045
- await ensureLoaded(state, { skipRecompute: true });
2046
- recomputeNextRunsForMaintenance(state);
2047
- const job = findJobOrThrow(state, id);
2048
- try {
2049
- assertSupportedJobSpec(job);
2050
- } catch (error) {
2051
- await skipInvalidPersistedManualRun({
2052
- state,
2053
- job,
2054
- mode,
2055
- error
2056
- });
2057
- return {
2058
- ok: true,
2059
- ran: false,
2060
- reason: "invalid-spec"
2061
- };
2062
- }
2063
- if (typeof job.state.runningAtMs === "number") return {
2064
- ok: true,
2065
- ran: false,
2066
- reason: "already-running"
2067
- };
2068
- const now = state.deps.nowMs();
2069
- if (!isJobDue(job, now, { forced: mode === "force" })) return {
2070
- ok: true,
2071
- ran: false,
2072
- reason: "not-due"
2073
- };
2074
- return {
2075
- ok: true,
2076
- runnable: true,
2077
- job,
2078
- now
2079
- };
2080
- });
2081
- }
2082
- async function inspectManualRunDisposition(state, id, mode) {
2083
- const result = await inspectManualRunPreflight(state, id, mode);
2084
- if (!result.ok) return result;
2085
- if ("reason" in result) return result;
2086
- return {
2087
- ok: true,
2088
- runnable: true
2089
- };
2090
- }
2091
- async function prepareManualRun(state, id, mode, opts) {
2092
- const preflight = await inspectManualRunPreflight(state, id, mode);
2093
- if (!preflight.ok) return preflight;
2094
- if ("reason" in preflight) return {
2095
- ok: true,
2096
- ran: false,
2097
- reason: preflight.reason
2098
- };
2099
- return await locked(state, async () => {
2100
- const job = findJobOrThrow(state, id);
2101
- if (typeof job.state.runningAtMs === "number") return {
2102
- ok: true,
2103
- ran: false,
2104
- reason: "already-running"
2105
- };
2106
- job.state.runningAtMs = preflight.now;
2107
- job.state.lastError = void 0;
2108
- await persist(state);
2109
- emit(state, {
2110
- jobId: job.id,
2111
- action: "started",
2112
- job,
2113
- runAtMs: preflight.now
2114
- });
2115
- const taskRunId = tryCreateManualTaskRun({
2116
- state,
2117
- job,
2118
- startedAt: preflight.now
2119
- });
2120
- markCronJobActive(job.id);
2121
- const executionJob = structuredClone(job);
2122
- return {
2123
- ok: true,
2124
- ran: true,
2125
- jobId: job.id,
2126
- runId: opts?.runId ?? taskRunId,
2127
- taskRunId,
2128
- startedAt: preflight.now,
2129
- executionJob
2130
- };
2131
- });
2132
- }
2133
- async function finishPreparedManualRun(state, prepared, mode) {
2134
- const executionJob = prepared.executionJob;
2135
- const startedAt = prepared.startedAt;
2136
- const jobId = prepared.jobId;
2137
- const taskRunId = prepared.taskRunId;
2138
- const runId = prepared.runId;
2139
- try {
2140
- let coreResult;
2141
- try {
2142
- coreResult = await executeJobCoreWithTimeout(state, executionJob);
2143
- } catch (err) {
2144
- coreResult = {
2145
- status: "error",
2146
- error: normalizeCronRunErrorText(err)
2147
- };
2148
- }
2149
- const endedAt = state.deps.nowMs();
2150
- tryFinishManualTaskRun(state, {
2151
- taskRunId,
2152
- coreResult,
2153
- endedAt
2154
- });
2155
- await locked(state, async () => {
2156
- await ensureLoaded(state, { skipRecompute: true });
2157
- const job = state.store?.jobs.find((entry) => entry.id === jobId);
2158
- if (!job) return;
2159
- const shouldDelete = applyJobResult(state, job, {
2160
- status: coreResult.status,
2161
- error: coreResult.error,
2162
- diagnostics: coreResult.diagnostics,
2163
- delivered: coreResult.delivered,
2164
- startedAt,
2165
- endedAt
2166
- }, { preserveSchedule: mode === "force" });
2167
- emit(state, {
2168
- jobId: job.id,
2169
- action: "finished",
2170
- job,
2171
- status: coreResult.status,
2172
- error: coreResult.error,
2173
- summary: coreResult.summary,
2174
- diagnostics: coreResult.diagnostics,
2175
- delivered: job.state.lastDelivered,
2176
- deliveryStatus: job.state.lastDeliveryStatus,
2177
- deliveryError: job.state.lastDeliveryError,
2178
- failureNotificationDelivery: failureNotificationDeliveryFromJobState(job),
2179
- delivery: coreResult.delivery,
2180
- sessionId: coreResult.sessionId,
2181
- sessionKey: coreResult.sessionKey,
2182
- runId,
2183
- runAtMs: startedAt,
2184
- durationMs: job.state.lastDurationMs,
2185
- nextRunAtMs: job.state.nextRunAtMs,
2186
- model: coreResult.model,
2187
- provider: coreResult.provider,
2188
- usage: coreResult.usage
2189
- });
2190
- if (shouldDelete && state.store) {
2191
- state.store.jobs = state.store.jobs.filter((entry) => entry.id !== job.id);
2192
- emit(state, {
2193
- jobId: job.id,
2194
- action: "removed",
2195
- job
2196
- });
2197
- }
2198
- const postRunSnapshot = shouldDelete ? null : {
2199
- enabled: job.enabled,
2200
- updatedAtMs: job.updatedAtMs,
2201
- state: structuredClone(job.state)
2202
- };
2203
- const postRunRemoved = shouldDelete;
2204
- await ensureLoaded(state, {
2205
- forceReload: true,
2206
- skipRecompute: true
2207
- });
2208
- mergeManualRunSnapshotAfterReload({
2209
- state,
2210
- jobId,
2211
- snapshot: postRunSnapshot,
2212
- removed: postRunRemoved
2213
- });
2214
- recomputeNextRunsForMaintenance(state, { recomputeExpired: true });
2215
- await persist(state);
2216
- armTimer(state);
2217
- });
2218
- } finally {
2219
- clearCronJobActive(jobId);
2220
- }
2221
- }
2222
- async function run(state, id, mode, opts) {
2223
- const prepared = await prepareManualRun(state, id, mode, opts);
2224
- if (!prepared.ok || !prepared.ran) return prepared;
2225
- await finishPreparedManualRun(state, prepared, mode);
2226
- return {
2227
- ok: true,
2228
- ran: true
2229
- };
2230
- }
2231
- async function enqueueRun(state, id, mode) {
2232
- const disposition = await inspectManualRunDisposition(state, id, mode);
2233
- if (!disposition.ok || !("runnable" in disposition && disposition.runnable)) return disposition;
2234
- const runId = `manual:${id}:${state.deps.nowMs()}:${nextManualRunId++}`;
2235
- enqueueCommandInLane("cron", async () => {
2236
- const result = await run(state, id, mode, { runId });
2237
- if (result.ok && "ran" in result && !result.ran) state.deps.log.info({
2238
- jobId: id,
2239
- runId,
2240
- reason: result.reason
2241
- }, "cron: queued manual run skipped before execution");
2242
- return result;
2243
- }, {
2244
- warnAfterMs: 5e3,
2245
- onWait: (waitMs, queuedAhead) => {
2246
- state.deps.log.warn({
2247
- jobId: id,
2248
- runId,
2249
- waitMs,
2250
- queuedAhead
2251
- }, "cron: queued manual run waiting for an execution slot");
2252
- }
2253
- }).catch((err) => {
2254
- state.deps.log.error({
2255
- jobId: id,
2256
- runId,
2257
- err: String(err)
2258
- }, "cron: queued manual run background execution failed");
2259
- });
2260
- return {
2261
- ok: true,
2262
- enqueued: true,
2263
- runId
2264
- };
2265
- }
2266
- function wakeNow(state, opts) {
2267
- return wake(state, opts);
2268
- }
2269
- //#endregion
2270
- //#region src/cron/service/state.ts
2271
- function createCronServiceState(deps) {
2272
- return {
2273
- deps: {
2274
- ...deps,
2275
- nowMs: deps.nowMs ?? (() => Date.now())
2276
- },
2277
- store: null,
2278
- timer: null,
2279
- running: false,
2280
- op: Promise.resolve(),
2281
- warnedDisabled: false,
2282
- warnedMissingSessionTargetJobIds: /* @__PURE__ */ new Set(),
2283
- warnedInvalidPersistedJobKeys: /* @__PURE__ */ new Set(),
2284
- storeLoadedAtMs: null,
2285
- storeFileMtimeMs: null
2286
- };
2287
- }
2288
- //#endregion
2289
- //#region src/cron/service.ts
2290
- var CronService = class {
2291
- constructor(deps) {
2292
- this.state = createCronServiceState(deps);
2293
- }
2294
- async start() {
2295
- await start(this.state);
2296
- }
2297
- stop() {
2298
- stop(this.state);
2299
- }
2300
- async status() {
2301
- return await status(this.state);
2302
- }
2303
- async list(opts) {
2304
- return await list(this.state, opts);
2305
- }
2306
- async listPage(opts) {
2307
- return await listPage(this.state, opts);
2308
- }
2309
- async add(input) {
2310
- return await add(this.state, input);
2311
- }
2312
- async update(id, patch) {
2313
- return await update(this.state, id, patch);
2314
- }
2315
- async remove(id) {
2316
- return await remove(this.state, id);
2317
- }
2318
- async run(id, mode) {
2319
- return await run(this.state, id, mode);
2320
- }
2321
- async enqueueRun(id, mode) {
2322
- const result = await enqueueRun(this.state, id, mode);
2323
- if (result.ok && "runnable" in result) throw new Error("cron enqueueRun returned unresolved runnable disposition");
2324
- return result;
2325
- }
2326
- getJob(id) {
2327
- return this.state.store?.jobs.find((job) => job.id === id);
2328
- }
2329
- async readJob(id) {
2330
- return await readJob(this.state, id);
2331
- }
2332
- getDefaultAgentId() {
2333
- return this.state.deps.defaultAgentId;
2334
- }
2335
- wake(opts) {
2336
- return wakeNow(this.state, opts);
2337
- }
2338
- };
2339
- //#endregion
2340
- //#region src/cron/delivery.ts
2341
- const FAILURE_NOTIFICATION_TIMEOUT_MS = 3e4;
2342
- const cronDeliveryLogger = getChildLogger({ subsystem: "cron-delivery" });
2343
- async function resolveCronAnnounceDelivery(params) {
2344
- const resolvedTarget = await resolveDeliveryTarget(params.cfg, params.agentId, {
2345
- channel: params.target.channel,
2346
- to: params.target.to,
2347
- accountId: params.target.accountId,
2348
- sessionKey: params.target.sessionKey
2349
- });
2350
- if (!resolvedTarget.ok) return {
2351
- ok: false,
2352
- error: resolvedTarget.error
2353
- };
2354
- const identity = resolveAgentOutboundIdentity(params.cfg, params.agentId);
2355
- return {
2356
- ok: true,
2357
- resolvedTarget,
2358
- session: buildOutboundSessionContext({
2359
- cfg: params.cfg,
2360
- agentId: params.agentId,
2361
- sessionKey: resolveCronNotificationSessionKey({
2362
- jobId: params.jobId,
2363
- sessionKey: params.target.sessionKey
2364
- })
2365
- }),
2366
- identity
2367
- };
2368
- }
2369
- async function deliverCronAnnouncePayload(params) {
2370
- const send = await sendDurableMessageBatch({
2371
- cfg: params.cfg,
2372
- channel: params.delivery.resolvedTarget.channel,
2373
- to: params.delivery.resolvedTarget.to,
2374
- accountId: params.delivery.resolvedTarget.accountId,
2375
- threadId: params.delivery.resolvedTarget.threadId,
2376
- payloads: [{ text: params.message }],
2377
- session: params.delivery.session,
2378
- identity: params.delivery.identity,
2379
- bestEffort: false,
2380
- deps: createOutboundSendDeps(params.deps),
2381
- signal: params.abortSignal
2382
- });
2383
- if (send.status === "failed" || send.status === "partial_failed") throw send.error;
2384
- }
2385
- async function sendCronAnnouncePayloadStrict(params) {
2386
- const delivery = await resolveCronAnnounceDelivery(params);
2387
- if (!delivery.ok) throw delivery.error;
2388
- await deliverCronAnnouncePayload({
2389
- deps: params.deps,
2390
- cfg: params.cfg,
2391
- delivery,
2392
- message: params.message,
2393
- abortSignal: params.abortSignal
2394
- });
2395
- }
2396
- async function sendFailureNotificationAnnounce(deps, cfg, agentId, jobId, target, message) {
2397
- const delivery = await resolveCronAnnounceDelivery({
2398
- cfg,
2399
- agentId,
2400
- jobId,
2401
- target
2402
- });
2403
- if (!delivery.ok) {
2404
- cronDeliveryLogger.warn({ error: delivery.error.message }, "cron: failed to resolve failure destination target");
2405
- return;
2406
- }
2407
- const abortController = new AbortController();
2408
- const timeout = setTimeout(() => {
2409
- abortController.abort();
2410
- }, FAILURE_NOTIFICATION_TIMEOUT_MS);
2411
- try {
2412
- await deliverCronAnnouncePayload({
2413
- deps,
2414
- cfg,
2415
- delivery,
2416
- message,
2417
- abortSignal: abortController.signal
2418
- });
2419
- } catch (err) {
2420
- cronDeliveryLogger.warn({
2421
- err: formatErrorMessage(err),
2422
- channel: delivery.resolvedTarget.channel,
2423
- to: delivery.resolvedTarget.to
2424
- }, "cron: failure destination announce failed");
2425
- } finally {
2426
- clearTimeout(timeout);
2427
- }
2428
- }
2429
- //#endregion
2430
- //#region src/gateway/server-cron-notifications.ts
2431
- const CRON_WEBHOOK_TIMEOUT_MS = 1e4;
2432
- function redactWebhookUrl(url) {
2433
- try {
2434
- const parsed = new URL(url);
2435
- return `${parsed.origin}${parsed.pathname}`;
2436
- } catch {
2437
- return "<invalid-webhook-url>";
2438
- }
2439
- }
2440
- function resolveCronWebhookTarget(params) {
2441
- if (normalizeOptionalLowercaseString(params.delivery?.mode) === "webhook") {
2442
- const url = normalizeHttpWebhookUrl(params.delivery?.to);
2443
- return url ? {
2444
- url,
2445
- source: "delivery"
2446
- } : null;
2447
- }
2448
- if (params.legacyNotify) {
2449
- const legacyUrl = normalizeHttpWebhookUrl(params.legacyWebhook);
2450
- if (legacyUrl) return {
2451
- url: legacyUrl,
2452
- source: "legacy"
2453
- };
2454
- }
2455
- return null;
2456
- }
2457
- function buildCronWebhookHeaders(webhookToken) {
2458
- const headers = { "Content-Type": "application/json" };
2459
- if (webhookToken) headers.Authorization = `Bearer ${webhookToken}`;
2460
- return headers;
2461
- }
2462
- async function postCronWebhook(params) {
2463
- const abortController = new AbortController();
2464
- const timeout = setTimeout(() => {
2465
- abortController.abort();
2466
- }, CRON_WEBHOOK_TIMEOUT_MS);
2467
- try {
2468
- await (await fetchWithSsrFGuard({
2469
- url: params.webhookUrl,
2470
- init: {
2471
- method: "POST",
2472
- headers: buildCronWebhookHeaders(params.webhookToken),
2473
- body: JSON.stringify(params.payload),
2474
- signal: abortController.signal
2475
- }
2476
- })).release();
2477
- } catch (err) {
2478
- if (err instanceof SsrFBlockedError) params.logger.warn({
2479
- ...params.logContext,
2480
- reason: formatErrorMessage(err),
2481
- webhookUrl: redactWebhookUrl(params.webhookUrl)
2482
- }, params.blockedLog);
2483
- else params.logger.warn({
2484
- ...params.logContext,
2485
- err: formatErrorMessage(err),
2486
- webhookUrl: redactWebhookUrl(params.webhookUrl)
2487
- }, params.failedLog);
2488
- } finally {
2489
- clearTimeout(timeout);
2490
- }
2491
- }
2492
- async function sendGatewayCronFailureAlert(params) {
2493
- const { agentId, cfg: runtimeConfig } = params.resolveCronAgent(params.job.agentId);
2494
- const webhookToken = normalizeOptionalString(params.webhookToken);
2495
- if (params.mode === "webhook" && !params.to) {
2496
- params.logger.warn({ jobId: params.job.id }, "cron: failure alert webhook mode requires URL, skipping");
2497
- return;
2498
- }
2499
- if (params.mode === "webhook" && params.to) {
2500
- const webhookUrl = normalizeHttpWebhookUrl(params.to);
2501
- if (webhookUrl) await postCronWebhook({
2502
- webhookUrl,
2503
- webhookToken,
2504
- payload: {
2505
- jobId: params.job.id,
2506
- jobName: params.job.name,
2507
- message: params.text
2508
- },
2509
- logContext: { jobId: params.job.id },
2510
- blockedLog: "cron: failure alert webhook blocked by SSRF guard",
2511
- failedLog: "cron: failure alert webhook failed",
2512
- logger: params.logger
2513
- });
2514
- else params.logger.warn({
2515
- jobId: params.job.id,
2516
- webhookUrl: redactWebhookUrl(params.to)
2517
- }, "cron: failure alert webhook URL is invalid, skipping");
2518
- return;
2519
- }
2520
- const abortController = new AbortController();
2521
- await sendCronAnnouncePayloadStrict({
2522
- deps: params.deps,
2523
- cfg: runtimeConfig,
2524
- agentId,
2525
- jobId: params.job.id,
2526
- target: {
2527
- channel: params.channel,
2528
- to: params.to,
2529
- accountId: params.accountId,
2530
- sessionKey: resolveCronDeliverySessionKey(params.job)
2531
- },
2532
- message: params.text,
2533
- abortSignal: abortController.signal
2534
- });
2535
- }
2536
- function dispatchGatewayCronFinishedNotifications(params) {
2537
- const webhookToken = normalizeOptionalString(params.webhookToken);
2538
- const legacyWebhook = normalizeOptionalString(params.legacyWebhook);
2539
- const legacyNotify = params.job?.notify === true;
2540
- const webhookTarget = resolveCronWebhookTarget({
2541
- delivery: params.job?.delivery && typeof params.job.delivery.mode === "string" ? {
2542
- mode: params.job.delivery.mode,
2543
- to: params.job.delivery.to
2544
- } : void 0,
2545
- legacyNotify,
2546
- legacyWebhook
2547
- });
2548
- if (!webhookTarget && params.job?.delivery?.mode === "webhook") params.logger.warn({
2549
- jobId: params.evt.jobId,
2550
- deliveryTo: params.job.delivery.to
2551
- }, "cron: skipped webhook delivery, delivery.to must be a valid http(s) URL");
2552
- if (webhookTarget?.source === "legacy" && !params.warnedLegacyWebhookJobs.has(params.evt.jobId)) {
2553
- params.warnedLegacyWebhookJobs.add(params.evt.jobId);
2554
- params.logger.warn({
2555
- jobId: params.evt.jobId,
2556
- legacyWebhook: redactWebhookUrl(webhookTarget.url)
2557
- }, "cron: deprecated notify+cron.webhook fallback in use, migrate to delivery.mode=webhook with delivery.to");
2558
- }
2559
- if (webhookTarget && params.evt.summary) (async () => {
2560
- await postCronWebhook({
2561
- webhookUrl: webhookTarget.url,
2562
- webhookToken,
2563
- payload: params.evt,
2564
- logContext: { jobId: params.evt.jobId },
2565
- blockedLog: "cron: webhook delivery blocked by SSRF guard",
2566
- failedLog: "cron: webhook delivery failed",
2567
- logger: params.logger
2568
- });
2569
- })();
2570
- dispatchCronFailureDestinationNotifications({
2571
- evt: params.evt,
2572
- job: params.job,
2573
- deps: params.deps,
2574
- logger: params.logger,
2575
- resolveCronAgent: params.resolveCronAgent,
2576
- webhookToken,
2577
- globalFailureDestination: params.globalFailureDestination
2578
- });
2579
- }
2580
- function dispatchCronFailureDestinationNotifications(params) {
2581
- if (params.evt.status !== "error" || !params.job || params.job.delivery?.bestEffort === true) return;
2582
- const failureMessage = `Cron job "${params.job.name}" failed: ${params.evt.error ?? "unknown error"}`;
2583
- const failureDest = resolveFailureDestination(params.job, params.globalFailureDestination);
2584
- const deliverySessionKey = resolveCronDeliverySessionKey(params.job);
2585
- if (failureDest) {
2586
- const failurePayload = {
2587
- jobId: params.job.id,
2588
- jobName: params.job.name,
2589
- message: failureMessage,
2590
- status: params.evt.status,
2591
- error: params.evt.error,
2592
- runAtMs: params.evt.runAtMs,
2593
- durationMs: params.evt.durationMs,
2594
- nextRunAtMs: params.evt.nextRunAtMs
2595
- };
2596
- if (failureDest.mode === "webhook" && failureDest.to) {
2597
- const webhookUrl = normalizeHttpWebhookUrl(failureDest.to);
2598
- if (webhookUrl) (async () => {
2599
- await postCronWebhook({
2600
- webhookUrl,
2601
- webhookToken: params.webhookToken,
2602
- payload: failurePayload,
2603
- logContext: { jobId: params.evt.jobId },
2604
- blockedLog: "cron: failure destination webhook blocked by SSRF guard",
2605
- failedLog: "cron: failure destination webhook failed",
2606
- logger: params.logger
2607
- });
2608
- })();
2609
- else params.logger.warn({
2610
- jobId: params.evt.jobId,
2611
- webhookUrl: redactWebhookUrl(failureDest.to)
2612
- }, "cron: failure destination webhook URL is invalid, skipping");
2613
- return;
2614
- }
2615
- if (failureDest.mode === "announce") {
2616
- const { agentId, cfg: runtimeConfig } = params.resolveCronAgent(params.job.agentId);
2617
- sendFailureNotificationAnnounce(params.deps, runtimeConfig, agentId, params.job.id, {
2618
- channel: failureDest.channel,
2619
- to: failureDest.to,
2620
- accountId: failureDest.accountId,
2621
- sessionKey: deliverySessionKey
2622
- }, `⚠️ ${failureMessage}`);
2623
- }
2624
- return;
2625
- }
2626
- const primaryPlan = resolveCronDeliveryPlan(params.job);
2627
- if (primaryPlan.mode !== "announce" || !primaryPlan.requested) return;
2628
- const { agentId, cfg: runtimeConfig } = params.resolveCronAgent(params.job.agentId);
2629
- sendFailureNotificationAnnounce(params.deps, runtimeConfig, agentId, params.job.id, {
2630
- channel: primaryPlan.channel,
2631
- to: primaryPlan.to,
2632
- accountId: primaryPlan.accountId,
2633
- sessionKey: deliverySessionKey
2634
- }, `⚠️ ${failureMessage}`);
2635
- }
2636
- //#endregion
2637
- //#region src/gateway/server-cron.ts
2638
- /** Pick only the keys whose values are not `undefined` from an object. */
2639
- function pickDefined(obj, keys) {
2640
- const result = {};
2641
- for (const k of keys) if (obj[k] !== void 0) result[k] = obj[k];
2642
- return result;
2643
- }
2644
- function omitExplicitHeartbeatDestination(heartbeat) {
2645
- if (!heartbeat) return;
2646
- return {
2647
- ...heartbeat,
2648
- to: void 0,
2649
- accountId: void 0
2650
- };
2651
- }
2652
- function sanitizeCronHeartbeatOverride(heartbeat) {
2653
- return heartbeat?.target === "last" ? omitExplicitHeartbeatDestination(heartbeat) : heartbeat;
2654
- }
2655
- /** Map internal CronJob to the public plugin SDK shape. */
2656
- function toPluginCronJob(job) {
2657
- return {
2658
- id: job.id,
2659
- agentId: job.agentId,
2660
- name: job.name,
2661
- description: job.description,
2662
- enabled: job.enabled,
2663
- schedule: job.schedule ? structuredClone(job.schedule) : void 0,
2664
- sessionTarget: job.sessionTarget,
2665
- wakeMode: job.wakeMode,
2666
- payload: job.payload ? structuredClone(job.payload) : void 0,
2667
- state: {
2668
- nextRunAtMs: job.state.nextRunAtMs,
2669
- runningAtMs: job.state.runningAtMs,
2670
- lastRunAtMs: job.state.lastRunAtMs,
2671
- lastRunStatus: job.state.lastRunStatus,
2672
- lastError: job.state.lastError,
2673
- lastDurationMs: job.state.lastDurationMs,
2674
- lastDelivered: job.state.lastDelivered,
2675
- lastDeliveryStatus: job.state.lastDeliveryStatus,
2676
- lastDeliveryError: job.state.lastDeliveryError,
2677
- lastFailureNotificationDelivered: job.state.lastFailureNotificationDelivered,
2678
- lastFailureNotificationDeliveryStatus: job.state.lastFailureNotificationDeliveryStatus,
2679
- lastFailureNotificationDeliveryError: job.state.lastFailureNotificationDeliveryError
2680
- },
2681
- createdAtMs: job.createdAtMs,
2682
- updatedAtMs: job.updatedAtMs
2683
- };
2684
- }
2685
- function buildGatewayCronService(params) {
2686
- const cronLogger = getChildLogger({ module: "cron" });
2687
- const storePath = resolveCronStorePath(params.cfg.cron?.store);
2688
- const cronEnabled = process.env.DAOCORE_SKIP_CRON !== "1" && params.cfg.cron?.enabled !== false;
2689
- const findAgentEntry = (cfg, agentId) => Array.isArray(cfg.agents?.list) ? cfg.agents.list.find((entry) => entry && typeof entry.id === "string" && normalizeAgentId(entry.id) === agentId) : void 0;
2690
- const hasConfiguredAgent = (cfg, agentId) => Boolean(findAgentEntry(cfg, agentId));
2691
- const mergeRuntimeAgentConfig = (runtimeConfig, requestedAgentId) => {
2692
- if (hasConfiguredAgent(runtimeConfig, requestedAgentId)) return runtimeConfig;
2693
- const fallbackAgentEntry = findAgentEntry(params.cfg, requestedAgentId);
2694
- if (!fallbackAgentEntry) return runtimeConfig;
2695
- const startupAgents = params.cfg.agents;
2696
- const runtimeAgents = runtimeConfig.agents;
2697
- return {
2698
- ...runtimeConfig,
2699
- agents: {
2700
- ...startupAgents,
2701
- ...runtimeAgents,
2702
- defaults: {
2703
- ...startupAgents?.defaults,
2704
- ...runtimeAgents?.defaults
2705
- },
2706
- list: [...runtimeAgents?.list ?? [], fallbackAgentEntry]
2707
- }
2708
- };
2709
- };
2710
- const resolveCronAgent = (requested) => {
2711
- const runtimeConfig = getRuntimeConfig();
2712
- const normalized = typeof requested === "string" && requested.trim() ? normalizeAgentId(requested) : void 0;
2713
- const effectiveConfig = normalized !== void 0 ? mergeRuntimeAgentConfig(runtimeConfig, normalized) : runtimeConfig;
2714
- return {
2715
- agentId: normalized !== void 0 && hasConfiguredAgent(effectiveConfig, normalized) ? normalized : resolveDefaultAgentId(effectiveConfig),
2716
- cfg: effectiveConfig
2717
- };
2718
- };
2719
- const resolveCronSessionKey = (params) => {
2720
- const requested = params.requestedSessionKey?.trim();
2721
- if (!requested) return resolveAgentMainSessionKey({
2722
- cfg: params.runtimeConfig,
2723
- agentId: params.agentId
2724
- });
2725
- const candidate = toAgentStoreSessionKey({
2726
- agentId: params.agentId,
2727
- requestKey: requested,
2728
- mainKey: params.runtimeConfig.session?.mainKey
2729
- });
2730
- const canonical = canonicalizeMainSessionAlias({
2731
- cfg: params.runtimeConfig,
2732
- agentId: params.agentId,
2733
- sessionKey: candidate
2734
- });
2735
- if (canonical !== "global") {
2736
- if (normalizeAgentId(resolveAgentIdFromSessionKey(canonical)) !== normalizeAgentId(params.agentId)) return resolveAgentMainSessionKey({
2737
- cfg: params.runtimeConfig,
2738
- agentId: params.agentId
2739
- });
2740
- }
2741
- return resolveMainScopedEventSessionKey({
2742
- cfg: params.runtimeConfig,
2743
- sessionKey: canonical,
2744
- agentId: params.agentId
2745
- }) ?? canonical;
2746
- };
2747
- const resolveCronTarget = (opts) => {
2748
- const requestedAgentId = typeof opts?.agentId === "string" && opts.agentId.trim() ? normalizeAgentId(opts.agentId) : void 0;
2749
- const requestedSessionKey = typeof opts?.sessionKey === "string" && opts.sessionKey.trim() ? opts.sessionKey : void 0;
2750
- if (opts?.preserveUntargeted && !requestedAgentId && !requestedSessionKey) return {
2751
- runtimeConfig: getRuntimeConfig(),
2752
- agentId: void 0,
2753
- sessionKey: void 0
2754
- };
2755
- const derivedAgentId = requestedSessionKey && parseAgentSessionKey(requestedSessionKey) ? resolveAgentIdFromSessionKey(requestedSessionKey) : void 0;
2756
- const { agentId: resolvedAgentId, cfg: runtimeConfig } = resolveCronAgent(requestedAgentId ?? derivedAgentId);
2757
- const agentId = resolvedAgentId || void 0;
2758
- const resolvedSessionKey = agentId ? resolveCronSessionKey({
2759
- runtimeConfig,
2760
- agentId,
2761
- requestedSessionKey
2762
- }) : void 0;
2763
- return {
2764
- runtimeConfig,
2765
- agentId,
2766
- sessionKey: resolvedSessionKey && runtimeConfig.session?.scope === "global" ? resolveEventSessionKey(resolvedSessionKey, runtimeConfig.session?.mainKey, runtimeConfig.session?.scope) : resolvedSessionKey
2767
- };
2768
- };
2769
- const resolveCronHeartbeatOverride = (params) => {
2770
- if (!params.heartbeat) return;
2771
- const agentEntry = params.agentId !== void 0 ? findAgentEntry(params.runtimeConfig, params.agentId) : void 0;
2772
- const agentHeartbeat = agentEntry && typeof agentEntry === "object" ? agentEntry.heartbeat : void 0;
2773
- return sanitizeCronHeartbeatOverride({
2774
- ...params.runtimeConfig.agents?.defaults?.heartbeat,
2775
- ...agentHeartbeat,
2776
- ...params.heartbeat
2777
- });
2778
- };
2779
- const defaultAgentId = resolveDefaultAgentId(params.cfg);
2780
- const runLogPrune = resolveCronRunLogPruneOptions(params.cfg.cron?.runLog);
2781
- const resolveSessionStorePath = (agentId) => resolveStorePath(params.cfg.session?.store, { agentId: agentId ?? defaultAgentId });
2782
- const sessionStorePath = resolveSessionStorePath(defaultAgentId);
2783
- const warnedLegacyWebhookJobs = /* @__PURE__ */ new Set();
2784
- const runCronChangedHook = (evt) => {
2785
- const hookRunner = getGlobalHookRunner();
2786
- if (!hookRunner?.hasHooks("cron_changed")) return;
2787
- const hookCtx = {
2788
- config: getRuntimeConfig(),
2789
- getCron: () => cron
2790
- };
2791
- hookRunner.runCronChanged(evt, hookCtx).catch((err) => {
2792
- cronLogger.warn({
2793
- err: formatErrorMessage(err),
2794
- jobId: evt.jobId
2795
- }, "cron_changed hook failed");
2796
- });
2797
- };
2798
- const cron = new CronService({
2799
- storePath,
2800
- cronEnabled,
2801
- cronConfig: params.cfg.cron,
2802
- defaultAgentId,
2803
- resolveSessionStorePath,
2804
- sessionStorePath,
2805
- enqueueSystemEvent: (text, opts) => {
2806
- const { sessionKey } = resolveCronTarget(opts);
2807
- if (!sessionKey) throw new Error("Cron system event target did not resolve a session key.");
2808
- enqueueSystemEvent(text, {
2809
- sessionKey,
2810
- contextKey: opts?.contextKey,
2811
- deliveryContext: opts?.deliveryContext
2812
- });
2813
- },
2814
- requestHeartbeat: (opts) => {
2815
- const { agentId, sessionKey } = resolveCronTarget({
2816
- ...opts,
2817
- preserveUntargeted: true
2818
- });
2819
- requestHeartbeat({
2820
- source: opts?.source ?? "cron",
2821
- intent: opts?.intent ?? "event",
2822
- reason: opts?.reason,
2823
- agentId,
2824
- sessionKey,
2825
- heartbeat: sanitizeCronHeartbeatOverride(opts?.heartbeat)
2826
- });
2827
- },
2828
- runHeartbeatOnce: async (opts) => {
2829
- const { runtimeConfig, agentId, sessionKey } = resolveCronTarget({
2830
- ...opts,
2831
- preserveUntargeted: true
2832
- });
2833
- return await runHeartbeatOnce({
2834
- cfg: runtimeConfig,
2835
- source: opts?.source ?? "cron",
2836
- intent: opts?.intent ?? "event",
2837
- reason: opts?.reason,
2838
- agentId,
2839
- sessionKey,
2840
- heartbeat: resolveCronHeartbeatOverride({
2841
- runtimeConfig,
2842
- agentId,
2843
- heartbeat: opts?.heartbeat
2844
- }),
2845
- deps: {
2846
- ...params.deps,
2847
- runtime: defaultRuntime
2848
- }
2849
- });
2850
- },
2851
- runIsolatedAgentJob: async ({ job, message, abortSignal, onExecutionStarted, onExecutionPhase }) => {
2852
- const { agentId, cfg: runtimeConfig } = resolveCronAgent(job.agentId);
2853
- const sessionKey = resolveCronSessionTargetSessionKey(job.sessionTarget) ?? `cron:${job.id}`;
2854
- try {
2855
- return await runCronIsolatedAgentTurn({
2856
- cfg: runtimeConfig,
2857
- deps: params.deps,
2858
- job,
2859
- message,
2860
- abortSignal,
2861
- onExecutionStarted,
2862
- onExecutionPhase,
2863
- agentId,
2864
- sessionKey,
2865
- lane: "cron"
2866
- });
2867
- } finally {
2868
- await cleanupBrowserSessionsForLifecycleEnd({
2869
- sessionKeys: [sessionKey],
2870
- onWarn: (msg) => cronLogger.warn({ jobId: job.id }, msg)
2871
- });
2872
- }
2873
- },
2874
- cleanupTimedOutAgentRun: async ({ job, execution }) => {
2875
- if (!execution?.sessionId) return;
2876
- const result = await abortAndDrainEmbeddedPiRun({
2877
- sessionId: execution.sessionId,
2878
- sessionKey: execution.sessionKey,
2879
- settleMs: 15e3,
2880
- forceClear: true,
2881
- reason: "cron_timeout"
2882
- });
2883
- cronLogger.warn({
2884
- jobId: job.id,
2885
- sessionId: execution.sessionId,
2886
- sessionKey: execution.sessionKey,
2887
- aborted: result.aborted,
2888
- drained: result.drained,
2889
- forceCleared: result.forceCleared
2890
- }, "cron: cleaned up timed-out agent run");
2891
- },
2892
- sendCronFailureAlert: async ({ job, text, channel, to, mode, accountId }) => await sendGatewayCronFailureAlert({
2893
- deps: params.deps,
2894
- logger: cronLogger,
2895
- resolveCronAgent,
2896
- webhookToken: params.cfg.cron?.webhookToken,
2897
- job,
2898
- text,
2899
- channel,
2900
- to,
2901
- mode,
2902
- accountId
2903
- }),
2904
- log: getChildLogger({
2905
- module: "cron",
2906
- storePath
2907
- }),
2908
- onEvent: (evt) => {
2909
- params.broadcast("cron", evt, { dropIfSlow: true });
2910
- const jobSnapshot = evt.job ?? cron.getJob(evt.jobId);
2911
- const pluginJob = jobSnapshot ? toPluginCronJob(jobSnapshot) : void 0;
2912
- runCronChangedHook({
2913
- action: evt.action,
2914
- jobId: evt.jobId,
2915
- ...pluginJob ? { job: pluginJob } : {},
2916
- sessionTarget: jobSnapshot?.sessionTarget,
2917
- agentId: jobSnapshot?.agentId,
2918
- ...pickDefined(evt, [
2919
- "runAtMs",
2920
- "durationMs",
2921
- "status",
2922
- "error",
2923
- "summary",
2924
- "delivered",
2925
- "deliveryStatus",
2926
- "deliveryError",
2927
- "sessionId",
2928
- "sessionKey",
2929
- "runId",
2930
- "nextRunAtMs",
2931
- "model",
2932
- "provider"
2933
- ])
2934
- });
2935
- if (evt.action === "finished") {
2936
- dispatchGatewayCronFinishedNotifications({
2937
- evt,
2938
- job: evt.job ?? cron.getJob(evt.jobId),
2939
- deps: params.deps,
2940
- logger: cronLogger,
2941
- resolveCronAgent,
2942
- webhookToken: params.cfg.cron?.webhookToken,
2943
- legacyWebhook: params.cfg.cron?.webhook,
2944
- globalFailureDestination: params.cfg.cron?.failureDestination,
2945
- warnedLegacyWebhookJobs
2946
- });
2947
- const logPath = resolveCronRunLogPath({
2948
- storePath,
2949
- jobId: evt.jobId
2950
- });
2951
- appendCronRunLog(logPath, {
2952
- ts: Date.now(),
2953
- jobId: evt.jobId,
2954
- action: "finished",
2955
- status: evt.status,
2956
- error: evt.error,
2957
- summary: evt.summary,
2958
- diagnostics: evt.diagnostics,
2959
- delivered: evt.delivered,
2960
- deliveryStatus: evt.deliveryStatus,
2961
- deliveryError: evt.deliveryError,
2962
- failureNotificationDelivery: evt.failureNotificationDelivery,
2963
- delivery: evt.delivery,
2964
- sessionId: evt.sessionId,
2965
- sessionKey: evt.sessionKey,
2966
- runId: evt.runId,
2967
- runAtMs: evt.runAtMs,
2968
- durationMs: evt.durationMs,
2969
- nextRunAtMs: evt.nextRunAtMs,
2970
- model: evt.model,
2971
- provider: evt.provider,
2972
- usage: evt.usage
2973
- }, runLogPrune).catch((err) => {
2974
- cronLogger.warn({
2975
- err: String(err),
2976
- logPath
2977
- }, "cron: run log append failed");
2978
- });
2979
- }
2980
- }
2981
- });
2982
- return {
2983
- cron,
2984
- storePath,
2985
- cronEnabled
2986
- };
2987
- }
2988
- //#endregion
2989
- export { buildGatewayCronService as t };