fengming 0.3.4 → 0.3.5

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 (2016) hide show
  1. package/CHANGELOG.md +3 -2
  2. package/dist/abort-CjCDVBbH.js +277 -0
  3. package/dist/abort.runtime-DxJ8129J.js +2 -0
  4. package/dist/abort.runtime.js +1 -1
  5. package/dist/accounts-Cyn0sm_v.js +423 -0
  6. package/dist/accounts-DzcLKcN5.js +2 -0
  7. package/dist/acp/control-plane/manager.js +1 -1
  8. package/dist/acp-spawn-4lfz_3K9.js +1286 -0
  9. package/dist/acp-spawn-BCUjuO6L.js +2 -0
  10. package/dist/acp-stateful-target-driver-Bv99uwEA.js +89 -0
  11. package/dist/action-info-CP-p6RHS.js +75 -0
  12. package/dist/active-runtime-registry-DjKe53a5.js +62 -0
  13. package/dist/active-tool-schema-warnings-p7CqUnu1.js +105 -0
  14. package/dist/active-tool-schema-warnings-pGI92yka.js +2 -0
  15. package/dist/agent-B77yluip.js +1825 -0
  16. package/dist/agent-BooUvZnR.js +2 -0
  17. package/dist/agent-bundle-lsp-runtime-3ieSgTgo.js +389 -0
  18. package/dist/agent-bundle-lsp-runtime-CkJ0XJK7.js +2 -0
  19. package/dist/agent-bundle-mcp-materialize-BH-esGZL.js +124 -0
  20. package/dist/agent-bundle-mcp-tools-DkixTTnL.js +3 -0
  21. package/dist/agent-command-BJKcnQy6.js +1435 -0
  22. package/dist/agent-delivery-CEfe_Zzt.js +117 -0
  23. package/dist/agent-harness-runtime-R_Ae6o9C.js +207 -0
  24. package/dist/agent-kWSaRcQt.js +3 -0
  25. package/dist/agent-model-discovery-C49swEgd.js +238 -0
  26. package/dist/agent-model-discovery-DZbixJQs.js +3 -0
  27. package/dist/agent-runner-utils-BChpi9Ec.js +267 -0
  28. package/dist/agent-runner.runtime-3LOdt215.js +3784 -0
  29. package/dist/agent-runner.runtime.js +1 -1
  30. package/dist/agent-runtime-3jsv8b7Y.js +199 -0
  31. package/dist/agent-runtime-label-uoFI4ovH.js +30 -0
  32. package/dist/agent-runtime-metadata-BhFt6kLt.js +53 -0
  33. package/dist/agent-tool-result-middleware-loader-BxYJNC1i.js +55 -0
  34. package/dist/agent-tools-COLEG7aL.js +2506 -0
  35. package/dist/agent-tools.before-tool-call--rMZI5Rd.js +1274 -0
  36. package/dist/agent-tools.before-tool-call-CbX2sfP4.js +2 -0
  37. package/dist/agent-via-gateway-DfKij3De.js +486 -0
  38. package/dist/agent-wait-dedupe-BAUSJotw.js +180 -0
  39. package/dist/agents/agent-bundle-mcp-materialize.js +1 -1
  40. package/dist/agents/auth-profiles.runtime.js +1 -1
  41. package/dist/agents/compaction-planning.worker.js +1 -1
  42. package/dist/agents/embedded-agent-runner/effective-tool-policy.js +1 -1
  43. package/dist/agents/embedded-agent-runner/tool-split.js +1 -1
  44. package/dist/agents/model-catalog.runtime.js +1 -1
  45. package/dist/agents/model-provider-auth.worker.js +3 -3
  46. package/dist/agents/models-config.runtime.js +1 -1
  47. package/dist/agents-CZSNDJWD.js +632 -0
  48. package/dist/agents.command-shared-DgbjfH23.js +16 -0
  49. package/dist/agents.commands.add-DknGM1oz.js +304 -0
  50. package/dist/agents.commands.bind-DDVI0yDe.js +265 -0
  51. package/dist/agents.commands.delete-Dv4RHEhc.js +128 -0
  52. package/dist/agents.commands.identity-BSZbc1QR.js +143 -0
  53. package/dist/agents.commands.list-CA0OTw59.js +235 -0
  54. package/dist/aliases-EY1GbfwT.js +97 -0
  55. package/dist/api-CY0oKcRz.js +3 -0
  56. package/dist/api-DgjY0gIl.js +6 -0
  57. package/dist/api-VyMyAYze.js +2 -0
  58. package/dist/api-key-rotation-DxPKIdmC.js +167 -0
  59. package/dist/app-registration-BBDxCbFo.js +194 -0
  60. package/dist/apply-DMYy7tc3.js +544 -0
  61. package/dist/apply-Dd0n97MD.js +2 -0
  62. package/dist/apply-bHIT1nMp.js +416 -0
  63. package/dist/apply-g8x7Z83S.js +510 -0
  64. package/dist/apply-nnbx9TaB.js +2 -0
  65. package/dist/approval-native-helpers-CjaYvOaZ.js +398 -0
  66. package/dist/artifacts-B55YR-uA.js +368 -0
  67. package/dist/assistant-hJaOgfKl.js +291 -0
  68. package/dist/attachment-normalize-COsastJx.js +213 -0
  69. package/dist/attempt-execution-fDWDWcWe.js +584 -0
  70. package/dist/attempt-execution.helpers-Cze5xPim.js +969 -0
  71. package/dist/attempt-execution.runtime-B1iCG6LN.js +3 -0
  72. package/dist/attempt-execution.runtime.js +1 -1
  73. package/dist/attempt.prompt-helpers-CkBYHBBo.js +543 -0
  74. package/dist/attempt.tool-run-context-DzfRK5pV.js +1240 -0
  75. package/dist/audio-preflight.runtime-rjWd9uyk.js +7 -0
  76. package/dist/audio-preflight.runtime.js +1 -1
  77. package/dist/audit-DgFtNg3U.js +1108 -0
  78. package/dist/audit-L8EC3WhV.js +477 -0
  79. package/dist/audit.nondeep.runtime-D0sQ6bO2.js +1416 -0
  80. package/dist/audit.nondeep.runtime.js +1 -1
  81. package/dist/audit.runtime-CiG82F31.js +7 -0
  82. package/dist/audit.runtime.js +1 -1
  83. package/dist/auth-CzPdsZVM.js +567 -0
  84. package/dist/auth-choice-BNzS9QBI.js +3 -0
  85. package/dist/auth-choice-Cwr5kgcD.js +110 -0
  86. package/dist/auth-choice-DW9qPpMS.js +400 -0
  87. package/dist/auth-choice.apply.api-providers-C68tOdqj.js +34 -0
  88. package/dist/auth-choice.apply.api-providers-DSRK0gYo.js +2 -0
  89. package/dist/auth-choice.plugin-providers.runtime-BJ9VyO1C.js +11 -0
  90. package/dist/auth-choice.plugin-providers.runtime.js +1 -1
  91. package/dist/auth-health-BanKwsTW.js +219 -0
  92. package/dist/auth-list-Dq8obVno.js +115 -0
  93. package/dist/auth-order-VXqoAroP.js +105 -0
  94. package/dist/auth-profiles-6VFEdgC-.js +73 -0
  95. package/dist/auth-profiles-a0M4JYYg.js +14 -0
  96. package/dist/backend-config-COaTdVnN.js +259 -0
  97. package/dist/bash-tools-BMAquSiM.js +3 -0
  98. package/dist/bash-tools-DLiUXfaS.js +3497 -0
  99. package/dist/binding-routing-Bwvdx_7S.js +113 -0
  100. package/dist/binding-targets-Z_d0mK_1.js +121 -0
  101. package/dist/bootstrap-files-CoCV_zqu.js +202 -0
  102. package/dist/bootstrap-files-_T3VoTrV.js +3 -0
  103. package/dist/bridge-server-BIaNurGa.js +113 -0
  104. package/dist/browser-cli-D4wL8NU9.js +230 -0
  105. package/dist/browser-cli-actions-input-z40PGiYI.js +522 -0
  106. package/dist/browser-cli-actions-observe-C4TeyNke.js +81 -0
  107. package/dist/browser-cli-debug-Dv0gH-c8.js +137 -0
  108. package/dist/browser-cli-inspect-BUXeITYc.js +117 -0
  109. package/dist/browser-cli-manage-qMb3Yw5Y.js +446 -0
  110. package/dist/browser-cli-resize-CZWnGwGz.js +32 -0
  111. package/dist/browser-cli-shared-BpinhvE3.js +69 -0
  112. package/dist/browser-cli-state-CBbKqqgP.js +371 -0
  113. package/dist/browser-cli-uI5GGX51.js +2 -0
  114. package/dist/browser-control-auth-CFPJXdN_.js +2 -0
  115. package/dist/browser-profiles-D4ni3t4J.js +2 -0
  116. package/dist/browser-runtime-Dm5D_PLf.js +389 -0
  117. package/dist/browser-tool.schema-Bek02ox5.js +132 -0
  118. package/dist/btw-command-DdrwvCK4.js +18 -0
  119. package/dist/build-DkEeJ9sO.js +261 -0
  120. package/dist/build-info.json +2 -2
  121. package/dist/bundled/boot-md/handler.js +2 -2
  122. package/dist/bundled/session-memory/handler.js +1 -1
  123. package/dist/bundled-channel-config-schema-BeowdkHi.d.ts +3168 -0
  124. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  125. package/dist/capability-cli-DTRuKZJC.js +1809 -0
  126. package/dist/capability-provider-runtime-Cpp-Jq9g.js +346 -0
  127. package/dist/cdp.helpers-GfQkB-B5.js +637 -0
  128. package/dist/channel-BRehZ4Cg.js +2309 -0
  129. package/dist/channel-actions-hdQKe_se.js +46 -0
  130. package/dist/channel-bootstrap.runtime-BzjlNG_j.js +38 -0
  131. package/dist/channel-bootstrap.runtime-CmNNVl40.js +2 -0
  132. package/dist/channel-bootstrap.runtime.js +1 -1
  133. package/dist/channel-core-BLcWqSk-.js +5 -0
  134. package/dist/channel-inbound-pR1B7HTU.js +121 -0
  135. package/dist/channel-message-W0VurpjH.js +12 -0
  136. package/dist/channel-outbound-DO4HI6E_.js +436 -0
  137. package/dist/channel-plugin-resolution-CLA7S5_A.js +2 -0
  138. package/dist/channel-plugin-resolution-DzwVj01h.js +135 -0
  139. package/dist/channel-resolution-DOPyiG4k.js +46 -0
  140. package/dist/channel-selection-kwoWZDQ3.js +171 -0
  141. package/dist/channel-selection.runtime-LiDliif9.js +2 -0
  142. package/dist/channel-selection.runtime.js +1 -1
  143. package/dist/channel.runtime-DDt3PayH.js +697 -0
  144. package/dist/channel.runtime.js +1 -1
  145. package/dist/channels-CKJd4eUz.js +1004 -0
  146. package/dist/channels-cli-DLAPi8pX.js +331 -0
  147. package/dist/chat-6WsYrS9m.js +3 -0
  148. package/dist/chat-DpsCEXAx.js +2940 -0
  149. package/dist/chrome-BWHc9vYG.js +1517 -0
  150. package/dist/chrome-mcp-BGKgR8A_.js +2 -0
  151. package/dist/chrome-mcp-Bg5D5PDc.js +864 -0
  152. package/dist/claude-live-session-BLCZnv-A.js +2 -0
  153. package/dist/claude-live-session-CGnB64D6.js +1338 -0
  154. package/dist/clawbot-cli-ynXzgp8B.js +9 -0
  155. package/dist/cli/daemon-cli.js +3 -3
  156. package/dist/cli/gateway-lifecycle.runtime.js +4 -4
  157. package/dist/cli/run-main.js +12 -12
  158. package/dist/cli-B4Ttnj0P.js +2 -0
  159. package/dist/cli-BjVgdamH.js +2 -0
  160. package/dist/cli-CNqBrHLU.js +293 -0
  161. package/dist/cli-backends.runtime-DoxtCrow.js +7 -0
  162. package/dist/cli-backends.runtime.js +1 -1
  163. package/dist/cli-compaction-BCuLbs75.js +363 -0
  164. package/dist/cli-mthNIkji.js +141 -0
  165. package/dist/cli-registry-loader-B2sNTdgY.js +2 -0
  166. package/dist/cli-registry-loader-Dz9YFrjw.js +193 -0
  167. package/dist/cli-runner-C9t-9-Io.js +597 -0
  168. package/dist/cli-runner-D21qMGk7.js +2 -0
  169. package/dist/cli-runner.runtime-BNqbJFgu.js +3 -0
  170. package/dist/cli-runner.runtime-Dv50IEvH.js +4 -0
  171. package/dist/cli-runner.runtime.js +1 -1
  172. package/dist/cli-session-jBtClYfT.js +119 -0
  173. package/dist/cli-startup-metadata.json +9 -9
  174. package/dist/cli.runtime-CGBzSGAG.js +1276 -0
  175. package/dist/cli.runtime.js +1 -1
  176. package/dist/codex-native-web-search-B3C-srtm.js +20 -0
  177. package/dist/codex-native-web-search-B7xh2Xcb.js +4 -0
  178. package/dist/codex-native-web-search-core-CrwANQg5.js +106 -0
  179. package/dist/command-auth-Dz_pdczs.js +135 -0
  180. package/dist/command-config-resolution-XCA63Yv8.js +25 -0
  181. package/dist/command-config-resolution-xtKMDTG9.js +2 -0
  182. package/dist/command-config-resolution.runtime-xtKMDTG9.js +2 -0
  183. package/dist/command-config-resolution.runtime.js +1 -1
  184. package/dist/command-execution-startup-CasEqEXh.js +90 -0
  185. package/dist/command-primitives-runtime-DC9gtSI3.js +3 -0
  186. package/dist/command-registry-BQnMdca9.js +9 -0
  187. package/dist/command-registry-core-hx2t1jQP.js +114 -0
  188. package/dist/command-registry-rbKA-L_8.js +4 -0
  189. package/dist/command-secret-gateway-7oveYQCx.js +589 -0
  190. package/dist/command-secret-targets-B7M1Us_C.js +2 -0
  191. package/dist/command-status-builders-DrSoZhiI.js +147 -0
  192. package/dist/command-status.runtime-By0071-y.js +90 -0
  193. package/dist/command-status.runtime.js +1 -1
  194. package/dist/commands/status.summary.runtime.js +3 -3
  195. package/dist/commands-B1MnUj5-.js +161 -0
  196. package/dist/commands-compact.runtime-DELj3JaW.js +10 -0
  197. package/dist/commands-compact.runtime.js +1 -1
  198. package/dist/commands-core.runtime-Zw0grrkC.js +2 -0
  199. package/dist/commands-core.runtime.js +1 -1
  200. package/dist/commands-handlers.runtime-BCl_ZHJZ.js +6327 -0
  201. package/dist/commands-handlers.runtime.js +1 -1
  202. package/dist/commands-models-Uurm-0C3.js +448 -0
  203. package/dist/commands-registry-Bo1AeDcq.js +195 -0
  204. package/dist/commands-registry.runtime-C9DBHyhh.js +4 -0
  205. package/dist/commands-registry.runtime.js +1 -1
  206. package/dist/commands-status-BoAXH-wg.js +16 -0
  207. package/dist/commands-status-CNALMTN9.js +3 -0
  208. package/dist/commands-status.runtime-CNALMTN9.js +3 -0
  209. package/dist/commands-status.runtime.js +1 -1
  210. package/dist/commands-subagents-control.runtime-Dl4IuTzV.js +2 -0
  211. package/dist/commands-subagents-control.runtime.js +1 -1
  212. package/dist/commands-system-prompt-BPzpLmUp.js +2 -0
  213. package/dist/commands-system-prompt-DCOZSNh5.js +161 -0
  214. package/dist/commands.runtime-bfCLM0Sg.js +175 -0
  215. package/dist/commands.runtime.js +1 -1
  216. package/dist/commitments/runtime.js +1 -1
  217. package/dist/common-CoOYhmSg.js +286 -0
  218. package/dist/compact-yqaUOESq.js +1165 -0
  219. package/dist/compact.runtime-Y91AFZVE.js +12 -0
  220. package/dist/compact.runtime.js +1 -1
  221. package/dist/compaction-planning-DVnykwzd.js +202 -0
  222. package/dist/completion-cli-BJjq_g_B.js +393 -0
  223. package/dist/config-CsmSEaNn.js +374 -0
  224. package/dist/config-CtNXZ0iy.js +610 -0
  225. package/dist/config-cli-CNpIVdqp.js +1703 -0
  226. package/dist/config-mutation-B-SErGM0.js +5 -0
  227. package/dist/config-mutations-Bu3ahkX8.js +161 -0
  228. package/dist/config-utils-Bv0Nisds.js +141 -0
  229. package/dist/config-validation-DitvTYD8.js +33 -0
  230. package/dist/configure-CdjbRKTg.js +771 -0
  231. package/dist/configure-Cvi-5ml4.js +3 -0
  232. package/dist/configure.commands-BJii4733.js +1253 -0
  233. package/dist/configure.commands-tJzVFJ0o.js +2 -0
  234. package/dist/context-D1N9oPds.js +2 -0
  235. package/dist/context-XMtJ9b3v.js +248 -0
  236. package/dist/context-engine-host-compat-3QznbSaW.js +280 -0
  237. package/dist/context-engine-host-compat-DquSpnKD.js +2 -0
  238. package/dist/context-engine-lifecycle-Bqdhy9JU.js +627 -0
  239. package/dist/control-auth-CMW_9jmY.js +114 -0
  240. package/dist/control-service-D-r3k91q.js +40 -0
  241. package/dist/control-service-uIPYrp9F.js +3 -0
  242. package/dist/control-ui/assets/activity-DgMhyllD.js +124 -0
  243. package/dist/control-ui/assets/agents-CsRhxO2O.js +1030 -0
  244. package/dist/control-ui/assets/channels-Dq8bzpMg.js +120 -0
  245. package/dist/control-ui/assets/cron-Dk5bqYwg.js +1016 -0
  246. package/dist/control-ui/assets/debug-CNIwFEQO.js +97 -0
  247. package/dist/control-ui/assets/index-CV2NsPlu.js +7214 -0
  248. package/dist/control-ui/assets/instances-DLr0iEvT.js +57 -0
  249. package/dist/control-ui/assets/nodes-D3JEksjl.js +444 -0
  250. package/dist/control-ui/assets/sessions-nbXWGlHZ.js +425 -0
  251. package/dist/control-ui/assets/skills-tBOi8OBq.js +362 -0
  252. package/dist/control-ui/assets/workboard-ClTo7wmK.js +402 -0
  253. package/dist/control-ui/index.html +1 -1
  254. package/dist/control-ui/sw.js +1 -1
  255. package/dist/control-ui-AkRMsk9S.js +750 -0
  256. package/dist/conversation-label-generator-DHtcgSBn.js +72 -0
  257. package/dist/conversation-runtime-BEgHW4ta.js +31 -0
  258. package/dist/core-Bslrvfnp.js +284 -0
  259. package/dist/core-api-BOlUb7G8.js +5 -0
  260. package/dist/core-api-CiBoGa2I.js +2 -0
  261. package/dist/crestodian/crestodian.js +1 -1
  262. package/dist/crestodian/rescue-message.js +1 -1
  263. package/dist/crestodian-mXnyuHx9.js +55 -0
  264. package/dist/cron-PbdpyFrD.js +453 -0
  265. package/dist/daemon-install-C-d4dFvn.js +66 -0
  266. package/dist/daemon-install-auth-profiles-store.runtime-CvE2EVVo.js +2 -0
  267. package/dist/daemon-install-auth-profiles-store.runtime.js +1 -1
  268. package/dist/dashboard-Ey5dnvMI.js +263 -0
  269. package/dist/defaults-CsRAv-qE.js +130 -0
  270. package/dist/defaults-DHZBSNHC.js +3 -0
  271. package/dist/defaults.constants-CR4S_tvw.js +76 -0
  272. package/dist/deliver-BkuuFBlm.js +1399 -0
  273. package/dist/deliver-P4upyes7.js +3 -0
  274. package/dist/deliver-runtime-CjnLI_nC.js +2 -0
  275. package/dist/delivery-outbound.runtime-fcJ-M8qj.js +7 -0
  276. package/dist/delivery-outbound.runtime.js +1 -1
  277. package/dist/delivery-queue-BqgHvNlY.js +863 -0
  278. package/dist/delivery-queue-CfsRscJb.js +2 -0
  279. package/dist/delivery-queue-runtime-D0PKG1Bv.js +16 -0
  280. package/dist/delivery-target.runtime-C5e8d0WH.js +45 -0
  281. package/dist/delivery-target.runtime.js +1 -1
  282. package/dist/delivery.runtime-2Ut8xM3P.js +470 -0
  283. package/dist/delivery.runtime.js +1 -1
  284. package/dist/detached-task-runtime-OOZBqRy-.js +86 -0
  285. package/dist/diagnostics-zf6WQ2h7.js +168 -0
  286. package/dist/dialogue-C8IOya-l.js +37 -0
  287. package/dist/direct-dm-wPF-KfNb.js +81 -0
  288. package/dist/directive-handling.defaults-C-1lmFYo.js +22 -0
  289. package/dist/directive-handling.fast-lane-DENPMtYI.js +70 -0
  290. package/dist/directive-handling.impl-C1p5t3qA.js +2 -0
  291. package/dist/directive-handling.impl-DOo2Sa7C.js +823 -0
  292. package/dist/directive-handling.model-selection-6gC-fr_g.js +122 -0
  293. package/dist/directive-handling.persist.runtime-CuhUd2kW.js +274 -0
  294. package/dist/directive-handling.persist.runtime.js +1 -1
  295. package/dist/directives-BIKSyN8C.js +319 -0
  296. package/dist/directory-cli-DZ0PU0Rv.js +239 -0
  297. package/dist/dispatch-DQLImAqt.js +2057 -0
  298. package/dist/dispatch-acp-DzyX7wsq.js +1102 -0
  299. package/dist/dispatch-acp-manager.runtime-CoAfs4O1.js +3 -0
  300. package/dist/dispatch-acp-manager.runtime.js +1 -1
  301. package/dist/dispatch-acp-media.runtime-7uUP_jr9.js +4 -0
  302. package/dist/dispatch-acp-media.runtime.js +1 -1
  303. package/dist/dispatch-acp-transcript.runtime-BUlmV_h0.js +40 -0
  304. package/dist/dispatch-acp-transcript.runtime.js +1 -1
  305. package/dist/dispatch-acp-tts.runtime-ChBnVkNt.js +3 -0
  306. package/dist/dispatch-acp-tts.runtime.js +1 -1
  307. package/dist/dispatch-acp.runtime-DAexFaBu.js +18 -0
  308. package/dist/dispatch-acp.runtime.js +1 -1
  309. package/dist/dispatcher-D3IQEbf9.js +106 -0
  310. package/dist/doctor-BSqEqfb6.js +760 -0
  311. package/dist/doctor-auth-flat-profiles-BIZ4wsYP.js +2 -0
  312. package/dist/doctor-auth-flat-profiles-DXtD5LfC.js +516 -0
  313. package/dist/doctor-auth-legacy-oauth-DwFbRYTP.js +48 -0
  314. package/dist/doctor-auth-oauth-sidecar-6I3FEJbi.js +2 -0
  315. package/dist/doctor-auth-oauth-sidecar-BSC3rnDM.js +177 -0
  316. package/dist/doctor-auth-tVGsUiM6.js +216 -0
  317. package/dist/doctor-bootstrap-size-B0q6bdkO.js +57 -0
  318. package/dist/doctor-claude-cli-Bn79OuBT.js +150 -0
  319. package/dist/doctor-config-flow-CCwocXpV.js +1819 -0
  320. package/dist/doctor-core-checks-D7-1l8jy.js +666 -0
  321. package/dist/doctor-core-checks-eM8FNi8B.js +2 -0
  322. package/dist/doctor-core-checks.runtime-Dc03aeoU.js +278 -0
  323. package/dist/doctor-core-checks.runtime.js +1 -1
  324. package/dist/doctor-gRYfpEbB.js +6 -0
  325. package/dist/doctor-gateway-daemon-flow-KTnHAdeV.js +349 -0
  326. package/dist/doctor-gateway-services-BByDQtjY.js +465 -0
  327. package/dist/doctor-health-CnoM718z.js +65 -0
  328. package/dist/doctor-health-contributions-flVKMQwr.js +874 -0
  329. package/dist/doctor-lint-BBm6gtBa.js +95 -0
  330. package/dist/doctor-memory-search-DjHVDCGo.js +407 -0
  331. package/dist/doctor-state-integrity-Bgw25cz1.js +1257 -0
  332. package/dist/doctor-tool-result-cap-advice-B8wTpiTO.js +27 -0
  333. package/dist/doctor-workspace-status-DcjeJIpT.js +76 -0
  334. package/dist/dreaming-BE4t8DVf.js +523 -0
  335. package/dist/dreaming-command-DWm1lB-Z.js +101 -0
  336. package/dist/dreaming-narrative-8DM-OMrm.js +721 -0
  337. package/dist/dreaming-narrative-CcFfheQI.js +2 -0
  338. package/dist/dreaming-phases-CqOhhTdZ.js +2 -0
  339. package/dist/dreaming-phases-D9eT6Kk0.js +1162 -0
  340. package/dist/drive-D2M5B7-2.js +899 -0
  341. package/dist/echo-transcript-B-wl5MoX.js +52 -0
  342. package/dist/effective-tool-policy-Cx8mC5aA.js +89 -0
  343. package/dist/embedded-agent-BTvtoOe_.js +4 -0
  344. package/dist/embedded-agent-CGmSKuNM.js +4074 -0
  345. package/dist/embedded-agent-helpers-CboIPx57.js +6 -0
  346. package/dist/embedded-agent-helpers-cw0InMDZ.js +1037 -0
  347. package/dist/embedded-agent.runtime-Bfe4bjyF.js +4 -0
  348. package/dist/embedded-agent.runtime.js +1 -1
  349. package/dist/embedded-backend-D-EshN85.js +744 -0
  350. package/dist/embedded-gateway-stub.runtime-Cx9qs0KV.js +12 -0
  351. package/dist/embedded-gateway-stub.runtime.js +1 -1
  352. package/dist/embedding-provider-runtime-DaXfsUPo.js +86 -0
  353. package/dist/embedding-providers-CdU99clu.js +2 -0
  354. package/dist/embeddings-http-BQnlTr-1.js +222 -0
  355. package/dist/engine-qmd-5jbjGywA.js +708 -0
  356. package/dist/engine-storage-CfAgwoDp.js +203 -0
  357. package/dist/entry.js +1 -1
  358. package/dist/errors-C0AUxo3P.js +2 -0
  359. package/dist/exec-approval-forwarder.runtime-BvR47p5Z.js +4 -0
  360. package/dist/exec-approval-forwarder.runtime.js +1 -1
  361. package/dist/exec-approval-session-target-CCqYgaVa.js +177 -0
  362. package/dist/exec-auto-reviewer-BfJaNkNy.js +2 -0
  363. package/dist/exec-auto-reviewer-Dqx7I88Z.js +241 -0
  364. package/dist/execute.runtime-Qb6Z75sG.js +579 -0
  365. package/dist/execute.runtime.js +1 -1
  366. package/dist/extensionAPI.js +2 -2
  367. package/dist/extensions/active-memory/index.js +3 -3
  368. package/dist/extensions/admin-http-rpc/index.js +1 -1
  369. package/dist/extensions/alibaba/index.js +1 -1
  370. package/dist/extensions/alibaba/video-generation-provider.js +1 -1
  371. package/dist/extensions/baichuan/index.js +1 -1
  372. package/dist/extensions/browser/browser-bridge.js +1 -1
  373. package/dist/extensions/browser/browser-cdp.js +1 -1
  374. package/dist/extensions/browser/browser-config.js +5 -5
  375. package/dist/extensions/browser/browser-control-auth.js +2 -2
  376. package/dist/extensions/browser/browser-doctor.js +3 -3
  377. package/dist/extensions/browser/browser-maintenance.js +1 -1
  378. package/dist/extensions/browser/browser-profiles.js +3 -3
  379. package/dist/extensions/browser/browser-runtime-api.js +14 -14
  380. package/dist/extensions/browser/cli-metadata.js +1 -1
  381. package/dist/extensions/browser/index.js +1 -1
  382. package/dist/extensions/browser/plugin-registration.js +1 -1
  383. package/dist/extensions/browser/register.runtime.js +4 -4
  384. package/dist/extensions/browser/runtime-api.js +16 -16
  385. package/dist/extensions/byteplus/index.js +3 -3
  386. package/dist/extensions/byteplus/video-generation-provider.js +1 -1
  387. package/dist/extensions/canvas/index.js +3 -3
  388. package/dist/extensions/canvas/runtime-api.js +2 -2
  389. package/dist/extensions/deepseek/index.js +1 -1
  390. package/dist/extensions/device-pair/api.js +2 -2
  391. package/dist/extensions/device-pair/pair-command-approve.js +1 -1
  392. package/dist/extensions/device-pair/qr-image.js +2 -2
  393. package/dist/extensions/longcat/index.js +1 -1
  394. package/dist/extensions/memory-core/api.js +3 -3
  395. package/dist/extensions/memory-core/cli-metadata.js +1 -1
  396. package/dist/extensions/memory-core/cli.js +2 -2
  397. package/dist/extensions/memory-core/index.js +11 -11
  398. package/dist/extensions/memory-core/manager-runtime.js +1 -1
  399. package/dist/extensions/memory-core/runtime-api.js +6 -6
  400. package/dist/extensions/minimax/image-generation-provider.js +1 -1
  401. package/dist/extensions/minimax/index.js +7 -7
  402. package/dist/extensions/minimax/media-understanding-provider.js +1 -1
  403. package/dist/extensions/minimax/music-generation-provider.js +1 -1
  404. package/dist/extensions/minimax/oauth.js +1 -1
  405. package/dist/extensions/minimax/oauth.runtime.js +1 -1
  406. package/dist/extensions/minimax/provider-registration.js +1 -1
  407. package/dist/extensions/minimax/speech-provider.js +1 -1
  408. package/dist/extensions/minimax/video-generation-provider.js +1 -1
  409. package/dist/extensions/minimax/web-search-provider.js +1 -1
  410. package/dist/extensions/moonshot/index.js +5 -5
  411. package/dist/extensions/moonshot/media-understanding-provider.js +1 -1
  412. package/dist/extensions/moonshot/web-search-provider.js +1 -1
  413. package/dist/extensions/qianfan/index.js +1 -1
  414. package/dist/extensions/qwen/index.js +5 -5
  415. package/dist/extensions/qwen/media-understanding-provider.js +1 -1
  416. package/dist/extensions/qwen/video-generation-provider.js +1 -1
  417. package/dist/extensions/sensenova/index.js +1 -1
  418. package/dist/extensions/skill-workshop/api.js +2 -2
  419. package/dist/extensions/skill-workshop/index.js +4 -4
  420. package/dist/extensions/stepfun/index.js +2 -2
  421. package/dist/extensions/tavily/index.js +1 -1
  422. package/dist/extensions/tavily/web-search-provider.js +1 -1
  423. package/dist/extensions/tencent/index.js +2 -2
  424. package/dist/extensions/tiangong/index.js +1 -1
  425. package/dist/extensions/volcengine/index.js +3 -3
  426. package/dist/extensions/volcengine/speech-provider.js +1 -1
  427. package/dist/extensions/webhooks/api.js +1 -1
  428. package/dist/extensions/webhooks/index.js +1 -1
  429. package/dist/extensions/weixin/index.js +3 -3
  430. package/dist/extensions/workboard/index.js +2 -2
  431. package/dist/extensions/xiaomi/index.js +4 -4
  432. package/dist/extensions/xiaomi/speech-provider.js +1 -1
  433. package/dist/extensions/xingchen/index.js +1 -1
  434. package/dist/extensions/yi/index.js +1 -1
  435. package/dist/extensions/zai/index.js +4 -4
  436. package/dist/extensions/zai/media-understanding-provider.js +1 -1
  437. package/dist/extensions/zhinao/index.js +1 -1
  438. package/dist/external-cli-auth-selection-CM_aOUJw.js +113 -0
  439. package/dist/extra-params-Bm1eLWN9.js +615 -0
  440. package/dist/fallback-notice-state-v1kyWACv.js +15 -0
  441. package/dist/fallbacks-CDllk2g1.js +31 -0
  442. package/dist/fallbacks-shared-DdMKEmAC.js +116 -0
  443. package/dist/fengming-runtime-DSv30J04.js +33 -0
  444. package/dist/fengming-runtime-config-BE-DquuY.js +2 -0
  445. package/dist/fengming-runtime-memory-BE-DquuY.js +2 -0
  446. package/dist/fengming-runtime-session-BE-DquuY.js +2 -0
  447. package/dist/fengming-tools-DHb-ZeDC.js +12221 -0
  448. package/dist/flows-Cz3y10A9.js +189 -0
  449. package/dist/fs-utils-D05rps7O.js +9 -0
  450. package/dist/gateway/protocol/index.d.ts +1 -1
  451. package/dist/gateway-DTi2D7ZS.js +133 -0
  452. package/dist/gateway-cli-DT2fL2fX.js +443 -0
  453. package/dist/gateway-install-token-CJhAycOA.js +136 -0
  454. package/dist/gateway-method-runtime-BuiYTDQk.js +21 -0
  455. package/dist/gateway-runtime-C5_cVlSW.js +23 -0
  456. package/dist/get-reply-Cz-dUrWm.js +5198 -0
  457. package/dist/get-reply-from-config.runtime-BC1HT67i.js +2 -0
  458. package/dist/get-reply-from-config.runtime.js +1 -1
  459. package/dist/github-copilot-token-09lxV3kH.js +2 -0
  460. package/dist/health-CmihbcqN.js +621 -0
  461. package/dist/health-D8L37hBZ.js +111 -0
  462. package/dist/health-DU7I9RrJ.js +3 -0
  463. package/dist/health-state-QZ2E6xGQ.js +106 -0
  464. package/dist/heartbeat-runner-Bz5PMzEI.js +1930 -0
  465. package/dist/heartbeat-runner-DfqqQ_8w.js +5 -0
  466. package/dist/heartbeat-runner.runtime-8BshUhoS.js +3 -0
  467. package/dist/heartbeat-runner.runtime.js +1 -1
  468. package/dist/helpers-Bkq4POdX.js +406 -0
  469. package/dist/hook-helpers-nmDwt3Fa.js +44 -0
  470. package/dist/hooks-9FOcRqfu.js +536 -0
  471. package/dist/hooks-cli-CrQelcwo.js +465 -0
  472. package/dist/http-endpoint-helpers-BD5u6YsT.js +37 -0
  473. package/dist/http-utils-RcKuBJ0I.js +98 -0
  474. package/dist/image-DwNoypK2.js +385 -0
  475. package/dist/image-fallbacks-BUyDnmUX.js +31 -0
  476. package/dist/image-generation-core.auth.runtime-CA8miEMh.js +2 -0
  477. package/dist/image-generation-core.auth.runtime.js +1 -1
  478. package/dist/image-generation-provider-DXMW5EmB.js +152 -0
  479. package/dist/image-runtime-D5QpNNzz.js +9 -0
  480. package/dist/image-tool.helpers-6vGxo1Y0.js +150 -0
  481. package/dist/images-BGWLzQEJ.js +416 -0
  482. package/dist/images-Db4UB3JG.js +2 -0
  483. package/dist/inbound-reply-dispatch-DRF6ZmQg.js +2 -0
  484. package/dist/inbound-reply-dispatch-RAKLqow4.js +147 -0
  485. package/dist/index-DhOQs6M_.d.ts +1497 -0
  486. package/dist/index.js +1 -1
  487. package/dist/infra-runtime-BFrpRc_V.js +32 -0
  488. package/dist/init-sR7bCS9D.js +59 -0
  489. package/dist/install-BzdJbOUx.js +262 -0
  490. package/dist/install.runtime-Zye6pbZ6.js +2 -0
  491. package/dist/internal-DL_vFx8C.js +399 -0
  492. package/dist/isolated-agent-Qif8Llbt.js +2 -0
  493. package/dist/isolated-agent-aqEjxqs-.js +1097 -0
  494. package/dist/kernel-B-i4c2IK.js +979 -0
  495. package/dist/kernel-DYDJ_hLb.js +3 -0
  496. package/dist/kimi-web-search-provider.runtime-95HAkvHY.js +307 -0
  497. package/dist/kimi-web-search-provider.runtime.js +1 -1
  498. package/dist/library-CZVbE5hF.js +45 -0
  499. package/dist/lifecycle-C8M3YLbT.js +2 -0
  500. package/dist/lifecycle-CPDNQnUN.js +570 -0
  501. package/dist/lifecycle-DpuP7n3J.js +355 -0
  502. package/dist/lifecycle.runtime-C8M3YLbT.js +2 -0
  503. package/dist/lifecycle.runtime.js +1 -1
  504. package/dist/link-understanding/apply.runtime.js +3 -3
  505. package/dist/list-B_ALwpPl.js +2 -0
  506. package/dist/list-Bda_GYFy.js +207 -0
  507. package/dist/list.list-command-W9OGfAIU.js +429 -0
  508. package/dist/list.model-row-LV4AaX0H.js +39 -0
  509. package/dist/list.probe-CrZm6BH2.js +451 -0
  510. package/dist/list.probe-Dfdmb8bC.js +2 -0
  511. package/dist/list.provider-catalog-7T1jKk0n.js +211 -0
  512. package/dist/list.provider-catalog-DjGyZVEj.js +2 -0
  513. package/dist/list.registry-load-DkCS8JZQ.js +152 -0
  514. package/dist/list.row-sources-B1vjo_Y9.js +474 -0
  515. package/dist/list.source-plan-C9Sa6zRK.js +81 -0
  516. package/dist/list.status-command-9daSZZDm.js +815 -0
  517. package/dist/live-model-switch-Dy-UFUMS.js +119 -0
  518. package/dist/llm-slug-generator-DEmh5-_1.js +78 -0
  519. package/dist/llm-slug-generator.js +1 -1
  520. package/dist/load-config-CvQpC8k6.js +27 -0
  521. package/dist/load-context-_qSHpZ5S.js +82 -0
  522. package/dist/loader-CntMt07B.js +7008 -0
  523. package/dist/local-dispatch.runtime-BSN_gqNS.js +10 -0
  524. package/dist/local-dispatch.runtime.js +1 -1
  525. package/dist/main-session-restart-recovery-Db7366lt.js +2 -0
  526. package/dist/main-session-restart-recovery-n87NTooQ.js +389 -0
  527. package/dist/managed-image-attachments-BTBBHlKl.js +2 -0
  528. package/dist/managed-image-attachments-C6_V1yX0.js +616 -0
  529. package/dist/manager-CKrWxjV6.js +3737 -0
  530. package/dist/manager-Dvb1FVnx.js +2314 -0
  531. package/dist/mcp/plugin-tools-serve.js +2 -2
  532. package/dist/mcp-http-CSoGXOa_.js +583 -0
  533. package/dist/mcp-http-D4ieDB3W.js +2 -0
  534. package/dist/media-runtime-GeQTQkkK.js +391 -0
  535. package/dist/media-services-CWbIUZDe.js +416 -0
  536. package/dist/media-understanding/apply.runtime.js +1 -1
  537. package/dist/media-understanding-DXc2BD2L.js +87 -0
  538. package/dist/media-understanding-provider-BkdUiVWU.js +70 -0
  539. package/dist/media-understanding-provider-BlgmLViW.js +13 -0
  540. package/dist/media-understanding-provider-C9P2VjkC.js +29 -0
  541. package/dist/media-understanding-provider-CJlbgAvl.js +69 -0
  542. package/dist/memory-CnC2jM1l.js +437 -0
  543. package/dist/memory-core-host-engine-embeddings-Dy9vN-Ce.js +667 -0
  544. package/dist/memory-core-host-engine-foundation-C-pGGQnm.js +15 -0
  545. package/dist/memory-core-host-engine-qmd-DLJDON9w.js +2 -0
  546. package/dist/memory-core-host-engine-storage-Bzf-C8XE.js +2 -0
  547. package/dist/memory-core-host-runtime-cli-_LWA6G3x.js +10 -0
  548. package/dist/memory-core-host-runtime-core-CromkNBr.js +12 -0
  549. package/dist/memory-core-host-runtime-files-DpbviC1b.js +4 -0
  550. package/dist/memory-embedding-provider-runtime-CaVVaYC5.js +36 -0
  551. package/dist/memory-host-core-B5dWHwBF.js +78 -0
  552. package/dist/memory-host-search.runtime-DqlCFac1.js +2 -0
  553. package/dist/memory-host-search.runtime.js +1 -1
  554. package/dist/memory-runtime-BCeeWb1G.js +2 -0
  555. package/dist/memory-runtime-pR9KGin0.js +57 -0
  556. package/dist/memory-search-CpDEEY2Q.js +235 -0
  557. package/dist/message-BeGCG-D8.js +284 -0
  558. package/dist/message-YGMOyqP5.js +2 -0
  559. package/dist/message-action-runner-ByMT3_eb.js +1922 -0
  560. package/dist/message-action-runner-VXmKO_W7.js +2 -0
  561. package/dist/message-handler-MZ0DMbCx.js +1806 -0
  562. package/dist/metadata-registry-loader-BH9D1UOx.js +2 -0
  563. package/dist/metadata-registry-loader-BK1cHCas.js +22 -0
  564. package/dist/migrate-BA6w0hd3.js +2 -0
  565. package/dist/migrate-BGuQC-1W.js +458 -0
  566. package/dist/migration-provider-runtime-BBdDegWG.js +2 -0
  567. package/dist/migration-provider-runtime-C5WUjrQz.js +68 -0
  568. package/dist/minimax-web-search-provider.runtime-suVFk3Zx.js +148 -0
  569. package/dist/minimax-web-search-provider.runtime.js +1 -1
  570. package/dist/model-BJZXR9dq.js +1302 -0
  571. package/dist/model-BL7xlN5h.js +2 -0
  572. package/dist/model-auth-C-6dYVob.js +6 -0
  573. package/dist/model-auth-DJz7R41W.js +705 -0
  574. package/dist/model-auth-label-DKNXktIu.js +67 -0
  575. package/dist/model-catalog-BjiK5rtT.js +3 -0
  576. package/dist/model-catalog-DM1CTjkW.js +434 -0
  577. package/dist/model-catalog-visibility-DEJZG0In.js +76 -0
  578. package/dist/model-config.helpers-BKcUeE_P.js +95 -0
  579. package/dist/model-context-tokens-5y_PQELY.js +572 -0
  580. package/dist/model-fallback-BDdBR053.js +1288 -0
  581. package/dist/model-fallback-auth.runtime-pcWfkIUF.js +5 -0
  582. package/dist/model-fallback-auth.runtime.js +1 -1
  583. package/dist/model-picker-Bpvp4_N4.js +1135 -0
  584. package/dist/model-picker-DWPPtq6d.js +3 -0
  585. package/dist/model-picker-visibility-BtdqVF80.js +22 -0
  586. package/dist/model-picker.runtime-CYlqts2z.js +48 -0
  587. package/dist/model-picker.runtime.js +1 -1
  588. package/dist/model-pricing-cache-BmmncDqL.js +856 -0
  589. package/dist/model-pricing-cache-CEwRyWw2.js +3 -0
  590. package/dist/model-pricing-cache-state-B8Aspp85.js +83 -0
  591. package/dist/model-provider-auth-B3KXoKkE.js +2 -0
  592. package/dist/model-provider-auth-Bo_8T7of.js +375 -0
  593. package/dist/model-runtime-aliases-Br-ZlhrL.js +133 -0
  594. package/dist/model-selection-D5-ERakL.js +254 -0
  595. package/dist/model-selection-DrzgktRu.js +7 -0
  596. package/dist/model-selection-ibwsPgIw.js +352 -0
  597. package/dist/model-selection.runtime-BRkOZejt.js +7 -0
  598. package/dist/model-selection.runtime.js +1 -1
  599. package/dist/models-RPAH3ZBn.js +57 -0
  600. package/dist/models-auth-status-Cwu9OXU8.js +280 -0
  601. package/dist/models-cli-CrYkSUoa.js +257 -0
  602. package/dist/models-config-Ayzj9gDz.js +1189 -0
  603. package/dist/models-config-BFcjB7nN.js +2 -0
  604. package/dist/models-config.providers.secrets-CCRUW7gL.js +2 -0
  605. package/dist/models-config.providers.secrets-DdX_XSRo.js +382 -0
  606. package/dist/models-http-jLFnelH7.js +88 -0
  607. package/dist/monitor-CqWICrjO.js +60 -0
  608. package/dist/monitor-DwccYPfp.js +1024 -0
  609. package/dist/monitor.account-e9EVttpP.js +5382 -0
  610. package/dist/music-generation-provider-Dfc--R-x.js +308 -0
  611. package/dist/native-hook-relay-Cioqiqv8.js +1378 -0
  612. package/dist/native-hook-relay-DRwJIspI.js +19 -0
  613. package/dist/node-cli-CrG3LH9J.js +2806 -0
  614. package/dist/node-command-policy-CkBTEmhl.js +295 -0
  615. package/dist/nodes-BxrWFA09.js +1483 -0
  616. package/dist/nodes-DFPTGZjc.js +3 -0
  617. package/dist/nodes-cli-Czwyt6r1.js +960 -0
  618. package/dist/nodes-pending-B_4QHyB2.js +211 -0
  619. package/dist/nodes-utils-c4k31OaG.js +85 -0
  620. package/dist/oauth-BXncC0JP.js +852 -0
  621. package/dist/oauth-Ba1O2vqP.js +207 -0
  622. package/dist/oauth-CGQkfxbJ.js +746 -0
  623. package/dist/onboard-I5tQlVm6.js +768 -0
  624. package/dist/onboard-channels-BleKfB1D.js +2 -0
  625. package/dist/onboard-channels-jVaUjGYX.js +1534 -0
  626. package/dist/onboard-custom-BR_5oqUr.js +3 -0
  627. package/dist/onboard-custom-Ss0DThuP.js +280 -0
  628. package/dist/onboard-custom-config-B-knjQm7.js +422 -0
  629. package/dist/onboard-search-BsIztGYF.js +412 -0
  630. package/dist/openai-compat-errors-UkLkk8Q9.js +136 -0
  631. package/dist/openai-http-mTQB44gu.js +836 -0
  632. package/dist/openai-transport-stream-CZSs3SIi.js +3427 -0
  633. package/dist/openresponses-http-BA1Shmj-.js +1175 -0
  634. package/dist/operations-DhgPih1F.js +805 -0
  635. package/dist/order-CaXafMPG.js +218 -0
  636. package/dist/outbound-attachment-BAp7DXDc.js +19 -0
  637. package/dist/param-readers-De-m2SoB.js +2 -0
  638. package/dist/payloads-Dg9aAEOC.js +256 -0
  639. package/dist/persistent-bindings.lifecycle-BkLOz501.js +2 -0
  640. package/dist/persistent-bindings.lifecycle-e2MLbBCo.js +85 -0
  641. package/dist/plugin-enabled-CGSENjXc.js +232 -0
  642. package/dist/plugin-install-BI9_bsVT.js +118 -0
  643. package/dist/plugin-install-an4V2iXO.js +2 -0
  644. package/dist/plugin-install-config-policy-C66Nss3D.js +169 -0
  645. package/dist/plugin-registration-DMerQktl.js +97 -0
  646. package/dist/plugin-registry-BZfdCw65.js +3 -0
  647. package/dist/plugin-registry-I1fegSdK.js +2 -0
  648. package/dist/plugin-runtime-B3XMLJka.js +102 -0
  649. package/dist/plugin-sdk/.boundary-entry-shims.stamp +1 -1
  650. package/dist/plugin-sdk/acp-binding-runtime.js +1 -1
  651. package/dist/plugin-sdk/acp-runtime-backend.js +1 -1
  652. package/dist/plugin-sdk/acp-runtime.js +2 -2
  653. package/dist/plugin-sdk/agent-harness-runtime.js +16 -16
  654. package/dist/plugin-sdk/agent-harness-task-runtime.js +4 -4
  655. package/dist/plugin-sdk/agent-harness.js +17 -17
  656. package/dist/plugin-sdk/agent-runtime.js +17 -17
  657. package/dist/plugin-sdk/agent-sessions.js +1 -1
  658. package/dist/plugin-sdk/approval-native-runtime.js +2 -2
  659. package/dist/plugin-sdk/approval-reaction-runtime.js +1 -1
  660. package/dist/plugin-sdk/approval-runtime.js +2 -2
  661. package/dist/plugin-sdk/bundled-channel-config-schema-BsOWCrJT.d.ts +3169 -0
  662. package/dist/plugin-sdk/bundled-channel-config-schema.d.ts +1 -1
  663. package/dist/plugin-sdk/channel-actions.js +2 -2
  664. package/dist/plugin-sdk/channel-config-schema-legacy.d.ts +1 -1
  665. package/dist/plugin-sdk/channel-core.js +2 -2
  666. package/dist/plugin-sdk/channel-envelope.js +1 -1
  667. package/dist/plugin-sdk/channel-inbound-roots.js +1 -1
  668. package/dist/plugin-sdk/channel-inbound.js +4 -4
  669. package/dist/plugin-sdk/channel-location.js +1 -1
  670. package/dist/plugin-sdk/channel-message-runtime.js +5 -5
  671. package/dist/plugin-sdk/channel-message.js +5 -5
  672. package/dist/plugin-sdk/channel-outbound.js +2 -2
  673. package/dist/plugin-sdk/channel-reply-options-runtime.js +1 -1
  674. package/dist/plugin-sdk/command-auth-native.js +2 -2
  675. package/dist/plugin-sdk/command-auth.js +4 -4
  676. package/dist/plugin-sdk/command-primitives-runtime.js +2 -2
  677. package/dist/plugin-sdk/command-status-runtime.js +1 -1
  678. package/dist/plugin-sdk/command-status.js +1 -1
  679. package/dist/plugin-sdk/compat.js +2 -2
  680. package/dist/plugin-sdk/config-mutation.js +2 -2
  681. package/dist/plugin-sdk/config-runtime.js +1 -1
  682. package/dist/plugin-sdk/config-schema.d.ts +2 -2
  683. package/dist/plugin-sdk/conversation-binding-runtime.js +1 -1
  684. package/dist/plugin-sdk/conversation-runtime.js +3 -3
  685. package/dist/plugin-sdk/core.js +3 -3
  686. package/dist/plugin-sdk/delivery-queue-runtime.js +1 -1
  687. package/dist/plugin-sdk/direct-dm.js +1 -1
  688. package/dist/plugin-sdk/discord.d.ts +1 -1
  689. package/dist/plugin-sdk/embedding-providers.js +2 -2
  690. package/dist/plugin-sdk/gateway-method-runtime.js +1 -1
  691. package/dist/plugin-sdk/gateway-runtime.js +2 -2
  692. package/dist/plugin-sdk/health.js +1 -1
  693. package/dist/plugin-sdk/image-generation-core.js +3 -3
  694. package/dist/plugin-sdk/image-generation-runtime.js +1 -1
  695. package/dist/plugin-sdk/image-generation.js +2 -2
  696. package/dist/plugin-sdk/inbound-reply-dispatch.js +3 -3
  697. package/dist/plugin-sdk/index.js +1 -1
  698. package/dist/plugin-sdk/infra-runtime.js +3 -3
  699. package/dist/plugin-sdk/mattermost.js +1 -1
  700. package/dist/plugin-sdk/media-generation-runtime-shared.js +1 -1
  701. package/dist/plugin-sdk/media-generation-runtime.js +1 -1
  702. package/dist/plugin-sdk/media-runtime.js +7 -7
  703. package/dist/plugin-sdk/media-understanding-runtime.js +1 -1
  704. package/dist/plugin-sdk/media-understanding.js +2 -2
  705. package/dist/plugin-sdk/memory-core-host-engine-embeddings.js +4 -4
  706. package/dist/plugin-sdk/memory-core-host-engine-foundation.js +2 -2
  707. package/dist/plugin-sdk/memory-core-host-engine-qmd.js +2 -2
  708. package/dist/plugin-sdk/memory-core-host-engine-storage.js +6 -6
  709. package/dist/plugin-sdk/memory-core-host-runtime-cli.js +2 -2
  710. package/dist/plugin-sdk/memory-core-host-runtime-core.js +3 -3
  711. package/dist/plugin-sdk/memory-core-host-runtime-files.js +4 -4
  712. package/dist/plugin-sdk/memory-core.js +3 -3
  713. package/dist/plugin-sdk/memory-host-core.js +3 -3
  714. package/dist/plugin-sdk/memory-host-files.js +4 -4
  715. package/dist/plugin-sdk/memory-host-search.js +1 -1
  716. package/dist/plugin-sdk/models-provider-runtime.js +1 -1
  717. package/dist/plugin-sdk/music-generation-core.js +1 -1
  718. package/dist/plugin-sdk/native-command-registry.js +1 -1
  719. package/dist/plugin-sdk/outbound-media.js +2 -2
  720. package/dist/plugin-sdk/outbound-runtime.js +3 -3
  721. package/dist/plugin-sdk/param-readers.js +2 -2
  722. package/dist/plugin-sdk/plugin-runtime.js +2 -2
  723. package/dist/plugin-sdk/provider-auth-api-key.js +4 -4
  724. package/dist/plugin-sdk/provider-auth-login.js +1 -1
  725. package/dist/plugin-sdk/provider-auth-runtime.js +2 -2
  726. package/dist/plugin-sdk/provider-auth.js +6 -6
  727. package/dist/plugin-sdk/provider-catalog-runtime.js +2 -2
  728. package/dist/plugin-sdk/provider-entry.js +1 -1
  729. package/dist/plugin-sdk/provider-setup.js +1 -1
  730. package/dist/plugin-sdk/provider-stream-family.js +3 -3
  731. package/dist/plugin-sdk/provider-stream.js +2 -2
  732. package/dist/plugin-sdk/provider-transport-runtime.js +1 -1
  733. package/dist/plugin-sdk/provider-web-fetch.js +2 -2
  734. package/dist/plugin-sdk/provider-web-search.js +4 -4
  735. package/dist/plugin-sdk/realtime-bootstrap-context.js +2 -2
  736. package/dist/plugin-sdk/realtime-transcription.js +1 -1
  737. package/dist/plugin-sdk/realtime-voice.js +2 -2
  738. package/dist/plugin-sdk/reply-dispatch-runtime.js +1 -1
  739. package/dist/plugin-sdk/reply-runtime.js +6 -6
  740. package/dist/plugin-sdk/runtime-secret-resolution.js +2 -2
  741. package/dist/plugin-sdk/runtime.js +3 -3
  742. package/dist/plugin-sdk/self-hosted-provider-setup.js +1 -1
  743. package/dist/plugin-sdk/simple-completion-runtime.js +1 -1
  744. package/dist/plugin-sdk/speech-core.js +2 -2
  745. package/dist/plugin-sdk/speech.js +1 -1
  746. package/dist/plugin-sdk/tool-plugin.js +1 -1
  747. package/dist/plugin-sdk/transcripts.js +1 -1
  748. package/dist/plugin-sdk/tts-runtime.js +1 -1
  749. package/dist/plugin-sdk/video-generation-core.js +2 -2
  750. package/dist/plugin-sdk/video-generation-runtime.js +1 -1
  751. package/dist/plugin-sdk/web-media.js +3 -3
  752. package/dist/plugin-sdk/zalouser.js +1 -1
  753. package/dist/plugin-service-2XF6Lu_a.js +1249 -0
  754. package/dist/plugins/build-smoke-entry.js +2 -2
  755. package/dist/plugins/loader.js +1 -1
  756. package/dist/plugins/provider-discovery.runtime.js +1 -1
  757. package/dist/plugins/provider-runtime.runtime.js +1 -1
  758. package/dist/plugins/runtime/index.js +19 -19
  759. package/dist/plugins/tools.js +1 -1
  760. package/dist/plugins-authoring-command-CCX6tJwd.js +304 -0
  761. package/dist/plugins-cli-HX8nTV2h.js +63 -0
  762. package/dist/plugins-cli.runtime-BYn4VsLP.js +339 -0
  763. package/dist/plugins-cli.runtime.js +1 -1
  764. package/dist/plugins-command-helpers-ByuW-yNj.js +2 -0
  765. package/dist/plugins-command-helpers-DaaxGnCD.js +164 -0
  766. package/dist/plugins-inspect-command-C9NDk23X.js +248 -0
  767. package/dist/plugins-install-command-B0NfUxeA.js +993 -0
  768. package/dist/plugins-install-command-BmuScfLI.js +2 -0
  769. package/dist/plugins-install-persist-CfwO876P.js +252 -0
  770. package/dist/plugins-list-command-Bx8X908n.js +184 -0
  771. package/dist/plugins-uninstall-command-p6h44-Ft.js +118 -0
  772. package/dist/postinstall-inventory.json +862 -862
  773. package/dist/prepare.runtime-8DdQ4k9k.js +798 -0
  774. package/dist/prepare.runtime.js +1 -1
  775. package/dist/presentation-card-DeAf3jYW.js +164 -0
  776. package/dist/preview-warnings-BF7nlTo8.js +618 -0
  777. package/dist/profiles-DUhMLnqX.js +194 -0
  778. package/dist/program-C7f_U7fr.js +131 -0
  779. package/dist/provider-adapters-CWLwE9KS.js +104 -0
  780. package/dist/provider-api-key-auth-CshQbUPZ.js +117 -0
  781. package/dist/provider-api-key-auth.runtime-B64jPCKn.js +14 -0
  782. package/dist/provider-api-key-auth.runtime.js +1 -1
  783. package/dist/provider-auth-D-I3YLSn.js +281 -0
  784. package/dist/provider-auth-api-key-Bub0Rjak.js +5 -0
  785. package/dist/provider-auth-choice-DpNAEScm.js +311 -0
  786. package/dist/provider-auth-choice-helpers-Bof937LW.js +210 -0
  787. package/dist/provider-auth-choice.runtime-B3spikLY.js +18 -0
  788. package/dist/provider-auth-choice.runtime-vVgz7FKq.js +2 -0
  789. package/dist/provider-auth-choice.runtime.js +1 -1
  790. package/dist/provider-auth-guidance-DcCL0Q2U.js +2 -0
  791. package/dist/provider-auth-guidance-rWRMN4Jn.js +34 -0
  792. package/dist/provider-auth-helpers-Cp8L-Xha.js +177 -0
  793. package/dist/provider-auth-login.runtime-BJUzc4iH.js +156 -0
  794. package/dist/provider-auth-login.runtime.js +1 -1
  795. package/dist/provider-auth-runtime-DmcWtzbb.js +186 -0
  796. package/dist/provider-discovery-JyAJi97k.js +95 -0
  797. package/dist/provider-discovery.runtime-D_0WTYr8.js +290 -0
  798. package/dist/provider-discovery.runtime.js +1 -1
  799. package/dist/provider-dispatcher-C8Jt94Xl.js +22 -0
  800. package/dist/provider-dispatcher.runtime.js +1 -1
  801. package/dist/provider-entry-By0ggZuI.js +134 -0
  802. package/dist/provider-hook-runtime-B8AUbQxf.js +255 -0
  803. package/dist/provider-openai-codex-oauth-C9Mmnt7d.js +2 -0
  804. package/dist/provider-openai-codex-oauth-CH5Jg1vk.js +44 -0
  805. package/dist/provider-registration-C1zvaHQP.js +235 -0
  806. package/dist/provider-registry-B9diJyLv.js +31 -0
  807. package/dist/provider-registry-BXSxmPGA.js +61 -0
  808. package/dist/provider-registry-CoE-sxbq.js +61 -0
  809. package/dist/provider-registry-DLth_GdI.js +61 -0
  810. package/dist/provider-registry-J4LRd5Rg.js +36 -0
  811. package/dist/provider-runtime-B4cw16pt.js +3 -0
  812. package/dist/provider-runtime-DNNbfwOK.js +386 -0
  813. package/dist/provider-runtime.runtime-98mAe_ni.js +26 -0
  814. package/dist/provider-runtime.runtime.js +1 -1
  815. package/dist/provider-self-hosted-setup-Dysv2Kwt.js +373 -0
  816. package/dist/provider-stream-BLaC8bqO.js +1084 -0
  817. package/dist/provider-stream-Caa5YOx2.js +313 -0
  818. package/dist/provider-stream-family-CvvfxLyP.js +2 -0
  819. package/dist/provider-usage-CVNosTP3.js +71 -0
  820. package/dist/provider-usage-D2NudXbO.js +4 -0
  821. package/dist/provider-usage.load-DG6R3lkG.js +357 -0
  822. package/dist/provider-web-search-DmgTaxRU.js +58 -0
  823. package/dist/provider-wizard-Cw-5H3tX.js +125 -0
  824. package/dist/providers.runtime-DF0T9lFz.js +240 -0
  825. package/dist/providers.runtime-oM9Vn1wr.js +2 -0
  826. package/dist/providers.runtime.js +1 -1
  827. package/dist/proxy-BxGnVyJu.js +662 -0
  828. package/dist/public-artifacts-BMP9hZfh.js +7 -0
  829. package/dist/pw-ai-CD52qfYo.js +3064 -0
  830. package/dist/qmd-manager-BYbvU4YC.js +2040 -0
  831. package/dist/qr-cli-Btz2ZdO3.js +2 -0
  832. package/dist/qr-cli-eyTRwMm2.js +371 -0
  833. package/dist/qr-image-BCwiO6tL.js +2 -0
  834. package/dist/queue-CJRoTOBi.js +923 -0
  835. package/dist/read-file-ogB-HjbK.js +183 -0
  836. package/dist/register-service-commands-D_gQ3b6_.js +77 -0
  837. package/dist/register.agent-DXQLn-r0.js +152 -0
  838. package/dist/register.configure-FavQPGce.js +16 -0
  839. package/dist/register.crestodian-Cbfmnl6h.js +24 -0
  840. package/dist/register.maintenance-B8xODEMU.js +85 -0
  841. package/dist/register.message-B8PYgZ-j.js +404 -0
  842. package/dist/register.migrate-CieoN8zZ.js +106 -0
  843. package/dist/register.onboard-BqWDIDKH.js +115 -0
  844. package/dist/register.setup-CgeTBW4T.js +40 -0
  845. package/dist/register.status-health-sessions-C99aHa5h.js +293 -0
  846. package/dist/register.subclis-79SvyMFt.js +31 -0
  847. package/dist/register.subclis-CXrO8_TO.js +3 -0
  848. package/dist/register.subclis-core-GoXV1yMG.js +273 -0
  849. package/dist/rem-harness-laL5luQa.js +649 -0
  850. package/dist/repair-sequencing-DGY2mBg6.js +652 -0
  851. package/dist/reply-media-paths.runtime-BeWVPkgy.js +2 -0
  852. package/dist/reply-media-paths.runtime-rzAV_Kee.js +154 -0
  853. package/dist/reply-media-paths.runtime.js +1 -1
  854. package/dist/reply-payloads-D_JHMviC.js +79 -0
  855. package/dist/reply-payloads-dedupe-B9GGGaL-.js +176 -0
  856. package/dist/reply-payloads-dedupe.runtime--C3jHs9y.js +2 -0
  857. package/dist/reply-payloads-dedupe.runtime.js +1 -1
  858. package/dist/reply-timing-tracker-DPjlETUb.js +205 -0
  859. package/dist/reply-turn-admission-DdfIwcMK.js +2056 -0
  860. package/dist/reply.runtime-BC1HT67i.js +2 -0
  861. package/dist/reply.runtime.js +1 -1
  862. package/dist/reset-preserved-selection-Czd80hug.js +45 -0
  863. package/dist/resolve-COJFlAZT.js +106 -0
  864. package/dist/restart-B9GMMIZt.js +121 -0
  865. package/dist/result-fallback-classifier-By0Z6b8r.js +98 -0
  866. package/dist/root-help-Bp0kGaUZ.js +43 -0
  867. package/dist/route-CgG9Z7OI.js +475 -0
  868. package/dist/route-reply-D9_9oRg1.js +174 -0
  869. package/dist/route-reply.runtime-BwNl3h2m.js +2 -0
  870. package/dist/route-reply.runtime.js +1 -1
  871. package/dist/routes-Cz2NHUV4.js +2 -0
  872. package/dist/routes-DMo6Eacc.js +3701 -0
  873. package/dist/run-SFRSThMI.js +1162 -0
  874. package/dist/run-auth-profile.runtime-BxLM8m_2.js +2 -0
  875. package/dist/run-auth-profile.runtime.js +1 -1
  876. package/dist/run-command-Cd5iN7eN.js +2 -0
  877. package/dist/run-command-ah46O06U.js +23 -0
  878. package/dist/run-context-DGCQJldA.js +66 -0
  879. package/dist/run-context.runtime-CSBHDAd5.js +2 -0
  880. package/dist/run-context.runtime.js +1 -1
  881. package/dist/run-delivery.runtime-C9xoiZ3h.js +762 -0
  882. package/dist/run-delivery.runtime.js +1 -1
  883. package/dist/run-embedded.runtime-D8bz5vfV.js +4 -0
  884. package/dist/run-embedded.runtime.js +1 -1
  885. package/dist/run-execution-cli.runtime-BAa8KPn7.js +4 -0
  886. package/dist/run-execution-cli.runtime.js +1 -1
  887. package/dist/run-executor.runtime-CNnemqSa.js +330 -0
  888. package/dist/run-executor.runtime.js +1 -1
  889. package/dist/run-model-catalog.runtime-Dh7EghXr.js +2 -0
  890. package/dist/run-model-catalog.runtime.js +1 -1
  891. package/dist/run-session-state-cMlTFwT_.js +159 -0
  892. package/dist/run-subagent-registry.runtime-BgQU86-E.js +2 -0
  893. package/dist/run-subagent-registry.runtime.js +1 -1
  894. package/dist/runner-B3YXRJOB.js +704 -0
  895. package/dist/runner.entries-DMTKpRDP.js +1485 -0
  896. package/dist/runtime-BHReFHE2.js +2 -0
  897. package/dist/runtime-BiQZ6Usw.js +615 -0
  898. package/dist/runtime-CAeriu2O.js +10 -0
  899. package/dist/runtime-CAnCRCX3.js +224 -0
  900. package/dist/runtime-CV_2NqSY.js +300 -0
  901. package/dist/runtime-CmpnvXo3.js +245 -0
  902. package/dist/runtime-D2fci1Ey.js +2 -0
  903. package/dist/runtime-DAsYmYeA.js +3 -0
  904. package/dist/runtime-DeA45VKG.js +210 -0
  905. package/dist/runtime-DvkZ8tHI.js +436 -0
  906. package/dist/runtime-DxVUR2Xg.js +2 -0
  907. package/dist/runtime-api-B88le0UE.js +12 -0
  908. package/dist/runtime-channel-AubRWvnH.js +2 -0
  909. package/dist/runtime-channel-DdclSuEu.js +148 -0
  910. package/dist/runtime-config-collectors-DukTj2va.js +525 -0
  911. package/dist/runtime-embedded-agent.runtime-BpLweeFv.js +2 -0
  912. package/dist/runtime-embedded-agent.runtime.js +1 -1
  913. package/dist/runtime-internal-CaoUylZw.js +2 -0
  914. package/dist/runtime-llm.runtime-DlpqGc7S.js +307 -0
  915. package/dist/runtime-llm.runtime.js +1 -1
  916. package/dist/runtime-model-auth.runtime-CLAaWzxY.js +46 -0
  917. package/dist/runtime-model-auth.runtime-DxVvqRTd.js +2 -0
  918. package/dist/runtime-model-auth.runtime.js +1 -1
  919. package/dist/runtime-options-TTtN01-I.js +275 -0
  920. package/dist/runtime-plugin-ClqxJSbp.js +92 -0
  921. package/dist/runtime-plugins-Bq01wLXP.js +32 -0
  922. package/dist/runtime-plugins.runtime-cwCvl1TR.js +2 -0
  923. package/dist/runtime-plugins.runtime.js +1 -1
  924. package/dist/runtime-prepare.runtime-Cz_hV_k5.js +81 -0
  925. package/dist/runtime-prepare.runtime.js +1 -1
  926. package/dist/runtime-provider-QCJq90av.js +24 -0
  927. package/dist/runtime-provider-Wllc3jC6.js +2 -0
  928. package/dist/runtime-registry-loader-BM1mQBJr.js +2 -0
  929. package/dist/runtime-registry-loader-DzhYCt4s.js +117 -0
  930. package/dist/runtime-shared-BfqOW-Vb.js +365 -0
  931. package/dist/runtime-web-channel-plugin-BcVPgD14.js +204 -0
  932. package/dist/runtime-web-tools-fallback.runtime.js +1 -1
  933. package/dist/scan-ldbaD8jq.js +573 -0
  934. package/dist/sdk-security-runtime-Bxhq2O1G.js +86 -0
  935. package/dist/sdk-setup-tools-CsQM9pF0.js +8 -0
  936. package/dist/secrets-cli-DbpIf4-z.js +150 -0
  937. package/dist/security-cli-BK4Xpa6h.js +520 -0
  938. package/dist/selection-BXKik6Ps.js +3 -0
  939. package/dist/selection-D4O3gK3Q.js +18365 -0
  940. package/dist/send-DaoGIay5.js +1222 -0
  941. package/dist/send-DzNjJGJX.js +178 -0
  942. package/dist/send-f5w9krNS.js +711 -0
  943. package/dist/send-media-cOciBxcg.js +2072 -0
  944. package/dist/send-result-DMFwBuOl.js +141 -0
  945. package/dist/server-BoC1mxZ-.js +24 -0
  946. package/dist/server-DZnI6w5k.js +72 -0
  947. package/dist/server-aux-handlers-BwRdYdub.js +1347 -0
  948. package/dist/server-chat-Q95f4ywD.js +827 -0
  949. package/dist/server-close.runtime.js +3 -3
  950. package/dist/server-context-CnXNaarB.js +2 -0
  951. package/dist/server-context-DRBebo7Y.js +955 -0
  952. package/dist/server-cron-C0o0ZvqF.js +3173 -0
  953. package/dist/server-cron-CLeBvurR.js +2 -0
  954. package/dist/server-maintenance-CqHfTnFD.js +152 -0
  955. package/dist/server-methods-BmlBQJMD.js +497 -0
  956. package/dist/server-middleware-DJhnR6jl.js +122 -0
  957. package/dist/server-model-catalog-CoSSk_Gy.js +2 -0
  958. package/dist/server-model-catalog-D32oDTQp.js +73 -0
  959. package/dist/server-node-events-DX9a4etQ.js +597 -0
  960. package/dist/server-plugin-bootstrap-Vco-EpxY.js +71 -0
  961. package/dist/server-plugins-WBX2fZRp.js +435 -0
  962. package/dist/server-reload-handlers-DGJLH8bg.js +719 -0
  963. package/dist/server-restart-sentinel-Bvon7f8K.js +700 -0
  964. package/dist/server-runtime-services-BNcH4vhR.js +3 -0
  965. package/dist/server-runtime-services-BjcQG5y7.js +147 -0
  966. package/dist/server-runtime-subscriptions-W39HeyoT.js +67 -0
  967. package/dist/server-session-events-CO73dMU-.js +244 -0
  968. package/dist/server-session-key-D8V67lDk.js +2 -0
  969. package/dist/server-session-key-v-KYSmRS.js +75 -0
  970. package/dist/server-startup-config-u54lUdWN.js +305 -0
  971. package/dist/server-startup-early-Cy5kArJG.js +87 -0
  972. package/dist/server-startup-memory-DvINFAYn.js +72 -0
  973. package/dist/server-startup-plugins-CerpbOSQ.js +127 -0
  974. package/dist/server-startup-post-attach-COUCwhNa.js +793 -0
  975. package/dist/server-ws-runtime-BfznAnbI.js +374 -0
  976. package/dist/server.impl-dQXccj0z.js +2622 -0
  977. package/dist/session-cost-usage-Bs5yIOBH.js +1600 -0
  978. package/dist/session-kill-http-DVleb3RW.js +121 -0
  979. package/dist/session-log-runtime-OG7J4j9m.js +1258 -0
  980. package/dist/session-override-LIWl5a9T.js +134 -0
  981. package/dist/session-reset-model.runtime-BpnTi4sa.js +144 -0
  982. package/dist/session-reset-model.runtime.js +1 -1
  983. package/dist/session-reset-service-HA07zS8L.js +651 -0
  984. package/dist/session-status.runtime-D6_clH8l.js +2 -0
  985. package/dist/session-status.runtime.js +1 -1
  986. package/dist/session-store-Cj4Rh6qc.js +273 -0
  987. package/dist/session-store.runtime-DSCxACdZ.js +4 -0
  988. package/dist/session-store.runtime.js +1 -1
  989. package/dist/session-subagent-reactivation.runtime-CcwaHAxg.js +2 -0
  990. package/dist/session-subagent-reactivation.runtime.js +1 -1
  991. package/dist/session-tab-registry-C-9uI2Wi.js +551 -0
  992. package/dist/session-utils-BRtPESA4.js +1508 -0
  993. package/dist/sessions-Beltl3Ra.js +1917 -0
  994. package/dist/sessions-DR-X-j8D.js +316 -0
  995. package/dist/sessions-cleanup-CR1CFcJb.js +165 -0
  996. package/dist/sessions-history-http-CjyHWYEv.js +432 -0
  997. package/dist/sessions-patch-peSeltuF.js +401 -0
  998. package/dist/sessions-resolve-D9ULr95s.js +180 -0
  999. package/dist/sessions-table-Da6bua9d.js +161 -0
  1000. package/dist/sessions-uKpnhod0.js +12736 -0
  1001. package/dist/sessions.runtime-C1mVNaU3.js +2 -0
  1002. package/dist/sessions.runtime.js +1 -1
  1003. package/dist/set-DVj21EuB.js +31 -0
  1004. package/dist/set-image-JChDCaAP.js +17 -0
  1005. package/dist/setup-5I-zpID3.js +614 -0
  1006. package/dist/setup-CjtY6cli.js +2 -0
  1007. package/dist/setup-onboard-configure-help-fast-path-C5GcSuXb.js +64 -0
  1008. package/dist/setup.finalize-Bf10PNbl.js +586 -0
  1009. package/dist/setup.gateway-config-EH5Rvwzy.js +281 -0
  1010. package/dist/setup.migration-import-CoeV4Kc1.js +200 -0
  1011. package/dist/setup.migration-import-DFFGw4DI.js +2 -0
  1012. package/dist/setup.post-install-migration-DcQmWTE7.js +128 -0
  1013. package/dist/shared-BFSJZ6B3.js +212 -0
  1014. package/dist/shared-CVM-dYkO.js +5 -0
  1015. package/dist/shared-fvgcmCsj.js +71 -0
  1016. package/dist/simple-completion-runtime-C_TXe4M1.js +2 -0
  1017. package/dist/simple-completion-runtime-DREq-fcF.js +206 -0
  1018. package/dist/simple-completion-transport-DtD1fEvJ.js +83 -0
  1019. package/dist/snapshot-urls-B-wkwDI9.js +317 -0
  1020. package/dist/speech-core-KQg6oKcR.js +119 -0
  1021. package/dist/speech-provider-DfyLYitQ.js +171 -0
  1022. package/dist/speech-provider-oDvTumNW.js +227 -0
  1023. package/dist/speech-provider-yL-TQ3Em.js +233 -0
  1024. package/dist/stale-oauth-profile-shadows-CW11VYMM.js +2 -0
  1025. package/dist/stale-oauth-profile-shadows-DFl6Lyf1.js +186 -0
  1026. package/dist/standalone-runtime-registry-loader-BiponY-y.js +59 -0
  1027. package/dist/startup-context-PVXYM-X3.js +314 -0
  1028. package/dist/status-BA_0z83w.js +249 -0
  1029. package/dist/status-Bc7BGlRt.js +2 -0
  1030. package/dist/status-BwPWg9eQ.js +3 -0
  1031. package/dist/status-CLQ66eml.js +4 -0
  1032. package/dist/status-Ci2gChtY.js +466 -0
  1033. package/dist/status-CmtBWJEE.js +2 -0
  1034. package/dist/status-DdnMnPNs.js +73 -0
  1035. package/dist/status-all-BpTvkYrt.js +573 -0
  1036. package/dist/status-json-CizozZCr.js +15 -0
  1037. package/dist/status-json-command-FzKa2t6O.js +84 -0
  1038. package/dist/status-message-BHbnxwmt.js +495 -0
  1039. package/dist/status-message.runtime-Df5WBBAk.js +6 -0
  1040. package/dist/status-message.runtime.js +1 -1
  1041. package/dist/status-queue.runtime-CXnZV4Bj.js +2 -0
  1042. package/dist/status-queue.runtime.js +1 -1
  1043. package/dist/status-runtime-shared-D3Hz8WZ_.js +289 -0
  1044. package/dist/status-subagents.runtime-PoDdwwaw.js +32 -0
  1045. package/dist/status-subagents.runtime.js +1 -1
  1046. package/dist/status-text-DNxXSCuI.js +301 -0
  1047. package/dist/status.command-C_e9GcMg.js +2 -0
  1048. package/dist/status.command-DjVKDmt_.js +425 -0
  1049. package/dist/status.command.text-runtime-BeHlqL8b.js +15 -0
  1050. package/dist/status.runtime-h--fx9HY.js +2 -0
  1051. package/dist/status.scan-WyR8TeJz.js +72 -0
  1052. package/dist/status.scan-overview-CMzUAQMQ.js +460 -0
  1053. package/dist/status.scan.deps.runtime-1JTrdyHk.js +19 -0
  1054. package/dist/status.scan.deps.runtime.js +1 -1
  1055. package/dist/status.scan.fast-json-D2jw1wKO.js +163 -0
  1056. package/dist/status.scan.fast-json-DbN1KxJT.js +2 -0
  1057. package/dist/status.summary-6ZijZM1g.js +2 -0
  1058. package/dist/status.summary-CiCsChO-.js +276 -0
  1059. package/dist/store-CdBPITcg.js +2302 -0
  1060. package/dist/store-D0l2NCdn.js +3 -0
  1061. package/dist/stored-model-override-HEgnFh6b.js +79 -0
  1062. package/dist/subagent-announce-BUv_kA1W.js +353 -0
  1063. package/dist/subagent-announce-delivery-Ci2Y_p--.js +1369 -0
  1064. package/dist/subagent-control-BM3vNgsQ.js +492 -0
  1065. package/dist/subagent-control.runtime-Df3pVQL9.js +3 -0
  1066. package/dist/subagent-control.runtime.js +1 -1
  1067. package/dist/subagent-hooks-CN2fLez2.js +2 -0
  1068. package/dist/subagent-hooks-CeOmTJBf.js +230 -0
  1069. package/dist/subagent-hooks-api-Cfe4DAT9.js +23 -0
  1070. package/dist/subagent-registry-B9RPAXUs.js +2627 -0
  1071. package/dist/subagent-registry-C7tedtVB.js +3 -0
  1072. package/dist/subagent-registry.runtime.js +2 -2
  1073. package/dist/subagent-session-cleanup-y0ijZ-LQ.js +390 -0
  1074. package/dist/system-DVtrOGbV.js +111 -0
  1075. package/dist/system-prompt-config-BVmrcmmr.js +918 -0
  1076. package/dist/talk-CrdgqTCl.js +2454 -0
  1077. package/dist/target-id-CrUyi-Uq.js +107 -0
  1078. package/dist/targets-KZ2ezPwx.js +267 -0
  1079. package/dist/targets.runtime-iZ8KdQ1C.js +2 -0
  1080. package/dist/targets.runtime.js +1 -1
  1081. package/dist/task-executor-893pMqzn.js +349 -0
  1082. package/dist/task-owner-access-DC7MKz3n.js +74 -0
  1083. package/dist/task-registry-control.runtime.js +2 -2
  1084. package/dist/task-registry-delivery-runtime-YGMOyqP5.js +2 -0
  1085. package/dist/task-registry-uaYJfgXF.js +2362 -0
  1086. package/dist/task-registry.maintenance-Dx0m2NYh.js +2 -0
  1087. package/dist/task-registry.maintenance-gApg-XOt.js +764 -0
  1088. package/dist/task-status-access-CFhD_ieY.js +18 -0
  1089. package/dist/tasks-B_Qoz38D.js +153 -0
  1090. package/dist/tasks-DtV85zJT.js +548 -0
  1091. package/dist/tasks-audit-system-Con3yYnm.js +210 -0
  1092. package/dist/tasks-json-BM3pauZl.js +73 -0
  1093. package/dist/tavily-web-search-provider.runtime-Cmyyc5kX.js +112 -0
  1094. package/dist/tavily-web-search-provider.runtime.js +1 -1
  1095. package/dist/text-report-CKxmVmt5.js +695 -0
  1096. package/dist/text-transforms.runtime-DVwVsBRS.js +113 -0
  1097. package/dist/text-transforms.runtime.js +1 -1
  1098. package/dist/thread-bindings-B6UEVp9q.js +228 -0
  1099. package/dist/tool-KOZc7TIF.js +143 -0
  1100. package/dist/tool-dispatch-Ca4z2GEr.js +155 -0
  1101. package/dist/tool-images-CzDwHeDR.js +247 -0
  1102. package/dist/tool-plugin-BvQBJ2gU.js +93 -0
  1103. package/dist/tool-resolution-Ddxl6tjh.js +153 -0
  1104. package/dist/tool-result-truncation-BSKuIhd5.js +498 -0
  1105. package/dist/tool-schema-nB27q-vb.js +40 -0
  1106. package/dist/tool-schema-projection-COrMarLR.js +215 -0
  1107. package/dist/tool-split-BjPHBFrv.js +323 -0
  1108. package/dist/tools-CV40BWkc.js +901 -0
  1109. package/dist/tools-catalog-5stC7W2V.js +156 -0
  1110. package/dist/tools-effective-BVjqz2FV.js +442 -0
  1111. package/dist/tools-effective-inventory-esPY5jRB.js +379 -0
  1112. package/dist/tools-invoke-Czk_NM9G.js +51 -0
  1113. package/dist/tools-invoke-http-D7PbsODz.js +68 -0
  1114. package/dist/tools-invoke-shared-CzrEn0Dm.js +200 -0
  1115. package/dist/tools-rSjgf61B.js +579 -0
  1116. package/dist/tools.runtime-DiChCSGI.js +5 -0
  1117. package/dist/tools.runtime.js +1 -1
  1118. package/dist/transcript-rewrite-4IQefjvK.js +688 -0
  1119. package/dist/transcripts-tool-BXTS8tE5.js +2 -0
  1120. package/dist/transcripts-tool-CeWGgz5k.js +656 -0
  1121. package/dist/tts-BS8EeM8p.js +2 -0
  1122. package/dist/tts-BlTZjsaE.js +194 -0
  1123. package/dist/tts-runtime-BfRdJDyY.js +1337 -0
  1124. package/dist/tts-vRSvSw-t.js +3 -0
  1125. package/dist/tts.runtime-ChBnVkNt.js +3 -0
  1126. package/dist/tts.runtime-CmVCUbzq.js +2 -0
  1127. package/dist/tts.runtime.js +1 -1
  1128. package/dist/tui-BoQVBgWB.js +4860 -0
  1129. package/dist/tui-DBYK9BeQ.js +2 -0
  1130. package/dist/tui-backend-X0NI7rAv.js +256 -0
  1131. package/dist/tui-cli-BpUtjV38.js +40 -0
  1132. package/dist/typing-policy-CBwyAQh4.js +199 -0
  1133. package/dist/usage-Bl-tgGx-.js +623 -0
  1134. package/dist/usage-Cj_ektBl.js +1113 -0
  1135. package/dist/usage-format-DWO9ckX3.js +394 -0
  1136. package/dist/usage-format-DnCIXsqG.js +2 -0
  1137. package/dist/video-generation-provider-B7ib4AeI.js +297 -0
  1138. package/dist/video-generation-provider-CXQ6fqJx.js +64 -0
  1139. package/dist/video-generation-provider-DXjl05T6.js +325 -0
  1140. package/dist/video-generation-provider-Db8h71jA.js +77 -0
  1141. package/dist/web-fetch/runtime.js +1 -1
  1142. package/dist/web-fetch-providers.runtime-DhPkYjgB.js +41 -0
  1143. package/dist/web-fetch-providers.runtime.js +1 -1
  1144. package/dist/web-guarded-fetch-BdsVyvDS.js +58 -0
  1145. package/dist/web-guarded-fetch-CJR3JCwT.js +2 -0
  1146. package/dist/web-media-BzzQJAwk.js +4 -0
  1147. package/dist/web-media-DViZjNBa.js +2 -0
  1148. package/dist/web-media-inHawfBU.js +651 -0
  1149. package/dist/web-provider-runtime-shared-Cc08Lt9p.js +142 -0
  1150. package/dist/web-search-provider-common-CtbtmUL-.js +252 -0
  1151. package/dist/web-search-providers.runtime-B7x_cRVn.js +41 -0
  1152. package/dist/web-search-providers.runtime.js +1 -1
  1153. package/dist/zod-schema.core-Cuz0lz6m.d.ts +166 -0
  1154. package/package.json +1 -1
  1155. package/dist/abort-CR0u3VsG.js +0 -277
  1156. package/dist/abort.runtime-CXUxanGg.js +0 -2
  1157. package/dist/accounts-BxBaquAf.js +0 -423
  1158. package/dist/accounts-vQjpoqEe.js +0 -2
  1159. package/dist/acp-spawn-2elSoS0E.js +0 -1286
  1160. package/dist/acp-spawn-DtKOHNO1.js +0 -2
  1161. package/dist/acp-stateful-target-driver-BqeA5j0h.js +0 -89
  1162. package/dist/action-info-B8NotHFw.js +0 -75
  1163. package/dist/active-runtime-registry-BO9mpPuB.js +0 -62
  1164. package/dist/active-tool-schema-warnings-C8vGj5FX.js +0 -105
  1165. package/dist/active-tool-schema-warnings-CVeFJuWI.js +0 -2
  1166. package/dist/agent-BgEaDMdp.js +0 -1825
  1167. package/dist/agent-_V5GbziF.js +0 -2
  1168. package/dist/agent-bundle-lsp-runtime-0jBcDEHh.js +0 -389
  1169. package/dist/agent-bundle-lsp-runtime-CQ6dZLs_.js +0 -2
  1170. package/dist/agent-bundle-mcp-materialize-Cu6JqMzC.js +0 -124
  1171. package/dist/agent-bundle-mcp-tools-BGL827cn.js +0 -3
  1172. package/dist/agent-command-CMJdGr16.js +0 -1435
  1173. package/dist/agent-delivery-DMu1MOeq.js +0 -117
  1174. package/dist/agent-harness-runtime-BKSW2E1O.js +0 -207
  1175. package/dist/agent-model-discovery-Cu4YL31r.js +0 -3
  1176. package/dist/agent-model-discovery-DdmVtkZo.js +0 -238
  1177. package/dist/agent-runner-utils-DXNDhwkI.js +0 -267
  1178. package/dist/agent-runner.runtime-Cym4Odfd.js +0 -3784
  1179. package/dist/agent-runtime-BkbhevY3.js +0 -199
  1180. package/dist/agent-runtime-label-DNP06p76.js +0 -30
  1181. package/dist/agent-runtime-metadata-JaTKc7mA.js +0 -53
  1182. package/dist/agent-tool-result-middleware-loader-FbZE0Qpk.js +0 -55
  1183. package/dist/agent-tools-Nwh8BlKX.js +0 -2506
  1184. package/dist/agent-tools.before-tool-call-BwY-FYFl.js +0 -1274
  1185. package/dist/agent-tools.before-tool-call-DwUmYhE3.js +0 -2
  1186. package/dist/agent-u5NDWrw9.js +0 -3
  1187. package/dist/agent-via-gateway-DMtOMwZa.js +0 -486
  1188. package/dist/agent-wait-dedupe-CLuKbI_7.js +0 -180
  1189. package/dist/agents-CiW7UEuB.js +0 -632
  1190. package/dist/agents.command-shared-CXGSQscb.js +0 -16
  1191. package/dist/agents.commands.add-BYBrZDXD.js +0 -304
  1192. package/dist/agents.commands.bind-nfg3AlVc.js +0 -265
  1193. package/dist/agents.commands.delete-pRj6vIrn.js +0 -128
  1194. package/dist/agents.commands.identity-Ci2PnDDl.js +0 -143
  1195. package/dist/agents.commands.list-Crj3BmqB.js +0 -235
  1196. package/dist/aliases-BFspFx3-.js +0 -97
  1197. package/dist/api-BiXhdPle.js +0 -3
  1198. package/dist/api-Cptkjys5.js +0 -6
  1199. package/dist/api-D3vT4ZVi.js +0 -2
  1200. package/dist/api-key-rotation-CQgW8LEx.js +0 -167
  1201. package/dist/app-registration-YW276fZC.js +0 -194
  1202. package/dist/apply-BRxKrOiK.js +0 -510
  1203. package/dist/apply-D0fWCa-U.js +0 -2
  1204. package/dist/apply-DIR8y0ZA.js +0 -2
  1205. package/dist/apply-DNUIV0Lt.js +0 -416
  1206. package/dist/apply-Dux9jI7f.js +0 -544
  1207. package/dist/approval-native-helpers-BMT-5X47.js +0 -398
  1208. package/dist/artifacts-CTrtIv9T.js +0 -368
  1209. package/dist/assistant-ClfI8Kho.js +0 -291
  1210. package/dist/attachment-normalize-DAW86mZY.js +0 -213
  1211. package/dist/attempt-execution-DTi2UfET.js +0 -584
  1212. package/dist/attempt-execution.helpers-DrX0QToi.js +0 -969
  1213. package/dist/attempt-execution.runtime-BCmAxwGy.js +0 -3
  1214. package/dist/attempt.prompt-helpers-BE6kGRtT.js +0 -543
  1215. package/dist/attempt.tool-run-context-J9O2yjbV.js +0 -1240
  1216. package/dist/audio-preflight.runtime-D3GXVYBI.js +0 -7
  1217. package/dist/audit-5T20D-xm.js +0 -1108
  1218. package/dist/audit-CWuV5GlP.js +0 -477
  1219. package/dist/audit.nondeep.runtime-DeYwRDYj.js +0 -1416
  1220. package/dist/audit.runtime-rUlvK4Rb.js +0 -7
  1221. package/dist/auth-DunUSatn.js +0 -567
  1222. package/dist/auth-choice--eBzca8Y.js +0 -3
  1223. package/dist/auth-choice-DJ9jsFUq.js +0 -400
  1224. package/dist/auth-choice-_pLkIdVh.js +0 -110
  1225. package/dist/auth-choice.apply.api-providers-CALcopRP.js +0 -2
  1226. package/dist/auth-choice.apply.api-providers-Dzzm1snk.js +0 -34
  1227. package/dist/auth-choice.plugin-providers.runtime-BHKTeZZc.js +0 -11
  1228. package/dist/auth-health-Cs4OjiF2.js +0 -219
  1229. package/dist/auth-list-bwJ4QDs0.js +0 -115
  1230. package/dist/auth-order-BoHN3Dc_.js +0 -105
  1231. package/dist/auth-profiles-BOLncVgy.js +0 -73
  1232. package/dist/auth-profiles-BiQRkULt.js +0 -14
  1233. package/dist/backend-config-B5yga5ay.js +0 -259
  1234. package/dist/bash-tools-BWvldguc.js +0 -3
  1235. package/dist/bash-tools-DEAAO5np.js +0 -3497
  1236. package/dist/binding-routing-BbtHmU_l.js +0 -113
  1237. package/dist/binding-targets-DSNv3-QA.js +0 -121
  1238. package/dist/bootstrap-files-DD8V2dLe.js +0 -202
  1239. package/dist/bootstrap-files-_6u1uJW2.js +0 -3
  1240. package/dist/bridge-server-v1-XPnAZ.js +0 -113
  1241. package/dist/browser-cli-CnpuO4KR.js +0 -230
  1242. package/dist/browser-cli-DPbIn8SK.js +0 -2
  1243. package/dist/browser-cli-actions-input-DoGR6LI-.js +0 -522
  1244. package/dist/browser-cli-actions-observe-CYMpgmtF.js +0 -81
  1245. package/dist/browser-cli-debug-ChJjSq-h.js +0 -137
  1246. package/dist/browser-cli-inspect-Bbci-WPG.js +0 -117
  1247. package/dist/browser-cli-manage-Bnscjb7b.js +0 -446
  1248. package/dist/browser-cli-resize-D1MJdvZI.js +0 -32
  1249. package/dist/browser-cli-shared-BCQwqz51.js +0 -69
  1250. package/dist/browser-cli-state-BWkPsvUg.js +0 -371
  1251. package/dist/browser-control-auth-CEP_ExeC.js +0 -2
  1252. package/dist/browser-profiles-SvnqnHVN.js +0 -2
  1253. package/dist/browser-runtime-0mRxjFpp.js +0 -389
  1254. package/dist/browser-tool.schema--CLR3nDv.js +0 -132
  1255. package/dist/btw-command-DV6HfrRV.js +0 -18
  1256. package/dist/build-DiRmljCi.js +0 -261
  1257. package/dist/bundled-channel-config-schema-Bte--ZlY.d.ts +0 -3168
  1258. package/dist/capability-cli-ATfwTYFe.js +0 -1809
  1259. package/dist/capability-provider-runtime-l3nnLGvn.js +0 -346
  1260. package/dist/cdp.helpers-IIuc0KGS.js +0 -637
  1261. package/dist/channel-CzTD2ouI.js +0 -2309
  1262. package/dist/channel-actions-B5Yk5Axf.js +0 -46
  1263. package/dist/channel-bootstrap.runtime-C9F-Pq1o.js +0 -38
  1264. package/dist/channel-bootstrap.runtime-TPyY5Ngv.js +0 -2
  1265. package/dist/channel-core-XMZJ-ZGF.js +0 -5
  1266. package/dist/channel-inbound-DvqkKmiH.js +0 -121
  1267. package/dist/channel-message-CnJ4vUyt.js +0 -12
  1268. package/dist/channel-outbound-BhefGAqY.js +0 -436
  1269. package/dist/channel-plugin-resolution-BiaJ8aRa.js +0 -2
  1270. package/dist/channel-plugin-resolution-D_CxkMVc.js +0 -135
  1271. package/dist/channel-resolution-DzI28gIM.js +0 -46
  1272. package/dist/channel-selection-CLFO4-eQ.js +0 -171
  1273. package/dist/channel-selection.runtime-Beb2-bMH.js +0 -2
  1274. package/dist/channel.runtime-By5T5eGw.js +0 -697
  1275. package/dist/channels-BrRY9Mag.js +0 -1004
  1276. package/dist/channels-cli-CF--e2RU.js +0 -331
  1277. package/dist/chat-BTMPilpx.js +0 -2940
  1278. package/dist/chat-DnC7XCWK.js +0 -3
  1279. package/dist/chrome-C3_dN9jE.js +0 -1517
  1280. package/dist/chrome-mcp-5jjDHIgn.js +0 -864
  1281. package/dist/chrome-mcp-DFAa-WzK.js +0 -2
  1282. package/dist/claude-live-session-BUPeOzLE.js +0 -1338
  1283. package/dist/claude-live-session-Bprgmr1-.js +0 -2
  1284. package/dist/clawbot-cli-5UVkLT1Y.js +0 -9
  1285. package/dist/cli-6a6sMEUB.js +0 -2
  1286. package/dist/cli-COCN9B5e.js +0 -2
  1287. package/dist/cli-CpI4dBXy.js +0 -141
  1288. package/dist/cli-YLx-ekdH.js +0 -293
  1289. package/dist/cli-backends.runtime-CsBjr7ag.js +0 -7
  1290. package/dist/cli-compaction-Bh0oMwUa.js +0 -363
  1291. package/dist/cli-registry-loader-DDbaAJgY.js +0 -2
  1292. package/dist/cli-registry-loader-xc2Ah8S4.js +0 -193
  1293. package/dist/cli-runner-BfSrIn-9.js +0 -597
  1294. package/dist/cli-runner-D_FAjNbR.js +0 -2
  1295. package/dist/cli-runner.runtime-BJetQDu1.js +0 -3
  1296. package/dist/cli-runner.runtime-BKJQkc7C.js +0 -4
  1297. package/dist/cli-session-Cy3IeH0g.js +0 -119
  1298. package/dist/cli.runtime-BpOz0s3N.js +0 -1276
  1299. package/dist/codex-native-web-search-BDtKRV3F.js +0 -4
  1300. package/dist/codex-native-web-search-C0TrfoMX.js +0 -20
  1301. package/dist/codex-native-web-search-core-CzlK1GfN.js +0 -106
  1302. package/dist/command-auth-CFnvdYX2.js +0 -135
  1303. package/dist/command-config-resolution-B_86rG8v.js +0 -2
  1304. package/dist/command-config-resolution-BbadcA2M.js +0 -25
  1305. package/dist/command-config-resolution.runtime-B_86rG8v.js +0 -2
  1306. package/dist/command-execution-startup-Rrwwdg_5.js +0 -90
  1307. package/dist/command-primitives-runtime-C9bTt5IV.js +0 -3
  1308. package/dist/command-registry-CbpdQKmu.js +0 -9
  1309. package/dist/command-registry-Dw-XC_Zk.js +0 -4
  1310. package/dist/command-registry-core-rvEDki6p.js +0 -114
  1311. package/dist/command-secret-gateway-BX6BIiFn.js +0 -589
  1312. package/dist/command-secret-targets-DCzlTkb5.js +0 -2
  1313. package/dist/command-status-builders-DIsZN9aY.js +0 -147
  1314. package/dist/command-status.runtime-C2x4yMRd.js +0 -90
  1315. package/dist/commands-FYCxWqIx.js +0 -161
  1316. package/dist/commands-compact.runtime-BTMQfx1k.js +0 -10
  1317. package/dist/commands-core.runtime-CuNLz2wm.js +0 -2
  1318. package/dist/commands-handlers.runtime-DyNuPOmY.js +0 -6327
  1319. package/dist/commands-models-s7BRmLQh.js +0 -448
  1320. package/dist/commands-registry-BxEq-3UJ.js +0 -195
  1321. package/dist/commands-registry.runtime-CbXW33S_.js +0 -4
  1322. package/dist/commands-status-BRJMba4h.js +0 -16
  1323. package/dist/commands-status-DCXEwlSF.js +0 -3
  1324. package/dist/commands-status.runtime-DCXEwlSF.js +0 -3
  1325. package/dist/commands-subagents-control.runtime-CduLQJFD.js +0 -2
  1326. package/dist/commands-system-prompt-B3LD8CDs.js +0 -161
  1327. package/dist/commands-system-prompt-DPsXTqOQ.js +0 -2
  1328. package/dist/commands.runtime-3sVz8Qgo.js +0 -175
  1329. package/dist/common-CZvBLb3w.js +0 -286
  1330. package/dist/compact-DxU_9XEc.js +0 -1165
  1331. package/dist/compact.runtime-CqQTypVl.js +0 -12
  1332. package/dist/compaction-planning-DArTi9SN.js +0 -202
  1333. package/dist/completion-cli-CiKl5HhI.js +0 -393
  1334. package/dist/config--yllOaSC.js +0 -374
  1335. package/dist/config-Yt5UcD91.js +0 -610
  1336. package/dist/config-cli-BeXS3R6k.js +0 -1703
  1337. package/dist/config-mutation-cQeWhUqy.js +0 -5
  1338. package/dist/config-mutations-Cg04LH_S.js +0 -161
  1339. package/dist/config-utils-Dhq_UKMC.js +0 -141
  1340. package/dist/config-validation-BANohTKD.js +0 -33
  1341. package/dist/configure-CWxhlx9G.js +0 -771
  1342. package/dist/configure-Jejkc6dn.js +0 -3
  1343. package/dist/configure.commands-BYy1bz8G.js +0 -2
  1344. package/dist/configure.commands-C3hDvZse.js +0 -1253
  1345. package/dist/context-DptQ59DZ.js +0 -248
  1346. package/dist/context-_ZshNBhD.js +0 -2
  1347. package/dist/context-engine-host-compat-C_eflvRw.js +0 -2
  1348. package/dist/context-engine-host-compat-s15Pu845.js +0 -280
  1349. package/dist/context-engine-lifecycle-COHFLnj4.js +0 -627
  1350. package/dist/control-auth-CQJpLoIb.js +0 -114
  1351. package/dist/control-service-BFSgA0Py.js +0 -40
  1352. package/dist/control-service-D7GZv-GS.js +0 -3
  1353. package/dist/control-ui/assets/activity-CCu43qU8.js +0 -124
  1354. package/dist/control-ui/assets/agents-DCvsB0yO.js +0 -1030
  1355. package/dist/control-ui/assets/channels-CpM2j5xT.js +0 -120
  1356. package/dist/control-ui/assets/cron-CLXNfwYa.js +0 -1016
  1357. package/dist/control-ui/assets/debug-BcJ34lrC.js +0 -97
  1358. package/dist/control-ui/assets/index-CuBn2YpX.js +0 -7214
  1359. package/dist/control-ui/assets/instances-Bu6NM_Hs.js +0 -57
  1360. package/dist/control-ui/assets/nodes-Bd1WzVLK.js +0 -444
  1361. package/dist/control-ui/assets/sessions-C2r8pbt7.js +0 -425
  1362. package/dist/control-ui/assets/skills-DIjn93ee.js +0 -362
  1363. package/dist/control-ui/assets/workboard-CHb0if1l.js +0 -402
  1364. package/dist/control-ui-ChfTPXZo.js +0 -750
  1365. package/dist/conversation-label-generator-CTfnInQF.js +0 -72
  1366. package/dist/conversation-runtime-B7oAN9Tq.js +0 -31
  1367. package/dist/core-api-CBD0dvTQ.js +0 -5
  1368. package/dist/core-api-ClCm_yM8.js +0 -2
  1369. package/dist/core-wuoxL08a.js +0 -284
  1370. package/dist/crestodian--iYeGB8u.js +0 -55
  1371. package/dist/cron-D2SzQyqo.js +0 -453
  1372. package/dist/daemon-install-B6CAkU3V.js +0 -66
  1373. package/dist/daemon-install-auth-profiles-store.runtime-Cpt5LSD6.js +0 -2
  1374. package/dist/dashboard-ChYOQjM2.js +0 -263
  1375. package/dist/defaults-CCopehWw.js +0 -130
  1376. package/dist/defaults-H4kBp17N.js +0 -3
  1377. package/dist/defaults.constants-CjB9HP6f.js +0 -76
  1378. package/dist/deliver-BzPhWO_F.js +0 -3
  1379. package/dist/deliver-DGyKH3Qi.js +0 -1399
  1380. package/dist/deliver-runtime-Ca2kcQoZ.js +0 -2
  1381. package/dist/delivery-outbound.runtime-D7ycPxY-.js +0 -7
  1382. package/dist/delivery-queue-CnLv30ko.js +0 -863
  1383. package/dist/delivery-queue-CuaDjNMh.js +0 -2
  1384. package/dist/delivery-queue-runtime-DO2vqOIJ.js +0 -16
  1385. package/dist/delivery-target.runtime-QcBVk_j8.js +0 -45
  1386. package/dist/delivery.runtime-L09v4tys.js +0 -470
  1387. package/dist/detached-task-runtime-BqU7YXYT.js +0 -86
  1388. package/dist/diagnostics-T-Hk_Qzi.js +0 -168
  1389. package/dist/dialogue-C0VnTMMn.js +0 -37
  1390. package/dist/direct-dm-BWn67tDD.js +0 -81
  1391. package/dist/directive-handling.defaults-DO6Snm4_.js +0 -22
  1392. package/dist/directive-handling.fast-lane-BemYRfPn.js +0 -70
  1393. package/dist/directive-handling.impl-BMVh1pMh.js +0 -823
  1394. package/dist/directive-handling.impl-vr4MsYbt.js +0 -2
  1395. package/dist/directive-handling.model-selection-DegP9exp.js +0 -122
  1396. package/dist/directive-handling.persist.runtime-BUdU6_zm.js +0 -274
  1397. package/dist/directives-1xk_ZcMf.js +0 -319
  1398. package/dist/directory-cli-D83WEjEG.js +0 -239
  1399. package/dist/dispatch-Ck2tvRYH.js +0 -2057
  1400. package/dist/dispatch-acp-GdaHNdvf.js +0 -1102
  1401. package/dist/dispatch-acp-manager.runtime-BGSrJqrW.js +0 -3
  1402. package/dist/dispatch-acp-media.runtime-DQ8dYQh8.js +0 -4
  1403. package/dist/dispatch-acp-transcript.runtime-CsJZGhnu.js +0 -40
  1404. package/dist/dispatch-acp-tts.runtime-Bo-QxKgx.js +0 -3
  1405. package/dist/dispatch-acp.runtime-C_u7sGcQ.js +0 -18
  1406. package/dist/dispatcher-GtuYO6Ni.js +0 -106
  1407. package/dist/doctor-B2qP9g8d.js +0 -760
  1408. package/dist/doctor-D9wCez5t.js +0 -6
  1409. package/dist/doctor-auth-XnseqtS7.js +0 -216
  1410. package/dist/doctor-auth-flat-profiles-B6cL-TiJ.js +0 -516
  1411. package/dist/doctor-auth-flat-profiles-Birb7qIk.js +0 -2
  1412. package/dist/doctor-auth-legacy-oauth-CXO3OtyG.js +0 -48
  1413. package/dist/doctor-auth-oauth-sidecar-BSgQPbcS.js +0 -177
  1414. package/dist/doctor-auth-oauth-sidecar-CzzyNwxc.js +0 -2
  1415. package/dist/doctor-bootstrap-size-BlVcO5D6.js +0 -57
  1416. package/dist/doctor-claude-cli-_MTVnCQ-.js +0 -150
  1417. package/dist/doctor-config-flow-0kxzjUjK.js +0 -1819
  1418. package/dist/doctor-core-checks-C_g9REOd.js +0 -666
  1419. package/dist/doctor-core-checks-CahzmM1L.js +0 -2
  1420. package/dist/doctor-core-checks.runtime-Bi_oTiTZ.js +0 -278
  1421. package/dist/doctor-gateway-daemon-flow-UAIWsI9w.js +0 -349
  1422. package/dist/doctor-gateway-services-BiMEGiw_.js +0 -465
  1423. package/dist/doctor-health-C69GVfMl.js +0 -65
  1424. package/dist/doctor-health-contributions-Bz19QhI4.js +0 -874
  1425. package/dist/doctor-lint-BVW4E6Qf.js +0 -95
  1426. package/dist/doctor-memory-search-D2PWzDCY.js +0 -407
  1427. package/dist/doctor-state-integrity-DuJIszQj.js +0 -1257
  1428. package/dist/doctor-tool-result-cap-advice-Dpn4zNH3.js +0 -27
  1429. package/dist/doctor-workspace-status-nW9TcIWi.js +0 -76
  1430. package/dist/dreaming-CcOWzGN5.js +0 -523
  1431. package/dist/dreaming-command-sxm3FQGb.js +0 -101
  1432. package/dist/dreaming-narrative-BSRwiUPL.js +0 -2
  1433. package/dist/dreaming-narrative-BskwmYdC.js +0 -721
  1434. package/dist/dreaming-phases-BuHjGyPw.js +0 -2
  1435. package/dist/dreaming-phases-ChVT8Ovk.js +0 -1162
  1436. package/dist/drive-C_u5W4ln.js +0 -899
  1437. package/dist/echo-transcript-tnZWH4EO.js +0 -52
  1438. package/dist/effective-tool-policy-CeHdL2D7.js +0 -89
  1439. package/dist/embedded-agent-CGULn3lb.js +0 -4
  1440. package/dist/embedded-agent-DZTa1YiK.js +0 -4074
  1441. package/dist/embedded-agent-helpers-B65K9o55.js +0 -6
  1442. package/dist/embedded-agent-helpers-BPXCvWBb.js +0 -1037
  1443. package/dist/embedded-agent.runtime-TfBgXcUV.js +0 -4
  1444. package/dist/embedded-backend-BAaFwayA.js +0 -744
  1445. package/dist/embedded-gateway-stub.runtime-CNyrjvgT.js +0 -12
  1446. package/dist/embedding-provider-runtime-EnkHdROJ.js +0 -86
  1447. package/dist/embedding-providers-CDkDb0kv.js +0 -2
  1448. package/dist/embeddings-http-ClIu4_mP.js +0 -222
  1449. package/dist/engine-qmd-DZRiT9i4.js +0 -708
  1450. package/dist/engine-storage-BEqlN8TR.js +0 -203
  1451. package/dist/errors-Co8auIlv.js +0 -2
  1452. package/dist/exec-approval-forwarder.runtime-C7QvfWQ6.js +0 -4
  1453. package/dist/exec-approval-session-target-ChuH1nXL.js +0 -177
  1454. package/dist/exec-auto-reviewer-Bm7380HF.js +0 -2
  1455. package/dist/exec-auto-reviewer-BrrdGleK.js +0 -241
  1456. package/dist/execute.runtime-B-8jUqDB.js +0 -579
  1457. package/dist/external-cli-auth-selection-0BxmRUps.js +0 -113
  1458. package/dist/extra-params-BgyvpEpv.js +0 -615
  1459. package/dist/fallback-notice-state-BXk_kRWM.js +0 -15
  1460. package/dist/fallbacks-CPdVRP81.js +0 -31
  1461. package/dist/fallbacks-shared-CSGf1oaf.js +0 -116
  1462. package/dist/fengming-runtime-NUA51sEw.js +0 -33
  1463. package/dist/fengming-runtime-config-CIZ-SHPt.js +0 -2
  1464. package/dist/fengming-runtime-memory-CIZ-SHPt.js +0 -2
  1465. package/dist/fengming-runtime-session-CIZ-SHPt.js +0 -2
  1466. package/dist/fengming-tools-MvRSt0JA.js +0 -12221
  1467. package/dist/flows-BocRit8D.js +0 -189
  1468. package/dist/fs-utils-DSXeBcjj.js +0 -9
  1469. package/dist/gateway-BCrUxrVw.js +0 -133
  1470. package/dist/gateway-cli-B8bXBd_L.js +0 -443
  1471. package/dist/gateway-install-token-pngTMc-f.js +0 -136
  1472. package/dist/gateway-method-runtime-ueZTz7WH.js +0 -21
  1473. package/dist/gateway-runtime-DbsoThML.js +0 -23
  1474. package/dist/get-reply-DUuaxcBz.js +0 -5198
  1475. package/dist/get-reply-from-config.runtime-B4Dgs3Hg.js +0 -2
  1476. package/dist/github-copilot-token-7AfRRF7J.js +0 -2
  1477. package/dist/health-7Yq5zpoZ.js +0 -3
  1478. package/dist/health-DlZqxm2f.js +0 -621
  1479. package/dist/health-DxesUuur.js +0 -111
  1480. package/dist/health-state-BMG8kOby.js +0 -106
  1481. package/dist/heartbeat-runner-Bq7A_Cjm.js +0 -5
  1482. package/dist/heartbeat-runner-DVwbVyft.js +0 -1930
  1483. package/dist/heartbeat-runner.runtime-DQ2NPXMD.js +0 -3
  1484. package/dist/helpers-PCu2RivJ.js +0 -406
  1485. package/dist/hook-helpers-DLEnCRO7.js +0 -44
  1486. package/dist/hooks-Bv-otcl7.js +0 -536
  1487. package/dist/hooks-cli-C5ve0nzF.js +0 -465
  1488. package/dist/http-endpoint-helpers-w2SagsQz.js +0 -37
  1489. package/dist/http-utils-CVvn0ZA-.js +0 -98
  1490. package/dist/image-BeixBis4.js +0 -385
  1491. package/dist/image-fallbacks-CPbmIMn9.js +0 -31
  1492. package/dist/image-generation-core.auth.runtime-Co38iRxQ.js +0 -2
  1493. package/dist/image-generation-provider-BA4Ar91S.js +0 -152
  1494. package/dist/image-runtime-7ZsfioS1.js +0 -9
  1495. package/dist/image-tool.helpers-upjA3ksB.js +0 -150
  1496. package/dist/images-ChLi1Uog.js +0 -2
  1497. package/dist/images-nB0XAnTa.js +0 -416
  1498. package/dist/inbound-reply-dispatch-DglobJ8j.js +0 -2
  1499. package/dist/inbound-reply-dispatch-QKOgNx-m.js +0 -147
  1500. package/dist/index-AZzJCgph.d.ts +0 -1497
  1501. package/dist/infra-runtime-CGD3RE_2.js +0 -32
  1502. package/dist/init-poVZDCAM.js +0 -59
  1503. package/dist/install-Dn9oPGmU.js +0 -262
  1504. package/dist/install.runtime-D5sllsjl.js +0 -2
  1505. package/dist/internal-CnOL_Roa.js +0 -399
  1506. package/dist/isolated-agent-CNw6E3F0.js +0 -1097
  1507. package/dist/isolated-agent-DjkHhEyR.js +0 -2
  1508. package/dist/kernel-B5Y5IQ-A.js +0 -3
  1509. package/dist/kernel-CMuO4VJy.js +0 -979
  1510. package/dist/kimi-web-search-provider.runtime-V4m_MHsk.js +0 -307
  1511. package/dist/library-B-1EZjtY.js +0 -45
  1512. package/dist/lifecycle-B-5gEZ7O.js +0 -570
  1513. package/dist/lifecycle-Bzh5Jo09.js +0 -2
  1514. package/dist/lifecycle-DvbcJYMl.js +0 -355
  1515. package/dist/lifecycle.runtime-Bzh5Jo09.js +0 -2
  1516. package/dist/list-B4xSHRdU.js +0 -2
  1517. package/dist/list-BnhZHpxx.js +0 -207
  1518. package/dist/list.list-command-DAz-Ws_6.js +0 -429
  1519. package/dist/list.model-row-DtdX9KDu.js +0 -39
  1520. package/dist/list.probe-CY6lxq51.js +0 -2
  1521. package/dist/list.probe-DPuE1GOH.js +0 -451
  1522. package/dist/list.provider-catalog-BHc9WXI6.js +0 -211
  1523. package/dist/list.provider-catalog-CFbrroys.js +0 -2
  1524. package/dist/list.registry-load-C1_sr3gb.js +0 -152
  1525. package/dist/list.row-sources-BMtHc9oi.js +0 -474
  1526. package/dist/list.source-plan-Dth72qPP.js +0 -81
  1527. package/dist/list.status-command-BXCnEq8Q.js +0 -815
  1528. package/dist/live-model-switch-Dxav22vq.js +0 -119
  1529. package/dist/llm-slug-generator-6o8RXL11.js +0 -78
  1530. package/dist/load-config-EF3n0Dyo.js +0 -27
  1531. package/dist/load-context-CI_ogQt_.js +0 -82
  1532. package/dist/loader-DtwEzpp-.js +0 -7008
  1533. package/dist/local-dispatch.runtime-21liE3rA.js +0 -10
  1534. package/dist/main-session-restart-recovery-D1g62iJ5.js +0 -2
  1535. package/dist/main-session-restart-recovery-v2I9CEXi.js +0 -389
  1536. package/dist/managed-image-attachments-BEl5qfCT.js +0 -616
  1537. package/dist/managed-image-attachments-D5KqX2Qy.js +0 -2
  1538. package/dist/manager-DZc3xiNq.js +0 -2314
  1539. package/dist/manager-Vf3vLTGe.js +0 -3737
  1540. package/dist/mcp-http-BaJoPKF9.js +0 -583
  1541. package/dist/mcp-http-CpEaJIGJ.js +0 -2
  1542. package/dist/media-runtime-DtP_Ff8m.js +0 -391
  1543. package/dist/media-services-CXYbyIIp.js +0 -416
  1544. package/dist/media-understanding-DvTIsIyr.js +0 -87
  1545. package/dist/media-understanding-provider-DBBAvuwG.js +0 -13
  1546. package/dist/media-understanding-provider-DOf_uZrx.js +0 -70
  1547. package/dist/media-understanding-provider-DdRfNh9h.js +0 -69
  1548. package/dist/media-understanding-provider-mqpQDt8V.js +0 -29
  1549. package/dist/memory-BNk25Hi6.js +0 -437
  1550. package/dist/memory-core-host-engine-embeddings-XsK5xS70.js +0 -667
  1551. package/dist/memory-core-host-engine-foundation-BYkoOLXl.js +0 -15
  1552. package/dist/memory-core-host-engine-qmd-0JuUCKCK.js +0 -2
  1553. package/dist/memory-core-host-engine-storage-MCFGjDwW.js +0 -2
  1554. package/dist/memory-core-host-runtime-cli-fVGH65E8.js +0 -10
  1555. package/dist/memory-core-host-runtime-core-JtXIAdlM.js +0 -12
  1556. package/dist/memory-core-host-runtime-files-BGw_ypoN.js +0 -4
  1557. package/dist/memory-embedding-provider-runtime-3UBzs4sx.js +0 -36
  1558. package/dist/memory-host-core-Y_O5V-mu.js +0 -78
  1559. package/dist/memory-host-search.runtime-B4TzyvmR.js +0 -2
  1560. package/dist/memory-runtime-9kEPAeKV.js +0 -2
  1561. package/dist/memory-runtime-BU4t85uu.js +0 -57
  1562. package/dist/memory-search-CVX--mSz.js +0 -235
  1563. package/dist/message-BVXoNpWP.js +0 -284
  1564. package/dist/message-HaiKqj0A.js +0 -2
  1565. package/dist/message-action-runner-Chwzn02r.js +0 -2
  1566. package/dist/message-action-runner-tEEliptt.js +0 -1922
  1567. package/dist/message-handler-CHDS_NF-.js +0 -1806
  1568. package/dist/metadata-registry-loader-Croa1pgR.js +0 -22
  1569. package/dist/metadata-registry-loader-w0p86vis.js +0 -2
  1570. package/dist/migrate-CPCZJ4H5.js +0 -2
  1571. package/dist/migrate-CUj6m6Cx.js +0 -458
  1572. package/dist/migration-provider-runtime-4r4WGtf2.js +0 -2
  1573. package/dist/migration-provider-runtime-TxrH_mM7.js +0 -68
  1574. package/dist/minimax-web-search-provider.runtime-Dr2GJiWj.js +0 -148
  1575. package/dist/model-BQSouNOa.js +0 -2
  1576. package/dist/model-CAk0bcuO.js +0 -1302
  1577. package/dist/model-auth-BF7w9Fiv.js +0 -705
  1578. package/dist/model-auth-label-r729wcPk.js +0 -67
  1579. package/dist/model-auth-us8b_D5d.js +0 -6
  1580. package/dist/model-catalog-BGykBGxx.js +0 -434
  1581. package/dist/model-catalog-BVXrqFbI.js +0 -3
  1582. package/dist/model-catalog-visibility-Bsup46vy.js +0 -76
  1583. package/dist/model-config.helpers-wzD1EEfE.js +0 -95
  1584. package/dist/model-context-tokens-DrIU9eJc.js +0 -572
  1585. package/dist/model-fallback-GySPjr3J.js +0 -1288
  1586. package/dist/model-fallback-auth.runtime-Dg_Jmguu.js +0 -5
  1587. package/dist/model-picker-BI6jXOjt.js +0 -3
  1588. package/dist/model-picker-DYyJHhfH.js +0 -1135
  1589. package/dist/model-picker-visibility-D_IMZfxd.js +0 -22
  1590. package/dist/model-picker.runtime-B70kQMyc.js +0 -48
  1591. package/dist/model-pricing-cache-CSpUDzSt.js +0 -856
  1592. package/dist/model-pricing-cache-dkPwTUVJ.js +0 -3
  1593. package/dist/model-pricing-cache-state-C6shoEWy.js +0 -83
  1594. package/dist/model-provider-auth-BfZHbTaj.js +0 -2
  1595. package/dist/model-provider-auth-CPCBWvqL.js +0 -375
  1596. package/dist/model-runtime-aliases-DUzusc9_.js +0 -133
  1597. package/dist/model-selection-8UzO5mgF.js +0 -254
  1598. package/dist/model-selection-Cb7azWw1.js +0 -7
  1599. package/dist/model-selection-jDYEo0WI.js +0 -352
  1600. package/dist/model-selection.runtime-D_yHZLbs.js +0 -7
  1601. package/dist/models-BxA2IU3W.js +0 -57
  1602. package/dist/models-auth-status-yG7yyRcv.js +0 -280
  1603. package/dist/models-cli-DUt4uiMH.js +0 -257
  1604. package/dist/models-config-B5bkuh6A.js +0 -1189
  1605. package/dist/models-config-Xj8vG_x2.js +0 -2
  1606. package/dist/models-config.providers.secrets-DNBB440Z.js +0 -2
  1607. package/dist/models-config.providers.secrets-DNIQlBSE.js +0 -382
  1608. package/dist/models-http-DMILRsry.js +0 -88
  1609. package/dist/monitor-2_c2Ttjf.js +0 -1024
  1610. package/dist/monitor-7tD_FE_5.js +0 -60
  1611. package/dist/monitor.account-D0F9tnWD.js +0 -5382
  1612. package/dist/music-generation-provider-3ykPaUwR.js +0 -308
  1613. package/dist/native-hook-relay-BJKHIhWd.js +0 -1378
  1614. package/dist/native-hook-relay-V8Kappw1.js +0 -19
  1615. package/dist/node-cli-BLVyQ93e.js +0 -2806
  1616. package/dist/node-command-policy-B0ezpI_O.js +0 -295
  1617. package/dist/nodes-DnWH_15m.js +0 -3
  1618. package/dist/nodes-RkB4ZmP6.js +0 -1483
  1619. package/dist/nodes-cli-upwPs91b.js +0 -960
  1620. package/dist/nodes-pending--sojaxpI.js +0 -211
  1621. package/dist/nodes-utils-Yks_uDZK.js +0 -85
  1622. package/dist/oauth-CQN2efEy.js +0 -207
  1623. package/dist/oauth-DApi3OI9.js +0 -746
  1624. package/dist/oauth-DkUWBub2.js +0 -852
  1625. package/dist/onboard-CiQSBSrz.js +0 -768
  1626. package/dist/onboard-channels-DaWYXiLv.js +0 -1534
  1627. package/dist/onboard-channels-DnwM2_IL.js +0 -2
  1628. package/dist/onboard-custom-BQPckD0V.js +0 -3
  1629. package/dist/onboard-custom-config-BmbThk2-.js +0 -422
  1630. package/dist/onboard-custom-xInFj1Rs.js +0 -280
  1631. package/dist/onboard-search-DSfmthe5.js +0 -412
  1632. package/dist/openai-compat-errors-VR4SN1MV.js +0 -136
  1633. package/dist/openai-http-DV95ynPi.js +0 -836
  1634. package/dist/openai-transport-stream-BwpzqR-b.js +0 -3427
  1635. package/dist/openresponses-http-DPchx8IC.js +0 -1175
  1636. package/dist/operations-f9R8j-r9.js +0 -805
  1637. package/dist/order-BQx8mNGZ.js +0 -218
  1638. package/dist/outbound-attachment-C4yojK6p.js +0 -19
  1639. package/dist/param-readers-BIXyd5la.js +0 -2
  1640. package/dist/payloads-DrY1bKyF.js +0 -256
  1641. package/dist/persistent-bindings.lifecycle-BiPN7luW.js +0 -85
  1642. package/dist/persistent-bindings.lifecycle-X3wfan2Z.js +0 -2
  1643. package/dist/plugin-enabled-CqsBObeO.js +0 -232
  1644. package/dist/plugin-install-CfB1_kpX.js +0 -118
  1645. package/dist/plugin-install-DzMraXHH.js +0 -2
  1646. package/dist/plugin-install-config-policy-BD_elPNg.js +0 -169
  1647. package/dist/plugin-registration-Dy58ncPf.js +0 -97
  1648. package/dist/plugin-registry-BlmODeop.js +0 -3
  1649. package/dist/plugin-registry-k5OK18l5.js +0 -2
  1650. package/dist/plugin-runtime-B3t53CKr.js +0 -102
  1651. package/dist/plugin-sdk/bundled-channel-config-schema-UtIBjviA.d.ts +0 -3169
  1652. package/dist/plugin-service-sKF4gWFm.js +0 -1249
  1653. package/dist/plugins-authoring-command-I72k2cuv.js +0 -304
  1654. package/dist/plugins-cli-DMQRbPsU.js +0 -63
  1655. package/dist/plugins-cli.runtime-CvDuKFJj.js +0 -339
  1656. package/dist/plugins-command-helpers-C5WMM4bk.js +0 -164
  1657. package/dist/plugins-command-helpers-DDt_pMQ4.js +0 -2
  1658. package/dist/plugins-inspect-command-ka7Hpld3.js +0 -248
  1659. package/dist/plugins-install-command-BHSgof-_.js +0 -2
  1660. package/dist/plugins-install-command-t5caX9q_.js +0 -993
  1661. package/dist/plugins-install-persist-Bah1m3x7.js +0 -252
  1662. package/dist/plugins-list-command-BXLWwXHM.js +0 -184
  1663. package/dist/plugins-uninstall-command-C_3m6CrW.js +0 -118
  1664. package/dist/prepare.runtime-COZaHg5E.js +0 -798
  1665. package/dist/presentation-card-CciJv4ru.js +0 -164
  1666. package/dist/preview-warnings-L4VuEOyB.js +0 -618
  1667. package/dist/profiles-CM2xoUYX.js +0 -194
  1668. package/dist/program-B-4C7bC-.js +0 -131
  1669. package/dist/provider-adapters-Eh8mS2Fd.js +0 -104
  1670. package/dist/provider-api-key-auth-DTh2cbmS.js +0 -117
  1671. package/dist/provider-api-key-auth.runtime-DrTYYfxK.js +0 -14
  1672. package/dist/provider-auth-Bnaijzmv.js +0 -281
  1673. package/dist/provider-auth-api-key-CNP8o5E7.js +0 -5
  1674. package/dist/provider-auth-choice-Devw4sQf.js +0 -311
  1675. package/dist/provider-auth-choice-helpers-DmVudRp6.js +0 -210
  1676. package/dist/provider-auth-choice.runtime-C337IQ3W.js +0 -2
  1677. package/dist/provider-auth-choice.runtime-DqGYalFo.js +0 -18
  1678. package/dist/provider-auth-guidance-Bk4WV6Lg.js +0 -2
  1679. package/dist/provider-auth-guidance-C7NCKuKn.js +0 -34
  1680. package/dist/provider-auth-helpers-r7mC8I5l.js +0 -177
  1681. package/dist/provider-auth-login.runtime-BFJgAAS6.js +0 -156
  1682. package/dist/provider-auth-runtime-BiLPGiMW.js +0 -186
  1683. package/dist/provider-discovery-uxRmAIf_.js +0 -95
  1684. package/dist/provider-discovery.runtime-mwbSivDS.js +0 -290
  1685. package/dist/provider-dispatcher-CtKWj3r-.js +0 -22
  1686. package/dist/provider-entry-DjACqdrB.js +0 -134
  1687. package/dist/provider-hook-runtime-CpJsM7Dk.js +0 -255
  1688. package/dist/provider-openai-codex-oauth-DWGmVUYg.js +0 -2
  1689. package/dist/provider-openai-codex-oauth-ctxd00JW.js +0 -44
  1690. package/dist/provider-registration-l8EX4voM.js +0 -235
  1691. package/dist/provider-registry-BgIQXJle.js +0 -31
  1692. package/dist/provider-registry-CVuzobHN.js +0 -36
  1693. package/dist/provider-registry-DmdDbSQs.js +0 -61
  1694. package/dist/provider-registry-LqtLqheu.js +0 -61
  1695. package/dist/provider-registry-pTYVjODc.js +0 -61
  1696. package/dist/provider-runtime-BQZSuC9l.js +0 -3
  1697. package/dist/provider-runtime-D9Q-7VuO.js +0 -386
  1698. package/dist/provider-runtime.runtime-C6YZ8YI0.js +0 -26
  1699. package/dist/provider-self-hosted-setup-BIAD2ISe.js +0 -373
  1700. package/dist/provider-stream-DScdaoRo.js +0 -313
  1701. package/dist/provider-stream-PE0IxmpZ.js +0 -1084
  1702. package/dist/provider-stream-family-S2fhlydZ.js +0 -2
  1703. package/dist/provider-usage-DVKHMF6l.js +0 -4
  1704. package/dist/provider-usage-EEjx1av0.js +0 -71
  1705. package/dist/provider-usage.load-Cu11xbrw.js +0 -357
  1706. package/dist/provider-web-search-Dbk7MO-1.js +0 -58
  1707. package/dist/provider-wizard-DS2Xb2eu.js +0 -125
  1708. package/dist/providers.runtime-BPhGcupv.js +0 -240
  1709. package/dist/providers.runtime-DoylK-ht.js +0 -2
  1710. package/dist/proxy-BxacG0p3.js +0 -662
  1711. package/dist/public-artifacts-Dq3y7bBv.js +0 -7
  1712. package/dist/pw-ai-DlSSqerW.js +0 -3064
  1713. package/dist/qmd-manager-B_SG-ejE.js +0 -2040
  1714. package/dist/qr-cli-CT-sE_j9.js +0 -2
  1715. package/dist/qr-cli-DPlDCXJQ.js +0 -371
  1716. package/dist/qr-image--VmmvuDB.js +0 -2
  1717. package/dist/queue-Be2Y7PcO.js +0 -923
  1718. package/dist/read-file-hhemkDfq.js +0 -183
  1719. package/dist/register-service-commands-CeVpCQU3.js +0 -77
  1720. package/dist/register.agent-JLsb-giw.js +0 -152
  1721. package/dist/register.configure-CP0Q-ost.js +0 -16
  1722. package/dist/register.crestodian-CBXyXEix.js +0 -24
  1723. package/dist/register.maintenance-DGIPQ2Vo.js +0 -85
  1724. package/dist/register.message-BBQwz0Ld.js +0 -404
  1725. package/dist/register.migrate-CkgNlvLD.js +0 -106
  1726. package/dist/register.onboard-CS9gRK0c.js +0 -115
  1727. package/dist/register.setup-DhqDOer9.js +0 -40
  1728. package/dist/register.status-health-sessions-CiwQN_lw.js +0 -293
  1729. package/dist/register.subclis-86Md7P0P.js +0 -3
  1730. package/dist/register.subclis-CTVI8zvZ.js +0 -31
  1731. package/dist/register.subclis-core-Cy4AnRCu.js +0 -273
  1732. package/dist/rem-harness-vSsq3HiK.js +0 -649
  1733. package/dist/repair-sequencing-SHADYdcA.js +0 -652
  1734. package/dist/reply-media-paths.runtime-Bf5nxPuP.js +0 -154
  1735. package/dist/reply-media-paths.runtime-sLsMpKGO.js +0 -2
  1736. package/dist/reply-payloads-CJ3w8rSA.js +0 -79
  1737. package/dist/reply-payloads-dedupe-DDFXWCVR.js +0 -176
  1738. package/dist/reply-payloads-dedupe.runtime-DbXPzKmG.js +0 -2
  1739. package/dist/reply-timing-tracker-DjVIBsVb.js +0 -205
  1740. package/dist/reply-turn-admission-nEW5QbY5.js +0 -2056
  1741. package/dist/reply.runtime-B4Dgs3Hg.js +0 -2
  1742. package/dist/reset-preserved-selection-CVD1yeVC.js +0 -45
  1743. package/dist/resolve-DidlinMh.js +0 -106
  1744. package/dist/restart-DzTrO95c.js +0 -121
  1745. package/dist/result-fallback-classifier-BqsFUDvP.js +0 -98
  1746. package/dist/root-help-QGs0dCCN.js +0 -43
  1747. package/dist/route-B3R-uzFG.js +0 -475
  1748. package/dist/route-reply-CdfhgIoY.js +0 -174
  1749. package/dist/route-reply.runtime-DwuU2WjH.js +0 -2
  1750. package/dist/routes-ChXmJocl.js +0 -3701
  1751. package/dist/routes-D-ZF4AdA.js +0 -2
  1752. package/dist/run-ClmVDTET.js +0 -1162
  1753. package/dist/run-auth-profile.runtime-CTxrwz0y.js +0 -2
  1754. package/dist/run-command-CqZJQ0Im.js +0 -2
  1755. package/dist/run-command-GClW75NL.js +0 -23
  1756. package/dist/run-context-BOdGeRg5.js +0 -66
  1757. package/dist/run-context.runtime-CwuKVYPj.js +0 -2
  1758. package/dist/run-delivery.runtime-BQ39dm34.js +0 -762
  1759. package/dist/run-embedded.runtime-e1K4Bt1_.js +0 -4
  1760. package/dist/run-execution-cli.runtime-Cjrgt4cV.js +0 -4
  1761. package/dist/run-executor.runtime-C2JE6JGb.js +0 -330
  1762. package/dist/run-model-catalog.runtime-DkrLKopr.js +0 -2
  1763. package/dist/run-session-state-C5YdQs7o.js +0 -159
  1764. package/dist/run-subagent-registry.runtime-Dl_lXi6y.js +0 -2
  1765. package/dist/runner-CNGHdaIg.js +0 -704
  1766. package/dist/runner.entries-dckPkeld.js +0 -1485
  1767. package/dist/runtime-9LxcVCyw.js +0 -615
  1768. package/dist/runtime-BCOtBS5G.js +0 -3
  1769. package/dist/runtime-C-pgjoJr.js +0 -210
  1770. package/dist/runtime-CyF0vJXG.js +0 -10
  1771. package/dist/runtime-D-7lMvGV.js +0 -2
  1772. package/dist/runtime-D17OmF9G.js +0 -224
  1773. package/dist/runtime-D6SweufG.js +0 -245
  1774. package/dist/runtime-DVAM7AFd.js +0 -2
  1775. package/dist/runtime-DX2ClrP-.js +0 -436
  1776. package/dist/runtime-FOOWuiYX.js +0 -300
  1777. package/dist/runtime-api-B0F0JsV1.js +0 -12
  1778. package/dist/runtime-cREKSBYC.js +0 -2
  1779. package/dist/runtime-channel-BmD4hoCR.js +0 -148
  1780. package/dist/runtime-channel-BsebQSPL.js +0 -2
  1781. package/dist/runtime-config-collectors-BjYeQ0Tk.js +0 -525
  1782. package/dist/runtime-embedded-agent.runtime-A4r23Bn8.js +0 -2
  1783. package/dist/runtime-internal-DkV-EMTK.js +0 -2
  1784. package/dist/runtime-llm.runtime-BQKNnuRc.js +0 -307
  1785. package/dist/runtime-model-auth.runtime-BbGqHVM5.js +0 -2
  1786. package/dist/runtime-model-auth.runtime-rtJH4LBB.js +0 -46
  1787. package/dist/runtime-options-B0EGb1Wq.js +0 -275
  1788. package/dist/runtime-plugin-Bdqm44bH.js +0 -92
  1789. package/dist/runtime-plugins-rZk1eAK_.js +0 -32
  1790. package/dist/runtime-plugins.runtime-DApiYzny.js +0 -2
  1791. package/dist/runtime-prepare.runtime-DWxvnbyY.js +0 -81
  1792. package/dist/runtime-provider-B0slPjtk.js +0 -2
  1793. package/dist/runtime-provider-DLgupOKt.js +0 -24
  1794. package/dist/runtime-registry-loader-Cf2HuMjd.js +0 -2
  1795. package/dist/runtime-registry-loader-DLzDrA7e.js +0 -117
  1796. package/dist/runtime-shared-Bg-OiD4u.js +0 -365
  1797. package/dist/runtime-web-channel-plugin-DrMjRaqi.js +0 -204
  1798. package/dist/scan-DA7Oqxuv.js +0 -573
  1799. package/dist/sdk-security-runtime-WjOaCbga.js +0 -86
  1800. package/dist/sdk-setup-tools-DaYT6_jD.js +0 -8
  1801. package/dist/secrets-cli-fJQ0geWO.js +0 -150
  1802. package/dist/security-cli-CJMwGp8U.js +0 -520
  1803. package/dist/selection-BNwLQzqJ.js +0 -3
  1804. package/dist/selection-Cj-l80pO.js +0 -18365
  1805. package/dist/send-DstYcrDW.js +0 -711
  1806. package/dist/send-aTxtLkJm.js +0 -178
  1807. package/dist/send-media-OG5Gd31l.js +0 -2072
  1808. package/dist/send-qwDMMnM6.js +0 -1222
  1809. package/dist/send-result-BWRKr16H.js +0 -141
  1810. package/dist/server-CMtA1S09.js +0 -24
  1811. package/dist/server-DIRaYiiH.js +0 -72
  1812. package/dist/server-aux-handlers-BRO-9-Jf.js +0 -1347
  1813. package/dist/server-chat-0J_ke0ph.js +0 -827
  1814. package/dist/server-context-DWOSX34k.js +0 -2
  1815. package/dist/server-context-R7MFLFdI.js +0 -955
  1816. package/dist/server-cron-2FuFg2j8.js +0 -2
  1817. package/dist/server-cron-ChPAVQtg.js +0 -3173
  1818. package/dist/server-maintenance-ZvS7Id6T.js +0 -152
  1819. package/dist/server-methods-DSbhPK3k.js +0 -497
  1820. package/dist/server-middleware-CYxFU-e5.js +0 -122
  1821. package/dist/server-model-catalog-B22UhmRr.js +0 -73
  1822. package/dist/server-model-catalog-BJIHPP3P.js +0 -2
  1823. package/dist/server-node-events-tNWJnXQM.js +0 -597
  1824. package/dist/server-plugin-bootstrap-Ccu97zi8.js +0 -71
  1825. package/dist/server-plugins-ByXwKPnj.js +0 -435
  1826. package/dist/server-reload-handlers-ConGiT9Q.js +0 -719
  1827. package/dist/server-restart-sentinel-mPHo61LL.js +0 -700
  1828. package/dist/server-runtime-services-BR1icaUW.js +0 -3
  1829. package/dist/server-runtime-services-Bx8n34dj.js +0 -147
  1830. package/dist/server-runtime-subscriptions-CZklTkRG.js +0 -67
  1831. package/dist/server-session-events-DxdiZYM2.js +0 -244
  1832. package/dist/server-session-key-CYvLslFO.js +0 -75
  1833. package/dist/server-session-key-D9GQut81.js +0 -2
  1834. package/dist/server-startup-config-Byb0vR8j.js +0 -305
  1835. package/dist/server-startup-early-a65fHTQS.js +0 -87
  1836. package/dist/server-startup-memory-ClwzC9jX.js +0 -72
  1837. package/dist/server-startup-plugins-CaBj0Nt2.js +0 -127
  1838. package/dist/server-startup-post-attach-B7TcxkmO.js +0 -793
  1839. package/dist/server-ws-runtime-Cxk_CqMr.js +0 -374
  1840. package/dist/server.impl-CQ6dnx43.js +0 -2622
  1841. package/dist/session-cost-usage-GsYDNvka.js +0 -1600
  1842. package/dist/session-kill-http-CKkxZhhd.js +0 -121
  1843. package/dist/session-log-runtime-Bwc2Oijk.js +0 -1258
  1844. package/dist/session-override-CWbKiXiC.js +0 -134
  1845. package/dist/session-reset-model.runtime-CDFMjwWA.js +0 -144
  1846. package/dist/session-reset-service-SE0aK4cw.js +0 -651
  1847. package/dist/session-status.runtime-Df89I7Fk.js +0 -2
  1848. package/dist/session-store-RkvjJPMQ.js +0 -273
  1849. package/dist/session-store.runtime-C7P5asx7.js +0 -4
  1850. package/dist/session-subagent-reactivation.runtime-BhGUZG1Z.js +0 -2
  1851. package/dist/session-tab-registry-9rSuQ0Yz.js +0 -551
  1852. package/dist/session-utils-De8TIM0h.js +0 -1508
  1853. package/dist/sessions-6b9a00Tl.js +0 -1917
  1854. package/dist/sessions-CEPHczjC.js +0 -316
  1855. package/dist/sessions-CEojHc8b.js +0 -12736
  1856. package/dist/sessions-cleanup-BkG7_sq9.js +0 -165
  1857. package/dist/sessions-history-http-BjJEfjJa.js +0 -432
  1858. package/dist/sessions-patch-PwG5sknc.js +0 -401
  1859. package/dist/sessions-resolve-CSIrd_fi.js +0 -180
  1860. package/dist/sessions-table-8CbU7jXa.js +0 -161
  1861. package/dist/sessions.runtime-BYHMD0M7.js +0 -2
  1862. package/dist/set-BJDpe28W.js +0 -31
  1863. package/dist/set-image-CwTFx7PX.js +0 -17
  1864. package/dist/setup-B6LmeIms.js +0 -614
  1865. package/dist/setup-B_zxHfYu.js +0 -2
  1866. package/dist/setup-onboard-configure-help-fast-path-Bck3SKEH.js +0 -64
  1867. package/dist/setup.finalize-CmLYX-Rf.js +0 -586
  1868. package/dist/setup.gateway-config-H_89Msro.js +0 -281
  1869. package/dist/setup.migration-import-DVzyUjX6.js +0 -2
  1870. package/dist/setup.migration-import-DmJpqoqf.js +0 -200
  1871. package/dist/setup.post-install-migration-WPFWKXXg.js +0 -128
  1872. package/dist/shared-CUhu8NTs.js +0 -5
  1873. package/dist/shared-D-BN2JhY.js +0 -71
  1874. package/dist/shared-ES8nDIcn.js +0 -212
  1875. package/dist/simple-completion-runtime-BGZkWvKr.js +0 -206
  1876. package/dist/simple-completion-runtime-CM_IISYW.js +0 -2
  1877. package/dist/simple-completion-transport-Bo0u9dhp.js +0 -83
  1878. package/dist/snapshot-urls-C1KjRQD5.js +0 -317
  1879. package/dist/speech-core-Bas7e4h0.js +0 -119
  1880. package/dist/speech-provider-BonJQv5S.js +0 -227
  1881. package/dist/speech-provider-CwdKQmDv.js +0 -171
  1882. package/dist/speech-provider-DcQRnYhZ.js +0 -233
  1883. package/dist/stale-oauth-profile-shadows-C3aeAWfv.js +0 -186
  1884. package/dist/stale-oauth-profile-shadows-m5rb8dPc.js +0 -2
  1885. package/dist/standalone-runtime-registry-loader-B9n2LBKC.js +0 -59
  1886. package/dist/startup-context-DY7C4riM.js +0 -314
  1887. package/dist/status-6EPKat7p.js +0 -73
  1888. package/dist/status-C6Fa7Dsf.js +0 -2
  1889. package/dist/status-CNnxDQlM.js +0 -4
  1890. package/dist/status-D2Scvbc0.js +0 -3
  1891. package/dist/status-Ducanro3.js +0 -2
  1892. package/dist/status-_XX_6QVA.js +0 -466
  1893. package/dist/status-all-BP1u6vou.js +0 -573
  1894. package/dist/status-json-DPlOJ_ue.js +0 -15
  1895. package/dist/status-json-command-BT7EwVKj.js +0 -84
  1896. package/dist/status-message-Dzr9-MX-.js +0 -495
  1897. package/dist/status-message.runtime-DFezIt1d.js +0 -6
  1898. package/dist/status-prBlcUV5.js +0 -249
  1899. package/dist/status-queue.runtime-C1bmg2rl.js +0 -2
  1900. package/dist/status-runtime-shared-RjKIPEQ0.js +0 -289
  1901. package/dist/status-subagents.runtime-tsCCe4Ny.js +0 -32
  1902. package/dist/status-text-Bkeyg8Bf.js +0 -301
  1903. package/dist/status.command-D06_4ATq.js +0 -425
  1904. package/dist/status.command-dDEZM84a.js +0 -2
  1905. package/dist/status.command.text-runtime-WH9tP7yg.js +0 -15
  1906. package/dist/status.runtime-B76GaBIR.js +0 -2
  1907. package/dist/status.scan-Bc6clx0F.js +0 -72
  1908. package/dist/status.scan-overview-v_-AaFhC.js +0 -460
  1909. package/dist/status.scan.deps.runtime-BkH1HAb4.js +0 -19
  1910. package/dist/status.scan.fast-json-CrlfKKI3.js +0 -2
  1911. package/dist/status.scan.fast-json-D8v6zfP8.js +0 -163
  1912. package/dist/status.summary-DBhvgOPr.js +0 -276
  1913. package/dist/status.summary-hQV0PKFO.js +0 -2
  1914. package/dist/store-BClomp_4.js +0 -3
  1915. package/dist/store-BHqDPtNw.js +0 -2302
  1916. package/dist/stored-model-override-vm4CtQWX.js +0 -79
  1917. package/dist/subagent-announce-D244Q4w2.js +0 -353
  1918. package/dist/subagent-announce-delivery-qKZfF7Bs.js +0 -1369
  1919. package/dist/subagent-control-c87mVGUE.js +0 -492
  1920. package/dist/subagent-control.runtime-DfQtIsDb.js +0 -3
  1921. package/dist/subagent-hooks-B_UW5Len.js +0 -2
  1922. package/dist/subagent-hooks-CYvFWt_r.js +0 -230
  1923. package/dist/subagent-hooks-api-DZgaJf19.js +0 -23
  1924. package/dist/subagent-registry-BlcoCggo.js +0 -2627
  1925. package/dist/subagent-registry-CuObhNeO.js +0 -3
  1926. package/dist/subagent-session-cleanup-hFF8Z34s.js +0 -390
  1927. package/dist/system-CN_Knfqq.js +0 -111
  1928. package/dist/system-prompt-config-BmZlhYK9.js +0 -918
  1929. package/dist/talk-DrjGczYs.js +0 -2454
  1930. package/dist/target-id-BNpbyWkq.js +0 -107
  1931. package/dist/targets-CQcGo6u4.js +0 -267
  1932. package/dist/targets.runtime-DwcxNI-x.js +0 -2
  1933. package/dist/task-executor-CZg-qt4u.js +0 -349
  1934. package/dist/task-owner-access-Duem5jjb.js +0 -74
  1935. package/dist/task-registry-Cw8pc3Ry.js +0 -2362
  1936. package/dist/task-registry-delivery-runtime-HaiKqj0A.js +0 -2
  1937. package/dist/task-registry.maintenance-BLv3wpK9.js +0 -764
  1938. package/dist/task-registry.maintenance-CvlIcxE-.js +0 -2
  1939. package/dist/task-status-access-C5nDJSI4.js +0 -18
  1940. package/dist/tasks-D3CfEAlq.js +0 -548
  1941. package/dist/tasks-WKnE5fvr.js +0 -153
  1942. package/dist/tasks-audit-system-okJjcOjU.js +0 -210
  1943. package/dist/tasks-json-C-iUgWNu.js +0 -73
  1944. package/dist/tavily-web-search-provider.runtime-jpagljrA.js +0 -112
  1945. package/dist/text-report-BTsF3Pv3.js +0 -695
  1946. package/dist/text-transforms.runtime-CgH_pbcQ.js +0 -113
  1947. package/dist/thread-bindings-BWxpUE9U.js +0 -228
  1948. package/dist/tool-DhJbbm91.js +0 -143
  1949. package/dist/tool-dispatch-CpFUfblu.js +0 -155
  1950. package/dist/tool-images-C-tFlXjE.js +0 -247
  1951. package/dist/tool-plugin-3NejWxZW.js +0 -93
  1952. package/dist/tool-resolution-oW8Cbamd.js +0 -153
  1953. package/dist/tool-result-truncation-CWFGf7Eu.js +0 -498
  1954. package/dist/tool-schema-CMtc7PdZ.js +0 -40
  1955. package/dist/tool-schema-projection-DJRPEEvY.js +0 -215
  1956. package/dist/tool-split-E4RdK5jS.js +0 -323
  1957. package/dist/tools-BAl3JiNw.js +0 -901
  1958. package/dist/tools-DC8tCPxR.js +0 -579
  1959. package/dist/tools-catalog-Dzv9zaBD.js +0 -156
  1960. package/dist/tools-effective-CGvzyIL2.js +0 -442
  1961. package/dist/tools-effective-inventory-GI5N5Q9v.js +0 -379
  1962. package/dist/tools-invoke-CU2U0hNH.js +0 -51
  1963. package/dist/tools-invoke-http-8s3FiUy4.js +0 -68
  1964. package/dist/tools-invoke-shared-DIETrEY7.js +0 -200
  1965. package/dist/tools.runtime-Bnm8CI7w.js +0 -5
  1966. package/dist/transcript-rewrite-Buv2ITw4.js +0 -688
  1967. package/dist/transcripts-tool-BCFlLCFd.js +0 -2
  1968. package/dist/transcripts-tool-CWgNd0Uw.js +0 -656
  1969. package/dist/tts-Aguo4zC5.js +0 -3
  1970. package/dist/tts-Bf77cURn.js +0 -2
  1971. package/dist/tts-DnADOKOP.js +0 -194
  1972. package/dist/tts-runtime-MBSH-nOM.js +0 -1337
  1973. package/dist/tts.runtime-B-NR9osE.js +0 -2
  1974. package/dist/tts.runtime-Bo-QxKgx.js +0 -3
  1975. package/dist/tui-B0CdNmCz.js +0 -4860
  1976. package/dist/tui-ByRcXM3Z.js +0 -2
  1977. package/dist/tui-backend-C52BUoZI.js +0 -256
  1978. package/dist/tui-cli-BQHpZ4n0.js +0 -40
  1979. package/dist/typing-policy-XspVOezC.js +0 -199
  1980. package/dist/usage-BOYwzimH.js +0 -1113
  1981. package/dist/usage-BSmLrVWB.js +0 -623
  1982. package/dist/usage-format-CfzICmvv.js +0 -2
  1983. package/dist/usage-format-DPJKCPic.js +0 -394
  1984. package/dist/video-generation-provider-CdCTztQ7.js +0 -77
  1985. package/dist/video-generation-provider-MUUshUzz.js +0 -325
  1986. package/dist/video-generation-provider-XmzzTa6e.js +0 -297
  1987. package/dist/video-generation-provider-weiQUJE5.js +0 -64
  1988. package/dist/web-fetch-providers.runtime-tD9zqAS2.js +0 -41
  1989. package/dist/web-guarded-fetch-CyhQZ1yD.js +0 -2
  1990. package/dist/web-guarded-fetch-DIXHI-yJ.js +0 -58
  1991. package/dist/web-media-BPnTMYE5.js +0 -4
  1992. package/dist/web-media-DV_tCQiQ.js +0 -2
  1993. package/dist/web-media-DYydVGCK.js +0 -651
  1994. package/dist/web-provider-runtime-shared-h3M6Bqyg.js +0 -142
  1995. package/dist/web-search-provider-common-CEYWuDcp.js +0 -252
  1996. package/dist/web-search-providers.runtime-YrayP296.js +0 -41
  1997. package/dist/zod-schema.core-BGLctDlK.d.ts +0 -166
  1998. /package/dist/{acp-runtime-backend-CHZtaM6t.js → acp-runtime-backend-B83JR5Zf.js} +0 -0
  1999. /package/dist/{agent-turn-attachments-BYCRK86s.js → agent-turn-attachments-D5uJijuK.js} +0 -0
  2000. /package/dist/{auth-install-policy-t46tJ8jV.js → auth-install-policy-BIpdwrZ9.js} +0 -0
  2001. /package/dist/{cli-backends-BHXnrVN_.js → cli-backends-79CCRQ2a.js} +0 -0
  2002. /package/dist/{command-secret-targets-DZ0J2Wm3.js → command-secret-targets-BOJlcBil.js} +0 -0
  2003. /package/dist/{commands-DWp49Exc.js → commands-Dw9hwmVt.js} +0 -0
  2004. /package/dist/{commands-reset-hooks-MMq2dvff.js → commands-reset-hooks-epArfNOY.js} +0 -0
  2005. /package/dist/{delegate-Dkj_5OvH.js → delegate-Bw8NQXVr.js} +0 -0
  2006. /package/dist/{jobs-BGELIHcx.js → jobs-BIOTaq7l.js} +0 -0
  2007. /package/dist/{kimi-web-search-provider-4PlMYsPx.js → kimi-web-search-provider-Bzg_DiXO.js} +0 -0
  2008. /package/dist/{memory-host-search-Ds9GiNpf.js → memory-host-search-Dph0Mq-v.js} +0 -0
  2009. /package/dist/{minimax-web-search-provider-d5gTJUNg.js → minimax-web-search-provider-CETxDkkI.js} +0 -0
  2010. /package/dist/{model-selection-cli-CO6BHPiL.js → model-selection-cli-DizUvxeY.js} +0 -0
  2011. /package/dist/{provider-auth-choice-preference-f7Us6TQL.js → provider-auth-choice-preference-uJn1811S.js} +0 -0
  2012. /package/dist/{runtime-wfO9bV5y.js → runtime-BEVbpIgZ.js} +0 -0
  2013. /package/dist/{runtime-web-tools-B6vr1LZs.js → runtime-web-tools-Bf0aEe-F.js} +0 -0
  2014. /package/dist/{runtime-web-tools-fallback.runtime-Crs7KfH5.js → runtime-web-tools-fallback.runtime-DU6rTj6l.js} +0 -0
  2015. /package/dist/{session-subagent-reactivation-H5Rdwkyy.js → session-subagent-reactivation-Bb5SCi9J.js} +0 -0
  2016. /package/dist/{tavily-web-search-provider-DbdIzpMv.js → tavily-web-search-provider-CIEhV60D.js} +0 -0
@@ -1,3173 +0,0 @@
1
- import { a as normalizeLowercaseStringOrEmpty, c as normalizeOptionalString, s as normalizeOptionalLowercaseString } from "./string-coerce-DKw2K5wM.js";
2
- import { d as finiteSecondsToTimerSafeMilliseconds } from "./number-coercion-D1aDmIZp.js";
3
- import { i as formatErrorMessage } from "./errors-5ePGD43N.js";
4
- import { n as defaultRuntime } from "./runtime-BkTkFkXs.js";
5
- import { r as getChildLogger } from "./logger-DbKFYOlJ.js";
6
- import "./agent-scope-DYvAPpmY.js";
7
- import { a as isSubagentSessionKey, c as parseAgentSessionKey, r as isCronRunSessionKey } from "./session-key-utils-CdfsDYvz.js";
8
- import { d as resolveAgentIdFromSessionKey, f as resolveEventSessionKey, l as normalizeAgentId, v as toAgentStoreSessionKey } from "./session-key-CJf5_zWs.js";
9
- import { c as resolveDefaultAgentId } from "./agent-scope-config-BFfPgg3b.js";
10
- import { i as getRuntimeConfig } from "./io-DAZXanmU.js";
11
- import { t as parseDurationMs } from "./parse-duration-CI8nUnt1.js";
12
- import { t as SsrFBlockedError } from "./ssrf-CSnp9Gml.js";
13
- import { n as fetchWithSsrFGuard } from "./fetch-guard-CXmTAV-g.js";
14
- import { t as getGlobalHookRunner } from "./hook-runner-global-lWQvOg8l.js";
15
- import { n as resolveAgentMainSessionKey, t as canonicalizeMainSessionAlias } from "./main-session-BxJmPEXx.js";
16
- import { n as deliveryContextFromSession } from "./delivery-context.shared-CHlZnq4E.js";
17
- import { u as resolveStorePath } from "./paths-C79m3Aob.js";
18
- import { i as readSessionEntry, t as loadSessionStore } from "./store-load-Bs35PLbM.js";
19
- import { d as updateSessionStore, n as archiveRemovedSessionTranscripts } from "./store-BfSa-Tzr.js";
20
- import "./sessions-Cs11K_1i.js";
21
- import "./logging-4cW4D5jM.js";
22
- import { a as isRetryableHeartbeatBusySkipReason, o as requestHeartbeat } from "./heartbeat-wake-D8JKi1wr.js";
23
- import { a as enqueueSystemEvent } from "./system-events-DviB_CZO.js";
24
- import { a as failTaskRunByRunId, i as createRunningTaskRun, n as completeTaskRunByRunId } from "./detached-task-runtime-BqU7YXYT.js";
25
- import { t as abortAndDrainEmbeddedAgentRun } from "./runs-O0PIwYP5.js";
26
- import "./session-utils.fs-D-Ly08WB.js";
27
- import { i as cleanupArchivedSessionTranscripts } from "./session-transcript-files.fs-CusxaEql.js";
28
- import { i as enqueueCommandInLane } from "./command-queue-DFj-9GVz.js";
29
- import { i as markCronJobActive, t as clearCronJobActive } from "./active-jobs-BttwAMLk.js";
30
- import { s as resolveFailoverReasonFromError } from "./failover-error-B4bd4ckx.js";
31
- import { a as summarizeCronRunDiagnostics, i as normalizeCronRunDiagnostics, n as createCronRunDiagnosticsFromError } from "./run-diagnostics-BktAeAKt.js";
32
- import { a as resolveCronRunLogPath, o as resolveCronRunLogPruneOptions, t as appendCronRunLog } from "./run-log-ZukYrVT8.js";
33
- import { c as saveCronStore, i as loadCronStoreWithConfigJobs, l as cronSchedulingInputsEqual, o as resolveCronStorePath, s as saveCronQuarantineFile } from "./store-DvIbNKvA.js";
34
- import { r as resolveMainScopedEventSessionKey } from "./event-session-routing-C-GE4gxF.js";
35
- import { a as resolveCronDeliverySessionKey, o as resolveCronNotificationSessionKey, r as isInvalidCronSessionTargetIdError, s as resolveCronSessionTargetSessionKey, t as normalizeHttpWebhookUrl } from "./webhook-url-BsMR7rXc.js";
36
- import { n as normalizeOptionalAgentId } from "./normalize-CMNVNy-n.js";
37
- import { n as normalizeCronJobInput } from "./normalize-IR-mSix2.js";
38
- import { t as buildOutboundSessionContext } from "./session-context-CAmiBqOA.js";
39
- import { t as sendDurableMessageBatch } from "./send-aTxtLkJm.js";
40
- import "./runtime-DVAM7AFd.js";
41
- import "./embedded-agent-DZTa1YiK.js";
42
- import { n as resolveAgentOutboundIdentity } from "./identity-Cfcl4rZC.js";
43
- import { t as createOutboundSendDeps } from "./outbound-send-deps-B37JnKsh.js";
44
- import { t as cleanupBrowserSessionsForLifecycleEnd } from "./browser-lifecycle-cleanup-B9xL-d0w.js";
45
- import { t as getInvalidPersistedCronJobReason } from "./persisted-shape-BgpDdVwJ.js";
46
- import { t as computeNextRunAtMs } from "./schedule-DWmXvYor.js";
47
- import { t as runCronIsolatedAgentTurn } from "./isolated-agent-CNw6E3F0.js";
48
- import { n as resolveCronDeliveryPlan, r as resolveFailureDestination } from "./delivery-plan-ClRq-vNg.js";
49
- import { t as resolveCronAgentSessionKey } from "./session-key-D7FzZY3Y.js";
50
- import { _ as resolveJobPayloadTextForMain, a as computeJobPreviousRunAtMs, c as findJobOrThrow, d as isJobEnabled, f as nextWakeAtMs, g as resolveJobErrorBackoffUntilMs, 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, v as resolveDeliveryTarget } from "./jobs-BGELIHcx.js";
51
- import { t as createCronExecutionId } from "./run-id-BEdij8BZ.js";
52
- import { n as runHeartbeatOnce } from "./heartbeat-runner-DVwbVyft.js";
53
- import fs from "node:fs";
54
- //#region src/cron/service/locked.ts
55
- const storeLocks = /* @__PURE__ */ new Map();
56
- const resolveChain = (promise) => promise.then(() => void 0, () => void 0);
57
- async function locked(state, fn) {
58
- const storePath = state.deps.storePath;
59
- const storeOp = storeLocks.get(storePath) ?? Promise.resolve();
60
- const next = Promise.all([resolveChain(state.op), resolveChain(storeOp)]).then(fn);
61
- const keepAlive = resolveChain(next);
62
- state.op = keepAlive;
63
- storeLocks.set(storePath, keepAlive);
64
- return await next;
65
- }
66
- //#endregion
67
- //#region src/cron/normalize-job-identity.ts
68
- function normalizeCronJobIdentityFields(raw) {
69
- const rawId = normalizeOptionalString(raw.id) ?? "";
70
- const legacyJobId = normalizeOptionalString(raw.jobId) ?? "";
71
- const hadJobIdKey = "jobId" in raw;
72
- const normalizedId = rawId || legacyJobId;
73
- const idChanged = Boolean(normalizedId && raw.id !== normalizedId);
74
- if (idChanged) raw.id = normalizedId;
75
- if (hadJobIdKey) delete raw.jobId;
76
- return {
77
- mutated: idChanged || hadJobIdKey,
78
- legacyJobIdIssue: hadJobIdKey
79
- };
80
- }
81
- //#endregion
82
- //#region src/cron/service/store.ts
83
- function invalidateStaleNextRunOnScheduleChange(params) {
84
- const previousJob = params.previousJobsById.get(params.hydrated.id);
85
- if (!previousJob || cronSchedulingInputsEqual(previousJob, params.hydrated)) return;
86
- params.hydrated.state ??= {};
87
- params.hydrated.state.nextRunAtMs = void 0;
88
- }
89
- function warnInvalidPersistedCronJob(params) {
90
- const jobId = typeof params.raw.id === "string" ? params.raw.id : void 0;
91
- const dedupeKey = jobId ?? `index:${params.index}`;
92
- if (params.state.warnedInvalidPersistedJobKeys.has(dedupeKey)) return;
93
- params.state.warnedInvalidPersistedJobKeys.add(dedupeKey);
94
- params.state.deps.log.warn({
95
- storePath: params.state.deps.storePath,
96
- jobId,
97
- jobIndex: params.index,
98
- reason: params.reason
99
- }, "cron: quarantined invalid persisted job and skipped it from runtime");
100
- }
101
- async function getFileMtimeMs(path) {
102
- try {
103
- return (await fs.promises.stat(path)).mtimeMs;
104
- } catch {
105
- return null;
106
- }
107
- }
108
- async function flushPendingQuarantine(state, nowMs) {
109
- if (state.pendingQuarantineConfigJobs.length === 0) return null;
110
- try {
111
- const quarantinePath = await saveCronQuarantineFile({
112
- storePath: state.deps.storePath,
113
- entries: state.pendingQuarantineConfigJobs,
114
- nowMs
115
- });
116
- state.pendingQuarantineConfigJobs = [];
117
- state.lastQuarantineFailureWarnKey = null;
118
- return quarantinePath;
119
- } catch (error) {
120
- const errorMessage = error instanceof Error ? error.message : String(error);
121
- const warnKey = `${state.deps.storePath}\0${errorMessage}`;
122
- if (state.lastQuarantineFailureWarnKey !== warnKey) {
123
- state.lastQuarantineFailureWarnKey = warnKey;
124
- state.deps.log.warn({
125
- storePath: state.deps.storePath,
126
- error: errorMessage
127
- }, "cron: failed to quarantine malformed persisted jobs; skipping active store sanitization");
128
- }
129
- return null;
130
- }
131
- }
132
- async function ensureLoaded(state, opts) {
133
- if (state.store && !opts?.forceReload) return;
134
- const previousJobsById = /* @__PURE__ */ new Map();
135
- for (const job of state.store?.jobs ?? []) previousJobsById.set(job.id, job);
136
- const fileMtimeMs = await getFileMtimeMs(state.deps.storePath);
137
- const loaded = await loadCronStoreWithConfigJobs(state.deps.storePath);
138
- const loadedJobs = loaded.store.jobs ?? [];
139
- const jobs = [];
140
- const quarantinedConfigJobs = [...loaded.invalidConfigRows];
141
- for (const [index, job] of loadedJobs.entries()) {
142
- const raw = job;
143
- const rawConfigJob = loaded.configJobs[index] ?? structuredClone(raw);
144
- const sourceIndex = loaded.configJobIndexes[index] ?? index;
145
- const runtimeEntry = loaded.configJobRuntimeEntries[index];
146
- const { legacyJobIdIssue } = normalizeCronJobIdentityFields(raw);
147
- let normalized;
148
- try {
149
- normalized = normalizeCronJobInput(raw);
150
- } catch (error) {
151
- if (!isInvalidCronSessionTargetIdError(error)) throw error;
152
- normalized = null;
153
- state.deps.log.warn({
154
- storePath: state.deps.storePath,
155
- jobId: typeof raw.id === "string" ? raw.id : void 0
156
- }, "cron: job has invalid persisted sessionTarget; run fengming doctor --fix to repair");
157
- }
158
- const hydrated = normalized && typeof normalized === "object" ? normalized : job;
159
- const invalidReason = getInvalidPersistedCronJobReason(hydrated);
160
- if (invalidReason) {
161
- const quarantineEntry = {
162
- sourceIndex,
163
- reason: invalidReason,
164
- job: rawConfigJob
165
- };
166
- const runtimeState = runtimeEntry?.state ?? raw.state;
167
- if (runtimeState && typeof runtimeState === "object" && !Array.isArray(runtimeState)) quarantineEntry.state = structuredClone(runtimeState);
168
- const updatedAtMs = runtimeEntry?.updatedAtMs ?? raw.updatedAtMs;
169
- if (typeof updatedAtMs === "number" && Number.isFinite(updatedAtMs)) quarantineEntry.updatedAtMs = updatedAtMs;
170
- if (typeof runtimeEntry?.scheduleIdentity === "string") quarantineEntry.scheduleIdentity = runtimeEntry.scheduleIdentity;
171
- quarantinedConfigJobs.push(quarantineEntry);
172
- warnInvalidPersistedCronJob({
173
- state,
174
- raw,
175
- index: sourceIndex,
176
- reason: invalidReason
177
- });
178
- continue;
179
- }
180
- jobs.push(hydrated);
181
- if (legacyJobIdIssue) {
182
- const resolvedId = typeof hydrated.id === "string" ? hydrated.id : void 0;
183
- state.deps.log.warn({
184
- storePath: state.deps.storePath,
185
- jobId: resolvedId
186
- }, "cron: job used legacy jobId field; normalized id in memory (run fengming doctor --fix to persist canonical shape)");
187
- }
188
- if (typeof hydrated.enabled !== "boolean") hydrated.enabled = true;
189
- invalidateStaleNextRunOnScheduleChange({
190
- previousJobsById,
191
- hydrated
192
- });
193
- if (typeof hydrated.sessionTarget !== "string") {
194
- const payload = hydrated.payload;
195
- const payloadKind = payload && typeof payload === "object" && !Array.isArray(payload) && Object.hasOwn(payload, "kind") ? payload.kind : void 0;
196
- let defaulted;
197
- if (payloadKind === "systemEvent") defaulted = "main";
198
- else if (payloadKind === "agentTurn") defaulted = "isolated";
199
- if (defaulted) {
200
- hydrated.sessionTarget = defaulted;
201
- const jobId = typeof hydrated.id === "string" ? hydrated.id : void 0;
202
- const dedupeKey = jobId ?? "<unknown>";
203
- if (!state.warnedMissingSessionTargetJobIds.has(dedupeKey)) {
204
- state.warnedMissingSessionTargetJobIds.add(dedupeKey);
205
- state.deps.log.warn({
206
- storePath: state.deps.storePath,
207
- jobId,
208
- defaulted
209
- }, "cron: job missing sessionTarget; defaulted in memory (edit jobs.json to persist canonical shape)");
210
- }
211
- }
212
- }
213
- }
214
- state.store = {
215
- version: 1,
216
- jobs
217
- };
218
- state.storeLoadedAtMs = state.deps.nowMs();
219
- state.storeFileMtimeMs = fileMtimeMs;
220
- if (quarantinedConfigJobs.length > 0) {
221
- state.pendingQuarantineConfigJobs = quarantinedConfigJobs;
222
- const quarantinePath = await flushPendingQuarantine(state, state.storeLoadedAtMs);
223
- if (quarantinePath) try {
224
- await saveCronStore(state.deps.storePath, state.store);
225
- state.storeFileMtimeMs = await getFileMtimeMs(state.deps.storePath);
226
- state.deps.log.warn({
227
- storePath: state.deps.storePath,
228
- quarantinePath,
229
- quarantinedJobs: quarantinedConfigJobs.length
230
- }, "cron: sanitized active jobs.json after quarantining malformed persisted jobs");
231
- } catch (error) {
232
- state.deps.log.warn({
233
- storePath: state.deps.storePath,
234
- error: error instanceof Error ? error.message : String(error)
235
- }, "cron: failed to sanitize malformed persisted jobs after quarantine; continuing with quarantined in-memory view");
236
- }
237
- }
238
- if (!opts?.skipRecompute) recomputeNextRuns(state);
239
- }
240
- function warnIfDisabled(state, action) {
241
- if (state.deps.cronEnabled) return;
242
- if (state.warnedDisabled) return;
243
- state.warnedDisabled = true;
244
- state.deps.log.warn({
245
- enabled: false,
246
- action,
247
- storePath: state.deps.storePath
248
- }, "cron: scheduler disabled; jobs will not run automatically");
249
- }
250
- async function persist(state, opts) {
251
- if (!state.store) return;
252
- let flushedPendingQuarantine = false;
253
- if (state.pendingQuarantineConfigJobs.length > 0) {
254
- if (!await flushPendingQuarantine(state, state.deps.nowMs())) return;
255
- flushedPendingQuarantine = true;
256
- }
257
- const saveOpts = flushedPendingQuarantine ? { skipBackup: opts?.skipBackup } : opts;
258
- await saveCronStore(state.deps.storePath, state.store, saveOpts);
259
- state.storeFileMtimeMs = await getFileMtimeMs(state.deps.storePath);
260
- }
261
- //#endregion
262
- //#region src/cron/service/task-ledger.ts
263
- const CRON_TASK_RUNNING_PROGRESS_SUMMARY = "Running cron job.";
264
- //#endregion
265
- //#region src/agents/embedded-agent-runner/execution-phase.ts
266
- const EMBEDDED_AGENT_EXECUTION_PHASE_LABELS = {
267
- runner_entered: "runner-entered",
268
- workspace: "workspace",
269
- runtime_plugins: "runtime-plugins",
270
- before_agent_reply: "before-agent-reply",
271
- model_resolution: "model-resolution",
272
- auth: "auth",
273
- context_engine: "context-engine",
274
- attempt_dispatch: "attempt-dispatch",
275
- context_assembled: "context-assembled",
276
- turn_accepted: "turn-accepted",
277
- process_spawned: "process-spawned",
278
- tool_execution_started: "tool-execution-started",
279
- assistant_output_started: "assistant-output-started",
280
- model_call_started: "model-call-started"
281
- };
282
- function formatEmbeddedAgentExecutionPhase(phase) {
283
- return phase ? EMBEDDED_AGENT_EXECUTION_PHASE_LABELS[phase] : void 0;
284
- }
285
- //#endregion
286
- //#region src/cron/retry-hint.ts
287
- const TRANSIENT_PATTERNS = {
288
- rate_limit: /(rate[_ ]limit|too many requests|429|resource has been exhausted|cloudflare|tokens per day)/i,
289
- overloaded: /\b529\b|\boverloaded(?:_error)?\b|high demand|temporar(?:ily|y) overloaded|capacity exceeded/i,
290
- network: /(network|fetch failed|socket|econnreset|econnrefused|eai_again|enetdown|ehostunreach|ehostdown|enetreset|enetunreach|epipe)/i,
291
- timeout: /(timeout|etimedout)/i,
292
- server_error: /\b5\d{2}\b/
293
- };
294
- function resolveCronExecutionRetryHint(error, retryOn, classifiedReason) {
295
- if (!error || typeof error !== "string") return { retryable: false };
296
- const keys = retryOn?.length ? retryOn : Object.keys(TRANSIENT_PATTERNS);
297
- const classified = classifiedReason ?? void 0;
298
- if (classified && keys.includes(classified)) return {
299
- retryable: true,
300
- category: classified
301
- };
302
- for (const key of keys) if (TRANSIENT_PATTERNS[key]?.test(error)) return {
303
- retryable: true,
304
- category: key
305
- };
306
- return { retryable: false };
307
- }
308
- //#endregion
309
- //#region src/cron/session-reaper.ts
310
- /**
311
- * Cron session reaper — prunes completed isolated cron run sessions
312
- * from the session store after a configurable retention period.
313
- *
314
- * Pattern: sessions keyed as `...:cron:<jobId>:run:<uuid>` are ephemeral
315
- * run records. The base session (`...:cron:<jobId>`) is kept as-is.
316
- */
317
- const DEFAULT_RETENTION_MS = 24 * 36e5;
318
- /** Minimum interval between reaper sweeps (avoid running every timer tick). */
319
- const MIN_SWEEP_INTERVAL_MS = 5 * 6e4;
320
- const lastSweepAtMsByStore = /* @__PURE__ */ new Map();
321
- function resolveRetentionMs(cronConfig) {
322
- if (cronConfig?.sessionRetention === false) return null;
323
- const raw = cronConfig?.sessionRetention;
324
- if (typeof raw === "string" && raw.trim()) try {
325
- return parseDurationMs(raw.trim(), { defaultUnit: "h" });
326
- } catch {
327
- return DEFAULT_RETENTION_MS;
328
- }
329
- return DEFAULT_RETENTION_MS;
330
- }
331
- /**
332
- * Sweep the session store and prune expired cron run sessions.
333
- * Designed to be called from the cron timer tick — self-throttles via
334
- * MIN_SWEEP_INTERVAL_MS to avoid excessive I/O.
335
- *
336
- * Lock ordering: this function acquires the session-store file lock via
337
- * `updateSessionStore`. It must be called OUTSIDE of the cron service's
338
- * own `locked()` section to avoid lock-order inversions. The cron timer
339
- * calls this after all `locked()` sections have been released.
340
- */
341
- async function sweepCronRunSessions(params) {
342
- const now = params.nowMs ?? Date.now();
343
- const storePath = params.sessionStorePath;
344
- const lastSweepAtMs = lastSweepAtMsByStore.get(storePath) ?? 0;
345
- if (!params.force && now - lastSweepAtMs < MIN_SWEEP_INTERVAL_MS) return {
346
- swept: false,
347
- pruned: 0
348
- };
349
- const retentionMs = resolveRetentionMs(params.cronConfig);
350
- if (retentionMs === null) {
351
- lastSweepAtMsByStore.set(storePath, now);
352
- return {
353
- swept: false,
354
- pruned: 0
355
- };
356
- }
357
- let pruned = 0;
358
- const prunedSessions = /* @__PURE__ */ new Map();
359
- try {
360
- await updateSessionStore(storePath, (store) => {
361
- const cutoff = now - retentionMs;
362
- for (const key of Object.keys(store)) {
363
- if (!isCronRunSessionKey(key)) continue;
364
- const entry = store[key];
365
- if (!entry) continue;
366
- if ((entry.updatedAt ?? 0) < cutoff) {
367
- if (!prunedSessions.has(entry.sessionId) || entry.sessionFile) prunedSessions.set(entry.sessionId, entry.sessionFile);
368
- delete store[key];
369
- pruned++;
370
- }
371
- }
372
- });
373
- } catch (err) {
374
- params.log.warn({ err: String(err) }, "cron-reaper: failed to sweep session store");
375
- return {
376
- swept: false,
377
- pruned: 0
378
- };
379
- }
380
- lastSweepAtMsByStore.set(storePath, now);
381
- if (prunedSessions.size > 0) try {
382
- const store = loadSessionStore(storePath, { skipCache: true });
383
- const archivedDirs = await archiveRemovedSessionTranscripts({
384
- removedSessionFiles: prunedSessions,
385
- referencedSessionIds: new Set(Object.values(store).map((entry) => entry?.sessionId).filter((id) => Boolean(id))),
386
- storePath,
387
- reason: "deleted",
388
- restrictToStoreDir: true
389
- });
390
- if (archivedDirs.size > 0) await cleanupArchivedSessionTranscripts({
391
- directories: [...archivedDirs],
392
- olderThanMs: retentionMs,
393
- reason: "deleted",
394
- nowMs: now
395
- });
396
- } catch (err) {
397
- params.log.warn({ err: String(err) }, "cron-reaper: transcript cleanup failed");
398
- }
399
- if (pruned > 0) params.log.info({
400
- pruned,
401
- retentionMs
402
- }, `cron-reaper: pruned ${pruned} expired cron run session(s)`);
403
- return {
404
- swept: true,
405
- pruned
406
- };
407
- }
408
- //#endregion
409
- //#region src/cron/service/timeout-policy.ts
410
- /**
411
- * Maximum wall-clock time for a single job execution. Acts as a safety net
412
- * on top of per-provider/per-agent timeouts to prevent one stuck job from
413
- * wedging the entire cron lane.
414
- */
415
- const DEFAULT_JOB_TIMEOUT_MS = 10 * 6e4;
416
- /**
417
- * Agent turns can legitimately run much longer than generic cron jobs.
418
- * Use a larger safety ceiling when no explicit timeout is set.
419
- */
420
- const AGENT_TURN_SAFETY_TIMEOUT_MS = 60 * 6e4;
421
- function resolveCronJobTimeoutMs(job) {
422
- const configuredTimeoutMs = job.payload.kind === "agentTurn" && typeof job.payload.timeoutSeconds === "number" ? finiteSecondsToTimerSafeMilliseconds(job.payload.timeoutSeconds) ?? 0 : void 0;
423
- if (configuredTimeoutMs === void 0) return job.payload.kind === "agentTurn" ? AGENT_TURN_SAFETY_TIMEOUT_MS : DEFAULT_JOB_TIMEOUT_MS;
424
- return configuredTimeoutMs <= 0 ? void 0 : configuredTimeoutMs;
425
- }
426
- //#endregion
427
- //#region src/cron/service/timer.ts
428
- const MAX_TIMER_DELAY_MS = 6e4;
429
- const CRON_TIMEOUT_CLEANUP_GUARD_MS = 2e4;
430
- const CRON_AGENT_SETUP_WATCHDOG_MS = 6e4;
431
- const CRON_AGENT_PRE_EXECUTION_WATCHDOG_MS = 6e4;
432
- const CRON_AGENT_PRE_EXECUTION_MIN_WATCHDOG_MS = 1e3;
433
- /**
434
- * Minimum gap between consecutive fires of the same cron job. This is a
435
- * safety net that prevents spin-loops when `computeJobNextRunAtMs` returns
436
- * a value within the same second as the just-completed run. The guard
437
- * is intentionally generous (2 s) so it never masks a legitimate schedule
438
- * but always breaks an infinite re-trigger cycle. (See #17821)
439
- */
440
- const MIN_REFIRE_GAP_MS = 2e3;
441
- const DEFAULT_MISSED_JOB_STAGGER_MS = 5e3;
442
- const DEFAULT_MAX_MISSED_JOBS_PER_RESTART = 5;
443
- const DEFAULT_STARTUP_DEFERRED_MISSED_AGENT_JOB_DELAY_MS = 2 * 6e4;
444
- const DEFAULT_FAILURE_ALERT_AFTER = 2;
445
- const DEFAULT_FAILURE_ALERT_COOLDOWN_MS = 60 * 6e4;
446
- const CRON_AGENT_PHASE_WATCHDOG_STAGE = {
447
- runner_entered: "pre_execution",
448
- workspace: "pre_execution",
449
- runtime_plugins: "pre_execution",
450
- before_agent_reply: "execution",
451
- model_resolution: "pre_execution",
452
- auth: "pre_execution",
453
- context_engine: "pre_execution",
454
- attempt_dispatch: "execution",
455
- context_assembled: "execution",
456
- turn_accepted: "execution",
457
- process_spawned: "execution",
458
- tool_execution_started: "execution",
459
- assistant_output_started: "execution",
460
- model_call_started: "execution"
461
- };
462
- async function executeJobCoreWithTimeout(state, job) {
463
- const jobTimeoutMs = resolveCronJobTimeoutMs(job);
464
- if (typeof jobTimeoutMs !== "number") return await executeJobCore(state, job);
465
- const runAbortController = new AbortController();
466
- let timeoutReason;
467
- const timeoutMarker = Symbol("cron-timeout");
468
- let resolveTimeout;
469
- const timeoutPromise = new Promise((resolve) => {
470
- resolveTimeout = resolve;
471
- });
472
- const deferTimeoutUntilExecutionStart = job.sessionTarget !== "main" && job.payload.kind === "agentTurn";
473
- const triggerTimeout = (reason) => {
474
- if (runAbortController.signal.aborted) return;
475
- timeoutReason = reason;
476
- runAbortController.abort(reason);
477
- resolveTimeout?.(timeoutMarker);
478
- };
479
- const watchdog = createCronAgentWatchdog({
480
- deferUntilRunner: deferTimeoutUntilExecutionStart,
481
- jobTimeoutMs,
482
- triggerTimeout
483
- });
484
- const corePromise = executeJobCore(state, job, runAbortController.signal, {
485
- onExecutionStarted: deferTimeoutUntilExecutionStart ? watchdog.noteRunnerStarted : void 0,
486
- onExecutionPhase: deferTimeoutUntilExecutionStart ? watchdog.notePhase : void 0
487
- });
488
- watchdog.start();
489
- corePromise.catch((err) => {
490
- if (runAbortController.signal.aborted) state.deps.log.warn({
491
- jobId: job.id,
492
- err: String(err)
493
- }, "cron: job core rejected after timeout abort");
494
- });
495
- try {
496
- const first = await Promise.race([corePromise, timeoutPromise]);
497
- if (first !== timeoutMarker) return first;
498
- const activeExecution = watchdog.activeExecution();
499
- await cleanupTimedOutCronAgentRun(state, job, jobTimeoutMs, activeExecution);
500
- const error = timeoutReason ?? timeoutErrorMessage(activeExecution);
501
- return {
502
- status: "error",
503
- error,
504
- diagnostics: createCronRunDiagnosticsFromError("cron-setup", error, { nowMs: state.deps.nowMs })
505
- };
506
- } finally {
507
- watchdog.dispose();
508
- }
509
- }
510
- function createCronAgentWatchdog(params) {
511
- let state = params.deferUntilRunner ? "waiting_for_runner" : "executing";
512
- let timeoutId;
513
- let setupTimeoutId;
514
- let preExecutionTimeoutId;
515
- let activeExecution;
516
- const setTimedOut = (reason) => {
517
- if (state === "timed_out" || state === "disposed") return;
518
- state = "timed_out";
519
- params.triggerTimeout(reason);
520
- };
521
- const startTimeout = () => {
522
- if (timeoutId || state === "disposed") return;
523
- timeoutId = setTimeout(() => {
524
- setTimedOut(timeoutErrorMessage(activeExecution));
525
- }, params.jobTimeoutMs);
526
- };
527
- const clearSetupTimeout = () => {
528
- if (!setupTimeoutId) return;
529
- clearTimeout(setupTimeoutId);
530
- setupTimeoutId = void 0;
531
- };
532
- const clearPreExecutionTimeout = () => {
533
- if (!preExecutionTimeoutId) return;
534
- clearTimeout(preExecutionTimeoutId);
535
- preExecutionTimeoutId = void 0;
536
- };
537
- const startPreExecutionTimeout = () => {
538
- if (preExecutionTimeoutId || state !== "waiting_for_execution") return;
539
- preExecutionTimeoutId = setTimeout(() => {
540
- if (state === "waiting_for_execution") setTimedOut(preExecutionTimeoutErrorMessage(activeExecution));
541
- }, resolveCronAgentPreExecutionWatchdogMs(params.jobTimeoutMs));
542
- };
543
- const noteExecutionProgress = (info) => {
544
- if (!info) return;
545
- const previousPhase = activeExecution?.phase;
546
- activeExecution = {
547
- ...activeExecution,
548
- ...info
549
- };
550
- const stage = info.phase ? CRON_AGENT_PHASE_WATCHDOG_STAGE[info.phase] : void 0;
551
- if (state === "executing" && previousPhase === "before_agent_reply" && stage === "pre_execution") {
552
- state = "waiting_for_execution";
553
- startPreExecutionTimeout();
554
- return;
555
- }
556
- if (stage === "execution" || info.firstModelCallStarted) {
557
- state = "executing";
558
- clearPreExecutionTimeout();
559
- }
560
- };
561
- return {
562
- start: () => {
563
- if (params.deferUntilRunner) {
564
- setupTimeoutId = setTimeout(() => {
565
- if (state === "waiting_for_runner") setTimedOut(setupTimeoutErrorMessage(activeExecution));
566
- }, CRON_AGENT_SETUP_WATCHDOG_MS);
567
- return;
568
- }
569
- startTimeout();
570
- },
571
- noteRunnerStarted: (info) => {
572
- if (state === "disposed" || state === "timed_out") return;
573
- clearSetupTimeout();
574
- startTimeout();
575
- if (state !== "executing") state = "waiting_for_execution";
576
- noteExecutionProgress(info);
577
- startPreExecutionTimeout();
578
- },
579
- notePhase: (info) => {
580
- if (state === "disposed" || state === "timed_out") return;
581
- noteExecutionProgress(info);
582
- },
583
- activeExecution: () => activeExecution,
584
- dispose: () => {
585
- state = "disposed";
586
- if (timeoutId) clearTimeout(timeoutId);
587
- clearSetupTimeout();
588
- clearPreExecutionTimeout();
589
- }
590
- };
591
- }
592
- async function cleanupTimedOutCronAgentRun(state, job, timeoutMs, execution) {
593
- if (!state.deps.cleanupTimedOutAgentRun) return;
594
- let settleTimer;
595
- const cleanupPromise = state.deps.cleanupTimedOutAgentRun({
596
- job,
597
- timeoutMs,
598
- execution
599
- });
600
- const settleTimeout = new Promise((resolve) => {
601
- settleTimer = setTimeout(resolve, CRON_TIMEOUT_CLEANUP_GUARD_MS);
602
- });
603
- try {
604
- await Promise.race([cleanupPromise, settleTimeout]);
605
- } catch (err) {
606
- state.deps.log.warn({
607
- jobId: job.id,
608
- err: String(err)
609
- }, "cron: timed-out agent cleanup failed");
610
- } finally {
611
- if (settleTimer) clearTimeout(settleTimer);
612
- }
613
- }
614
- function resolveRunConcurrency(state) {
615
- const raw = state.deps.cronConfig?.maxConcurrentRuns;
616
- if (typeof raw !== "number" || !Number.isFinite(raw)) return 1;
617
- return Math.max(1, Math.floor(raw));
618
- }
619
- function timeoutErrorMessage(execution) {
620
- const phase = formatCronAgentExecutionPhase(execution);
621
- if (!phase) return "cron: job execution timed out";
622
- return `cron: job execution timed out (last phase: ${phase})`;
623
- }
624
- function setupTimeoutErrorMessage(execution) {
625
- const phase = formatCronAgentExecutionPhase(execution);
626
- if (!phase) return "cron: isolated agent setup timed out before runner start";
627
- return `cron: isolated agent setup timed out before runner start (last phase: ${phase})`;
628
- }
629
- function preExecutionTimeoutErrorMessage(execution) {
630
- const phase = formatCronAgentExecutionPhase(execution);
631
- if (!phase) return "cron: isolated agent run stalled before execution start";
632
- return `cron: isolated agent run stalled before execution start (last phase: ${phase})`;
633
- }
634
- function formatCronAgentExecutionPhase(execution) {
635
- return formatEmbeddedAgentExecutionPhase(execution?.phase);
636
- }
637
- function resolveCronAgentPreExecutionWatchdogMs(jobTimeoutMs) {
638
- return Math.max(CRON_AGENT_PRE_EXECUTION_MIN_WATCHDOG_MS, Math.min(CRON_AGENT_PRE_EXECUTION_WATCHDOG_MS, Math.floor(jobTimeoutMs / 2)));
639
- }
640
- function abortErrorMessage(signal) {
641
- const reason = signal?.reason;
642
- if (typeof reason === "string" && reason.trim()) return reason.trim();
643
- return timeoutErrorMessage();
644
- }
645
- function isAbortError(err) {
646
- if (!(err instanceof Error)) return false;
647
- return err.name === "AbortError" || err.message === timeoutErrorMessage();
648
- }
649
- function normalizeCronRunErrorText(err) {
650
- if (isAbortError(err)) return timeoutErrorMessage();
651
- if (typeof err === "string") return err === `Error: ${timeoutErrorMessage()}` ? timeoutErrorMessage() : err;
652
- return String(err);
653
- }
654
- function normalizeCronLaneSegment(value, fallback) {
655
- return normalizeOptionalLowercaseString(value)?.replace(/[^a-z0-9_-]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 64) || fallback;
656
- }
657
- function resolveMainSessionCronRunSessionKey(job, startedAt) {
658
- const explicitAgentId = job.agentId?.trim();
659
- return `agent:${normalizeAgentId(explicitAgentId || resolveAgentIdFromSessionKey(job.sessionKey))}:cron:${normalizeCronLaneSegment(job.id, "job")}:run:${normalizeCronLaneSegment(String(Math.max(0, Math.floor(startedAt))), "run")}`;
660
- }
661
- function resolveMainSessionCronDeliveryContext(state, job) {
662
- const targetSessionKey = job.sessionKey?.trim();
663
- if (!targetSessionKey) return;
664
- const explicitAgentId = job.agentId?.trim();
665
- const agentId = normalizeAgentId(explicitAgentId || resolveAgentIdFromSessionKey(targetSessionKey));
666
- const storePath = state.deps.resolveSessionStorePath?.(agentId) ?? state.deps.sessionStorePath;
667
- if (!storePath) return;
668
- try {
669
- return deliveryContextFromSession(readSessionEntry(storePath, targetSessionKey));
670
- } catch {
671
- return;
672
- }
673
- }
674
- function resolveCronTaskChildSessionKey(params) {
675
- if (params.job.sessionTarget === "main") return resolveMainSessionCronRunSessionKey(params.job, params.startedAt);
676
- const explicitSessionKey = params.job.sessionKey?.trim();
677
- if (explicitSessionKey) return explicitSessionKey;
678
- if (params.job.sessionTarget !== "isolated") return;
679
- return resolveCronAgentSessionKey({
680
- sessionKey: `cron:${params.job.id}`,
681
- agentId: params.job.agentId ?? params.state.deps.defaultAgentId ?? "main"
682
- });
683
- }
684
- function tryCreateCronTaskRun(params) {
685
- const runId = createCronExecutionId(params.job.id, params.startedAt);
686
- try {
687
- createRunningTaskRun({
688
- runtime: "cron",
689
- sourceId: params.job.id,
690
- ownerKey: "",
691
- scopeKind: "system",
692
- childSessionKey: resolveCronTaskChildSessionKey(params),
693
- agentId: params.job.agentId,
694
- runId,
695
- label: params.job.name,
696
- task: params.job.name || params.job.id,
697
- deliveryStatus: "not_applicable",
698
- notifyPolicy: "silent",
699
- startedAt: params.startedAt,
700
- lastEventAt: params.startedAt,
701
- progressSummary: CRON_TASK_RUNNING_PROGRESS_SUMMARY
702
- });
703
- return runId;
704
- } catch (error) {
705
- params.state.deps.log.warn({
706
- jobId: params.job.id,
707
- error
708
- }, "cron: failed to create task ledger record");
709
- return;
710
- }
711
- }
712
- function tryFinishCronTaskRun(state, result) {
713
- if (!result.taskRunId) return;
714
- try {
715
- if (result.status === "ok" || result.status === "skipped") {
716
- completeTaskRunByRunId({
717
- runId: result.taskRunId,
718
- runtime: "cron",
719
- endedAt: result.endedAt,
720
- lastEventAt: result.endedAt,
721
- terminalSummary: result.summary ?? void 0
722
- });
723
- return;
724
- }
725
- failTaskRunByRunId({
726
- runId: result.taskRunId,
727
- runtime: "cron",
728
- status: normalizeCronRunErrorText(result.error) === timeoutErrorMessage() ? "timed_out" : "failed",
729
- endedAt: result.endedAt,
730
- lastEventAt: result.endedAt,
731
- error: result.status === "error" ? normalizeCronRunErrorText(result.error) : void 0,
732
- terminalSummary: result.summary ?? void 0
733
- });
734
- } catch (error) {
735
- state.deps.log.warn({
736
- runId: result.taskRunId,
737
- jobStatus: result.status,
738
- error
739
- }, "cron: failed to update task ledger record");
740
- }
741
- }
742
- /** Default max retries for cron jobs on transient errors (#24355). */
743
- const DEFAULT_MAX_TRANSIENT_RETRIES = 3;
744
- function resolveCronNextRunWithLowerBound(params) {
745
- if (params.naturalNext === void 0) {
746
- params.state.deps.log.warn({
747
- jobId: params.job.id,
748
- jobName: params.job.name,
749
- context: params.context
750
- }, "cron: next run unresolved; clearing schedule to avoid a refire loop");
751
- return;
752
- }
753
- return Math.max(params.naturalNext, params.lowerBoundMs);
754
- }
755
- function resolveRetryConfig(cronConfig) {
756
- const retry = cronConfig?.retry;
757
- return {
758
- maxAttempts: typeof retry?.maxAttempts === "number" ? retry.maxAttempts : DEFAULT_MAX_TRANSIENT_RETRIES,
759
- backoffMs: Array.isArray(retry?.backoffMs) && retry.backoffMs.length > 0 ? retry.backoffMs : DEFAULT_ERROR_BACKOFF_SCHEDULE_MS.slice(0, 3),
760
- retryOn: Array.isArray(retry?.retryOn) && retry.retryOn.length > 0 ? retry.retryOn : void 0
761
- };
762
- }
763
- function resolveTransientCronRetryDecision(params) {
764
- const retryConfig = resolveRetryConfig(params.cronConfig);
765
- const retryHint = resolveCronExecutionRetryHint(params.error, retryConfig.retryOn, params.lastErrorReason);
766
- const consecutiveErrors = params.consecutiveErrors ?? 0;
767
- if (!retryHint.retryable) return {
768
- retryable: false,
769
- consecutiveErrors,
770
- retryCategory: retryHint.category,
771
- reason: "permanent error"
772
- };
773
- if (consecutiveErrors > retryConfig.maxAttempts) return {
774
- retryable: false,
775
- consecutiveErrors,
776
- retryCategory: retryHint.category,
777
- reason: "max retries exhausted"
778
- };
779
- return {
780
- retryable: true,
781
- consecutiveErrors,
782
- retryCategory: retryHint.category,
783
- backoffMs: errorBackoffMs(consecutiveErrors, retryConfig.backoffMs),
784
- reason: "transient retry"
785
- };
786
- }
787
- function resolveDeliveryState(params) {
788
- const primaryDeliveryRequested = resolveCronDeliveryPlan(params.job).requested;
789
- const alternateFailureNotificationRequested = params.runStatus === "error" && params.job.delivery?.bestEffort !== true && resolveFailureDestination(params.job, params.globalFailureDestination) !== null;
790
- if (!primaryDeliveryRequested) return {
791
- status: "not-requested",
792
- failureNotification: { status: alternateFailureNotificationRequested ? "unknown" : "not-requested" }
793
- };
794
- if (params.runStatus === "error") {
795
- const failureNotification = alternateFailureNotificationRequested ? { status: "unknown" } : { status: "delivered" };
796
- if (params.delivered === true) return {
797
- delivered: false,
798
- status: "not-delivered",
799
- error: params.error,
800
- failureNotification: alternateFailureNotificationRequested ? failureNotification : {
801
- delivered: true,
802
- status: "delivered"
803
- }
804
- };
805
- if (params.delivered === false) return {
806
- delivered: false,
807
- status: "not-delivered",
808
- error: params.error,
809
- failureNotification: alternateFailureNotificationRequested ? failureNotification : {
810
- delivered: false,
811
- status: "not-delivered",
812
- ...params.error ? { error: params.error } : {}
813
- }
814
- };
815
- return {
816
- status: "unknown",
817
- error: params.error,
818
- failureNotification: { status: "unknown" }
819
- };
820
- }
821
- if (params.delivered === true) return {
822
- delivered: true,
823
- status: "delivered",
824
- failureNotification: { status: "not-requested" }
825
- };
826
- if (params.delivered === false) return {
827
- delivered: false,
828
- status: "not-delivered",
829
- error: params.error,
830
- failureNotification: { status: "not-requested" }
831
- };
832
- return {
833
- status: "unknown",
834
- failureNotification: { status: "not-requested" }
835
- };
836
- }
837
- function failureNotificationDeliveryFromJobState(job) {
838
- const status = job.state.lastFailureNotificationDeliveryStatus;
839
- if (!status || status === "not-requested") return;
840
- return {
841
- delivered: job.state.lastFailureNotificationDelivered,
842
- status,
843
- error: job.state.lastFailureNotificationDeliveryError
844
- };
845
- }
846
- function normalizeCronMessageChannel(input) {
847
- const channel = normalizeOptionalLowercaseString(input);
848
- return channel ? channel : void 0;
849
- }
850
- function normalizeTo(input) {
851
- if (typeof input !== "string") return;
852
- const to = input.trim();
853
- return to ? to : void 0;
854
- }
855
- function clampPositiveInt(value, fallback) {
856
- if (typeof value !== "number" || !Number.isFinite(value)) return fallback;
857
- const floored = Math.floor(value);
858
- return floored >= 1 ? floored : fallback;
859
- }
860
- function clampNonNegativeInt(value, fallback) {
861
- if (typeof value !== "number" || !Number.isFinite(value)) return fallback;
862
- const floored = Math.floor(value);
863
- return floored >= 0 ? floored : fallback;
864
- }
865
- function resolveFailureAlert(state, job) {
866
- const globalConfig = state.deps.cronConfig?.failureAlert;
867
- const jobConfig = job.failureAlert === false ? void 0 : job.failureAlert;
868
- if (job.failureAlert === false) return null;
869
- if (!jobConfig && globalConfig?.enabled !== true) return null;
870
- const mode = jobConfig?.mode ?? globalConfig?.mode;
871
- const explicitTo = normalizeTo(jobConfig?.to);
872
- return {
873
- after: clampPositiveInt(jobConfig?.after ?? globalConfig?.after, DEFAULT_FAILURE_ALERT_AFTER),
874
- cooldownMs: clampNonNegativeInt(jobConfig?.cooldownMs ?? globalConfig?.cooldownMs, DEFAULT_FAILURE_ALERT_COOLDOWN_MS),
875
- channel: normalizeCronMessageChannel(jobConfig?.channel) ?? normalizeCronMessageChannel(job.delivery?.channel) ?? "last",
876
- to: mode === "webhook" ? explicitTo : explicitTo ?? normalizeTo(job.delivery?.to),
877
- mode,
878
- accountId: jobConfig?.accountId ?? globalConfig?.accountId,
879
- includeSkipped: jobConfig?.includeSkipped ?? globalConfig?.includeSkipped ?? false
880
- };
881
- }
882
- function emitFailureAlert(state, params) {
883
- const safeJobName = params.job.name || params.job.id;
884
- const truncatedError = (params.error?.trim() || "unknown reason").slice(0, 200);
885
- const errorReason = params.status === "error" && typeof params.error === "string" ? resolveFailoverReasonFromError(params.error, params.provider) ?? void 0 : void 0;
886
- const statusVerb = params.status === "skipped" ? "skipped" : "failed";
887
- const detailLabel = params.status === "skipped" ? "Skip reason" : "Last error";
888
- const text = [
889
- `Cron job "${safeJobName}" ${statusVerb} ${params.consecutiveErrors} times`,
890
- ...errorReason ? [`Cause: ${errorReason}`] : [],
891
- `${detailLabel}: ${truncatedError}`
892
- ].join("\n");
893
- if (state.deps.sendCronFailureAlert) {
894
- state.deps.sendCronFailureAlert({
895
- job: params.job,
896
- text,
897
- channel: params.channel,
898
- to: params.to,
899
- mode: params.mode,
900
- accountId: params.accountId
901
- }).catch((err) => {
902
- state.deps.log.warn({
903
- jobId: params.job.id,
904
- err: String(err)
905
- }, "cron: failure alert delivery failed");
906
- });
907
- return;
908
- }
909
- state.deps.enqueueSystemEvent(text, { agentId: params.job.agentId });
910
- if (params.job.wakeMode === "now") state.deps.requestHeartbeat({
911
- source: "cron",
912
- intent: "immediate",
913
- reason: `cron:${params.job.id}:failure-alert`
914
- });
915
- }
916
- function maybeEmitFailureAlert(state, params) {
917
- if (!params.alertConfig || params.consecutiveCount < params.alertConfig.after) return;
918
- if (params.job.delivery?.bestEffort === true) return;
919
- const now = state.deps.nowMs();
920
- const lastAlert = params.job.state.lastFailureAlertAtMs;
921
- if (typeof lastAlert === "number" && now - lastAlert < Math.max(0, params.alertConfig.cooldownMs)) return;
922
- emitFailureAlert(state, {
923
- job: params.job,
924
- error: params.error,
925
- consecutiveErrors: params.consecutiveCount,
926
- channel: params.alertConfig.channel,
927
- to: params.alertConfig.to,
928
- mode: params.alertConfig.mode,
929
- accountId: params.alertConfig.accountId,
930
- status: params.status,
931
- provider: params.provider
932
- });
933
- params.job.state.lastFailureAlertAtMs = now;
934
- }
935
- /**
936
- * Apply the result of a job execution to the job's state.
937
- * Handles consecutive error tracking, exponential backoff, one-shot disable,
938
- * and nextRunAtMs computation. Returns `true` if the job should be deleted.
939
- */
940
- function applyJobResult(state, job, result, opts) {
941
- const prevLastRunAtMs = job.state.lastRunAtMs;
942
- const computeNextWithPreservedLastRun = (nowMs) => {
943
- const saved = job.state.lastRunAtMs;
944
- job.state.lastRunAtMs = prevLastRunAtMs;
945
- try {
946
- return computeJobNextRunAtMs(job, nowMs);
947
- } finally {
948
- job.state.lastRunAtMs = saved;
949
- }
950
- };
951
- job.state.runningAtMs = void 0;
952
- job.state.lastRunAtMs = result.startedAt;
953
- job.state.lastRunStatus = result.status;
954
- job.state.lastStatus = result.status;
955
- job.state.lastDurationMs = Math.max(0, result.endedAt - result.startedAt);
956
- job.state.lastError = result.error;
957
- job.state.lastDiagnostics = normalizeCronRunDiagnostics(result.diagnostics);
958
- job.state.lastDiagnosticSummary = summarizeCronRunDiagnostics(job.state.lastDiagnostics);
959
- job.state.lastErrorReason = result.status === "error" && typeof result.error === "string" ? resolveFailoverReasonFromError(result.error, result.provider) ?? void 0 : void 0;
960
- if (result.status === "error") state.deps.log.warn({
961
- jobId: job.id,
962
- jobName: job.name,
963
- error: result.error,
964
- diagnosticsSummary: job.state.lastDiagnosticSummary
965
- }, "cron: job run returned error status");
966
- const deliveryState = resolveDeliveryState({
967
- job,
968
- runStatus: result.status,
969
- delivered: result.delivered,
970
- error: result.error,
971
- globalFailureDestination: state.deps.cronConfig?.failureDestination
972
- });
973
- job.state.lastDelivered = deliveryState.delivered;
974
- job.state.lastDeliveryStatus = deliveryState.status;
975
- job.state.lastDeliveryError = deliveryState.status === "not-delivered" && deliveryState.error ? deliveryState.error : void 0;
976
- job.state.lastFailureNotificationDelivered = deliveryState.failureNotification.delivered;
977
- job.state.lastFailureNotificationDeliveryStatus = deliveryState.failureNotification.status;
978
- job.state.lastFailureNotificationDeliveryError = deliveryState.failureNotification.error;
979
- job.updatedAtMs = result.endedAt;
980
- const previousConsecutiveErrors = job.state.consecutiveErrors ?? 0;
981
- const alertConfig = resolveFailureAlert(state, job);
982
- if (result.status === "error") {
983
- job.state.consecutiveErrors = (job.state.consecutiveErrors ?? 0) + 1;
984
- job.state.consecutiveSkipped = 0;
985
- maybeEmitFailureAlert(state, {
986
- job,
987
- alertConfig,
988
- status: "error",
989
- error: result.error,
990
- provider: result.provider,
991
- consecutiveCount: job.state.consecutiveErrors
992
- });
993
- } else if (result.status === "skipped") {
994
- job.state.consecutiveErrors = 0;
995
- job.state.consecutiveSkipped = (job.state.consecutiveSkipped ?? 0) + 1;
996
- if (alertConfig?.includeSkipped) maybeEmitFailureAlert(state, {
997
- job,
998
- alertConfig,
999
- status: "skipped",
1000
- error: result.error,
1001
- provider: result.provider,
1002
- consecutiveCount: job.state.consecutiveSkipped
1003
- });
1004
- else job.state.lastFailureAlertAtMs = void 0;
1005
- } else {
1006
- job.state.consecutiveErrors = 0;
1007
- job.state.consecutiveSkipped = 0;
1008
- job.state.lastFailureAlertAtMs = void 0;
1009
- }
1010
- const shouldDelete = job.schedule.kind === "at" && job.deleteAfterRun === true && result.status === "ok";
1011
- if (!shouldDelete) if (job.schedule.kind === "at") {
1012
- if (result.status === "ok" || result.status === "skipped") {
1013
- job.enabled = false;
1014
- job.state.nextRunAtMs = void 0;
1015
- } else if (result.status === "error") {
1016
- const retryDecision = resolveTransientCronRetryDecision({
1017
- cronConfig: state.deps.cronConfig,
1018
- error: result.error,
1019
- lastErrorReason: job.state.lastErrorReason,
1020
- consecutiveErrors: job.state.consecutiveErrors
1021
- });
1022
- if (retryDecision.retryable && retryDecision.backoffMs !== void 0) {
1023
- job.state.nextRunAtMs = result.endedAt + retryDecision.backoffMs;
1024
- state.deps.log.info({
1025
- jobId: job.id,
1026
- jobName: job.name,
1027
- consecutiveErrors: retryDecision.consecutiveErrors,
1028
- backoffMs: retryDecision.backoffMs,
1029
- nextRunAtMs: job.state.nextRunAtMs,
1030
- retryCategory: retryDecision.retryCategory
1031
- }, "cron: scheduling one-shot retry after transient error");
1032
- } else {
1033
- job.enabled = false;
1034
- job.state.nextRunAtMs = void 0;
1035
- state.deps.log.warn({
1036
- jobId: job.id,
1037
- jobName: job.name,
1038
- consecutiveErrors: retryDecision.consecutiveErrors,
1039
- error: result.error,
1040
- reason: retryDecision.reason,
1041
- retryCategory: retryDecision.retryCategory
1042
- }, "cron: disabling one-shot job after error");
1043
- }
1044
- }
1045
- } else if (result.status === "error" && isJobEnabled(job)) {
1046
- const retryDecision = resolveTransientCronRetryDecision({
1047
- cronConfig: state.deps.cronConfig,
1048
- error: result.error,
1049
- lastErrorReason: job.state.lastErrorReason,
1050
- consecutiveErrors: job.state.consecutiveErrors
1051
- });
1052
- let normalNext;
1053
- let normalNextComputed = false;
1054
- const computeNormalNext = () => {
1055
- if (!normalNextComputed) {
1056
- try {
1057
- normalNext = opts?.preserveSchedule && job.schedule.kind === "every" ? computeNextWithPreservedLastRun(result.endedAt) : (retryDecision.retryable || previousConsecutiveErrors > 0) && job.schedule.kind === "every" ? computeNextRunAtMs(job.schedule, result.endedAt) : computeJobNextRunAtMs(job, result.endedAt);
1058
- } catch (err) {
1059
- recordScheduleComputeError({
1060
- state,
1061
- job,
1062
- err
1063
- });
1064
- }
1065
- normalNextComputed = true;
1066
- }
1067
- return normalNext;
1068
- };
1069
- if (!opts?.preserveSchedule && retryDecision.retryable && retryDecision.backoffMs !== void 0) {
1070
- normalNext = computeNormalNext();
1071
- const retryNextRunAtMs = result.endedAt + retryDecision.backoffMs;
1072
- if (normalNext === void 0) {} else if (retryNextRunAtMs < normalNext) {
1073
- job.state.nextRunAtMs = retryNextRunAtMs;
1074
- state.deps.log.info({
1075
- jobId: job.id,
1076
- jobName: job.name,
1077
- consecutiveErrors: retryDecision.consecutiveErrors,
1078
- backoffMs: retryDecision.backoffMs,
1079
- nextRunAtMs: job.state.nextRunAtMs,
1080
- normalNextRunAtMs: normalNext,
1081
- retryCategory: retryDecision.retryCategory
1082
- }, "cron: scheduling recurring retry after transient error");
1083
- return shouldDelete;
1084
- }
1085
- }
1086
- const backoff = errorBackoffMs(job.state.consecutiveErrors ?? 1);
1087
- normalNext = computeNormalNext();
1088
- const backoffNext = result.endedAt + backoff;
1089
- job.state.nextRunAtMs = job.schedule.kind === "cron" ? resolveCronNextRunWithLowerBound({
1090
- state,
1091
- job,
1092
- naturalNext: normalNext,
1093
- lowerBoundMs: backoffNext,
1094
- context: "error_backoff"
1095
- }) : normalNext !== void 0 ? Math.max(normalNext, backoffNext) : backoffNext;
1096
- state.deps.log.info({
1097
- jobId: job.id,
1098
- consecutiveErrors: job.state.consecutiveErrors,
1099
- backoffMs: backoff,
1100
- nextRunAtMs: job.state.nextRunAtMs
1101
- }, "cron: applying error backoff");
1102
- } else if (isJobEnabled(job)) {
1103
- let naturalNext;
1104
- try {
1105
- naturalNext = opts?.preserveSchedule && job.schedule.kind === "every" ? computeNextWithPreservedLastRun(result.endedAt) : previousConsecutiveErrors > 0 && job.schedule.kind === "every" ? computeNextRunAtMs(job.schedule, result.endedAt) : computeJobNextRunAtMs(job, result.endedAt);
1106
- } catch (err) {
1107
- recordScheduleComputeError({
1108
- state,
1109
- job,
1110
- err
1111
- });
1112
- }
1113
- if (job.schedule.kind === "cron") {
1114
- const minNext = result.endedAt + MIN_REFIRE_GAP_MS;
1115
- job.state.nextRunAtMs = resolveCronNextRunWithLowerBound({
1116
- state,
1117
- job,
1118
- naturalNext,
1119
- lowerBoundMs: minNext,
1120
- context: "completion"
1121
- });
1122
- } else job.state.nextRunAtMs = naturalNext;
1123
- } else job.state.nextRunAtMs = void 0;
1124
- return shouldDelete;
1125
- }
1126
- function applyOutcomeToStoredJob(state, result) {
1127
- clearCronJobActive(result.jobId);
1128
- tryFinishCronTaskRun(state, result);
1129
- const store = state.store;
1130
- if (!store) return;
1131
- const jobs = store.jobs;
1132
- const job = jobs.find((entry) => entry.id === result.jobId);
1133
- if (!job) {
1134
- if (result.status === "ok") {
1135
- applyJobResult(state, result.job, {
1136
- status: result.status,
1137
- error: result.error,
1138
- diagnostics: result.diagnostics,
1139
- delivered: result.delivered,
1140
- provider: result.provider,
1141
- startedAt: result.startedAt,
1142
- endedAt: result.endedAt
1143
- });
1144
- emitJobFinished(state, result.job, result, result.startedAt);
1145
- state.deps.log.info({ jobId: result.jobId }, "cron: finalized successful run after job was removed during execution");
1146
- return;
1147
- }
1148
- state.deps.log.warn({ jobId: result.jobId }, "cron: applyOutcomeToStoredJob — job not found after forceReload, result discarded");
1149
- return;
1150
- }
1151
- const shouldDelete = applyJobResult(state, job, {
1152
- status: result.status,
1153
- error: result.error,
1154
- diagnostics: result.diagnostics,
1155
- delivered: result.delivered,
1156
- provider: result.provider,
1157
- startedAt: result.startedAt,
1158
- endedAt: result.endedAt
1159
- });
1160
- emitJobFinished(state, job, result, result.startedAt);
1161
- if (shouldDelete) {
1162
- store.jobs = jobs.filter((entry) => entry.id !== job.id);
1163
- emit(state, {
1164
- jobId: job.id,
1165
- action: "removed",
1166
- job
1167
- });
1168
- }
1169
- }
1170
- function armTimer(state) {
1171
- if (state.timer) clearTimeout(state.timer);
1172
- state.timer = null;
1173
- if (!state.deps.cronEnabled) {
1174
- state.deps.log.debug({}, "cron: armTimer skipped - scheduler disabled");
1175
- return;
1176
- }
1177
- const nextAt = nextWakeAtMs(state);
1178
- if (!nextAt) {
1179
- const jobCount = state.store?.jobs.length ?? 0;
1180
- const enabledCount = state.store?.jobs.filter((j) => j.enabled).length ?? 0;
1181
- const withNextRun = state.store?.jobs.filter((j) => j.enabled && hasScheduledNextRunAtMs(j.state.nextRunAtMs)).length ?? 0;
1182
- if (enabledCount > 0) {
1183
- armRunningRecheckTimer(state);
1184
- state.deps.log.debug({
1185
- jobCount,
1186
- enabledCount,
1187
- withNextRun,
1188
- delayMs: MAX_TIMER_DELAY_MS
1189
- }, "cron: timer armed for maintenance recheck");
1190
- return;
1191
- }
1192
- state.deps.log.debug({
1193
- jobCount,
1194
- enabledCount,
1195
- withNextRun
1196
- }, "cron: armTimer skipped - no jobs with nextRunAtMs");
1197
- return;
1198
- }
1199
- const now = state.deps.nowMs();
1200
- const delay = Math.max(nextAt - now, 0);
1201
- const clampedDelay = Math.min(delay === 0 ? MIN_REFIRE_GAP_MS : delay, MAX_TIMER_DELAY_MS);
1202
- state.timer = setTimeout(() => {
1203
- onTimer(state).catch((err) => {
1204
- state.deps.log.error({ err: String(err) }, "cron: timer tick failed");
1205
- });
1206
- }, clampedDelay);
1207
- state.deps.log.debug({
1208
- nextAt,
1209
- delayMs: clampedDelay,
1210
- clamped: delay > MAX_TIMER_DELAY_MS
1211
- }, "cron: timer armed");
1212
- }
1213
- function armRunningRecheckTimer(state) {
1214
- if (state.timer) clearTimeout(state.timer);
1215
- state.timer = setTimeout(() => {
1216
- onTimer(state).catch((err) => {
1217
- state.deps.log.error({ err: String(err) }, "cron: timer tick failed");
1218
- });
1219
- }, MAX_TIMER_DELAY_MS);
1220
- }
1221
- async function onTimer(state) {
1222
- if (state.running) {
1223
- armRunningRecheckTimer(state);
1224
- return;
1225
- }
1226
- state.running = true;
1227
- armRunningRecheckTimer(state);
1228
- try {
1229
- const dueJobs = await locked(state, async () => {
1230
- await ensureLoaded(state, {
1231
- forceReload: true,
1232
- skipRecompute: true
1233
- });
1234
- const dueCheckNow = state.deps.nowMs();
1235
- const due = collectRunnableJobs(state, dueCheckNow);
1236
- if (due.length === 0) {
1237
- if (recomputeNextRunsForMaintenance(state, {
1238
- recomputeExpired: true,
1239
- nowMs: dueCheckNow
1240
- })) await persist(state);
1241
- return [];
1242
- }
1243
- const now = state.deps.nowMs();
1244
- for (const job of due) {
1245
- job.state.runningAtMs = now;
1246
- job.state.lastError = void 0;
1247
- }
1248
- await persist(state);
1249
- return due.map((j) => ({
1250
- id: j.id,
1251
- job: j
1252
- }));
1253
- });
1254
- const runDueJob = async (params) => {
1255
- const { id, job } = params;
1256
- const startedAt = state.deps.nowMs();
1257
- job.state.runningAtMs = startedAt;
1258
- markCronJobActive(job.id);
1259
- emit(state, {
1260
- jobId: job.id,
1261
- action: "started",
1262
- job,
1263
- runAtMs: startedAt
1264
- });
1265
- const jobTimeoutMs = resolveCronJobTimeoutMs(job);
1266
- const taskRunId = tryCreateCronTaskRun({
1267
- state,
1268
- job,
1269
- startedAt
1270
- });
1271
- try {
1272
- return {
1273
- jobId: id,
1274
- job,
1275
- taskRunId,
1276
- ...await executeJobCoreWithTimeout(state, job),
1277
- startedAt,
1278
- endedAt: state.deps.nowMs()
1279
- };
1280
- } catch (err) {
1281
- const errorText = normalizeCronRunErrorText(err);
1282
- state.deps.log.warn({
1283
- jobId: id,
1284
- jobName: job.name,
1285
- timeoutMs: jobTimeoutMs ?? null
1286
- }, `cron: job failed: ${errorText}`);
1287
- return {
1288
- jobId: id,
1289
- job,
1290
- taskRunId,
1291
- status: "error",
1292
- error: errorText,
1293
- diagnostics: createCronRunDiagnosticsFromError("cron-setup", errorText, { nowMs: state.deps.nowMs }),
1294
- startedAt,
1295
- endedAt: state.deps.nowMs()
1296
- };
1297
- }
1298
- };
1299
- const concurrency = Math.min(resolveRunConcurrency(state), Math.max(1, dueJobs.length));
1300
- const results = Array.from({ length: dueJobs.length });
1301
- let cursor = 0;
1302
- const workers = Array.from({ length: concurrency }, async () => {
1303
- for (;;) {
1304
- const index = cursor++;
1305
- if (index >= dueJobs.length) return;
1306
- const due = dueJobs[index];
1307
- if (!due) return;
1308
- results[index] = await runDueJob(due);
1309
- }
1310
- });
1311
- await Promise.all(workers);
1312
- const completedResults = results.filter((entry) => entry !== void 0);
1313
- if (completedResults.length > 0) await locked(state, async () => {
1314
- await ensureLoaded(state, {
1315
- forceReload: true,
1316
- skipRecompute: true
1317
- });
1318
- for (const result of completedResults) applyOutcomeToStoredJob(state, result);
1319
- recomputeNextRunsForMaintenance(state);
1320
- await persist(state);
1321
- });
1322
- } finally {
1323
- const storePaths = /* @__PURE__ */ new Set();
1324
- if (state.deps.resolveSessionStorePath) {
1325
- const defaultAgentId = state.deps.defaultAgentId ?? "main";
1326
- if (state.store?.jobs?.length) for (const job of state.store.jobs) {
1327
- const agentId = typeof job.agentId === "string" && job.agentId.trim() ? job.agentId : defaultAgentId;
1328
- storePaths.add(state.deps.resolveSessionStorePath(agentId));
1329
- }
1330
- else storePaths.add(state.deps.resolveSessionStorePath(defaultAgentId));
1331
- } else if (state.deps.sessionStorePath) storePaths.add(state.deps.sessionStorePath);
1332
- if (storePaths.size > 0) {
1333
- const nowMs = state.deps.nowMs();
1334
- for (const storePath of storePaths) try {
1335
- await sweepCronRunSessions({
1336
- cronConfig: state.deps.cronConfig,
1337
- sessionStorePath: storePath,
1338
- nowMs,
1339
- log: state.deps.log
1340
- });
1341
- } catch (err) {
1342
- state.deps.log.warn({
1343
- err: String(err),
1344
- storePath
1345
- }, "cron: session reaper sweep failed");
1346
- }
1347
- }
1348
- state.running = false;
1349
- armTimer(state);
1350
- }
1351
- }
1352
- function isRunnableJob(params) {
1353
- const { job, nowMs } = params;
1354
- if (!job.state) job.state = {};
1355
- if (!isJobEnabled(job)) return false;
1356
- if (params.skipJobIds?.has(job.id)) return false;
1357
- if (typeof job.state.runningAtMs === "number") return false;
1358
- if (params.skipAtIfAlreadyRan && job.schedule.kind === "at" && job.state.lastStatus) {
1359
- const lastRun = job.state.lastRunAtMs;
1360
- const nextRun = job.state.nextRunAtMs;
1361
- if (job.state.lastStatus === "error" && isJobEnabled(job) && typeof nextRun === "number" && typeof lastRun === "number" && nextRun > lastRun) return nowMs >= nextRun;
1362
- return false;
1363
- }
1364
- const next = job.state.nextRunAtMs;
1365
- if (isErrorBackoffPending(params.state, job, nowMs)) return false;
1366
- if (hasScheduledNextRunAtMs(next) && nowMs >= next) return true;
1367
- if (!params.allowCronMissedRunByLastRun || job.schedule.kind !== "cron") return false;
1368
- let previousRunAtMs;
1369
- try {
1370
- previousRunAtMs = computeJobPreviousRunAtMs(job, nowMs);
1371
- } catch {
1372
- return false;
1373
- }
1374
- if (typeof previousRunAtMs !== "number" || !Number.isFinite(previousRunAtMs)) return false;
1375
- const lastRunAtMs = job.state.lastRunAtMs;
1376
- if (typeof lastRunAtMs !== "number" || !Number.isFinite(lastRunAtMs)) return false;
1377
- return previousRunAtMs > lastRunAtMs;
1378
- }
1379
- function isErrorBackoffPending(state, job, nowMs) {
1380
- if (job.schedule.kind === "at" || job.state.lastStatus !== "error") return false;
1381
- const backoffUntilMs = resolveJobErrorBackoffUntilMs(job, state.deps.cronConfig?.retry?.backoffMs ?? DEFAULT_ERROR_BACKOFF_SCHEDULE_MS);
1382
- return backoffUntilMs !== void 0 && nowMs < backoffUntilMs;
1383
- }
1384
- function collectRunnableJobs(state, nowMs, opts) {
1385
- if (!state.store) return [];
1386
- return state.store.jobs.filter((job) => isRunnableJob({
1387
- state,
1388
- job,
1389
- nowMs,
1390
- skipJobIds: opts?.skipJobIds,
1391
- skipAtIfAlreadyRan: opts?.skipAtIfAlreadyRan,
1392
- allowCronMissedRunByLastRun: opts?.allowCronMissedRunByLastRun
1393
- }));
1394
- }
1395
- function deferPendingBackoffMissedCronSlots(state, nowMs, opts) {
1396
- if (!state.store) return false;
1397
- let changed = false;
1398
- for (const job of state.store.jobs) {
1399
- if (!isJobEnabled(job) || job.schedule.kind !== "cron" || opts?.skipJobIds?.has(job.id) || typeof job.state.runningAtMs === "number") continue;
1400
- const backoffUntilMs = resolveJobErrorBackoffUntilMs(job, state.deps.cronConfig?.retry?.backoffMs ?? DEFAULT_ERROR_BACKOFF_SCHEDULE_MS);
1401
- if (backoffUntilMs === void 0 || nowMs >= backoffUntilMs) continue;
1402
- let previousRunAtMs;
1403
- try {
1404
- previousRunAtMs = computeJobPreviousRunAtMs(job, nowMs);
1405
- } catch {
1406
- continue;
1407
- }
1408
- const lastRunAtMs = job.state.lastRunAtMs;
1409
- if (typeof previousRunAtMs !== "number" || !Number.isFinite(previousRunAtMs) || typeof lastRunAtMs !== "number" || !Number.isFinite(lastRunAtMs) || previousRunAtMs <= lastRunAtMs) continue;
1410
- if (job.state.nextRunAtMs !== backoffUntilMs) {
1411
- job.state.nextRunAtMs = backoffUntilMs;
1412
- changed = true;
1413
- }
1414
- }
1415
- return changed;
1416
- }
1417
- async function runMissedJobs(state, opts) {
1418
- const plan = await planStartupCatchup(state, opts);
1419
- if (plan.candidates.length === 0 && plan.deferredJobs.length === 0) return;
1420
- await applyStartupCatchupOutcomes(state, plan, await executeStartupCatchupPlan(state, plan));
1421
- }
1422
- async function planStartupCatchup(state, opts) {
1423
- const maxImmediate = Math.max(0, state.deps.maxMissedJobsPerRestart ?? DEFAULT_MAX_MISSED_JOBS_PER_RESTART);
1424
- return locked(state, async () => {
1425
- await ensureLoaded(state, { skipRecompute: true });
1426
- if (!state.store) return {
1427
- candidates: [],
1428
- deferredJobs: []
1429
- };
1430
- const now = state.deps.nowMs();
1431
- const deferredBackoffMissedSlot = deferPendingBackoffMissedCronSlots(state, now, { skipJobIds: opts?.skipJobIds });
1432
- const missed = collectRunnableJobs(state, now, {
1433
- skipJobIds: opts?.skipJobIds,
1434
- skipAtIfAlreadyRan: true,
1435
- allowCronMissedRunByLastRun: true
1436
- });
1437
- if (missed.length === 0) {
1438
- if (deferredBackoffMissedSlot) await persist(state);
1439
- return {
1440
- candidates: [],
1441
- deferredJobs: []
1442
- };
1443
- }
1444
- const sorted = missed.toSorted((a, b) => (a.state.nextRunAtMs ?? 0) - (b.state.nextRunAtMs ?? 0));
1445
- const deferredAgentJobs = opts?.deferAgentTurnJobs ? sorted.filter((job) => job.payload.kind === "agentTurn") : [];
1446
- const startupEligible = opts?.deferAgentTurnJobs ? sorted.filter((job) => job.payload.kind !== "agentTurn") : sorted;
1447
- const startupCandidates = startupEligible.slice(0, maxImmediate);
1448
- const deferredOverflow = startupEligible.slice(maxImmediate);
1449
- const deferredAgentDelayMs = Math.max(0, state.deps.startupDeferredMissedAgentJobDelayMs ?? DEFAULT_STARTUP_DEFERRED_MISSED_AGENT_JOB_DELAY_MS);
1450
- const deferred = [...deferredOverflow.map((job) => ({ jobId: job.id })), ...deferredAgentJobs.map((job) => ({
1451
- jobId: job.id,
1452
- delayMs: deferredAgentDelayMs
1453
- }))];
1454
- if (deferred.length > 0) state.deps.log.info({
1455
- immediateCount: startupCandidates.length,
1456
- deferredCount: deferred.length,
1457
- totalMissed: missed.length
1458
- }, "cron: staggering missed jobs to prevent gateway overload");
1459
- if (deferredAgentJobs.length > 0) state.deps.log.info({
1460
- count: deferredAgentJobs.length,
1461
- jobIds: deferredAgentJobs.map((job) => job.id),
1462
- delayMs: deferredAgentDelayMs
1463
- }, "cron: deferring missed agent jobs until after gateway startup");
1464
- if (startupCandidates.length > 0) state.deps.log.info({
1465
- count: startupCandidates.length,
1466
- jobIds: startupCandidates.map((j) => j.id)
1467
- }, "cron: running missed jobs after restart");
1468
- for (const job of startupCandidates) {
1469
- job.state.runningAtMs = now;
1470
- job.state.lastError = void 0;
1471
- }
1472
- await persist(state);
1473
- return {
1474
- candidates: startupCandidates.map((job) => ({
1475
- jobId: job.id,
1476
- job
1477
- })),
1478
- deferredJobs: deferred
1479
- };
1480
- });
1481
- }
1482
- async function executeStartupCatchupPlan(state, plan) {
1483
- const outcomes = [];
1484
- for (const candidate of plan.candidates) outcomes.push(await runStartupCatchupCandidate(state, candidate));
1485
- return outcomes;
1486
- }
1487
- async function runStartupCatchupCandidate(state, candidate) {
1488
- const startedAt = state.deps.nowMs();
1489
- const taskRunId = tryCreateCronTaskRun({
1490
- state,
1491
- job: candidate.job,
1492
- startedAt
1493
- });
1494
- emit(state, {
1495
- jobId: candidate.job.id,
1496
- action: "started",
1497
- job: candidate.job,
1498
- runAtMs: startedAt
1499
- });
1500
- try {
1501
- const result = await executeJobCoreWithTimeout(state, candidate.job);
1502
- return {
1503
- jobId: candidate.jobId,
1504
- job: candidate.job,
1505
- taskRunId,
1506
- status: result.status,
1507
- error: result.error,
1508
- summary: result.summary,
1509
- diagnostics: result.diagnostics,
1510
- delivered: result.delivered,
1511
- sessionId: result.sessionId,
1512
- sessionKey: result.sessionKey,
1513
- model: result.model,
1514
- provider: result.provider,
1515
- usage: result.usage,
1516
- startedAt,
1517
- endedAt: state.deps.nowMs()
1518
- };
1519
- } catch (err) {
1520
- return {
1521
- jobId: candidate.jobId,
1522
- job: candidate.job,
1523
- taskRunId,
1524
- status: "error",
1525
- error: normalizeCronRunErrorText(err),
1526
- diagnostics: createCronRunDiagnosticsFromError("cron-setup", normalizeCronRunErrorText(err), { nowMs: state.deps.nowMs }),
1527
- startedAt,
1528
- endedAt: state.deps.nowMs()
1529
- };
1530
- }
1531
- }
1532
- async function applyStartupCatchupOutcomes(state, plan, outcomes) {
1533
- const staggerMs = Math.max(0, state.deps.missedJobStaggerMs ?? DEFAULT_MISSED_JOB_STAGGER_MS);
1534
- await locked(state, async () => {
1535
- await ensureLoaded(state, { skipRecompute: true });
1536
- if (!state.store) return;
1537
- for (const result of outcomes) applyOutcomeToStoredJob(state, result);
1538
- if (plan.deferredJobs.length > 0) {
1539
- const baseNow = state.deps.nowMs();
1540
- let offset = staggerMs;
1541
- for (const deferred of plan.deferredJobs) {
1542
- const jobId = deferred.jobId;
1543
- const job = state.store.jobs.find((entry) => entry.id === jobId);
1544
- if (!job || !isJobEnabled(job)) continue;
1545
- if (typeof deferred.delayMs === "number") {
1546
- job.state.nextRunAtMs = baseNow + deferred.delayMs + offset - staggerMs;
1547
- offset += staggerMs;
1548
- continue;
1549
- }
1550
- job.state.nextRunAtMs = baseNow + offset;
1551
- offset += staggerMs;
1552
- }
1553
- }
1554
- recomputeNextRunsForMaintenance(state, { repairFutureCronNextRunAtMs: false });
1555
- await persist(state);
1556
- });
1557
- }
1558
- async function executeJobCore(state, job, abortSignal, options) {
1559
- const resolveAbortError = () => ({
1560
- status: "error",
1561
- error: abortErrorMessage(abortSignal)
1562
- });
1563
- const waitWithAbort = async (ms) => {
1564
- if (!abortSignal) {
1565
- await new Promise((resolve) => setTimeout(resolve, ms));
1566
- return;
1567
- }
1568
- if (abortSignal.aborted) return;
1569
- await new Promise((resolve) => {
1570
- const timer = setTimeout(() => {
1571
- abortSignal.removeEventListener("abort", onAbort);
1572
- resolve();
1573
- }, ms);
1574
- const onAbort = () => {
1575
- clearTimeout(timer);
1576
- abortSignal.removeEventListener("abort", onAbort);
1577
- resolve();
1578
- };
1579
- abortSignal.addEventListener("abort", onAbort, { once: true });
1580
- });
1581
- };
1582
- if (abortSignal?.aborted) return resolveAbortError();
1583
- if (job.sessionTarget === "main") return await executeMainSessionCronJob(state, job, abortSignal, waitWithAbort);
1584
- return await executeDetachedCronJob(state, job, abortSignal, resolveAbortError, options);
1585
- }
1586
- async function executeMainSessionCronJob(state, job, abortSignal, waitWithAbort) {
1587
- const text = resolveJobPayloadTextForMain(job);
1588
- if (!text) return {
1589
- status: "skipped",
1590
- error: job.payload.kind === "systemEvent" ? "main job requires non-empty systemEvent text" : "main job requires payload.kind=\"systemEvent\""
1591
- };
1592
- const cronRunSessionKey = resolveMainSessionCronRunSessionKey(job, typeof job.state.runningAtMs === "number" ? job.state.runningAtMs : state.deps.nowMs());
1593
- const deliveryContext = resolveMainSessionCronDeliveryContext(state, job);
1594
- state.deps.enqueueSystemEvent(text, {
1595
- agentId: job.agentId,
1596
- sessionKey: cronRunSessionKey,
1597
- contextKey: `cron:${job.id}`,
1598
- ...deliveryContext ? { deliveryContext } : {}
1599
- });
1600
- if (job.wakeMode === "now" && state.deps.runHeartbeatOnce) {
1601
- const reason = `cron:${job.id}`;
1602
- const maxWaitMs = state.deps.wakeNowHeartbeatBusyMaxWaitMs ?? 2 * 6e4;
1603
- const retryDelayMs = state.deps.wakeNowHeartbeatBusyRetryDelayMs ?? 250;
1604
- const waitStartedAt = state.deps.nowMs();
1605
- let heartbeatResult;
1606
- for (;;) {
1607
- if (abortSignal?.aborted) return {
1608
- status: "error",
1609
- error: timeoutErrorMessage()
1610
- };
1611
- heartbeatResult = await state.deps.runHeartbeatOnce({
1612
- source: "cron",
1613
- intent: "immediate",
1614
- reason,
1615
- agentId: job.agentId,
1616
- sessionKey: cronRunSessionKey,
1617
- heartbeat: { target: "last" }
1618
- });
1619
- if (heartbeatResult.status !== "skipped" || !isRetryableHeartbeatBusySkipReason(heartbeatResult.reason)) break;
1620
- if (heartbeatResult.reason === "cron-in-progress") {
1621
- state.deps.requestHeartbeat({
1622
- source: "cron",
1623
- intent: "immediate",
1624
- reason,
1625
- agentId: job.agentId,
1626
- sessionKey: cronRunSessionKey,
1627
- heartbeat: { target: "last" }
1628
- });
1629
- return {
1630
- status: "ok",
1631
- summary: text,
1632
- sessionKey: cronRunSessionKey
1633
- };
1634
- }
1635
- if (abortSignal?.aborted) return {
1636
- status: "error",
1637
- error: timeoutErrorMessage()
1638
- };
1639
- if (state.deps.nowMs() - waitStartedAt > maxWaitMs) {
1640
- if (abortSignal?.aborted) return {
1641
- status: "error",
1642
- error: timeoutErrorMessage()
1643
- };
1644
- state.deps.requestHeartbeat({
1645
- source: "cron",
1646
- intent: "immediate",
1647
- reason,
1648
- agentId: job.agentId,
1649
- sessionKey: cronRunSessionKey,
1650
- heartbeat: { target: "last" }
1651
- });
1652
- return {
1653
- status: "ok",
1654
- summary: text,
1655
- sessionKey: cronRunSessionKey
1656
- };
1657
- }
1658
- await waitWithAbort(retryDelayMs);
1659
- }
1660
- if (heartbeatResult.status === "ran") return {
1661
- status: "ok",
1662
- summary: text,
1663
- sessionKey: cronRunSessionKey
1664
- };
1665
- if (heartbeatResult.status === "skipped") return {
1666
- status: "skipped",
1667
- error: heartbeatResult.reason,
1668
- summary: text,
1669
- sessionKey: cronRunSessionKey
1670
- };
1671
- return {
1672
- status: "error",
1673
- error: heartbeatResult.reason,
1674
- summary: text,
1675
- sessionKey: cronRunSessionKey
1676
- };
1677
- }
1678
- if (abortSignal?.aborted) return {
1679
- status: "error",
1680
- error: timeoutErrorMessage()
1681
- };
1682
- state.deps.requestHeartbeat({
1683
- source: "cron",
1684
- intent: job.wakeMode === "now" ? "immediate" : "event",
1685
- reason: `cron:${job.id}`,
1686
- agentId: job.agentId,
1687
- sessionKey: cronRunSessionKey,
1688
- heartbeat: { target: "last" }
1689
- });
1690
- return {
1691
- status: "ok",
1692
- summary: text,
1693
- sessionKey: cronRunSessionKey
1694
- };
1695
- }
1696
- async function executeDetachedCronJob(state, job, abortSignal, resolveAbortError, options) {
1697
- if (job.payload.kind !== "agentTurn") {
1698
- const error = "isolated job requires payload.kind=agentTurn";
1699
- return {
1700
- status: "skipped",
1701
- error,
1702
- diagnostics: createCronRunDiagnosticsFromError("cron-preflight", error, {
1703
- severity: "warn",
1704
- nowMs: state.deps.nowMs
1705
- })
1706
- };
1707
- }
1708
- if (abortSignal?.aborted) {
1709
- const aborted = resolveAbortError();
1710
- return {
1711
- ...aborted,
1712
- diagnostics: createCronRunDiagnosticsFromError("cron-setup", aborted.error, { nowMs: state.deps.nowMs })
1713
- };
1714
- }
1715
- const res = await state.deps.runIsolatedAgentJob({
1716
- job,
1717
- message: job.payload.message,
1718
- abortSignal,
1719
- onExecutionStarted: options?.onExecutionStarted,
1720
- onExecutionPhase: options?.onExecutionPhase
1721
- });
1722
- if (abortSignal?.aborted) {
1723
- const error = abortErrorMessage(abortSignal);
1724
- return {
1725
- status: "error",
1726
- error,
1727
- diagnostics: createCronRunDiagnosticsFromError("cron-setup", error, { nowMs: state.deps.nowMs })
1728
- };
1729
- }
1730
- return {
1731
- status: res.status,
1732
- error: res.error,
1733
- summary: res.summary,
1734
- delivered: res.delivered,
1735
- deliveryAttempted: res.deliveryAttempted,
1736
- delivery: res.delivery,
1737
- sessionId: res.sessionId,
1738
- sessionKey: res.sessionKey,
1739
- diagnostics: res.diagnostics,
1740
- model: res.model,
1741
- provider: res.provider,
1742
- usage: res.usage
1743
- };
1744
- }
1745
- function emitJobFinished(state, job, result, runAtMs) {
1746
- emit(state, {
1747
- jobId: job.id,
1748
- action: "finished",
1749
- job,
1750
- status: result.status,
1751
- error: result.error,
1752
- summary: result.summary,
1753
- diagnostics: result.diagnostics,
1754
- delivered: job.state.lastDelivered,
1755
- deliveryStatus: job.state.lastDeliveryStatus,
1756
- deliveryError: job.state.lastDeliveryError,
1757
- failureNotificationDelivery: failureNotificationDeliveryFromJobState(job),
1758
- delivery: result.delivery,
1759
- sessionId: result.sessionId,
1760
- sessionKey: result.sessionKey,
1761
- runAtMs,
1762
- durationMs: job.state.lastDurationMs,
1763
- nextRunAtMs: job.state.nextRunAtMs,
1764
- model: result.model,
1765
- provider: result.provider,
1766
- usage: result.usage
1767
- });
1768
- }
1769
- function wake(state, opts) {
1770
- const text = opts.text.trim();
1771
- if (!text) return { ok: false };
1772
- const sessionKey = opts.sessionKey?.trim() || void 0;
1773
- if (sessionKey && isSubagentSessionKey(sessionKey)) return {
1774
- ok: false,
1775
- reason: "unwakeable-session-key"
1776
- };
1777
- state.deps.enqueueSystemEvent(text, sessionKey ? { sessionKey } : void 0);
1778
- if (opts.mode === "now") state.deps.requestHeartbeat({
1779
- source: "manual",
1780
- intent: "immediate",
1781
- reason: "wake",
1782
- ...sessionKey ? { sessionKey } : {}
1783
- });
1784
- else if (sessionKey) state.deps.requestHeartbeat({
1785
- source: "manual",
1786
- intent: "immediate",
1787
- reason: "wake",
1788
- sessionKey
1789
- });
1790
- return { ok: true };
1791
- }
1792
- function stopTimer(state) {
1793
- if (state.timer) clearTimeout(state.timer);
1794
- state.timer = null;
1795
- }
1796
- function emit(state, evt) {
1797
- try {
1798
- state.deps.onEvent?.(evt);
1799
- } catch {}
1800
- }
1801
- //#endregion
1802
- //#region src/cron/service/ops.ts
1803
- const STARTUP_INTERRUPTED_ERROR = "cron: job interrupted by gateway restart";
1804
- function resolveInterruptedStartupFailureNotificationStatus(params) {
1805
- if (params.job.delivery?.bestEffort === true) return "not-requested";
1806
- if (resolveFailureDestination(params.job, params.state.deps.cronConfig?.failureDestination)) return "unknown";
1807
- const primaryPlan = resolveCronDeliveryPlan(params.job);
1808
- return primaryPlan.mode === "announce" && primaryPlan.requested ? "unknown" : "not-requested";
1809
- }
1810
- function markInterruptedStartupRun(params) {
1811
- const { job, runningAtMs, nowMs } = params;
1812
- const failureNotificationStatus = resolveInterruptedStartupFailureNotificationStatus({
1813
- state: params.state,
1814
- job
1815
- });
1816
- const previousErrors = typeof job.state.consecutiveErrors === "number" && Number.isFinite(job.state.consecutiveErrors) ? Math.max(0, Math.floor(job.state.consecutiveErrors)) : 0;
1817
- params.state.deps.log.warn({
1818
- jobId: job.id,
1819
- runningAtMs
1820
- }, "cron: marking interrupted running job failed on startup");
1821
- job.state.runningAtMs = void 0;
1822
- job.state.lastRunAtMs = runningAtMs;
1823
- job.state.lastRunStatus = "error";
1824
- job.state.lastStatus = "error";
1825
- job.state.lastError = STARTUP_INTERRUPTED_ERROR;
1826
- job.state.lastDurationMs = Math.max(0, nowMs - runningAtMs);
1827
- job.state.consecutiveErrors = previousErrors + 1;
1828
- job.state.lastDelivered = false;
1829
- job.state.lastDeliveryStatus = "unknown";
1830
- job.state.lastDeliveryError = STARTUP_INTERRUPTED_ERROR;
1831
- job.state.lastFailureNotificationDelivered = void 0;
1832
- job.state.lastFailureNotificationDeliveryStatus = failureNotificationStatus;
1833
- job.state.lastFailureNotificationDeliveryError = void 0;
1834
- job.state.nextRunAtMs = void 0;
1835
- job.updatedAtMs = nowMs;
1836
- if (job.schedule.kind === "at") job.enabled = false;
1837
- return {
1838
- jobId: job.id,
1839
- runAtMs: runningAtMs,
1840
- durationMs: job.state.lastDurationMs
1841
- };
1842
- }
1843
- function mergeManualRunSnapshotAfterReload(params) {
1844
- if (!params.state.store) return;
1845
- if (params.removed) {
1846
- params.state.store.jobs = params.state.store.jobs.filter((job) => job.id !== params.jobId);
1847
- return;
1848
- }
1849
- if (!params.snapshot) return;
1850
- const reloaded = params.state.store.jobs.find((job) => job.id === params.jobId);
1851
- if (!reloaded) return;
1852
- reloaded.enabled = params.snapshot.enabled;
1853
- reloaded.updatedAtMs = params.snapshot.updatedAtMs;
1854
- reloaded.state = params.snapshot.state;
1855
- }
1856
- async function ensureLoadedForRead(state) {
1857
- await ensureLoaded(state, { skipRecompute: true });
1858
- if (!state.store) return;
1859
- if (recomputeNextRunsForMaintenance(state)) await persist(state);
1860
- }
1861
- async function start(state) {
1862
- if (!state.deps.cronEnabled) {
1863
- state.deps.log.info({ enabled: false }, "cron: disabled");
1864
- return;
1865
- }
1866
- const interruptedJobIds = /* @__PURE__ */ new Set();
1867
- const interruptedRuns = [];
1868
- let markedAnyInterruptedRun = false;
1869
- await locked(state, async () => {
1870
- await ensureLoaded(state, { skipRecompute: true });
1871
- const jobs = state.store?.jobs ?? [];
1872
- for (const job of jobs) {
1873
- job.state ??= {};
1874
- if (typeof job.state.runningAtMs === "number") {
1875
- const nowMs = state.deps.nowMs();
1876
- const interrupted = markInterruptedStartupRun({
1877
- state,
1878
- job,
1879
- runningAtMs: job.state.runningAtMs,
1880
- nowMs
1881
- });
1882
- interruptedJobIds.add(job.id);
1883
- interruptedRuns.push(interrupted);
1884
- markedAnyInterruptedRun = true;
1885
- }
1886
- }
1887
- if (markedAnyInterruptedRun || jobs.length > 0) await persist(state, markedAnyInterruptedRun ? void 0 : { stateOnly: true });
1888
- });
1889
- await runMissedJobs(state, {
1890
- skipJobIds: interruptedJobIds.size > 0 ? interruptedJobIds : void 0,
1891
- deferAgentTurnJobs: true
1892
- });
1893
- await locked(state, async () => {
1894
- await ensureLoaded(state, { skipRecompute: true });
1895
- if (recomputeNextRunsForMaintenance(state, { recomputeExpired: true })) await persist(state);
1896
- for (const interrupted of interruptedRuns) {
1897
- const job = state.store?.jobs.find((entry) => entry.id === interrupted.jobId);
1898
- emit(state, {
1899
- jobId: interrupted.jobId,
1900
- action: "finished",
1901
- job,
1902
- status: "error",
1903
- error: STARTUP_INTERRUPTED_ERROR,
1904
- delivered: false,
1905
- deliveryStatus: "unknown",
1906
- deliveryError: STARTUP_INTERRUPTED_ERROR,
1907
- failureNotificationDelivery: job ? failureNotificationDeliveryFromJobState(job) : void 0,
1908
- runAtMs: interrupted.runAtMs,
1909
- durationMs: interrupted.durationMs,
1910
- nextRunAtMs: job?.state.nextRunAtMs
1911
- });
1912
- }
1913
- armTimer(state);
1914
- state.deps.log.info({
1915
- enabled: true,
1916
- jobs: state.store?.jobs.length ?? 0,
1917
- nextWakeAtMs: nextWakeAtMs(state) ?? null
1918
- }, "cron: started");
1919
- });
1920
- }
1921
- function stop(state) {
1922
- stopTimer(state);
1923
- }
1924
- async function status(state) {
1925
- return await locked(state, async () => {
1926
- await ensureLoadedForRead(state);
1927
- return {
1928
- enabled: state.deps.cronEnabled,
1929
- storePath: state.deps.storePath,
1930
- jobs: state.store?.jobs.length ?? 0,
1931
- nextWakeAtMs: state.deps.cronEnabled ? nextWakeAtMs(state) ?? null : null
1932
- };
1933
- });
1934
- }
1935
- async function list(state, opts) {
1936
- return await locked(state, async () => {
1937
- await ensureLoadedForRead(state);
1938
- const includeDisabled = opts?.includeDisabled === true;
1939
- return (state.store?.jobs ?? []).filter((j) => includeDisabled || isJobEnabled(j)).toSorted((a, b) => (a.state.nextRunAtMs ?? 0) - (b.state.nextRunAtMs ?? 0));
1940
- });
1941
- }
1942
- async function readJob(state, id) {
1943
- return await locked(state, async () => {
1944
- await ensureLoadedForRead(state);
1945
- return state.store?.jobs.find((job) => job.id === id);
1946
- });
1947
- }
1948
- function resolveEnabledFilter(opts) {
1949
- if (opts?.enabled === "all" || opts?.enabled === "enabled" || opts?.enabled === "disabled") return opts.enabled;
1950
- return opts?.includeDisabled ? "all" : "enabled";
1951
- }
1952
- function resolveScheduleKindFilter(opts) {
1953
- if (opts?.scheduleKind === "all" || opts?.scheduleKind === "at" || opts?.scheduleKind === "every" || opts?.scheduleKind === "cron") return opts.scheduleKind;
1954
- return "all";
1955
- }
1956
- function resolveLastRunStatusFilter(opts) {
1957
- if (opts?.lastRunStatus === "all" || opts?.lastRunStatus === "ok" || opts?.lastRunStatus === "error" || opts?.lastRunStatus === "skipped" || opts?.lastRunStatus === "unknown") return opts.lastRunStatus;
1958
- return "all";
1959
- }
1960
- function resolveJobLastRunStatus(job) {
1961
- return job.state.lastRunStatus ?? job.state.lastStatus ?? "unknown";
1962
- }
1963
- function sortJobs(jobs, sortBy, sortDir) {
1964
- const dir = sortDir === "desc" ? -1 : 1;
1965
- return jobs.toSorted((a, b) => {
1966
- let cmp = 0;
1967
- if (sortBy === "name") {
1968
- const aName = typeof a.name === "string" ? a.name : "";
1969
- const bName = typeof b.name === "string" ? b.name : "";
1970
- cmp = aName.localeCompare(bName, void 0, { sensitivity: "base" });
1971
- } else if (sortBy === "updatedAtMs") cmp = a.updatedAtMs - b.updatedAtMs;
1972
- else {
1973
- const aNext = a.state.nextRunAtMs;
1974
- const bNext = b.state.nextRunAtMs;
1975
- if (typeof aNext === "number" && typeof bNext === "number") cmp = aNext - bNext;
1976
- else if (typeof aNext === "number") cmp = -1;
1977
- else if (typeof bNext === "number") cmp = 1;
1978
- else cmp = 0;
1979
- }
1980
- if (cmp !== 0) return cmp * dir;
1981
- const aId = typeof a.id === "string" ? a.id : "";
1982
- const bId = typeof b.id === "string" ? b.id : "";
1983
- return aId.localeCompare(bId);
1984
- });
1985
- }
1986
- function resolveEffectiveJobAgentId(job, defaultAgentId) {
1987
- return normalizeOptionalAgentId(job.agentId) ?? normalizeOptionalAgentId(defaultAgentId) ?? "main";
1988
- }
1989
- async function listPage(state, opts) {
1990
- return await locked(state, async () => {
1991
- await ensureLoadedForRead(state);
1992
- const query = normalizeLowercaseStringOrEmpty(opts?.query);
1993
- const enabledFilter = resolveEnabledFilter(opts);
1994
- const scheduleKindFilter = resolveScheduleKindFilter(opts);
1995
- const lastRunStatusFilter = resolveLastRunStatusFilter(opts);
1996
- const sortBy = opts?.sortBy ?? "nextRunAtMs";
1997
- const sortDir = opts?.sortDir ?? "asc";
1998
- const requestedAgentId = normalizeOptionalAgentId(opts?.agentId);
1999
- const sorted = sortJobs((state.store?.jobs ?? []).filter((job) => {
2000
- if (enabledFilter === "enabled" && !isJobEnabled(job)) return false;
2001
- if (enabledFilter === "disabled" && isJobEnabled(job)) return false;
2002
- if (requestedAgentId && resolveEffectiveJobAgentId(job, state.deps.defaultAgentId) !== requestedAgentId) return false;
2003
- if (scheduleKindFilter !== "all" && job.schedule.kind !== scheduleKindFilter) return false;
2004
- if (lastRunStatusFilter !== "all" && resolveJobLastRunStatus(job) !== lastRunStatusFilter) return false;
2005
- if (!query) return true;
2006
- return normalizeLowercaseStringOrEmpty([
2007
- job.id,
2008
- job.name,
2009
- job.description ?? "",
2010
- job.agentId ?? ""
2011
- ].join(" ")).includes(query);
2012
- }), sortBy, sortDir);
2013
- const total = sorted.length;
2014
- const offset = Math.max(0, Math.min(total, Math.floor(opts?.offset ?? 0)));
2015
- const defaultLimit = total === 0 ? 50 : total;
2016
- const limit = Math.max(1, Math.min(200, Math.floor(opts?.limit ?? defaultLimit)));
2017
- const jobs = sorted.slice(offset, offset + limit);
2018
- const nextOffset = offset + jobs.length;
2019
- return {
2020
- jobs,
2021
- total,
2022
- offset,
2023
- limit,
2024
- hasMore: nextOffset < total,
2025
- nextOffset: nextOffset < total ? nextOffset : null
2026
- };
2027
- });
2028
- }
2029
- async function add(state, input) {
2030
- return await locked(state, async () => {
2031
- warnIfDisabled(state, "add");
2032
- await ensureLoaded(state);
2033
- const job = createJob(state, input);
2034
- state.store?.jobs.push(job);
2035
- recomputeNextRuns(state);
2036
- await persist(state);
2037
- armTimer(state);
2038
- state.deps.log.info({
2039
- jobId: job.id,
2040
- jobName: job.name,
2041
- nextRunAtMs: job.state.nextRunAtMs,
2042
- schedulerNextWakeAtMs: nextWakeAtMs(state) ?? null,
2043
- timerArmed: state.timer !== null,
2044
- cronEnabled: state.deps.cronEnabled
2045
- }, "cron: job added");
2046
- emit(state, {
2047
- jobId: job.id,
2048
- action: "added",
2049
- job,
2050
- nextRunAtMs: job.state.nextRunAtMs
2051
- });
2052
- return job;
2053
- });
2054
- }
2055
- async function update(state, id, patch) {
2056
- return await locked(state, async () => {
2057
- warnIfDisabled(state, "update");
2058
- await ensureLoaded(state, { skipRecompute: true });
2059
- const job = findJobOrThrow(state, id);
2060
- const now = state.deps.nowMs();
2061
- const nextJob = structuredClone(job);
2062
- applyJobPatch(nextJob, patch, { defaultAgentId: state.deps.defaultAgentId });
2063
- if (nextJob.schedule.kind === "every") {
2064
- const anchor = nextJob.schedule.anchorMs;
2065
- if (typeof anchor !== "number" || !Number.isFinite(anchor)) {
2066
- const fallbackAnchorMs = patch.schedule?.kind === "every" ? now : typeof nextJob.createdAtMs === "number" && Number.isFinite(nextJob.createdAtMs) ? nextJob.createdAtMs : now;
2067
- nextJob.schedule = {
2068
- ...nextJob.schedule,
2069
- anchorMs: Math.max(0, Math.floor(fallbackAnchorMs))
2070
- };
2071
- }
2072
- }
2073
- const scheduleChanged = patch.schedule !== void 0;
2074
- const enabledChanged = patch.enabled !== void 0;
2075
- if (scheduleChanged && nextJob.schedule.kind === "cron" && !isJobEnabled(nextJob)) computeJobNextRunAtMs({
2076
- ...nextJob,
2077
- enabled: true
2078
- }, now);
2079
- nextJob.updatedAtMs = now;
2080
- if (scheduleChanged || enabledChanged) if (isJobEnabled(nextJob)) nextJob.state.nextRunAtMs = computeJobNextRunAtMs(nextJob, now);
2081
- else {
2082
- nextJob.state.nextRunAtMs = void 0;
2083
- nextJob.state.runningAtMs = void 0;
2084
- }
2085
- else if (isJobEnabled(nextJob) && !hasScheduledNextRunAtMs(nextJob.state.nextRunAtMs)) nextJob.state.nextRunAtMs = computeJobNextRunAtMs(nextJob, now);
2086
- if (state.store) {
2087
- const index = state.store.jobs.findIndex((entry) => entry.id === id);
2088
- if (index >= 0) state.store.jobs[index] = nextJob;
2089
- }
2090
- await persist(state);
2091
- armTimer(state);
2092
- emit(state, {
2093
- jobId: id,
2094
- action: "updated",
2095
- job: nextJob,
2096
- nextRunAtMs: nextJob.state.nextRunAtMs
2097
- });
2098
- return nextJob;
2099
- });
2100
- }
2101
- async function remove(state, id) {
2102
- return await locked(state, async () => {
2103
- warnIfDisabled(state, "remove");
2104
- await ensureLoaded(state);
2105
- const before = state.store?.jobs.length ?? 0;
2106
- if (!state.store) return {
2107
- ok: false,
2108
- removed: false
2109
- };
2110
- const removedJob = state.store.jobs.find((j) => j.id === id);
2111
- state.store.jobs = state.store.jobs.filter((j) => j.id !== id);
2112
- const removed = (state.store.jobs.length ?? 0) !== before;
2113
- await persist(state);
2114
- armTimer(state);
2115
- if (removed) emit(state, {
2116
- jobId: id,
2117
- action: "removed",
2118
- job: removedJob
2119
- });
2120
- return {
2121
- ok: true,
2122
- removed
2123
- };
2124
- });
2125
- }
2126
- let nextManualRunId = 1;
2127
- async function skipInvalidPersistedManualRun(params) {
2128
- const endedAt = params.state.deps.nowMs();
2129
- const errorText = normalizeCronRunErrorText(params.error);
2130
- const diagnostics = createCronRunDiagnosticsFromError("cron-preflight", errorText, {
2131
- severity: "warn",
2132
- nowMs: params.state.deps.nowMs
2133
- });
2134
- const shouldDelete = applyJobResult(params.state, params.job, {
2135
- status: "skipped",
2136
- error: errorText,
2137
- diagnostics,
2138
- startedAt: endedAt,
2139
- endedAt
2140
- }, { preserveSchedule: params.mode === "force" });
2141
- emit(params.state, {
2142
- jobId: params.job.id,
2143
- action: "finished",
2144
- status: "skipped",
2145
- error: errorText,
2146
- diagnostics,
2147
- runAtMs: endedAt,
2148
- durationMs: params.job.state.lastDurationMs,
2149
- nextRunAtMs: params.job.state.nextRunAtMs,
2150
- deliveryStatus: params.job.state.lastDeliveryStatus,
2151
- deliveryError: params.job.state.lastDeliveryError,
2152
- failureNotificationDelivery: failureNotificationDeliveryFromJobState(params.job)
2153
- });
2154
- if (shouldDelete && params.state.store) {
2155
- params.state.store.jobs = params.state.store.jobs.filter((entry) => entry.id !== params.job.id);
2156
- emit(params.state, {
2157
- jobId: params.job.id,
2158
- action: "removed"
2159
- });
2160
- }
2161
- recomputeNextRunsForMaintenance(params.state, { recomputeExpired: true });
2162
- await persist(params.state);
2163
- armTimer(params.state);
2164
- }
2165
- function tryCreateManualTaskRun(params) {
2166
- const runId = createCronExecutionId(params.job.id, params.startedAt);
2167
- try {
2168
- createRunningTaskRun({
2169
- runtime: "cron",
2170
- sourceId: params.job.id,
2171
- ownerKey: "",
2172
- scopeKind: "system",
2173
- childSessionKey: params.job.sessionKey,
2174
- agentId: params.job.agentId,
2175
- runId,
2176
- label: params.job.name,
2177
- task: params.job.name || params.job.id,
2178
- deliveryStatus: "not_applicable",
2179
- notifyPolicy: "silent",
2180
- startedAt: params.startedAt,
2181
- lastEventAt: params.startedAt,
2182
- progressSummary: CRON_TASK_RUNNING_PROGRESS_SUMMARY
2183
- });
2184
- return runId;
2185
- } catch (error) {
2186
- params.state.deps.log.warn({
2187
- jobId: params.job.id,
2188
- error
2189
- }, "cron: failed to create task ledger record");
2190
- return;
2191
- }
2192
- }
2193
- function tryFinishManualTaskRun(state, params) {
2194
- if (!params.taskRunId) return;
2195
- try {
2196
- if (params.coreResult.status === "ok" || params.coreResult.status === "skipped") {
2197
- completeTaskRunByRunId({
2198
- runId: params.taskRunId,
2199
- runtime: "cron",
2200
- endedAt: params.endedAt,
2201
- lastEventAt: params.endedAt,
2202
- terminalSummary: params.coreResult.summary ?? void 0
2203
- });
2204
- return;
2205
- }
2206
- failTaskRunByRunId({
2207
- runId: params.taskRunId,
2208
- runtime: "cron",
2209
- status: normalizeCronRunErrorText(params.coreResult.error) === "cron: job execution timed out" ? "timed_out" : "failed",
2210
- endedAt: params.endedAt,
2211
- lastEventAt: params.endedAt,
2212
- error: params.coreResult.status === "error" ? normalizeCronRunErrorText(params.coreResult.error) : void 0,
2213
- terminalSummary: params.coreResult.summary ?? void 0
2214
- });
2215
- } catch (error) {
2216
- state.deps.log.warn({
2217
- runId: params.taskRunId,
2218
- jobStatus: params.coreResult.status,
2219
- error
2220
- }, "cron: failed to update task ledger record");
2221
- }
2222
- }
2223
- async function inspectManualRunPreflight(state, id, mode) {
2224
- return await locked(state, async () => {
2225
- warnIfDisabled(state, "run");
2226
- await ensureLoaded(state, { skipRecompute: true });
2227
- recomputeNextRunsForMaintenance(state);
2228
- const job = findJobOrThrow(state, id);
2229
- try {
2230
- assertSupportedJobSpec(job);
2231
- } catch (error) {
2232
- await skipInvalidPersistedManualRun({
2233
- state,
2234
- job,
2235
- mode,
2236
- error
2237
- });
2238
- return {
2239
- ok: true,
2240
- ran: false,
2241
- reason: "invalid-spec"
2242
- };
2243
- }
2244
- if (typeof job.state.runningAtMs === "number") return {
2245
- ok: true,
2246
- ran: false,
2247
- reason: "already-running"
2248
- };
2249
- const now = state.deps.nowMs();
2250
- if (!isJobDue(job, now, { forced: mode === "force" })) return {
2251
- ok: true,
2252
- ran: false,
2253
- reason: "not-due"
2254
- };
2255
- return {
2256
- ok: true,
2257
- runnable: true,
2258
- job,
2259
- now
2260
- };
2261
- });
2262
- }
2263
- async function inspectManualRunDisposition(state, id, mode) {
2264
- const result = await inspectManualRunPreflight(state, id, mode);
2265
- if (!result.ok) return result;
2266
- if ("reason" in result) return result;
2267
- return {
2268
- ok: true,
2269
- runnable: true
2270
- };
2271
- }
2272
- async function prepareManualRun(state, id, mode, opts) {
2273
- const preflight = await inspectManualRunPreflight(state, id, mode);
2274
- if (!preflight.ok) return preflight;
2275
- if ("reason" in preflight) return {
2276
- ok: true,
2277
- ran: false,
2278
- reason: preflight.reason
2279
- };
2280
- return await locked(state, async () => {
2281
- const job = findJobOrThrow(state, id);
2282
- if (typeof job.state.runningAtMs === "number") return {
2283
- ok: true,
2284
- ran: false,
2285
- reason: "already-running"
2286
- };
2287
- job.state.runningAtMs = preflight.now;
2288
- job.state.lastError = void 0;
2289
- await persist(state);
2290
- emit(state, {
2291
- jobId: job.id,
2292
- action: "started",
2293
- job,
2294
- runAtMs: preflight.now
2295
- });
2296
- const taskRunId = tryCreateManualTaskRun({
2297
- state,
2298
- job,
2299
- startedAt: preflight.now
2300
- });
2301
- markCronJobActive(job.id);
2302
- const executionJob = structuredClone(job);
2303
- return {
2304
- ok: true,
2305
- ran: true,
2306
- jobId: job.id,
2307
- runId: opts?.runId ?? taskRunId,
2308
- taskRunId,
2309
- startedAt: preflight.now,
2310
- executionJob
2311
- };
2312
- });
2313
- }
2314
- async function finishPreparedManualRun(state, prepared, mode) {
2315
- const executionJob = prepared.executionJob;
2316
- const startedAt = prepared.startedAt;
2317
- const jobId = prepared.jobId;
2318
- const taskRunId = prepared.taskRunId;
2319
- const runId = prepared.runId;
2320
- try {
2321
- let coreResult;
2322
- try {
2323
- coreResult = await executeJobCoreWithTimeout(state, executionJob);
2324
- } catch (err) {
2325
- coreResult = {
2326
- status: "error",
2327
- error: normalizeCronRunErrorText(err)
2328
- };
2329
- }
2330
- const endedAt = state.deps.nowMs();
2331
- tryFinishManualTaskRun(state, {
2332
- taskRunId,
2333
- coreResult,
2334
- endedAt
2335
- });
2336
- await locked(state, async () => {
2337
- await ensureLoaded(state, { skipRecompute: true });
2338
- const job = state.store?.jobs.find((entry) => entry.id === jobId);
2339
- if (!job) return;
2340
- const shouldDelete = applyJobResult(state, job, {
2341
- status: coreResult.status,
2342
- error: coreResult.error,
2343
- diagnostics: coreResult.diagnostics,
2344
- delivered: coreResult.delivered,
2345
- provider: coreResult.provider,
2346
- startedAt,
2347
- endedAt
2348
- }, { preserveSchedule: mode === "force" });
2349
- emit(state, {
2350
- jobId: job.id,
2351
- action: "finished",
2352
- job,
2353
- status: coreResult.status,
2354
- error: coreResult.error,
2355
- summary: coreResult.summary,
2356
- diagnostics: coreResult.diagnostics,
2357
- delivered: job.state.lastDelivered,
2358
- deliveryStatus: job.state.lastDeliveryStatus,
2359
- deliveryError: job.state.lastDeliveryError,
2360
- failureNotificationDelivery: failureNotificationDeliveryFromJobState(job),
2361
- delivery: coreResult.delivery,
2362
- sessionId: coreResult.sessionId,
2363
- sessionKey: coreResult.sessionKey,
2364
- runId,
2365
- runAtMs: startedAt,
2366
- durationMs: job.state.lastDurationMs,
2367
- nextRunAtMs: job.state.nextRunAtMs,
2368
- model: coreResult.model,
2369
- provider: coreResult.provider,
2370
- usage: coreResult.usage
2371
- });
2372
- if (shouldDelete && state.store) {
2373
- state.store.jobs = state.store.jobs.filter((entry) => entry.id !== job.id);
2374
- emit(state, {
2375
- jobId: job.id,
2376
- action: "removed",
2377
- job
2378
- });
2379
- }
2380
- const postRunSnapshot = shouldDelete ? null : {
2381
- enabled: job.enabled,
2382
- updatedAtMs: job.updatedAtMs,
2383
- state: structuredClone(job.state)
2384
- };
2385
- const postRunRemoved = shouldDelete;
2386
- await ensureLoaded(state, {
2387
- forceReload: true,
2388
- skipRecompute: true
2389
- });
2390
- mergeManualRunSnapshotAfterReload({
2391
- state,
2392
- jobId,
2393
- snapshot: postRunSnapshot,
2394
- removed: postRunRemoved
2395
- });
2396
- recomputeNextRunsForMaintenance(state, { recomputeExpired: true });
2397
- await persist(state);
2398
- armTimer(state);
2399
- });
2400
- } finally {
2401
- clearCronJobActive(jobId);
2402
- }
2403
- }
2404
- async function run(state, id, mode, opts) {
2405
- const prepared = await prepareManualRun(state, id, mode, opts);
2406
- if (!prepared.ok || !prepared.ran) return prepared;
2407
- await finishPreparedManualRun(state, prepared, mode);
2408
- return {
2409
- ok: true,
2410
- ran: true
2411
- };
2412
- }
2413
- async function enqueueRun(state, id, mode) {
2414
- const disposition = await inspectManualRunDisposition(state, id, mode);
2415
- if (!disposition.ok || !("runnable" in disposition && disposition.runnable)) return disposition;
2416
- const runId = `manual:${id}:${state.deps.nowMs()}:${nextManualRunId++}`;
2417
- enqueueCommandInLane("cron", async () => {
2418
- const result = await run(state, id, mode, { runId });
2419
- if (result.ok && "ran" in result && !result.ran) state.deps.log.info({
2420
- jobId: id,
2421
- runId,
2422
- reason: result.reason
2423
- }, "cron: queued manual run skipped before execution");
2424
- return result;
2425
- }, {
2426
- warnAfterMs: 5e3,
2427
- onWait: (waitMs, queuedAhead) => {
2428
- state.deps.log.warn({
2429
- jobId: id,
2430
- runId,
2431
- waitMs,
2432
- queuedAhead
2433
- }, "cron: queued manual run waiting for an execution slot");
2434
- }
2435
- }).catch((err) => {
2436
- state.deps.log.error({
2437
- jobId: id,
2438
- runId,
2439
- err: String(err)
2440
- }, "cron: queued manual run background execution failed");
2441
- });
2442
- return {
2443
- ok: true,
2444
- enqueued: true,
2445
- runId
2446
- };
2447
- }
2448
- function wakeNow(state, opts) {
2449
- return wake(state, opts);
2450
- }
2451
- //#endregion
2452
- //#region src/cron/service/state.ts
2453
- function createCronServiceState(deps) {
2454
- return {
2455
- deps: {
2456
- ...deps,
2457
- nowMs: deps.nowMs ?? (() => Date.now())
2458
- },
2459
- store: null,
2460
- timer: null,
2461
- running: false,
2462
- op: Promise.resolve(),
2463
- warnedDisabled: false,
2464
- warnedMissingSessionTargetJobIds: /* @__PURE__ */ new Set(),
2465
- warnedInvalidPersistedJobKeys: /* @__PURE__ */ new Set(),
2466
- pendingQuarantineConfigJobs: [],
2467
- lastQuarantineFailureWarnKey: null,
2468
- storeLoadedAtMs: null,
2469
- storeFileMtimeMs: null
2470
- };
2471
- }
2472
- //#endregion
2473
- //#region src/cron/service.ts
2474
- var CronService = class {
2475
- constructor(deps) {
2476
- this.state = createCronServiceState(deps);
2477
- }
2478
- async start() {
2479
- await start(this.state);
2480
- }
2481
- stop() {
2482
- stop(this.state);
2483
- }
2484
- async status() {
2485
- return await status(this.state);
2486
- }
2487
- async list(opts) {
2488
- return await list(this.state, opts);
2489
- }
2490
- async listPage(opts) {
2491
- return await listPage(this.state, opts);
2492
- }
2493
- async add(input) {
2494
- return await add(this.state, input);
2495
- }
2496
- async update(id, patch) {
2497
- return await update(this.state, id, patch);
2498
- }
2499
- async remove(id) {
2500
- return await remove(this.state, id);
2501
- }
2502
- async run(id, mode) {
2503
- return await run(this.state, id, mode);
2504
- }
2505
- async enqueueRun(id, mode) {
2506
- const result = await enqueueRun(this.state, id, mode);
2507
- if (result.ok && "runnable" in result) throw new Error("cron enqueueRun returned unresolved runnable disposition");
2508
- return result;
2509
- }
2510
- getJob(id) {
2511
- return this.state.store?.jobs.find((job) => job.id === id);
2512
- }
2513
- async readJob(id) {
2514
- return await readJob(this.state, id);
2515
- }
2516
- getDefaultAgentId() {
2517
- return this.state.deps.defaultAgentId;
2518
- }
2519
- wake(opts) {
2520
- return wakeNow(this.state, opts);
2521
- }
2522
- };
2523
- //#endregion
2524
- //#region src/cron/delivery.ts
2525
- const FAILURE_NOTIFICATION_TIMEOUT_MS = 3e4;
2526
- const cronDeliveryLogger = getChildLogger({ subsystem: "cron-delivery" });
2527
- async function resolveCronAnnounceDelivery(params) {
2528
- const resolvedTarget = await resolveDeliveryTarget(params.cfg, params.agentId, {
2529
- channel: params.target.channel,
2530
- to: params.target.to,
2531
- accountId: params.target.accountId,
2532
- sessionKey: params.target.sessionKey
2533
- });
2534
- if (!resolvedTarget.ok) return {
2535
- ok: false,
2536
- error: resolvedTarget.error
2537
- };
2538
- const identity = resolveAgentOutboundIdentity(params.cfg, params.agentId);
2539
- return {
2540
- ok: true,
2541
- resolvedTarget,
2542
- session: buildOutboundSessionContext({
2543
- cfg: params.cfg,
2544
- agentId: params.agentId,
2545
- sessionKey: resolveCronNotificationSessionKey({
2546
- jobId: params.jobId,
2547
- sessionKey: params.target.sessionKey
2548
- })
2549
- }),
2550
- identity
2551
- };
2552
- }
2553
- async function deliverCronAnnouncePayload(params) {
2554
- const send = await sendDurableMessageBatch({
2555
- cfg: params.cfg,
2556
- channel: params.delivery.resolvedTarget.channel,
2557
- to: params.delivery.resolvedTarget.to,
2558
- accountId: params.delivery.resolvedTarget.accountId,
2559
- threadId: params.delivery.resolvedTarget.threadId,
2560
- payloads: [{ text: params.message }],
2561
- session: params.delivery.session,
2562
- identity: params.delivery.identity,
2563
- bestEffort: false,
2564
- deps: createOutboundSendDeps(params.deps),
2565
- signal: params.abortSignal
2566
- });
2567
- if (send.status === "failed" || send.status === "partial_failed") throw send.error;
2568
- }
2569
- async function sendCronAnnouncePayloadStrict(params) {
2570
- const delivery = await resolveCronAnnounceDelivery(params);
2571
- if (!delivery.ok) throw delivery.error;
2572
- await deliverCronAnnouncePayload({
2573
- deps: params.deps,
2574
- cfg: params.cfg,
2575
- delivery,
2576
- message: params.message,
2577
- abortSignal: params.abortSignal
2578
- });
2579
- }
2580
- async function sendFailureNotificationAnnounce(deps, cfg, agentId, jobId, target, message) {
2581
- const delivery = await resolveCronAnnounceDelivery({
2582
- cfg,
2583
- agentId,
2584
- jobId,
2585
- target
2586
- });
2587
- if (!delivery.ok) {
2588
- cronDeliveryLogger.warn({ error: delivery.error.message }, "cron: failed to resolve failure destination target");
2589
- return;
2590
- }
2591
- const abortController = new AbortController();
2592
- const timeout = setTimeout(() => {
2593
- abortController.abort();
2594
- }, FAILURE_NOTIFICATION_TIMEOUT_MS);
2595
- try {
2596
- await deliverCronAnnouncePayload({
2597
- deps,
2598
- cfg,
2599
- delivery,
2600
- message,
2601
- abortSignal: abortController.signal
2602
- });
2603
- } catch (err) {
2604
- cronDeliveryLogger.warn({
2605
- err: formatErrorMessage(err),
2606
- channel: delivery.resolvedTarget.channel,
2607
- to: delivery.resolvedTarget.to
2608
- }, "cron: failure destination announce failed");
2609
- } finally {
2610
- clearTimeout(timeout);
2611
- }
2612
- }
2613
- //#endregion
2614
- //#region src/gateway/server-cron-notifications.ts
2615
- const CRON_WEBHOOK_TIMEOUT_MS = 1e4;
2616
- function redactWebhookUrl(url) {
2617
- try {
2618
- const parsed = new URL(url);
2619
- return `${parsed.origin}${parsed.pathname}`;
2620
- } catch {
2621
- return "<invalid-webhook-url>";
2622
- }
2623
- }
2624
- function resolveCronWebhookTarget(params) {
2625
- if (normalizeOptionalLowercaseString(params.delivery?.mode) === "webhook") {
2626
- const url = normalizeHttpWebhookUrl(params.delivery?.to);
2627
- return url ? {
2628
- url,
2629
- source: "delivery"
2630
- } : null;
2631
- }
2632
- if (params.legacyNotify) {
2633
- const legacyUrl = normalizeHttpWebhookUrl(params.legacyWebhook);
2634
- if (legacyUrl) return {
2635
- url: legacyUrl,
2636
- source: "legacy"
2637
- };
2638
- }
2639
- return null;
2640
- }
2641
- function buildCronWebhookHeaders(webhookToken) {
2642
- const headers = { "Content-Type": "application/json" };
2643
- if (webhookToken) headers.Authorization = `Bearer ${webhookToken}`;
2644
- return headers;
2645
- }
2646
- async function postCronWebhook(params) {
2647
- const abortController = new AbortController();
2648
- const timeout = setTimeout(() => {
2649
- abortController.abort();
2650
- }, CRON_WEBHOOK_TIMEOUT_MS);
2651
- try {
2652
- await (await fetchWithSsrFGuard({
2653
- url: params.webhookUrl,
2654
- init: {
2655
- method: "POST",
2656
- headers: buildCronWebhookHeaders(params.webhookToken),
2657
- body: JSON.stringify(params.payload),
2658
- signal: abortController.signal
2659
- }
2660
- })).release();
2661
- } catch (err) {
2662
- if (err instanceof SsrFBlockedError) params.logger.warn({
2663
- ...params.logContext,
2664
- reason: formatErrorMessage(err),
2665
- webhookUrl: redactWebhookUrl(params.webhookUrl)
2666
- }, params.blockedLog);
2667
- else params.logger.warn({
2668
- ...params.logContext,
2669
- err: formatErrorMessage(err),
2670
- webhookUrl: redactWebhookUrl(params.webhookUrl)
2671
- }, params.failedLog);
2672
- } finally {
2673
- clearTimeout(timeout);
2674
- }
2675
- }
2676
- async function sendGatewayCronFailureAlert(params) {
2677
- const { agentId, cfg: runtimeConfig } = params.resolveCronAgent(params.job.agentId);
2678
- const webhookToken = normalizeOptionalString(params.webhookToken);
2679
- if (params.mode === "webhook" && !params.to) {
2680
- params.logger.warn({ jobId: params.job.id }, "cron: failure alert webhook mode requires URL, skipping");
2681
- return;
2682
- }
2683
- if (params.mode === "webhook" && params.to) {
2684
- const webhookUrl = normalizeHttpWebhookUrl(params.to);
2685
- if (webhookUrl) await postCronWebhook({
2686
- webhookUrl,
2687
- webhookToken,
2688
- payload: {
2689
- jobId: params.job.id,
2690
- jobName: params.job.name,
2691
- message: params.text
2692
- },
2693
- logContext: { jobId: params.job.id },
2694
- blockedLog: "cron: failure alert webhook blocked by SSRF guard",
2695
- failedLog: "cron: failure alert webhook failed",
2696
- logger: params.logger
2697
- });
2698
- else params.logger.warn({
2699
- jobId: params.job.id,
2700
- webhookUrl: redactWebhookUrl(params.to)
2701
- }, "cron: failure alert webhook URL is invalid, skipping");
2702
- return;
2703
- }
2704
- const abortController = new AbortController();
2705
- await sendCronAnnouncePayloadStrict({
2706
- deps: params.deps,
2707
- cfg: runtimeConfig,
2708
- agentId,
2709
- jobId: params.job.id,
2710
- target: {
2711
- channel: params.channel,
2712
- to: params.to,
2713
- accountId: params.accountId,
2714
- sessionKey: resolveCronDeliverySessionKey(params.job)
2715
- },
2716
- message: params.text,
2717
- abortSignal: abortController.signal
2718
- });
2719
- }
2720
- function dispatchGatewayCronFinishedNotifications(params) {
2721
- const webhookToken = normalizeOptionalString(params.webhookToken);
2722
- const legacyWebhook = normalizeOptionalString(params.legacyWebhook);
2723
- const legacyNotify = params.job?.notify === true;
2724
- const webhookTarget = resolveCronWebhookTarget({
2725
- delivery: params.job?.delivery && typeof params.job.delivery.mode === "string" ? {
2726
- mode: params.job.delivery.mode,
2727
- to: params.job.delivery.to
2728
- } : void 0,
2729
- legacyNotify,
2730
- legacyWebhook
2731
- });
2732
- if (!webhookTarget && params.job?.delivery?.mode === "webhook") params.logger.warn({
2733
- jobId: params.evt.jobId,
2734
- deliveryTo: params.job.delivery.to
2735
- }, "cron: skipped webhook delivery, delivery.to must be a valid http(s) URL");
2736
- if (webhookTarget?.source === "legacy" && !params.warnedLegacyWebhookJobs.has(params.evt.jobId)) {
2737
- params.warnedLegacyWebhookJobs.add(params.evt.jobId);
2738
- params.logger.warn({
2739
- jobId: params.evt.jobId,
2740
- legacyWebhook: redactWebhookUrl(webhookTarget.url)
2741
- }, "cron: deprecated notify+cron.webhook fallback in use, migrate to delivery.mode=webhook with delivery.to");
2742
- }
2743
- if (webhookTarget && params.evt.summary) (async () => {
2744
- await postCronWebhook({
2745
- webhookUrl: webhookTarget.url,
2746
- webhookToken,
2747
- payload: params.evt,
2748
- logContext: { jobId: params.evt.jobId },
2749
- blockedLog: "cron: webhook delivery blocked by SSRF guard",
2750
- failedLog: "cron: webhook delivery failed",
2751
- logger: params.logger
2752
- });
2753
- })();
2754
- dispatchCronFailureDestinationNotifications({
2755
- evt: params.evt,
2756
- job: params.job,
2757
- deps: params.deps,
2758
- logger: params.logger,
2759
- resolveCronAgent: params.resolveCronAgent,
2760
- webhookToken,
2761
- globalFailureDestination: params.globalFailureDestination
2762
- });
2763
- }
2764
- function dispatchCronFailureDestinationNotifications(params) {
2765
- if (params.evt.status !== "error" || !params.job || params.job.delivery?.bestEffort === true) return;
2766
- const failureMessage = `Cron job "${params.job.name}" failed: ${params.evt.error ?? "unknown error"}`;
2767
- const failureDest = resolveFailureDestination(params.job, params.globalFailureDestination);
2768
- const deliverySessionKey = resolveCronDeliverySessionKey(params.job);
2769
- if (failureDest) {
2770
- const failurePayload = {
2771
- jobId: params.job.id,
2772
- jobName: params.job.name,
2773
- message: failureMessage,
2774
- status: params.evt.status,
2775
- error: params.evt.error,
2776
- runAtMs: params.evt.runAtMs,
2777
- durationMs: params.evt.durationMs,
2778
- nextRunAtMs: params.evt.nextRunAtMs
2779
- };
2780
- if (failureDest.mode === "webhook" && failureDest.to) {
2781
- const webhookUrl = normalizeHttpWebhookUrl(failureDest.to);
2782
- if (webhookUrl) (async () => {
2783
- await postCronWebhook({
2784
- webhookUrl,
2785
- webhookToken: params.webhookToken,
2786
- payload: failurePayload,
2787
- logContext: { jobId: params.evt.jobId },
2788
- blockedLog: "cron: failure destination webhook blocked by SSRF guard",
2789
- failedLog: "cron: failure destination webhook failed",
2790
- logger: params.logger
2791
- });
2792
- })();
2793
- else params.logger.warn({
2794
- jobId: params.evt.jobId,
2795
- webhookUrl: redactWebhookUrl(failureDest.to)
2796
- }, "cron: failure destination webhook URL is invalid, skipping");
2797
- return;
2798
- }
2799
- if (failureDest.mode === "announce") {
2800
- const { agentId, cfg: runtimeConfig } = params.resolveCronAgent(params.job.agentId);
2801
- sendFailureNotificationAnnounce(params.deps, runtimeConfig, agentId, params.job.id, {
2802
- channel: failureDest.channel,
2803
- to: failureDest.to,
2804
- accountId: failureDest.accountId,
2805
- sessionKey: deliverySessionKey
2806
- }, `⚠️ ${failureMessage}`);
2807
- }
2808
- return;
2809
- }
2810
- const primaryPlan = resolveCronDeliveryPlan(params.job);
2811
- if (primaryPlan.mode !== "announce" || !primaryPlan.requested) return;
2812
- const { agentId, cfg: runtimeConfig } = params.resolveCronAgent(params.job.agentId);
2813
- sendFailureNotificationAnnounce(params.deps, runtimeConfig, agentId, params.job.id, {
2814
- channel: primaryPlan.channel,
2815
- to: primaryPlan.to,
2816
- accountId: primaryPlan.accountId,
2817
- sessionKey: deliverySessionKey
2818
- }, `⚠️ ${failureMessage}`);
2819
- }
2820
- //#endregion
2821
- //#region src/gateway/server-cron.ts
2822
- /** Pick only the keys whose values are not `undefined` from an object. */
2823
- function pickDefined(obj, keys) {
2824
- const result = {};
2825
- for (const k of keys) if (obj[k] !== void 0) result[k] = obj[k];
2826
- return result;
2827
- }
2828
- function omitExplicitHeartbeatDestination(heartbeat) {
2829
- if (!heartbeat) return;
2830
- return {
2831
- ...heartbeat,
2832
- to: void 0,
2833
- accountId: void 0
2834
- };
2835
- }
2836
- function sanitizeCronHeartbeatOverride(heartbeat) {
2837
- return heartbeat?.target === "last" ? omitExplicitHeartbeatDestination(heartbeat) : heartbeat;
2838
- }
2839
- /** Map internal CronJob to the public plugin SDK shape. */
2840
- function toPluginCronJob(job) {
2841
- return {
2842
- id: job.id,
2843
- agentId: job.agentId,
2844
- name: job.name,
2845
- description: job.description,
2846
- enabled: job.enabled,
2847
- schedule: job.schedule ? structuredClone(job.schedule) : void 0,
2848
- sessionTarget: job.sessionTarget,
2849
- wakeMode: job.wakeMode,
2850
- payload: job.payload ? structuredClone(job.payload) : void 0,
2851
- state: {
2852
- nextRunAtMs: job.state.nextRunAtMs,
2853
- runningAtMs: job.state.runningAtMs,
2854
- lastRunAtMs: job.state.lastRunAtMs,
2855
- lastRunStatus: job.state.lastRunStatus,
2856
- lastError: job.state.lastError,
2857
- lastDurationMs: job.state.lastDurationMs,
2858
- lastDelivered: job.state.lastDelivered,
2859
- lastDeliveryStatus: job.state.lastDeliveryStatus,
2860
- lastDeliveryError: job.state.lastDeliveryError,
2861
- lastFailureNotificationDelivered: job.state.lastFailureNotificationDelivered,
2862
- lastFailureNotificationDeliveryStatus: job.state.lastFailureNotificationDeliveryStatus,
2863
- lastFailureNotificationDeliveryError: job.state.lastFailureNotificationDeliveryError
2864
- },
2865
- createdAtMs: job.createdAtMs,
2866
- updatedAtMs: job.updatedAtMs
2867
- };
2868
- }
2869
- function buildGatewayCronService(params) {
2870
- const cronLogger = getChildLogger({ module: "cron" });
2871
- const storePath = resolveCronStorePath(params.cfg.cron?.store);
2872
- const cronEnabled = process.env.FENGMING_SKIP_CRON !== "1" && params.cfg.cron?.enabled !== false;
2873
- 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;
2874
- const hasConfiguredAgent = (cfg, agentId) => Boolean(findAgentEntry(cfg, agentId));
2875
- const mergeRuntimeAgentConfig = (runtimeConfig, requestedAgentId) => {
2876
- if (hasConfiguredAgent(runtimeConfig, requestedAgentId)) return runtimeConfig;
2877
- const fallbackAgentEntry = findAgentEntry(params.cfg, requestedAgentId);
2878
- if (!fallbackAgentEntry) return runtimeConfig;
2879
- const startupAgents = params.cfg.agents;
2880
- const runtimeAgents = runtimeConfig.agents;
2881
- return {
2882
- ...runtimeConfig,
2883
- agents: {
2884
- ...startupAgents,
2885
- ...runtimeAgents,
2886
- defaults: {
2887
- ...startupAgents?.defaults,
2888
- ...runtimeAgents?.defaults
2889
- },
2890
- list: [...runtimeAgents?.list ?? [], fallbackAgentEntry]
2891
- }
2892
- };
2893
- };
2894
- const resolveCronAgent = (requested) => {
2895
- const runtimeConfig = getRuntimeConfig();
2896
- const normalized = typeof requested === "string" && requested.trim() ? normalizeAgentId(requested) : void 0;
2897
- const effectiveConfig = normalized !== void 0 ? mergeRuntimeAgentConfig(runtimeConfig, normalized) : runtimeConfig;
2898
- return {
2899
- agentId: normalized !== void 0 && hasConfiguredAgent(effectiveConfig, normalized) ? normalized : resolveDefaultAgentId(effectiveConfig),
2900
- cfg: effectiveConfig
2901
- };
2902
- };
2903
- const resolveCronSessionKey = (params) => {
2904
- const requested = params.requestedSessionKey?.trim();
2905
- if (!requested) return resolveAgentMainSessionKey({
2906
- cfg: params.runtimeConfig,
2907
- agentId: params.agentId
2908
- });
2909
- const candidate = toAgentStoreSessionKey({
2910
- agentId: params.agentId,
2911
- requestKey: requested,
2912
- mainKey: params.runtimeConfig.session?.mainKey
2913
- });
2914
- const canonical = canonicalizeMainSessionAlias({
2915
- cfg: params.runtimeConfig,
2916
- agentId: params.agentId,
2917
- sessionKey: candidate
2918
- });
2919
- if (canonical !== "global") {
2920
- if (normalizeAgentId(resolveAgentIdFromSessionKey(canonical)) !== normalizeAgentId(params.agentId)) return resolveAgentMainSessionKey({
2921
- cfg: params.runtimeConfig,
2922
- agentId: params.agentId
2923
- });
2924
- }
2925
- return resolveMainScopedEventSessionKey({
2926
- cfg: params.runtimeConfig,
2927
- sessionKey: canonical,
2928
- agentId: params.agentId
2929
- }) ?? canonical;
2930
- };
2931
- const resolveCronTarget = (opts) => {
2932
- const requestedAgentId = typeof opts?.agentId === "string" && opts.agentId.trim() ? normalizeAgentId(opts.agentId) : void 0;
2933
- const requestedSessionKey = typeof opts?.sessionKey === "string" && opts.sessionKey.trim() ? opts.sessionKey : void 0;
2934
- if (opts?.preserveUntargeted && !requestedAgentId && !requestedSessionKey) return {
2935
- runtimeConfig: getRuntimeConfig(),
2936
- agentId: void 0,
2937
- sessionKey: void 0
2938
- };
2939
- const derivedAgentId = requestedSessionKey && parseAgentSessionKey(requestedSessionKey) ? resolveAgentIdFromSessionKey(requestedSessionKey) : void 0;
2940
- const { agentId: resolvedAgentId, cfg: runtimeConfig } = resolveCronAgent(requestedAgentId ?? derivedAgentId);
2941
- const agentId = resolvedAgentId || void 0;
2942
- const resolvedSessionKey = agentId ? resolveCronSessionKey({
2943
- runtimeConfig,
2944
- agentId,
2945
- requestedSessionKey
2946
- }) : void 0;
2947
- return {
2948
- runtimeConfig,
2949
- agentId,
2950
- sessionKey: resolvedSessionKey && runtimeConfig.session?.scope === "global" ? resolveEventSessionKey(resolvedSessionKey, runtimeConfig.session?.mainKey, runtimeConfig.session?.scope) : resolvedSessionKey
2951
- };
2952
- };
2953
- const resolveCronHeartbeatOverride = (params) => {
2954
- if (!params.heartbeat) return;
2955
- const agentEntry = params.agentId !== void 0 ? findAgentEntry(params.runtimeConfig, params.agentId) : void 0;
2956
- const agentHeartbeat = agentEntry && typeof agentEntry === "object" ? agentEntry.heartbeat : void 0;
2957
- return sanitizeCronHeartbeatOverride({
2958
- ...params.runtimeConfig.agents?.defaults?.heartbeat,
2959
- ...agentHeartbeat,
2960
- ...params.heartbeat
2961
- });
2962
- };
2963
- const defaultAgentId = resolveDefaultAgentId(params.cfg);
2964
- const runLogPrune = resolveCronRunLogPruneOptions(params.cfg.cron?.runLog);
2965
- const resolveSessionStorePath = (agentId) => resolveStorePath(params.cfg.session?.store, { agentId: agentId ?? defaultAgentId });
2966
- const sessionStorePath = resolveSessionStorePath(defaultAgentId);
2967
- const warnedLegacyWebhookJobs = /* @__PURE__ */ new Set();
2968
- const runCronChangedHook = (evt) => {
2969
- const hookRunner = getGlobalHookRunner();
2970
- if (!hookRunner?.hasHooks("cron_changed")) return;
2971
- const hookCtx = {
2972
- config: getRuntimeConfig(),
2973
- getCron: () => cron
2974
- };
2975
- hookRunner.runCronChanged(evt, hookCtx).catch((err) => {
2976
- cronLogger.warn({
2977
- err: formatErrorMessage(err),
2978
- jobId: evt.jobId
2979
- }, "cron_changed hook failed");
2980
- });
2981
- };
2982
- const cron = new CronService({
2983
- storePath,
2984
- cronEnabled,
2985
- cronConfig: params.cfg.cron,
2986
- defaultAgentId,
2987
- resolveSessionStorePath,
2988
- sessionStorePath,
2989
- enqueueSystemEvent: (text, opts) => {
2990
- const { sessionKey } = resolveCronTarget(opts);
2991
- if (!sessionKey) throw new Error("Cron system event target did not resolve a session key.");
2992
- enqueueSystemEvent(text, {
2993
- sessionKey,
2994
- contextKey: opts?.contextKey,
2995
- deliveryContext: opts?.deliveryContext
2996
- });
2997
- },
2998
- requestHeartbeat: (opts) => {
2999
- const { agentId, sessionKey } = resolveCronTarget({
3000
- ...opts,
3001
- preserveUntargeted: true
3002
- });
3003
- requestHeartbeat({
3004
- source: opts?.source ?? "cron",
3005
- intent: opts?.intent ?? "event",
3006
- reason: opts?.reason,
3007
- agentId,
3008
- sessionKey,
3009
- heartbeat: sanitizeCronHeartbeatOverride(opts?.heartbeat)
3010
- });
3011
- },
3012
- runHeartbeatOnce: async (opts) => {
3013
- const { runtimeConfig, agentId, sessionKey } = resolveCronTarget({
3014
- ...opts,
3015
- preserveUntargeted: true
3016
- });
3017
- return await runHeartbeatOnce({
3018
- cfg: runtimeConfig,
3019
- source: opts?.source ?? "cron",
3020
- intent: opts?.intent ?? "event",
3021
- reason: opts?.reason,
3022
- agentId,
3023
- sessionKey,
3024
- heartbeat: resolveCronHeartbeatOverride({
3025
- runtimeConfig,
3026
- agentId,
3027
- heartbeat: opts?.heartbeat
3028
- }),
3029
- deps: {
3030
- ...params.deps,
3031
- runtime: defaultRuntime
3032
- }
3033
- });
3034
- },
3035
- runIsolatedAgentJob: async ({ job, message, abortSignal, onExecutionStarted, onExecutionPhase }) => {
3036
- const { agentId, cfg: runtimeConfig } = resolveCronAgent(job.agentId);
3037
- const sessionKey = resolveCronSessionTargetSessionKey(job.sessionTarget) ?? `cron:${job.id}`;
3038
- try {
3039
- return await runCronIsolatedAgentTurn({
3040
- cfg: runtimeConfig,
3041
- deps: params.deps,
3042
- job,
3043
- message,
3044
- abortSignal,
3045
- onExecutionStarted,
3046
- onExecutionPhase,
3047
- agentId,
3048
- sessionKey,
3049
- lane: "cron"
3050
- });
3051
- } finally {
3052
- await cleanupBrowserSessionsForLifecycleEnd({
3053
- sessionKeys: [sessionKey],
3054
- onWarn: (msg) => cronLogger.warn({ jobId: job.id }, msg)
3055
- });
3056
- }
3057
- },
3058
- cleanupTimedOutAgentRun: async ({ job, execution }) => {
3059
- if (!execution?.sessionId) return;
3060
- const result = await abortAndDrainEmbeddedAgentRun({
3061
- sessionId: execution.sessionId,
3062
- sessionKey: execution.sessionKey,
3063
- settleMs: 15e3,
3064
- forceClear: true,
3065
- reason: "cron_timeout"
3066
- });
3067
- cronLogger.warn({
3068
- jobId: job.id,
3069
- sessionId: execution.sessionId,
3070
- sessionKey: execution.sessionKey,
3071
- aborted: result.aborted,
3072
- drained: result.drained,
3073
- forceCleared: result.forceCleared
3074
- }, "cron: cleaned up timed-out agent run");
3075
- },
3076
- sendCronFailureAlert: async ({ job, text, channel, to, mode, accountId }) => await sendGatewayCronFailureAlert({
3077
- deps: params.deps,
3078
- logger: cronLogger,
3079
- resolveCronAgent,
3080
- webhookToken: params.cfg.cron?.webhookToken,
3081
- job,
3082
- text,
3083
- channel,
3084
- to,
3085
- mode,
3086
- accountId
3087
- }),
3088
- log: getChildLogger({
3089
- module: "cron",
3090
- storePath
3091
- }),
3092
- onEvent: (evt) => {
3093
- params.broadcast("cron", evt, { dropIfSlow: true });
3094
- const jobSnapshot = evt.job ?? cron.getJob(evt.jobId);
3095
- const pluginJob = jobSnapshot ? toPluginCronJob(jobSnapshot) : void 0;
3096
- runCronChangedHook({
3097
- action: evt.action,
3098
- jobId: evt.jobId,
3099
- ...pluginJob ? { job: pluginJob } : {},
3100
- sessionTarget: jobSnapshot?.sessionTarget,
3101
- agentId: jobSnapshot?.agentId,
3102
- ...pickDefined(evt, [
3103
- "runAtMs",
3104
- "durationMs",
3105
- "status",
3106
- "error",
3107
- "summary",
3108
- "delivered",
3109
- "deliveryStatus",
3110
- "deliveryError",
3111
- "sessionId",
3112
- "sessionKey",
3113
- "runId",
3114
- "nextRunAtMs",
3115
- "model",
3116
- "provider"
3117
- ])
3118
- });
3119
- if (evt.action === "finished") {
3120
- dispatchGatewayCronFinishedNotifications({
3121
- evt,
3122
- job: evt.job ?? cron.getJob(evt.jobId),
3123
- deps: params.deps,
3124
- logger: cronLogger,
3125
- resolveCronAgent,
3126
- webhookToken: params.cfg.cron?.webhookToken,
3127
- legacyWebhook: params.cfg.cron?.webhook,
3128
- globalFailureDestination: params.cfg.cron?.failureDestination,
3129
- warnedLegacyWebhookJobs
3130
- });
3131
- const logPath = resolveCronRunLogPath({
3132
- storePath,
3133
- jobId: evt.jobId
3134
- });
3135
- appendCronRunLog(logPath, {
3136
- ts: Date.now(),
3137
- jobId: evt.jobId,
3138
- action: "finished",
3139
- status: evt.status,
3140
- error: evt.error,
3141
- summary: evt.summary,
3142
- diagnostics: evt.diagnostics,
3143
- delivered: evt.delivered,
3144
- deliveryStatus: evt.deliveryStatus,
3145
- deliveryError: evt.deliveryError,
3146
- failureNotificationDelivery: evt.failureNotificationDelivery,
3147
- delivery: evt.delivery,
3148
- sessionId: evt.sessionId,
3149
- sessionKey: evt.sessionKey,
3150
- runId: evt.runId,
3151
- runAtMs: evt.runAtMs,
3152
- durationMs: evt.durationMs,
3153
- nextRunAtMs: evt.nextRunAtMs,
3154
- model: evt.model,
3155
- provider: evt.provider,
3156
- usage: evt.usage
3157
- }, runLogPrune).catch((err) => {
3158
- cronLogger.warn({
3159
- err: String(err),
3160
- logPath
3161
- }, "cron: run log append failed");
3162
- });
3163
- }
3164
- }
3165
- });
3166
- return {
3167
- cron,
3168
- storePath,
3169
- cronEnabled
3170
- };
3171
- }
3172
- //#endregion
3173
- export { buildGatewayCronService as t };