fengming 0.3.3 → 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 (2022) hide show
  1. package/CHANGELOG.md +3 -3
  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 +7 -7
  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-DTi2D7ZS.js +133 -0
  451. package/dist/gateway-cli-DT2fL2fX.js +443 -0
  452. package/dist/gateway-install-token-CJhAycOA.js +136 -0
  453. package/dist/gateway-method-runtime-BuiYTDQk.js +21 -0
  454. package/dist/gateway-runtime-C5_cVlSW.js +23 -0
  455. package/dist/get-reply-Cz-dUrWm.js +5198 -0
  456. package/dist/get-reply-from-config.runtime-BC1HT67i.js +2 -0
  457. package/dist/get-reply-from-config.runtime.js +1 -1
  458. package/dist/github-copilot-token-09lxV3kH.js +2 -0
  459. package/dist/health-CmihbcqN.js +621 -0
  460. package/dist/health-D8L37hBZ.js +111 -0
  461. package/dist/health-DU7I9RrJ.js +3 -0
  462. package/dist/health-state-QZ2E6xGQ.js +106 -0
  463. package/dist/heartbeat-runner-Bz5PMzEI.js +1930 -0
  464. package/dist/heartbeat-runner-DfqqQ_8w.js +5 -0
  465. package/dist/heartbeat-runner.runtime-8BshUhoS.js +3 -0
  466. package/dist/heartbeat-runner.runtime.js +1 -1
  467. package/dist/helpers-Bkq4POdX.js +406 -0
  468. package/dist/hook-helpers-nmDwt3Fa.js +44 -0
  469. package/dist/hooks-9FOcRqfu.js +536 -0
  470. package/dist/hooks-cli-CrQelcwo.js +465 -0
  471. package/dist/http-endpoint-helpers-BD5u6YsT.js +37 -0
  472. package/dist/http-utils-RcKuBJ0I.js +98 -0
  473. package/dist/image-DwNoypK2.js +385 -0
  474. package/dist/image-fallbacks-BUyDnmUX.js +31 -0
  475. package/dist/image-generation-core.auth.runtime-CA8miEMh.js +2 -0
  476. package/dist/image-generation-core.auth.runtime.js +1 -1
  477. package/dist/image-generation-provider-DXMW5EmB.js +152 -0
  478. package/dist/image-runtime-D5QpNNzz.js +9 -0
  479. package/dist/image-tool.helpers-6vGxo1Y0.js +150 -0
  480. package/dist/images-BGWLzQEJ.js +416 -0
  481. package/dist/images-Db4UB3JG.js +2 -0
  482. package/dist/inbound-reply-dispatch-DRF6ZmQg.js +2 -0
  483. package/dist/inbound-reply-dispatch-RAKLqow4.js +147 -0
  484. package/dist/index.js +1 -1
  485. package/dist/infra-runtime-BFrpRc_V.js +32 -0
  486. package/dist/init-sR7bCS9D.js +59 -0
  487. package/dist/install-BzdJbOUx.js +262 -0
  488. package/dist/install.runtime-Zye6pbZ6.js +2 -0
  489. package/dist/internal-DL_vFx8C.js +399 -0
  490. package/dist/isolated-agent-Qif8Llbt.js +2 -0
  491. package/dist/isolated-agent-aqEjxqs-.js +1097 -0
  492. package/dist/kernel-B-i4c2IK.js +979 -0
  493. package/dist/kernel-DYDJ_hLb.js +3 -0
  494. package/dist/kimi-web-search-provider.runtime-95HAkvHY.js +307 -0
  495. package/dist/kimi-web-search-provider.runtime.js +1 -1
  496. package/dist/library-CZVbE5hF.js +45 -0
  497. package/dist/lifecycle-C8M3YLbT.js +2 -0
  498. package/dist/lifecycle-CPDNQnUN.js +570 -0
  499. package/dist/lifecycle-DpuP7n3J.js +355 -0
  500. package/dist/lifecycle.runtime-C8M3YLbT.js +2 -0
  501. package/dist/lifecycle.runtime.js +1 -1
  502. package/dist/link-understanding/apply.runtime.js +3 -3
  503. package/dist/list-B_ALwpPl.js +2 -0
  504. package/dist/list-Bda_GYFy.js +207 -0
  505. package/dist/list.list-command-W9OGfAIU.js +429 -0
  506. package/dist/list.model-row-LV4AaX0H.js +39 -0
  507. package/dist/list.probe-CrZm6BH2.js +451 -0
  508. package/dist/list.probe-Dfdmb8bC.js +2 -0
  509. package/dist/list.provider-catalog-7T1jKk0n.js +211 -0
  510. package/dist/list.provider-catalog-DjGyZVEj.js +2 -0
  511. package/dist/list.registry-load-DkCS8JZQ.js +152 -0
  512. package/dist/list.row-sources-B1vjo_Y9.js +474 -0
  513. package/dist/list.source-plan-C9Sa6zRK.js +81 -0
  514. package/dist/list.status-command-9daSZZDm.js +815 -0
  515. package/dist/live-model-switch-Dy-UFUMS.js +119 -0
  516. package/dist/llm-slug-generator-DEmh5-_1.js +78 -0
  517. package/dist/llm-slug-generator.js +1 -1
  518. package/dist/load-config-CvQpC8k6.js +27 -0
  519. package/dist/load-context-_qSHpZ5S.js +82 -0
  520. package/dist/loader-CntMt07B.js +7008 -0
  521. package/dist/local-dispatch.runtime-BSN_gqNS.js +10 -0
  522. package/dist/local-dispatch.runtime.js +1 -1
  523. package/dist/main-session-restart-recovery-Db7366lt.js +2 -0
  524. package/dist/main-session-restart-recovery-n87NTooQ.js +389 -0
  525. package/dist/managed-image-attachments-BTBBHlKl.js +2 -0
  526. package/dist/managed-image-attachments-C6_V1yX0.js +616 -0
  527. package/dist/manager-CKrWxjV6.js +3737 -0
  528. package/dist/manager-Dvb1FVnx.js +2314 -0
  529. package/dist/mcp/plugin-tools-serve.js +2 -2
  530. package/dist/mcp-http-CSoGXOa_.js +583 -0
  531. package/dist/mcp-http-D4ieDB3W.js +2 -0
  532. package/dist/media-runtime-GeQTQkkK.js +391 -0
  533. package/dist/media-services-CWbIUZDe.js +416 -0
  534. package/dist/media-understanding/apply.runtime.js +1 -1
  535. package/dist/media-understanding-DXc2BD2L.js +87 -0
  536. package/dist/media-understanding-provider-BkdUiVWU.js +70 -0
  537. package/dist/media-understanding-provider-BlgmLViW.js +13 -0
  538. package/dist/media-understanding-provider-C9P2VjkC.js +29 -0
  539. package/dist/media-understanding-provider-CJlbgAvl.js +69 -0
  540. package/dist/memory-CnC2jM1l.js +437 -0
  541. package/dist/memory-core-host-engine-embeddings-Dy9vN-Ce.js +667 -0
  542. package/dist/memory-core-host-engine-foundation-C-pGGQnm.js +15 -0
  543. package/dist/memory-core-host-engine-qmd-DLJDON9w.js +2 -0
  544. package/dist/memory-core-host-engine-storage-Bzf-C8XE.js +2 -0
  545. package/dist/memory-core-host-runtime-cli-_LWA6G3x.js +10 -0
  546. package/dist/memory-core-host-runtime-core-CromkNBr.js +12 -0
  547. package/dist/memory-core-host-runtime-files-DpbviC1b.js +4 -0
  548. package/dist/memory-embedding-provider-runtime-CaVVaYC5.js +36 -0
  549. package/dist/memory-host-core-B5dWHwBF.js +78 -0
  550. package/dist/memory-host-search.runtime-DqlCFac1.js +2 -0
  551. package/dist/memory-host-search.runtime.js +1 -1
  552. package/dist/memory-runtime-BCeeWb1G.js +2 -0
  553. package/dist/memory-runtime-pR9KGin0.js +57 -0
  554. package/dist/memory-search-CpDEEY2Q.js +235 -0
  555. package/dist/message-BeGCG-D8.js +284 -0
  556. package/dist/message-YGMOyqP5.js +2 -0
  557. package/dist/message-action-runner-ByMT3_eb.js +1922 -0
  558. package/dist/message-action-runner-VXmKO_W7.js +2 -0
  559. package/dist/message-handler-MZ0DMbCx.js +1806 -0
  560. package/dist/metadata-registry-loader-BH9D1UOx.js +2 -0
  561. package/dist/metadata-registry-loader-BK1cHCas.js +22 -0
  562. package/dist/migrate-BA6w0hd3.js +2 -0
  563. package/dist/migrate-BGuQC-1W.js +458 -0
  564. package/dist/migration-provider-runtime-BBdDegWG.js +2 -0
  565. package/dist/migration-provider-runtime-C5WUjrQz.js +68 -0
  566. package/dist/minimax-web-search-provider.runtime-suVFk3Zx.js +148 -0
  567. package/dist/minimax-web-search-provider.runtime.js +1 -1
  568. package/dist/model-BJZXR9dq.js +1302 -0
  569. package/dist/model-BL7xlN5h.js +2 -0
  570. package/dist/model-auth-C-6dYVob.js +6 -0
  571. package/dist/model-auth-DJz7R41W.js +705 -0
  572. package/dist/model-auth-label-DKNXktIu.js +67 -0
  573. package/dist/model-catalog-BjiK5rtT.js +3 -0
  574. package/dist/model-catalog-DM1CTjkW.js +434 -0
  575. package/dist/model-catalog-visibility-DEJZG0In.js +76 -0
  576. package/dist/model-config.helpers-BKcUeE_P.js +95 -0
  577. package/dist/model-context-tokens-5y_PQELY.js +572 -0
  578. package/dist/model-fallback-BDdBR053.js +1288 -0
  579. package/dist/model-fallback-auth.runtime-pcWfkIUF.js +5 -0
  580. package/dist/model-fallback-auth.runtime.js +1 -1
  581. package/dist/model-picker-Bpvp4_N4.js +1135 -0
  582. package/dist/model-picker-DWPPtq6d.js +3 -0
  583. package/dist/model-picker-visibility-BtdqVF80.js +22 -0
  584. package/dist/model-picker.runtime-CYlqts2z.js +48 -0
  585. package/dist/model-picker.runtime.js +1 -1
  586. package/dist/model-pricing-cache-BmmncDqL.js +856 -0
  587. package/dist/model-pricing-cache-CEwRyWw2.js +3 -0
  588. package/dist/model-pricing-cache-state-B8Aspp85.js +83 -0
  589. package/dist/model-provider-auth-B3KXoKkE.js +2 -0
  590. package/dist/model-provider-auth-Bo_8T7of.js +375 -0
  591. package/dist/model-runtime-aliases-Br-ZlhrL.js +133 -0
  592. package/dist/model-selection-D5-ERakL.js +254 -0
  593. package/dist/model-selection-DrzgktRu.js +7 -0
  594. package/dist/model-selection-ibwsPgIw.js +352 -0
  595. package/dist/model-selection.runtime-BRkOZejt.js +7 -0
  596. package/dist/model-selection.runtime.js +1 -1
  597. package/dist/models-RPAH3ZBn.js +57 -0
  598. package/dist/models-auth-status-Cwu9OXU8.js +280 -0
  599. package/dist/models-cli-CrYkSUoa.js +257 -0
  600. package/dist/models-config-Ayzj9gDz.js +1189 -0
  601. package/dist/models-config-BFcjB7nN.js +2 -0
  602. package/dist/models-config.providers.secrets-CCRUW7gL.js +2 -0
  603. package/dist/models-config.providers.secrets-DdX_XSRo.js +382 -0
  604. package/dist/models-http-jLFnelH7.js +88 -0
  605. package/dist/monitor-CqWICrjO.js +60 -0
  606. package/dist/monitor-DwccYPfp.js +1024 -0
  607. package/dist/monitor.account-e9EVttpP.js +5382 -0
  608. package/dist/music-generation-provider-Dfc--R-x.js +308 -0
  609. package/dist/native-hook-relay-Cioqiqv8.js +1378 -0
  610. package/dist/native-hook-relay-DRwJIspI.js +19 -0
  611. package/dist/node-cli-CrG3LH9J.js +2806 -0
  612. package/dist/node-command-policy-CkBTEmhl.js +295 -0
  613. package/dist/nodes-BxrWFA09.js +1483 -0
  614. package/dist/nodes-DFPTGZjc.js +3 -0
  615. package/dist/nodes-cli-Czwyt6r1.js +960 -0
  616. package/dist/nodes-pending-B_4QHyB2.js +211 -0
  617. package/dist/nodes-utils-c4k31OaG.js +85 -0
  618. package/dist/oauth-BXncC0JP.js +852 -0
  619. package/dist/oauth-Ba1O2vqP.js +207 -0
  620. package/dist/oauth-CGQkfxbJ.js +746 -0
  621. package/dist/onboard-I5tQlVm6.js +768 -0
  622. package/dist/onboard-channels-BleKfB1D.js +2 -0
  623. package/dist/onboard-channels-jVaUjGYX.js +1534 -0
  624. package/dist/onboard-custom-BR_5oqUr.js +3 -0
  625. package/dist/onboard-custom-Ss0DThuP.js +280 -0
  626. package/dist/onboard-custom-config-B-knjQm7.js +422 -0
  627. package/dist/onboard-search-BsIztGYF.js +412 -0
  628. package/dist/openai-compat-errors-UkLkk8Q9.js +136 -0
  629. package/dist/openai-http-mTQB44gu.js +836 -0
  630. package/dist/openai-transport-stream-CZSs3SIi.js +3427 -0
  631. package/dist/openresponses-http-BA1Shmj-.js +1175 -0
  632. package/dist/operations-DhgPih1F.js +805 -0
  633. package/dist/order-CaXafMPG.js +218 -0
  634. package/dist/outbound-attachment-BAp7DXDc.js +19 -0
  635. package/dist/param-readers-De-m2SoB.js +2 -0
  636. package/dist/payloads-Dg9aAEOC.js +256 -0
  637. package/dist/persistent-bindings.lifecycle-BkLOz501.js +2 -0
  638. package/dist/persistent-bindings.lifecycle-e2MLbBCo.js +85 -0
  639. package/dist/plugin-enabled-CGSENjXc.js +232 -0
  640. package/dist/plugin-install-BI9_bsVT.js +118 -0
  641. package/dist/plugin-install-an4V2iXO.js +2 -0
  642. package/dist/plugin-install-config-policy-C66Nss3D.js +169 -0
  643. package/dist/plugin-registration-DMerQktl.js +97 -0
  644. package/dist/plugin-registry-BZfdCw65.js +3 -0
  645. package/dist/plugin-registry-I1fegSdK.js +2 -0
  646. package/dist/plugin-runtime-B3XMLJka.js +102 -0
  647. package/dist/plugin-sdk/.boundary-entry-shims.stamp +1 -1
  648. package/dist/plugin-sdk/acp-binding-runtime.js +1 -1
  649. package/dist/plugin-sdk/acp-runtime-backend.js +1 -1
  650. package/dist/plugin-sdk/acp-runtime.js +2 -2
  651. package/dist/plugin-sdk/agent-config-primitives.d.ts +1 -1
  652. package/dist/plugin-sdk/agent-harness-runtime.js +16 -16
  653. package/dist/plugin-sdk/agent-harness-task-runtime.js +4 -4
  654. package/dist/plugin-sdk/agent-harness.js +17 -17
  655. package/dist/plugin-sdk/agent-runtime.js +17 -17
  656. package/dist/plugin-sdk/agent-sessions.js +1 -1
  657. package/dist/plugin-sdk/approval-native-runtime.js +2 -2
  658. package/dist/plugin-sdk/approval-reaction-runtime.js +1 -1
  659. package/dist/plugin-sdk/approval-runtime.js +2 -2
  660. package/dist/plugin-sdk/bundled-channel-config-schema-BsOWCrJT.d.ts +3169 -0
  661. package/dist/plugin-sdk/bundled-channel-config-schema.d.ts +3 -3
  662. package/dist/plugin-sdk/channel-actions.js +2 -2
  663. package/dist/plugin-sdk/channel-config-primitives.d.ts +2 -2
  664. package/dist/plugin-sdk/channel-config-schema-legacy.d.ts +3 -3
  665. package/dist/plugin-sdk/channel-config-schema.d.ts +2 -2
  666. package/dist/plugin-sdk/channel-core.d.ts +1 -1
  667. package/dist/plugin-sdk/channel-core.js +2 -2
  668. package/dist/plugin-sdk/channel-envelope.js +1 -1
  669. package/dist/plugin-sdk/channel-inbound-roots.js +1 -1
  670. package/dist/plugin-sdk/channel-inbound.js +4 -4
  671. package/dist/plugin-sdk/channel-location.js +1 -1
  672. package/dist/plugin-sdk/channel-message-runtime.js +5 -5
  673. package/dist/plugin-sdk/channel-message.js +5 -5
  674. package/dist/plugin-sdk/channel-outbound.js +2 -2
  675. package/dist/plugin-sdk/channel-plugin-common.d.ts +1 -1
  676. package/dist/plugin-sdk/channel-reply-options-runtime.js +1 -1
  677. package/dist/plugin-sdk/command-auth-native.js +2 -2
  678. package/dist/plugin-sdk/command-auth.js +4 -4
  679. package/dist/plugin-sdk/command-primitives-runtime.js +2 -2
  680. package/dist/plugin-sdk/command-status-runtime.js +1 -1
  681. package/dist/plugin-sdk/command-status.js +1 -1
  682. package/dist/plugin-sdk/compat.d.ts +2 -2
  683. package/dist/plugin-sdk/compat.js +2 -2
  684. package/dist/plugin-sdk/config-mutation.js +2 -2
  685. package/dist/plugin-sdk/config-runtime.js +1 -1
  686. package/dist/plugin-sdk/config-schema-DUddICQM.d.ts +33 -0
  687. package/dist/plugin-sdk/conversation-binding-runtime.js +1 -1
  688. package/dist/plugin-sdk/conversation-runtime.js +3 -3
  689. package/dist/plugin-sdk/core.d.ts +1 -1
  690. package/dist/plugin-sdk/core.js +3 -3
  691. package/dist/plugin-sdk/delivery-queue-runtime.js +1 -1
  692. package/dist/plugin-sdk/direct-dm.js +1 -1
  693. package/dist/plugin-sdk/discord.d.ts +2 -2
  694. package/dist/plugin-sdk/embedding-providers.js +2 -2
  695. package/dist/plugin-sdk/gateway-method-runtime.js +1 -1
  696. package/dist/plugin-sdk/gateway-runtime.js +2 -2
  697. package/dist/plugin-sdk/health.js +1 -1
  698. package/dist/plugin-sdk/image-generation-core.js +3 -3
  699. package/dist/plugin-sdk/image-generation-runtime.js +1 -1
  700. package/dist/plugin-sdk/image-generation.js +2 -2
  701. package/dist/plugin-sdk/inbound-reply-dispatch.js +3 -3
  702. package/dist/plugin-sdk/index.js +1 -1
  703. package/dist/plugin-sdk/infra-runtime.js +3 -3
  704. package/dist/plugin-sdk/mattermost.js +1 -1
  705. package/dist/plugin-sdk/media-generation-runtime-shared.js +1 -1
  706. package/dist/plugin-sdk/media-generation-runtime.js +1 -1
  707. package/dist/plugin-sdk/media-runtime.js +7 -7
  708. package/dist/plugin-sdk/media-understanding-runtime.js +1 -1
  709. package/dist/plugin-sdk/media-understanding.js +2 -2
  710. package/dist/plugin-sdk/memory-core-host-engine-embeddings.js +4 -4
  711. package/dist/plugin-sdk/memory-core-host-engine-foundation.js +2 -2
  712. package/dist/plugin-sdk/memory-core-host-engine-qmd.js +2 -2
  713. package/dist/plugin-sdk/memory-core-host-engine-storage.js +6 -6
  714. package/dist/plugin-sdk/memory-core-host-runtime-cli.js +2 -2
  715. package/dist/plugin-sdk/memory-core-host-runtime-core.js +3 -3
  716. package/dist/plugin-sdk/memory-core-host-runtime-files.js +4 -4
  717. package/dist/plugin-sdk/memory-core.js +3 -3
  718. package/dist/plugin-sdk/memory-host-core.js +3 -3
  719. package/dist/plugin-sdk/memory-host-files.js +4 -4
  720. package/dist/plugin-sdk/memory-host-search.js +1 -1
  721. package/dist/plugin-sdk/models-provider-runtime.js +1 -1
  722. package/dist/plugin-sdk/music-generation-core.js +1 -1
  723. package/dist/plugin-sdk/native-command-registry.js +1 -1
  724. package/dist/plugin-sdk/outbound-media.js +2 -2
  725. package/dist/plugin-sdk/outbound-runtime.js +3 -3
  726. package/dist/plugin-sdk/param-readers.js +2 -2
  727. package/dist/plugin-sdk/plugin-runtime.js +2 -2
  728. package/dist/plugin-sdk/provider-auth-api-key.js +4 -4
  729. package/dist/plugin-sdk/provider-auth-login.js +1 -1
  730. package/dist/plugin-sdk/provider-auth-runtime.js +2 -2
  731. package/dist/plugin-sdk/provider-auth.js +6 -6
  732. package/dist/plugin-sdk/provider-catalog-runtime.js +2 -2
  733. package/dist/plugin-sdk/provider-entry.js +1 -1
  734. package/dist/plugin-sdk/provider-setup.js +1 -1
  735. package/dist/plugin-sdk/provider-stream-family.js +3 -3
  736. package/dist/plugin-sdk/provider-stream.js +2 -2
  737. package/dist/plugin-sdk/provider-transport-runtime.js +1 -1
  738. package/dist/plugin-sdk/provider-web-fetch.js +2 -2
  739. package/dist/plugin-sdk/provider-web-search.js +4 -4
  740. package/dist/plugin-sdk/realtime-bootstrap-context.js +2 -2
  741. package/dist/plugin-sdk/realtime-transcription.js +1 -1
  742. package/dist/plugin-sdk/realtime-voice.js +2 -2
  743. package/dist/plugin-sdk/reply-dispatch-runtime.js +1 -1
  744. package/dist/plugin-sdk/reply-runtime.js +6 -6
  745. package/dist/plugin-sdk/runtime-secret-resolution.js +2 -2
  746. package/dist/plugin-sdk/runtime.js +3 -3
  747. package/dist/plugin-sdk/self-hosted-provider-setup.js +1 -1
  748. package/dist/plugin-sdk/simple-completion-runtime.js +1 -1
  749. package/dist/plugin-sdk/speech-core.js +2 -2
  750. package/dist/plugin-sdk/speech.js +1 -1
  751. package/dist/plugin-sdk/tool-plugin.js +1 -1
  752. package/dist/plugin-sdk/transcripts.js +1 -1
  753. package/dist/plugin-sdk/tts-runtime.d.ts +1 -1
  754. package/dist/plugin-sdk/tts-runtime.js +1 -1
  755. package/dist/plugin-sdk/video-generation-core.js +2 -2
  756. package/dist/plugin-sdk/video-generation-runtime.js +1 -1
  757. package/dist/plugin-sdk/web-media.js +3 -3
  758. package/dist/plugin-sdk/zalouser.js +1 -1
  759. package/dist/plugin-sdk/zod-schema.core-B4_b2R5K.d.ts +166 -0
  760. package/dist/plugin-service-2XF6Lu_a.js +1249 -0
  761. package/dist/plugins/build-smoke-entry.js +2 -2
  762. package/dist/plugins/loader.js +1 -1
  763. package/dist/plugins/provider-discovery.runtime.js +1 -1
  764. package/dist/plugins/provider-runtime.runtime.js +1 -1
  765. package/dist/plugins/runtime/index.js +21 -21
  766. package/dist/plugins/tools.js +1 -1
  767. package/dist/plugins-authoring-command-CCX6tJwd.js +304 -0
  768. package/dist/plugins-cli-HX8nTV2h.js +63 -0
  769. package/dist/plugins-cli.runtime-BYn4VsLP.js +339 -0
  770. package/dist/plugins-cli.runtime.js +1 -1
  771. package/dist/plugins-command-helpers-ByuW-yNj.js +2 -0
  772. package/dist/plugins-command-helpers-DaaxGnCD.js +164 -0
  773. package/dist/plugins-inspect-command-C9NDk23X.js +248 -0
  774. package/dist/plugins-install-command-B0NfUxeA.js +993 -0
  775. package/dist/plugins-install-command-BmuScfLI.js +2 -0
  776. package/dist/plugins-install-persist-CfwO876P.js +252 -0
  777. package/dist/plugins-list-command-Bx8X908n.js +184 -0
  778. package/dist/plugins-uninstall-command-p6h44-Ft.js +118 -0
  779. package/dist/postinstall-inventory.json +862 -862
  780. package/dist/prepare.runtime-8DdQ4k9k.js +798 -0
  781. package/dist/prepare.runtime.js +1 -1
  782. package/dist/presentation-card-DeAf3jYW.js +164 -0
  783. package/dist/preview-warnings-BF7nlTo8.js +618 -0
  784. package/dist/profiles-DUhMLnqX.js +194 -0
  785. package/dist/program-C7f_U7fr.js +131 -0
  786. package/dist/provider-adapters-CWLwE9KS.js +104 -0
  787. package/dist/provider-api-key-auth-CshQbUPZ.js +117 -0
  788. package/dist/provider-api-key-auth.runtime-B64jPCKn.js +14 -0
  789. package/dist/provider-api-key-auth.runtime.js +1 -1
  790. package/dist/provider-auth-D-I3YLSn.js +281 -0
  791. package/dist/provider-auth-api-key-Bub0Rjak.js +5 -0
  792. package/dist/provider-auth-choice-DpNAEScm.js +311 -0
  793. package/dist/provider-auth-choice-helpers-Bof937LW.js +210 -0
  794. package/dist/provider-auth-choice.runtime-B3spikLY.js +18 -0
  795. package/dist/provider-auth-choice.runtime-vVgz7FKq.js +2 -0
  796. package/dist/provider-auth-choice.runtime.js +1 -1
  797. package/dist/provider-auth-guidance-DcCL0Q2U.js +2 -0
  798. package/dist/provider-auth-guidance-rWRMN4Jn.js +34 -0
  799. package/dist/provider-auth-helpers-Cp8L-Xha.js +177 -0
  800. package/dist/provider-auth-login.runtime-BJUzc4iH.js +156 -0
  801. package/dist/provider-auth-login.runtime.js +1 -1
  802. package/dist/provider-auth-runtime-DmcWtzbb.js +186 -0
  803. package/dist/provider-discovery-JyAJi97k.js +95 -0
  804. package/dist/provider-discovery.runtime-D_0WTYr8.js +290 -0
  805. package/dist/provider-discovery.runtime.js +1 -1
  806. package/dist/provider-dispatcher-C8Jt94Xl.js +22 -0
  807. package/dist/provider-dispatcher.runtime.js +1 -1
  808. package/dist/provider-entry-By0ggZuI.js +134 -0
  809. package/dist/provider-hook-runtime-B8AUbQxf.js +255 -0
  810. package/dist/provider-openai-codex-oauth-C9Mmnt7d.js +2 -0
  811. package/dist/provider-openai-codex-oauth-CH5Jg1vk.js +44 -0
  812. package/dist/provider-registration-C1zvaHQP.js +235 -0
  813. package/dist/provider-registry-B9diJyLv.js +31 -0
  814. package/dist/provider-registry-BXSxmPGA.js +61 -0
  815. package/dist/provider-registry-CoE-sxbq.js +61 -0
  816. package/dist/provider-registry-DLth_GdI.js +61 -0
  817. package/dist/provider-registry-J4LRd5Rg.js +36 -0
  818. package/dist/provider-runtime-B4cw16pt.js +3 -0
  819. package/dist/provider-runtime-DNNbfwOK.js +386 -0
  820. package/dist/provider-runtime.runtime-98mAe_ni.js +26 -0
  821. package/dist/provider-runtime.runtime.js +1 -1
  822. package/dist/provider-self-hosted-setup-Dysv2Kwt.js +373 -0
  823. package/dist/provider-stream-BLaC8bqO.js +1084 -0
  824. package/dist/provider-stream-Caa5YOx2.js +313 -0
  825. package/dist/provider-stream-family-CvvfxLyP.js +2 -0
  826. package/dist/provider-usage-CVNosTP3.js +71 -0
  827. package/dist/provider-usage-D2NudXbO.js +4 -0
  828. package/dist/provider-usage.load-DG6R3lkG.js +357 -0
  829. package/dist/provider-web-search-DmgTaxRU.js +58 -0
  830. package/dist/provider-wizard-Cw-5H3tX.js +125 -0
  831. package/dist/providers.runtime-DF0T9lFz.js +240 -0
  832. package/dist/providers.runtime-oM9Vn1wr.js +2 -0
  833. package/dist/providers.runtime.js +1 -1
  834. package/dist/proxy-BxGnVyJu.js +662 -0
  835. package/dist/public-artifacts-BMP9hZfh.js +7 -0
  836. package/dist/pw-ai-CD52qfYo.js +3064 -0
  837. package/dist/qmd-manager-BYbvU4YC.js +2040 -0
  838. package/dist/qr-cli-Btz2ZdO3.js +2 -0
  839. package/dist/qr-cli-eyTRwMm2.js +371 -0
  840. package/dist/qr-image-BCwiO6tL.js +2 -0
  841. package/dist/queue-CJRoTOBi.js +923 -0
  842. package/dist/read-file-ogB-HjbK.js +183 -0
  843. package/dist/register-service-commands-D_gQ3b6_.js +77 -0
  844. package/dist/register.agent-DXQLn-r0.js +152 -0
  845. package/dist/register.configure-FavQPGce.js +16 -0
  846. package/dist/register.crestodian-Cbfmnl6h.js +24 -0
  847. package/dist/register.maintenance-B8xODEMU.js +85 -0
  848. package/dist/register.message-B8PYgZ-j.js +404 -0
  849. package/dist/register.migrate-CieoN8zZ.js +106 -0
  850. package/dist/register.onboard-BqWDIDKH.js +115 -0
  851. package/dist/register.setup-CgeTBW4T.js +40 -0
  852. package/dist/register.status-health-sessions-C99aHa5h.js +293 -0
  853. package/dist/register.subclis-79SvyMFt.js +31 -0
  854. package/dist/register.subclis-CXrO8_TO.js +3 -0
  855. package/dist/register.subclis-core-GoXV1yMG.js +273 -0
  856. package/dist/rem-harness-laL5luQa.js +649 -0
  857. package/dist/repair-sequencing-DGY2mBg6.js +652 -0
  858. package/dist/reply-media-paths.runtime-BeWVPkgy.js +2 -0
  859. package/dist/reply-media-paths.runtime-rzAV_Kee.js +154 -0
  860. package/dist/reply-media-paths.runtime.js +1 -1
  861. package/dist/reply-payloads-D_JHMviC.js +79 -0
  862. package/dist/reply-payloads-dedupe-B9GGGaL-.js +176 -0
  863. package/dist/reply-payloads-dedupe.runtime--C3jHs9y.js +2 -0
  864. package/dist/reply-payloads-dedupe.runtime.js +1 -1
  865. package/dist/reply-timing-tracker-DPjlETUb.js +205 -0
  866. package/dist/reply-turn-admission-DdfIwcMK.js +2056 -0
  867. package/dist/reply.runtime-BC1HT67i.js +2 -0
  868. package/dist/reply.runtime.js +1 -1
  869. package/dist/reset-preserved-selection-Czd80hug.js +45 -0
  870. package/dist/resolve-COJFlAZT.js +106 -0
  871. package/dist/restart-B9GMMIZt.js +121 -0
  872. package/dist/result-fallback-classifier-By0Z6b8r.js +98 -0
  873. package/dist/root-help-Bp0kGaUZ.js +43 -0
  874. package/dist/route-CgG9Z7OI.js +475 -0
  875. package/dist/route-reply-D9_9oRg1.js +174 -0
  876. package/dist/route-reply.runtime-BwNl3h2m.js +2 -0
  877. package/dist/route-reply.runtime.js +1 -1
  878. package/dist/routes-Cz2NHUV4.js +2 -0
  879. package/dist/routes-DMo6Eacc.js +3701 -0
  880. package/dist/run-SFRSThMI.js +1162 -0
  881. package/dist/run-auth-profile.runtime-BxLM8m_2.js +2 -0
  882. package/dist/run-auth-profile.runtime.js +1 -1
  883. package/dist/run-command-Cd5iN7eN.js +2 -0
  884. package/dist/run-command-ah46O06U.js +23 -0
  885. package/dist/run-context-DGCQJldA.js +66 -0
  886. package/dist/run-context.runtime-CSBHDAd5.js +2 -0
  887. package/dist/run-context.runtime.js +1 -1
  888. package/dist/run-delivery.runtime-C9xoiZ3h.js +762 -0
  889. package/dist/run-delivery.runtime.js +1 -1
  890. package/dist/run-embedded.runtime-D8bz5vfV.js +4 -0
  891. package/dist/run-embedded.runtime.js +1 -1
  892. package/dist/run-execution-cli.runtime-BAa8KPn7.js +4 -0
  893. package/dist/run-execution-cli.runtime.js +1 -1
  894. package/dist/run-executor.runtime-CNnemqSa.js +330 -0
  895. package/dist/run-executor.runtime.js +1 -1
  896. package/dist/run-model-catalog.runtime-Dh7EghXr.js +2 -0
  897. package/dist/run-model-catalog.runtime.js +1 -1
  898. package/dist/run-session-state-cMlTFwT_.js +159 -0
  899. package/dist/run-subagent-registry.runtime-BgQU86-E.js +2 -0
  900. package/dist/run-subagent-registry.runtime.js +1 -1
  901. package/dist/runner-B3YXRJOB.js +704 -0
  902. package/dist/runner.entries-DMTKpRDP.js +1485 -0
  903. package/dist/runtime-BHReFHE2.js +2 -0
  904. package/dist/runtime-BiQZ6Usw.js +615 -0
  905. package/dist/runtime-CAeriu2O.js +10 -0
  906. package/dist/runtime-CAnCRCX3.js +224 -0
  907. package/dist/runtime-CV_2NqSY.js +300 -0
  908. package/dist/runtime-CmpnvXo3.js +245 -0
  909. package/dist/runtime-D2fci1Ey.js +2 -0
  910. package/dist/runtime-DAsYmYeA.js +3 -0
  911. package/dist/runtime-DeA45VKG.js +210 -0
  912. package/dist/runtime-DvkZ8tHI.js +436 -0
  913. package/dist/runtime-DxVUR2Xg.js +2 -0
  914. package/dist/runtime-api-B88le0UE.js +12 -0
  915. package/dist/runtime-channel-AubRWvnH.js +2 -0
  916. package/dist/runtime-channel-DdclSuEu.js +148 -0
  917. package/dist/runtime-config-collectors-DukTj2va.js +525 -0
  918. package/dist/runtime-embedded-agent.runtime-BpLweeFv.js +2 -0
  919. package/dist/runtime-embedded-agent.runtime.js +1 -1
  920. package/dist/runtime-internal-CaoUylZw.js +2 -0
  921. package/dist/runtime-llm.runtime-DlpqGc7S.js +307 -0
  922. package/dist/runtime-llm.runtime.js +1 -1
  923. package/dist/runtime-model-auth.runtime-CLAaWzxY.js +46 -0
  924. package/dist/runtime-model-auth.runtime-DxVvqRTd.js +2 -0
  925. package/dist/runtime-model-auth.runtime.js +1 -1
  926. package/dist/runtime-options-TTtN01-I.js +275 -0
  927. package/dist/runtime-plugin-ClqxJSbp.js +92 -0
  928. package/dist/runtime-plugins-Bq01wLXP.js +32 -0
  929. package/dist/runtime-plugins.runtime-cwCvl1TR.js +2 -0
  930. package/dist/runtime-plugins.runtime.js +1 -1
  931. package/dist/runtime-prepare.runtime-Cz_hV_k5.js +81 -0
  932. package/dist/runtime-prepare.runtime.js +1 -1
  933. package/dist/runtime-provider-QCJq90av.js +24 -0
  934. package/dist/runtime-provider-Wllc3jC6.js +2 -0
  935. package/dist/runtime-registry-loader-BM1mQBJr.js +2 -0
  936. package/dist/runtime-registry-loader-DzhYCt4s.js +117 -0
  937. package/dist/runtime-shared-BfqOW-Vb.js +365 -0
  938. package/dist/runtime-web-channel-plugin-BcVPgD14.js +204 -0
  939. package/dist/runtime-web-tools-fallback.runtime.js +1 -1
  940. package/dist/scan-ldbaD8jq.js +573 -0
  941. package/dist/sdk-security-runtime-Bxhq2O1G.js +86 -0
  942. package/dist/sdk-setup-tools-CsQM9pF0.js +8 -0
  943. package/dist/secrets-cli-DbpIf4-z.js +150 -0
  944. package/dist/security-cli-BK4Xpa6h.js +520 -0
  945. package/dist/selection-BXKik6Ps.js +3 -0
  946. package/dist/selection-D4O3gK3Q.js +18365 -0
  947. package/dist/send-DaoGIay5.js +1222 -0
  948. package/dist/send-DzNjJGJX.js +178 -0
  949. package/dist/send-f5w9krNS.js +711 -0
  950. package/dist/send-media-cOciBxcg.js +2072 -0
  951. package/dist/send-result-DMFwBuOl.js +141 -0
  952. package/dist/server-BoC1mxZ-.js +24 -0
  953. package/dist/server-DZnI6w5k.js +72 -0
  954. package/dist/server-aux-handlers-BwRdYdub.js +1347 -0
  955. package/dist/server-chat-Q95f4ywD.js +827 -0
  956. package/dist/server-close.runtime.js +3 -3
  957. package/dist/server-context-CnXNaarB.js +2 -0
  958. package/dist/server-context-DRBebo7Y.js +955 -0
  959. package/dist/server-cron-C0o0ZvqF.js +3173 -0
  960. package/dist/server-cron-CLeBvurR.js +2 -0
  961. package/dist/server-maintenance-CqHfTnFD.js +152 -0
  962. package/dist/server-methods-BmlBQJMD.js +497 -0
  963. package/dist/server-middleware-DJhnR6jl.js +122 -0
  964. package/dist/server-model-catalog-CoSSk_Gy.js +2 -0
  965. package/dist/server-model-catalog-D32oDTQp.js +73 -0
  966. package/dist/server-node-events-DX9a4etQ.js +597 -0
  967. package/dist/server-plugin-bootstrap-Vco-EpxY.js +71 -0
  968. package/dist/server-plugins-WBX2fZRp.js +435 -0
  969. package/dist/server-reload-handlers-DGJLH8bg.js +719 -0
  970. package/dist/server-restart-sentinel-Bvon7f8K.js +700 -0
  971. package/dist/server-runtime-services-BNcH4vhR.js +3 -0
  972. package/dist/server-runtime-services-BjcQG5y7.js +147 -0
  973. package/dist/server-runtime-subscriptions-W39HeyoT.js +67 -0
  974. package/dist/server-session-events-CO73dMU-.js +244 -0
  975. package/dist/server-session-key-D8V67lDk.js +2 -0
  976. package/dist/server-session-key-v-KYSmRS.js +75 -0
  977. package/dist/server-startup-config-u54lUdWN.js +305 -0
  978. package/dist/server-startup-early-Cy5kArJG.js +87 -0
  979. package/dist/server-startup-memory-DvINFAYn.js +72 -0
  980. package/dist/server-startup-plugins-CerpbOSQ.js +127 -0
  981. package/dist/server-startup-post-attach-COUCwhNa.js +793 -0
  982. package/dist/server-ws-runtime-BfznAnbI.js +374 -0
  983. package/dist/server.impl-dQXccj0z.js +2622 -0
  984. package/dist/session-cost-usage-Bs5yIOBH.js +1600 -0
  985. package/dist/session-kill-http-DVleb3RW.js +121 -0
  986. package/dist/session-log-runtime-OG7J4j9m.js +1258 -0
  987. package/dist/session-override-LIWl5a9T.js +134 -0
  988. package/dist/session-reset-model.runtime-BpnTi4sa.js +144 -0
  989. package/dist/session-reset-model.runtime.js +1 -1
  990. package/dist/session-reset-service-HA07zS8L.js +651 -0
  991. package/dist/session-status.runtime-D6_clH8l.js +2 -0
  992. package/dist/session-status.runtime.js +1 -1
  993. package/dist/session-store-Cj4Rh6qc.js +273 -0
  994. package/dist/session-store.runtime-DSCxACdZ.js +4 -0
  995. package/dist/session-store.runtime.js +1 -1
  996. package/dist/session-subagent-reactivation.runtime-CcwaHAxg.js +2 -0
  997. package/dist/session-subagent-reactivation.runtime.js +1 -1
  998. package/dist/session-tab-registry-C-9uI2Wi.js +551 -0
  999. package/dist/session-utils-BRtPESA4.js +1508 -0
  1000. package/dist/sessions-Beltl3Ra.js +1917 -0
  1001. package/dist/sessions-DR-X-j8D.js +316 -0
  1002. package/dist/sessions-cleanup-CR1CFcJb.js +165 -0
  1003. package/dist/sessions-history-http-CjyHWYEv.js +432 -0
  1004. package/dist/sessions-patch-peSeltuF.js +401 -0
  1005. package/dist/sessions-resolve-D9ULr95s.js +180 -0
  1006. package/dist/sessions-table-Da6bua9d.js +161 -0
  1007. package/dist/sessions-uKpnhod0.js +12736 -0
  1008. package/dist/sessions.runtime-C1mVNaU3.js +2 -0
  1009. package/dist/sessions.runtime.js +1 -1
  1010. package/dist/set-DVj21EuB.js +31 -0
  1011. package/dist/set-image-JChDCaAP.js +17 -0
  1012. package/dist/setup-5I-zpID3.js +614 -0
  1013. package/dist/setup-CjtY6cli.js +2 -0
  1014. package/dist/setup-onboard-configure-help-fast-path-C5GcSuXb.js +64 -0
  1015. package/dist/setup.finalize-Bf10PNbl.js +586 -0
  1016. package/dist/setup.gateway-config-EH5Rvwzy.js +281 -0
  1017. package/dist/setup.migration-import-CoeV4Kc1.js +200 -0
  1018. package/dist/setup.migration-import-DFFGw4DI.js +2 -0
  1019. package/dist/setup.post-install-migration-DcQmWTE7.js +128 -0
  1020. package/dist/shared-BFSJZ6B3.js +212 -0
  1021. package/dist/shared-CVM-dYkO.js +5 -0
  1022. package/dist/shared-fvgcmCsj.js +71 -0
  1023. package/dist/simple-completion-runtime-C_TXe4M1.js +2 -0
  1024. package/dist/simple-completion-runtime-DREq-fcF.js +206 -0
  1025. package/dist/simple-completion-transport-DtD1fEvJ.js +83 -0
  1026. package/dist/snapshot-urls-B-wkwDI9.js +317 -0
  1027. package/dist/speech-core-KQg6oKcR.js +119 -0
  1028. package/dist/speech-provider-DfyLYitQ.js +171 -0
  1029. package/dist/speech-provider-oDvTumNW.js +227 -0
  1030. package/dist/speech-provider-yL-TQ3Em.js +233 -0
  1031. package/dist/stale-oauth-profile-shadows-CW11VYMM.js +2 -0
  1032. package/dist/stale-oauth-profile-shadows-DFl6Lyf1.js +186 -0
  1033. package/dist/standalone-runtime-registry-loader-BiponY-y.js +59 -0
  1034. package/dist/startup-context-PVXYM-X3.js +314 -0
  1035. package/dist/status-BA_0z83w.js +249 -0
  1036. package/dist/status-Bc7BGlRt.js +2 -0
  1037. package/dist/status-BwPWg9eQ.js +3 -0
  1038. package/dist/status-CLQ66eml.js +4 -0
  1039. package/dist/status-Ci2gChtY.js +466 -0
  1040. package/dist/status-CmtBWJEE.js +2 -0
  1041. package/dist/status-DdnMnPNs.js +73 -0
  1042. package/dist/status-all-BpTvkYrt.js +573 -0
  1043. package/dist/status-json-CizozZCr.js +15 -0
  1044. package/dist/status-json-command-FzKa2t6O.js +84 -0
  1045. package/dist/status-message-BHbnxwmt.js +495 -0
  1046. package/dist/status-message.runtime-Df5WBBAk.js +6 -0
  1047. package/dist/status-message.runtime.js +1 -1
  1048. package/dist/status-queue.runtime-CXnZV4Bj.js +2 -0
  1049. package/dist/status-queue.runtime.js +1 -1
  1050. package/dist/status-runtime-shared-D3Hz8WZ_.js +289 -0
  1051. package/dist/status-subagents.runtime-PoDdwwaw.js +32 -0
  1052. package/dist/status-subagents.runtime.js +1 -1
  1053. package/dist/status-text-DNxXSCuI.js +301 -0
  1054. package/dist/status.command-C_e9GcMg.js +2 -0
  1055. package/dist/status.command-DjVKDmt_.js +425 -0
  1056. package/dist/status.command.text-runtime-BeHlqL8b.js +15 -0
  1057. package/dist/status.runtime-h--fx9HY.js +2 -0
  1058. package/dist/status.scan-WyR8TeJz.js +72 -0
  1059. package/dist/status.scan-overview-CMzUAQMQ.js +460 -0
  1060. package/dist/status.scan.deps.runtime-1JTrdyHk.js +19 -0
  1061. package/dist/status.scan.deps.runtime.js +1 -1
  1062. package/dist/status.scan.fast-json-D2jw1wKO.js +163 -0
  1063. package/dist/status.scan.fast-json-DbN1KxJT.js +2 -0
  1064. package/dist/status.summary-6ZijZM1g.js +2 -0
  1065. package/dist/status.summary-CiCsChO-.js +276 -0
  1066. package/dist/store-CdBPITcg.js +2302 -0
  1067. package/dist/store-D0l2NCdn.js +3 -0
  1068. package/dist/stored-model-override-HEgnFh6b.js +79 -0
  1069. package/dist/subagent-announce-BUv_kA1W.js +353 -0
  1070. package/dist/subagent-announce-delivery-Ci2Y_p--.js +1369 -0
  1071. package/dist/subagent-control-BM3vNgsQ.js +492 -0
  1072. package/dist/subagent-control.runtime-Df3pVQL9.js +3 -0
  1073. package/dist/subagent-control.runtime.js +1 -1
  1074. package/dist/subagent-hooks-CN2fLez2.js +2 -0
  1075. package/dist/subagent-hooks-CeOmTJBf.js +230 -0
  1076. package/dist/subagent-hooks-api-Cfe4DAT9.js +23 -0
  1077. package/dist/subagent-registry-B9RPAXUs.js +2627 -0
  1078. package/dist/subagent-registry-C7tedtVB.js +3 -0
  1079. package/dist/subagent-registry.runtime.js +2 -2
  1080. package/dist/subagent-session-cleanup-y0ijZ-LQ.js +390 -0
  1081. package/dist/system-DVtrOGbV.js +111 -0
  1082. package/dist/system-prompt-config-BVmrcmmr.js +918 -0
  1083. package/dist/talk-CrdgqTCl.js +2454 -0
  1084. package/dist/target-id-CrUyi-Uq.js +107 -0
  1085. package/dist/targets-KZ2ezPwx.js +267 -0
  1086. package/dist/targets.runtime-iZ8KdQ1C.js +2 -0
  1087. package/dist/targets.runtime.js +1 -1
  1088. package/dist/task-executor-893pMqzn.js +349 -0
  1089. package/dist/task-owner-access-DC7MKz3n.js +74 -0
  1090. package/dist/task-registry-control.runtime.js +2 -2
  1091. package/dist/task-registry-delivery-runtime-YGMOyqP5.js +2 -0
  1092. package/dist/task-registry-uaYJfgXF.js +2362 -0
  1093. package/dist/task-registry.maintenance-Dx0m2NYh.js +2 -0
  1094. package/dist/task-registry.maintenance-gApg-XOt.js +764 -0
  1095. package/dist/task-status-access-CFhD_ieY.js +18 -0
  1096. package/dist/tasks-B_Qoz38D.js +153 -0
  1097. package/dist/tasks-DtV85zJT.js +548 -0
  1098. package/dist/tasks-audit-system-Con3yYnm.js +210 -0
  1099. package/dist/tasks-json-BM3pauZl.js +73 -0
  1100. package/dist/tavily-web-search-provider.runtime-Cmyyc5kX.js +112 -0
  1101. package/dist/tavily-web-search-provider.runtime.js +1 -1
  1102. package/dist/text-report-CKxmVmt5.js +695 -0
  1103. package/dist/text-transforms.runtime-DVwVsBRS.js +113 -0
  1104. package/dist/text-transforms.runtime.js +1 -1
  1105. package/dist/thread-bindings-B6UEVp9q.js +228 -0
  1106. package/dist/tool-KOZc7TIF.js +143 -0
  1107. package/dist/tool-dispatch-Ca4z2GEr.js +155 -0
  1108. package/dist/tool-images-CzDwHeDR.js +247 -0
  1109. package/dist/tool-plugin-BvQBJ2gU.js +93 -0
  1110. package/dist/tool-resolution-Ddxl6tjh.js +153 -0
  1111. package/dist/tool-result-truncation-BSKuIhd5.js +498 -0
  1112. package/dist/tool-schema-nB27q-vb.js +40 -0
  1113. package/dist/tool-schema-projection-COrMarLR.js +215 -0
  1114. package/dist/tool-split-BjPHBFrv.js +323 -0
  1115. package/dist/tools-CV40BWkc.js +901 -0
  1116. package/dist/tools-catalog-5stC7W2V.js +156 -0
  1117. package/dist/tools-effective-BVjqz2FV.js +442 -0
  1118. package/dist/tools-effective-inventory-esPY5jRB.js +379 -0
  1119. package/dist/tools-invoke-Czk_NM9G.js +51 -0
  1120. package/dist/tools-invoke-http-D7PbsODz.js +68 -0
  1121. package/dist/tools-invoke-shared-CzrEn0Dm.js +200 -0
  1122. package/dist/tools-rSjgf61B.js +579 -0
  1123. package/dist/tools.runtime-DiChCSGI.js +5 -0
  1124. package/dist/tools.runtime.js +1 -1
  1125. package/dist/transcript-rewrite-4IQefjvK.js +688 -0
  1126. package/dist/transcripts-tool-BXTS8tE5.js +2 -0
  1127. package/dist/transcripts-tool-CeWGgz5k.js +656 -0
  1128. package/dist/tts-BS8EeM8p.js +2 -0
  1129. package/dist/tts-BlTZjsaE.js +194 -0
  1130. package/dist/tts-runtime-BfRdJDyY.js +1337 -0
  1131. package/dist/tts-vRSvSw-t.js +3 -0
  1132. package/dist/tts.runtime-ChBnVkNt.js +3 -0
  1133. package/dist/tts.runtime-CmVCUbzq.js +2 -0
  1134. package/dist/tts.runtime.js +1 -1
  1135. package/dist/tui-BoQVBgWB.js +4860 -0
  1136. package/dist/tui-DBYK9BeQ.js +2 -0
  1137. package/dist/tui-backend-X0NI7rAv.js +256 -0
  1138. package/dist/tui-cli-BpUtjV38.js +40 -0
  1139. package/dist/typing-policy-CBwyAQh4.js +199 -0
  1140. package/dist/usage-Bl-tgGx-.js +623 -0
  1141. package/dist/usage-Cj_ektBl.js +1113 -0
  1142. package/dist/usage-format-DWO9ckX3.js +394 -0
  1143. package/dist/usage-format-DnCIXsqG.js +2 -0
  1144. package/dist/video-generation-provider-B7ib4AeI.js +297 -0
  1145. package/dist/video-generation-provider-CXQ6fqJx.js +64 -0
  1146. package/dist/video-generation-provider-DXjl05T6.js +325 -0
  1147. package/dist/video-generation-provider-Db8h71jA.js +77 -0
  1148. package/dist/web-fetch/runtime.js +1 -1
  1149. package/dist/web-fetch-providers.runtime-DhPkYjgB.js +41 -0
  1150. package/dist/web-fetch-providers.runtime.js +1 -1
  1151. package/dist/web-guarded-fetch-BdsVyvDS.js +58 -0
  1152. package/dist/web-guarded-fetch-CJR3JCwT.js +2 -0
  1153. package/dist/web-media-BzzQJAwk.js +4 -0
  1154. package/dist/web-media-DViZjNBa.js +2 -0
  1155. package/dist/web-media-inHawfBU.js +651 -0
  1156. package/dist/web-provider-runtime-shared-Cc08Lt9p.js +142 -0
  1157. package/dist/web-search-provider-common-CtbtmUL-.js +252 -0
  1158. package/dist/web-search-providers.runtime-B7x_cRVn.js +41 -0
  1159. package/dist/web-search-providers.runtime.js +1 -1
  1160. package/package.json +1 -1
  1161. package/dist/abort-CR0u3VsG.js +0 -277
  1162. package/dist/abort.runtime-CXUxanGg.js +0 -2
  1163. package/dist/accounts-BxBaquAf.js +0 -423
  1164. package/dist/accounts-vQjpoqEe.js +0 -2
  1165. package/dist/acp-spawn-2elSoS0E.js +0 -1286
  1166. package/dist/acp-spawn-DtKOHNO1.js +0 -2
  1167. package/dist/acp-stateful-target-driver-BqeA5j0h.js +0 -89
  1168. package/dist/action-info-B8NotHFw.js +0 -75
  1169. package/dist/active-runtime-registry-BO9mpPuB.js +0 -62
  1170. package/dist/active-tool-schema-warnings-C8vGj5FX.js +0 -105
  1171. package/dist/active-tool-schema-warnings-CVeFJuWI.js +0 -2
  1172. package/dist/agent-BgEaDMdp.js +0 -1825
  1173. package/dist/agent-_V5GbziF.js +0 -2
  1174. package/dist/agent-bundle-lsp-runtime-0jBcDEHh.js +0 -389
  1175. package/dist/agent-bundle-lsp-runtime-CQ6dZLs_.js +0 -2
  1176. package/dist/agent-bundle-mcp-materialize-Cu6JqMzC.js +0 -124
  1177. package/dist/agent-bundle-mcp-tools-BGL827cn.js +0 -3
  1178. package/dist/agent-command-CMJdGr16.js +0 -1435
  1179. package/dist/agent-delivery-DMu1MOeq.js +0 -117
  1180. package/dist/agent-harness-runtime-BKSW2E1O.js +0 -207
  1181. package/dist/agent-model-discovery-Cu4YL31r.js +0 -3
  1182. package/dist/agent-model-discovery-DdmVtkZo.js +0 -238
  1183. package/dist/agent-runner-utils-DXNDhwkI.js +0 -267
  1184. package/dist/agent-runner.runtime-Cym4Odfd.js +0 -3784
  1185. package/dist/agent-runtime-BkbhevY3.js +0 -199
  1186. package/dist/agent-runtime-label-DNP06p76.js +0 -30
  1187. package/dist/agent-runtime-metadata-JaTKc7mA.js +0 -53
  1188. package/dist/agent-tool-result-middleware-loader-FbZE0Qpk.js +0 -55
  1189. package/dist/agent-tools-Nwh8BlKX.js +0 -2506
  1190. package/dist/agent-tools.before-tool-call-BwY-FYFl.js +0 -1274
  1191. package/dist/agent-tools.before-tool-call-DwUmYhE3.js +0 -2
  1192. package/dist/agent-u5NDWrw9.js +0 -3
  1193. package/dist/agent-via-gateway-DMtOMwZa.js +0 -486
  1194. package/dist/agent-wait-dedupe-CLuKbI_7.js +0 -180
  1195. package/dist/agents-CiW7UEuB.js +0 -632
  1196. package/dist/agents.command-shared-CXGSQscb.js +0 -16
  1197. package/dist/agents.commands.add-BYBrZDXD.js +0 -304
  1198. package/dist/agents.commands.bind-nfg3AlVc.js +0 -265
  1199. package/dist/agents.commands.delete-pRj6vIrn.js +0 -128
  1200. package/dist/agents.commands.identity-Ci2PnDDl.js +0 -143
  1201. package/dist/agents.commands.list-Crj3BmqB.js +0 -235
  1202. package/dist/aliases-BFspFx3-.js +0 -97
  1203. package/dist/api-BiXhdPle.js +0 -3
  1204. package/dist/api-Cptkjys5.js +0 -6
  1205. package/dist/api-D3vT4ZVi.js +0 -2
  1206. package/dist/api-key-rotation-CQgW8LEx.js +0 -167
  1207. package/dist/app-registration-YW276fZC.js +0 -194
  1208. package/dist/apply-BRxKrOiK.js +0 -510
  1209. package/dist/apply-D0fWCa-U.js +0 -2
  1210. package/dist/apply-DIR8y0ZA.js +0 -2
  1211. package/dist/apply-DNUIV0Lt.js +0 -416
  1212. package/dist/apply-Dux9jI7f.js +0 -544
  1213. package/dist/approval-native-helpers-BMT-5X47.js +0 -398
  1214. package/dist/artifacts-CTrtIv9T.js +0 -368
  1215. package/dist/assistant-ClfI8Kho.js +0 -291
  1216. package/dist/attachment-normalize-DAW86mZY.js +0 -213
  1217. package/dist/attempt-execution-DTi2UfET.js +0 -584
  1218. package/dist/attempt-execution.helpers-DrX0QToi.js +0 -969
  1219. package/dist/attempt-execution.runtime-BCmAxwGy.js +0 -3
  1220. package/dist/attempt.prompt-helpers-BE6kGRtT.js +0 -543
  1221. package/dist/attempt.tool-run-context-J9O2yjbV.js +0 -1240
  1222. package/dist/audio-preflight.runtime-D3GXVYBI.js +0 -7
  1223. package/dist/audit-5T20D-xm.js +0 -1108
  1224. package/dist/audit-CWuV5GlP.js +0 -477
  1225. package/dist/audit.nondeep.runtime-DeYwRDYj.js +0 -1416
  1226. package/dist/audit.runtime-rUlvK4Rb.js +0 -7
  1227. package/dist/auth-DunUSatn.js +0 -567
  1228. package/dist/auth-choice--eBzca8Y.js +0 -3
  1229. package/dist/auth-choice-DJ9jsFUq.js +0 -400
  1230. package/dist/auth-choice-_pLkIdVh.js +0 -110
  1231. package/dist/auth-choice.apply.api-providers-CALcopRP.js +0 -2
  1232. package/dist/auth-choice.apply.api-providers-Dzzm1snk.js +0 -34
  1233. package/dist/auth-choice.plugin-providers.runtime-BHKTeZZc.js +0 -11
  1234. package/dist/auth-health-Cs4OjiF2.js +0 -219
  1235. package/dist/auth-list-bwJ4QDs0.js +0 -115
  1236. package/dist/auth-order-BoHN3Dc_.js +0 -105
  1237. package/dist/auth-profiles-BOLncVgy.js +0 -73
  1238. package/dist/auth-profiles-BiQRkULt.js +0 -14
  1239. package/dist/backend-config-B5yga5ay.js +0 -259
  1240. package/dist/bash-tools-BWvldguc.js +0 -3
  1241. package/dist/bash-tools-DEAAO5np.js +0 -3497
  1242. package/dist/binding-routing-BbtHmU_l.js +0 -113
  1243. package/dist/binding-targets-DSNv3-QA.js +0 -121
  1244. package/dist/bootstrap-files-DD8V2dLe.js +0 -202
  1245. package/dist/bootstrap-files-_6u1uJW2.js +0 -3
  1246. package/dist/bridge-server-v1-XPnAZ.js +0 -113
  1247. package/dist/browser-cli-CnpuO4KR.js +0 -230
  1248. package/dist/browser-cli-DPbIn8SK.js +0 -2
  1249. package/dist/browser-cli-actions-input-DoGR6LI-.js +0 -522
  1250. package/dist/browser-cli-actions-observe-CYMpgmtF.js +0 -81
  1251. package/dist/browser-cli-debug-ChJjSq-h.js +0 -137
  1252. package/dist/browser-cli-inspect-Bbci-WPG.js +0 -117
  1253. package/dist/browser-cli-manage-Bnscjb7b.js +0 -446
  1254. package/dist/browser-cli-resize-D1MJdvZI.js +0 -32
  1255. package/dist/browser-cli-shared-BCQwqz51.js +0 -69
  1256. package/dist/browser-cli-state-BWkPsvUg.js +0 -371
  1257. package/dist/browser-control-auth-CEP_ExeC.js +0 -2
  1258. package/dist/browser-profiles-SvnqnHVN.js +0 -2
  1259. package/dist/browser-runtime-0mRxjFpp.js +0 -389
  1260. package/dist/browser-tool.schema--CLR3nDv.js +0 -132
  1261. package/dist/btw-command-DV6HfrRV.js +0 -18
  1262. package/dist/build-DiRmljCi.js +0 -261
  1263. package/dist/bundled-channel-config-schema-DpdKMATU.d.ts +0 -3168
  1264. package/dist/capability-cli-ATfwTYFe.js +0 -1809
  1265. package/dist/capability-provider-runtime-l3nnLGvn.js +0 -346
  1266. package/dist/cdp.helpers-IIuc0KGS.js +0 -637
  1267. package/dist/channel-CzTD2ouI.js +0 -2309
  1268. package/dist/channel-actions-B5Yk5Axf.js +0 -46
  1269. package/dist/channel-bootstrap.runtime-C9F-Pq1o.js +0 -38
  1270. package/dist/channel-bootstrap.runtime-TPyY5Ngv.js +0 -2
  1271. package/dist/channel-core-XMZJ-ZGF.js +0 -5
  1272. package/dist/channel-inbound-DvqkKmiH.js +0 -121
  1273. package/dist/channel-message-CnJ4vUyt.js +0 -12
  1274. package/dist/channel-outbound-BhefGAqY.js +0 -436
  1275. package/dist/channel-plugin-resolution-BiaJ8aRa.js +0 -2
  1276. package/dist/channel-plugin-resolution-D_CxkMVc.js +0 -135
  1277. package/dist/channel-resolution-DzI28gIM.js +0 -46
  1278. package/dist/channel-selection-CLFO4-eQ.js +0 -171
  1279. package/dist/channel-selection.runtime-Beb2-bMH.js +0 -2
  1280. package/dist/channel.runtime-By5T5eGw.js +0 -697
  1281. package/dist/channels-BrRY9Mag.js +0 -1004
  1282. package/dist/channels-cli-CF--e2RU.js +0 -331
  1283. package/dist/chat-BTMPilpx.js +0 -2940
  1284. package/dist/chat-DnC7XCWK.js +0 -3
  1285. package/dist/chrome-C3_dN9jE.js +0 -1517
  1286. package/dist/chrome-mcp-5jjDHIgn.js +0 -864
  1287. package/dist/chrome-mcp-DFAa-WzK.js +0 -2
  1288. package/dist/claude-live-session-BUPeOzLE.js +0 -1338
  1289. package/dist/claude-live-session-Bprgmr1-.js +0 -2
  1290. package/dist/clawbot-cli-5UVkLT1Y.js +0 -9
  1291. package/dist/cli-6a6sMEUB.js +0 -2
  1292. package/dist/cli-COCN9B5e.js +0 -2
  1293. package/dist/cli-CpI4dBXy.js +0 -141
  1294. package/dist/cli-YLx-ekdH.js +0 -293
  1295. package/dist/cli-backends.runtime-CsBjr7ag.js +0 -7
  1296. package/dist/cli-compaction-Bh0oMwUa.js +0 -363
  1297. package/dist/cli-registry-loader-DDbaAJgY.js +0 -2
  1298. package/dist/cli-registry-loader-xc2Ah8S4.js +0 -193
  1299. package/dist/cli-runner-BfSrIn-9.js +0 -597
  1300. package/dist/cli-runner-D_FAjNbR.js +0 -2
  1301. package/dist/cli-runner.runtime-BJetQDu1.js +0 -3
  1302. package/dist/cli-runner.runtime-BKJQkc7C.js +0 -4
  1303. package/dist/cli-session-Cy3IeH0g.js +0 -119
  1304. package/dist/cli.runtime-BpOz0s3N.js +0 -1276
  1305. package/dist/codex-native-web-search-BDtKRV3F.js +0 -4
  1306. package/dist/codex-native-web-search-C0TrfoMX.js +0 -20
  1307. package/dist/codex-native-web-search-core-CzlK1GfN.js +0 -106
  1308. package/dist/command-auth-CFnvdYX2.js +0 -135
  1309. package/dist/command-config-resolution-B_86rG8v.js +0 -2
  1310. package/dist/command-config-resolution-BbadcA2M.js +0 -25
  1311. package/dist/command-config-resolution.runtime-B_86rG8v.js +0 -2
  1312. package/dist/command-execution-startup-Rrwwdg_5.js +0 -90
  1313. package/dist/command-primitives-runtime-C9bTt5IV.js +0 -3
  1314. package/dist/command-registry-CbpdQKmu.js +0 -9
  1315. package/dist/command-registry-Dw-XC_Zk.js +0 -4
  1316. package/dist/command-registry-core-rvEDki6p.js +0 -114
  1317. package/dist/command-secret-gateway-BX6BIiFn.js +0 -589
  1318. package/dist/command-secret-targets-DCzlTkb5.js +0 -2
  1319. package/dist/command-status-builders-DIsZN9aY.js +0 -147
  1320. package/dist/command-status.runtime-C2x4yMRd.js +0 -90
  1321. package/dist/commands-FYCxWqIx.js +0 -161
  1322. package/dist/commands-compact.runtime-BTMQfx1k.js +0 -10
  1323. package/dist/commands-core.runtime-CuNLz2wm.js +0 -2
  1324. package/dist/commands-handlers.runtime-DyNuPOmY.js +0 -6327
  1325. package/dist/commands-models-s7BRmLQh.js +0 -448
  1326. package/dist/commands-registry-BxEq-3UJ.js +0 -195
  1327. package/dist/commands-registry.runtime-CbXW33S_.js +0 -4
  1328. package/dist/commands-status-BRJMba4h.js +0 -16
  1329. package/dist/commands-status-DCXEwlSF.js +0 -3
  1330. package/dist/commands-status.runtime-DCXEwlSF.js +0 -3
  1331. package/dist/commands-subagents-control.runtime-CduLQJFD.js +0 -2
  1332. package/dist/commands-system-prompt-B3LD8CDs.js +0 -161
  1333. package/dist/commands-system-prompt-DPsXTqOQ.js +0 -2
  1334. package/dist/commands.runtime-3sVz8Qgo.js +0 -175
  1335. package/dist/common-CZvBLb3w.js +0 -286
  1336. package/dist/compact-DxU_9XEc.js +0 -1165
  1337. package/dist/compact.runtime-CqQTypVl.js +0 -12
  1338. package/dist/compaction-planning-DArTi9SN.js +0 -202
  1339. package/dist/completion-cli-CiKl5HhI.js +0 -393
  1340. package/dist/config--yllOaSC.js +0 -374
  1341. package/dist/config-Yt5UcD91.js +0 -610
  1342. package/dist/config-cli-BeXS3R6k.js +0 -1703
  1343. package/dist/config-mutation-cQeWhUqy.js +0 -5
  1344. package/dist/config-mutations-Cg04LH_S.js +0 -161
  1345. package/dist/config-utils-Dhq_UKMC.js +0 -141
  1346. package/dist/config-validation-BANohTKD.js +0 -33
  1347. package/dist/configure-CWxhlx9G.js +0 -771
  1348. package/dist/configure-Jejkc6dn.js +0 -3
  1349. package/dist/configure.commands-BYy1bz8G.js +0 -2
  1350. package/dist/configure.commands-C3hDvZse.js +0 -1253
  1351. package/dist/context-DptQ59DZ.js +0 -248
  1352. package/dist/context-_ZshNBhD.js +0 -2
  1353. package/dist/context-engine-host-compat-C_eflvRw.js +0 -2
  1354. package/dist/context-engine-host-compat-s15Pu845.js +0 -280
  1355. package/dist/context-engine-lifecycle-COHFLnj4.js +0 -627
  1356. package/dist/control-auth-CQJpLoIb.js +0 -114
  1357. package/dist/control-service-BFSgA0Py.js +0 -40
  1358. package/dist/control-service-D7GZv-GS.js +0 -3
  1359. package/dist/control-ui/assets/activity-B7yRLbf3.js +0 -124
  1360. package/dist/control-ui/assets/agents-E-3DAkaW.js +0 -1030
  1361. package/dist/control-ui/assets/channels-D0c7A9OX.js +0 -120
  1362. package/dist/control-ui/assets/cron-B54j2Vmo.js +0 -1016
  1363. package/dist/control-ui/assets/debug-CRcGYNA9.js +0 -97
  1364. package/dist/control-ui/assets/index-bZJJ7U8q.js +0 -7214
  1365. package/dist/control-ui/assets/instances-RcBeqNzx.js +0 -57
  1366. package/dist/control-ui/assets/nodes-BoWRh42t.js +0 -444
  1367. package/dist/control-ui/assets/sessions-BmRQ932H.js +0 -425
  1368. package/dist/control-ui/assets/skills-BDn45kHZ.js +0 -362
  1369. package/dist/control-ui/assets/workboard-BwbcNuC5.js +0 -402
  1370. package/dist/control-ui-ChfTPXZo.js +0 -750
  1371. package/dist/conversation-label-generator-CTfnInQF.js +0 -72
  1372. package/dist/conversation-runtime-B7oAN9Tq.js +0 -31
  1373. package/dist/core-api-CBD0dvTQ.js +0 -5
  1374. package/dist/core-api-ClCm_yM8.js +0 -2
  1375. package/dist/core-wuoxL08a.js +0 -284
  1376. package/dist/crestodian--iYeGB8u.js +0 -55
  1377. package/dist/cron-D2SzQyqo.js +0 -453
  1378. package/dist/daemon-install-B6CAkU3V.js +0 -66
  1379. package/dist/daemon-install-auth-profiles-store.runtime-Cpt5LSD6.js +0 -2
  1380. package/dist/dashboard-ChYOQjM2.js +0 -263
  1381. package/dist/defaults-CCopehWw.js +0 -130
  1382. package/dist/defaults-H4kBp17N.js +0 -3
  1383. package/dist/defaults.constants-CjB9HP6f.js +0 -76
  1384. package/dist/deliver-BzPhWO_F.js +0 -3
  1385. package/dist/deliver-DGyKH3Qi.js +0 -1399
  1386. package/dist/deliver-runtime-Ca2kcQoZ.js +0 -2
  1387. package/dist/delivery-outbound.runtime-D7ycPxY-.js +0 -7
  1388. package/dist/delivery-queue-CnLv30ko.js +0 -863
  1389. package/dist/delivery-queue-CuaDjNMh.js +0 -2
  1390. package/dist/delivery-queue-runtime-DO2vqOIJ.js +0 -16
  1391. package/dist/delivery-target.runtime-QcBVk_j8.js +0 -45
  1392. package/dist/delivery.runtime-L09v4tys.js +0 -470
  1393. package/dist/detached-task-runtime-BqU7YXYT.js +0 -86
  1394. package/dist/diagnostics-T-Hk_Qzi.js +0 -168
  1395. package/dist/dialogue-C0VnTMMn.js +0 -37
  1396. package/dist/direct-dm-BWn67tDD.js +0 -81
  1397. package/dist/directive-handling.defaults-DO6Snm4_.js +0 -22
  1398. package/dist/directive-handling.fast-lane-BemYRfPn.js +0 -70
  1399. package/dist/directive-handling.impl-BMVh1pMh.js +0 -823
  1400. package/dist/directive-handling.impl-vr4MsYbt.js +0 -2
  1401. package/dist/directive-handling.model-selection-DegP9exp.js +0 -122
  1402. package/dist/directive-handling.persist.runtime-BUdU6_zm.js +0 -274
  1403. package/dist/directives-1xk_ZcMf.js +0 -319
  1404. package/dist/directory-cli-D83WEjEG.js +0 -239
  1405. package/dist/dispatch-Ck2tvRYH.js +0 -2057
  1406. package/dist/dispatch-acp-GdaHNdvf.js +0 -1102
  1407. package/dist/dispatch-acp-manager.runtime-BGSrJqrW.js +0 -3
  1408. package/dist/dispatch-acp-media.runtime-DQ8dYQh8.js +0 -4
  1409. package/dist/dispatch-acp-transcript.runtime-CsJZGhnu.js +0 -40
  1410. package/dist/dispatch-acp-tts.runtime-Bo-QxKgx.js +0 -3
  1411. package/dist/dispatch-acp.runtime-C_u7sGcQ.js +0 -18
  1412. package/dist/dispatcher-GtuYO6Ni.js +0 -106
  1413. package/dist/doctor-B2qP9g8d.js +0 -760
  1414. package/dist/doctor-D9wCez5t.js +0 -6
  1415. package/dist/doctor-auth-XnseqtS7.js +0 -216
  1416. package/dist/doctor-auth-flat-profiles-B6cL-TiJ.js +0 -516
  1417. package/dist/doctor-auth-flat-profiles-Birb7qIk.js +0 -2
  1418. package/dist/doctor-auth-legacy-oauth-CXO3OtyG.js +0 -48
  1419. package/dist/doctor-auth-oauth-sidecar-BSgQPbcS.js +0 -177
  1420. package/dist/doctor-auth-oauth-sidecar-CzzyNwxc.js +0 -2
  1421. package/dist/doctor-bootstrap-size-BlVcO5D6.js +0 -57
  1422. package/dist/doctor-claude-cli-_MTVnCQ-.js +0 -150
  1423. package/dist/doctor-config-flow-0kxzjUjK.js +0 -1819
  1424. package/dist/doctor-core-checks-C_g9REOd.js +0 -666
  1425. package/dist/doctor-core-checks-CahzmM1L.js +0 -2
  1426. package/dist/doctor-core-checks.runtime-Bi_oTiTZ.js +0 -278
  1427. package/dist/doctor-gateway-daemon-flow-UAIWsI9w.js +0 -349
  1428. package/dist/doctor-gateway-services-BiMEGiw_.js +0 -465
  1429. package/dist/doctor-health-C69GVfMl.js +0 -65
  1430. package/dist/doctor-health-contributions-Bz19QhI4.js +0 -874
  1431. package/dist/doctor-lint-BVW4E6Qf.js +0 -95
  1432. package/dist/doctor-memory-search-D2PWzDCY.js +0 -407
  1433. package/dist/doctor-state-integrity-DuJIszQj.js +0 -1257
  1434. package/dist/doctor-tool-result-cap-advice-Dpn4zNH3.js +0 -27
  1435. package/dist/doctor-workspace-status-nW9TcIWi.js +0 -76
  1436. package/dist/dreaming-CcOWzGN5.js +0 -523
  1437. package/dist/dreaming-command-sxm3FQGb.js +0 -101
  1438. package/dist/dreaming-narrative-BSRwiUPL.js +0 -2
  1439. package/dist/dreaming-narrative-BskwmYdC.js +0 -721
  1440. package/dist/dreaming-phases-BuHjGyPw.js +0 -2
  1441. package/dist/dreaming-phases-ChVT8Ovk.js +0 -1162
  1442. package/dist/drive-C_u5W4ln.js +0 -899
  1443. package/dist/echo-transcript-tnZWH4EO.js +0 -52
  1444. package/dist/effective-tool-policy-CeHdL2D7.js +0 -89
  1445. package/dist/embedded-agent-CGULn3lb.js +0 -4
  1446. package/dist/embedded-agent-DZTa1YiK.js +0 -4074
  1447. package/dist/embedded-agent-helpers-B65K9o55.js +0 -6
  1448. package/dist/embedded-agent-helpers-BPXCvWBb.js +0 -1037
  1449. package/dist/embedded-agent.runtime-TfBgXcUV.js +0 -4
  1450. package/dist/embedded-backend-BAaFwayA.js +0 -744
  1451. package/dist/embedded-gateway-stub.runtime-CNyrjvgT.js +0 -12
  1452. package/dist/embedding-provider-runtime-EnkHdROJ.js +0 -86
  1453. package/dist/embedding-providers-CDkDb0kv.js +0 -2
  1454. package/dist/embeddings-http-ClIu4_mP.js +0 -222
  1455. package/dist/engine-qmd-DZRiT9i4.js +0 -708
  1456. package/dist/engine-storage-BEqlN8TR.js +0 -203
  1457. package/dist/errors-Co8auIlv.js +0 -2
  1458. package/dist/exec-approval-forwarder.runtime-C7QvfWQ6.js +0 -4
  1459. package/dist/exec-approval-session-target-ChuH1nXL.js +0 -177
  1460. package/dist/exec-auto-reviewer-Bm7380HF.js +0 -2
  1461. package/dist/exec-auto-reviewer-BrrdGleK.js +0 -241
  1462. package/dist/execute.runtime-B-8jUqDB.js +0 -579
  1463. package/dist/external-cli-auth-selection-0BxmRUps.js +0 -113
  1464. package/dist/extra-params-BgyvpEpv.js +0 -615
  1465. package/dist/fallback-notice-state-BXk_kRWM.js +0 -15
  1466. package/dist/fallbacks-CPdVRP81.js +0 -31
  1467. package/dist/fallbacks-shared-CSGf1oaf.js +0 -116
  1468. package/dist/fengming-runtime-NUA51sEw.js +0 -33
  1469. package/dist/fengming-runtime-config-CIZ-SHPt.js +0 -2
  1470. package/dist/fengming-runtime-memory-CIZ-SHPt.js +0 -2
  1471. package/dist/fengming-runtime-session-CIZ-SHPt.js +0 -2
  1472. package/dist/fengming-tools-MvRSt0JA.js +0 -12221
  1473. package/dist/flows-BocRit8D.js +0 -189
  1474. package/dist/fs-utils-DSXeBcjj.js +0 -9
  1475. package/dist/gateway-BCrUxrVw.js +0 -133
  1476. package/dist/gateway-cli-B8bXBd_L.js +0 -443
  1477. package/dist/gateway-install-token-pngTMc-f.js +0 -136
  1478. package/dist/gateway-method-runtime-ueZTz7WH.js +0 -21
  1479. package/dist/gateway-runtime-DbsoThML.js +0 -23
  1480. package/dist/get-reply-DUuaxcBz.js +0 -5198
  1481. package/dist/get-reply-from-config.runtime-B4Dgs3Hg.js +0 -2
  1482. package/dist/github-copilot-token-7AfRRF7J.js +0 -2
  1483. package/dist/health-7Yq5zpoZ.js +0 -3
  1484. package/dist/health-DlZqxm2f.js +0 -621
  1485. package/dist/health-DxesUuur.js +0 -111
  1486. package/dist/health-state-BMG8kOby.js +0 -106
  1487. package/dist/heartbeat-runner-Bq7A_Cjm.js +0 -5
  1488. package/dist/heartbeat-runner-DVwbVyft.js +0 -1930
  1489. package/dist/heartbeat-runner.runtime-DQ2NPXMD.js +0 -3
  1490. package/dist/helpers-PCu2RivJ.js +0 -406
  1491. package/dist/hook-helpers-DLEnCRO7.js +0 -44
  1492. package/dist/hooks-Bv-otcl7.js +0 -536
  1493. package/dist/hooks-cli-C5ve0nzF.js +0 -465
  1494. package/dist/http-endpoint-helpers-w2SagsQz.js +0 -37
  1495. package/dist/http-utils-CVvn0ZA-.js +0 -98
  1496. package/dist/image-BeixBis4.js +0 -385
  1497. package/dist/image-fallbacks-CPbmIMn9.js +0 -31
  1498. package/dist/image-generation-core.auth.runtime-Co38iRxQ.js +0 -2
  1499. package/dist/image-generation-provider-BA4Ar91S.js +0 -152
  1500. package/dist/image-runtime-7ZsfioS1.js +0 -9
  1501. package/dist/image-tool.helpers-upjA3ksB.js +0 -150
  1502. package/dist/images-ChLi1Uog.js +0 -2
  1503. package/dist/images-nB0XAnTa.js +0 -416
  1504. package/dist/inbound-reply-dispatch-DglobJ8j.js +0 -2
  1505. package/dist/inbound-reply-dispatch-QKOgNx-m.js +0 -147
  1506. package/dist/infra-runtime-CGD3RE_2.js +0 -32
  1507. package/dist/init-poVZDCAM.js +0 -59
  1508. package/dist/install-Dn9oPGmU.js +0 -262
  1509. package/dist/install.runtime-D5sllsjl.js +0 -2
  1510. package/dist/internal-CnOL_Roa.js +0 -399
  1511. package/dist/isolated-agent-CNw6E3F0.js +0 -1097
  1512. package/dist/isolated-agent-DjkHhEyR.js +0 -2
  1513. package/dist/kernel-B5Y5IQ-A.js +0 -3
  1514. package/dist/kernel-CMuO4VJy.js +0 -979
  1515. package/dist/kimi-web-search-provider.runtime-V4m_MHsk.js +0 -307
  1516. package/dist/library-B-1EZjtY.js +0 -45
  1517. package/dist/lifecycle-B-5gEZ7O.js +0 -570
  1518. package/dist/lifecycle-Bzh5Jo09.js +0 -2
  1519. package/dist/lifecycle-DvbcJYMl.js +0 -355
  1520. package/dist/lifecycle.runtime-Bzh5Jo09.js +0 -2
  1521. package/dist/list-B4xSHRdU.js +0 -2
  1522. package/dist/list-BnhZHpxx.js +0 -207
  1523. package/dist/list.list-command-DAz-Ws_6.js +0 -429
  1524. package/dist/list.model-row-DtdX9KDu.js +0 -39
  1525. package/dist/list.probe-CY6lxq51.js +0 -2
  1526. package/dist/list.probe-DPuE1GOH.js +0 -451
  1527. package/dist/list.provider-catalog-BHc9WXI6.js +0 -211
  1528. package/dist/list.provider-catalog-CFbrroys.js +0 -2
  1529. package/dist/list.registry-load-C1_sr3gb.js +0 -152
  1530. package/dist/list.row-sources-BMtHc9oi.js +0 -474
  1531. package/dist/list.source-plan-Dth72qPP.js +0 -81
  1532. package/dist/list.status-command-BXCnEq8Q.js +0 -815
  1533. package/dist/live-model-switch-Dxav22vq.js +0 -119
  1534. package/dist/llm-slug-generator-6o8RXL11.js +0 -78
  1535. package/dist/load-config-EF3n0Dyo.js +0 -27
  1536. package/dist/load-context-CI_ogQt_.js +0 -82
  1537. package/dist/loader-DtwEzpp-.js +0 -7008
  1538. package/dist/local-dispatch.runtime-21liE3rA.js +0 -10
  1539. package/dist/main-session-restart-recovery-D1g62iJ5.js +0 -2
  1540. package/dist/main-session-restart-recovery-v2I9CEXi.js +0 -389
  1541. package/dist/managed-image-attachments-BEl5qfCT.js +0 -616
  1542. package/dist/managed-image-attachments-D5KqX2Qy.js +0 -2
  1543. package/dist/manager-DZc3xiNq.js +0 -2314
  1544. package/dist/manager-Vf3vLTGe.js +0 -3737
  1545. package/dist/mcp-http-BaJoPKF9.js +0 -583
  1546. package/dist/mcp-http-CpEaJIGJ.js +0 -2
  1547. package/dist/media-runtime-DtP_Ff8m.js +0 -391
  1548. package/dist/media-services-CXYbyIIp.js +0 -416
  1549. package/dist/media-understanding-DvTIsIyr.js +0 -87
  1550. package/dist/media-understanding-provider-DBBAvuwG.js +0 -13
  1551. package/dist/media-understanding-provider-DOf_uZrx.js +0 -70
  1552. package/dist/media-understanding-provider-DdRfNh9h.js +0 -69
  1553. package/dist/media-understanding-provider-mqpQDt8V.js +0 -29
  1554. package/dist/memory-BNk25Hi6.js +0 -437
  1555. package/dist/memory-core-host-engine-embeddings-XsK5xS70.js +0 -667
  1556. package/dist/memory-core-host-engine-foundation-BYkoOLXl.js +0 -15
  1557. package/dist/memory-core-host-engine-qmd-0JuUCKCK.js +0 -2
  1558. package/dist/memory-core-host-engine-storage-MCFGjDwW.js +0 -2
  1559. package/dist/memory-core-host-runtime-cli-fVGH65E8.js +0 -10
  1560. package/dist/memory-core-host-runtime-core-JtXIAdlM.js +0 -12
  1561. package/dist/memory-core-host-runtime-files-BGw_ypoN.js +0 -4
  1562. package/dist/memory-embedding-provider-runtime-3UBzs4sx.js +0 -36
  1563. package/dist/memory-host-core-Y_O5V-mu.js +0 -78
  1564. package/dist/memory-host-search.runtime-B4TzyvmR.js +0 -2
  1565. package/dist/memory-runtime-9kEPAeKV.js +0 -2
  1566. package/dist/memory-runtime-BU4t85uu.js +0 -57
  1567. package/dist/memory-search-CVX--mSz.js +0 -235
  1568. package/dist/message-BVXoNpWP.js +0 -284
  1569. package/dist/message-HaiKqj0A.js +0 -2
  1570. package/dist/message-action-runner-Chwzn02r.js +0 -2
  1571. package/dist/message-action-runner-tEEliptt.js +0 -1922
  1572. package/dist/message-handler-CHDS_NF-.js +0 -1806
  1573. package/dist/metadata-registry-loader-Croa1pgR.js +0 -22
  1574. package/dist/metadata-registry-loader-w0p86vis.js +0 -2
  1575. package/dist/migrate-CPCZJ4H5.js +0 -2
  1576. package/dist/migrate-CUj6m6Cx.js +0 -458
  1577. package/dist/migration-provider-runtime-4r4WGtf2.js +0 -2
  1578. package/dist/migration-provider-runtime-TxrH_mM7.js +0 -68
  1579. package/dist/minimax-web-search-provider.runtime-Dr2GJiWj.js +0 -148
  1580. package/dist/model-BQSouNOa.js +0 -2
  1581. package/dist/model-CAk0bcuO.js +0 -1302
  1582. package/dist/model-auth-BF7w9Fiv.js +0 -705
  1583. package/dist/model-auth-label-r729wcPk.js +0 -67
  1584. package/dist/model-auth-us8b_D5d.js +0 -6
  1585. package/dist/model-catalog-BGykBGxx.js +0 -434
  1586. package/dist/model-catalog-BVXrqFbI.js +0 -3
  1587. package/dist/model-catalog-visibility-Bsup46vy.js +0 -76
  1588. package/dist/model-config.helpers-wzD1EEfE.js +0 -95
  1589. package/dist/model-context-tokens-DrIU9eJc.js +0 -572
  1590. package/dist/model-fallback-GySPjr3J.js +0 -1288
  1591. package/dist/model-fallback-auth.runtime-Dg_Jmguu.js +0 -5
  1592. package/dist/model-picker-BI6jXOjt.js +0 -3
  1593. package/dist/model-picker-DYyJHhfH.js +0 -1135
  1594. package/dist/model-picker-visibility-D_IMZfxd.js +0 -22
  1595. package/dist/model-picker.runtime-B70kQMyc.js +0 -48
  1596. package/dist/model-pricing-cache-CSpUDzSt.js +0 -856
  1597. package/dist/model-pricing-cache-dkPwTUVJ.js +0 -3
  1598. package/dist/model-pricing-cache-state-C6shoEWy.js +0 -83
  1599. package/dist/model-provider-auth-BfZHbTaj.js +0 -2
  1600. package/dist/model-provider-auth-CPCBWvqL.js +0 -375
  1601. package/dist/model-runtime-aliases-DUzusc9_.js +0 -133
  1602. package/dist/model-selection-8UzO5mgF.js +0 -254
  1603. package/dist/model-selection-Cb7azWw1.js +0 -7
  1604. package/dist/model-selection-jDYEo0WI.js +0 -352
  1605. package/dist/model-selection.runtime-D_yHZLbs.js +0 -7
  1606. package/dist/models-BxA2IU3W.js +0 -57
  1607. package/dist/models-auth-status-yG7yyRcv.js +0 -280
  1608. package/dist/models-cli-DUt4uiMH.js +0 -257
  1609. package/dist/models-config-B5bkuh6A.js +0 -1189
  1610. package/dist/models-config-Xj8vG_x2.js +0 -2
  1611. package/dist/models-config.providers.secrets-DNBB440Z.js +0 -2
  1612. package/dist/models-config.providers.secrets-DNIQlBSE.js +0 -382
  1613. package/dist/models-http-DMILRsry.js +0 -88
  1614. package/dist/monitor-7tD_FE_5.js +0 -60
  1615. package/dist/monitor-HjEwlqJs.js +0 -1024
  1616. package/dist/monitor.account-D0F9tnWD.js +0 -5382
  1617. package/dist/music-generation-provider-3ykPaUwR.js +0 -308
  1618. package/dist/native-hook-relay-BJKHIhWd.js +0 -1378
  1619. package/dist/native-hook-relay-V8Kappw1.js +0 -19
  1620. package/dist/node-cli-BLVyQ93e.js +0 -2806
  1621. package/dist/node-command-policy-B0ezpI_O.js +0 -295
  1622. package/dist/nodes-DnWH_15m.js +0 -3
  1623. package/dist/nodes-RkB4ZmP6.js +0 -1483
  1624. package/dist/nodes-cli-upwPs91b.js +0 -960
  1625. package/dist/nodes-pending--sojaxpI.js +0 -211
  1626. package/dist/nodes-utils-Yks_uDZK.js +0 -85
  1627. package/dist/oauth-CQN2efEy.js +0 -207
  1628. package/dist/oauth-DApi3OI9.js +0 -746
  1629. package/dist/oauth-DkUWBub2.js +0 -852
  1630. package/dist/onboard-CiQSBSrz.js +0 -768
  1631. package/dist/onboard-channels-DaWYXiLv.js +0 -1534
  1632. package/dist/onboard-channels-DnwM2_IL.js +0 -2
  1633. package/dist/onboard-custom-BQPckD0V.js +0 -3
  1634. package/dist/onboard-custom-config-BmbThk2-.js +0 -422
  1635. package/dist/onboard-custom-xInFj1Rs.js +0 -280
  1636. package/dist/onboard-search-DSfmthe5.js +0 -412
  1637. package/dist/openai-compat-errors-VR4SN1MV.js +0 -136
  1638. package/dist/openai-http-DV95ynPi.js +0 -836
  1639. package/dist/openai-transport-stream-BwpzqR-b.js +0 -3427
  1640. package/dist/openresponses-http-DPchx8IC.js +0 -1175
  1641. package/dist/operations-f9R8j-r9.js +0 -805
  1642. package/dist/order-BQx8mNGZ.js +0 -218
  1643. package/dist/outbound-attachment-C4yojK6p.js +0 -19
  1644. package/dist/param-readers-BIXyd5la.js +0 -2
  1645. package/dist/payloads-DrY1bKyF.js +0 -256
  1646. package/dist/persistent-bindings.lifecycle-BiPN7luW.js +0 -85
  1647. package/dist/persistent-bindings.lifecycle-X3wfan2Z.js +0 -2
  1648. package/dist/plugin-enabled-CqsBObeO.js +0 -232
  1649. package/dist/plugin-install-CfB1_kpX.js +0 -118
  1650. package/dist/plugin-install-DzMraXHH.js +0 -2
  1651. package/dist/plugin-install-config-policy-BD_elPNg.js +0 -169
  1652. package/dist/plugin-registration-Dy58ncPf.js +0 -97
  1653. package/dist/plugin-registry-BlmODeop.js +0 -3
  1654. package/dist/plugin-registry-k5OK18l5.js +0 -2
  1655. package/dist/plugin-runtime-B3t53CKr.js +0 -102
  1656. package/dist/plugin-sdk/bundled-channel-config-schema-C3pWWvwG.d.ts +0 -3169
  1657. package/dist/plugin-sdk/config-schema-D7cABQ6o.d.ts +0 -33
  1658. package/dist/plugin-sdk/zod-schema.core-CwBNqcXp.d.ts +0 -166
  1659. package/dist/plugin-service-sKF4gWFm.js +0 -1249
  1660. package/dist/plugins-authoring-command-I72k2cuv.js +0 -304
  1661. package/dist/plugins-cli-DMQRbPsU.js +0 -63
  1662. package/dist/plugins-cli.runtime-CvDuKFJj.js +0 -339
  1663. package/dist/plugins-command-helpers-C5WMM4bk.js +0 -164
  1664. package/dist/plugins-command-helpers-DDt_pMQ4.js +0 -2
  1665. package/dist/plugins-inspect-command-ka7Hpld3.js +0 -248
  1666. package/dist/plugins-install-command-BHSgof-_.js +0 -2
  1667. package/dist/plugins-install-command-t5caX9q_.js +0 -993
  1668. package/dist/plugins-install-persist-Bah1m3x7.js +0 -252
  1669. package/dist/plugins-list-command-BXLWwXHM.js +0 -184
  1670. package/dist/plugins-uninstall-command-C_3m6CrW.js +0 -118
  1671. package/dist/prepare.runtime-COZaHg5E.js +0 -798
  1672. package/dist/presentation-card-CciJv4ru.js +0 -164
  1673. package/dist/preview-warnings-L4VuEOyB.js +0 -618
  1674. package/dist/profiles-CM2xoUYX.js +0 -194
  1675. package/dist/program-B-4C7bC-.js +0 -131
  1676. package/dist/provider-adapters-Eh8mS2Fd.js +0 -104
  1677. package/dist/provider-api-key-auth-DTh2cbmS.js +0 -117
  1678. package/dist/provider-api-key-auth.runtime-DrTYYfxK.js +0 -14
  1679. package/dist/provider-auth-Bnaijzmv.js +0 -281
  1680. package/dist/provider-auth-api-key-CNP8o5E7.js +0 -5
  1681. package/dist/provider-auth-choice-Devw4sQf.js +0 -311
  1682. package/dist/provider-auth-choice-helpers-DmVudRp6.js +0 -210
  1683. package/dist/provider-auth-choice.runtime-C337IQ3W.js +0 -2
  1684. package/dist/provider-auth-choice.runtime-DqGYalFo.js +0 -18
  1685. package/dist/provider-auth-guidance-Bk4WV6Lg.js +0 -2
  1686. package/dist/provider-auth-guidance-C7NCKuKn.js +0 -34
  1687. package/dist/provider-auth-helpers-r7mC8I5l.js +0 -177
  1688. package/dist/provider-auth-login.runtime-BFJgAAS6.js +0 -156
  1689. package/dist/provider-auth-runtime-BiLPGiMW.js +0 -186
  1690. package/dist/provider-discovery-uxRmAIf_.js +0 -95
  1691. package/dist/provider-discovery.runtime-mwbSivDS.js +0 -290
  1692. package/dist/provider-dispatcher-CtKWj3r-.js +0 -22
  1693. package/dist/provider-entry-DjACqdrB.js +0 -134
  1694. package/dist/provider-hook-runtime-CpJsM7Dk.js +0 -255
  1695. package/dist/provider-openai-codex-oauth-DWGmVUYg.js +0 -2
  1696. package/dist/provider-openai-codex-oauth-ctxd00JW.js +0 -44
  1697. package/dist/provider-registration-l8EX4voM.js +0 -235
  1698. package/dist/provider-registry-BgIQXJle.js +0 -31
  1699. package/dist/provider-registry-CVuzobHN.js +0 -36
  1700. package/dist/provider-registry-DmdDbSQs.js +0 -61
  1701. package/dist/provider-registry-LqtLqheu.js +0 -61
  1702. package/dist/provider-registry-pTYVjODc.js +0 -61
  1703. package/dist/provider-runtime-BQZSuC9l.js +0 -3
  1704. package/dist/provider-runtime-D9Q-7VuO.js +0 -386
  1705. package/dist/provider-runtime.runtime-C6YZ8YI0.js +0 -26
  1706. package/dist/provider-self-hosted-setup-BIAD2ISe.js +0 -373
  1707. package/dist/provider-stream-DScdaoRo.js +0 -313
  1708. package/dist/provider-stream-PE0IxmpZ.js +0 -1084
  1709. package/dist/provider-stream-family-S2fhlydZ.js +0 -2
  1710. package/dist/provider-usage-DVKHMF6l.js +0 -4
  1711. package/dist/provider-usage-EEjx1av0.js +0 -71
  1712. package/dist/provider-usage.load-Cu11xbrw.js +0 -357
  1713. package/dist/provider-web-search-Dbk7MO-1.js +0 -58
  1714. package/dist/provider-wizard-DS2Xb2eu.js +0 -125
  1715. package/dist/providers.runtime-BPhGcupv.js +0 -240
  1716. package/dist/providers.runtime-DoylK-ht.js +0 -2
  1717. package/dist/proxy-BxacG0p3.js +0 -662
  1718. package/dist/public-artifacts-Dq3y7bBv.js +0 -7
  1719. package/dist/pw-ai-DlSSqerW.js +0 -3064
  1720. package/dist/qmd-manager-B_SG-ejE.js +0 -2040
  1721. package/dist/qr-cli-CT-sE_j9.js +0 -2
  1722. package/dist/qr-cli-DPlDCXJQ.js +0 -371
  1723. package/dist/qr-image--VmmvuDB.js +0 -2
  1724. package/dist/queue-Be2Y7PcO.js +0 -923
  1725. package/dist/read-file-hhemkDfq.js +0 -183
  1726. package/dist/register-service-commands-CeVpCQU3.js +0 -77
  1727. package/dist/register.agent-JLsb-giw.js +0 -152
  1728. package/dist/register.configure-CP0Q-ost.js +0 -16
  1729. package/dist/register.crestodian-CBXyXEix.js +0 -24
  1730. package/dist/register.maintenance-DGIPQ2Vo.js +0 -85
  1731. package/dist/register.message-BBQwz0Ld.js +0 -404
  1732. package/dist/register.migrate-CkgNlvLD.js +0 -106
  1733. package/dist/register.onboard-CS9gRK0c.js +0 -115
  1734. package/dist/register.setup-DhqDOer9.js +0 -40
  1735. package/dist/register.status-health-sessions-CiwQN_lw.js +0 -293
  1736. package/dist/register.subclis-86Md7P0P.js +0 -3
  1737. package/dist/register.subclis-CTVI8zvZ.js +0 -31
  1738. package/dist/register.subclis-core-Cy4AnRCu.js +0 -273
  1739. package/dist/rem-harness-vSsq3HiK.js +0 -649
  1740. package/dist/repair-sequencing-SHADYdcA.js +0 -652
  1741. package/dist/reply-media-paths.runtime-Bf5nxPuP.js +0 -154
  1742. package/dist/reply-media-paths.runtime-sLsMpKGO.js +0 -2
  1743. package/dist/reply-payloads-CJ3w8rSA.js +0 -79
  1744. package/dist/reply-payloads-dedupe-DDFXWCVR.js +0 -176
  1745. package/dist/reply-payloads-dedupe.runtime-DbXPzKmG.js +0 -2
  1746. package/dist/reply-timing-tracker-DjVIBsVb.js +0 -205
  1747. package/dist/reply-turn-admission-nEW5QbY5.js +0 -2056
  1748. package/dist/reply.runtime-B4Dgs3Hg.js +0 -2
  1749. package/dist/reset-preserved-selection-CVD1yeVC.js +0 -45
  1750. package/dist/resolve-DidlinMh.js +0 -106
  1751. package/dist/restart-DzTrO95c.js +0 -121
  1752. package/dist/result-fallback-classifier-BqsFUDvP.js +0 -98
  1753. package/dist/root-help-QGs0dCCN.js +0 -43
  1754. package/dist/route-B3R-uzFG.js +0 -475
  1755. package/dist/route-reply-CdfhgIoY.js +0 -174
  1756. package/dist/route-reply.runtime-DwuU2WjH.js +0 -2
  1757. package/dist/routes-ChXmJocl.js +0 -3701
  1758. package/dist/routes-D-ZF4AdA.js +0 -2
  1759. package/dist/run-ClmVDTET.js +0 -1162
  1760. package/dist/run-auth-profile.runtime-CTxrwz0y.js +0 -2
  1761. package/dist/run-command-CqZJQ0Im.js +0 -2
  1762. package/dist/run-command-GClW75NL.js +0 -23
  1763. package/dist/run-context-BOdGeRg5.js +0 -66
  1764. package/dist/run-context.runtime-CwuKVYPj.js +0 -2
  1765. package/dist/run-delivery.runtime-BQ39dm34.js +0 -762
  1766. package/dist/run-embedded.runtime-e1K4Bt1_.js +0 -4
  1767. package/dist/run-execution-cli.runtime-Cjrgt4cV.js +0 -4
  1768. package/dist/run-executor.runtime-C2JE6JGb.js +0 -330
  1769. package/dist/run-model-catalog.runtime-DkrLKopr.js +0 -2
  1770. package/dist/run-session-state-C5YdQs7o.js +0 -159
  1771. package/dist/run-subagent-registry.runtime-Dl_lXi6y.js +0 -2
  1772. package/dist/runner-CNGHdaIg.js +0 -704
  1773. package/dist/runner.entries-dckPkeld.js +0 -1485
  1774. package/dist/runtime-9LxcVCyw.js +0 -615
  1775. package/dist/runtime-BCOtBS5G.js +0 -3
  1776. package/dist/runtime-C-pgjoJr.js +0 -210
  1777. package/dist/runtime-CyF0vJXG.js +0 -10
  1778. package/dist/runtime-D-7lMvGV.js +0 -2
  1779. package/dist/runtime-D17OmF9G.js +0 -224
  1780. package/dist/runtime-D6SweufG.js +0 -245
  1781. package/dist/runtime-DVAM7AFd.js +0 -2
  1782. package/dist/runtime-DX2ClrP-.js +0 -436
  1783. package/dist/runtime-FOOWuiYX.js +0 -300
  1784. package/dist/runtime-api-B0F0JsV1.js +0 -12
  1785. package/dist/runtime-cREKSBYC.js +0 -2
  1786. package/dist/runtime-channel-BmD4hoCR.js +0 -148
  1787. package/dist/runtime-channel-BsebQSPL.js +0 -2
  1788. package/dist/runtime-config-collectors-BjYeQ0Tk.js +0 -525
  1789. package/dist/runtime-embedded-agent.runtime-A4r23Bn8.js +0 -2
  1790. package/dist/runtime-internal-DkV-EMTK.js +0 -2
  1791. package/dist/runtime-llm.runtime-BQKNnuRc.js +0 -307
  1792. package/dist/runtime-model-auth.runtime-BbGqHVM5.js +0 -2
  1793. package/dist/runtime-model-auth.runtime-rtJH4LBB.js +0 -46
  1794. package/dist/runtime-options-B0EGb1Wq.js +0 -275
  1795. package/dist/runtime-plugin-Bdqm44bH.js +0 -92
  1796. package/dist/runtime-plugins-rZk1eAK_.js +0 -32
  1797. package/dist/runtime-plugins.runtime-DApiYzny.js +0 -2
  1798. package/dist/runtime-prepare.runtime-DWxvnbyY.js +0 -81
  1799. package/dist/runtime-provider-B0slPjtk.js +0 -2
  1800. package/dist/runtime-provider-DLgupOKt.js +0 -24
  1801. package/dist/runtime-registry-loader-Cf2HuMjd.js +0 -2
  1802. package/dist/runtime-registry-loader-DLzDrA7e.js +0 -117
  1803. package/dist/runtime-shared-Bg-OiD4u.js +0 -365
  1804. package/dist/runtime-web-channel-plugin-DrMjRaqi.js +0 -204
  1805. package/dist/scan-DA7Oqxuv.js +0 -573
  1806. package/dist/sdk-security-runtime-WjOaCbga.js +0 -86
  1807. package/dist/sdk-setup-tools-DaYT6_jD.js +0 -8
  1808. package/dist/secrets-cli-fJQ0geWO.js +0 -150
  1809. package/dist/security-cli-CJMwGp8U.js +0 -520
  1810. package/dist/selection-BNwLQzqJ.js +0 -3
  1811. package/dist/selection-Cj-l80pO.js +0 -18365
  1812. package/dist/send-DstYcrDW.js +0 -711
  1813. package/dist/send-aTxtLkJm.js +0 -178
  1814. package/dist/send-media-Bl2ryo6a.js +0 -2072
  1815. package/dist/send-qwDMMnM6.js +0 -1222
  1816. package/dist/send-result-BWRKr16H.js +0 -141
  1817. package/dist/server-CMtA1S09.js +0 -24
  1818. package/dist/server-DIRaYiiH.js +0 -72
  1819. package/dist/server-aux-handlers-BRO-9-Jf.js +0 -1347
  1820. package/dist/server-chat-0J_ke0ph.js +0 -827
  1821. package/dist/server-context-DWOSX34k.js +0 -2
  1822. package/dist/server-context-R7MFLFdI.js +0 -955
  1823. package/dist/server-cron-2FuFg2j8.js +0 -2
  1824. package/dist/server-cron-ChPAVQtg.js +0 -3173
  1825. package/dist/server-maintenance-ZvS7Id6T.js +0 -152
  1826. package/dist/server-methods-DSbhPK3k.js +0 -497
  1827. package/dist/server-middleware-CYxFU-e5.js +0 -122
  1828. package/dist/server-model-catalog-B22UhmRr.js +0 -73
  1829. package/dist/server-model-catalog-BJIHPP3P.js +0 -2
  1830. package/dist/server-node-events-tNWJnXQM.js +0 -597
  1831. package/dist/server-plugin-bootstrap-Ccu97zi8.js +0 -71
  1832. package/dist/server-plugins-ByXwKPnj.js +0 -435
  1833. package/dist/server-reload-handlers-ConGiT9Q.js +0 -719
  1834. package/dist/server-restart-sentinel-mPHo61LL.js +0 -700
  1835. package/dist/server-runtime-services-BR1icaUW.js +0 -3
  1836. package/dist/server-runtime-services-Bx8n34dj.js +0 -147
  1837. package/dist/server-runtime-subscriptions-CZklTkRG.js +0 -67
  1838. package/dist/server-session-events-DxdiZYM2.js +0 -244
  1839. package/dist/server-session-key-CYvLslFO.js +0 -75
  1840. package/dist/server-session-key-D9GQut81.js +0 -2
  1841. package/dist/server-startup-config-Byb0vR8j.js +0 -305
  1842. package/dist/server-startup-early-a65fHTQS.js +0 -87
  1843. package/dist/server-startup-memory-ClwzC9jX.js +0 -72
  1844. package/dist/server-startup-plugins-CaBj0Nt2.js +0 -127
  1845. package/dist/server-startup-post-attach-B7TcxkmO.js +0 -793
  1846. package/dist/server-ws-runtime-Cxk_CqMr.js +0 -374
  1847. package/dist/server.impl-CQ6dnx43.js +0 -2622
  1848. package/dist/session-cost-usage-GsYDNvka.js +0 -1600
  1849. package/dist/session-kill-http-CKkxZhhd.js +0 -121
  1850. package/dist/session-log-runtime-Bwc2Oijk.js +0 -1258
  1851. package/dist/session-override-CWbKiXiC.js +0 -134
  1852. package/dist/session-reset-model.runtime-CDFMjwWA.js +0 -144
  1853. package/dist/session-reset-service-SE0aK4cw.js +0 -651
  1854. package/dist/session-status.runtime-Df89I7Fk.js +0 -2
  1855. package/dist/session-store-RkvjJPMQ.js +0 -273
  1856. package/dist/session-store.runtime-C7P5asx7.js +0 -4
  1857. package/dist/session-subagent-reactivation.runtime-BhGUZG1Z.js +0 -2
  1858. package/dist/session-tab-registry-9rSuQ0Yz.js +0 -551
  1859. package/dist/session-utils-De8TIM0h.js +0 -1508
  1860. package/dist/sessions-6b9a00Tl.js +0 -1917
  1861. package/dist/sessions-CEPHczjC.js +0 -316
  1862. package/dist/sessions-CEojHc8b.js +0 -12736
  1863. package/dist/sessions-cleanup-BkG7_sq9.js +0 -165
  1864. package/dist/sessions-history-http-BjJEfjJa.js +0 -432
  1865. package/dist/sessions-patch-PwG5sknc.js +0 -401
  1866. package/dist/sessions-resolve-CSIrd_fi.js +0 -180
  1867. package/dist/sessions-table-8CbU7jXa.js +0 -161
  1868. package/dist/sessions.runtime-BYHMD0M7.js +0 -2
  1869. package/dist/set-BJDpe28W.js +0 -31
  1870. package/dist/set-image-CwTFx7PX.js +0 -17
  1871. package/dist/setup-B6LmeIms.js +0 -614
  1872. package/dist/setup-B_zxHfYu.js +0 -2
  1873. package/dist/setup-onboard-configure-help-fast-path-Bck3SKEH.js +0 -64
  1874. package/dist/setup.finalize-CmLYX-Rf.js +0 -586
  1875. package/dist/setup.gateway-config-H_89Msro.js +0 -281
  1876. package/dist/setup.migration-import-DVzyUjX6.js +0 -2
  1877. package/dist/setup.migration-import-DmJpqoqf.js +0 -200
  1878. package/dist/setup.post-install-migration-WPFWKXXg.js +0 -128
  1879. package/dist/shared-CUhu8NTs.js +0 -5
  1880. package/dist/shared-D-BN2JhY.js +0 -71
  1881. package/dist/shared-ES8nDIcn.js +0 -212
  1882. package/dist/simple-completion-runtime-BGZkWvKr.js +0 -206
  1883. package/dist/simple-completion-runtime-CM_IISYW.js +0 -2
  1884. package/dist/simple-completion-transport-Bo0u9dhp.js +0 -83
  1885. package/dist/snapshot-urls-C1KjRQD5.js +0 -317
  1886. package/dist/speech-core-Bas7e4h0.js +0 -119
  1887. package/dist/speech-provider-BonJQv5S.js +0 -227
  1888. package/dist/speech-provider-CwdKQmDv.js +0 -171
  1889. package/dist/speech-provider-DcQRnYhZ.js +0 -233
  1890. package/dist/stale-oauth-profile-shadows-C3aeAWfv.js +0 -186
  1891. package/dist/stale-oauth-profile-shadows-m5rb8dPc.js +0 -2
  1892. package/dist/standalone-runtime-registry-loader-B9n2LBKC.js +0 -59
  1893. package/dist/startup-context-DY7C4riM.js +0 -314
  1894. package/dist/status-6EPKat7p.js +0 -73
  1895. package/dist/status-C6Fa7Dsf.js +0 -2
  1896. package/dist/status-CNnxDQlM.js +0 -4
  1897. package/dist/status-D2Scvbc0.js +0 -3
  1898. package/dist/status-Ducanro3.js +0 -2
  1899. package/dist/status-_XX_6QVA.js +0 -466
  1900. package/dist/status-all-BP1u6vou.js +0 -573
  1901. package/dist/status-json-DPlOJ_ue.js +0 -15
  1902. package/dist/status-json-command-BT7EwVKj.js +0 -84
  1903. package/dist/status-message-Dzr9-MX-.js +0 -495
  1904. package/dist/status-message.runtime-DFezIt1d.js +0 -6
  1905. package/dist/status-prBlcUV5.js +0 -249
  1906. package/dist/status-queue.runtime-C1bmg2rl.js +0 -2
  1907. package/dist/status-runtime-shared-RjKIPEQ0.js +0 -289
  1908. package/dist/status-subagents.runtime-tsCCe4Ny.js +0 -32
  1909. package/dist/status-text-Bkeyg8Bf.js +0 -301
  1910. package/dist/status.command-D06_4ATq.js +0 -425
  1911. package/dist/status.command-dDEZM84a.js +0 -2
  1912. package/dist/status.command.text-runtime-WH9tP7yg.js +0 -15
  1913. package/dist/status.runtime-B76GaBIR.js +0 -2
  1914. package/dist/status.scan-Bc6clx0F.js +0 -72
  1915. package/dist/status.scan-overview-v_-AaFhC.js +0 -460
  1916. package/dist/status.scan.deps.runtime-BkH1HAb4.js +0 -19
  1917. package/dist/status.scan.fast-json-CrlfKKI3.js +0 -2
  1918. package/dist/status.scan.fast-json-D8v6zfP8.js +0 -163
  1919. package/dist/status.summary-DBhvgOPr.js +0 -276
  1920. package/dist/status.summary-hQV0PKFO.js +0 -2
  1921. package/dist/store-BClomp_4.js +0 -3
  1922. package/dist/store-BHqDPtNw.js +0 -2302
  1923. package/dist/stored-model-override-vm4CtQWX.js +0 -79
  1924. package/dist/subagent-announce-D244Q4w2.js +0 -353
  1925. package/dist/subagent-announce-delivery-qKZfF7Bs.js +0 -1369
  1926. package/dist/subagent-control-c87mVGUE.js +0 -492
  1927. package/dist/subagent-control.runtime-DfQtIsDb.js +0 -3
  1928. package/dist/subagent-hooks-B_UW5Len.js +0 -2
  1929. package/dist/subagent-hooks-CYvFWt_r.js +0 -230
  1930. package/dist/subagent-hooks-api-DZgaJf19.js +0 -23
  1931. package/dist/subagent-registry-BlcoCggo.js +0 -2627
  1932. package/dist/subagent-registry-CuObhNeO.js +0 -3
  1933. package/dist/subagent-session-cleanup-hFF8Z34s.js +0 -390
  1934. package/dist/system-CN_Knfqq.js +0 -111
  1935. package/dist/system-prompt-config-BmZlhYK9.js +0 -918
  1936. package/dist/talk-DrjGczYs.js +0 -2454
  1937. package/dist/target-id-BNpbyWkq.js +0 -107
  1938. package/dist/targets-CQcGo6u4.js +0 -267
  1939. package/dist/targets.runtime-DwcxNI-x.js +0 -2
  1940. package/dist/task-executor-CZg-qt4u.js +0 -349
  1941. package/dist/task-owner-access-Duem5jjb.js +0 -74
  1942. package/dist/task-registry-Cw8pc3Ry.js +0 -2362
  1943. package/dist/task-registry-delivery-runtime-HaiKqj0A.js +0 -2
  1944. package/dist/task-registry.maintenance-BLv3wpK9.js +0 -764
  1945. package/dist/task-registry.maintenance-CvlIcxE-.js +0 -2
  1946. package/dist/task-status-access-C5nDJSI4.js +0 -18
  1947. package/dist/tasks-D3CfEAlq.js +0 -548
  1948. package/dist/tasks-WKnE5fvr.js +0 -153
  1949. package/dist/tasks-audit-system-okJjcOjU.js +0 -210
  1950. package/dist/tasks-json-C-iUgWNu.js +0 -73
  1951. package/dist/tavily-web-search-provider.runtime-jpagljrA.js +0 -112
  1952. package/dist/text-report-BTsF3Pv3.js +0 -695
  1953. package/dist/text-transforms.runtime-CgH_pbcQ.js +0 -113
  1954. package/dist/thread-bindings-BWxpUE9U.js +0 -228
  1955. package/dist/tool-DhJbbm91.js +0 -143
  1956. package/dist/tool-dispatch-CpFUfblu.js +0 -155
  1957. package/dist/tool-images-C-tFlXjE.js +0 -247
  1958. package/dist/tool-plugin-3NejWxZW.js +0 -93
  1959. package/dist/tool-resolution-oW8Cbamd.js +0 -153
  1960. package/dist/tool-result-truncation-CWFGf7Eu.js +0 -498
  1961. package/dist/tool-schema-CMtc7PdZ.js +0 -40
  1962. package/dist/tool-schema-projection-DJRPEEvY.js +0 -215
  1963. package/dist/tool-split-E4RdK5jS.js +0 -323
  1964. package/dist/tools-BAl3JiNw.js +0 -901
  1965. package/dist/tools-DC8tCPxR.js +0 -579
  1966. package/dist/tools-catalog-Dzv9zaBD.js +0 -156
  1967. package/dist/tools-effective-CGvzyIL2.js +0 -442
  1968. package/dist/tools-effective-inventory-GI5N5Q9v.js +0 -379
  1969. package/dist/tools-invoke-CU2U0hNH.js +0 -51
  1970. package/dist/tools-invoke-http-8s3FiUy4.js +0 -68
  1971. package/dist/tools-invoke-shared-DIETrEY7.js +0 -200
  1972. package/dist/tools.runtime-Bnm8CI7w.js +0 -5
  1973. package/dist/transcript-rewrite-Buv2ITw4.js +0 -688
  1974. package/dist/transcripts-tool-BCFlLCFd.js +0 -2
  1975. package/dist/transcripts-tool-CWgNd0Uw.js +0 -656
  1976. package/dist/tts-Aguo4zC5.js +0 -3
  1977. package/dist/tts-Bf77cURn.js +0 -2
  1978. package/dist/tts-DnADOKOP.js +0 -194
  1979. package/dist/tts-runtime-MBSH-nOM.js +0 -1337
  1980. package/dist/tts.runtime-B-NR9osE.js +0 -2
  1981. package/dist/tts.runtime-Bo-QxKgx.js +0 -3
  1982. package/dist/tui-B0CdNmCz.js +0 -4860
  1983. package/dist/tui-ByRcXM3Z.js +0 -2
  1984. package/dist/tui-backend-C52BUoZI.js +0 -256
  1985. package/dist/tui-cli-BQHpZ4n0.js +0 -40
  1986. package/dist/typing-policy-XspVOezC.js +0 -199
  1987. package/dist/usage-BOYwzimH.js +0 -1113
  1988. package/dist/usage-BSmLrVWB.js +0 -623
  1989. package/dist/usage-format-CfzICmvv.js +0 -2
  1990. package/dist/usage-format-DPJKCPic.js +0 -394
  1991. package/dist/video-generation-provider-CdCTztQ7.js +0 -77
  1992. package/dist/video-generation-provider-MUUshUzz.js +0 -325
  1993. package/dist/video-generation-provider-XmzzTa6e.js +0 -297
  1994. package/dist/video-generation-provider-weiQUJE5.js +0 -64
  1995. package/dist/web-fetch-providers.runtime-tD9zqAS2.js +0 -41
  1996. package/dist/web-guarded-fetch-CyhQZ1yD.js +0 -2
  1997. package/dist/web-guarded-fetch-DIXHI-yJ.js +0 -58
  1998. package/dist/web-media-BPnTMYE5.js +0 -4
  1999. package/dist/web-media-DV_tCQiQ.js +0 -2
  2000. package/dist/web-media-DYydVGCK.js +0 -651
  2001. package/dist/web-provider-runtime-shared-h3M6Bqyg.js +0 -142
  2002. package/dist/web-search-provider-common-CEYWuDcp.js +0 -252
  2003. package/dist/web-search-providers.runtime-YrayP296.js +0 -41
  2004. /package/dist/{acp-runtime-backend-CHZtaM6t.js → acp-runtime-backend-B83JR5Zf.js} +0 -0
  2005. /package/dist/{agent-turn-attachments-BYCRK86s.js → agent-turn-attachments-D5uJijuK.js} +0 -0
  2006. /package/dist/{auth-install-policy-t46tJ8jV.js → auth-install-policy-BIpdwrZ9.js} +0 -0
  2007. /package/dist/{cli-backends-BHXnrVN_.js → cli-backends-79CCRQ2a.js} +0 -0
  2008. /package/dist/{command-secret-targets-DZ0J2Wm3.js → command-secret-targets-BOJlcBil.js} +0 -0
  2009. /package/dist/{commands-DWp49Exc.js → commands-Dw9hwmVt.js} +0 -0
  2010. /package/dist/{commands-reset-hooks-MMq2dvff.js → commands-reset-hooks-epArfNOY.js} +0 -0
  2011. /package/dist/{delegate-Dkj_5OvH.js → delegate-Bw8NQXVr.js} +0 -0
  2012. /package/dist/{jobs-BGELIHcx.js → jobs-BIOTaq7l.js} +0 -0
  2013. /package/dist/{kimi-web-search-provider-4PlMYsPx.js → kimi-web-search-provider-Bzg_DiXO.js} +0 -0
  2014. /package/dist/{memory-host-search-Ds9GiNpf.js → memory-host-search-Dph0Mq-v.js} +0 -0
  2015. /package/dist/{minimax-web-search-provider-d5gTJUNg.js → minimax-web-search-provider-CETxDkkI.js} +0 -0
  2016. /package/dist/{model-selection-cli-CO6BHPiL.js → model-selection-cli-DizUvxeY.js} +0 -0
  2017. /package/dist/{provider-auth-choice-preference-f7Us6TQL.js → provider-auth-choice-preference-uJn1811S.js} +0 -0
  2018. /package/dist/{runtime-wfO9bV5y.js → runtime-BEVbpIgZ.js} +0 -0
  2019. /package/dist/{runtime-web-tools-B6vr1LZs.js → runtime-web-tools-Bf0aEe-F.js} +0 -0
  2020. /package/dist/{runtime-web-tools-fallback.runtime-Crs7KfH5.js → runtime-web-tools-fallback.runtime-DU6rTj6l.js} +0 -0
  2021. /package/dist/{session-subagent-reactivation-H5Rdwkyy.js → session-subagent-reactivation-Bb5SCi9J.js} +0 -0
  2022. /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 };