squidclaw 2026.4.24 → 2026.4.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1248) hide show
  1. package/dist/.buildstamp +1 -1
  2. package/dist/abort-C3Ip4Pdy.js +201 -0
  3. package/dist/abort.runtime-QNYdlOpn.js +2 -0
  4. package/dist/abort.runtime.js +1 -1
  5. package/dist/access-control-DwlCAZOQ.js +146 -0
  6. package/dist/accounts-C96LVxAj.js +133 -0
  7. package/dist/accounts-CBYP10BZ.js +107 -0
  8. package/dist/accounts-CPDLJugT.js +104 -0
  9. package/dist/accounts-LbGlovbZ.js +2 -0
  10. package/dist/acp-binding-runtime-BzT7m6eA.js +2 -0
  11. package/dist/acp-cli-CPb8l8Kq.js +2194 -0
  12. package/dist/acp-runtime--wBJVnTK.js +68 -0
  13. package/dist/acp-stateful-target-driver-BsXqxZs1.js +87 -0
  14. package/dist/action-agents-fCQzEMVA.js +67 -0
  15. package/dist/action-focus-C54pZO2i.js +123 -0
  16. package/dist/action-help-Dls799vg.js +7 -0
  17. package/dist/action-info-Df7LML-M.js +58 -0
  18. package/dist/action-kill-CzSrpu4H.js +33 -0
  19. package/dist/action-list-8B0fqbE1.js +21 -0
  20. package/dist/action-log-D4Esl7DY.js +30 -0
  21. package/dist/action-runtime-BQL7ZKYp.js +323 -0
  22. package/dist/action-runtime-FEfSljLk.js +72 -0
  23. package/dist/action-runtime-Ih2WV4_Q.js +419 -0
  24. package/dist/action-runtime-api-SwJP8tC2.js +2 -0
  25. package/dist/action-runtime.runtime-Dg0EDpD0.js +2 -0
  26. package/dist/action-runtime.runtime.js +1 -1
  27. package/dist/action-send-FZEWY7z-.js +39 -0
  28. package/dist/action-spawn-D9aYmWtU.js +46 -0
  29. package/dist/action-unfocus-DH_0Sdai.js +28 -0
  30. package/dist/actions-_4VXA2Mi.js +539 -0
  31. package/dist/actions.runtime-C0sq1G1X.js +18 -0
  32. package/dist/actions.runtime-Csmut5JU.js +2 -0
  33. package/dist/actions.runtime-DK1S2kPA.js +5 -0
  34. package/dist/actions.runtime.js +1 -1
  35. package/dist/agent-DDUCovt6.js +2 -0
  36. package/dist/agent-command-B66ZhH42.js +1453 -0
  37. package/dist/agent-components.runtime-BKPjyXtT.js +10 -0
  38. package/dist/agent-components.runtime.js +1 -1
  39. package/dist/agent-runner.runtime-C9TebV0N.js +2712 -0
  40. package/dist/agent-runner.runtime.js +1 -1
  41. package/dist/agent-runtime-t-qKN_UH.js +17 -0
  42. package/dist/agents-BQS1Y3W6.js +5 -0
  43. package/dist/agents-_tqZh21O.js +887 -0
  44. package/dist/api-BHDjzh-P.js +2 -0
  45. package/dist/api-BhSeyy_T.js +2 -0
  46. package/dist/api-BhYwA1V2.js +1085 -0
  47. package/dist/api-CDtkR7PN.js +7 -0
  48. package/dist/api-CxpdTzFP.js +19032 -0
  49. package/dist/api-CyiHB3Bg.js +5 -0
  50. package/dist/api-DLBxNdf6.js +5 -0
  51. package/dist/api-DyFZaXTD.js +2 -0
  52. package/dist/api-JpNozfiq.js +7524 -0
  53. package/dist/api-kcSVTL-D.js +3 -0
  54. package/dist/approval-gateway-resolver-BrmICL5N.js +58 -0
  55. package/dist/approval-gateway-runtime-iBiFwmNK.js +2 -0
  56. package/dist/approval-handler-runtime-6tNhCATs.js +439 -0
  57. package/dist/approval-handler-runtime-Y6qTvYdd.js +3 -0
  58. package/dist/approval-handler.runtime-BjSoNi2w.js +245 -0
  59. package/dist/approval-handler.runtime-CoHzXxnh.js +2 -0
  60. package/dist/approval-handler.runtime-DUXalSxo.js +389 -0
  61. package/dist/approval-handler.runtime-SNOyMr7X.js +130 -0
  62. package/dist/approval-handler.runtime-uqWDos3I.js +285 -0
  63. package/dist/approval-handler.runtime.js +1 -1
  64. package/dist/approval-native-ByQ5cAKu.js +156 -0
  65. package/dist/approval-native-IX9eLH7P.js +130 -0
  66. package/dist/approval-native-runtime-BvK9OIUS.js +709 -0
  67. package/dist/approval-runtime-DrDMdWm9.js +9 -0
  68. package/dist/attachment-normalize-4X-dPdgN.js +1013 -0
  69. package/dist/audit-C621VOev.js +99 -0
  70. package/dist/audit-Cgyz5k-s.js +2 -0
  71. package/dist/audit-I_keYen3.js +885 -0
  72. package/dist/audit.runtime-LrJ3wwQS.js +7 -0
  73. package/dist/audit.runtime.js +1 -1
  74. package/dist/auth-config-utils-T0ZgqKam.js +96 -0
  75. package/dist/binding-routing-dsu8Ei2E.js +50 -0
  76. package/dist/binding-targets-DLGZ_Ium.js +99 -0
  77. package/dist/bot-B_6rj4zN.js +5426 -0
  78. package/dist/bot-message-context.runtime-DkgJddS4.js +8 -0
  79. package/dist/bot-message-context.runtime.js +1 -1
  80. package/dist/bot-message-context.session.runtime-TObgOB7o.js +12 -0
  81. package/dist/bot-message-context.session.runtime.js +1 -1
  82. package/dist/bot-native-commands.delivery.runtime-BZtEbhIe.js +3 -0
  83. package/dist/bot-native-commands.delivery.runtime.js +1 -1
  84. package/dist/bot-native-commands.runtime-BMD61ysH.js +13 -0
  85. package/dist/bot-native-commands.runtime.js +1 -1
  86. package/dist/bridge-server-CS1RLfW4.js +102 -0
  87. package/dist/browser-cdp-CghSlauS.js +2 -0
  88. package/dist/browser-cdp-CvTVpSI6.js +2 -0
  89. package/dist/browser-control-auth-C9pUylzV.js +2 -0
  90. package/dist/browser-control-auth-nhU4A0DX.js +2 -0
  91. package/dist/browser-doctor-BOEftV4I.js +78 -0
  92. package/dist/browser-maintenance-DOcb80F5.js +3 -0
  93. package/dist/browser-node-runtime-BOCwie8T.js +490 -0
  94. package/dist/browser-profiles-BOvL9Nd_.js +2 -0
  95. package/dist/browser-profiles-D7h0J9IB.js +2 -0
  96. package/dist/browser-setup-tools-CeMAH5u9.js +321 -0
  97. package/dist/build-info.json +3 -3
  98. package/dist/bundled/boot-md/handler.js +2 -2
  99. package/dist/bundled/session-memory/handler.js +1 -1
  100. package/dist/call-BPuAN6uk.js +2 -0
  101. package/dist/call-Stm9npN1.js +527 -0
  102. package/dist/call.runtime-pNpOyCMV.js +2 -0
  103. package/dist/call.runtime.js +1 -1
  104. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  105. package/dist/capability-cli-DDNbz6qA.js +1350 -0
  106. package/dist/captured-registration-DiZNTE1j.js +1159 -0
  107. package/dist/channel-5cqa1fkB.js +482 -0
  108. package/dist/channel-B2BtCq9W.js +843 -0
  109. package/dist/channel-B3LQs2NY.js +1146 -0
  110. package/dist/channel-BpRwK42_.js +816 -0
  111. package/dist/channel-D37vkLja.js +226 -0
  112. package/dist/channel-DIhovOIw.js +864 -0
  113. package/dist/channel-DWq9G6kb.js +1109 -0
  114. package/dist/channel-Daae0E3T.js +532 -0
  115. package/dist/channel-DvleEuhM.js +991 -0
  116. package/dist/channel-actions-BdSOWgd_.js +233 -0
  117. package/dist/channel-actions.runtime-BqTVWPRH.js +2 -0
  118. package/dist/channel-actions.runtime.js +1 -1
  119. package/dist/channel-core-Cv3Q_BxL.js +2 -0
  120. package/dist/channel-iCTT2rJY.js +1168 -0
  121. package/dist/channel-inbound-2Azyl-Eq.js +31 -0
  122. package/dist/channel-plugin-runtime-C0B9dm1c.js +784 -0
  123. package/dist/channel-react-action-t-Q8EYHs.js +39 -0
  124. package/dist/channel-runtime-u_0nRFcO.js +427 -0
  125. package/dist/channel-tcRPznyK.js +368 -0
  126. package/dist/channel.runtime-B4njrVR-.js +87 -0
  127. package/dist/channel.runtime-B7f1kmTM.js +131 -0
  128. package/dist/channel.runtime-Bfpl66UH.js +348 -0
  129. package/dist/channel.runtime-C7QMwh86.js +399 -0
  130. package/dist/channel.runtime-Cc3a4FA5.js +2169 -0
  131. package/dist/channel.runtime-Cch8xmFc.js +35114 -0
  132. package/dist/channel.runtime-CfoT2NmX.js +109 -0
  133. package/dist/channel.runtime-DyKO7U-e.js +789 -0
  134. package/dist/channel.runtime-DydTNcYU.js +4 -0
  135. package/dist/channel.runtime-nu19ePyh.js +429 -0
  136. package/dist/channel.runtime.js +1 -1
  137. package/dist/channel.setup-CUbpzSW3.js +8 -0
  138. package/dist/channel.setup-D-X7BY4c.js +17 -0
  139. package/dist/channel.setup-VaEcA2Bw.js +274 -0
  140. package/dist/channel2.runtime-CLngBuRF.js +2067 -0
  141. package/dist/channel2.runtime.js +1 -1
  142. package/dist/channels-cli-BxujBciW.js +246 -0
  143. package/dist/channels-iGV5z9VU.js +1145 -0
  144. package/dist/clawbot-cli-Dq5qEzSA.js +9 -0
  145. package/dist/cli/daemon-cli.js +1 -1
  146. package/dist/cli-C32Tbry-.js +696 -0
  147. package/dist/cli-CEXN0k1o.js +79 -0
  148. package/dist/cli-CGKUU-db.js +64 -0
  149. package/dist/cli-Cx3rv1vo.js +2 -0
  150. package/dist/cli-metadata-D6pLr6rq.js +22 -0
  151. package/dist/cli-startup-metadata.json +1 -1
  152. package/dist/cli.runtime-CiBfmyfs.js +435 -0
  153. package/dist/cli.runtime-DEQio5Lw.js +913 -0
  154. package/dist/cli.runtime.js +1 -1
  155. package/dist/client-1JAVhCV6.js +5 -0
  156. package/dist/client-D1lDccJs.js +7 -0
  157. package/dist/client-Du86RGVU.js +19 -0
  158. package/dist/client-HlUQWLff.js +138 -0
  159. package/dist/client-bootstrap-ByVde6Fa.js +28 -0
  160. package/dist/client-bootstrap-C0Wk4TyE.js +103 -0
  161. package/dist/client-bootstrap-Dh4UZQOs.js +2 -0
  162. package/dist/client-fetch-DJ3v5Zqh.js +6329 -0
  163. package/dist/client-ymH-icZi.js +76 -0
  164. package/dist/command-auth-D_xf4gCH.js +82 -0
  165. package/dist/command-config-resolution-BAsIvTx0.js +23 -0
  166. package/dist/command-config-resolution-CpiepMpe.js +2 -0
  167. package/dist/command-registry-BIG4I3Tl.js +103 -0
  168. package/dist/command-registry-C4qTbytp.js +3 -0
  169. package/dist/command-secret-gateway-CENVpYli.js +528 -0
  170. package/dist/commands-acp-Cs1u2TMa.js +1016 -0
  171. package/dist/commands-compact.runtime-BU8kO8vM.js +9 -0
  172. package/dist/commands-compact.runtime.js +1 -1
  173. package/dist/commands-handlers.runtime-C2sVgHH3.js +3752 -0
  174. package/dist/commands-handlers.runtime.js +1 -1
  175. package/dist/commands-status-Cz9bvbev.js +220 -0
  176. package/dist/commands-status.runtime-B0oVKqlK.js +2 -0
  177. package/dist/commands-status.runtime.js +1 -1
  178. package/dist/commands-subagents-control.runtime-BayeBpt2.js +3 -0
  179. package/dist/commands-subagents-control.runtime-BrvZHkSL.js +2 -0
  180. package/dist/commands-subagents-control.runtime.js +1 -1
  181. package/dist/commands.runtime-CYPSZ2Po.js +103 -0
  182. package/dist/commands.runtime.js +1 -1
  183. package/dist/compact.runtime-q-dUs-qg.js +7 -0
  184. package/dist/compact.runtime.js +1 -1
  185. package/dist/completion-cli-C9KjcjmD.js +464 -0
  186. package/dist/completion-cli-h0Jz9_xh.js +2 -0
  187. package/dist/config-DH9LZzz-.js +555 -0
  188. package/dist/config-cli-CE2z2XhI.js +946 -0
  189. package/dist/configure-B1KcWWIQ.js +1157 -0
  190. package/dist/configure-BFpmOfcM.js +2 -0
  191. package/dist/connect-options-wUo0syAv.js +702 -0
  192. package/dist/connection-auth-DALCO1uk.js +30 -0
  193. package/dist/control-auth-CflplSYR.js +55 -0
  194. package/dist/conversation-binding-runtime-uoVX8Lm4.js +4 -0
  195. package/dist/conversation-runtime-WfUMmAAc.js +31 -0
  196. package/dist/core-BnLEfcOW.js +210 -0
  197. package/dist/core-api-5mOZyT2k.js +372 -0
  198. package/dist/create-client-B5apuysv.js +2 -0
  199. package/dist/create-client-FX-9Y0XK.js +61 -0
  200. package/dist/credentials-oSecax07.js +57 -0
  201. package/dist/credentials-write.runtime-BF3qpFqv.js +12 -0
  202. package/dist/credentials-write.runtime.js +1 -1
  203. package/dist/cron-cli-CquHRHP9.js +637 -0
  204. package/dist/crypto-runtime-BaeaJGjJ.js +3510 -0
  205. package/dist/daemon-cli-C2ygRiWD.js +408 -0
  206. package/dist/daemon-install-Ba_zQ3ks.js +63 -0
  207. package/dist/delegate-k0Mpo7Fv.js +59 -0
  208. package/dist/delivery-BWwkQRrF.js +858 -0
  209. package/dist/devices-cli-BtB_W8Zn.js +329 -0
  210. package/dist/direct-dm-BPup4rb6.js +139 -0
  211. package/dist/directive-handling.fast-lane-D8zsIDMg.js +64 -0
  212. package/dist/directive-handling.fast-lane-DA2YZPX0.js +2 -0
  213. package/dist/directive-handling.impl-D7beV5oV.js +659 -0
  214. package/dist/directive-handling.impl-DukNkNri.js +2 -0
  215. package/dist/directory-live-Bj4yafmF.js +105 -0
  216. package/dist/directory-live-D5tvc0Jj.js +2 -0
  217. package/dist/discovery-B5x1zcdW.js +280 -0
  218. package/dist/discovery-f3K2E-jQ.js +201 -0
  219. package/dist/dispatch-BTn7rXKb.js +970 -0
  220. package/dist/dispatch-acp-Dxchw6dz.js +969 -0
  221. package/dist/dispatch-acp-manager.runtime-v3DvTQTV.js +3 -0
  222. package/dist/dispatch-acp-manager.runtime.js +1 -1
  223. package/dist/dispatch-acp.runtime-BSHeNOOR.js +19 -0
  224. package/dist/dispatch-acp.runtime.js +1 -1
  225. package/dist/docker-harness-B8V4pktJ.js +277 -0
  226. package/dist/doctor-completion-BqOiWnS_.js +90 -0
  227. package/dist/entry.js +1 -1
  228. package/dist/env-auth-DXWyTD3f.js +2 -0
  229. package/dist/exec-approvals-DB9tWYQD.js +272 -0
  230. package/dist/exec-approvals-cli-BQ44KCYG.js +483 -0
  231. package/dist/exec-approvals-ymQFSV4S.js +129 -0
  232. package/dist/extensionAPI.js +1 -1
  233. package/dist/extensions/acpx/index.js +3 -3
  234. package/dist/extensions/acpx/register.runtime.js +1 -1
  235. package/dist/extensions/acpx/runtime-api.js +3 -3
  236. package/dist/extensions/amazon-bedrock/.squidclaw-runtime-deps-stamp.json +1 -1
  237. package/dist/extensions/amazon-bedrock/api.js +2 -2
  238. package/dist/extensions/amazon-bedrock/discovery.js +1 -1
  239. package/dist/extensions/amazon-bedrock/index.js +1 -1
  240. package/dist/extensions/amazon-bedrock/register.sync.runtime.js +1 -1
  241. package/dist/extensions/amazon-bedrock/setup-api.js +1 -1
  242. package/dist/extensions/amazon-bedrock-mantle/.squidclaw-runtime-deps-stamp.json +1 -1
  243. package/dist/extensions/amazon-bedrock-mantle/api.js +1 -1
  244. package/dist/extensions/amazon-bedrock-mantle/discovery.js +1 -1
  245. package/dist/extensions/amazon-bedrock-mantle/index.js +1 -1
  246. package/dist/extensions/amazon-bedrock-mantle/register.sync.runtime.js +1 -1
  247. package/dist/extensions/bluebubbles/api.js +6 -6
  248. package/dist/extensions/browser/browser-bridge.js +1 -1
  249. package/dist/extensions/browser/browser-cdp.js +2 -2
  250. package/dist/extensions/browser/browser-config.js +2 -2
  251. package/dist/extensions/browser/browser-control-auth.js +2 -2
  252. package/dist/extensions/browser/browser-doctor.js +1 -1
  253. package/dist/extensions/browser/browser-maintenance.js +3 -3
  254. package/dist/extensions/browser/browser-profiles.js +2 -2
  255. package/dist/extensions/browser/browser-runtime-api.js +6 -6
  256. package/dist/extensions/browser/index.js +1 -1
  257. package/dist/extensions/browser/plugin-registration.js +1 -1
  258. package/dist/extensions/browser/register.runtime.js +3 -3
  259. package/dist/extensions/browser/runtime-api.js +7 -7
  260. package/dist/extensions/browser/test-support.js +2 -2
  261. package/dist/extensions/device-pair/api.js +1 -1
  262. package/dist/extensions/device-pair/index.js +3 -3
  263. package/dist/extensions/device-pair/notify.js +1 -1
  264. package/dist/extensions/device-pair/pair-command-approve.js +1 -1
  265. package/dist/extensions/diffs/.squidclaw-runtime-deps-stamp.json +1 -1
  266. package/dist/extensions/discord/.squidclaw-runtime-deps-stamp.json +1 -1
  267. package/dist/extensions/discord/action-runtime-api.js +2 -2
  268. package/dist/extensions/discord/api.js +7 -7
  269. package/dist/extensions/discord/channel-plugin-api.js +1 -1
  270. package/dist/extensions/discord/contract-api.js +2 -2
  271. package/dist/extensions/discord/runtime-api.js +11 -11
  272. package/dist/extensions/discord/subagent-hooks-api.js +1 -1
  273. package/dist/extensions/discord/test-api.js +4 -4
  274. package/dist/extensions/feishu/.squidclaw-runtime-deps-stamp.json +1 -1
  275. package/dist/extensions/feishu/api.js +6 -6
  276. package/dist/extensions/feishu/contract-api.js +1 -1
  277. package/dist/extensions/feishu/runtime-api.js +1 -1
  278. package/dist/extensions/google/index.js +1 -1
  279. package/dist/extensions/google/music-generation-provider.js +1 -1
  280. package/dist/extensions/googlechat/api.js +1 -1
  281. package/dist/extensions/googlechat/runtime-api.js +1 -1
  282. package/dist/extensions/googlechat/test-api.js +2 -2
  283. package/dist/extensions/imessage/api.js +6 -6
  284. package/dist/extensions/imessage/runtime-api.js +3 -3
  285. package/dist/extensions/irc/api.js +2 -2
  286. package/dist/extensions/irc/channel-plugin-api.js +1 -1
  287. package/dist/extensions/line/api.js +7 -7
  288. package/dist/extensions/line/contract-api.js +1 -1
  289. package/dist/extensions/line/runtime-api.js +4 -4
  290. package/dist/extensions/line/setup-api.js +1 -1
  291. package/dist/extensions/llm-task/index.js +2 -2
  292. package/dist/extensions/lobster/runtime-api.js +1 -1
  293. package/dist/extensions/matrix/api.js +4 -4
  294. package/dist/extensions/matrix/channel-plugin-api.js +1 -1
  295. package/dist/extensions/matrix/cli-metadata.js +1 -1
  296. package/dist/extensions/matrix/contract-api.js +3 -3
  297. package/dist/extensions/matrix/index.js +1 -1
  298. package/dist/extensions/matrix/plugin-entry.handlers.runtime.js +3 -3
  299. package/dist/extensions/matrix/runtime-heavy-api.js +1 -1
  300. package/dist/extensions/matrix/test-api.js +1 -1
  301. package/dist/extensions/mattermost/api.js +1 -1
  302. package/dist/extensions/mattermost/channel-plugin-api.js +1 -1
  303. package/dist/extensions/mattermost/channel-plugin-runtime.js +1 -1
  304. package/dist/extensions/mattermost/policy-api.js +1 -1
  305. package/dist/extensions/mattermost/runtime-api.js +1 -1
  306. package/dist/extensions/memory-core/cli-metadata.js +2 -2
  307. package/dist/extensions/memory-core/index.js +1 -1
  308. package/dist/extensions/memory-lancedb/cli-metadata.js +1 -1
  309. package/dist/extensions/minimax/index.js +1 -1
  310. package/dist/extensions/minimax/music-generation-provider.js +1 -1
  311. package/dist/extensions/msteams/api.js +1 -1
  312. package/dist/extensions/msteams/runtime-api.js +3 -3
  313. package/dist/extensions/msteams/test-api.js +1 -1
  314. package/dist/extensions/nextcloud-talk/api.js +5 -5
  315. package/dist/extensions/nextcloud-talk/runtime-api.js +2 -2
  316. package/dist/extensions/nostr/api.js +5 -5
  317. package/dist/extensions/nostr/runtime-api.js +3 -3
  318. package/dist/extensions/nostr/setup-api.js +1 -1
  319. package/dist/extensions/nostr/test-api.js +1 -1
  320. package/dist/extensions/openshell/index.js +3 -3
  321. package/dist/extensions/qa-channel/api.js +3 -3
  322. package/dist/extensions/qa-channel/runtime-api.js +3 -3
  323. package/dist/extensions/qa-channel/setup-entry.js +3 -3
  324. package/dist/extensions/qa-lab/api.js +4 -4
  325. package/dist/extensions/qa-lab/index.js +2 -2
  326. package/dist/extensions/qa-lab/runtime-api.js +4 -4
  327. package/dist/extensions/qqbot/.squidclaw-runtime-deps-stamp.json +1 -1
  328. package/dist/extensions/qqbot/api.js +1 -1
  329. package/dist/extensions/signal/api.js +10 -10
  330. package/dist/extensions/signal/reaction-runtime-api.js +1 -1
  331. package/dist/extensions/signal/runtime-api.js +7 -7
  332. package/dist/extensions/slack/.squidclaw-runtime-deps-stamp.json +1 -1
  333. package/dist/extensions/slack/api.js +9 -9
  334. package/dist/extensions/slack/channel-plugin-api.js +1 -1
  335. package/dist/extensions/slack/contract-api.js +3 -3
  336. package/dist/extensions/slack/runtime-api.js +9 -9
  337. package/dist/extensions/slack/security-contract-api.js +1 -1
  338. package/dist/extensions/slack/setup-plugin-api.js +1 -1
  339. package/dist/extensions/slack/test-api.js +4 -4
  340. package/dist/extensions/speech-core/runtime-api.js +1 -1
  341. package/dist/extensions/synology-chat/api.js +2 -2
  342. package/dist/extensions/telegram/.squidclaw-runtime-deps-stamp.json +1 -1
  343. package/dist/extensions/telegram/api.js +11 -11
  344. package/dist/extensions/telegram/channel-plugin-api.js +2 -2
  345. package/dist/extensions/telegram/contract-api.js +4 -4
  346. package/dist/extensions/telegram/runtime-api.js +7 -7
  347. package/dist/extensions/telegram/setup-plugin-api.js +1 -1
  348. package/dist/extensions/telegram/test-api.js +2 -2
  349. package/dist/extensions/telegram/test-support.js +3 -3
  350. package/dist/extensions/tlon/api.js +3 -3
  351. package/dist/extensions/tlon/runtime-api.js +1 -1
  352. package/dist/extensions/tlon/test-api.js +1 -1
  353. package/dist/extensions/twitch/api.js +1 -1
  354. package/dist/extensions/webhooks/.squidclaw-runtime-deps-stamp.json +1 -1
  355. package/dist/extensions/webhooks/api.js +1 -1
  356. package/dist/extensions/webhooks/index.js +1 -1
  357. package/dist/extensions/whatsapp/action-runtime-api.js +1 -1
  358. package/dist/extensions/whatsapp/action-runtime.runtime.js +1 -1
  359. package/dist/extensions/whatsapp/api.js +4 -4
  360. package/dist/extensions/whatsapp/channel-plugin-api.js +1 -1
  361. package/dist/extensions/whatsapp/contract-api.js +1 -1
  362. package/dist/extensions/whatsapp/runtime-api.js +7 -7
  363. package/dist/extensions/whatsapp/setup-plugin-api.js +1 -1
  364. package/dist/extensions/whatsapp/test-api.js +4 -4
  365. package/dist/extensions/zalo/api.js +9 -9
  366. package/dist/extensions/zalo/runtime-api.js +2 -2
  367. package/dist/extensions/zalo/setup-api.js +2 -2
  368. package/dist/extensions/zalouser/api.js +1 -1
  369. package/dist/extensions/zalouser/runtime-api.js +4 -4
  370. package/dist/extensions/zalouser/test-api.js +1 -1
  371. package/dist/format-DsACiUPu.js +941 -0
  372. package/dist/gateway-c-WsPYj4.js +2652 -0
  373. package/dist/gateway-cli-Bnpc2Voo.js +1510 -0
  374. package/dist/gateway-install-token-DIOAhXuh.js +213 -0
  375. package/dist/gateway-rpc-DVaHylV3.js +14 -0
  376. package/dist/gateway-rpc.runtime-kXdx3hkp.js +23 -0
  377. package/dist/gateway-rpc.runtime.js +1 -1
  378. package/dist/gateway-runtime-BhcAFzRw.js +12 -0
  379. package/dist/get-reply-from-config.runtime-d4te9jQo.js +2 -0
  380. package/dist/get-reply-from-config.runtime.js +1 -1
  381. package/dist/graph-users-zs6xFUeS.js +926 -0
  382. package/dist/group-access-B4ZqqG4N.js +119 -0
  383. package/dist/handle-action-DeKTbWt6.js +505 -0
  384. package/dist/health-Dj59Wog_.js +2 -0
  385. package/dist/health-y_vsJR_i.js +578 -0
  386. package/dist/heartbeat-runner-DZxpXVmc.js +1060 -0
  387. package/dist/heartbeat-runner-Do5PsCsd.js +4 -0
  388. package/dist/heartbeat-runner.runtime-B9A8-a50.js +2 -0
  389. package/dist/heartbeat-runner.runtime.js +1 -1
  390. package/dist/http-client-DZ8yqOqh.js +322 -0
  391. package/dist/inbound-reply-dispatch-CgmaSukn.js +73 -0
  392. package/dist/index.js +2 -2
  393. package/dist/infra-runtime-CTXlws25.js +23 -0
  394. package/dist/inline-buttons-9XyokdjH.js +40 -0
  395. package/dist/known-users-DpbiKYbd.js +1180 -0
  396. package/dist/legacy-crypto-restore-C9_FfFfg.js +85 -0
  397. package/dist/library-BpcEZKWC.js +44 -0
  398. package/dist/llm-slug-generator-P7hR4Vjw.js +69 -0
  399. package/dist/llm-slug-generator.js +1 -1
  400. package/dist/login-Ck0Wi5lt.js +2574 -0
  401. package/dist/logs-cli-CXtWYpE2.js +264 -0
  402. package/dist/logs-cli.runtime-aJbUlXPP.js +2 -0
  403. package/dist/logs-cli.runtime.js +1 -1
  404. package/dist/manager-398fysIe.js +2048 -0
  405. package/dist/manager.runtime-BXi2JFi_.js +900 -0
  406. package/dist/manager.runtime.js +1 -1
  407. package/dist/markdown-to-line-BAz5cp2N.js +781 -0
  408. package/dist/matrix-migration.runtime-BJGNsR_f.js +2 -0
  409. package/dist/matrix-migration.runtime.js +1 -1
  410. package/dist/mcp-cli-Dak77dd9.js +747 -0
  411. package/dist/media-text-2gf65U8r.js +146 -0
  412. package/dist/memory-core-CvBuLWAT.js +7 -0
  413. package/dist/memory-core-host-runtime-cli-C6YZxF34.js +9 -0
  414. package/dist/message-DQn4jjjK.js +223 -0
  415. package/dist/message-action-runner-BXCwnHl-.js +1628 -0
  416. package/dist/message-action-runner-Bker0uL5.js +2 -0
  417. package/dist/message-actions-AsXQpb4E.js +143 -0
  418. package/dist/message-handler-CQ_vnfR8.js +1925 -0
  419. package/dist/message.gateway.runtime-CJiz4m8j.js +2 -0
  420. package/dist/message.gateway.runtime.js +1 -1
  421. package/dist/messages-BY_cfyDr.js +139 -0
  422. package/dist/method-scopes-D6zsS-pm.js +2803 -0
  423. package/dist/migration-snapshot.runtime-CuobftaY.js +3 -0
  424. package/dist/migration-snapshot.runtime.js +1 -1
  425. package/dist/models-CUbywYoT.js +3 -0
  426. package/dist/models-Mt05Glx7.js +2565 -0
  427. package/dist/models-cli-Diu9RWcd.js +197 -0
  428. package/dist/monitor-BVQ_6q4q.js +1344 -0
  429. package/dist/monitor-BgZqpzQ4.js +3653 -0
  430. package/dist/monitor-CRyZeOLA.js +5 -0
  431. package/dist/monitor-CTeJMQIS.js +1533 -0
  432. package/dist/monitor-Clsyl6I5.js +1221 -0
  433. package/dist/monitor-DWmNxlg8.js +2 -0
  434. package/dist/monitor-Dl93TMoP.js +524 -0
  435. package/dist/monitor-DulT_zS7.js +673 -0
  436. package/dist/monitor-DxfN501k.js +288 -0
  437. package/dist/monitor-auth-BylfDCgP.js +2470 -0
  438. package/dist/monitor-normalize-8NtJ86WB.js +1018 -0
  439. package/dist/monitor-polling.runtime-bSalr8n9.js +309 -0
  440. package/dist/monitor-polling.runtime.js +1 -1
  441. package/dist/monitor-tQtfAk9w.js +4027 -0
  442. package/dist/monitor-webhook.runtime-1zpAZts3.js +298 -0
  443. package/dist/monitor-webhook.runtime.js +1 -1
  444. package/dist/monitor-wo_dDmjy.js +4 -0
  445. package/dist/monitor.runtime-BuadcqNG.js +2 -0
  446. package/dist/monitor.runtime.js +1 -1
  447. package/dist/monitor.webhook-DWunSb4d.js +152 -0
  448. package/dist/msteams-YxwMN3QQ.js +35 -0
  449. package/dist/music-generation-provider-DPY-Y9pn.js +141 -0
  450. package/dist/music-generation-provider-c5eFh-q4.js +169 -0
  451. package/dist/nextcloud-talk-YBKgqApH.js +17 -0
  452. package/dist/node-cli-BzVdkCht.js +2361 -0
  453. package/dist/nodes-cli-WBuANN5j.js +1046 -0
  454. package/dist/nostr-BSBIORO6.js +20 -0
  455. package/dist/notify-Ca3IwAyy.js +301 -0
  456. package/dist/onboard-CmEE959C.js +620 -0
  457. package/dist/onboard-helpers-J7K9QCXJ.js +210 -0
  458. package/dist/onboard-helpers-c55t1Rta.js +5 -0
  459. package/dist/onboard-remote-BI9k0tWz.js +2 -0
  460. package/dist/onboard-remote-zMTzPAhZ.js +193 -0
  461. package/dist/onboard-skills-BahZW5qf.js +134 -0
  462. package/dist/onboard-skills-C0jpNuK6.js +2 -0
  463. package/dist/operator-approvals-client-BqmunuEw.js +68 -0
  464. package/dist/outbound-adapter-CL3PYt0S.js +186 -0
  465. package/dist/outbound-adapter-Dj9zOahO.js +195 -0
  466. package/dist/outbound-send-deps-Ch1FX3cp.js +179 -0
  467. package/dist/outbound.runtime-CLByNIkJ.js +2 -0
  468. package/dist/outbound.runtime.js +1 -1
  469. package/dist/pair-command-approve-cbRWZncm.js +34 -0
  470. package/dist/persistent-bindings.lifecycle-hzcUlmjI.js +94 -0
  471. package/dist/pi-embedded-1KYWU12i.js +4 -0
  472. package/dist/pi-embedded-CmMqks-z.js +34664 -0
  473. package/dist/pi-embedded.runtime-C_FpZUhj.js +4 -0
  474. package/dist/pi-embedded.runtime.js +1 -1
  475. package/dist/plugin-registration-BhKSTk3H.js +23 -0
  476. package/dist/plugin-sdk/.boundary-entry-shims.stamp +1 -1
  477. package/dist/plugin-sdk/acp-binding-runtime.js +2 -2
  478. package/dist/plugin-sdk/acp-runtime.js +2 -2
  479. package/dist/plugin-sdk/agent-runtime.js +2 -2
  480. package/dist/plugin-sdk/approval-gateway-runtime.js +2 -2
  481. package/dist/plugin-sdk/approval-handler-runtime.js +3 -3
  482. package/dist/plugin-sdk/approval-runtime.js +2 -2
  483. package/dist/plugin-sdk/browser-cdp.js +2 -2
  484. package/dist/plugin-sdk/browser-config.js +5 -5
  485. package/dist/plugin-sdk/browser-control-auth.js +2 -2
  486. package/dist/plugin-sdk/browser-node-runtime.js +3 -3
  487. package/dist/plugin-sdk/browser-profiles.js +2 -2
  488. package/dist/plugin-sdk/browser-setup-tools.js +1 -1
  489. package/dist/plugin-sdk/browser-support.js +4 -4
  490. package/dist/plugin-sdk/channel-core.js +2 -2
  491. package/dist/plugin-sdk/channel-inbound.js +2 -2
  492. package/dist/plugin-sdk/command-auth.js +3 -3
  493. package/dist/plugin-sdk/compat.js +1 -1
  494. package/dist/plugin-sdk/conversation-binding-runtime.js +2 -2
  495. package/dist/plugin-sdk/conversation-runtime.js +3 -3
  496. package/dist/plugin-sdk/core.js +3 -3
  497. package/dist/plugin-sdk/direct-dm.js +1 -1
  498. package/dist/plugin-sdk/gateway-runtime.js +3 -3
  499. package/dist/plugin-sdk/inbound-reply-dispatch.js +1 -1
  500. package/dist/plugin-sdk/index.js +1 -1
  501. package/dist/plugin-sdk/infra-runtime.js +2 -2
  502. package/dist/plugin-sdk/irc.js +2 -2
  503. package/dist/plugin-sdk/matrix.js +1 -1
  504. package/dist/plugin-sdk/memory-core-host-runtime-cli.js +2 -2
  505. package/dist/plugin-sdk/memory-core.js +2 -2
  506. package/dist/plugin-sdk/msteams.js +2 -2
  507. package/dist/plugin-sdk/nextcloud-talk.js +2 -2
  508. package/dist/plugin-sdk/nostr.js +2 -2
  509. package/dist/plugin-sdk/qa-channel.js +3 -3
  510. package/dist/plugin-sdk/reply-dispatch-runtime.js +2 -2
  511. package/dist/plugin-sdk/reply-runtime.js +4 -4
  512. package/dist/plugin-sdk/runtime-secret-resolution.js +1 -1
  513. package/dist/plugin-sdk/runtime.js +2 -2
  514. package/dist/plugin-sdk/sandbox.js +2 -2
  515. package/dist/plugin-sdk/src/agents/tools/call-specialist-tool.d.ts +1 -1
  516. package/dist/plugin-sdk/testing.js +6 -6
  517. package/dist/plugin-sdk/tlon.js +1 -1
  518. package/dist/plugin-sdk/zalo.js +1 -1
  519. package/dist/plugin-sdk/zalouser.js +1 -1
  520. package/dist/plugin-service-I5xNfnqu.js +2479 -0
  521. package/dist/plugins/runtime/index.js +1 -1
  522. package/dist/policy-BcKwMOuf.js +296 -0
  523. package/dist/prepare-1JYgpHMp.js +1311 -0
  524. package/dist/preview-streaming-Dgo51jwq.js +156 -0
  525. package/dist/probe-BJkY768e.js +45 -0
  526. package/dist/probe-BO-QxpgT.js +54 -0
  527. package/dist/probe-CDUK6e0p.js +467 -0
  528. package/dist/probe-CGYSSS6w.js +2 -0
  529. package/dist/probe-C_HVcqqJ.js +1951 -0
  530. package/dist/probe-Dcxae8tq.js +42 -0
  531. package/dist/probe-KUxarUv8.js +2 -0
  532. package/dist/probe-auth-CIcA1us7.js +69 -0
  533. package/dist/probe-auth-DA5iwmzB.js +3 -0
  534. package/dist/probe-bLlnDSfP.js +473 -0
  535. package/dist/probe-d-N_Ew21.js +2 -0
  536. package/dist/probe-hzrJP3l0.js +178 -0
  537. package/dist/probe.runtime-Ba11Eg_b.js +3 -0
  538. package/dist/profile-update-PKvx6HDA.js +67 -0
  539. package/dist/program-B2XUGWf0.js +112 -0
  540. package/dist/prompt-select-styled-BiuIxyVy.js +5126 -0
  541. package/dist/provider-BwOrYaSK.js +6962 -0
  542. package/dist/provider-C7ICmZkE.js +3454 -0
  543. package/dist/provider-dispatcher-DPiA3qdi.js +22 -0
  544. package/dist/provider-session.runtime-PrTPFKkk.js +9 -0
  545. package/dist/provider-session.runtime.js +1 -1
  546. package/dist/provider.runtime-DHJ3gJ4H.js +2 -0
  547. package/dist/provider.runtime.js +1 -1
  548. package/dist/pw-ai-DbNjlJd_.js +2103 -0
  549. package/dist/qa-channel-DPwx33i_.js +2 -0
  550. package/dist/qa-cli-BPK0pssJ.js +8 -0
  551. package/dist/qr-cli-BQZT1W61.js +2 -0
  552. package/dist/qr-cli-zZCvfEGI.js +358 -0
  553. package/dist/reaction-level-BKvUgCPf.js +18 -0
  554. package/dist/reaction-runtime-api-FFve0ASq.js +117 -0
  555. package/dist/reactions-CP7nQ59C.js +1037 -0
  556. package/dist/register.agent-B1iIgZcF.js +240 -0
  557. package/dist/register.configure-CU848AKJ.js +15 -0
  558. package/dist/register.maintenance-0ixk7nTW.js +437 -0
  559. package/dist/register.message-DTWlTzQc.js +646 -0
  560. package/dist/register.onboard-XoYrJne_.js +79 -0
  561. package/dist/register.runtime-C23P0yPV.js +4738 -0
  562. package/dist/register.runtime-Dvg8kppp.js +80 -0
  563. package/dist/register.setup-B0qqtOdc.js +103 -0
  564. package/dist/register.status-health-sessions-DQg4wT9r.js +1209 -0
  565. package/dist/register.subclis-C_eAf5_9.js +232 -0
  566. package/dist/register.subclis-DIE44wj9.js +3 -0
  567. package/dist/register.sync.runtime-CEwGao3L.js +30 -0
  568. package/dist/register.sync.runtime-EcmEVX3D.js +111 -0
  569. package/dist/register.sync.runtime.js +1 -1
  570. package/dist/replies-Bu1-QtzN.js +120 -0
  571. package/dist/reply-CUrPTPsP.js +3408 -0
  572. package/dist/reply-dispatch-runtime-GsI0pwoH.js +3 -0
  573. package/dist/reply-resolver.runtime-Bqa-hTWi.js +3 -0
  574. package/dist/reply-resolver.runtime.js +1 -1
  575. package/dist/reply-runtime-BIkS_Pjw.js +63 -0
  576. package/dist/reply.runtime-C_R0Cuqw.js +2 -0
  577. package/dist/reply.runtime.js +1 -1
  578. package/dist/resolve-channels-BLJSQFnE.js +80 -0
  579. package/dist/resolve-channels-DUug40p5.js +2 -0
  580. package/dist/resolve-targets-CnEbbF0_.js +280 -0
  581. package/dist/resolve-users-CdLN23M6.js +112 -0
  582. package/dist/resolve-users-CqmyP2em.js +2 -0
  583. package/dist/restart-health-BZLsoj5O.js +2 -0
  584. package/dist/restart-health-CyklphHq.js +202 -0
  585. package/dist/route-resolution-D2WXBq57.js +519 -0
  586. package/dist/rpc-_BscaFSu.js +61 -0
  587. package/dist/rpc.runtime-Bx-cycaL.js +21 -0
  588. package/dist/rpc.runtime.js +1 -1
  589. package/dist/run-main-C5SoyJvl.js +452 -0
  590. package/dist/run-wait-BS5Cx7Uv.js +118 -0
  591. package/dist/runtime-B34RI1S7.js +969 -0
  592. package/dist/runtime-BvSPxHWR.js +1030 -0
  593. package/dist/runtime-DWeb-vX-.js +9 -0
  594. package/dist/runtime-api-9QAFrMbQ.js +3 -0
  595. package/dist/runtime-api-BLCDEML4.js +2 -0
  596. package/dist/runtime-api-BLwLTGfK.js +21 -0
  597. package/dist/runtime-api-BR1M4pnK.js +2 -0
  598. package/dist/runtime-api-BUroT61_.js +45 -0
  599. package/dist/runtime-api-CNUiDwYz.js +3 -0
  600. package/dist/runtime-api-CVt6wzTc.js +6 -0
  601. package/dist/runtime-api-C_SJ7wfw.js +10 -0
  602. package/dist/runtime-api-DQzjRmqt.js +12 -0
  603. package/dist/runtime-api-DqR_YumR.js +17 -0
  604. package/dist/runtime-api-ZGDNVbl2.js +6 -0
  605. package/dist/runtime-api-zz8pnymC.js +26 -0
  606. package/dist/runtime-embedded-pi.runtime-TFyAgOC8.js +2 -0
  607. package/dist/runtime-embedded-pi.runtime.js +1 -1
  608. package/dist/runtime-heavy-api-Ba7JNDB8.js +565 -0
  609. package/dist/runtime-internal-DHjVpw4B.js +2 -0
  610. package/dist/runtime-plugins-Ry7x-Mvk.js +69 -0
  611. package/dist/sandbox-BNFwXFuy.js +2587 -0
  612. package/dist/sandbox-Cpt-E1ww.js +4 -0
  613. package/dist/sandbox-cli-Dmg_0MaO.js +445 -0
  614. package/dist/sdk-13NUewAy.js +1124 -0
  615. package/dist/secrets-cli-DQ7xca44.js +2098 -0
  616. package/dist/security-audit-Bn7XX3Su.js +51 -0
  617. package/dist/security-audit-C9BfFv2C.js +108 -0
  618. package/dist/security-audit-CSzyrJSa.js +120 -0
  619. package/dist/security-audit.runtime-PgDhyLjV.js +2 -0
  620. package/dist/security-audit.runtime.js +1 -1
  621. package/dist/security-cli-CP-6Fnhs.js +485 -0
  622. package/dist/send-BXh-TZ84.js +2 -0
  623. package/dist/send-BvPjvO2s.js +1262 -0
  624. package/dist/send-C9vW8YXC.js +2 -0
  625. package/dist/send-CEQIm1mt.js +102 -0
  626. package/dist/send-CpSbfcsb.js +332 -0
  627. package/dist/send-D1Q3UX5Y.js +981 -0
  628. package/dist/send-DDGOGQol.js +389 -0
  629. package/dist/send-Die5cv7L.js +3043 -0
  630. package/dist/send-DnM5edIc.js +3 -0
  631. package/dist/send-F1JhwouX.js +416 -0
  632. package/dist/send.components-DkCGcwf8.js +303 -0
  633. package/dist/send.runtime-B1QyPCQz.js +2 -0
  634. package/dist/send.runtime-ChCiy_ft.js +3 -0
  635. package/dist/send.runtime-Dzgewg8A.js +2 -0
  636. package/dist/send.runtime.js +1 -1
  637. package/dist/send.shared-BH6_OGkl.js +1101 -0
  638. package/dist/sent-thread-cache-CYKgiC-N.js +23 -0
  639. package/dist/server-BE1J4IRF.js +13 -0
  640. package/dist/server-DYEi-Vdc.js +68 -0
  641. package/dist/server-middleware-TYuXgmVe.js +110 -0
  642. package/dist/server-node-events-DefHBCpw.js +449 -0
  643. package/dist/server.impl-Dgq1DI9c.js +30112 -0
  644. package/dist/session-reset-service-DXN9ywpB.js +450 -0
  645. package/dist/session-route-Crn_ogyn.js +156 -0
  646. package/dist/session-store-metadata-BQw3zv_y.js +288 -0
  647. package/dist/session-subagent-reactivation.runtime-DrHo4F4Q.js +2 -0
  648. package/dist/session-subagent-reactivation.runtime.js +1 -1
  649. package/dist/session-tab-registry-B3lsDHHR.js +212 -0
  650. package/dist/sessions.runtime-B0gndd8L.js +2 -0
  651. package/dist/sessions.runtime.js +1 -1
  652. package/dist/setup-api-D2RTa9D-.js +30 -0
  653. package/dist/setup-bootstrap-B4QCZnKl.js +55 -0
  654. package/dist/setup-contract-B3vGY4y-.js +126 -0
  655. package/dist/setup-core-BsBfG93o.js +108 -0
  656. package/dist/setup-core-d8vbI_XJ.js +233 -0
  657. package/dist/setup-f5XZWfKL.js +434 -0
  658. package/dist/setup-surface-BNTSscOJ.js +279 -0
  659. package/dist/setup-surface-BVkx2UYk.js +723 -0
  660. package/dist/setup-surface-Baom1I4y.js +8861 -0
  661. package/dist/setup-surface-CSjeONXo.js +286 -0
  662. package/dist/setup-surface-vf0_-Tdf.js +643 -0
  663. package/dist/setup.finalize-Ye6qhiW9.js +445 -0
  664. package/dist/setup.gateway-config-C7d6a9WA.js +246 -0
  665. package/dist/shared-BKrh9WKJ.js +2 -0
  666. package/dist/shared-Bj8gSTB2.js +180 -0
  667. package/dist/shared-CRwVn0c-.js +252 -0
  668. package/dist/shared-CmQjyXal.js +224 -0
  669. package/dist/shared-DNiJ0u0-.js +766 -0
  670. package/dist/slash-commands.runtime-CqKhtjeF.js +20 -0
  671. package/dist/slash-commands.runtime.js +1 -1
  672. package/dist/slash-dispatch.runtime-DF3wRtha.js +38 -0
  673. package/dist/slash-dispatch.runtime.js +1 -1
  674. package/dist/slash-skill-commands.runtime-C4OqPfgl.js +8 -0
  675. package/dist/slash-skill-commands.runtime.js +1 -1
  676. package/dist/squidclaw-tools.runtime-BqDAGn7F.js +2 -0
  677. package/dist/squidclaw-tools.runtime.js +1 -1
  678. package/dist/src-02qjl7sX.js +2841 -0
  679. package/dist/stage-sandbox-media.runtime-CfMI-qzp.js +231 -0
  680. package/dist/stage-sandbox-media.runtime.js +1 -1
  681. package/dist/startup-verification-DzypxaGj.js +132 -0
  682. package/dist/status-B1QTfIMN.js +607 -0
  683. package/dist/status-B2P6AJxa.js +391 -0
  684. package/dist/status-BramWBLG.js +3 -0
  685. package/dist/status-DhbYtDYM.js +478 -0
  686. package/dist/status-DlBtVbSH.js +2 -0
  687. package/dist/status-all-cwFWvn6A.js +484 -0
  688. package/dist/status-json-CWhbU4Da.js +14 -0
  689. package/dist/status-json-command-CnFFQEwq.js +84 -0
  690. package/dist/status-runtime-shared-D7doYBdy.js +254 -0
  691. package/dist/status.command.text-runtime-CPoFJehc.js +15 -0
  692. package/dist/status.gateway-connection.runtime-GvW1CWN9.js +2 -0
  693. package/dist/status.gateway-connection.runtime.js +1 -1
  694. package/dist/status.gateway-probe-CJiq01Bs.js +16 -0
  695. package/dist/status.scan-1B-9cN63.js +62 -0
  696. package/dist/status.scan-overview-CSJqbcYh.js +395 -0
  697. package/dist/status.scan.fast-json-Bmzyemxt.js +128 -0
  698. package/dist/status.scan.fast-json-D5F9b4ah.js +2 -0
  699. package/dist/status.summary-BYy9qTUS.js +2 -0
  700. package/dist/status.summary-CkEEti0D.js +209 -0
  701. package/dist/sticker-cache-D5r87ZZa.js +184 -0
  702. package/dist/sticker-vision.runtime-DyLJForL.js +16 -0
  703. package/dist/sticker-vision.runtime.js +1 -1
  704. package/dist/storage-CkTymBr-.js +281 -0
  705. package/dist/subagent-announce.registry.runtime-CcnTQckj.js +3 -0
  706. package/dist/subagent-announce.registry.runtime.js +1 -1
  707. package/dist/subagent-followup.runtime-CYde8MYt.js +68 -0
  708. package/dist/subagent-followup.runtime.js +1 -1
  709. package/dist/subagent-hooks-BvK9Cxa6.js +101 -0
  710. package/dist/subagent-list-CpIcW76w.js +167 -0
  711. package/dist/subagent-orphan-recovery-Ct3UM-Bu.js +213 -0
  712. package/dist/subagent-registry-runtime-BoYdq2qL.js +2 -0
  713. package/dist/subagent-registry.runtime-BsPu6xbI.js +3 -0
  714. package/dist/subagent-registry.runtime.js +1 -1
  715. package/dist/subagents-format-BCzskH-u.js +715 -0
  716. package/dist/suite-BmAd-9R0.js +3665 -0
  717. package/dist/suite-DTBteqgI.js +2 -0
  718. package/dist/suite-launch.runtime-D7xJStpn.js +7 -0
  719. package/dist/suite-launch.runtime.js +1 -1
  720. package/dist/system-cli-BcZJNwur.js +59 -0
  721. package/dist/targets-1f9UDi71.js +594 -0
  722. package/dist/targets-BnXEPthE.js +2 -0
  723. package/dist/task-executor-BCxe9JMQ.js +350 -0
  724. package/dist/task-owner-access-BPEsf8od.js +48 -0
  725. package/dist/task-registry-B7FuDS8O.js +2343 -0
  726. package/dist/task-registry-control.runtime-DWqkdq8U.js +3 -0
  727. package/dist/task-registry-control.runtime.js +1 -1
  728. package/dist/task-registry-delivery-runtime-BR8dIB3B.js +3 -0
  729. package/dist/task-registry-delivery-runtime-Bupw3MKP.js +2 -0
  730. package/dist/task-registry.audit-DJg4rOz-.js +420 -0
  731. package/dist/task-registry.maintenance-BroUbQMq.js +2 -0
  732. package/dist/telegram/token.js +1 -1
  733. package/dist/testing-C5-NbjQn.js +637 -0
  734. package/dist/text-report-DwVqspbf.js +587 -0
  735. package/dist/thread-bindings-BVpVTovQ.js +231 -0
  736. package/dist/thread-bindings-CIE_SmMk.js +541 -0
  737. package/dist/thread-bindings-CvgiP7Qb.js +350 -0
  738. package/dist/thread-bindings-Dbs1VNcN.js +223 -0
  739. package/dist/thread-bindings.discord-api-Bnm8k-CQ.js +167 -0
  740. package/dist/thread-bindings.manager-BYftBIxl.js +516 -0
  741. package/dist/thread-bindings.manager-DFHmeFVn.js +2 -0
  742. package/dist/token-B3Uvlep3.js +82 -0
  743. package/dist/tool-actions.runtime-3E6YoP_B.js +534 -0
  744. package/dist/tool-actions.runtime.js +1 -1
  745. package/dist/tools-effective-inventory-DvzzKkKx.js +151 -0
  746. package/dist/tui-cli-CljnRWf3.js +31 -0
  747. package/dist/tui-vfBwCsDi.js +3941 -0
  748. package/dist/ui-5bl9Zasq.js +266 -0
  749. package/dist/update-cli-D0rCj2kZ.js +1484 -0
  750. package/dist/verification-2ekYWAlm.js +2 -0
  751. package/dist/verification-CC00TdzU.js +133 -0
  752. package/dist/webhook-shared-BPFuLVWz.js +49 -0
  753. package/package.json +1 -1
  754. package/dist/abort-B3i9M6G2.js +0 -201
  755. package/dist/abort.runtime-D54SXGb5.js +0 -2
  756. package/dist/access-control--iowLlYm.js +0 -146
  757. package/dist/accounts-B5bzTBVz.js +0 -107
  758. package/dist/accounts-ByeS_9aO.js +0 -104
  759. package/dist/accounts-D6vf619D.js +0 -133
  760. package/dist/accounts-Dk1FIo4_.js +0 -2
  761. package/dist/acp-binding-runtime-ocpCU2-v.js +0 -2
  762. package/dist/acp-cli-CNDP895U.js +0 -2194
  763. package/dist/acp-runtime-nbTE1Phc.js +0 -68
  764. package/dist/acp-stateful-target-driver-ChyAnNgf.js +0 -87
  765. package/dist/action-agents-Ch0mefPf.js +0 -67
  766. package/dist/action-focus-D-nzXF6o.js +0 -123
  767. package/dist/action-help-NAv-aU0d.js +0 -7
  768. package/dist/action-info-DcMI2-ZK.js +0 -58
  769. package/dist/action-kill-CXqD-B-0.js +0 -33
  770. package/dist/action-list-8jjdDY7d.js +0 -21
  771. package/dist/action-log-6odO06BB.js +0 -30
  772. package/dist/action-runtime-CVPm9XLV.js +0 -419
  773. package/dist/action-runtime-CxCmBEj5.js +0 -323
  774. package/dist/action-runtime-DekcFW0U.js +0 -72
  775. package/dist/action-runtime-api-cNh_VnnH.js +0 -2
  776. package/dist/action-runtime.runtime-BbRzrDjs.js +0 -2
  777. package/dist/action-send-DPyRTIFq.js +0 -39
  778. package/dist/action-spawn-DpvYcWJG.js +0 -46
  779. package/dist/action-unfocus-8FI6_QIi.js +0 -28
  780. package/dist/actions-OPb_3bRj.js +0 -539
  781. package/dist/actions.runtime-B3rsBUOP.js +0 -5
  782. package/dist/actions.runtime-CqRkzF2D.js +0 -2
  783. package/dist/actions.runtime-Ty9XPJXe.js +0 -18
  784. package/dist/agent-CiRrkRMO.js +0 -2
  785. package/dist/agent-command-B0QbYo8l.js +0 -1453
  786. package/dist/agent-components.runtime-BX1TJP_W.js +0 -10
  787. package/dist/agent-runner.runtime-Bwgzwf26.js +0 -2712
  788. package/dist/agent-runtime-CfjWN412.js +0 -17
  789. package/dist/agents-CXAAVAaD.js +0 -887
  790. package/dist/agents-SPpD0hO8.js +0 -5
  791. package/dist/api-6NCDe82B.js +0 -5
  792. package/dist/api-BFXKRqtv.js +0 -2
  793. package/dist/api-BPRu6VRr.js +0 -19032
  794. package/dist/api-BkY4N1oM.js +0 -2
  795. package/dist/api-Cq8p6nS6.js +0 -5
  796. package/dist/api-D929nvtw.js +0 -2
  797. package/dist/api-DUI7UM1U.js +0 -7
  798. package/dist/api-DXIejtfT.js +0 -1085
  799. package/dist/api-Mz7fQ97u.js +0 -7524
  800. package/dist/api-pamd3sK4.js +0 -3
  801. package/dist/approval-gateway-resolver-C0T-euYc.js +0 -58
  802. package/dist/approval-gateway-runtime-Dr8hhHsY.js +0 -2
  803. package/dist/approval-handler-runtime-C1vIqhJB.js +0 -3
  804. package/dist/approval-handler-runtime-CQ1rmZw4.js +0 -439
  805. package/dist/approval-handler.runtime-BPTqowDG.js +0 -389
  806. package/dist/approval-handler.runtime-CJIOu270.js +0 -130
  807. package/dist/approval-handler.runtime-Ch4_Sc9Y.js +0 -245
  808. package/dist/approval-handler.runtime-DnXfPApY.js +0 -285
  809. package/dist/approval-handler.runtime-Dy7znaXN.js +0 -2
  810. package/dist/approval-native-D2UI8gkx.js +0 -130
  811. package/dist/approval-native-DXmloUbF.js +0 -156
  812. package/dist/approval-native-runtime-CqdGNulh.js +0 -709
  813. package/dist/approval-runtime-Dk2t8Zy3.js +0 -9
  814. package/dist/attachment-normalize-B2YxnMGv.js +0 -1013
  815. package/dist/audit-BERwKM6w.js +0 -885
  816. package/dist/audit-BFF7MsuO.js +0 -99
  817. package/dist/audit-frAokQ0A.js +0 -2
  818. package/dist/audit.runtime-Bj5X419-.js +0 -7
  819. package/dist/auth-config-utils-BaAnjhyv.js +0 -96
  820. package/dist/binding-routing-BpsF-3xv.js +0 -50
  821. package/dist/binding-targets-Bmj3UJ5-.js +0 -99
  822. package/dist/bot-Cx-u_7Uj.js +0 -5426
  823. package/dist/bot-message-context.runtime-B4zpnEwn.js +0 -8
  824. package/dist/bot-message-context.session.runtime-B1gAkdOu.js +0 -12
  825. package/dist/bot-native-commands.delivery.runtime-C6xxBBDf.js +0 -3
  826. package/dist/bot-native-commands.runtime-Dbsr3sHh.js +0 -13
  827. package/dist/bridge-server-DSGO4m1H.js +0 -102
  828. package/dist/browser-cdp-BEAWexuM.js +0 -2
  829. package/dist/browser-cdp-DiIu37Gt.js +0 -2
  830. package/dist/browser-control-auth-DTOsrJDu.js +0 -2
  831. package/dist/browser-control-auth-DyC4zA7A.js +0 -2
  832. package/dist/browser-doctor-uvADu96v.js +0 -78
  833. package/dist/browser-maintenance-C2Dl-Ve7.js +0 -3
  834. package/dist/browser-node-runtime-DDBOJvNL.js +0 -490
  835. package/dist/browser-profiles-CoDIqHLH.js +0 -2
  836. package/dist/browser-profiles-D7aj7859.js +0 -2
  837. package/dist/browser-setup-tools-BkzM2E6C.js +0 -321
  838. package/dist/call-BmlVEj-k.js +0 -2
  839. package/dist/call-DimnmSfr.js +0 -527
  840. package/dist/call.runtime-oDicDLP9.js +0 -2
  841. package/dist/capability-cli-DJ2Awg2a.js +0 -1350
  842. package/dist/captured-registration-CRRuKs3Z.js +0 -1159
  843. package/dist/channel-B2trs5PT.js +0 -816
  844. package/dist/channel-BCn_Tbdt.js +0 -226
  845. package/dist/channel-BdkYjZav.js +0 -1109
  846. package/dist/channel-C4Uws9p9.js +0 -482
  847. package/dist/channel-C5ZzsbiQ.js +0 -1168
  848. package/dist/channel-CIYg-jK3.js +0 -864
  849. package/dist/channel-CXg-f8BW.js +0 -843
  850. package/dist/channel-Cbq6TTk_.js +0 -368
  851. package/dist/channel-DAhzdj9q.js +0 -532
  852. package/dist/channel-DXBsiIY7.js +0 -1146
  853. package/dist/channel-Dzxv0EXV.js +0 -991
  854. package/dist/channel-actions-ipmwXB0Y.js +0 -233
  855. package/dist/channel-actions.runtime-CDchfnd5.js +0 -2
  856. package/dist/channel-core-BVwVtumb.js +0 -2
  857. package/dist/channel-inbound-Bm88Z7_C.js +0 -31
  858. package/dist/channel-plugin-runtime-BVG5lRuf.js +0 -784
  859. package/dist/channel-react-action-BObDobMB.js +0 -39
  860. package/dist/channel-runtime-CTRgWvAH.js +0 -427
  861. package/dist/channel.runtime-B7v5wHk8.js +0 -131
  862. package/dist/channel.runtime-BszJe_s4.js +0 -2169
  863. package/dist/channel.runtime-CX4_ZCmS.js +0 -429
  864. package/dist/channel.runtime-CdML78ul.js +0 -109
  865. package/dist/channel.runtime-CqwrGm86.js +0 -35114
  866. package/dist/channel.runtime-DP0cjvi3.js +0 -87
  867. package/dist/channel.runtime-DdnmmpEk.js +0 -4
  868. package/dist/channel.runtime-ci1kZJFE.js +0 -399
  869. package/dist/channel.runtime-l_tSS4gp.js +0 -789
  870. package/dist/channel.runtime-mzNwkaVb.js +0 -348
  871. package/dist/channel.setup-B9xAr9fC.js +0 -17
  872. package/dist/channel.setup-BBet-KMT.js +0 -8
  873. package/dist/channel.setup-BZ1mLMx2.js +0 -274
  874. package/dist/channel2.runtime-BsiqUwwM.js +0 -2067
  875. package/dist/channels-DfPjiGw0.js +0 -1145
  876. package/dist/channels-cli-Dv-7LMMV.js +0 -246
  877. package/dist/clawbot-cli-nasr9K6D.js +0 -9
  878. package/dist/cli-BRM7KkAR.js +0 -64
  879. package/dist/cli-CCR3hjJo.js +0 -2
  880. package/dist/cli-DU1kVljA.js +0 -79
  881. package/dist/cli-HYScxqD1.js +0 -696
  882. package/dist/cli-metadata-Lj0vONDU.js +0 -22
  883. package/dist/cli.runtime-1fLltFdi.js +0 -913
  884. package/dist/cli.runtime-CZUqiD5g.js +0 -435
  885. package/dist/client-BUVaKIpJ.js +0 -5
  886. package/dist/client-BVTwwUML.js +0 -19
  887. package/dist/client-BjWLc7Y-.js +0 -76
  888. package/dist/client-_QKDAQDu.js +0 -138
  889. package/dist/client-bootstrap-BFbLRz2C.js +0 -103
  890. package/dist/client-bootstrap-D437UPzx.js +0 -2
  891. package/dist/client-bootstrap-I7-3XCga.js +0 -28
  892. package/dist/client-fetch-AnHvj_3J.js +0 -6329
  893. package/dist/client-hExsWH6o.js +0 -7
  894. package/dist/command-auth-CRa_J5f9.js +0 -82
  895. package/dist/command-config-resolution-DJn8yRN0.js +0 -2
  896. package/dist/command-config-resolution-DfaG_QsG.js +0 -23
  897. package/dist/command-registry-CR66SMrK.js +0 -3
  898. package/dist/command-registry-DPmit1JT.js +0 -103
  899. package/dist/command-secret-gateway-C5wNGlyh.js +0 -528
  900. package/dist/commands-acp-DSkoKaBx.js +0 -1016
  901. package/dist/commands-compact.runtime-Cxk_Bim2.js +0 -9
  902. package/dist/commands-handlers.runtime-7ITzu_F9.js +0 -3752
  903. package/dist/commands-status-YVlf51av.js +0 -220
  904. package/dist/commands-status.runtime-yX733sxU.js +0 -2
  905. package/dist/commands-subagents-control.runtime-CmBQffpY.js +0 -3
  906. package/dist/commands-subagents-control.runtime-DyfC94wk.js +0 -2
  907. package/dist/commands.runtime-CF2CvRdC.js +0 -103
  908. package/dist/compact.runtime-SSFfG-Zn.js +0 -7
  909. package/dist/completion-cli-DacK0s2a.js +0 -2
  910. package/dist/completion-cli-e73PL7WW.js +0 -464
  911. package/dist/config-CNjow647.js +0 -555
  912. package/dist/config-cli-DHrsraFp.js +0 -946
  913. package/dist/configure-BAu4acPI.js +0 -1157
  914. package/dist/configure-CL23G2hb.js +0 -2
  915. package/dist/connect-options-DWuMnfu8.js +0 -702
  916. package/dist/connection-auth-C2SmiqJl.js +0 -30
  917. package/dist/control-auth-CaO1Oeoy.js +0 -55
  918. package/dist/conversation-binding-runtime-Doi63Jbg.js +0 -4
  919. package/dist/conversation-runtime-GGcURk7j.js +0 -31
  920. package/dist/core-CClA2USK.js +0 -210
  921. package/dist/core-api-C_AvPzRu.js +0 -372
  922. package/dist/create-client-BhqAwNbb.js +0 -61
  923. package/dist/create-client-BwsD8tI6.js +0 -2
  924. package/dist/credentials-DJFu83G8.js +0 -57
  925. package/dist/credentials-write.runtime-CR5dnqyZ.js +0 -12
  926. package/dist/cron-cli-Deh3Yeyp.js +0 -637
  927. package/dist/crypto-runtime-VJhxsLhu.js +0 -3510
  928. package/dist/daemon-cli-4bc2x0Xy.js +0 -408
  929. package/dist/daemon-install-1dtUi-ok.js +0 -63
  930. package/dist/delegate-DxwnpjNF.js +0 -59
  931. package/dist/delivery-D5D8dXrE.js +0 -858
  932. package/dist/devices-cli-CCUKlTgc.js +0 -329
  933. package/dist/direct-dm-CM-FJS3G.js +0 -139
  934. package/dist/directive-handling.fast-lane-Bj-ZgNCt.js +0 -64
  935. package/dist/directive-handling.fast-lane-cVtu_YSG.js +0 -2
  936. package/dist/directive-handling.impl-DXYPXQHD.js +0 -659
  937. package/dist/directive-handling.impl-Dbjtj5tk.js +0 -2
  938. package/dist/directory-live-Cl_E8Y0F.js +0 -105
  939. package/dist/directory-live-eYanrAKt.js +0 -2
  940. package/dist/discovery-CDcwVlb2.js +0 -201
  941. package/dist/discovery-toIPU7JM.js +0 -280
  942. package/dist/dispatch-DQdww2GS.js +0 -970
  943. package/dist/dispatch-acp-gH6MGir3.js +0 -969
  944. package/dist/dispatch-acp-manager.runtime-B3868p2b.js +0 -3
  945. package/dist/dispatch-acp.runtime-GxCOV-g5.js +0 -19
  946. package/dist/docker-harness-DuqgDAuF.js +0 -277
  947. package/dist/doctor-completion-CqPBIveI.js +0 -90
  948. package/dist/env-auth-kvshWd0K.js +0 -2
  949. package/dist/exec-approvals-3lAYs6Hb.js +0 -272
  950. package/dist/exec-approvals-DEXYo-hs.js +0 -129
  951. package/dist/exec-approvals-cli-qJuhPDN7.js +0 -483
  952. package/dist/format-Bfm1Y34p.js +0 -941
  953. package/dist/gateway-Coz4zJqF.js +0 -2652
  954. package/dist/gateway-cli-Tr88ODEI.js +0 -1510
  955. package/dist/gateway-install-token-DfFqyLMo.js +0 -213
  956. package/dist/gateway-rpc-BemgYdMc.js +0 -14
  957. package/dist/gateway-rpc.runtime-qMKQlN4e.js +0 -23
  958. package/dist/gateway-runtime-BKHVCtA8.js +0 -12
  959. package/dist/get-reply-from-config.runtime-DvG3QBgw.js +0 -2
  960. package/dist/graph-users-Dl1OMi8u.js +0 -926
  961. package/dist/group-access-C4vUaXrm.js +0 -119
  962. package/dist/handle-action-BZiiHnQe.js +0 -505
  963. package/dist/health-CS7VN2jf.js +0 -2
  964. package/dist/health-DZIRhXhz.js +0 -578
  965. package/dist/heartbeat-runner-BzXA9IWw.js +0 -4
  966. package/dist/heartbeat-runner-D0A8YGZO.js +0 -1060
  967. package/dist/heartbeat-runner.runtime-TppNw-oM.js +0 -2
  968. package/dist/http-client-DkuiEf7A.js +0 -322
  969. package/dist/inbound-reply-dispatch-DpYv3d5p.js +0 -73
  970. package/dist/infra-runtime-tt1_oCoq.js +0 -23
  971. package/dist/inline-buttons-DEuFw3WQ.js +0 -40
  972. package/dist/known-users-CWwrsFGU.js +0 -1180
  973. package/dist/legacy-crypto-restore-BOa2DvvY.js +0 -85
  974. package/dist/library-7cnVS_xi.js +0 -44
  975. package/dist/llm-slug-generator-323FKQOP.js +0 -69
  976. package/dist/login-CiHsm606.js +0 -2574
  977. package/dist/logs-cli-B2cmXZem.js +0 -264
  978. package/dist/logs-cli.runtime-C-Mcv4Zk.js +0 -2
  979. package/dist/manager-CwWzbl_D.js +0 -2048
  980. package/dist/manager.runtime-CqOrg4Qr.js +0 -900
  981. package/dist/markdown-to-line-CbaWO2jk.js +0 -781
  982. package/dist/matrix-migration.runtime-GV26JQ2_.js +0 -2
  983. package/dist/mcp-cli-DGbCa-Cd.js +0 -747
  984. package/dist/media-text-ZfT38pVI.js +0 -146
  985. package/dist/memory-core-CBOoleHk.js +0 -7
  986. package/dist/memory-core-host-runtime-cli-Be-Y3RcN.js +0 -9
  987. package/dist/message-DM01eAnX.js +0 -223
  988. package/dist/message-action-runner-BdICMfSy.js +0 -2
  989. package/dist/message-action-runner-Cb2h2Ijf.js +0 -1628
  990. package/dist/message-actions-DS7xc40R.js +0 -143
  991. package/dist/message-handler-D--3XcDZ.js +0 -1925
  992. package/dist/message.gateway.runtime-IqVan5Ku.js +0 -2
  993. package/dist/messages-CjRvwckc.js +0 -139
  994. package/dist/method-scopes-D4g3NSY1.js +0 -2803
  995. package/dist/migration-snapshot.runtime-BcKQLnnt.js +0 -3
  996. package/dist/models-DovOrFsL.js +0 -2565
  997. package/dist/models-cli-BY-ZivSs.js +0 -197
  998. package/dist/models-ym2zxpHK.js +0 -3
  999. package/dist/monitor-BRJa82Ur.js +0 -2
  1000. package/dist/monitor-BncOnBd9.js +0 -673
  1001. package/dist/monitor-C1p3x-pX.js +0 -1221
  1002. package/dist/monitor-CIPE_311.js +0 -4027
  1003. package/dist/monitor-CNRewRrD.js +0 -288
  1004. package/dist/monitor-Cj_IFxZv.js +0 -1344
  1005. package/dist/monitor-DVLc8Re0.js +0 -4
  1006. package/dist/monitor-J_BnmDo2.js +0 -5
  1007. package/dist/monitor-Qmqec_Yh.js +0 -3653
  1008. package/dist/monitor-_au10paS.js +0 -1533
  1009. package/dist/monitor-auth-Bscspafh.js +0 -2470
  1010. package/dist/monitor-normalize-DoTVhTYT.js +0 -1018
  1011. package/dist/monitor-polling.runtime-DpDlmIwy.js +0 -309
  1012. package/dist/monitor-webhook.runtime-TlmgbOCr.js +0 -298
  1013. package/dist/monitor-xEYRMU-f.js +0 -524
  1014. package/dist/monitor.runtime-CnJJRTbE.js +0 -2
  1015. package/dist/monitor.webhook-BgwkWhHl.js +0 -152
  1016. package/dist/msteams-BUb-S_EX.js +0 -35
  1017. package/dist/music-generation-provider-D1i_RdU5.js +0 -141
  1018. package/dist/music-generation-provider-kW5YoroF.js +0 -169
  1019. package/dist/nextcloud-talk-w5jy_uDk.js +0 -17
  1020. package/dist/node-cli-0I8EBDmz.js +0 -2361
  1021. package/dist/nodes-cli-DDPXput-.js +0 -1046
  1022. package/dist/nostr-CMmrLIba.js +0 -20
  1023. package/dist/notify-53158hb_.js +0 -301
  1024. package/dist/onboard-gasumsAo.js +0 -620
  1025. package/dist/onboard-helpers-BKqqS4fH.js +0 -5
  1026. package/dist/onboard-helpers-ClO1CzUs.js +0 -210
  1027. package/dist/onboard-remote-C_OS9uG-.js +0 -2
  1028. package/dist/onboard-remote-DZwvXndP.js +0 -193
  1029. package/dist/onboard-skills-C2b6Am6N.js +0 -134
  1030. package/dist/onboard-skills-DoUaMa7Q.js +0 -2
  1031. package/dist/operator-approvals-client-Ba5yI2jW.js +0 -68
  1032. package/dist/outbound-adapter-CHAeBJnA.js +0 -186
  1033. package/dist/outbound-adapter-ckaI045x.js +0 -195
  1034. package/dist/outbound-send-deps-CeS2ISdG.js +0 -179
  1035. package/dist/outbound.runtime-DmENyZWi.js +0 -2
  1036. package/dist/pair-command-approve-Dtj5RT3m.js +0 -34
  1037. package/dist/persistent-bindings.lifecycle-DlRf6UNu.js +0 -94
  1038. package/dist/pi-embedded-BCiN8PJJ.js +0 -4
  1039. package/dist/pi-embedded-D6ymZc3i.js +0 -34664
  1040. package/dist/pi-embedded.runtime-BvHY2Qn8.js +0 -4
  1041. package/dist/plugin-registration-pEUuuPNE.js +0 -23
  1042. package/dist/plugin-service-C727jUS8.js +0 -2479
  1043. package/dist/policy-Cx0vwWl-.js +0 -296
  1044. package/dist/prepare-Cvvm6kSX.js +0 -1311
  1045. package/dist/preview-streaming-VPGtgbrj.js +0 -156
  1046. package/dist/probe-BWxk_D41.js +0 -1951
  1047. package/dist/probe-BZ2k40na.js +0 -467
  1048. package/dist/probe-BdrYBtBm.js +0 -42
  1049. package/dist/probe-Bi1t0jFB.js +0 -473
  1050. package/dist/probe-Bm-LFpXO.js +0 -54
  1051. package/dist/probe-BzM7PkDR.js +0 -178
  1052. package/dist/probe-D3nv35y0.js +0 -45
  1053. package/dist/probe-D44CTR-n.js +0 -2
  1054. package/dist/probe-D9_c8Tac.js +0 -2
  1055. package/dist/probe-auth-CvZT2Jdj.js +0 -69
  1056. package/dist/probe-auth-CvvZaT1c.js +0 -3
  1057. package/dist/probe-wE6FkkZ_.js +0 -2
  1058. package/dist/probe.runtime-DGQmUPe5.js +0 -3
  1059. package/dist/profile-update-DJMFQsky.js +0 -67
  1060. package/dist/program-D0cK7yGW.js +0 -112
  1061. package/dist/prompt-select-styled-DIWZZZG6.js +0 -5126
  1062. package/dist/provider-BKJ08C2Z.js +0 -3454
  1063. package/dist/provider-CPi36wyQ.js +0 -6962
  1064. package/dist/provider-dispatcher-CLwZUymC.js +0 -22
  1065. package/dist/provider-session.runtime-B3S_Yeb3.js +0 -9
  1066. package/dist/provider.runtime-DcEvmtmu.js +0 -2
  1067. package/dist/pw-ai-WAQfyGe_.js +0 -2103
  1068. package/dist/qa-channel-Dqe1KaSx.js +0 -2
  1069. package/dist/qa-cli-4xByjTp-.js +0 -8
  1070. package/dist/qr-cli-9amYg6ZB.js +0 -358
  1071. package/dist/qr-cli-Dvj1k6Ck.js +0 -2
  1072. package/dist/reaction-level-cvYUkHnc.js +0 -18
  1073. package/dist/reaction-runtime-api-C4C7zpkB.js +0 -117
  1074. package/dist/reactions--cuRrgXz.js +0 -1037
  1075. package/dist/register.agent-lPQYPQxl.js +0 -240
  1076. package/dist/register.configure-C1Pqkqku.js +0 -15
  1077. package/dist/register.maintenance-D7_7kFLK.js +0 -437
  1078. package/dist/register.message-DuQfx9tH.js +0 -646
  1079. package/dist/register.onboard-GvvDQg6U.js +0 -79
  1080. package/dist/register.runtime-B_q6h9Rj.js +0 -4738
  1081. package/dist/register.runtime-D1J8J3lS.js +0 -80
  1082. package/dist/register.setup-D4ohrJPJ.js +0 -103
  1083. package/dist/register.status-health-sessions-KTNGJBI0.js +0 -1209
  1084. package/dist/register.subclis-BBWrHZw5.js +0 -3
  1085. package/dist/register.subclis-JFPqv7V4.js +0 -232
  1086. package/dist/register.sync.runtime-CBqckwjj.js +0 -111
  1087. package/dist/register.sync.runtime-DLLDETam.js +0 -30
  1088. package/dist/replies-BJ7V-hO1.js +0 -120
  1089. package/dist/reply-Lp7d3a50.js +0 -3408
  1090. package/dist/reply-dispatch-runtime-Gcl_ugF7.js +0 -3
  1091. package/dist/reply-resolver.runtime-D6AfqIU4.js +0 -3
  1092. package/dist/reply-runtime-w3_WmlVR.js +0 -63
  1093. package/dist/reply.runtime-CEzDecR4.js +0 -2
  1094. package/dist/resolve-channels-BdkK4nw3.js +0 -80
  1095. package/dist/resolve-channels-C3XNE8mX.js +0 -2
  1096. package/dist/resolve-targets-CtIyzvLZ.js +0 -280
  1097. package/dist/resolve-users-BakC_OZx.js +0 -112
  1098. package/dist/resolve-users-Fn03Rhb2.js +0 -2
  1099. package/dist/restart-health-BttIk7CU.js +0 -202
  1100. package/dist/restart-health-CFQhuwOp.js +0 -2
  1101. package/dist/route-resolution-SDBGRkWf.js +0 -519
  1102. package/dist/rpc-C9V_pt31.js +0 -61
  1103. package/dist/rpc.runtime-B0h6ayTJ.js +0 -21
  1104. package/dist/run-main-5wQoA813.js +0 -452
  1105. package/dist/run-wait-B-6gAFUS.js +0 -118
  1106. package/dist/runtime-B09Y1cSR.js +0 -1030
  1107. package/dist/runtime-DYbf5mvD.js +0 -9
  1108. package/dist/runtime-ROpfHrig.js +0 -969
  1109. package/dist/runtime-api-B2LT1fsl.js +0 -21
  1110. package/dist/runtime-api-B2iJXOPK.js +0 -45
  1111. package/dist/runtime-api-BKyYF95h.js +0 -2
  1112. package/dist/runtime-api-BXoNiiea.js +0 -26
  1113. package/dist/runtime-api-BZakyLMI.js +0 -6
  1114. package/dist/runtime-api-BjtBN2Lw.js +0 -3
  1115. package/dist/runtime-api-C1cTYm9P.js +0 -2
  1116. package/dist/runtime-api-CSSJcNsF.js +0 -6
  1117. package/dist/runtime-api-CXnnN_KY.js +0 -17
  1118. package/dist/runtime-api-ChdP-48A.js +0 -3
  1119. package/dist/runtime-api-DlZVV51Z.js +0 -10
  1120. package/dist/runtime-api-VACD9DJo.js +0 -12
  1121. package/dist/runtime-embedded-pi.runtime-Eo0EmYFy.js +0 -2
  1122. package/dist/runtime-heavy-api-C4fiMQ21.js +0 -565
  1123. package/dist/runtime-internal-icjNm5UP.js +0 -2
  1124. package/dist/runtime-plugins-B6R10y_D.js +0 -69
  1125. package/dist/sandbox--rLy3kgS.js +0 -4
  1126. package/dist/sandbox-DuJ1KNDG.js +0 -2587
  1127. package/dist/sandbox-cli-4TTvCzDq.js +0 -445
  1128. package/dist/sdk-BYukfk1k.js +0 -1124
  1129. package/dist/secrets-cli-DEn7dm1N.js +0 -2098
  1130. package/dist/security-audit-Bsy0zSyj.js +0 -108
  1131. package/dist/security-audit-Duv6BTNX.js +0 -120
  1132. package/dist/security-audit-YfOVCyuf.js +0 -51
  1133. package/dist/security-audit.runtime-Cyi0ycOc.js +0 -2
  1134. package/dist/security-cli-BcHPRXOi.js +0 -485
  1135. package/dist/send-BIbyQk5P.js +0 -1262
  1136. package/dist/send-CKsL7RVh.js +0 -3
  1137. package/dist/send-CWQq_n5g.js +0 -389
  1138. package/dist/send-CfV7rSkm.js +0 -981
  1139. package/dist/send-CyQx0TY7.js +0 -2
  1140. package/dist/send-DHgcTLAL.js +0 -2
  1141. package/dist/send-DWOFYyaw.js +0 -102
  1142. package/dist/send-DeI_6pOG.js +0 -3043
  1143. package/dist/send-Z15Qe-G0.js +0 -332
  1144. package/dist/send-kKGGtn3Z.js +0 -416
  1145. package/dist/send.components-Bz73vYn8.js +0 -303
  1146. package/dist/send.runtime-BcZGpddi.js +0 -2
  1147. package/dist/send.runtime-BtXm9WEr.js +0 -3
  1148. package/dist/send.runtime-Cvg0x4v0.js +0 -2
  1149. package/dist/send.shared-DYohWc2i.js +0 -1101
  1150. package/dist/sent-thread-cache-CT2xxwbT.js +0 -23
  1151. package/dist/server-Cd7EHHuw.js +0 -68
  1152. package/dist/server-G26weaSi.js +0 -13
  1153. package/dist/server-middleware-CtTwf3pu.js +0 -110
  1154. package/dist/server-node-events-DKZ_nyrQ.js +0 -449
  1155. package/dist/server.impl-D63YZto5.js +0 -30112
  1156. package/dist/session-reset-service-D1M4pLBA.js +0 -450
  1157. package/dist/session-route-tUMBm5PT.js +0 -156
  1158. package/dist/session-store-metadata-DowmkwmG.js +0 -288
  1159. package/dist/session-subagent-reactivation.runtime-mKpYuC3k.js +0 -2
  1160. package/dist/session-tab-registry-DWFtutnL.js +0 -212
  1161. package/dist/sessions.runtime-Cf7RpCAJ.js +0 -2
  1162. package/dist/setup-BRmL5-Jo.js +0 -434
  1163. package/dist/setup-api-CrfiDHi-.js +0 -30
  1164. package/dist/setup-bootstrap-BJpUNvF_.js +0 -55
  1165. package/dist/setup-contract-D-zxoFOW.js +0 -126
  1166. package/dist/setup-core-CG-E-wxi.js +0 -108
  1167. package/dist/setup-core-rh5n0CBJ.js +0 -233
  1168. package/dist/setup-surface-BeAiBe4W.js +0 -279
  1169. package/dist/setup-surface-By9c_qzk.js +0 -8861
  1170. package/dist/setup-surface-D18aEQat.js +0 -723
  1171. package/dist/setup-surface-DAzhKU-9.js +0 -286
  1172. package/dist/setup-surface-DIawZD7y.js +0 -643
  1173. package/dist/setup.finalize-BMwCLPRK.js +0 -445
  1174. package/dist/setup.gateway-config-Ce9dKFXy.js +0 -246
  1175. package/dist/shared-2BPq74or.js +0 -252
  1176. package/dist/shared-BXTcQtcc.js +0 -180
  1177. package/dist/shared-BtxNEzEa.js +0 -224
  1178. package/dist/shared-DLUal8aD.js +0 -766
  1179. package/dist/shared-Dpt4e-O9.js +0 -2
  1180. package/dist/slash-commands.runtime-BtV5q0pv.js +0 -20
  1181. package/dist/slash-dispatch.runtime-BDhbVtP4.js +0 -38
  1182. package/dist/slash-skill-commands.runtime-C2MFQM29.js +0 -8
  1183. package/dist/squidclaw-tools.runtime-BXCvcJOL.js +0 -2
  1184. package/dist/src-UTq3Vwke.js +0 -2841
  1185. package/dist/stage-sandbox-media.runtime-CgbVMvTX.js +0 -231
  1186. package/dist/startup-verification-Bgxg51QM.js +0 -132
  1187. package/dist/status-C6ejKsXs.js +0 -3
  1188. package/dist/status-Co9vYLDq.js +0 -607
  1189. package/dist/status-Dabi0MUR.js +0 -2
  1190. package/dist/status-DkiiNsd1.js +0 -478
  1191. package/dist/status-E8JIm_wq.js +0 -391
  1192. package/dist/status-all-DqdzD3l2.js +0 -484
  1193. package/dist/status-json-DW4G1ifQ.js +0 -14
  1194. package/dist/status-json-command-C_y4Qnfw.js +0 -84
  1195. package/dist/status-runtime-shared-BjdaMBBy.js +0 -254
  1196. package/dist/status.command.text-runtime-Cezf3w14.js +0 -15
  1197. package/dist/status.gateway-connection.runtime-Fty09fSN.js +0 -2
  1198. package/dist/status.gateway-probe-CtyElUAZ.js +0 -16
  1199. package/dist/status.scan-e2ndyoox.js +0 -62
  1200. package/dist/status.scan-overview-Cfxp5RW1.js +0 -395
  1201. package/dist/status.scan.fast-json-BbmQZHtY.js +0 -2
  1202. package/dist/status.scan.fast-json-pFHFJao2.js +0 -128
  1203. package/dist/status.summary--QblCYpN.js +0 -2
  1204. package/dist/status.summary-rbSkau3S.js +0 -209
  1205. package/dist/sticker-cache-BVjpg6Jr.js +0 -184
  1206. package/dist/sticker-vision.runtime-Brteqqqk.js +0 -16
  1207. package/dist/storage-qK6jOD0a.js +0 -281
  1208. package/dist/subagent-announce.registry.runtime-DjrEtLXy.js +0 -3
  1209. package/dist/subagent-followup.runtime-AgUQMRnV.js +0 -68
  1210. package/dist/subagent-hooks-BIkcskal.js +0 -101
  1211. package/dist/subagent-list-Cjy5X9zr.js +0 -167
  1212. package/dist/subagent-orphan-recovery-DoHcGTmY.js +0 -213
  1213. package/dist/subagent-registry-runtime-BtxCxqDG.js +0 -2
  1214. package/dist/subagent-registry.runtime-Dy6yz9QP.js +0 -3
  1215. package/dist/subagents-format-DhZnQqvz.js +0 -715
  1216. package/dist/suite-Bm6-0z9W.js +0 -2
  1217. package/dist/suite-Dy4_-d5w.js +0 -3665
  1218. package/dist/suite-launch.runtime-CT6ZQXhY.js +0 -7
  1219. package/dist/system-cli-Blr_zAnY.js +0 -59
  1220. package/dist/targets-DSLnS3Ju.js +0 -594
  1221. package/dist/targets-zjDM8sUO.js +0 -2
  1222. package/dist/task-executor-C3f8iqwr.js +0 -350
  1223. package/dist/task-owner-access-B1ZJymnj.js +0 -48
  1224. package/dist/task-registry-DwSuIP5x.js +0 -2343
  1225. package/dist/task-registry-control.runtime-D0aPCpac.js +0 -3
  1226. package/dist/task-registry-delivery-runtime-DW5UnNOu.js +0 -3
  1227. package/dist/task-registry-delivery-runtime-OuMCxMMR.js +0 -2
  1228. package/dist/task-registry.audit-CCvavL7s.js +0 -420
  1229. package/dist/task-registry.maintenance-DuJaYBdY.js +0 -2
  1230. package/dist/testing-3s6ggYUi.js +0 -637
  1231. package/dist/text-report-BMFH2D2f.js +0 -587
  1232. package/dist/thread-bindings-BKPRlJ8r.js +0 -350
  1233. package/dist/thread-bindings-BQIzpYsw.js +0 -231
  1234. package/dist/thread-bindings-BqgRY931.js +0 -223
  1235. package/dist/thread-bindings-_V7u3OBb.js +0 -541
  1236. package/dist/thread-bindings.discord-api-D775Moto.js +0 -167
  1237. package/dist/thread-bindings.manager-Cj6MCnrB.js +0 -516
  1238. package/dist/thread-bindings.manager-NzDRPx4c.js +0 -2
  1239. package/dist/token-CXEUIR3T.js +0 -82
  1240. package/dist/tool-actions.runtime-DCp5s7hQ.js +0 -534
  1241. package/dist/tools-effective-inventory-e3f07-S5.js +0 -151
  1242. package/dist/tui-DiVWeFmm.js +0 -3941
  1243. package/dist/tui-cli-QhUFE67j.js +0 -31
  1244. package/dist/ui-DTD0F-R6.js +0 -266
  1245. package/dist/update-cli-CTz2V8Ez.js +0 -1484
  1246. package/dist/verification-1bD881sU.js +0 -133
  1247. package/dist/verification-CCqBFDKu.js +0 -2
  1248. package/dist/webhook-shared-DJeFHRS7.js +0 -49
@@ -1,2343 +0,0 @@
1
- import { r as formatErrorMessage } from "./errors-CGMew-1w.js";
2
- import { s as normalizeOptionalString } from "./string-coerce-CIT1-v_a.js";
3
- import { r as isDeliverableMessageChannel } from "./message-channel-DQjnLsbt.js";
4
- import { t as createSubsystemLogger } from "./subsystem-N40BsK-I.js";
5
- import { t as installProcessWarningFilter } from "./warning-filter-B7_7L_JK.js";
6
- import { _ as resolveStateDir } from "./paths-CBBdTof8.js";
7
- import { x as parseAgentSessionKey } from "./session-key-BMb3Kc4r.js";
8
- import { a as normalizeDeliveryContext } from "./delivery-context-bgmnvRdR.js";
9
- import { n as requestHeartbeatNow } from "./heartbeat-wake-C6s6dlTN.js";
10
- import { r as enqueueSystemEvent } from "./system-events-BvDQghag.js";
11
- import { l as onAgentEvent } from "./agent-events-D2AMXnrE.js";
12
- import { a as sanitizeTaskStatusText, i as formatTaskStatusTitleText } from "./task-status-bzW-Ho8Z.js";
13
- import { createRequire } from "node:module";
14
- import { chmodSync, existsSync, mkdirSync } from "node:fs";
15
- import path from "node:path";
16
- import os from "node:os";
17
- import crypto from "node:crypto";
18
- //#region src/tasks/task-executor-policy.ts
19
- function isTerminalTaskStatus(status) {
20
- return status === "succeeded" || status === "failed" || status === "timed_out" || status === "cancelled" || status === "lost";
21
- }
22
- function resolveTaskDisplayTitle(task) {
23
- return formatTaskStatusTitleText(task.label?.trim() || (task.runtime === "acp" ? "ACP background task" : task.runtime === "subagent" ? "Subagent task" : task.task.trim() || "Background task"));
24
- }
25
- function resolveTaskRunLabel(task) {
26
- return task.runId ? ` (run ${task.runId.slice(0, 8)})` : "";
27
- }
28
- function formatTaskTerminalMessage(task) {
29
- const title = resolveTaskDisplayTitle(task);
30
- const runLabel = resolveTaskRunLabel(task);
31
- const summary = sanitizeTaskStatusText(task.terminalSummary, { errorContext: task.status !== "succeeded" || task.terminalOutcome === "blocked" });
32
- if (task.status === "succeeded") {
33
- if (task.terminalOutcome === "blocked") return summary ? `Background task blocked: ${title}${runLabel}. ${summary}` : `Background task blocked: ${title}${runLabel}.`;
34
- return summary ? `Background task done: ${title}${runLabel}. ${summary}` : `Background task done: ${title}${runLabel}.`;
35
- }
36
- if (task.status === "timed_out") return `Background task timed out: ${title}${runLabel}.`;
37
- if (task.status === "lost") {
38
- const error = sanitizeTaskStatusText(task.error, { errorContext: true });
39
- const fallbackSummary = sanitizeTaskStatusText(task.terminalSummary, { errorContext: true });
40
- return `Background task lost: ${title}${runLabel}. ${error || fallbackSummary || "Backing session disappeared."}`;
41
- }
42
- if (task.status === "cancelled") return `Background task cancelled: ${title}${runLabel}.`;
43
- const error = sanitizeTaskStatusText(task.error, { errorContext: true });
44
- const fallbackSummary = sanitizeTaskStatusText(task.terminalSummary, { errorContext: true });
45
- return error ? `Background task failed: ${title}${runLabel}. ${error}` : fallbackSummary ? `Background task failed: ${title}${runLabel}. ${fallbackSummary}` : `Background task failed: ${title}${runLabel}.`;
46
- }
47
- function formatTaskBlockedFollowupMessage(task) {
48
- if (task.status !== "succeeded" || task.terminalOutcome !== "blocked") return null;
49
- return `Task needs follow-up: ${resolveTaskDisplayTitle(task)}${resolveTaskRunLabel(task)}. ${sanitizeTaskStatusText(task.terminalSummary, { errorContext: true }) || "Task is blocked and needs follow-up."}`;
50
- }
51
- function formatTaskStateChangeMessage(task, event) {
52
- const title = resolveTaskDisplayTitle(task);
53
- if (event.kind === "running") return `Background task started: ${title}.`;
54
- if (event.kind === "progress") {
55
- const summary = sanitizeTaskStatusText(event.summary);
56
- return summary ? `Background task update: ${title}. ${summary}` : null;
57
- }
58
- return null;
59
- }
60
- function shouldAutoDeliverTaskTerminalUpdate(task) {
61
- if (task.notifyPolicy === "silent") return false;
62
- if (task.runtime === "subagent" && task.status !== "cancelled") return false;
63
- if (!isTerminalTaskStatus(task.status)) return false;
64
- return task.deliveryStatus === "pending";
65
- }
66
- function shouldAutoDeliverTaskStateChange(task) {
67
- return task.notifyPolicy === "state_changes" && task.deliveryStatus === "pending" && !isTerminalTaskStatus(task.status);
68
- }
69
- function shouldSuppressDuplicateTerminalDelivery(params) {
70
- if (params.task.runtime !== "acp" || !params.task.runId?.trim()) return false;
71
- return Boolean(params.preferredTaskId && params.preferredTaskId !== params.task.taskId);
72
- }
73
- //#endregion
74
- //#region src/infra/node-sqlite.ts
75
- const require = createRequire(import.meta.url);
76
- function requireNodeSqlite() {
77
- installProcessWarningFilter();
78
- try {
79
- return require("node:sqlite");
80
- } catch (err) {
81
- const message = formatErrorMessage(err);
82
- throw new Error(`SQLite support is unavailable in this Node runtime (missing node:sqlite). ${message}`, { cause: err });
83
- }
84
- }
85
- //#endregion
86
- //#region src/tasks/task-registry.paths.ts
87
- function resolveTaskStateDir(env = process.env) {
88
- if (env.SQUIDCLAW_STATE_DIR?.trim()) return resolveStateDir(env);
89
- if (env.VITEST || env.NODE_ENV === "test") return path.join(os.tmpdir(), "squidclaw-test-state", String(process.pid));
90
- return resolveStateDir(env);
91
- }
92
- function resolveTaskRegistryDir(env = process.env) {
93
- return path.join(resolveTaskStateDir(env), "tasks");
94
- }
95
- function resolveTaskRegistrySqlitePath(env = process.env) {
96
- return path.join(resolveTaskRegistryDir(env), "runs.sqlite");
97
- }
98
- //#endregion
99
- //#region src/tasks/task-flow-registry.paths.ts
100
- function resolveTaskFlowRegistryDir(env = process.env) {
101
- return path.join(resolveTaskStateDir(env), "flows");
102
- }
103
- function resolveTaskFlowRegistrySqlitePath(env = process.env) {
104
- return path.join(resolveTaskFlowRegistryDir(env), "registry.sqlite");
105
- }
106
- //#endregion
107
- //#region src/tasks/task-flow-registry.store.sqlite.ts
108
- let cachedDatabase$1 = null;
109
- const FLOW_REGISTRY_DIR_MODE = 448;
110
- const FLOW_REGISTRY_FILE_MODE = 384;
111
- const FLOW_REGISTRY_SIDECAR_SUFFIXES = [
112
- "",
113
- "-shm",
114
- "-wal"
115
- ];
116
- function normalizeNumber$1(value) {
117
- if (typeof value === "bigint") return Number(value);
118
- return typeof value === "number" ? value : void 0;
119
- }
120
- function serializeJson$1(value) {
121
- return value === void 0 ? null : JSON.stringify(value);
122
- }
123
- function parseJsonValue$1(raw) {
124
- if (!raw?.trim()) return;
125
- try {
126
- return JSON.parse(raw);
127
- } catch {
128
- return;
129
- }
130
- }
131
- function rowToSyncMode(row) {
132
- if (row.sync_mode === "task_mirrored" || row.sync_mode === "managed") return row.sync_mode;
133
- return row.shape === "single_task" ? "task_mirrored" : "managed";
134
- }
135
- function rowToFlowRecord(row) {
136
- const endedAt = normalizeNumber$1(row.ended_at);
137
- const cancelRequestedAt = normalizeNumber$1(row.cancel_requested_at);
138
- const requesterOrigin = parseJsonValue$1(row.requester_origin_json);
139
- const stateJson = parseJsonValue$1(row.state_json);
140
- const waitJson = parseJsonValue$1(row.wait_json);
141
- return {
142
- flowId: row.flow_id,
143
- syncMode: rowToSyncMode(row),
144
- ownerKey: row.owner_key,
145
- ...requesterOrigin ? { requesterOrigin } : {},
146
- ...row.controller_id ? { controllerId: row.controller_id } : {},
147
- revision: normalizeNumber$1(row.revision) ?? 0,
148
- status: row.status,
149
- notifyPolicy: row.notify_policy,
150
- goal: row.goal,
151
- ...row.current_step ? { currentStep: row.current_step } : {},
152
- ...row.blocked_task_id ? { blockedTaskId: row.blocked_task_id } : {},
153
- ...row.blocked_summary ? { blockedSummary: row.blocked_summary } : {},
154
- ...stateJson !== void 0 ? { stateJson } : {},
155
- ...waitJson !== void 0 ? { waitJson } : {},
156
- ...cancelRequestedAt != null ? { cancelRequestedAt } : {},
157
- createdAt: normalizeNumber$1(row.created_at) ?? 0,
158
- updatedAt: normalizeNumber$1(row.updated_at) ?? 0,
159
- ...endedAt != null ? { endedAt } : {}
160
- };
161
- }
162
- function bindFlowRecord(record) {
163
- return {
164
- flow_id: record.flowId,
165
- sync_mode: record.syncMode,
166
- owner_key: record.ownerKey,
167
- requester_origin_json: serializeJson$1(record.requesterOrigin),
168
- controller_id: record.controllerId ?? null,
169
- revision: record.revision,
170
- status: record.status,
171
- notify_policy: record.notifyPolicy,
172
- goal: record.goal,
173
- current_step: record.currentStep ?? null,
174
- blocked_task_id: record.blockedTaskId ?? null,
175
- blocked_summary: record.blockedSummary ?? null,
176
- state_json: serializeJson$1(record.stateJson),
177
- wait_json: serializeJson$1(record.waitJson),
178
- cancel_requested_at: record.cancelRequestedAt ?? null,
179
- created_at: record.createdAt,
180
- updated_at: record.updatedAt,
181
- ended_at: record.endedAt ?? null
182
- };
183
- }
184
- function createStatements$1(db) {
185
- return {
186
- selectAll: db.prepare(`
187
- SELECT
188
- flow_id,
189
- sync_mode,
190
- shape,
191
- owner_key,
192
- requester_origin_json,
193
- controller_id,
194
- revision,
195
- status,
196
- notify_policy,
197
- goal,
198
- current_step,
199
- blocked_task_id,
200
- blocked_summary,
201
- state_json,
202
- wait_json,
203
- cancel_requested_at,
204
- created_at,
205
- updated_at,
206
- ended_at
207
- FROM flow_runs
208
- ORDER BY created_at ASC, flow_id ASC
209
- `),
210
- upsertRow: db.prepare(`
211
- INSERT INTO flow_runs (
212
- flow_id,
213
- sync_mode,
214
- owner_key,
215
- requester_origin_json,
216
- controller_id,
217
- revision,
218
- status,
219
- notify_policy,
220
- goal,
221
- current_step,
222
- blocked_task_id,
223
- blocked_summary,
224
- state_json,
225
- wait_json,
226
- cancel_requested_at,
227
- created_at,
228
- updated_at,
229
- ended_at
230
- ) VALUES (
231
- @flow_id,
232
- @sync_mode,
233
- @owner_key,
234
- @requester_origin_json,
235
- @controller_id,
236
- @revision,
237
- @status,
238
- @notify_policy,
239
- @goal,
240
- @current_step,
241
- @blocked_task_id,
242
- @blocked_summary,
243
- @state_json,
244
- @wait_json,
245
- @cancel_requested_at,
246
- @created_at,
247
- @updated_at,
248
- @ended_at
249
- )
250
- ON CONFLICT(flow_id) DO UPDATE SET
251
- sync_mode = excluded.sync_mode,
252
- owner_key = excluded.owner_key,
253
- requester_origin_json = excluded.requester_origin_json,
254
- controller_id = excluded.controller_id,
255
- revision = excluded.revision,
256
- status = excluded.status,
257
- notify_policy = excluded.notify_policy,
258
- goal = excluded.goal,
259
- current_step = excluded.current_step,
260
- blocked_task_id = excluded.blocked_task_id,
261
- blocked_summary = excluded.blocked_summary,
262
- state_json = excluded.state_json,
263
- wait_json = excluded.wait_json,
264
- cancel_requested_at = excluded.cancel_requested_at,
265
- created_at = excluded.created_at,
266
- updated_at = excluded.updated_at,
267
- ended_at = excluded.ended_at
268
- `),
269
- deleteRow: db.prepare(`DELETE FROM flow_runs WHERE flow_id = ?`),
270
- clearRows: db.prepare(`DELETE FROM flow_runs`)
271
- };
272
- }
273
- function hasFlowRunsColumn(db, columnName) {
274
- return db.prepare(`PRAGMA table_info(flow_runs)`).all().some((row) => row.name === columnName);
275
- }
276
- function ensureSchema$1(db) {
277
- db.exec(`
278
- CREATE TABLE IF NOT EXISTS flow_runs (
279
- flow_id TEXT PRIMARY KEY,
280
- shape TEXT,
281
- sync_mode TEXT NOT NULL DEFAULT 'managed',
282
- owner_key TEXT NOT NULL,
283
- requester_origin_json TEXT,
284
- controller_id TEXT,
285
- revision INTEGER NOT NULL DEFAULT 0,
286
- status TEXT NOT NULL,
287
- notify_policy TEXT NOT NULL,
288
- goal TEXT NOT NULL,
289
- current_step TEXT,
290
- blocked_task_id TEXT,
291
- blocked_summary TEXT,
292
- state_json TEXT,
293
- wait_json TEXT,
294
- cancel_requested_at INTEGER,
295
- created_at INTEGER NOT NULL,
296
- updated_at INTEGER NOT NULL,
297
- ended_at INTEGER
298
- );
299
- `);
300
- if (!hasFlowRunsColumn(db, "owner_key") && hasFlowRunsColumn(db, "owner_session_key")) {
301
- db.exec(`ALTER TABLE flow_runs ADD COLUMN owner_key TEXT;`);
302
- db.exec(`
303
- UPDATE flow_runs
304
- SET owner_key = owner_session_key
305
- WHERE owner_key IS NULL
306
- `);
307
- }
308
- if (!hasFlowRunsColumn(db, "shape")) db.exec(`ALTER TABLE flow_runs ADD COLUMN shape TEXT;`);
309
- if (!hasFlowRunsColumn(db, "sync_mode")) {
310
- db.exec(`ALTER TABLE flow_runs ADD COLUMN sync_mode TEXT;`);
311
- if (hasFlowRunsColumn(db, "shape")) db.exec(`
312
- UPDATE flow_runs
313
- SET sync_mode = CASE
314
- WHEN shape = 'single_task' THEN 'task_mirrored'
315
- ELSE 'managed'
316
- END
317
- WHERE sync_mode IS NULL
318
- `);
319
- else db.exec(`
320
- UPDATE flow_runs
321
- SET sync_mode = 'managed'
322
- WHERE sync_mode IS NULL
323
- `);
324
- }
325
- if (!hasFlowRunsColumn(db, "controller_id")) db.exec(`ALTER TABLE flow_runs ADD COLUMN controller_id TEXT;`);
326
- db.exec(`
327
- UPDATE flow_runs
328
- SET controller_id = 'core/legacy-restored'
329
- WHERE sync_mode = 'managed'
330
- AND (controller_id IS NULL OR trim(controller_id) = '')
331
- `);
332
- if (!hasFlowRunsColumn(db, "revision")) {
333
- db.exec(`ALTER TABLE flow_runs ADD COLUMN revision INTEGER;`);
334
- db.exec(`
335
- UPDATE flow_runs
336
- SET revision = 0
337
- WHERE revision IS NULL
338
- `);
339
- }
340
- if (!hasFlowRunsColumn(db, "blocked_task_id")) db.exec(`ALTER TABLE flow_runs ADD COLUMN blocked_task_id TEXT;`);
341
- if (!hasFlowRunsColumn(db, "blocked_summary")) db.exec(`ALTER TABLE flow_runs ADD COLUMN blocked_summary TEXT;`);
342
- if (!hasFlowRunsColumn(db, "state_json")) db.exec(`ALTER TABLE flow_runs ADD COLUMN state_json TEXT;`);
343
- if (!hasFlowRunsColumn(db, "wait_json")) db.exec(`ALTER TABLE flow_runs ADD COLUMN wait_json TEXT;`);
344
- if (!hasFlowRunsColumn(db, "cancel_requested_at")) db.exec(`ALTER TABLE flow_runs ADD COLUMN cancel_requested_at INTEGER;`);
345
- db.exec(`CREATE INDEX IF NOT EXISTS idx_flow_runs_status ON flow_runs(status);`);
346
- db.exec(`CREATE INDEX IF NOT EXISTS idx_flow_runs_owner_key ON flow_runs(owner_key);`);
347
- db.exec(`CREATE INDEX IF NOT EXISTS idx_flow_runs_updated_at ON flow_runs(updated_at);`);
348
- }
349
- function ensureFlowRegistryPermissions(pathname) {
350
- const dir = resolveTaskFlowRegistryDir(process.env);
351
- mkdirSync(dir, {
352
- recursive: true,
353
- mode: FLOW_REGISTRY_DIR_MODE
354
- });
355
- chmodSync(dir, FLOW_REGISTRY_DIR_MODE);
356
- for (const suffix of FLOW_REGISTRY_SIDECAR_SUFFIXES) {
357
- const candidate = `${pathname}${suffix}`;
358
- if (!existsSync(candidate)) continue;
359
- chmodSync(candidate, FLOW_REGISTRY_FILE_MODE);
360
- }
361
- }
362
- function openFlowRegistryDatabase() {
363
- const pathname = resolveTaskFlowRegistrySqlitePath(process.env);
364
- if (cachedDatabase$1 && cachedDatabase$1.path === pathname) return cachedDatabase$1;
365
- if (cachedDatabase$1) {
366
- cachedDatabase$1.db.close();
367
- cachedDatabase$1 = null;
368
- }
369
- ensureFlowRegistryPermissions(pathname);
370
- const { DatabaseSync } = requireNodeSqlite();
371
- const db = new DatabaseSync(pathname);
372
- db.exec(`PRAGMA journal_mode = WAL;`);
373
- db.exec(`PRAGMA synchronous = NORMAL;`);
374
- db.exec(`PRAGMA busy_timeout = 5000;`);
375
- ensureSchema$1(db);
376
- ensureFlowRegistryPermissions(pathname);
377
- cachedDatabase$1 = {
378
- db,
379
- path: pathname,
380
- statements: createStatements$1(db)
381
- };
382
- return cachedDatabase$1;
383
- }
384
- function withWriteTransaction$1(write) {
385
- const { db, path, statements } = openFlowRegistryDatabase();
386
- db.exec("BEGIN IMMEDIATE");
387
- try {
388
- write(statements);
389
- db.exec("COMMIT");
390
- ensureFlowRegistryPermissions(path);
391
- } catch (error) {
392
- db.exec("ROLLBACK");
393
- throw error;
394
- }
395
- }
396
- function loadTaskFlowRegistryStateFromSqlite() {
397
- const { statements } = openFlowRegistryDatabase();
398
- const rows = statements.selectAll.all();
399
- return { flows: new Map(rows.map((row) => [row.flow_id, rowToFlowRecord(row)])) };
400
- }
401
- function saveTaskFlowRegistryStateToSqlite(snapshot) {
402
- withWriteTransaction$1((statements) => {
403
- statements.clearRows.run();
404
- for (const flow of snapshot.flows.values()) statements.upsertRow.run(bindFlowRecord(flow));
405
- });
406
- }
407
- function upsertTaskFlowRegistryRecordToSqlite(flow) {
408
- const store = openFlowRegistryDatabase();
409
- store.statements.upsertRow.run(bindFlowRecord(flow));
410
- ensureFlowRegistryPermissions(store.path);
411
- }
412
- function deleteTaskFlowRegistryRecordFromSqlite(flowId) {
413
- const store = openFlowRegistryDatabase();
414
- store.statements.deleteRow.run(flowId);
415
- ensureFlowRegistryPermissions(store.path);
416
- }
417
- function closeTaskFlowRegistrySqliteStore() {
418
- if (!cachedDatabase$1) return;
419
- cachedDatabase$1.db.close();
420
- cachedDatabase$1 = null;
421
- }
422
- let configuredFlowRegistryStore = {
423
- loadSnapshot: loadTaskFlowRegistryStateFromSqlite,
424
- saveSnapshot: saveTaskFlowRegistryStateToSqlite,
425
- upsertFlow: upsertTaskFlowRegistryRecordToSqlite,
426
- deleteFlow: deleteTaskFlowRegistryRecordFromSqlite,
427
- close: closeTaskFlowRegistrySqliteStore
428
- };
429
- let configuredFlowRegistryObservers = null;
430
- function getTaskFlowRegistryStore() {
431
- return configuredFlowRegistryStore;
432
- }
433
- function getTaskFlowRegistryObservers() {
434
- return configuredFlowRegistryObservers;
435
- }
436
- //#endregion
437
- //#region src/tasks/task-flow-registry.ts
438
- const log$1 = createSubsystemLogger("tasks/task-flow-registry");
439
- const flows = /* @__PURE__ */ new Map();
440
- let restoreAttempted$1 = false;
441
- let restoreFailureMessage = null;
442
- function cloneStructuredValue(value) {
443
- if (value === void 0) return;
444
- return structuredClone(value);
445
- }
446
- function cloneFlowRecord(record) {
447
- return {
448
- ...record,
449
- ...record.requesterOrigin ? { requesterOrigin: cloneStructuredValue(record.requesterOrigin) } : {},
450
- ...record.stateJson !== void 0 ? { stateJson: cloneStructuredValue(record.stateJson) } : {},
451
- ...record.waitJson !== void 0 ? { waitJson: cloneStructuredValue(record.waitJson) } : {}
452
- };
453
- }
454
- function normalizeRestoredFlowRecord(record) {
455
- const syncMode = record.syncMode === "task_mirrored" ? "task_mirrored" : "managed";
456
- const controllerId = syncMode === "managed" ? normalizeOptionalString(record.controllerId) ?? "core/legacy-restored" : void 0;
457
- return {
458
- ...record,
459
- syncMode,
460
- ownerKey: assertFlowOwnerKey(record.ownerKey),
461
- ...record.requesterOrigin ? { requesterOrigin: cloneStructuredValue(record.requesterOrigin) } : {},
462
- ...controllerId ? { controllerId } : {},
463
- currentStep: normalizeOptionalString(record.currentStep),
464
- blockedTaskId: normalizeOptionalString(record.blockedTaskId),
465
- blockedSummary: normalizeOptionalString(record.blockedSummary),
466
- ...record.stateJson !== void 0 ? { stateJson: cloneStructuredValue(record.stateJson) } : {},
467
- ...record.waitJson !== void 0 ? { waitJson: cloneStructuredValue(record.waitJson) } : {},
468
- revision: Math.max(0, record.revision),
469
- cancelRequestedAt: record.cancelRequestedAt ?? void 0,
470
- endedAt: record.endedAt ?? void 0
471
- };
472
- }
473
- function snapshotFlowRecords(source) {
474
- return [...source.values()].map((record) => cloneFlowRecord(record));
475
- }
476
- function emitFlowRegistryObserverEvent(createEvent) {
477
- const observers = getTaskFlowRegistryObservers();
478
- if (!observers?.onEvent) return;
479
- try {
480
- observers.onEvent(createEvent());
481
- } catch {}
482
- }
483
- function ensureNotifyPolicy$1(notifyPolicy) {
484
- return notifyPolicy ?? "done_only";
485
- }
486
- function normalizeJsonBlob(value) {
487
- return value === void 0 ? void 0 : cloneStructuredValue(value);
488
- }
489
- function assertFlowOwnerKey(ownerKey) {
490
- const normalized = normalizeOptionalString(ownerKey);
491
- if (!normalized) throw new Error("Flow ownerKey is required.");
492
- return normalized;
493
- }
494
- function assertControllerId(controllerId) {
495
- const normalized = normalizeOptionalString(controllerId);
496
- if (!normalized) throw new Error("Managed flow controllerId is required.");
497
- return normalized;
498
- }
499
- function resolveFlowBlockedSummary(task) {
500
- if (task.status !== "succeeded" || task.terminalOutcome !== "blocked") return;
501
- return normalizeOptionalString(task.terminalSummary) ?? normalizeOptionalString(task.progressSummary);
502
- }
503
- function deriveTaskFlowStatusFromTask(task) {
504
- if (task.status === "queued") return "queued";
505
- if (task.status === "running") return "running";
506
- if (task.status === "succeeded") return task.terminalOutcome === "blocked" ? "blocked" : "succeeded";
507
- if (task.status === "cancelled") return "cancelled";
508
- if (task.status === "lost") return "lost";
509
- return "failed";
510
- }
511
- function ensureFlowRegistryReady() {
512
- if (restoreAttempted$1) return;
513
- restoreAttempted$1 = true;
514
- try {
515
- const restored = getTaskFlowRegistryStore().loadSnapshot();
516
- flows.clear();
517
- for (const [flowId, flow] of restored.flows) flows.set(flowId, normalizeRestoredFlowRecord(flow));
518
- restoreFailureMessage = null;
519
- } catch (error) {
520
- flows.clear();
521
- restoreFailureMessage = formatErrorMessage(error);
522
- log$1.warn("Failed to restore task-flow registry", { error });
523
- return;
524
- }
525
- emitFlowRegistryObserverEvent(() => ({
526
- kind: "restored",
527
- flows: snapshotFlowRecords(flows)
528
- }));
529
- }
530
- function getTaskFlowRegistryRestoreFailure() {
531
- ensureFlowRegistryReady();
532
- return restoreFailureMessage;
533
- }
534
- function persistFlowRegistry() {
535
- getTaskFlowRegistryStore().saveSnapshot({ flows: new Map(snapshotFlowRecords(flows).map((flow) => [flow.flowId, flow])) });
536
- }
537
- function persistFlowUpsert(flow) {
538
- const store = getTaskFlowRegistryStore();
539
- if (store.upsertFlow) {
540
- store.upsertFlow(cloneFlowRecord(flow));
541
- return;
542
- }
543
- persistFlowRegistry();
544
- }
545
- function persistFlowDelete(flowId) {
546
- const store = getTaskFlowRegistryStore();
547
- if (store.deleteFlow) {
548
- store.deleteFlow(flowId);
549
- return;
550
- }
551
- persistFlowRegistry();
552
- }
553
- function buildFlowRecord(params) {
554
- const now = params.createdAt ?? Date.now();
555
- const syncMode = params.syncMode ?? "managed";
556
- const controllerId = syncMode === "managed" ? assertControllerId(params.controllerId) : void 0;
557
- return {
558
- flowId: crypto.randomUUID(),
559
- syncMode,
560
- ownerKey: assertFlowOwnerKey(params.ownerKey),
561
- ...params.requesterOrigin ? { requesterOrigin: cloneStructuredValue(params.requesterOrigin) } : {},
562
- ...controllerId ? { controllerId } : {},
563
- revision: Math.max(0, params.revision ?? 0),
564
- status: params.status ?? "queued",
565
- notifyPolicy: ensureNotifyPolicy$1(params.notifyPolicy),
566
- goal: params.goal,
567
- currentStep: normalizeOptionalString(params.currentStep),
568
- blockedTaskId: normalizeOptionalString(params.blockedTaskId),
569
- blockedSummary: normalizeOptionalString(params.blockedSummary),
570
- ...normalizeJsonBlob(params.stateJson) !== void 0 ? { stateJson: normalizeJsonBlob(params.stateJson) } : {},
571
- ...normalizeJsonBlob(params.waitJson) !== void 0 ? { waitJson: normalizeJsonBlob(params.waitJson) } : {},
572
- ...params.cancelRequestedAt != null ? { cancelRequestedAt: params.cancelRequestedAt } : {},
573
- createdAt: now,
574
- updatedAt: params.updatedAt ?? now,
575
- ...params.endedAt != null ? { endedAt: params.endedAt } : {}
576
- };
577
- }
578
- function applyFlowPatch(current, patch) {
579
- const controllerId = patch.controllerId === void 0 ? current.controllerId : normalizeOptionalString(patch.controllerId);
580
- if (current.syncMode === "managed") assertControllerId(controllerId);
581
- return {
582
- ...current,
583
- ...patch.status ? { status: patch.status } : {},
584
- ...patch.notifyPolicy ? { notifyPolicy: patch.notifyPolicy } : {},
585
- ...patch.goal ? { goal: patch.goal } : {},
586
- controllerId,
587
- currentStep: patch.currentStep === void 0 ? current.currentStep : normalizeOptionalString(patch.currentStep),
588
- blockedTaskId: patch.blockedTaskId === void 0 ? current.blockedTaskId : normalizeOptionalString(patch.blockedTaskId),
589
- blockedSummary: patch.blockedSummary === void 0 ? current.blockedSummary : normalizeOptionalString(patch.blockedSummary),
590
- stateJson: patch.stateJson === void 0 ? current.stateJson : normalizeJsonBlob(patch.stateJson),
591
- waitJson: patch.waitJson === void 0 ? current.waitJson : normalizeJsonBlob(patch.waitJson),
592
- cancelRequestedAt: patch.cancelRequestedAt === void 0 ? current.cancelRequestedAt : patch.cancelRequestedAt ?? void 0,
593
- revision: current.revision + 1,
594
- updatedAt: patch.updatedAt ?? Date.now(),
595
- endedAt: patch.endedAt === void 0 ? current.endedAt : patch.endedAt ?? void 0
596
- };
597
- }
598
- function writeFlowRecord(next, previous) {
599
- flows.set(next.flowId, next);
600
- persistFlowUpsert(next);
601
- emitFlowRegistryObserverEvent(() => ({
602
- kind: "upserted",
603
- flow: cloneFlowRecord(next),
604
- ...previous ? { previous: cloneFlowRecord(previous) } : {}
605
- }));
606
- return cloneFlowRecord(next);
607
- }
608
- function createFlowRecord(params) {
609
- ensureFlowRegistryReady();
610
- return writeFlowRecord(buildFlowRecord(params));
611
- }
612
- function createManagedTaskFlow(params) {
613
- return createFlowRecord({
614
- ...params,
615
- syncMode: "managed",
616
- controllerId: assertControllerId(params.controllerId)
617
- });
618
- }
619
- function createTaskFlowForTask(params) {
620
- const terminalFlowStatus = deriveTaskFlowStatusFromTask(params.task);
621
- const endedAt = terminalFlowStatus === "succeeded" || terminalFlowStatus === "blocked" || terminalFlowStatus === "failed" || terminalFlowStatus === "cancelled" || terminalFlowStatus === "lost" ? params.task.endedAt ?? params.task.lastEventAt ?? params.task.createdAt : void 0;
622
- return createFlowRecord({
623
- syncMode: "task_mirrored",
624
- ownerKey: params.task.ownerKey,
625
- requesterOrigin: params.requesterOrigin,
626
- status: terminalFlowStatus,
627
- notifyPolicy: params.task.notifyPolicy,
628
- goal: normalizeOptionalString(params.task.label) ?? (params.task.task.trim() || "Background task"),
629
- blockedTaskId: terminalFlowStatus === "blocked" ? normalizeOptionalString(params.task.taskId) : void 0,
630
- blockedSummary: resolveFlowBlockedSummary(params.task),
631
- createdAt: params.task.createdAt,
632
- updatedAt: params.task.lastEventAt ?? params.task.createdAt,
633
- ...endedAt !== void 0 ? { endedAt } : {}
634
- });
635
- }
636
- function updateFlowRecordByIdUnchecked(flowId, patch) {
637
- ensureFlowRegistryReady();
638
- const current = flows.get(flowId);
639
- if (!current) return null;
640
- return writeFlowRecord(applyFlowPatch(current, patch), current);
641
- }
642
- function updateFlowRecordByIdExpectedRevision(params) {
643
- ensureFlowRegistryReady();
644
- const current = flows.get(params.flowId);
645
- if (!current) return {
646
- applied: false,
647
- reason: "not_found"
648
- };
649
- if (current.revision !== params.expectedRevision) return {
650
- applied: false,
651
- reason: "revision_conflict",
652
- current: cloneFlowRecord(current)
653
- };
654
- return {
655
- applied: true,
656
- flow: writeFlowRecord(applyFlowPatch(current, params.patch), current)
657
- };
658
- }
659
- function setFlowWaiting(params) {
660
- return updateFlowRecordByIdExpectedRevision({
661
- flowId: params.flowId,
662
- expectedRevision: params.expectedRevision,
663
- patch: {
664
- status: normalizeOptionalString(params.blockedTaskId) || normalizeOptionalString(params.blockedSummary) ? "blocked" : "waiting",
665
- currentStep: params.currentStep,
666
- stateJson: params.stateJson,
667
- waitJson: params.waitJson,
668
- blockedTaskId: params.blockedTaskId,
669
- blockedSummary: params.blockedSummary,
670
- endedAt: null,
671
- updatedAt: params.updatedAt
672
- }
673
- });
674
- }
675
- function resumeFlow(params) {
676
- return updateFlowRecordByIdExpectedRevision({
677
- flowId: params.flowId,
678
- expectedRevision: params.expectedRevision,
679
- patch: {
680
- status: params.status ?? "queued",
681
- currentStep: params.currentStep,
682
- stateJson: params.stateJson,
683
- waitJson: null,
684
- blockedTaskId: null,
685
- blockedSummary: null,
686
- endedAt: null,
687
- updatedAt: params.updatedAt
688
- }
689
- });
690
- }
691
- function finishFlow(params) {
692
- const endedAt = params.endedAt ?? params.updatedAt ?? Date.now();
693
- return updateFlowRecordByIdExpectedRevision({
694
- flowId: params.flowId,
695
- expectedRevision: params.expectedRevision,
696
- patch: {
697
- status: "succeeded",
698
- currentStep: params.currentStep,
699
- stateJson: params.stateJson,
700
- waitJson: null,
701
- blockedTaskId: null,
702
- blockedSummary: null,
703
- endedAt,
704
- updatedAt: params.updatedAt ?? endedAt
705
- }
706
- });
707
- }
708
- function failFlow(params) {
709
- const endedAt = params.endedAt ?? params.updatedAt ?? Date.now();
710
- return updateFlowRecordByIdExpectedRevision({
711
- flowId: params.flowId,
712
- expectedRevision: params.expectedRevision,
713
- patch: {
714
- status: "failed",
715
- currentStep: params.currentStep,
716
- stateJson: params.stateJson,
717
- waitJson: null,
718
- blockedTaskId: params.blockedTaskId,
719
- blockedSummary: params.blockedSummary,
720
- endedAt,
721
- updatedAt: params.updatedAt ?? endedAt
722
- }
723
- });
724
- }
725
- function requestFlowCancel(params) {
726
- return updateFlowRecordByIdExpectedRevision({
727
- flowId: params.flowId,
728
- expectedRevision: params.expectedRevision,
729
- patch: {
730
- cancelRequestedAt: params.cancelRequestedAt ?? params.updatedAt ?? Date.now(),
731
- updatedAt: params.updatedAt
732
- }
733
- });
734
- }
735
- function syncFlowFromTask(task) {
736
- const flowId = task.parentFlowId?.trim();
737
- if (!flowId) return null;
738
- const flow = getTaskFlowById(flowId);
739
- if (!flow) return null;
740
- if (flow.syncMode !== "task_mirrored") return flow;
741
- const terminalFlowStatus = deriveTaskFlowStatusFromTask(task);
742
- const isTerminal = terminalFlowStatus === "succeeded" || terminalFlowStatus === "blocked" || terminalFlowStatus === "failed" || terminalFlowStatus === "cancelled" || terminalFlowStatus === "lost";
743
- return updateFlowRecordByIdUnchecked(flowId, {
744
- status: terminalFlowStatus,
745
- notifyPolicy: task.notifyPolicy,
746
- goal: normalizeOptionalString(task.label) ?? (task.task.trim() || "Background task"),
747
- blockedTaskId: terminalFlowStatus === "blocked" ? task.taskId.trim() || null : null,
748
- blockedSummary: terminalFlowStatus === "blocked" ? resolveFlowBlockedSummary(task) ?? null : null,
749
- waitJson: null,
750
- updatedAt: task.lastEventAt ?? Date.now(),
751
- ...isTerminal ? { endedAt: task.endedAt ?? task.lastEventAt ?? Date.now() } : { endedAt: null }
752
- });
753
- }
754
- function getTaskFlowById(flowId) {
755
- ensureFlowRegistryReady();
756
- const flow = flows.get(flowId);
757
- return flow ? cloneFlowRecord(flow) : void 0;
758
- }
759
- function listTaskFlowsForOwnerKey(ownerKey) {
760
- ensureFlowRegistryReady();
761
- const normalizedOwnerKey = ownerKey.trim();
762
- if (!normalizedOwnerKey) return [];
763
- return [...flows.values()].filter((flow) => flow.ownerKey.trim() === normalizedOwnerKey).map((flow) => cloneFlowRecord(flow)).toSorted((left, right) => right.createdAt - left.createdAt);
764
- }
765
- function findLatestTaskFlowForOwnerKey(ownerKey) {
766
- const flow = listTaskFlowsForOwnerKey(ownerKey)[0];
767
- return flow ? cloneFlowRecord(flow) : void 0;
768
- }
769
- function resolveTaskFlowForLookupToken(token) {
770
- const lookup = token.trim();
771
- if (!lookup) return;
772
- return getTaskFlowById(lookup) ?? findLatestTaskFlowForOwnerKey(lookup);
773
- }
774
- function listTaskFlowRecords() {
775
- ensureFlowRegistryReady();
776
- return [...flows.values()].map((flow) => cloneFlowRecord(flow)).toSorted((left, right) => right.createdAt - left.createdAt);
777
- }
778
- function deleteTaskFlowRecordById(flowId) {
779
- ensureFlowRegistryReady();
780
- const current = flows.get(flowId);
781
- if (!current) return false;
782
- flows.delete(flowId);
783
- persistFlowDelete(flowId);
784
- emitFlowRegistryObserverEvent(() => ({
785
- kind: "deleted",
786
- flowId,
787
- previous: cloneFlowRecord(current)
788
- }));
789
- return true;
790
- }
791
- //#endregion
792
- //#region src/tasks/task-registry.store.sqlite.ts
793
- let cachedDatabase = null;
794
- const TASK_REGISTRY_DIR_MODE = 448;
795
- const TASK_REGISTRY_FILE_MODE = 384;
796
- const TASK_REGISTRY_SIDECAR_SUFFIXES = [
797
- "",
798
- "-shm",
799
- "-wal"
800
- ];
801
- function normalizeNumber(value) {
802
- if (typeof value === "bigint") return Number(value);
803
- return typeof value === "number" ? value : void 0;
804
- }
805
- function serializeJson(value) {
806
- return value == null ? null : JSON.stringify(value);
807
- }
808
- function parseJsonValue(raw) {
809
- if (!raw?.trim()) return;
810
- try {
811
- return JSON.parse(raw);
812
- } catch {
813
- return;
814
- }
815
- }
816
- function rowToTaskRecord(row) {
817
- const startedAt = normalizeNumber(row.started_at);
818
- const endedAt = normalizeNumber(row.ended_at);
819
- const lastEventAt = normalizeNumber(row.last_event_at);
820
- const cleanupAfter = normalizeNumber(row.cleanup_after);
821
- return {
822
- taskId: row.task_id,
823
- runtime: row.runtime,
824
- ...row.source_id ? { sourceId: row.source_id } : {},
825
- requesterSessionKey: row.scope_kind === "system" ? "" : row.owner_key,
826
- ownerKey: row.owner_key,
827
- scopeKind: row.scope_kind,
828
- ...row.child_session_key ? { childSessionKey: row.child_session_key } : {},
829
- ...row.parent_flow_id ? { parentFlowId: row.parent_flow_id } : {},
830
- ...row.parent_task_id ? { parentTaskId: row.parent_task_id } : {},
831
- ...row.agent_id ? { agentId: row.agent_id } : {},
832
- ...row.run_id ? { runId: row.run_id } : {},
833
- ...row.label ? { label: row.label } : {},
834
- task: row.task,
835
- status: row.status,
836
- deliveryStatus: row.delivery_status,
837
- notifyPolicy: row.notify_policy,
838
- createdAt: normalizeNumber(row.created_at) ?? 0,
839
- ...startedAt != null ? { startedAt } : {},
840
- ...endedAt != null ? { endedAt } : {},
841
- ...lastEventAt != null ? { lastEventAt } : {},
842
- ...cleanupAfter != null ? { cleanupAfter } : {},
843
- ...row.error ? { error: row.error } : {},
844
- ...row.progress_summary ? { progressSummary: row.progress_summary } : {},
845
- ...row.terminal_summary ? { terminalSummary: row.terminal_summary } : {},
846
- ...row.terminal_outcome ? { terminalOutcome: row.terminal_outcome } : {}
847
- };
848
- }
849
- function rowToTaskDeliveryState(row) {
850
- const requesterOrigin = parseJsonValue(row.requester_origin_json);
851
- const lastNotifiedEventAt = normalizeNumber(row.last_notified_event_at);
852
- return {
853
- taskId: row.task_id,
854
- ...requesterOrigin ? { requesterOrigin } : {},
855
- ...lastNotifiedEventAt != null ? { lastNotifiedEventAt } : {}
856
- };
857
- }
858
- function bindTaskRecordBase(record) {
859
- return {
860
- task_id: record.taskId,
861
- runtime: record.runtime,
862
- source_id: record.sourceId ?? null,
863
- owner_key: record.ownerKey,
864
- scope_kind: record.scopeKind,
865
- child_session_key: record.childSessionKey ?? null,
866
- parent_flow_id: record.parentFlowId ?? null,
867
- parent_task_id: record.parentTaskId ?? null,
868
- agent_id: record.agentId ?? null,
869
- run_id: record.runId ?? null,
870
- label: record.label ?? null,
871
- task: record.task,
872
- status: record.status,
873
- delivery_status: record.deliveryStatus,
874
- notify_policy: record.notifyPolicy,
875
- created_at: record.createdAt,
876
- started_at: record.startedAt ?? null,
877
- ended_at: record.endedAt ?? null,
878
- last_event_at: record.lastEventAt ?? null,
879
- cleanup_after: record.cleanupAfter ?? null,
880
- error: record.error ?? null,
881
- progress_summary: record.progressSummary ?? null,
882
- terminal_summary: record.terminalSummary ?? null,
883
- terminal_outcome: record.terminalOutcome ?? null
884
- };
885
- }
886
- function bindTaskRecord(record, legacyRequesterSessionColumn) {
887
- if (!legacyRequesterSessionColumn) return bindTaskRecordBase(record);
888
- return {
889
- ...bindTaskRecordBase(record),
890
- requester_session_key: record.scopeKind === "system" ? "" : record.requesterSessionKey
891
- };
892
- }
893
- function bindTaskDeliveryState(state) {
894
- return {
895
- task_id: state.taskId,
896
- requester_origin_json: serializeJson(state.requesterOrigin),
897
- last_notified_event_at: state.lastNotifiedEventAt ?? null
898
- };
899
- }
900
- function createStatements(db) {
901
- const legacyRequesterSessionColumn = hasTaskRunsColumn(db, "requester_session_key");
902
- const upsertLegacyRequesterColumns = legacyRequesterSessionColumn ? `
903
- requester_session_key,
904
- ` : "";
905
- const upsertLegacyRequesterValues = legacyRequesterSessionColumn ? `
906
- @requester_session_key,
907
- ` : "";
908
- return {
909
- legacyRequesterSessionColumn,
910
- selectAll: db.prepare(`
911
- SELECT
912
- task_id,
913
- runtime,
914
- source_id,
915
- owner_key,
916
- scope_kind,
917
- child_session_key,
918
- parent_flow_id,
919
- parent_task_id,
920
- agent_id,
921
- run_id,
922
- label,
923
- task,
924
- status,
925
- delivery_status,
926
- notify_policy,
927
- created_at,
928
- started_at,
929
- ended_at,
930
- last_event_at,
931
- cleanup_after,
932
- error,
933
- progress_summary,
934
- terminal_summary,
935
- terminal_outcome
936
- FROM task_runs
937
- ORDER BY created_at ASC, task_id ASC
938
- `),
939
- selectAllDeliveryStates: db.prepare(`
940
- SELECT
941
- task_id,
942
- requester_origin_json,
943
- last_notified_event_at
944
- FROM task_delivery_state
945
- ORDER BY task_id ASC
946
- `),
947
- upsertRow: db.prepare(`
948
- INSERT INTO task_runs (
949
- task_id,
950
- runtime,
951
- source_id,
952
- ${upsertLegacyRequesterColumns} owner_key,
953
- scope_kind,
954
- child_session_key,
955
- parent_flow_id,
956
- parent_task_id,
957
- agent_id,
958
- run_id,
959
- label,
960
- task,
961
- status,
962
- delivery_status,
963
- notify_policy,
964
- created_at,
965
- started_at,
966
- ended_at,
967
- last_event_at,
968
- cleanup_after,
969
- error,
970
- progress_summary,
971
- terminal_summary,
972
- terminal_outcome
973
- ) VALUES (
974
- @task_id,
975
- @runtime,
976
- @source_id,
977
- ${upsertLegacyRequesterValues} @owner_key,
978
- @scope_kind,
979
- @child_session_key,
980
- @parent_flow_id,
981
- @parent_task_id,
982
- @agent_id,
983
- @run_id,
984
- @label,
985
- @task,
986
- @status,
987
- @delivery_status,
988
- @notify_policy,
989
- @created_at,
990
- @started_at,
991
- @ended_at,
992
- @last_event_at,
993
- @cleanup_after,
994
- @error,
995
- @progress_summary,
996
- @terminal_summary,
997
- @terminal_outcome
998
- )
999
- ON CONFLICT(task_id) DO UPDATE SET
1000
- runtime = excluded.runtime,
1001
- source_id = excluded.source_id,
1002
- owner_key = excluded.owner_key,
1003
- scope_kind = excluded.scope_kind,
1004
- child_session_key = excluded.child_session_key,
1005
- parent_flow_id = excluded.parent_flow_id,
1006
- parent_task_id = excluded.parent_task_id,
1007
- agent_id = excluded.agent_id,
1008
- run_id = excluded.run_id,
1009
- label = excluded.label,
1010
- task = excluded.task,
1011
- status = excluded.status,
1012
- delivery_status = excluded.delivery_status,
1013
- notify_policy = excluded.notify_policy,
1014
- created_at = excluded.created_at,
1015
- started_at = excluded.started_at,
1016
- ended_at = excluded.ended_at,
1017
- last_event_at = excluded.last_event_at,
1018
- cleanup_after = excluded.cleanup_after,
1019
- error = excluded.error,
1020
- progress_summary = excluded.progress_summary,
1021
- terminal_summary = excluded.terminal_summary,
1022
- terminal_outcome = excluded.terminal_outcome
1023
- `),
1024
- replaceDeliveryState: db.prepare(`
1025
- INSERT OR REPLACE INTO task_delivery_state (
1026
- task_id,
1027
- requester_origin_json,
1028
- last_notified_event_at
1029
- ) VALUES (
1030
- @task_id,
1031
- @requester_origin_json,
1032
- @last_notified_event_at
1033
- )
1034
- `),
1035
- deleteRow: db.prepare(`DELETE FROM task_runs WHERE task_id = ?`),
1036
- deleteDeliveryState: db.prepare(`DELETE FROM task_delivery_state WHERE task_id = ?`),
1037
- clearRows: db.prepare(`DELETE FROM task_runs`),
1038
- clearDeliveryStates: db.prepare(`DELETE FROM task_delivery_state`)
1039
- };
1040
- }
1041
- function hasTaskRunsColumn(db, columnName) {
1042
- return db.prepare(`PRAGMA table_info(task_runs)`).all().some((row) => row.name === columnName);
1043
- }
1044
- function migrateLegacyOwnerColumns(db) {
1045
- if (!hasTaskRunsColumn(db, "owner_key")) db.exec(`ALTER TABLE task_runs ADD COLUMN owner_key TEXT;`);
1046
- if (!hasTaskRunsColumn(db, "scope_kind")) db.exec(`ALTER TABLE task_runs ADD COLUMN scope_kind TEXT NOT NULL DEFAULT 'session';`);
1047
- if (hasTaskRunsColumn(db, "requester_session_key")) db.exec(`
1048
- UPDATE task_runs
1049
- SET owner_key = requester_session_key
1050
- WHERE owner_key IS NULL
1051
- `);
1052
- db.exec(`
1053
- UPDATE task_runs
1054
- SET owner_key = CASE
1055
- WHEN trim(COALESCE(owner_key, '')) <> '' THEN trim(owner_key)
1056
- ELSE 'system:' || runtime || ':' || COALESCE(NULLIF(source_id, ''), task_id)
1057
- END
1058
- `);
1059
- db.exec(`
1060
- UPDATE task_runs
1061
- SET scope_kind = CASE
1062
- WHEN scope_kind = 'system' THEN 'system'
1063
- WHEN owner_key LIKE 'system:%' THEN 'system'
1064
- ELSE 'session'
1065
- END
1066
- `);
1067
- }
1068
- function ensureSchema(db) {
1069
- db.exec(`
1070
- CREATE TABLE IF NOT EXISTS task_runs (
1071
- task_id TEXT PRIMARY KEY,
1072
- runtime TEXT NOT NULL,
1073
- source_id TEXT,
1074
- owner_key TEXT NOT NULL,
1075
- scope_kind TEXT NOT NULL,
1076
- child_session_key TEXT,
1077
- parent_flow_id TEXT,
1078
- parent_task_id TEXT,
1079
- agent_id TEXT,
1080
- run_id TEXT,
1081
- label TEXT,
1082
- task TEXT NOT NULL,
1083
- status TEXT NOT NULL,
1084
- delivery_status TEXT NOT NULL,
1085
- notify_policy TEXT NOT NULL,
1086
- created_at INTEGER NOT NULL,
1087
- started_at INTEGER,
1088
- ended_at INTEGER,
1089
- last_event_at INTEGER,
1090
- cleanup_after INTEGER,
1091
- error TEXT,
1092
- progress_summary TEXT,
1093
- terminal_summary TEXT,
1094
- terminal_outcome TEXT
1095
- );
1096
- `);
1097
- migrateLegacyOwnerColumns(db);
1098
- if (!hasTaskRunsColumn(db, "parent_flow_id")) db.exec(`ALTER TABLE task_runs ADD COLUMN parent_flow_id TEXT;`);
1099
- db.exec(`
1100
- CREATE TABLE IF NOT EXISTS task_delivery_state (
1101
- task_id TEXT PRIMARY KEY,
1102
- requester_origin_json TEXT,
1103
- last_notified_event_at INTEGER
1104
- );
1105
- `);
1106
- db.exec(`CREATE INDEX IF NOT EXISTS idx_task_runs_run_id ON task_runs(run_id);`);
1107
- db.exec(`CREATE INDEX IF NOT EXISTS idx_task_runs_status ON task_runs(status);`);
1108
- db.exec(`CREATE INDEX IF NOT EXISTS idx_task_runs_runtime_status ON task_runs(runtime, status);`);
1109
- db.exec(`CREATE INDEX IF NOT EXISTS idx_task_runs_cleanup_after ON task_runs(cleanup_after);`);
1110
- db.exec(`CREATE INDEX IF NOT EXISTS idx_task_runs_last_event_at ON task_runs(last_event_at);`);
1111
- db.exec(`CREATE INDEX IF NOT EXISTS idx_task_runs_owner_key ON task_runs(owner_key);`);
1112
- db.exec(`CREATE INDEX IF NOT EXISTS idx_task_runs_parent_flow_id ON task_runs(parent_flow_id);`);
1113
- db.exec(`CREATE INDEX IF NOT EXISTS idx_task_runs_child_session_key ON task_runs(child_session_key);`);
1114
- }
1115
- function ensureTaskRegistryPermissions(pathname) {
1116
- const dir = resolveTaskRegistryDir(process.env);
1117
- mkdirSync(dir, {
1118
- recursive: true,
1119
- mode: TASK_REGISTRY_DIR_MODE
1120
- });
1121
- chmodSync(dir, TASK_REGISTRY_DIR_MODE);
1122
- for (const suffix of TASK_REGISTRY_SIDECAR_SUFFIXES) {
1123
- const candidate = `${pathname}${suffix}`;
1124
- if (!existsSync(candidate)) continue;
1125
- chmodSync(candidate, TASK_REGISTRY_FILE_MODE);
1126
- }
1127
- }
1128
- function openTaskRegistryDatabase() {
1129
- const pathname = resolveTaskRegistrySqlitePath(process.env);
1130
- if (cachedDatabase && cachedDatabase.path === pathname) return cachedDatabase;
1131
- if (cachedDatabase) {
1132
- cachedDatabase.db.close();
1133
- cachedDatabase = null;
1134
- }
1135
- ensureTaskRegistryPermissions(pathname);
1136
- const { DatabaseSync } = requireNodeSqlite();
1137
- const db = new DatabaseSync(pathname);
1138
- db.exec(`PRAGMA journal_mode = WAL;`);
1139
- db.exec(`PRAGMA synchronous = NORMAL;`);
1140
- db.exec(`PRAGMA busy_timeout = 5000;`);
1141
- ensureSchema(db);
1142
- ensureTaskRegistryPermissions(pathname);
1143
- cachedDatabase = {
1144
- db,
1145
- path: pathname,
1146
- statements: createStatements(db)
1147
- };
1148
- return cachedDatabase;
1149
- }
1150
- function withWriteTransaction(write) {
1151
- const { db, path, statements } = openTaskRegistryDatabase();
1152
- db.exec("BEGIN IMMEDIATE");
1153
- try {
1154
- write(statements);
1155
- db.exec("COMMIT");
1156
- ensureTaskRegistryPermissions(path);
1157
- } catch (error) {
1158
- db.exec("ROLLBACK");
1159
- throw error;
1160
- }
1161
- }
1162
- function loadTaskRegistryStateFromSqlite() {
1163
- const { statements } = openTaskRegistryDatabase();
1164
- const taskRows = statements.selectAll.all();
1165
- const deliveryRows = statements.selectAllDeliveryStates.all();
1166
- return {
1167
- tasks: new Map(taskRows.map((row) => [row.task_id, rowToTaskRecord(row)])),
1168
- deliveryStates: new Map(deliveryRows.map((row) => [row.task_id, rowToTaskDeliveryState(row)]))
1169
- };
1170
- }
1171
- function saveTaskRegistryStateToSqlite(snapshot) {
1172
- withWriteTransaction((statements) => {
1173
- statements.clearDeliveryStates.run();
1174
- statements.clearRows.run();
1175
- for (const task of snapshot.tasks.values()) statements.upsertRow.run(bindTaskRecord(task, statements.legacyRequesterSessionColumn));
1176
- for (const state of snapshot.deliveryStates.values()) statements.replaceDeliveryState.run(bindTaskDeliveryState(state));
1177
- });
1178
- }
1179
- function upsertTaskRegistryRecordToSqlite(task) {
1180
- const store = openTaskRegistryDatabase();
1181
- store.statements.upsertRow.run(bindTaskRecord(task, store.statements.legacyRequesterSessionColumn));
1182
- }
1183
- function upsertTaskWithDeliveryStateToSqlite(params) {
1184
- withWriteTransaction((statements) => {
1185
- statements.upsertRow.run(bindTaskRecord(params.task, statements.legacyRequesterSessionColumn));
1186
- if (params.deliveryState) statements.replaceDeliveryState.run(bindTaskDeliveryState(params.deliveryState));
1187
- else statements.deleteDeliveryState.run(params.task.taskId);
1188
- });
1189
- }
1190
- function deleteTaskRegistryRecordFromSqlite(taskId) {
1191
- const store = openTaskRegistryDatabase();
1192
- store.statements.deleteRow.run(taskId);
1193
- store.statements.deleteDeliveryState.run(taskId);
1194
- }
1195
- function deleteTaskAndDeliveryStateFromSqlite(taskId) {
1196
- withWriteTransaction((statements) => {
1197
- statements.deleteRow.run(taskId);
1198
- statements.deleteDeliveryState.run(taskId);
1199
- });
1200
- }
1201
- function upsertTaskDeliveryStateToSqlite(state) {
1202
- openTaskRegistryDatabase().statements.replaceDeliveryState.run(bindTaskDeliveryState(state));
1203
- }
1204
- function deleteTaskDeliveryStateFromSqlite(taskId) {
1205
- openTaskRegistryDatabase().statements.deleteDeliveryState.run(taskId);
1206
- }
1207
- function closeTaskRegistrySqliteStore() {
1208
- if (!cachedDatabase) return;
1209
- cachedDatabase.db.close();
1210
- cachedDatabase = null;
1211
- }
1212
- let configuredTaskRegistryStore = {
1213
- loadSnapshot: loadTaskRegistryStateFromSqlite,
1214
- saveSnapshot: saveTaskRegistryStateToSqlite,
1215
- upsertTaskWithDeliveryState: upsertTaskWithDeliveryStateToSqlite,
1216
- upsertTask: upsertTaskRegistryRecordToSqlite,
1217
- deleteTaskWithDeliveryState: deleteTaskAndDeliveryStateFromSqlite,
1218
- deleteTask: deleteTaskRegistryRecordFromSqlite,
1219
- upsertDeliveryState: upsertTaskDeliveryStateToSqlite,
1220
- deleteDeliveryState: deleteTaskDeliveryStateFromSqlite,
1221
- close: closeTaskRegistrySqliteStore
1222
- };
1223
- let configuredTaskRegistryObservers = null;
1224
- function getTaskRegistryStore() {
1225
- return configuredTaskRegistryStore;
1226
- }
1227
- function getTaskRegistryObservers() {
1228
- return configuredTaskRegistryObservers;
1229
- }
1230
- //#endregion
1231
- //#region src/tasks/task-registry.ts
1232
- const log = createSubsystemLogger("tasks/registry");
1233
- const DEFAULT_TASK_RETENTION_MS = 10080 * 6e4;
1234
- const tasks = /* @__PURE__ */ new Map();
1235
- const taskDeliveryStates = /* @__PURE__ */ new Map();
1236
- const taskIdsByRunId = /* @__PURE__ */ new Map();
1237
- const taskIdsByOwnerKey = /* @__PURE__ */ new Map();
1238
- const taskIdsByParentFlowId = /* @__PURE__ */ new Map();
1239
- const taskIdsByRelatedSessionKey = /* @__PURE__ */ new Map();
1240
- const tasksWithPendingDelivery = /* @__PURE__ */ new Set();
1241
- let listenerStarted = false;
1242
- let restoreAttempted = false;
1243
- const TASK_REGISTRY_DELIVERY_RUNTIME_OVERRIDE_KEY = Symbol.for("squidclaw.taskRegistry.deliveryRuntimeOverride");
1244
- let deliveryRuntimePromise = null;
1245
- let controlRuntimePromise = null;
1246
- var ParentFlowLinkError = class extends Error {
1247
- constructor(code, message, details) {
1248
- super(message);
1249
- this.code = code;
1250
- this.details = details;
1251
- this.name = "ParentFlowLinkError";
1252
- }
1253
- };
1254
- function isParentFlowLinkError(error) {
1255
- return error instanceof ParentFlowLinkError;
1256
- }
1257
- function isActiveTaskStatus(status) {
1258
- return status === "queued" || status === "running";
1259
- }
1260
- function isTerminalFlowStatus(status) {
1261
- return status === "succeeded" || status === "failed" || status === "cancelled" || status === "lost";
1262
- }
1263
- function assertTaskOwner(params) {
1264
- if (!params.ownerKey.trim() && params.scopeKind !== "system") throw new Error("Task ownerKey is required.");
1265
- }
1266
- function assertParentFlowLinkAllowed(params) {
1267
- const flowId = params.parentFlowId?.trim();
1268
- if (!flowId) return;
1269
- if (params.scopeKind !== "session") throw new ParentFlowLinkError("scope_kind_not_session", "Only session-scoped tasks can link to flows.", { flowId });
1270
- const flow = getTaskFlowById(flowId);
1271
- if (!flow) throw new ParentFlowLinkError("parent_flow_not_found", `Parent flow not found: ${flowId}`, { flowId });
1272
- if (normalizeOptionalString(flow.ownerKey) !== normalizeOptionalString(params.ownerKey)) throw new ParentFlowLinkError("owner_key_mismatch", "Task ownerKey must match parent flow ownerKey.", { flowId });
1273
- if (flow.cancelRequestedAt != null) throw new ParentFlowLinkError("cancel_requested", "Parent flow cancellation has already been requested.", {
1274
- flowId,
1275
- status: flow.status
1276
- });
1277
- if (isTerminalFlowStatus(flow.status)) throw new ParentFlowLinkError("terminal", `Parent flow is already ${flow.status}.`, {
1278
- flowId,
1279
- status: flow.status
1280
- });
1281
- }
1282
- function cloneTaskRecord(record) {
1283
- return { ...record };
1284
- }
1285
- function cloneTaskDeliveryState(state) {
1286
- return {
1287
- ...state,
1288
- ...state.requesterOrigin ? { requesterOrigin: { ...state.requesterOrigin } } : {}
1289
- };
1290
- }
1291
- function snapshotTaskRecords(source) {
1292
- return [...source.values()].map((record) => cloneTaskRecord(record));
1293
- }
1294
- function emitTaskRegistryObserverEvent(createEvent) {
1295
- const observers = getTaskRegistryObservers();
1296
- if (!observers?.onEvent) return;
1297
- try {
1298
- observers.onEvent(createEvent());
1299
- } catch (error) {
1300
- log.warn("Task registry observer failed", {
1301
- event: "task-registry",
1302
- error
1303
- });
1304
- }
1305
- }
1306
- function persistTaskUpsert(task) {
1307
- const store = getTaskRegistryStore();
1308
- const deliveryState = taskDeliveryStates.get(task.taskId);
1309
- if (store.upsertTaskWithDeliveryState) {
1310
- store.upsertTaskWithDeliveryState({
1311
- task,
1312
- ...deliveryState ? { deliveryState } : {}
1313
- });
1314
- return;
1315
- }
1316
- if (store.upsertTask) {
1317
- store.upsertTask(task);
1318
- return;
1319
- }
1320
- store.saveSnapshot({
1321
- tasks,
1322
- deliveryStates: taskDeliveryStates
1323
- });
1324
- }
1325
- function persistTaskDelete(taskId) {
1326
- const store = getTaskRegistryStore();
1327
- if (store.deleteTaskWithDeliveryState) {
1328
- store.deleteTaskWithDeliveryState(taskId);
1329
- return;
1330
- }
1331
- if (store.deleteTask) {
1332
- store.deleteTask(taskId);
1333
- return;
1334
- }
1335
- store.saveSnapshot({
1336
- tasks,
1337
- deliveryStates: taskDeliveryStates
1338
- });
1339
- }
1340
- function persistTaskDeliveryStateUpsert(state) {
1341
- const store = getTaskRegistryStore();
1342
- if (store.upsertDeliveryState) {
1343
- store.upsertDeliveryState(state);
1344
- return;
1345
- }
1346
- store.saveSnapshot({
1347
- tasks,
1348
- deliveryStates: taskDeliveryStates
1349
- });
1350
- }
1351
- function persistTaskDeliveryStateDelete(taskId) {
1352
- const store = getTaskRegistryStore();
1353
- if (store.deleteDeliveryState) {
1354
- store.deleteDeliveryState(taskId);
1355
- return;
1356
- }
1357
- store.saveSnapshot({
1358
- tasks,
1359
- deliveryStates: taskDeliveryStates
1360
- });
1361
- }
1362
- function ensureDeliveryStatus(params) {
1363
- if (params.scopeKind === "system") return "not_applicable";
1364
- return params.ownerKey.trim() ? "pending" : "parent_missing";
1365
- }
1366
- function ensureNotifyPolicy(params) {
1367
- if (params.notifyPolicy) return params.notifyPolicy;
1368
- return (params.deliveryStatus ?? ensureDeliveryStatus({
1369
- ownerKey: params.ownerKey,
1370
- scopeKind: params.scopeKind
1371
- })) === "not_applicable" ? "silent" : "done_only";
1372
- }
1373
- function resolveTaskScopeKind(params) {
1374
- if (params.scopeKind) return params.scopeKind;
1375
- return params.requesterSessionKey.trim() ? "session" : "system";
1376
- }
1377
- function resolveTaskRequesterSessionKey(params) {
1378
- const requesterSessionKey = params.requesterSessionKey?.trim();
1379
- if (requesterSessionKey) return requesterSessionKey;
1380
- if (params.scopeKind === "system") return "";
1381
- return params.ownerKey?.trim() ?? "";
1382
- }
1383
- function resolveTaskOwnerKey(params) {
1384
- return params.ownerKey?.trim() || params.requesterSessionKey.trim();
1385
- }
1386
- function normalizeTaskSummary(value) {
1387
- return value?.replace(/\s+/g, " ").trim() || void 0;
1388
- }
1389
- function normalizeTaskStatus(value) {
1390
- return value === "running" || value === "queued" || value === "succeeded" || value === "failed" || value === "timed_out" || value === "cancelled" || value === "lost" ? value : "queued";
1391
- }
1392
- function normalizeTaskTerminalOutcome(value) {
1393
- return value === "succeeded" || value === "blocked" ? value : void 0;
1394
- }
1395
- function resolveTaskTerminalOutcome(params) {
1396
- const normalized = normalizeTaskTerminalOutcome(params.terminalOutcome);
1397
- if (normalized) return normalized;
1398
- return params.status === "succeeded" ? "succeeded" : void 0;
1399
- }
1400
- function appendTaskEvent(event) {
1401
- const summary = normalizeTaskSummary(event.summary);
1402
- return {
1403
- at: event.at,
1404
- kind: event.kind,
1405
- ...summary ? { summary } : {}
1406
- };
1407
- }
1408
- function loadTaskRegistryDeliveryRuntime() {
1409
- const deliveryRuntimeOverride = globalThis[TASK_REGISTRY_DELIVERY_RUNTIME_OVERRIDE_KEY];
1410
- if (deliveryRuntimeOverride) return Promise.resolve(deliveryRuntimeOverride);
1411
- deliveryRuntimePromise ??= import("./task-registry-delivery-runtime-DW5UnNOu.js");
1412
- return deliveryRuntimePromise;
1413
- }
1414
- function loadTaskRegistryControlRuntime() {
1415
- controlRuntimePromise ??= import("./task-registry-control.runtime-D0aPCpac.js");
1416
- return controlRuntimePromise;
1417
- }
1418
- function addRunIdIndex(taskId, runId) {
1419
- const trimmed = runId?.trim();
1420
- if (!trimmed) return;
1421
- let ids = taskIdsByRunId.get(trimmed);
1422
- if (!ids) {
1423
- ids = /* @__PURE__ */ new Set();
1424
- taskIdsByRunId.set(trimmed, ids);
1425
- }
1426
- ids.add(taskId);
1427
- }
1428
- function addIndexedKey(index, key, taskId) {
1429
- let ids = index.get(key);
1430
- if (!ids) {
1431
- ids = /* @__PURE__ */ new Set();
1432
- index.set(key, ids);
1433
- }
1434
- ids.add(taskId);
1435
- }
1436
- function deleteIndexedKey(index, key, taskId) {
1437
- const ids = index.get(key);
1438
- if (!ids) return;
1439
- ids.delete(taskId);
1440
- if (ids.size === 0) index.delete(key);
1441
- }
1442
- function getTaskRelatedSessionIndexKeys(task) {
1443
- return [...new Set([normalizeOptionalString(task.ownerKey), normalizeOptionalString(task.childSessionKey)].filter(Boolean))];
1444
- }
1445
- function addOwnerKeyIndex(taskId, task) {
1446
- const key = normalizeOptionalString(task.ownerKey);
1447
- if (!key) return;
1448
- addIndexedKey(taskIdsByOwnerKey, key, taskId);
1449
- }
1450
- function deleteOwnerKeyIndex(taskId, task) {
1451
- const key = normalizeOptionalString(task.ownerKey);
1452
- if (!key) return;
1453
- deleteIndexedKey(taskIdsByOwnerKey, key, taskId);
1454
- }
1455
- function addParentFlowIdIndex(taskId, task) {
1456
- const key = task.parentFlowId?.trim();
1457
- if (!key) return;
1458
- addIndexedKey(taskIdsByParentFlowId, key, taskId);
1459
- }
1460
- function deleteParentFlowIdIndex(taskId, task) {
1461
- const key = task.parentFlowId?.trim();
1462
- if (!key) return;
1463
- deleteIndexedKey(taskIdsByParentFlowId, key, taskId);
1464
- }
1465
- function addRelatedSessionKeyIndex(taskId, task) {
1466
- for (const sessionKey of getTaskRelatedSessionIndexKeys(task)) addIndexedKey(taskIdsByRelatedSessionKey, sessionKey, taskId);
1467
- }
1468
- function deleteRelatedSessionKeyIndex(taskId, task) {
1469
- for (const sessionKey of getTaskRelatedSessionIndexKeys(task)) deleteIndexedKey(taskIdsByRelatedSessionKey, sessionKey, taskId);
1470
- }
1471
- function rebuildRunIdIndex() {
1472
- taskIdsByRunId.clear();
1473
- for (const [taskId, task] of tasks.entries()) addRunIdIndex(taskId, task.runId);
1474
- }
1475
- function rebuildOwnerKeyIndex() {
1476
- taskIdsByOwnerKey.clear();
1477
- for (const [taskId, task] of tasks.entries()) addOwnerKeyIndex(taskId, task);
1478
- }
1479
- function rebuildParentFlowIdIndex() {
1480
- taskIdsByParentFlowId.clear();
1481
- for (const [taskId, task] of tasks.entries()) addParentFlowIdIndex(taskId, task);
1482
- }
1483
- function rebuildRelatedSessionKeyIndex() {
1484
- taskIdsByRelatedSessionKey.clear();
1485
- for (const [taskId, task] of tasks.entries()) addRelatedSessionKeyIndex(taskId, task);
1486
- }
1487
- function getTasksByRunId(runId) {
1488
- const ids = taskIdsByRunId.get(runId.trim());
1489
- if (!ids || ids.size === 0) return [];
1490
- return [...ids].map((taskId) => tasks.get(taskId)).filter((task) => Boolean(task));
1491
- }
1492
- function taskRunScopeKey(task) {
1493
- return [
1494
- task.runtime,
1495
- task.scopeKind,
1496
- normalizeOptionalString(task.ownerKey) ?? "",
1497
- normalizeOptionalString(task.childSessionKey) ?? ""
1498
- ].join("\0");
1499
- }
1500
- function getTasksByRunScope(params) {
1501
- const matches = getTasksByRunId(params.runId).filter((task) => !params.runtime || task.runtime === params.runtime);
1502
- const sessionKey = normalizeOptionalString(params.sessionKey);
1503
- if (sessionKey) {
1504
- const childMatches = matches.filter((task) => normalizeOptionalString(task.childSessionKey) === sessionKey);
1505
- if (childMatches.length > 0) return childMatches;
1506
- return matches.filter((task) => task.scopeKind === "session" && normalizeOptionalString(task.ownerKey) === sessionKey);
1507
- }
1508
- return new Set(matches.map((task) => taskRunScopeKey(task))).size <= 1 ? matches : [];
1509
- }
1510
- function getPeerTasksForDelivery(task) {
1511
- if (!task.runId?.trim()) return [];
1512
- return getTasksByRunId(task.runId).filter((candidate) => candidate.runtime === task.runtime && candidate.scopeKind === task.scopeKind && (normalizeOptionalString(candidate.ownerKey) ?? "") === (normalizeOptionalString(task.ownerKey) ?? "") && (normalizeOptionalString(candidate.childSessionKey) ?? "") === (normalizeOptionalString(task.childSessionKey) ?? ""));
1513
- }
1514
- function taskLookupPriority(task) {
1515
- return task.runtime === "cli" ? 1 : 0;
1516
- }
1517
- function pickPreferredRunIdTask(matches) {
1518
- return [...matches].toSorted((left, right) => {
1519
- const priorityDiff = taskLookupPriority(left) - taskLookupPriority(right);
1520
- if (priorityDiff !== 0) return priorityDiff;
1521
- return left.createdAt - right.createdAt;
1522
- })[0];
1523
- }
1524
- function compareTasksNewestFirst(left, right) {
1525
- const createdAtDiff = right.createdAt - left.createdAt;
1526
- if (createdAtDiff !== 0) return createdAtDiff;
1527
- return (right.insertionIndex ?? 0) - (left.insertionIndex ?? 0);
1528
- }
1529
- function findExistingTaskForCreate(params) {
1530
- const runId = params.runId?.trim();
1531
- const runScopeMatches = runId ? getTasksByRunId(runId).filter((task) => task.runtime === params.runtime && task.scopeKind === params.scopeKind && (normalizeOptionalString(task.ownerKey) ?? "") === (normalizeOptionalString(params.ownerKey) ?? "") && (normalizeOptionalString(task.childSessionKey) ?? "") === (normalizeOptionalString(params.childSessionKey) ?? "") && (normalizeOptionalString(task.parentFlowId) ?? "") === (normalizeOptionalString(params.parentFlowId) ?? "")) : [];
1532
- const exact = runId ? runScopeMatches.find((task) => (normalizeOptionalString(task.label) ?? "") === (normalizeOptionalString(params.label) ?? "") && (normalizeOptionalString(task.task) ?? "") === (normalizeOptionalString(params.task) ?? "")) : void 0;
1533
- if (exact) return exact;
1534
- if (!runId || params.runtime !== "acp") return;
1535
- if (runScopeMatches.length === 0) return;
1536
- return pickPreferredRunIdTask(runScopeMatches);
1537
- }
1538
- function mergeExistingTaskForCreate(existing, params) {
1539
- const patch = {};
1540
- const requesterOrigin = normalizeDeliveryContext(params.requesterOrigin);
1541
- const currentDeliveryState = taskDeliveryStates.get(existing.taskId);
1542
- if (requesterOrigin && !currentDeliveryState?.requesterOrigin) upsertTaskDeliveryState({
1543
- taskId: existing.taskId,
1544
- requesterOrigin,
1545
- lastNotifiedEventAt: currentDeliveryState?.lastNotifiedEventAt
1546
- });
1547
- if (params.sourceId?.trim() && !existing.sourceId?.trim()) patch.sourceId = params.sourceId.trim();
1548
- if (params.taskKind?.trim() && !existing.taskKind?.trim()) patch.taskKind = params.taskKind.trim();
1549
- if (params.parentFlowId?.trim() && !existing.parentFlowId?.trim()) {
1550
- assertParentFlowLinkAllowed({
1551
- ownerKey: existing.ownerKey,
1552
- scopeKind: existing.scopeKind,
1553
- parentFlowId: params.parentFlowId
1554
- });
1555
- patch.parentFlowId = params.parentFlowId.trim();
1556
- }
1557
- if (params.parentTaskId?.trim() && !existing.parentTaskId?.trim()) patch.parentTaskId = params.parentTaskId.trim();
1558
- if (params.agentId?.trim() && !existing.agentId?.trim()) patch.agentId = params.agentId.trim();
1559
- const nextLabel = params.label?.trim();
1560
- if (params.preferMetadata) {
1561
- if (nextLabel && (normalizeOptionalString(existing.label) ?? "") !== nextLabel) patch.label = nextLabel;
1562
- const nextTask = params.task.trim();
1563
- if (nextTask && (normalizeOptionalString(existing.task) ?? "") !== nextTask) patch.task = nextTask;
1564
- } else if (nextLabel && !existing.label?.trim()) patch.label = nextLabel;
1565
- if (params.deliveryStatus === "pending" && existing.deliveryStatus !== "delivered") patch.deliveryStatus = "pending";
1566
- const notifyPolicy = ensureNotifyPolicy({
1567
- notifyPolicy: params.notifyPolicy,
1568
- deliveryStatus: params.deliveryStatus,
1569
- ownerKey: existing.ownerKey,
1570
- scopeKind: existing.scopeKind
1571
- });
1572
- if (notifyPolicy !== existing.notifyPolicy && existing.notifyPolicy === "silent") patch.notifyPolicy = notifyPolicy;
1573
- if (Object.keys(patch).length === 0) return cloneTaskRecord(existing);
1574
- return updateTask(existing.taskId, patch) ?? cloneTaskRecord(existing);
1575
- }
1576
- function taskTerminalDeliveryIdempotencyKey(task) {
1577
- const outcome = task.status === "succeeded" ? task.terminalOutcome ?? "default" : "default";
1578
- return `task-terminal:${task.taskId}:${task.status}:${outcome}`;
1579
- }
1580
- function resolveTaskStateChangeIdempotencyKey(params) {
1581
- if (params.owner.flowId) return `flow-event:${params.owner.flowId}:${params.task.taskId}:${params.latestEvent.at}:${params.latestEvent.kind}`;
1582
- return `task-event:${params.task.taskId}:${params.latestEvent.at}:${params.latestEvent.kind}`;
1583
- }
1584
- function resolveTaskTerminalIdempotencyKey(task) {
1585
- const owner = resolveTaskDeliveryOwner(task);
1586
- if (owner.flowId) {
1587
- const outcome = task.status === "succeeded" ? task.terminalOutcome ?? "default" : "default";
1588
- return `flow-terminal:${owner.flowId}:${task.taskId}:${task.status}:${outcome}`;
1589
- }
1590
- return taskTerminalDeliveryIdempotencyKey(task);
1591
- }
1592
- function getLinkedFlowForDelivery(task) {
1593
- const flowId = task.parentFlowId?.trim();
1594
- if (!flowId || task.scopeKind !== "session") return;
1595
- const flow = getTaskFlowById(flowId);
1596
- if (!flow) return;
1597
- if (normalizeOptionalString(flow.ownerKey) !== normalizeOptionalString(task.ownerKey)) return;
1598
- return flow;
1599
- }
1600
- function resolveTaskDeliveryOwner(task) {
1601
- const flow = getLinkedFlowForDelivery(task);
1602
- if (flow) return {
1603
- sessionKey: flow.ownerKey.trim(),
1604
- requesterOrigin: normalizeDeliveryContext(flow.requesterOrigin ?? taskDeliveryStates.get(task.taskId)?.requesterOrigin),
1605
- flowId: flow.flowId
1606
- };
1607
- if (task.scopeKind !== "session") return {};
1608
- return {
1609
- sessionKey: task.ownerKey.trim(),
1610
- requesterOrigin: normalizeDeliveryContext(taskDeliveryStates.get(task.taskId)?.requesterOrigin)
1611
- };
1612
- }
1613
- function syncManagedFlowCancellationFromTask(task) {
1614
- const flowId = task.parentFlowId?.trim();
1615
- if (!flowId) return;
1616
- let flow = getTaskFlowById(flowId);
1617
- if (!flow || flow.syncMode !== "managed" || flow.cancelRequestedAt == null || isTerminalFlowStatus(flow.status)) return;
1618
- if (listTasksForFlowId(flowId).some((candidate) => isActiveTaskStatus(candidate.status))) return;
1619
- const endedAt = task.endedAt ?? task.lastEventAt ?? Date.now();
1620
- for (let attempt = 0; attempt < 2; attempt += 1) {
1621
- const result = updateFlowRecordByIdExpectedRevision({
1622
- flowId,
1623
- expectedRevision: flow.revision,
1624
- patch: {
1625
- status: "cancelled",
1626
- blockedTaskId: null,
1627
- blockedSummary: null,
1628
- waitJson: null,
1629
- endedAt,
1630
- updatedAt: endedAt
1631
- }
1632
- });
1633
- if (result.applied || result.reason === "not_found") return;
1634
- flow = result.current;
1635
- if (!flow || flow.syncMode !== "managed" || flow.cancelRequestedAt == null || isTerminalFlowStatus(flow.status)) return;
1636
- if (listTasksForFlowId(flowId).some((candidate) => isActiveTaskStatus(candidate.status))) return;
1637
- }
1638
- }
1639
- function restoreTaskRegistryOnce() {
1640
- if (restoreAttempted) return;
1641
- restoreAttempted = true;
1642
- try {
1643
- const restored = getTaskRegistryStore().loadSnapshot();
1644
- if (restored.tasks.size === 0 && restored.deliveryStates.size === 0) return;
1645
- for (const [taskId, task] of restored.tasks.entries()) tasks.set(taskId, task);
1646
- for (const [taskId, state] of restored.deliveryStates.entries()) taskDeliveryStates.set(taskId, state);
1647
- rebuildRunIdIndex();
1648
- rebuildOwnerKeyIndex();
1649
- rebuildParentFlowIdIndex();
1650
- rebuildRelatedSessionKeyIndex();
1651
- emitTaskRegistryObserverEvent(() => ({
1652
- kind: "restored",
1653
- tasks: snapshotTaskRecords(tasks)
1654
- }));
1655
- } catch (error) {
1656
- log.warn("Failed to restore task registry", { error });
1657
- }
1658
- }
1659
- function ensureTaskRegistryReady() {
1660
- restoreTaskRegistryOnce();
1661
- ensureListener();
1662
- }
1663
- function updateTask(taskId, patch) {
1664
- const current = tasks.get(taskId);
1665
- if (!current) return null;
1666
- const next = {
1667
- ...current,
1668
- ...patch
1669
- };
1670
- if (isTerminalTaskStatus(next.status) && typeof next.cleanupAfter !== "number") next.cleanupAfter = (next.endedAt ?? next.lastEventAt ?? Date.now()) + DEFAULT_TASK_RETENTION_MS;
1671
- const sessionIndexChanged = normalizeOptionalString(current.ownerKey) !== normalizeOptionalString(next.ownerKey) || normalizeOptionalString(current.childSessionKey) !== normalizeOptionalString(next.childSessionKey);
1672
- const parentFlowIndexChanged = current.parentFlowId?.trim() !== next.parentFlowId?.trim();
1673
- tasks.set(taskId, next);
1674
- if (patch.runId && patch.runId !== current.runId) rebuildRunIdIndex();
1675
- if (sessionIndexChanged) {
1676
- deleteOwnerKeyIndex(taskId, current);
1677
- addOwnerKeyIndex(taskId, next);
1678
- deleteRelatedSessionKeyIndex(taskId, current);
1679
- addRelatedSessionKeyIndex(taskId, next);
1680
- }
1681
- if (parentFlowIndexChanged) {
1682
- deleteParentFlowIdIndex(taskId, current);
1683
- addParentFlowIdIndex(taskId, next);
1684
- }
1685
- persistTaskUpsert(next);
1686
- try {
1687
- syncFlowFromTask(next);
1688
- } catch (error) {
1689
- log.warn("Failed to sync parent flow from task update", {
1690
- taskId,
1691
- flowId: next.parentFlowId,
1692
- error
1693
- });
1694
- }
1695
- try {
1696
- syncManagedFlowCancellationFromTask(next);
1697
- } catch (error) {
1698
- log.warn("Failed to finalize managed flow cancellation from task update", {
1699
- taskId,
1700
- flowId: next.parentFlowId,
1701
- error
1702
- });
1703
- }
1704
- emitTaskRegistryObserverEvent(() => ({
1705
- kind: "upserted",
1706
- task: cloneTaskRecord(next),
1707
- previous: cloneTaskRecord(current)
1708
- }));
1709
- return cloneTaskRecord(next);
1710
- }
1711
- function upsertTaskDeliveryState(state) {
1712
- const current = taskDeliveryStates.get(state.taskId);
1713
- const next = {
1714
- taskId: state.taskId,
1715
- ...state.requesterOrigin ? { requesterOrigin: normalizeDeliveryContext(state.requesterOrigin) } : {},
1716
- ...state.lastNotifiedEventAt != null ? { lastNotifiedEventAt: state.lastNotifiedEventAt } : {}
1717
- };
1718
- if (!next.requesterOrigin && typeof next.lastNotifiedEventAt !== "number" && !current) return cloneTaskDeliveryState({ taskId: state.taskId });
1719
- taskDeliveryStates.set(state.taskId, next);
1720
- persistTaskDeliveryStateUpsert(next);
1721
- return cloneTaskDeliveryState(next);
1722
- }
1723
- function getTaskDeliveryState(taskId) {
1724
- const state = taskDeliveryStates.get(taskId);
1725
- return state ? cloneTaskDeliveryState(state) : void 0;
1726
- }
1727
- function canDeliverTaskToRequesterOrigin(task) {
1728
- const origin = resolveTaskDeliveryOwner(task).requesterOrigin;
1729
- const channel = origin?.channel?.trim();
1730
- const to = origin?.to?.trim();
1731
- return Boolean(channel && to && isDeliverableMessageChannel(channel));
1732
- }
1733
- function resolveMissingOwnerDeliveryStatus(task) {
1734
- return task.scopeKind === "system" ? "not_applicable" : "parent_missing";
1735
- }
1736
- function queueTaskSystemEvent(task, text) {
1737
- const owner = resolveTaskDeliveryOwner(task);
1738
- const ownerKey = owner.sessionKey?.trim();
1739
- if (!ownerKey) return false;
1740
- enqueueSystemEvent(text, {
1741
- sessionKey: ownerKey,
1742
- contextKey: `task:${task.taskId}`,
1743
- deliveryContext: owner.requesterOrigin
1744
- });
1745
- requestHeartbeatNow({
1746
- reason: "background-task",
1747
- sessionKey: ownerKey
1748
- });
1749
- return true;
1750
- }
1751
- function queueBlockedTaskFollowup(task) {
1752
- const followupText = formatTaskBlockedFollowupMessage(task);
1753
- if (!followupText) return false;
1754
- const owner = resolveTaskDeliveryOwner(task);
1755
- const ownerKey = owner.sessionKey?.trim();
1756
- if (!ownerKey) return false;
1757
- enqueueSystemEvent(followupText, {
1758
- sessionKey: ownerKey,
1759
- contextKey: `task:${task.taskId}:blocked-followup`,
1760
- deliveryContext: owner.requesterOrigin
1761
- });
1762
- requestHeartbeatNow({
1763
- reason: "background-task-blocked",
1764
- sessionKey: ownerKey
1765
- });
1766
- return true;
1767
- }
1768
- async function maybeDeliverTaskTerminalUpdate(taskId) {
1769
- ensureTaskRegistryReady();
1770
- const current = tasks.get(taskId);
1771
- if (!current || !shouldAutoDeliverTaskTerminalUpdate(current)) return current ? cloneTaskRecord(current) : null;
1772
- if (tasksWithPendingDelivery.has(taskId)) return cloneTaskRecord(current);
1773
- tasksWithPendingDelivery.add(taskId);
1774
- try {
1775
- const latest = tasks.get(taskId);
1776
- if (!latest || !shouldAutoDeliverTaskTerminalUpdate(latest)) return latest ? cloneTaskRecord(latest) : null;
1777
- if (shouldSuppressDuplicateTerminalDelivery({
1778
- task: latest,
1779
- preferredTaskId: (latest.runId ? pickPreferredRunIdTask(getPeerTasksForDelivery(latest)) : void 0)?.taskId
1780
- })) return updateTask(taskId, {
1781
- deliveryStatus: "not_applicable",
1782
- lastEventAt: Date.now()
1783
- });
1784
- const owner = resolveTaskDeliveryOwner(latest);
1785
- const ownerSessionKey = owner.sessionKey?.trim();
1786
- if (!ownerSessionKey) return updateTask(taskId, {
1787
- deliveryStatus: resolveMissingOwnerDeliveryStatus(latest),
1788
- lastEventAt: Date.now()
1789
- });
1790
- const eventText = formatTaskTerminalMessage(latest);
1791
- if (!canDeliverTaskToRequesterOrigin(latest)) try {
1792
- queueTaskSystemEvent(latest, eventText);
1793
- if (latest.terminalOutcome === "blocked") queueBlockedTaskFollowup(latest);
1794
- return updateTask(taskId, {
1795
- deliveryStatus: "session_queued",
1796
- lastEventAt: Date.now()
1797
- });
1798
- } catch (error) {
1799
- log.warn("Failed to queue background task session delivery", {
1800
- taskId,
1801
- ownerKey: latest.ownerKey,
1802
- error
1803
- });
1804
- return updateTask(taskId, {
1805
- deliveryStatus: "failed",
1806
- lastEventAt: Date.now()
1807
- });
1808
- }
1809
- try {
1810
- const { sendMessage } = await loadTaskRegistryDeliveryRuntime();
1811
- const requesterAgentId = parseAgentSessionKey(ownerSessionKey)?.agentId;
1812
- const idempotencyKey = resolveTaskTerminalIdempotencyKey(latest);
1813
- await sendMessage({
1814
- channel: owner.requesterOrigin?.channel,
1815
- to: owner.requesterOrigin?.to ?? "",
1816
- accountId: owner.requesterOrigin?.accountId,
1817
- threadId: owner.requesterOrigin?.threadId,
1818
- content: eventText,
1819
- agentId: requesterAgentId,
1820
- idempotencyKey,
1821
- mirror: {
1822
- sessionKey: ownerSessionKey,
1823
- agentId: requesterAgentId,
1824
- idempotencyKey
1825
- }
1826
- });
1827
- if (latest.terminalOutcome === "blocked") queueBlockedTaskFollowup(latest);
1828
- return updateTask(taskId, {
1829
- deliveryStatus: "delivered",
1830
- lastEventAt: Date.now()
1831
- });
1832
- } catch (error) {
1833
- log.warn("Failed to deliver background task update", {
1834
- taskId,
1835
- ownerKey: ownerSessionKey,
1836
- requesterOrigin: owner.requesterOrigin,
1837
- error
1838
- });
1839
- try {
1840
- queueTaskSystemEvent(latest, eventText);
1841
- if (latest.terminalOutcome === "blocked") queueBlockedTaskFollowup(latest);
1842
- } catch (fallbackError) {
1843
- log.warn("Failed to queue background task fallback event", {
1844
- taskId,
1845
- ownerKey: latest.ownerKey,
1846
- error: fallbackError
1847
- });
1848
- }
1849
- return updateTask(taskId, {
1850
- deliveryStatus: "failed",
1851
- lastEventAt: Date.now()
1852
- });
1853
- }
1854
- } finally {
1855
- tasksWithPendingDelivery.delete(taskId);
1856
- }
1857
- }
1858
- async function maybeDeliverTaskStateChangeUpdate(taskId, latestEvent) {
1859
- ensureTaskRegistryReady();
1860
- const current = tasks.get(taskId);
1861
- if (!current || !shouldAutoDeliverTaskStateChange(current)) return current ? cloneTaskRecord(current) : null;
1862
- const deliveryState = getTaskDeliveryState(taskId);
1863
- if (!latestEvent || (deliveryState?.lastNotifiedEventAt ?? 0) >= latestEvent.at) return cloneTaskRecord(current);
1864
- const eventText = formatTaskStateChangeMessage(current, latestEvent);
1865
- if (!eventText) return cloneTaskRecord(current);
1866
- try {
1867
- const owner = resolveTaskDeliveryOwner(current);
1868
- const ownerSessionKey = owner.sessionKey?.trim();
1869
- if (!ownerSessionKey) return updateTask(taskId, {
1870
- deliveryStatus: resolveMissingOwnerDeliveryStatus(current),
1871
- lastEventAt: Date.now()
1872
- });
1873
- if (!canDeliverTaskToRequesterOrigin(current)) {
1874
- queueTaskSystemEvent(current, eventText);
1875
- upsertTaskDeliveryState({
1876
- taskId,
1877
- requesterOrigin: deliveryState?.requesterOrigin,
1878
- lastNotifiedEventAt: latestEvent.at
1879
- });
1880
- return updateTask(taskId, { lastEventAt: Date.now() });
1881
- }
1882
- const { sendMessage } = await loadTaskRegistryDeliveryRuntime();
1883
- const requesterAgentId = parseAgentSessionKey(ownerSessionKey)?.agentId;
1884
- const idempotencyKey = resolveTaskStateChangeIdempotencyKey({
1885
- task: current,
1886
- latestEvent,
1887
- owner
1888
- });
1889
- await sendMessage({
1890
- channel: owner.requesterOrigin?.channel,
1891
- to: owner.requesterOrigin?.to ?? "",
1892
- accountId: owner.requesterOrigin?.accountId,
1893
- threadId: owner.requesterOrigin?.threadId,
1894
- content: eventText,
1895
- agentId: requesterAgentId,
1896
- idempotencyKey,
1897
- mirror: {
1898
- sessionKey: ownerSessionKey,
1899
- agentId: requesterAgentId,
1900
- idempotencyKey
1901
- }
1902
- });
1903
- upsertTaskDeliveryState({
1904
- taskId,
1905
- requesterOrigin: deliveryState?.requesterOrigin,
1906
- lastNotifiedEventAt: latestEvent.at
1907
- });
1908
- return updateTask(taskId, { lastEventAt: Date.now() });
1909
- } catch (error) {
1910
- log.warn("Failed to deliver background task state change", {
1911
- taskId,
1912
- ownerKey: current.ownerKey,
1913
- error
1914
- });
1915
- return cloneTaskRecord(current);
1916
- }
1917
- }
1918
- function setTaskCleanupAfterById(params) {
1919
- ensureTaskRegistryReady();
1920
- return updateTask(params.taskId, { cleanupAfter: params.cleanupAfter });
1921
- }
1922
- function markTaskLostById(params) {
1923
- ensureTaskRegistryReady();
1924
- return updateTask(params.taskId, {
1925
- status: "lost",
1926
- endedAt: params.endedAt,
1927
- lastEventAt: params.lastEventAt ?? params.endedAt,
1928
- ...params.error !== void 0 ? { error: params.error } : {},
1929
- ...params.cleanupAfter !== void 0 ? { cleanupAfter: params.cleanupAfter } : {}
1930
- });
1931
- }
1932
- function updateTasksByRunId(params) {
1933
- const matches = getTasksByRunScope(params);
1934
- if (matches.length === 0) return [];
1935
- const updated = [];
1936
- for (const match of matches) {
1937
- const task = updateTask(match.taskId, params.patch);
1938
- if (task) updated.push(task);
1939
- }
1940
- return updated;
1941
- }
1942
- function ensureListener() {
1943
- if (listenerStarted) return;
1944
- listenerStarted = true;
1945
- onAgentEvent((evt) => {
1946
- restoreTaskRegistryOnce();
1947
- const scopedTasks = getTasksByRunScope({
1948
- runId: evt.runId,
1949
- sessionKey: evt.sessionKey
1950
- });
1951
- if (scopedTasks.length === 0) return;
1952
- const now = evt.ts || Date.now();
1953
- for (const current of scopedTasks) {
1954
- const patch = { lastEventAt: now };
1955
- if (evt.stream === "lifecycle") {
1956
- const phase = typeof evt.data?.phase === "string" ? evt.data.phase : void 0;
1957
- const startedAt = typeof evt.data?.startedAt === "number" ? evt.data.startedAt : current.startedAt;
1958
- const endedAt = typeof evt.data?.endedAt === "number" ? evt.data.endedAt : void 0;
1959
- if (startedAt) patch.startedAt = startedAt;
1960
- if (phase === "start") patch.status = "running";
1961
- else if (phase === "end") {
1962
- patch.status = evt.data?.aborted === true ? "timed_out" : "succeeded";
1963
- patch.endedAt = endedAt ?? now;
1964
- } else if (phase === "error") {
1965
- patch.status = "failed";
1966
- patch.endedAt = endedAt ?? now;
1967
- patch.error = typeof evt.data?.error === "string" ? evt.data.error : current.error;
1968
- }
1969
- } else if (evt.stream === "error") patch.error = typeof evt.data?.error === "string" ? evt.data.error : current.error;
1970
- const stateChangeEvent = patch.status && patch.status !== current.status ? appendTaskEvent({
1971
- at: now,
1972
- kind: patch.status,
1973
- summary: patch.status === "failed" ? patch.error ?? current.error : patch.status === "succeeded" ? current.terminalSummary : void 0
1974
- }) : void 0;
1975
- if (updateTask(current.taskId, patch)) {
1976
- maybeDeliverTaskStateChangeUpdate(current.taskId, stateChangeEvent);
1977
- maybeDeliverTaskTerminalUpdate(current.taskId);
1978
- }
1979
- }
1980
- });
1981
- }
1982
- function createTaskRecord(params) {
1983
- ensureTaskRegistryReady();
1984
- const requesterSessionKey = resolveTaskRequesterSessionKey(params);
1985
- const scopeKind = resolveTaskScopeKind({
1986
- scopeKind: params.scopeKind,
1987
- requesterSessionKey
1988
- });
1989
- const ownerKey = resolveTaskOwnerKey({
1990
- requesterSessionKey,
1991
- ownerKey: params.ownerKey
1992
- });
1993
- assertTaskOwner({
1994
- ownerKey,
1995
- scopeKind
1996
- });
1997
- assertParentFlowLinkAllowed({
1998
- ownerKey,
1999
- scopeKind,
2000
- parentFlowId: params.parentFlowId
2001
- });
2002
- const existing = findExistingTaskForCreate({
2003
- runtime: params.runtime,
2004
- ownerKey,
2005
- scopeKind,
2006
- childSessionKey: params.childSessionKey,
2007
- parentFlowId: params.parentFlowId,
2008
- runId: params.runId,
2009
- label: params.label,
2010
- task: params.task
2011
- });
2012
- if (existing) return mergeExistingTaskForCreate(existing, params);
2013
- const now = Date.now();
2014
- const taskId = crypto.randomUUID();
2015
- const status = normalizeTaskStatus(params.status);
2016
- const deliveryStatus = params.deliveryStatus ?? ensureDeliveryStatus({
2017
- ownerKey,
2018
- scopeKind
2019
- });
2020
- const notifyPolicy = ensureNotifyPolicy({
2021
- notifyPolicy: params.notifyPolicy,
2022
- deliveryStatus,
2023
- ownerKey,
2024
- scopeKind
2025
- });
2026
- const lastEventAt = params.lastEventAt ?? params.startedAt ?? now;
2027
- const record = {
2028
- taskId,
2029
- runtime: params.runtime,
2030
- taskKind: normalizeOptionalString(params.taskKind),
2031
- sourceId: normalizeOptionalString(params.sourceId),
2032
- requesterSessionKey,
2033
- ownerKey,
2034
- scopeKind,
2035
- childSessionKey: params.childSessionKey,
2036
- parentFlowId: normalizeOptionalString(params.parentFlowId),
2037
- parentTaskId: normalizeOptionalString(params.parentTaskId),
2038
- agentId: normalizeOptionalString(params.agentId),
2039
- runId: normalizeOptionalString(params.runId),
2040
- label: normalizeOptionalString(params.label),
2041
- task: params.task,
2042
- status,
2043
- deliveryStatus,
2044
- notifyPolicy,
2045
- createdAt: now,
2046
- startedAt: params.startedAt,
2047
- lastEventAt,
2048
- cleanupAfter: params.cleanupAfter,
2049
- progressSummary: normalizeTaskSummary(params.progressSummary),
2050
- terminalSummary: normalizeTaskSummary(params.terminalSummary),
2051
- terminalOutcome: resolveTaskTerminalOutcome({
2052
- status,
2053
- terminalOutcome: params.terminalOutcome
2054
- })
2055
- };
2056
- if (isTerminalTaskStatus(record.status) && typeof record.cleanupAfter !== "number") record.cleanupAfter = (record.endedAt ?? record.lastEventAt ?? record.createdAt) + DEFAULT_TASK_RETENTION_MS;
2057
- tasks.set(taskId, record);
2058
- upsertTaskDeliveryState({
2059
- taskId,
2060
- requesterOrigin: normalizeDeliveryContext(params.requesterOrigin)
2061
- });
2062
- addRunIdIndex(taskId, record.runId);
2063
- addOwnerKeyIndex(taskId, record);
2064
- addParentFlowIdIndex(taskId, record);
2065
- addRelatedSessionKeyIndex(taskId, record);
2066
- persistTaskUpsert(record);
2067
- try {
2068
- syncFlowFromTask(record);
2069
- } catch (error) {
2070
- log.warn("Failed to sync parent flow from task create", {
2071
- taskId: record.taskId,
2072
- flowId: record.parentFlowId,
2073
- error
2074
- });
2075
- }
2076
- emitTaskRegistryObserverEvent(() => ({
2077
- kind: "upserted",
2078
- task: cloneTaskRecord(record)
2079
- }));
2080
- if (isTerminalTaskStatus(record.status)) maybeDeliverTaskTerminalUpdate(taskId);
2081
- return cloneTaskRecord(record);
2082
- }
2083
- function updateTaskStateByRunId(params) {
2084
- ensureTaskRegistryReady();
2085
- const matches = getTasksByRunScope(params);
2086
- if (matches.length === 0) return [];
2087
- const updated = [];
2088
- for (const current of matches) {
2089
- const patch = {};
2090
- const nextStatus = params.status ? normalizeTaskStatus(params.status) : current.status;
2091
- const eventAt = params.lastEventAt ?? params.endedAt ?? Date.now();
2092
- if (params.status) patch.status = normalizeTaskStatus(params.status);
2093
- if (params.startedAt != null) patch.startedAt = params.startedAt;
2094
- if (params.endedAt != null) patch.endedAt = params.endedAt;
2095
- if (params.lastEventAt != null) patch.lastEventAt = params.lastEventAt;
2096
- if (params.error !== void 0) patch.error = params.error;
2097
- if (params.progressSummary !== void 0) patch.progressSummary = normalizeTaskSummary(params.progressSummary);
2098
- if (params.terminalSummary !== void 0) patch.terminalSummary = normalizeTaskSummary(params.terminalSummary);
2099
- if (params.terminalOutcome !== void 0) patch.terminalOutcome = resolveTaskTerminalOutcome({
2100
- status: nextStatus,
2101
- terminalOutcome: params.terminalOutcome
2102
- });
2103
- const eventSummary = normalizeTaskSummary(params.eventSummary) ?? (nextStatus === "failed" ? normalizeTaskSummary(params.error ?? current.error) : nextStatus === "succeeded" ? normalizeTaskSummary(params.terminalSummary ?? current.terminalSummary) : void 0);
2104
- const nextEvent = params.status && params.status !== current.status || Boolean(normalizeTaskSummary(params.eventSummary)) ? appendTaskEvent({
2105
- at: eventAt,
2106
- kind: params.status && normalizeTaskStatus(params.status) !== current.status ? normalizeTaskStatus(params.status) : "progress",
2107
- summary: eventSummary
2108
- }) : void 0;
2109
- const task = updateTask(current.taskId, patch);
2110
- if (task) {
2111
- updated.push(task);
2112
- maybeDeliverTaskStateChangeUpdate(task.taskId, nextEvent);
2113
- maybeDeliverTaskTerminalUpdate(task.taskId);
2114
- }
2115
- }
2116
- return updated;
2117
- }
2118
- function updateTaskDeliveryByRunId(params) {
2119
- ensureTaskRegistryReady();
2120
- return updateTasksByRunId({
2121
- runId: params.runId,
2122
- runtime: params.runtime,
2123
- sessionKey: params.sessionKey,
2124
- patch: { deliveryStatus: params.deliveryStatus }
2125
- });
2126
- }
2127
- function markTaskRunningByRunId(params) {
2128
- return updateTaskStateByRunId({
2129
- runId: params.runId,
2130
- runtime: params.runtime,
2131
- sessionKey: params.sessionKey,
2132
- status: "running",
2133
- startedAt: params.startedAt,
2134
- lastEventAt: params.lastEventAt,
2135
- progressSummary: params.progressSummary,
2136
- eventSummary: params.eventSummary
2137
- });
2138
- }
2139
- function recordTaskProgressByRunId(params) {
2140
- return updateTaskStateByRunId({
2141
- runId: params.runId,
2142
- runtime: params.runtime,
2143
- sessionKey: params.sessionKey,
2144
- lastEventAt: params.lastEventAt,
2145
- progressSummary: params.progressSummary,
2146
- eventSummary: params.eventSummary
2147
- });
2148
- }
2149
- function markTaskTerminalByRunId(params) {
2150
- return updateTaskStateByRunId({
2151
- runId: params.runId,
2152
- runtime: params.runtime,
2153
- sessionKey: params.sessionKey,
2154
- status: params.status,
2155
- startedAt: params.startedAt,
2156
- endedAt: params.endedAt,
2157
- lastEventAt: params.lastEventAt,
2158
- error: params.error,
2159
- progressSummary: params.progressSummary,
2160
- terminalSummary: params.terminalSummary,
2161
- terminalOutcome: params.terminalOutcome
2162
- });
2163
- }
2164
- function setTaskRunDeliveryStatusByRunId(params) {
2165
- return updateTaskDeliveryByRunId(params);
2166
- }
2167
- function updateTaskNotifyPolicyById(params) {
2168
- ensureTaskRegistryReady();
2169
- return updateTask(params.taskId, {
2170
- notifyPolicy: params.notifyPolicy,
2171
- lastEventAt: Date.now()
2172
- });
2173
- }
2174
- function linkTaskToFlowById(params) {
2175
- ensureTaskRegistryReady();
2176
- const flowId = params.flowId.trim();
2177
- if (!flowId) return null;
2178
- const current = tasks.get(params.taskId);
2179
- if (!current) return null;
2180
- if (current.parentFlowId?.trim()) return cloneTaskRecord(current);
2181
- assertParentFlowLinkAllowed({
2182
- ownerKey: current.ownerKey,
2183
- scopeKind: current.scopeKind,
2184
- parentFlowId: flowId
2185
- });
2186
- return updateTask(params.taskId, { parentFlowId: flowId });
2187
- }
2188
- async function cancelTaskById(params) {
2189
- ensureTaskRegistryReady();
2190
- const task = tasks.get(params.taskId.trim());
2191
- if (!task) return {
2192
- found: false,
2193
- cancelled: false,
2194
- reason: "Task not found."
2195
- };
2196
- if (task.status === "succeeded" || task.status === "failed" || task.status === "timed_out" || task.status === "lost" || task.status === "cancelled") return {
2197
- found: true,
2198
- cancelled: false,
2199
- reason: "Task is already terminal.",
2200
- task: cloneTaskRecord(task)
2201
- };
2202
- const childSessionKey = task.childSessionKey?.trim();
2203
- if (!childSessionKey) return {
2204
- found: true,
2205
- cancelled: false,
2206
- reason: "Task has no cancellable child session.",
2207
- task: cloneTaskRecord(task)
2208
- };
2209
- try {
2210
- if (task.runtime === "acp") {
2211
- const { getAcpSessionManager } = await loadTaskRegistryControlRuntime();
2212
- await getAcpSessionManager().cancelSession({
2213
- cfg: params.cfg,
2214
- sessionKey: childSessionKey,
2215
- reason: "task-cancel"
2216
- });
2217
- } else if (task.runtime === "subagent") {
2218
- const { killSubagentRunAdmin } = await loadTaskRegistryControlRuntime();
2219
- const result = await killSubagentRunAdmin({
2220
- cfg: params.cfg,
2221
- sessionKey: childSessionKey
2222
- });
2223
- if (!result.found || !result.killed) return {
2224
- found: true,
2225
- cancelled: false,
2226
- reason: result.found ? "Subagent was not running." : "Subagent task not found.",
2227
- task: cloneTaskRecord(task)
2228
- };
2229
- } else return {
2230
- found: true,
2231
- cancelled: false,
2232
- reason: "Task runtime does not support cancellation yet.",
2233
- task: cloneTaskRecord(task)
2234
- };
2235
- const updated = updateTask(task.taskId, {
2236
- status: "cancelled",
2237
- endedAt: Date.now(),
2238
- lastEventAt: Date.now(),
2239
- error: "Cancelled by operator."
2240
- });
2241
- if (updated) maybeDeliverTaskTerminalUpdate(updated.taskId);
2242
- return {
2243
- found: true,
2244
- cancelled: true,
2245
- task: updated ?? cloneTaskRecord(task)
2246
- };
2247
- } catch (error) {
2248
- return {
2249
- found: true,
2250
- cancelled: false,
2251
- reason: formatErrorMessage(error),
2252
- task: cloneTaskRecord(task)
2253
- };
2254
- }
2255
- }
2256
- function listTaskRecords() {
2257
- ensureTaskRegistryReady();
2258
- return [...tasks.values()].map((task, insertionIndex) => ({
2259
- ...cloneTaskRecord(task),
2260
- insertionIndex
2261
- })).toSorted(compareTasksNewestFirst).map(({ insertionIndex: _, ...task }) => task);
2262
- }
2263
- function getTaskById(taskId) {
2264
- ensureTaskRegistryReady();
2265
- const task = tasks.get(taskId.trim());
2266
- return task ? cloneTaskRecord(task) : void 0;
2267
- }
2268
- function findTaskByRunId(runId) {
2269
- ensureTaskRegistryReady();
2270
- const task = pickPreferredRunIdTask(getTasksByRunId(runId));
2271
- return task ? cloneTaskRecord(task) : void 0;
2272
- }
2273
- function listTasksFromIndex(index, key) {
2274
- const ids = index.get(key);
2275
- if (!ids || ids.size === 0) return [];
2276
- return [...ids].map((taskId, insertionIndex) => {
2277
- const task = tasks.get(taskId);
2278
- return task ? {
2279
- ...cloneTaskRecord(task),
2280
- insertionIndex
2281
- } : null;
2282
- }).filter((task) => Boolean(task)).toSorted(compareTasksNewestFirst).map(({ insertionIndex: _, ...task }) => task);
2283
- }
2284
- function listTasksForSessionKey(sessionKey) {
2285
- ensureTaskRegistryReady();
2286
- const key = normalizeOptionalString(sessionKey);
2287
- if (!key) return [];
2288
- return listTasksFromIndex(taskIdsByRelatedSessionKey, key);
2289
- }
2290
- function listTasksForAgentId(agentId) {
2291
- ensureTaskRegistryReady();
2292
- const lookup = agentId.trim();
2293
- if (!lookup) return [];
2294
- return snapshotTaskRecords(tasks).filter((task) => task.agentId?.trim() === lookup).toSorted(compareTasksNewestFirst);
2295
- }
2296
- function listTasksForOwnerKey(ownerKey) {
2297
- ensureTaskRegistryReady();
2298
- const key = normalizeOptionalString(ownerKey);
2299
- if (!key) return [];
2300
- return listTasksFromIndex(taskIdsByOwnerKey, key);
2301
- }
2302
- function listTasksForFlowId(flowId) {
2303
- ensureTaskRegistryReady();
2304
- const key = flowId.trim();
2305
- if (!key) return [];
2306
- return listTasksFromIndex(taskIdsByParentFlowId, key);
2307
- }
2308
- function findLatestTaskForRelatedSessionKey(sessionKey) {
2309
- const task = listTasksForRelatedSessionKey(sessionKey)[0];
2310
- return task ? cloneTaskRecord(task) : void 0;
2311
- }
2312
- function listTasksForRelatedSessionKey(sessionKey) {
2313
- ensureTaskRegistryReady();
2314
- const key = normalizeOptionalString(sessionKey);
2315
- if (!key) return [];
2316
- return listTasksFromIndex(taskIdsByRelatedSessionKey, key);
2317
- }
2318
- function resolveTaskForLookupToken(token) {
2319
- const lookup = token.trim();
2320
- if (!lookup) return;
2321
- return getTaskById(lookup) ?? findTaskByRunId(lookup) ?? findLatestTaskForRelatedSessionKey(lookup);
2322
- }
2323
- function deleteTaskRecordById(taskId) {
2324
- ensureTaskRegistryReady();
2325
- const current = tasks.get(taskId);
2326
- if (!current) return false;
2327
- deleteOwnerKeyIndex(taskId, current);
2328
- deleteParentFlowIdIndex(taskId, current);
2329
- deleteRelatedSessionKeyIndex(taskId, current);
2330
- tasks.delete(taskId);
2331
- taskDeliveryStates.delete(taskId);
2332
- rebuildRunIdIndex();
2333
- persistTaskDelete(taskId);
2334
- persistTaskDeliveryStateDelete(taskId);
2335
- emitTaskRegistryObserverEvent(() => ({
2336
- kind: "deleted",
2337
- taskId: current.taskId,
2338
- previous: cloneTaskRecord(current)
2339
- }));
2340
- return true;
2341
- }
2342
- //#endregion
2343
- export { getTaskFlowById as A, updateTaskNotifyPolicyById as C, failFlow as D, deleteTaskFlowRecordById as E, resolveTaskFlowForLookupToken as F, resumeFlow as I, setFlowWaiting as L, listTaskFlowRecords as M, listTaskFlowsForOwnerKey as N, findLatestTaskFlowForOwnerKey as O, requestFlowCancel as P, updateFlowRecordByIdExpectedRevision as R, setTaskRunDeliveryStatusByRunId as S, createTaskFlowForTask as T, markTaskTerminalByRunId as _, findTaskByRunId as a, resolveTaskForLookupToken as b, linkTaskToFlowById as c, listTasksForFlowId as d, listTasksForOwnerKey as f, markTaskRunningByRunId as g, markTaskLostById as h, ensureTaskRegistryReady as i, getTaskFlowRegistryRestoreFailure as j, finishFlow as k, listTaskRecords as l, listTasksForSessionKey as m, createTaskRecord as n, getTaskById as o, listTasksForRelatedSessionKey as p, deleteTaskRecordById as r, isParentFlowLinkError as s, cancelTaskById as t, listTasksForAgentId as u, maybeDeliverTaskTerminalUpdate as v, createManagedTaskFlow as w, setTaskCleanupAfterById as x, recordTaskProgressByRunId as y };