@symerian/symi 2.8.13 → 2.8.15

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 (272) hide show
  1. package/dist/{acp-cli-D7uCUCr8.js → acp-cli-BgR7mxTS.js} +2 -2
  2. package/dist/{acp-cli-CAU8UW9I.js → acp-cli-D1JYg9c1.js} +2 -2
  3. package/dist/{agents-CgCg4syn.js → agents-BhhAcFrX.js} +5 -5
  4. package/dist/{agents.config-BnPC7uct.js → agents.config-BOvsz6E6.js} +1 -1
  5. package/dist/{agents.config-DqWxpgkX.js → agents.config-D967tgmP.js} +1 -1
  6. package/dist/{audit-Oa5dsn5p.js → audit-Dr_8rC6G.js} +3 -3
  7. package/dist/{audit-Bi9Je9FZ.js → audit-xiwEIT96.js} +3 -3
  8. package/dist/{auth-choice-BKwypsnS.js → auth-choice-DEKKbufH.js} +2 -2
  9. package/dist/{auth-choice-BIlBt2d0.js → auth-choice-Pzy-t2mh.js} +2 -2
  10. package/dist/{banner-CX5CuLWQ.js → banner-CiHQEfyr.js} +1 -1
  11. package/dist/{browser-cli-5ME9iiC3.js → browser-cli-BQeCPbES.js} +3 -3
  12. package/dist/{browser-cli-BTci35qB.js → browser-cli-IXepRCZR.js} +3 -3
  13. package/dist/build-info.json +3 -3
  14. package/dist/bundled/boot-md/handler.js +2 -2
  15. package/dist/bundled/session-memory/handler.js +2 -2
  16. package/dist/{call-Cmb04dff.js → call-BkJK3eYP.js} +2 -1
  17. package/dist/{call-BrRWr7Lj.js → call-CAGvQYXj.js} +2 -1
  18. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  19. package/dist/{channel-options-mUKQVJQl.js → channel-options-DGuilErd.js} +1 -1
  20. package/dist/{channel-options-7y9EuPLO.js → channel-options-_erlRi2w.js} +1 -1
  21. package/dist/{channel-web-Dldh4zVI.js → channel-web-DwfovJKQ.js} +1 -1
  22. package/dist/{channels-cli-Q6Q8LokG.js → channels-cli-B2Zf1oz9.js} +10 -10
  23. package/dist/{channels-cli-Dz9vV1KL.js → channels-cli-DUsK2bXE.js} +10 -10
  24. package/dist/cli/daemon-cli.js +1 -1
  25. package/dist/{cli-DMsLCQbO.js → cli-BpmyiZc9.js} +7 -7
  26. package/dist/{cli-D4WYEtu4.js → cli-DUiSlxsb.js} +7 -7
  27. package/dist/{client-C7AOOnKZ.js → client-CYsBIR3j.js} +27 -1
  28. package/dist/{client-qUlxXXVJ.js → client-Cmq13-uF.js} +27 -1
  29. package/dist/{command-registry-cEqGIx4b.js → command-registry-B8LVEWW9.js} +11 -11
  30. package/dist/{completion-cli-Bw0jbNaG.js → completion-cli-D-_MV8eA.js} +1 -1
  31. package/dist/{completion-cli-C5GCKfKT.js → completion-cli-DZeK6_ev.js} +2 -2
  32. package/dist/{config-cli-DP0hP7WR.js → config-cli-B7ZvHIMY.js} +1 -1
  33. package/dist/{config-cli-DgHooQ4_.js → config-cli-D_m0QL6c.js} +1 -1
  34. package/dist/{configure-OUiXvgMg.js → configure-DFg-N_i2.js} +6 -6
  35. package/dist/{configure-BQUkaPdS.js → configure-DXml-xDR.js} +6 -6
  36. package/dist/control-ui/index.html +7 -0
  37. package/dist/control-ui/js/menu.js +2 -0
  38. package/dist/control-ui/js/settings.js +1 -0
  39. package/dist/{cron-cli-CGJveo7P.js → cron-cli-CZCm3aLt.js} +3 -3
  40. package/dist/{cron-cli-Crh_r2aK.js → cron-cli-Dq2FEfK1.js} +3 -3
  41. package/dist/{daemon-cli-Cq-IaYw4.js → daemon-cli-B2_uIgDM.js} +2 -2
  42. package/dist/{daemon-cli-CAIg9sMo.js → daemon-cli-CweMes2K.js} +2 -2
  43. package/dist/daemon-cli.js +27 -0
  44. package/dist/{devices-cli-CUT_8CuJ.js → devices-cli-3ui-Wcaj.js} +2 -2
  45. package/dist/{devices-cli-hSn5vjJZ.js → devices-cli-DeoPyzAd.js} +2 -2
  46. package/dist/{doctor-completion-BSMAyCq_.js → doctor-completion-CQXl3jf4.js} +1 -1
  47. package/dist/{doctor-completion-DlKvncR9.js → doctor-completion-Cu7DwgVw.js} +1 -1
  48. package/dist/entry.js +1 -1
  49. package/dist/{exec-approvals-cli-BTfZiH6z.js → exec-approvals-cli-Bx9loYnQ.js} +4 -4
  50. package/dist/{exec-approvals-cli-DTad2Zi_.js → exec-approvals-cli-CTEn_Eu_.js} +4 -4
  51. package/dist/extensionAPI.js +2 -2
  52. package/dist/{gateway-cli-NI7W2QxR.js → gateway-cli-B2XchN3Y.js} +35 -17
  53. package/dist/{gateway-cli-BlRNLVfU.js → gateway-cli-P0olUhID.js} +35 -17
  54. package/dist/{gateway-rpc-BKJyAcQd.js → gateway-rpc-DbSbyIcL.js} +1 -1
  55. package/dist/{gateway-rpc-DActF8Qj.js → gateway-rpc-QsFn5Zr1.js} +1 -1
  56. package/dist/{glass-ui-ws-BBkFBsKB.js → glass-ui-ws-Cs2jfN42.js} +14 -14
  57. package/dist/{glass-ui-ws-DxrESDzy.js → glass-ui-ws-tIVOcdB2.js} +14 -14
  58. package/dist/{health-D4vU-wV-.js → health-Cs8wf7Hb.js} +2 -2
  59. package/dist/{health-fOu0S75U.js → health-DMy1nA4K.js} +2 -2
  60. package/dist/{hooks-cli-BdgnXYmw.js → hooks-cli-D6awUCDl.js} +8 -8
  61. package/dist/{hooks-cli-DdSggQYs.js → hooks-cli-DIH-zxCG.js} +8 -8
  62. package/dist/index.js +12 -12
  63. package/dist/llm-slug-generator.js +2 -2
  64. package/dist/{logs-cli-BPnrAg0W.js → logs-cli-1hn28HCu.js} +3 -3
  65. package/dist/{logs-cli-DiDesnnp.js → logs-cli-R4WwQvR2.js} +3 -3
  66. package/dist/{manager-syNf_ZrI.js → manager-B60Ncruq.js} +1 -1
  67. package/dist/{manager-DRrGn88w.js → manager-B76ofKkW.js} +1 -1
  68. package/dist/{manager-_RGWWymD.js → manager-D0_H4LHh.js} +1 -1
  69. package/dist/{manager-TOeH0D8K.js → manager-wF-n_prX.js} +1 -1
  70. package/dist/{memory-cli-0jm-n36m.js → memory-cli-DRLrIa8h.js} +3 -3
  71. package/dist/{memory-cli-BSOOwpt1.js → memory-cli-eSWCbEiS.js} +3 -3
  72. package/dist/{models-sGeWQOmg.js → models-B5H41UsH.js} +3 -3
  73. package/dist/{models-cli-DV-J1cm0.js → models-cli-CHFi2_kC.js} +9 -9
  74. package/dist/{models-cli-CtkoEyh3.js → models-cli-CVfq_g6h.js} +8 -8
  75. package/dist/{node-cli-DwDQpTW5.js → node-cli-BBN6PoOG.js} +1 -1
  76. package/dist/{node-cli-DEcCM2p0.js → node-cli-BsAzTrAx.js} +1 -1
  77. package/dist/{nodes-cli-CqBLemeB.js → nodes-cli-DE60dv81.js} +3 -3
  78. package/dist/{nodes-cli-u8k6TPmF.js → nodes-cli-t3azniiS.js} +3 -3
  79. package/dist/{onboard-CWBYuaCm.js → onboard-DKK6UJjF.js} +3 -3
  80. package/dist/{onboard-FeTHeA1y.js → onboard-DgPzeL3U.js} +3 -3
  81. package/dist/{onboard-channels-D8bDJYPc.js → onboard-channels-BTuYOQO-.js} +1 -1
  82. package/dist/{onboard-channels-DpZkjldS.js → onboard-channels-DvNwlvWZ.js} +1 -1
  83. package/dist/{onboard-helpers-C8f_xi6R.js → onboard-helpers-B7jBYbCU.js} +1 -1
  84. package/dist/{onboard-helpers-CF0Cp3OB.js → onboard-helpers-DjlGq6iG.js} +1 -1
  85. package/dist/{onboard-remote-DgGH0dTe.js → onboard-remote-CXuHbtrT.js} +1 -1
  86. package/dist/{onboard-remote-CWal5_aZ.js → onboard-remote-D7wGqONm.js} +1 -1
  87. package/dist/{onboard-skills-DnzJLU2H.js → onboard-skills-BDhqz3te.js} +1 -1
  88. package/dist/{onboard-skills-CO2TjuO3.js → onboard-skills-ChQnpMi-.js} +1 -1
  89. package/dist/{onboarding-c2qhwP0x.js → onboarding-CCHq8fd9.js} +7 -7
  90. package/dist/{onboarding-BsPnnH5g.js → onboarding-CeqXuQPm.js} +7 -7
  91. package/dist/{onboarding.finalize-7St3fmk2.js → onboarding.finalize-Cw4TWelq.js} +13 -13
  92. package/dist/{onboarding.finalize-id9EHg1P.js → onboarding.finalize-DxWVkNx9.js} +12 -12
  93. package/dist/{onboarding.gateway-config-DlV0vso8.js → onboarding.gateway-config-Cm5jIfRz.js} +3 -3
  94. package/dist/{onboarding.gateway-config-D4rQoPRi.js → onboarding.gateway-config-wAyLcGRu.js} +3 -3
  95. package/dist/{pi-embedded-DCBB1_SC.js → pi-embedded-CGwqumSe.js} +339 -10
  96. package/dist/{pi-tools.policy-BZrM6a-w.js → pi-tools.policy-Bx5zp45n.js} +2 -0
  97. package/dist/{pi-tools.policy-QIVWAVVI.js → pi-tools.policy-o0ytjRqu.js} +2 -0
  98. package/dist/{plugin-registry-BJSfTT8c.js → plugin-registry-CJKHlm9W.js} +1 -1
  99. package/dist/{plugin-registry-Cy1kfzAy.js → plugin-registry-kiYkB_km.js} +1 -1
  100. package/dist/plugin-sdk/{accounts-BtaOa4z_.js → accounts-BToL3HlP.js} +1 -1
  101. package/dist/plugin-sdk/{accounts-Ddm33hQm.js → accounts-D9zGZU5t.js} +3 -3
  102. package/dist/plugin-sdk/{accounts-s-AdhXVR.js → accounts-Dtszw3Zn.js} +1 -1
  103. package/dist/plugin-sdk/{active-listener-DYjn3fML.js → active-listener-CJuvR4C2.js} +1 -1
  104. package/dist/plugin-sdk/{agent-scope-CYYpcO9W.js → agent-scope-C3gMMKCU.js} +2 -2
  105. package/dist/plugin-sdk/agents/pi-embedded-runner/long-task-prompt.d.ts +7 -0
  106. package/dist/plugin-sdk/agents/tools/task-tool.d.ts +7 -0
  107. package/dist/plugin-sdk/{api-key-rotation-DGJZ8SVa.js → api-key-rotation-CBsLb_4V.js} +1 -1
  108. package/dist/plugin-sdk/{audio-preflight-CiVw8470.js → audio-preflight-DucGa8w7.js} +24 -24
  109. package/dist/plugin-sdk/{bindings-C7hRtgYW.js → bindings-BbwoUGPx.js} +2 -2
  110. package/dist/plugin-sdk/{channel-activity-DoC1xtDu.js → channel-activity-Ji7f0gqq.js} +1 -1
  111. package/dist/plugin-sdk/{channel-web-BSDjZSwm.js → channel-web-C9SUmtjL.js} +22 -22
  112. package/dist/plugin-sdk/{chrome-CEqfiEs0.js → chrome-D9kN9org.js} +3 -3
  113. package/dist/plugin-sdk/{chunk-Dw2XBYXv.js → chunk-jvk9axTQ.js} +1 -1
  114. package/dist/plugin-sdk/{command-format-GKSevep4.js → command-format-DSdvQ_M5.js} +1 -1
  115. package/dist/plugin-sdk/{commands-registry-BhW_oGNt.js → commands-registry-BuYpmEx-.js} +4 -4
  116. package/dist/plugin-sdk/{config-Ckum15iC.js → config-BzupW6LN.js} +9 -9
  117. package/dist/plugin-sdk/{consolidate-COuTEt4Z.js → consolidate-CafShdsH.js} +2 -2
  118. package/dist/plugin-sdk/{deliver-B8Y2t-RH.js → deliver-CKgFosI5.js} +10 -10
  119. package/dist/plugin-sdk/{diagnostic-BR07buTm.js → diagnostic-_oc91gNi.js} +1 -1
  120. package/dist/plugin-sdk/gateway/protocol/index.d.ts +6 -3
  121. package/dist/plugin-sdk/gateway/protocol/schema/tasks.d.ts +40 -0
  122. package/dist/plugin-sdk/gateway/protocol/schema/types.d.ts +3 -0
  123. package/dist/plugin-sdk/gateway/protocol/schema.d.ts +1 -0
  124. package/dist/plugin-sdk/{image-CCmNHDV0.js → image-DFyINnvE.js} +4 -4
  125. package/dist/plugin-sdk/{image-ops-BlQR__MN.js → image-ops-Bnp6LXEx.js} +1 -1
  126. package/dist/plugin-sdk/index.js +54 -54
  127. package/dist/plugin-sdk/infra/long-task-state.d.ts +34 -0
  128. package/dist/plugin-sdk/{ir-BJ6BHE5b.js → ir-Fb3qpcis.js} +4 -4
  129. package/dist/plugin-sdk/{local-roots-BHLNSI8U.js → local-roots-Ckk1QfzI.js} +3 -3
  130. package/dist/plugin-sdk/{login-g_rQAcuM.js → login-K1YB_7-t.js} +7 -7
  131. package/dist/plugin-sdk/{login-qr-BOUmLSY3.js → login-qr-lMl_OqDj.js} +9 -9
  132. package/dist/plugin-sdk/{manager-B9GigLWj.js → manager-DUmxOoHb.js} +9 -9
  133. package/dist/plugin-sdk/{manifest-registry-BRx4JDK0.js → manifest-registry-hy3Bn-r9.js} +1 -1
  134. package/dist/plugin-sdk/{markdown-tables-BoYFajMu.js → markdown-tables-Dfaqilz6.js} +1 -1
  135. package/dist/plugin-sdk/{message-channel-COTAJzHd.js → message-channel-BdI5Ra9S.js} +1 -1
  136. package/dist/plugin-sdk/{model-selection-Bbs4XGPG.js → model-selection-CtVwtb6y.js} +4 -4
  137. package/dist/plugin-sdk/{outbound-BVhSNFy0.js → outbound-DW3cqlQW.js} +7 -7
  138. package/dist/plugin-sdk/{outbound-attachment-B56R1Wi4.js → outbound-attachment-D7ME_Kib.js} +2 -2
  139. package/dist/plugin-sdk/{pi-auth-json-CB2bV0Jd.js → pi-auth-json-DiyK6bgV.js} +1 -1
  140. package/dist/plugin-sdk/{pi-embedded-helpers-dd3G9Hfi.js → pi-embedded-helpers-BL7ZRhGv.js} +17 -17
  141. package/dist/plugin-sdk/{plugins-BNByVCIH.js → plugins-BbAvhC25.js} +4 -4
  142. package/dist/plugin-sdk/{pw-ai-BXeOYCz_.js → pw-ai-B3T0mTHr.js} +8 -8
  143. package/dist/plugin-sdk/{qmd-manager-wIr8qz2n.js → qmd-manager-BlUikj9s.js} +4 -4
  144. package/dist/plugin-sdk/{registry-D0xTnUWt.js → registry--_pGht6S.js} +2 -2
  145. package/dist/plugin-sdk/{replies-CQ4szNhV.js → replies-BR2TPTVW.js} +3 -3
  146. package/dist/plugin-sdk/{reply-DD8z_dUW.js → reply-DwJ-3Et9.js} +412 -83
  147. package/dist/plugin-sdk/{reply-prefix-uxfMZW4p.js → reply-prefix-BHuV5t70.js} +1 -1
  148. package/dist/plugin-sdk/{resolve-outbound-target-BiyAyTWz.js → resolve-outbound-target-BkCUbYGV.js} +2 -2
  149. package/dist/plugin-sdk/{resolve-route-CWfcnhza.js → resolve-route-CHQ7BTlU.js} +3 -3
  150. package/dist/plugin-sdk/{retry-CwQ_iIj8.js → retry-ilSJqnz9.js} +1 -1
  151. package/dist/plugin-sdk/{runner-BuxCHv_O.js → runner-BhifC1J_.js} +9 -9
  152. package/dist/plugin-sdk/{send-fNRDT21N.js → send-BP5pSPaZ.js} +6 -6
  153. package/dist/plugin-sdk/{send-BtO-7fHs.js → send-CGhw9mO3.js} +6 -6
  154. package/dist/plugin-sdk/{send-CKXzQuXo.js → send-DLO_yV5_.js} +10 -10
  155. package/dist/plugin-sdk/{send-Djq5IPRa.js → send-ZhAe1nXO.js} +10 -10
  156. package/dist/plugin-sdk/{send-XSuwT1PC.js → send-jsofmTfJ.js} +7 -7
  157. package/dist/plugin-sdk/{session-ARbcLHE9.js → session-BfyK_04G.js} +4 -4
  158. package/dist/plugin-sdk/{skill-commands-yzJVuTIW.js → skill-commands-DEfqC_kJ.js} +5 -5
  159. package/dist/plugin-sdk/{skills-BfsaS1F9.js → skills-C9DbB-Kp.js} +7 -7
  160. package/dist/plugin-sdk/{sqlite-A3wGzttn.js → sqlite-CmVrFEYD.js} +1 -1
  161. package/dist/plugin-sdk/{store-BdrNabcU.js → store-Do3t33-c.js} +2 -2
  162. package/dist/plugin-sdk/{subsystem-B2uDN3TV.js → subsystem-Coz2AgU8.js} +1 -1
  163. package/dist/plugin-sdk/{synthesis-Dv5GwSky.js → synthesis-BzYtaV97.js} +49 -49
  164. package/dist/plugin-sdk/{tables-DNwXwNFa.js → tables-DR0NmBeH.js} +1 -1
  165. package/dist/plugin-sdk/{target-errors-Paro1BjP.js → target-errors-B7YyMnIi.js} +2 -2
  166. package/dist/plugin-sdk/{thinking-CXqf7WTe.js → thinking-DCNUIAHY.js} +5 -5
  167. package/dist/plugin-sdk/{tokens-bC3UVmVH.js → tokens-CWMflosr.js} +1 -1
  168. package/dist/plugin-sdk/{tool-images-HJ2sfZDV.js → tool-images-D7Lno-TE.js} +2 -2
  169. package/dist/plugin-sdk/{tool-loop-detection-gmtzSlNZ.js → tool-loop-detection-DseOlBug.js} +2 -2
  170. package/dist/plugin-sdk/web-BQzPfsd0.js +66 -0
  171. package/dist/plugin-sdk/{whatsapp-actions-B_1l8JMU.js → whatsapp-actions-eTefsWhW.js} +21 -21
  172. package/dist/{plugins-cli-6UYkZBH0.js → plugins-cli-DTI2yj-y.js} +8 -8
  173. package/dist/{plugins-cli-DPetEhfv.js → plugins-cli-tV4C5XJc.js} +8 -8
  174. package/dist/{program-CVy9LVoS.js → program-8Zg4CY5d.js} +13 -13
  175. package/dist/{program-context-CBI6gIf-.js → program-context-BcKgBBit.js} +30 -30
  176. package/dist/{prompt-select-styled-Bv675D48.js → prompt-select-styled-CfKZlGfF.js} +8 -8
  177. package/dist/{prompt-select-styled-BlXl_Qf7.js → prompt-select-styled-DigPcXuk.js} +8 -8
  178. package/dist/{provider-auth-helpers-RUQD5XAm.js → provider-auth-helpers-BH3oyYln.js} +1 -1
  179. package/dist/{provider-auth-helpers-BB1lhCy5.js → provider-auth-helpers-Db02DMW2.js} +1 -1
  180. package/dist/{push-apns-rPetW5cI.js → push-apns-7rC1ybp8.js} +1 -1
  181. package/dist/{push-apns-Cr-a1KBt.js → push-apns-f_6DGP6z.js} +1 -1
  182. package/dist/{register.agent-DKDwNHQi.js → register.agent-CocfT8Pk.js} +12 -12
  183. package/dist/{register.agent-j6OlKEU-.js → register.agent-DETyFsMT.js} +11 -11
  184. package/dist/{register.configure-BgIXIq9d.js → register.configure-BAiFzdYa.js} +14 -14
  185. package/dist/{register.configure-CopgSygi.js → register.configure-VcTwHq1a.js} +14 -14
  186. package/dist/{register.maintenance-DjaGkVtr.js → register.maintenance-BajFgQEm.js} +13 -13
  187. package/dist/{register.maintenance-BKsCM6NG.js → register.maintenance-Bpr3QjJ1.js} +14 -14
  188. package/dist/{register.message-bxhUcSyj.js → register.message-96EL0HQW.js} +8 -8
  189. package/dist/{register.message-C3oHvmdl.js → register.message-CXabSYfO.js} +8 -8
  190. package/dist/{register.onboard-D0DHcb20.js → register.onboard-2KClPynN.js} +10 -10
  191. package/dist/{register.onboard-DijWH8Vd.js → register.onboard-mHEZSai5.js} +10 -10
  192. package/dist/{register.setup-XlCTnTm_.js → register.setup-B-piY6Vs.js} +10 -10
  193. package/dist/{register.setup-CrFzd94c.js → register.setup-Di6tWG-W.js} +10 -10
  194. package/dist/{register.status-health-sessions-AWCg_uLf.js → register.status-health-sessions-BhIYRApE.js} +10 -10
  195. package/dist/{register.status-health-sessions-VwvDWUxZ.js → register.status-health-sessions-ZX2odxGg.js} +10 -10
  196. package/dist/{register.subclis-Bw8k5Z5C.js → register.subclis-CQtXpheE.js} +20 -20
  197. package/dist/{reply-D7_t00Jt.js → reply-D455A6SA.js} +314 -14
  198. package/dist/{rpc-DYHXLh0P.js → rpc-C3ZUAjXK.js} +1 -1
  199. package/dist/{rpc-DdlEeEXT.js → rpc-St4eAsjR.js} +1 -1
  200. package/dist/{run-main-7BEaNeDG.js → run-main-CnqZnevI.js} +21 -21
  201. package/dist/{security-cli-BpnzAB5_.js → security-cli-B8gavsuQ.js} +4 -4
  202. package/dist/{security-cli-D9WEiEjD.js → security-cli-BSvxNP9m.js} +4 -4
  203. package/dist/{server-methods-FQ-PqiVC.js → server-methods-CYPSYbhs.js} +55 -11
  204. package/dist/{server-methods-CTeJHJSZ.js → server-methods-DYjr-KwQ.js} +55 -11
  205. package/dist/{server-node-events-Z7epDloV.js → server-node-events-C58gVs27.js} +8 -8
  206. package/dist/{server-node-events-BqvcHbuK.js → server-node-events-DqJIrx86.js} +8 -8
  207. package/dist/{status-CKROJwI2.js → status-B_zW9YJ8.js} +1 -1
  208. package/dist/{status-DLFbpd9v.js → status-DjjA-TOx.js} +6 -6
  209. package/dist/{status-DMigoL7q.js → status-Qt6QDFJ1.js} +6 -6
  210. package/dist/{status-x7WCSVhG.js → status-sO6Y-c-v.js} +1 -1
  211. package/dist/{subagent-registry-BvP8AGdE.js → subagent-registry-B1HJJs3Q.js} +314 -14
  212. package/dist/{synthesis-DDId6n26.js → synthesis-BCSo0xoc.js} +7 -7
  213. package/dist/{synthesis-E4flT91F.js → synthesis-Ch82MDG8.js} +2 -2
  214. package/dist/{synthesis-By7KPUAm.js → synthesis-DAUJa_9I.js} +7 -7
  215. package/dist/{synthesis-DgQz6kPf.js → synthesis-DzSo6S9Y.js} +2 -2
  216. package/dist/{system-cli-BFopJ_xI.js → system-cli-BN9MXNk7.js} +3 -3
  217. package/dist/{system-cli-DryauSOX.js → system-cli-CD5latLh.js} +3 -3
  218. package/dist/{tui-CvHbwJ3G.js → tui-Cu4TZK3I.js} +2 -2
  219. package/dist/{tui-BiBFm_RY.js → tui-DLkE0D7e.js} +2 -2
  220. package/dist/{tui-cli-CmyT9ctV.js → tui-cli-BfuEq3Q-.js} +3 -3
  221. package/dist/{tui-cli-CU6A8Bu2.js → tui-cli-DC9Bq-N_.js} +3 -3
  222. package/dist/{unified-runner-DaSb-TsZ.js → unified-runner-CpyVnelK.js} +339 -10
  223. package/dist/{update-cli-C5H6DkNM.js → update-cli-BLQsvLIy.js} +14 -14
  224. package/dist/{update-cli-D0relAZw.js → update-cli-CgDLDu8d.js} +15 -15
  225. package/dist/{update-runner-D99V_zHX.js → update-runner-B1vMjo7o.js} +1 -1
  226. package/dist/{update-runner-B_yVOk8Z.js → update-runner-DUHTdrZ0.js} +1 -1
  227. package/dist/{web-BQh2S6oq.js → web-Dbg9lDZ4.js} +7 -7
  228. package/dist/{web-Bdebat5l.js → web-Dhh_eI3q.js} +8 -8
  229. package/dist/{web-BBz1kF_9.js → web-DpAeT8By.js} +2 -2
  230. package/dist/{web-CiYoJfrl.js → web-PhjuzK8Y.js} +2 -2
  231. package/extensions/bluebubbles/package.json +1 -1
  232. package/extensions/copilot-proxy/package.json +1 -1
  233. package/extensions/diagnostics-otel/package.json +1 -1
  234. package/extensions/discord/package.json +1 -1
  235. package/extensions/feishu/package.json +1 -1
  236. package/extensions/google-antigravity-auth/package.json +1 -1
  237. package/extensions/google-gemini-cli-auth/package.json +1 -1
  238. package/extensions/googlechat/package.json +1 -1
  239. package/extensions/imessage/package.json +1 -1
  240. package/extensions/irc/package.json +1 -1
  241. package/extensions/learning-loop/package.json +1 -1
  242. package/extensions/line/package.json +1 -1
  243. package/extensions/llm-task/package.json +1 -1
  244. package/extensions/matrix/CHANGELOG.md +12 -0
  245. package/extensions/matrix/package.json +1 -1
  246. package/extensions/mattermost/package.json +1 -1
  247. package/extensions/memory-core/package.json +1 -1
  248. package/extensions/memory-lancedb/package.json +1 -1
  249. package/extensions/minimax-portal-auth/package.json +1 -1
  250. package/extensions/msteams/CHANGELOG.md +12 -0
  251. package/extensions/msteams/package.json +1 -1
  252. package/extensions/nextcloud-talk/package.json +1 -1
  253. package/extensions/nostr/CHANGELOG.md +12 -0
  254. package/extensions/nostr/package.json +1 -1
  255. package/extensions/open-prose/package.json +1 -1
  256. package/extensions/outlook/package.json +1 -1
  257. package/extensions/pipeline/package.json +1 -1
  258. package/extensions/signal/package.json +1 -1
  259. package/extensions/slack/package.json +1 -1
  260. package/extensions/telegram/package.json +1 -1
  261. package/extensions/tlon/package.json +1 -1
  262. package/extensions/twitch/CHANGELOG.md +12 -0
  263. package/extensions/twitch/package.json +1 -1
  264. package/extensions/voice-call/CHANGELOG.md +12 -0
  265. package/extensions/voice-call/package.json +1 -1
  266. package/extensions/whatsapp/package.json +1 -1
  267. package/extensions/zalo/CHANGELOG.md +12 -0
  268. package/extensions/zalo/package.json +1 -1
  269. package/extensions/zalouser/CHANGELOG.md +12 -0
  270. package/extensions/zalouser/package.json +1 -1
  271. package/package.json +1 -1
  272. package/dist/plugin-sdk/web-CmKqZEsX.js +0 -66
@@ -1,73 +1,73 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { _ as isCronSessionKey, b as resolveThreadParentSessionKey, c as normalizeMainKey, d as sanitizeAgentId, f as DEFAULT_ACCOUNT_ID, g as isAcpSessionKey, h as getSubagentDepth, l as resolveAgentIdFromSessionKey, o as classifySessionKeyShape, p as normalizeAccountId$2, r as buildAgentMainSessionKey, s as normalizeAgentId, t as DEFAULT_AGENT_ID, u as resolveThreadSessionKeys, v as isSubagentSessionKey, y as parseAgentSessionKey } from "./session-key-C_0eELjb.js";
3
- import { c as logoutWeb, f as readWebSelfId, g as webAuthExists, o as getWebAuthAgeMs, r as resolveWhatsAppAccount, s as logWebSelfId } from "./accounts-Ddm33hQm.js";
3
+ import { c as logoutWeb, f as readWebSelfId, g as webAuthExists, o as getWebAuthAgeMs, r as resolveWhatsAppAccount, s as logWebSelfId } from "./accounts-D9zGZU5t.js";
4
4
  import { c as expandHomePrefix, i as resolveGatewayPort, n as resolveConfigPath, s as resolveStateDir, t as STATE_DIR, u as resolveRequiredHomeDir } from "./paths-DR2yt_mP.js";
5
5
  import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-D9X2phUj.js";
6
- import { A as resolveSlackBotToken, C as resolveTelegramToken, D as resolveSlackAccount, F as resolveDiscordAccount, I as normalizeDiscordToken, N as listEnabledDiscordAccounts, S as resolveTelegramAccount, _ as normalizeWhatsAppTarget, b as listTelegramAccountIds, g as isWhatsAppGroupJid, h as resolveSlackChannelId, j as createDiscordActionGate, k as resolveSlackAppToken, m as parseSlackTarget, n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin, v as createTelegramActionGate, y as listEnabledTelegramAccounts } from "./plugins-BNByVCIH.js";
6
+ import { A as resolveSlackBotToken, C as resolveTelegramToken, D as resolveSlackAccount, F as resolveDiscordAccount, I as normalizeDiscordToken, N as listEnabledDiscordAccounts, S as resolveTelegramAccount, _ as normalizeWhatsAppTarget, b as listTelegramAccountIds, g as isWhatsAppGroupJid, h as resolveSlackChannelId, j as createDiscordActionGate, k as resolveSlackAppToken, m as parseSlackTarget, n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin, v as createTelegramActionGate, y as listEnabledTelegramAccounts } from "./plugins-BbAvhC25.js";
7
7
  import { n as fetchWithTimeout, t as bindAbortRelay } from "./fetch-timeout-ChYuW7LE.js";
8
8
  import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-CUNoPTKm.js";
9
- import { $ as isRich, A as normalizeE164, D as isRecord$1, E as formatTerminalLink, H as isPlainObject, I as shortenHomeInString, J as setVerbose, K as logVerbose, L as shortenHomePath, P as resolveUserPath, Q as colorize, R as sleep$1, S as clampInt, T as escapeRegExp, U as danger, V as truncateUtf16Safe, Y as shouldLogVerbose, Z as warn, _ as matchPluginCommand, a as normalizeAnyChannelId, b as CONFIG_DIR, ct as normalizeLogLevel, d as createPluginRegistry, et as theme, f as normalizePluginHttpPath, g as listPluginCommands, h as getPluginCommandSpecs, l as requireActivePluginRegistry, m as executePluginCommand, n as CHAT_CHANNEL_ORDER, o as normalizeChannelId$1, p as clearPluginCommands, r as DEFAULT_CHAT_CHANNEL, tt as getChildLogger, u as setActivePluginRegistry, ut as resolvePreferredSymiTmpDir, v as createInternalHookEvent, w as ensureDir$3, y as triggerInternalHook, z as sliceUtf16Safe } from "./registry-D0xTnUWt.js";
10
- import { n as retryAsync } from "./retry-CwQ_iIj8.js";
11
- import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, At as fetchDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveTimestampMs, D as pinMessageDiscord, E as listThreadsDiscord, Et as normalizeChannelSlug, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as resolveDiscordSystemLocation, T as listPinsDiscord, Tt as buildChannelKeyCandidates, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordShouldRequireMention, a as removeReactionDiscord, at as resolveDiscordChannelId, b as sendWebhookMessageDiscord, bt as formatDiscordReactionEmoji, c as formatDiscordComponentEventText, ct as allowListMatches$1, d as parseDiscordModalCustomId, dt as normalizeDiscordSlug, et as hasAnyGuildPermissionDiscord, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordAllowListMatch, g as sendMessageDiscord, gt as resolveDiscordOwnerAllowFrom, h as resolveDiscordModalEntry, ht as resolveDiscordMemberAccessState, i as removeOwnReactionsDiscord, it as parseDiscordTarget, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as isDiscordGroupAllowedByPolicy, m as resolveDiscordComponentEntry, mt as resolveDiscordGuildEntry, n as fetchReactionsDiscord, nt as createDiscordClient, o as sendDiscordComponentMessage, ot as listDiscordDirectoryGroupsLive, p as readDiscordComponentSpec, pt as resolveDiscordChannelConfigWithFallback, q as deleteChannelDiscord, r as reactMessageDiscord, rt as createDiscordRestClient, s as createDiscordFormModal, st as listDiscordDirectoryPeersLive, tt as chunkDiscordTextWithMode, u as parseDiscordComponentCustomIdForCarbon, ut as normalizeDiscordAllowList, v as sendStickerDiscord, vt as resolveGroupDmAllow, w as fetchMessageDiscord, wt as applyChannelMatchMeta, x as createThreadDiscord, xt as formatDiscordUserTag, y as sendVoiceMessageDiscord, yt as shouldEmitDiscordReactionNotification, z as listGuildChannelsDiscord } from "./send-Djq5IPRa.js";
12
- import { B as getConfigOverrides, C as resolveIMessageRemoteAttachmentRoots, G as parseConfigPath, H as setConfigOverride, J as isSafeExecutableValue, K as setConfigValueAtPath, R as parseDurationMs, S as resolveIMessageAttachmentRoots, U as unsetConfigOverride, V as resetConfigOverrides, W as getConfigValueAtPath, X as resolveAgentMaxConcurrent, Y as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, Z as VERSION, _ as normalizeTelegramCommandName, a as writeConfigFile, b as isInboundPathAllowed, g as TELEGRAM_COMMAND_NAME_PATTERN, i as resolveConfigSnapshotHash, n as loadConfig, o as validateConfigObjectWithPlugins, q as unsetConfigValueAtPath, r as readConfigFileSnapshot, v as resolveTelegramCustomCommands, w as normalizeScpRemoteHost, z as validateJsonSchemaValue } from "./config-Ckum15iC.js";
13
- import { a as clearActiveProgressLine, i as defaultRuntime, o as registerActiveProgressLine, r as createNonExitingRuntime, s as unregisterActiveProgressLine, t as createSubsystemLogger } from "./subsystem-B2uDN3TV.js";
14
- import { i as parseBooleanValue$1, n as resolveCliName, r as isTruthyEnvValue, t as formatCliCommand } from "./command-format-GKSevep4.js";
15
- import { $ as resolveShellEnvFallbackTimeoutMs, A as getSoonestCooldownExpiry, B as resolveSymiAgentDir, C as getCustomProviderApiKey, D as resolveModelAuthMode, E as resolveEnvApiKey, F as dedupeProfileIds, H as withFileLock, I as listProfilesForProvider, J as DEFAULT_CONTEXT_TOKENS, K as normalizeSecretInput, L as markAuthProfileGood, M as markAuthProfileFailure, N as markAuthProfileUsed, P as resolveApiKeyForProfile, R as ensureAuthProfileStore, S as getApiKeyForModel, T as resolveApiKeyForProvider, X as DEFAULT_PROVIDER, Y as DEFAULT_MODEL, Z as getShellPathFromLoginShell, a as isCliProvider, b as OLLAMA_NATIVE_BASE_URL, c as normalizeProviderId, d as resolveDefaultModelForAgent, f as resolveModelRefFromString, i as findNormalizedProviderValue, j as isProfileInCooldown, k as resolveAuthProfileOrder, m as resolveThinkingDefault, n as buildConfiguredAllowlistKeys, o as modelKey, p as resolveSubagentSpawnModelSelection, q as resolveAuthProfileDisplayLabel, r as buildModelAliasIndex, s as normalizeModelRef$2, t as buildAllowedModelSet, u as resolveConfiguredModelRef, w as requireApiKey, x as createOllamaStreamFn, z as resolveAuthStorePathForDisplay } from "./model-selection-Bbs4XGPG.js";
16
- import { A as logInfo, C as resolveSymiPackageRoot, D as spawnWithFallback, E as runExec, O as logDebug, S as loadWorkspaceBootstrapFiles, T as runCommandWithTimeout, a as resolveAgentModelPrimary, b as ensureAgentWorkspace, c as resolveDefaultAgentId, d as resolveSessionAgentIds, h as DEFAULT_IDENTITY_FILENAME, i as resolveAgentModelFallbacksOverride, j as logWarn, k as logError, l as resolveEffectiveModelFallbacks, m as DEFAULT_BOOTSTRAP_FILENAME, n as resolveAgentConfig, o as resolveAgentSkillsFilter, p as DEFAULT_AGENT_WORKSPACE_DIR, r as resolveAgentDir, s as resolveAgentWorkspaceDir, t as listAgentIds, u as resolveSessionAgentId, x as filterBootstrapFilesForSession } from "./agent-scope-CYYpcO9W.js";
17
- import { c as normalizePluginsConfig, f as isPathInsideWithRealpath, i as safeStatSync, l as resolveEnableState, n as discoverSymiPlugins, p as isDangerousHostEnvVarName, r as isPathInside, s as applyTestPluginDefaults, t as loadPluginManifestRegistry, u as resolveMemorySlotDecision } from "./manifest-registry-BRx4JDK0.js";
9
+ import { $ as isRich, A as normalizeE164, D as isRecord$1, E as formatTerminalLink, H as isPlainObject, I as shortenHomeInString, J as setVerbose, K as logVerbose, L as shortenHomePath, P as resolveUserPath, Q as colorize, R as sleep$1, S as clampInt, T as escapeRegExp, U as danger, V as truncateUtf16Safe, Y as shouldLogVerbose, Z as warn, _ as matchPluginCommand, a as normalizeAnyChannelId, b as CONFIG_DIR, ct as normalizeLogLevel, d as createPluginRegistry, et as theme, f as normalizePluginHttpPath, g as listPluginCommands, h as getPluginCommandSpecs, l as requireActivePluginRegistry, m as executePluginCommand, n as CHAT_CHANNEL_ORDER, o as normalizeChannelId$1, p as clearPluginCommands, r as DEFAULT_CHAT_CHANNEL, tt as getChildLogger, u as setActivePluginRegistry, ut as resolvePreferredSymiTmpDir, v as createInternalHookEvent, w as ensureDir$3, y as triggerInternalHook, z as sliceUtf16Safe } from "./registry--_pGht6S.js";
10
+ import { n as retryAsync } from "./retry-ilSJqnz9.js";
11
+ import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, At as fetchDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveTimestampMs, D as pinMessageDiscord, E as listThreadsDiscord, Et as normalizeChannelSlug, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as resolveDiscordSystemLocation, T as listPinsDiscord, Tt as buildChannelKeyCandidates, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordShouldRequireMention, a as removeReactionDiscord, at as resolveDiscordChannelId, b as sendWebhookMessageDiscord, bt as formatDiscordReactionEmoji, c as formatDiscordComponentEventText, ct as allowListMatches$1, d as parseDiscordModalCustomId, dt as normalizeDiscordSlug, et as hasAnyGuildPermissionDiscord, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordAllowListMatch, g as sendMessageDiscord, gt as resolveDiscordOwnerAllowFrom, h as resolveDiscordModalEntry, ht as resolveDiscordMemberAccessState, i as removeOwnReactionsDiscord, it as parseDiscordTarget, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as isDiscordGroupAllowedByPolicy, m as resolveDiscordComponentEntry, mt as resolveDiscordGuildEntry, n as fetchReactionsDiscord, nt as createDiscordClient, o as sendDiscordComponentMessage, ot as listDiscordDirectoryGroupsLive, p as readDiscordComponentSpec, pt as resolveDiscordChannelConfigWithFallback, q as deleteChannelDiscord, r as reactMessageDiscord, rt as createDiscordRestClient, s as createDiscordFormModal, st as listDiscordDirectoryPeersLive, tt as chunkDiscordTextWithMode, u as parseDiscordComponentCustomIdForCarbon, ut as normalizeDiscordAllowList, v as sendStickerDiscord, vt as resolveGroupDmAllow, w as fetchMessageDiscord, wt as applyChannelMatchMeta, x as createThreadDiscord, xt as formatDiscordUserTag, y as sendVoiceMessageDiscord, yt as shouldEmitDiscordReactionNotification, z as listGuildChannelsDiscord } from "./send-ZhAe1nXO.js";
12
+ import { B as getConfigOverrides, C as resolveIMessageRemoteAttachmentRoots, G as parseConfigPath, H as setConfigOverride, J as isSafeExecutableValue, K as setConfigValueAtPath, R as parseDurationMs, S as resolveIMessageAttachmentRoots, U as unsetConfigOverride, V as resetConfigOverrides, W as getConfigValueAtPath, X as resolveAgentMaxConcurrent, Y as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, Z as VERSION, _ as normalizeTelegramCommandName, a as writeConfigFile, b as isInboundPathAllowed, g as TELEGRAM_COMMAND_NAME_PATTERN, i as resolveConfigSnapshotHash, n as loadConfig, o as validateConfigObjectWithPlugins, q as unsetConfigValueAtPath, r as readConfigFileSnapshot, v as resolveTelegramCustomCommands, w as normalizeScpRemoteHost, z as validateJsonSchemaValue } from "./config-BzupW6LN.js";
13
+ import { a as clearActiveProgressLine, i as defaultRuntime, o as registerActiveProgressLine, r as createNonExitingRuntime, s as unregisterActiveProgressLine, t as createSubsystemLogger } from "./subsystem-Coz2AgU8.js";
14
+ import { i as parseBooleanValue$1, n as resolveCliName, r as isTruthyEnvValue, t as formatCliCommand } from "./command-format-DSdvQ_M5.js";
15
+ import { $ as resolveShellEnvFallbackTimeoutMs, A as getSoonestCooldownExpiry, B as resolveSymiAgentDir, C as getCustomProviderApiKey, D as resolveModelAuthMode, E as resolveEnvApiKey, F as dedupeProfileIds, H as withFileLock, I as listProfilesForProvider, J as DEFAULT_CONTEXT_TOKENS, K as normalizeSecretInput, L as markAuthProfileGood, M as markAuthProfileFailure, N as markAuthProfileUsed, P as resolveApiKeyForProfile, R as ensureAuthProfileStore, S as getApiKeyForModel, T as resolveApiKeyForProvider, X as DEFAULT_PROVIDER, Y as DEFAULT_MODEL, Z as getShellPathFromLoginShell, a as isCliProvider, b as OLLAMA_NATIVE_BASE_URL, c as normalizeProviderId, d as resolveDefaultModelForAgent, f as resolveModelRefFromString, i as findNormalizedProviderValue, j as isProfileInCooldown, k as resolveAuthProfileOrder, m as resolveThinkingDefault, n as buildConfiguredAllowlistKeys, o as modelKey, p as resolveSubagentSpawnModelSelection, q as resolveAuthProfileDisplayLabel, r as buildModelAliasIndex, s as normalizeModelRef$2, t as buildAllowedModelSet, u as resolveConfiguredModelRef, w as requireApiKey, x as createOllamaStreamFn, z as resolveAuthStorePathForDisplay } from "./model-selection-CtVwtb6y.js";
16
+ import { A as logInfo, C as resolveSymiPackageRoot, D as spawnWithFallback, E as runExec, O as logDebug, S as loadWorkspaceBootstrapFiles, T as runCommandWithTimeout, a as resolveAgentModelPrimary, b as ensureAgentWorkspace, c as resolveDefaultAgentId, d as resolveSessionAgentIds, h as DEFAULT_IDENTITY_FILENAME, i as resolveAgentModelFallbacksOverride, j as logWarn, k as logError, l as resolveEffectiveModelFallbacks, m as DEFAULT_BOOTSTRAP_FILENAME, n as resolveAgentConfig, o as resolveAgentSkillsFilter, p as DEFAULT_AGENT_WORKSPACE_DIR, r as resolveAgentDir, s as resolveAgentWorkspaceDir, t as listAgentIds, u as resolveSessionAgentId, x as filterBootstrapFilesForSession } from "./agent-scope-C3gMMKCU.js";
17
+ import { c as normalizePluginsConfig, f as isPathInsideWithRealpath, i as safeStatSync, l as resolveEnableState, n as discoverSymiPlugins, p as isDangerousHostEnvVarName, r as isPathInside, s as applyTestPluginDefaults, t as loadPluginManifestRegistry, u as resolveMemorySlotDecision } from "./manifest-registry-hy3Bn-r9.js";
18
18
  import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-Bv8oZiTO.js";
19
- import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-DoC1xtDu.js";
19
+ import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-Ji7f0gqq.js";
20
20
  import { n as normalizePollInput } from "./polls-3WJMd-G-.js";
21
- import { c as detectMime, d as imageMimeFromFormat, f as isAudioFileName, g as MAX_IMAGE_BYTES, i as getImageMetadata, l as extensionForMime, p as isGifMedia, s as resizeToJpeg, v as mediaKindFromMime } from "./image-ops-BlQR__MN.js";
21
+ import { c as detectMime, d as imageMimeFromFormat, f as isAudioFileName, g as MAX_IMAGE_BYTES, i as getImageMetadata, l as extensionForMime, p as isGifMedia, s as resizeToJpeg, v as mediaKindFromMime } from "./image-ops-Bnp6LXEx.js";
22
22
  import { a as isBlockedHostnameOrIp, c as normalizeHostname, t as SsrFBlockedError } from "./ssrf-DKZ8eBrk.js";
23
- import { a as readResponseWithLimit, i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, o as fetchWithSsrFGuard, t as getAgentScopedMediaLocalRoots } from "./local-roots-BHLNSI8U.js";
24
- import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-BJ6BHE5b.js";
25
- import { a as chunkText, c as resolveChunkMode, d as findFenceSpanAt, f as isSafeFenceBreak, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, o as chunkTextWithMode, p as parseFenceSpans, r as chunkMarkdownText, t as chunkByNewline } from "./chunk-Dw2XBYXv.js";
26
- import { a as isMarkdownCapableMessageChannel, c as resolveGatewayMessageChannel, d as GATEWAY_CLIENT_MODES, f as GATEWAY_CLIENT_NAMES, i as isInternalMessageChannel, l as resolveMessageChannel, n as isDeliverableMessageChannel, o as listDeliverableMessageChannels, r as isGatewayMessageChannel, s as normalizeMessageChannel, t as INTERNAL_MESSAGE_CHANNEL, u as GATEWAY_CLIENT_IDS } from "./message-channel-COTAJzHd.js";
23
+ import { a as readResponseWithLimit, i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, o as fetchWithSsrFGuard, t as getAgentScopedMediaLocalRoots } from "./local-roots-Ckk1QfzI.js";
24
+ import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-Fb3qpcis.js";
25
+ import { a as chunkText, c as resolveChunkMode, d as findFenceSpanAt, f as isSafeFenceBreak, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, o as chunkTextWithMode, p as parseFenceSpans, r as chunkMarkdownText, t as chunkByNewline } from "./chunk-jvk9axTQ.js";
26
+ import { a as isMarkdownCapableMessageChannel, c as resolveGatewayMessageChannel, d as GATEWAY_CLIENT_MODES, f as GATEWAY_CLIENT_NAMES, i as isInternalMessageChannel, l as resolveMessageChannel, n as isDeliverableMessageChannel, o as listDeliverableMessageChannels, r as isGatewayMessageChannel, s as normalizeMessageChannel, t as INTERNAL_MESSAGE_CHANNEL, u as GATEWAY_CLIENT_IDS } from "./message-channel-BdI5Ra9S.js";
27
27
  import { t as normalizeChatType } from "./chat-type-CEMQNtWX.js";
28
- import { n as resolveMarkdownTableMode } from "./markdown-tables-BoYFajMu.js";
29
- import { t as convertMarkdownTables } from "./tables-DNwXwNFa.js";
30
- import { a as formatIMessageChatTarget, c as parseIMessageTarget, i as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, o as isAllowedIMessageSender, r as createIMessageRpcClient, s as normalizeIMessageHandle, t as sendMessageIMessage } from "./send-XSuwT1PC.js";
31
- import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-HJ2sfZDV.js";
32
- import { a as createActionGate, c as jsonResult, d as readReactionParams, f as readStringArrayParam, l as parseAvailableTags, m as readStringParam, n as missingTargetError, o as imageResult, p as readStringOrNumberParam, r as unknownTargetError, s as imageResultFromFile, t as ambiguousTargetError, u as readNumberParam } from "./target-errors-Paro1BjP.js";
33
- import { a as createSlackWebClient, c as validateSlackBlocksArray, i as buildSlackBlocksFallbackText, o as resolveSlackWebClientOptions, s as parseSlackBlocksInput, t as sendMessageSlack } from "./send-fNRDT21N.js";
34
- import { $ as parseTelegramTarget, A as hasBotMention, B as resolveSenderAllowMatch, C as buildTelegramGroupPeerId, D as describeReplyTarget, E as buildTypingThreadParams, F as resolveTelegramReplyId, G as readChannelAllowFromStore, H as isSenderIdAllowed, I as resolveTelegramStreamMode, J as upsertChannelPairingRequest, L as resolveTelegramThreadSpec, M as resolveTelegramForumThreadId, N as resolveTelegramGroupAllowFromContext, O as expandTextLinks, P as resolveTelegramMediaPlaceholder, Q as isVoiceCompatibleAudio, R as isSenderAllowed$1, S as buildTelegramGroupFrom, T as buildTelegramThreadParams, U as mergeAllowFromSources, V as firstDefined$1, W as addChannelAllowFromStoreEntry, X as listPairingChannels, Y as getPairingAdapter, Z as withTelegramApiErrorLogging, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildSenderLabel, c as sendStickerTelegram, d as wasSentByBot, et as resolveTelegramTargetChatType, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as normalizeForwardedContext, k as extractTelegramLocation, m as markdownToTelegramHtml, n as createForumTopicTelegram, nt as toLocationContext, o as sendMessageTelegram, p as markdownToTelegramChunks, q as removeChannelAllowFromStoreEntry, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, tt as formatLocationText, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramParentPeer, x as buildSenderName, y as buildGroupLabel, z as normalizeAllowFromWithStore$1 } from "./send-CKXzQuXo.js";
35
- import { _ as CLI_OUTPUT_MAX_BUFFER, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as registerUnhandledRejectionHandler, g as resolveMediaUnderstandingScope, h as normalizeMediaUnderstandingChatType, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveTimeoutMs$1, n as createMediaAttachmentCache, o as runCapability, p as resolveConcurrency, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as applyTemplate, y as buildRandomTempFilePath } from "./runner-BuxCHv_O.js";
36
- import { a as resolveAckReaction, c as resolveHumanDelayConfig, i as resolveResponsePrefixTemplate, n as createReplyPrefixOptions, o as resolveAgentIdentity, s as resolveEffectiveMessagesConfig } from "./reply-prefix-uxfMZW4p.js";
37
- import { a as isSilentReplyText, i as isSilentReplyPrefixText, n as SILENT_REPLY_TOKEN, r as SYMIPULSE_TOKEN, t as HEARTBEAT_TOKEN } from "./tokens-bC3UVmVH.js";
38
- import { c as getSkillsSnapshotVersion, d as resolvePairingPaths, f as createAsyncLock, i as resolveSkillCommandInvocation, l as generatePairingToken, m as writeJsonAtomic, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, p as readJsonFile, r as listSkillCommandsForWorkspace, s as ensureSkillsWatcher, t as listReservedChatSlashCommandNames, u as pruneExpiredPending } from "./skill-commands-yzJVuTIW.js";
39
- import { c as assertSandboxPath, d as resolveSandboxedMediaSource, f as applySkillEnvOverrides, i as resolveSkillsPromptForRun, l as resolveSandboxInputPath, n as buildWorkspaceSkillSnapshot, p as applySkillEnvOverridesFromSnapshot, r as loadWorkspaceSkillEntries, s as assertMediaNotDataUrl } from "./skills-BfsaS1F9.js";
40
- import { M as isSecureWebSocketUrl, N as rawDataToString, T as DEFAULT_AI_SNAPSHOT_MAX_CHARS, x as ensureChromeExtensionRelayServer } from "./chrome-CEqfiEs0.js";
41
- import { A as normalizeHyphenSlug, F as resolveChannelGroupRequireMention, I as resolveChannelGroupToolsPolicy, M as normalizeStringEntriesLower, P as resolveChannelGroupPolicy, a as normalizeReasoningLevel, c as normalizeVerboseLevel, d as getChannelDock, f as listChannelDocks, i as normalizeElevatedLevel, j as normalizeStringEntries, k as normalizeAtHashSlug, l as resolveResponseUsageMode, m as normalizeSignalMessagingTarget, n as formatXHighModelHint, o as normalizeThinkLevel, s as normalizeUsageDisplay, t as formatThinkingLevels, u as supportsXHighThinking } from "./thinking-CXqf7WTe.js";
42
- import { r as resolveIMessageAccount } from "./accounts-s-AdhXVR.js";
43
- import { i as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-BtaOa4z_.js";
44
- import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeChannelTargetInput, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as buildTargetResolverSignature, h as throwIfAborted, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as normalizeTargetForProvider, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-B8Y2t-RH.js";
45
- import { $ as normalizeToolName, A as isTransientHttpError, At as countToolResults, B as resolveProfile, Bt as resolveChannelResetConfig, C as isContextOverflowError, Ct as deliveryContextKey, D as isRateLimitAssistantError, Dt as normalizeAccountId$3, E as isLikelyContextOverflowError, Et as normalizeSessionDeliveryFields, F as resolveSandboxContext, Ft as normalizeInputProvenance, G as resolveBrowserControlAuth, Gt as resolveFreshSessionTotalTokens, H as resolveExistingPathsWithinRoot, Ht as resolveSessionResetType, I as resolveSandboxRuntimeStatus, It as acquireSessionWriteLock, J as buildPluginToolGroups, Jt as resolveMainSessionKey, K as resolveSandboxConfigForAgent, Kt as canonicalizeMainSessionAlias, L as createBrowserRouteContext, Lt as resolveSessionLockMaxHoldFromTimeout, M as parseImageSizeError, Mt as INPUT_PROVENANCE_KIND_VALUES, N as sanitizeUserFacingText, Nt as applyInputProvenanceToUserMessage, O as isRawApiErrorPayload, Ot as archiveSessionTranscripts, P as ensureSandboxWorkspaceForSession, Pt as hasInterSessionUserProvenance, Q as mergeAlsoAllowPolicy, R as registerBrowserRoutes, Rt as resolveSessionKey, S as isCompactionFailureError, St as deliveryContextFromSession, T as isFailoverErrorMessage, Tt as normalizeDeliveryContext, U as getBridgeAuthForPort, Ut as resolveThreadFlag, V as DEFAULT_UPLOAD_DIR, Vt as resolveSessionResetPolicy, W as ensureBrowserControlAuth, Wt as DEFAULT_RESET_TRIGGERS, X as expandPolicyWithPluginGroups, Xt as resolveGroupSessionKey, Y as collectExplicitAllowlist, Yt as deriveSessionMetaPatch, Z as expandToolGroups, _ as formatRawAssistantErrorForUi, _t as updateLastRoute, a as isMessagingToolDuplicateNormalized, at as ensureSessionHeader, b as isBillingAssistantError, bt as isCacheEnabled, c as extractToolCallsFromAssistant, ct as sanitizeGoogleTurnOrdering, d as isAntigravityClaude, dt as appendAssistantMessageToSessionTranscript, et as resolveToolProfilePolicy, f as isGoogleModelApi, g as formatBillingErrorMessage, gt as recordSessionMetaFromInbound, h as formatAssistantErrorText, ht as readSessionUpdatedAt, it as buildBootstrapContextFiles, j as parseImageDimensionError, jt as extractToolCallNames, k as isTimeoutErrorMessage, kt as capArrayByJsonBytes, l as extractToolResultId, lt as extractDeliveryInfo, m as classifyFailoverReason, mt as loadSessionStore, n as validateGeminiTurns, nt as compileGlobPatterns, o as normalizeTextForComparison, ot as resolveBootstrapMaxChars, p as BILLING_ERROR_USER_MESSAGE, pt as resolveAndPersistSessionFile, q as applyOwnerOnlyToolPolicy, qt as resolveExplicitAgentSessionKey, r as pickFallbackThinkingLevel, rt as matchesAnyGlobPattern, s as sanitizeSessionMessagesImages, st as resolveBootstrapTotalMaxChars, t as validateAnthropicTurns, tt as stripPluginOnlyAllowlist, u as downgradeOpenAIReasoningBlocks, ut as parseSessionThreadInfo, v as getApiErrorPayloadFingerprint, vt as updateSessionStore, w as isFailoverAssistantError, wt as mergeDeliveryContext, x as isCloudCodeAssistFormatError, xt as resolveCacheTtlMs$1, y as isAuthAssistantError, yt as updateSessionStoreEntry, z as resolveBrowserConfig, zt as evaluateSessionFreshness } from "./pi-embedded-helpers-dd3G9Hfi.js";
28
+ import { n as resolveMarkdownTableMode } from "./markdown-tables-Dfaqilz6.js";
29
+ import { t as convertMarkdownTables } from "./tables-DR0NmBeH.js";
30
+ import { a as formatIMessageChatTarget, c as parseIMessageTarget, i as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, o as isAllowedIMessageSender, r as createIMessageRpcClient, s as normalizeIMessageHandle, t as sendMessageIMessage } from "./send-jsofmTfJ.js";
31
+ import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-D7Lno-TE.js";
32
+ import { a as createActionGate, c as jsonResult, d as readReactionParams, f as readStringArrayParam, l as parseAvailableTags, m as readStringParam, n as missingTargetError, o as imageResult, p as readStringOrNumberParam, r as unknownTargetError, s as imageResultFromFile, t as ambiguousTargetError, u as readNumberParam } from "./target-errors-B7YyMnIi.js";
33
+ import { a as createSlackWebClient, c as validateSlackBlocksArray, i as buildSlackBlocksFallbackText, o as resolveSlackWebClientOptions, s as parseSlackBlocksInput, t as sendMessageSlack } from "./send-BP5pSPaZ.js";
34
+ import { $ as parseTelegramTarget, A as hasBotMention, B as resolveSenderAllowMatch, C as buildTelegramGroupPeerId, D as describeReplyTarget, E as buildTypingThreadParams, F as resolveTelegramReplyId, G as readChannelAllowFromStore, H as isSenderIdAllowed, I as resolveTelegramStreamMode, J as upsertChannelPairingRequest, L as resolveTelegramThreadSpec, M as resolveTelegramForumThreadId, N as resolveTelegramGroupAllowFromContext, O as expandTextLinks, P as resolveTelegramMediaPlaceholder, Q as isVoiceCompatibleAudio, R as isSenderAllowed$1, S as buildTelegramGroupFrom, T as buildTelegramThreadParams, U as mergeAllowFromSources, V as firstDefined$1, W as addChannelAllowFromStoreEntry, X as listPairingChannels, Y as getPairingAdapter, Z as withTelegramApiErrorLogging, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildSenderLabel, c as sendStickerTelegram, d as wasSentByBot, et as resolveTelegramTargetChatType, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as normalizeForwardedContext, k as extractTelegramLocation, m as markdownToTelegramHtml, n as createForumTopicTelegram, nt as toLocationContext, o as sendMessageTelegram, p as markdownToTelegramChunks, q as removeChannelAllowFromStoreEntry, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, tt as formatLocationText, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramParentPeer, x as buildSenderName, y as buildGroupLabel, z as normalizeAllowFromWithStore$1 } from "./send-DLO_yV5_.js";
35
+ import { _ as CLI_OUTPUT_MAX_BUFFER, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as registerUnhandledRejectionHandler, g as resolveMediaUnderstandingScope, h as normalizeMediaUnderstandingChatType, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveTimeoutMs$1, n as createMediaAttachmentCache, o as runCapability, p as resolveConcurrency, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as applyTemplate, y as buildRandomTempFilePath } from "./runner-BhifC1J_.js";
36
+ import { a as resolveAckReaction, c as resolveHumanDelayConfig, i as resolveResponsePrefixTemplate, n as createReplyPrefixOptions, o as resolveAgentIdentity, s as resolveEffectiveMessagesConfig } from "./reply-prefix-BHuV5t70.js";
37
+ import { a as isSilentReplyText, i as isSilentReplyPrefixText, n as SILENT_REPLY_TOKEN, r as SYMIPULSE_TOKEN, t as HEARTBEAT_TOKEN } from "./tokens-CWMflosr.js";
38
+ import { c as getSkillsSnapshotVersion, d as resolvePairingPaths, f as createAsyncLock, i as resolveSkillCommandInvocation, l as generatePairingToken, m as writeJsonAtomic, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, p as readJsonFile, r as listSkillCommandsForWorkspace, s as ensureSkillsWatcher, t as listReservedChatSlashCommandNames, u as pruneExpiredPending } from "./skill-commands-DEfqC_kJ.js";
39
+ import { c as assertSandboxPath, d as resolveSandboxedMediaSource, f as applySkillEnvOverrides, i as resolveSkillsPromptForRun, l as resolveSandboxInputPath, n as buildWorkspaceSkillSnapshot, p as applySkillEnvOverridesFromSnapshot, r as loadWorkspaceSkillEntries, s as assertMediaNotDataUrl } from "./skills-C9DbB-Kp.js";
40
+ import { M as isSecureWebSocketUrl, N as rawDataToString, T as DEFAULT_AI_SNAPSHOT_MAX_CHARS, x as ensureChromeExtensionRelayServer } from "./chrome-D9kN9org.js";
41
+ import { A as normalizeHyphenSlug, F as resolveChannelGroupRequireMention, I as resolveChannelGroupToolsPolicy, M as normalizeStringEntriesLower, P as resolveChannelGroupPolicy, a as normalizeReasoningLevel, c as normalizeVerboseLevel, d as getChannelDock, f as listChannelDocks, i as normalizeElevatedLevel, j as normalizeStringEntries, k as normalizeAtHashSlug, l as resolveResponseUsageMode, m as normalizeSignalMessagingTarget, n as formatXHighModelHint, o as normalizeThinkLevel, s as normalizeUsageDisplay, t as formatThinkingLevels, u as supportsXHighThinking } from "./thinking-DCNUIAHY.js";
42
+ import { r as resolveIMessageAccount } from "./accounts-Dtszw3Zn.js";
43
+ import { i as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-BToL3HlP.js";
44
+ import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeChannelTargetInput, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as buildTargetResolverSignature, h as throwIfAborted, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as normalizeTargetForProvider, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-CKgFosI5.js";
45
+ import { $ as normalizeToolName, A as isTransientHttpError, At as countToolResults, B as resolveProfile, Bt as resolveChannelResetConfig, C as isContextOverflowError, Ct as deliveryContextKey, D as isRateLimitAssistantError, Dt as normalizeAccountId$3, E as isLikelyContextOverflowError, Et as normalizeSessionDeliveryFields, F as resolveSandboxContext, Ft as normalizeInputProvenance, G as resolveBrowserControlAuth, Gt as resolveFreshSessionTotalTokens, H as resolveExistingPathsWithinRoot, Ht as resolveSessionResetType, I as resolveSandboxRuntimeStatus, It as acquireSessionWriteLock, J as buildPluginToolGroups, Jt as resolveMainSessionKey, K as resolveSandboxConfigForAgent, Kt as canonicalizeMainSessionAlias, L as createBrowserRouteContext, Lt as resolveSessionLockMaxHoldFromTimeout, M as parseImageSizeError, Mt as INPUT_PROVENANCE_KIND_VALUES, N as sanitizeUserFacingText, Nt as applyInputProvenanceToUserMessage, O as isRawApiErrorPayload, Ot as archiveSessionTranscripts, P as ensureSandboxWorkspaceForSession, Pt as hasInterSessionUserProvenance, Q as mergeAlsoAllowPolicy, R as registerBrowserRoutes, Rt as resolveSessionKey, S as isCompactionFailureError, St as deliveryContextFromSession, T as isFailoverErrorMessage, Tt as normalizeDeliveryContext, U as getBridgeAuthForPort, Ut as resolveThreadFlag, V as DEFAULT_UPLOAD_DIR, Vt as resolveSessionResetPolicy, W as ensureBrowserControlAuth, Wt as DEFAULT_RESET_TRIGGERS, X as expandPolicyWithPluginGroups, Xt as resolveGroupSessionKey, Y as collectExplicitAllowlist, Yt as deriveSessionMetaPatch, Z as expandToolGroups, _ as formatRawAssistantErrorForUi, _t as updateLastRoute, a as isMessagingToolDuplicateNormalized, at as ensureSessionHeader, b as isBillingAssistantError, bt as isCacheEnabled, c as extractToolCallsFromAssistant, ct as sanitizeGoogleTurnOrdering, d as isAntigravityClaude, dt as appendAssistantMessageToSessionTranscript, et as resolveToolProfilePolicy, f as isGoogleModelApi, g as formatBillingErrorMessage, gt as recordSessionMetaFromInbound, h as formatAssistantErrorText, ht as readSessionUpdatedAt, it as buildBootstrapContextFiles, j as parseImageDimensionError, jt as extractToolCallNames, k as isTimeoutErrorMessage, kt as capArrayByJsonBytes, l as extractToolResultId, lt as extractDeliveryInfo, m as classifyFailoverReason, mt as loadSessionStore, n as validateGeminiTurns, nt as compileGlobPatterns, o as normalizeTextForComparison, ot as resolveBootstrapMaxChars, p as BILLING_ERROR_USER_MESSAGE, pt as resolveAndPersistSessionFile, q as applyOwnerOnlyToolPolicy, qt as resolveExplicitAgentSessionKey, r as pickFallbackThinkingLevel, rt as matchesAnyGlobPattern, s as sanitizeSessionMessagesImages, st as resolveBootstrapTotalMaxChars, t as validateAnthropicTurns, tt as stripPluginOnlyAllowlist, u as downgradeOpenAIReasoningBlocks, ut as parseSessionThreadInfo, v as getApiErrorPayloadFingerprint, vt as updateSessionStore, w as isFailoverAssistantError, wt as mergeDeliveryContext, x as isCloudCodeAssistFormatError, xt as resolveCacheTtlMs$1, y as isAuthAssistantError, yt as updateSessionStoreEntry, z as resolveBrowserConfig, zt as evaluateSessionFreshness } from "./pi-embedded-helpers-BL7ZRhGv.js";
46
46
  import { n as resolveConversationLabel } from "./conversation-label-yNSj43Jt.js";
47
47
  import { i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath, t as resolveDefaultSessionStorePath } from "./paths-A0xdf3yk.js";
48
48
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-x1D4Vniz.js";
49
- import { a as logMessageProcessed, c as logWebhookError, d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, i as logLaneEnqueue, l as logWebhookProcessed, m as isDiagnosticsEnabled, o as logMessageQueued, p as emitDiagnosticEvent, r as logLaneDequeue, s as logSessionStateChange, t as diag, u as logWebhookReceived } from "./diagnostic-BR07buTm.js";
50
- import { i as saveMediaBuffer, r as getMediaDir } from "./store-BdrNabcU.js";
49
+ import { a as logMessageProcessed, c as logWebhookError, d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, i as logLaneEnqueue, l as logWebhookProcessed, m as isDiagnosticsEnabled, o as logMessageQueued, p as emitDiagnosticEvent, r as logLaneDequeue, s as logSessionStateChange, t as diag, u as logWebhookReceived } from "./diagnostic-_oc91gNi.js";
50
+ import { i as saveMediaBuffer, r as getMediaDir } from "./store-Do3t33-c.js";
51
51
  import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-D5EzMeL_.js";
52
- import { S as minimaxUnderstandImage, _ as stripThinkingTagsFromText, a as decodeDataUrl, b as extractTextFromChatContent, c as extractAssistantThinking, d as formatReasoningMessage, f as inferToolMetaFromArgs, g as stripMinimaxToolCallXml, h as stripDowngradedToolCallText, i as coerceImageModelConfig, l as extractThinkingFromTaggedStream, m as promoteThinkingTagsToBlocks, o as resolveProviderVisionModelFromConfig, p as isAssistantMessage, r as coerceImageAssistantText, s as extractAssistantText$1, u as extractThinkingFromTaggedText, v as resolveToolDisplay, x as ensureSymiModelsJson, y as stripReasoningTagsFromText } from "./image-CCmNHDV0.js";
52
+ import { S as minimaxUnderstandImage, _ as stripThinkingTagsFromText, a as decodeDataUrl, b as extractTextFromChatContent, c as extractAssistantThinking, d as formatReasoningMessage, f as inferToolMetaFromArgs, g as stripMinimaxToolCallXml, h as stripDowngradedToolCallText, i as coerceImageModelConfig, l as extractThinkingFromTaggedStream, m as promoteThinkingTagsToBlocks, o as resolveProviderVisionModelFromConfig, p as isAssistantMessage, r as coerceImageAssistantText, s as extractAssistantText$1, u as extractThinkingFromTaggedText, v as resolveToolDisplay, x as ensureSymiModelsJson, y as stripReasoningTagsFromText } from "./image-DFyINnvE.js";
53
53
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-LbcEa65a.js";
54
54
  import { c as normalizeExtraMemoryPaths, m as runTasksWithConcurrency, s as listMemoryFiles } from "./internal-Qi-tyvHh.js";
55
55
  import { r as getDiagnosticSessionState } from "./diagnostic-session-state-Wd5tNeQG.js";
56
- import { a as resolveMemorySearchConfig, i as resolveOllamaBaseUrl, r as probeOllamaEmbeddingModels, t as MemoryIndexManager } from "./manager-B9GigLWj.js";
57
- import { _ as resolveNativeCommandsEnabled, a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, g as isRestartEnabled, h as isNativeCommandsExplicitlyDisabled, i as listChatCommands, l as parseCommandArgs, m as isCommandFlagEnabled, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices, v as resolveNativeSkillsEnabled } from "./commands-registry-BhW_oGNt.js";
58
- import { c as signalRpcRequest, l as streamSignalEvents, n as sendReadReceiptSignal, o as resolveSignalRpcContext, r as sendTypingSignal, s as signalCheck, t as sendMessageSignal } from "./send-BtO-7fHs.js";
56
+ import { a as resolveMemorySearchConfig, i as resolveOllamaBaseUrl, r as probeOllamaEmbeddingModels, t as MemoryIndexManager } from "./manager-DUmxOoHb.js";
57
+ import { _ as resolveNativeCommandsEnabled, a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, g as isRestartEnabled, h as isNativeCommandsExplicitlyDisabled, i as listChatCommands, l as parseCommandArgs, m as isCommandFlagEnabled, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices, v as resolveNativeSkillsEnabled } from "./commands-registry-BuYpmEx-.js";
58
+ import { c as signalRpcRequest, l as streamSignalEvents, n as sendReadReceiptSignal, o as resolveSignalRpcContext, r as sendTypingSignal, s as signalCheck, t as sendMessageSignal } from "./send-CGhw9mO3.js";
59
59
  import { t as makeProxyFetch } from "./proxy-D27OUbrW.js";
60
- import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-CWfcnhza.js";
61
- import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-CQ4szNhV.js";
62
- import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-CB2bV0Jd.js";
63
- import { t as getActiveWebListener } from "./active-listener-DYjn3fML.js";
60
+ import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-CHQ7BTlU.js";
61
+ import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-BR2TPTVW.js";
62
+ import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-DiyK6bgV.js";
63
+ import { t as getActiveWebListener } from "./active-listener-CJuvR4C2.js";
64
64
  import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-CP722fTK.js";
65
65
  import { createRequire } from "node:module";
66
66
  import fs, { existsSync, mkdirSync, mkdtempSync, readFileSync, renameSync, rmSync, statSync, unlinkSync, writeFileSync } from "node:fs";
67
67
  import * as path$1 from "node:path";
68
68
  import path from "node:path";
69
69
  import os, { homedir } from "node:os";
70
- import JSON5 from "json5";
70
+ import json5 from "json5";
71
71
  import { ApplicationCommandOptionType, ButtonStyle, ChannelType, PermissionFlagsBits, Routes, StickerFormatType } from "discord-api-types/v10";
72
72
  import { Button, ChannelSelectMenu, ChannelType as ChannelType$1, Client, Command, CommandWithSubcommands, Container, MentionableSelectMenu, MessageCreateListener, MessageReactionAddListener, MessageReactionRemoveListener, MessageType, Modal, PresenceUpdateListener, ReadyListener, RoleSelectMenu, Row, Separator, StringSelectMenu, TextDisplay, UserSelectMenu, serializePayload } from "@buape/carbon";
73
73
  import crypto, { X509Certificate, createHash, createHmac, randomBytes, randomUUID } from "node:crypto";
@@ -4006,6 +4006,31 @@ const SessionsUsageParamsSchema = Type.Object({
4006
4006
  includeContextWeight: Type.Optional(Type.Boolean())
4007
4007
  }, { additionalProperties: false });
4008
4008
 
4009
+ //#endregion
4010
+ //#region src/gateway/protocol/schema/tasks.ts
4011
+ /**
4012
+ * tasks.list — enumerates long-running detached tasks across configured
4013
+ * agent workspaces. Optional `workdir` override scans a single absolute
4014
+ * directory instead.
4015
+ */
4016
+ const TasksListParamsSchema = Type.Object({ workdir: Type.Optional(Type.String()) }, { additionalProperties: false });
4017
+ const TaskInfoSchema = Type.Object({
4018
+ id: Type.String(),
4019
+ agentId: Type.Optional(Type.String()),
4020
+ workdir: Type.String(),
4021
+ pid: Type.Union([Type.Integer(), Type.Null()]),
4022
+ alive: Type.Boolean(),
4023
+ archived: Type.Boolean(),
4024
+ status: Type.String(),
4025
+ started: Type.Union([Type.String(), Type.Null()]),
4026
+ cmd: Type.Union([Type.String(), Type.Null()]),
4027
+ pidPath: Type.String(),
4028
+ statusPath: Type.String(),
4029
+ archivedPath: Type.String(),
4030
+ logPath: Type.String()
4031
+ }, { additionalProperties: false });
4032
+ const TasksListResultSchema = Type.Object({ tasks: Type.Array(TaskInfoSchema) }, { additionalProperties: false });
4033
+
4009
4034
  //#endregion
4010
4035
  //#region src/gateway/protocol/schema/wizard.ts
4011
4036
  const WizardRunStatusSchema = Type.Union([
@@ -4091,6 +4116,7 @@ const validateAgentIdentityParams = ajv.compile(AgentIdentityParamsSchema);
4091
4116
  const validateAgentWaitParams = ajv.compile(AgentWaitParamsSchema);
4092
4117
  const validateWakeParams = ajv.compile(WakeParamsSchema);
4093
4118
  const validateAgentsListParams = ajv.compile(AgentsListParamsSchema);
4119
+ const validateTasksListParams = ajv.compile(TasksListParamsSchema);
4094
4120
  const validateAgentsCreateParams = ajv.compile(AgentsCreateParamsSchema);
4095
4121
  const validateAgentsUpdateParams = ajv.compile(AgentsUpdateParamsSchema);
4096
4122
  const validateAgentsDeleteParams = ajv.compile(AgentsDeleteParamsSchema);
@@ -4513,6 +4539,7 @@ const METHOD_SCOPE_GROUPS = {
4513
4539
  "cron.list",
4514
4540
  "cron.status",
4515
4541
  "cron.runs",
4542
+ "tasks.list",
4516
4543
  "system-presence",
4517
4544
  "last-heartbeat",
4518
4545
  "node.list",
@@ -7811,7 +7838,7 @@ async function createModelSelectionState(params) {
7811
7838
  }
7812
7839
  }
7813
7840
  if (sessionEntry && sessionStore && sessionKey && sessionEntry.authProfileOverride) {
7814
- const { ensureAuthProfileStore } = await import("./model-selection-Bbs4XGPG.js").then((n) => n.O);
7841
+ const { ensureAuthProfileStore } = await import("./model-selection-CtVwtb6y.js").then((n) => n.O);
7815
7842
  const profile = ensureAuthProfileStore(void 0, { allowKeychainPrompt: false }).profiles[sessionEntry.authProfileOverride];
7816
7843
  const providerKey = normalizeProviderId(provider);
7817
7844
  if (!profile || normalizeProviderId(profile.provider) !== providerKey) await clearSessionAuthProfileOverride({
@@ -11563,7 +11590,7 @@ async function getMemorySearchManager(params) {
11563
11590
  if (cached) return { manager: cached };
11564
11591
  }
11565
11592
  try {
11566
- const { QmdMemoryManager } = await import("./qmd-manager-wIr8qz2n.js");
11593
+ const { QmdMemoryManager } = await import("./qmd-manager-BlUikj9s.js");
11567
11594
  const primary = await QmdMemoryManager.create({
11568
11595
  cfg: params.cfg,
11569
11596
  agentId: params.agentId,
@@ -11575,7 +11602,7 @@ async function getMemorySearchManager(params) {
11575
11602
  const wrapper = new FallbackMemoryManager({
11576
11603
  primary,
11577
11604
  fallbackFactory: async () => {
11578
- const { MemoryIndexManager } = await import("./manager-B9GigLWj.js").then((n) => n.n);
11605
+ const { MemoryIndexManager } = await import("./manager-DUmxOoHb.js").then((n) => n.n);
11579
11606
  return await MemoryIndexManager.get(params);
11580
11607
  }
11581
11608
  }, () => QMD_MANAGER_CACHE.delete(cacheKey));
@@ -11588,7 +11615,7 @@ async function getMemorySearchManager(params) {
11588
11615
  }
11589
11616
  }
11590
11617
  try {
11591
- const { MemoryIndexManager } = await import("./manager-B9GigLWj.js").then((n) => n.n);
11618
+ const { MemoryIndexManager } = await import("./manager-DUmxOoHb.js").then((n) => n.n);
11592
11619
  return { manager: await MemoryIndexManager.get(params) };
11593
11620
  } catch (err) {
11594
11621
  return {
@@ -12733,7 +12760,7 @@ function normalizeSessionKey(value) {
12733
12760
  function readSessionStore(storePath) {
12734
12761
  try {
12735
12762
  const raw = fs.readFileSync(storePath, "utf-8");
12736
- const parsed = JSON5.parse(raw);
12763
+ const parsed = json5.parse(raw);
12737
12764
  if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) return parsed;
12738
12765
  } catch {}
12739
12766
  return {};
@@ -15590,7 +15617,7 @@ async function routeReply(params) {
15590
15617
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
15591
15618
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
15592
15619
  try {
15593
- const { deliverOutboundPayloads } = await import("./deliver-B8Y2t-RH.js").then((n) => n.n);
15620
+ const { deliverOutboundPayloads } = await import("./deliver-CKgFosI5.js").then((n) => n.n);
15594
15621
  return {
15595
15622
  ok: true,
15596
15623
  messageId: (await deliverOutboundPayloads({
@@ -18064,7 +18091,7 @@ async function describeStickerImage(params) {
18064
18091
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
18065
18092
  try {
18066
18093
  const buffer = await fs$1.readFile(imagePath);
18067
- const { describeImageWithModel } = await import("./image-CCmNHDV0.js").then((n) => n.n);
18094
+ const { describeImageWithModel } = await import("./image-DFyINnvE.js").then((n) => n.n);
18068
18095
  return (await describeImageWithModel({
18069
18096
  buffer,
18070
18097
  fileName: "sticker.webp",
@@ -18475,7 +18502,7 @@ function createWhatsAppLoginTool() {
18475
18502
  force: Type.Optional(Type.Boolean())
18476
18503
  }),
18477
18504
  execute: async (_toolCallId, args) => {
18478
- const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-BOUmLSY3.js");
18505
+ const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-lMl_OqDj.js");
18479
18506
  if ((args?.action ?? "start") === "wait") {
18480
18507
  const result = await waitForWebLogin({ timeoutMs: typeof args.timeoutMs === "number" ? args.timeoutMs : void 0 });
18481
18508
  return {
@@ -20630,7 +20657,7 @@ async function preflightDiscordMessage(params) {
20630
20657
  let preflightTranscript;
20631
20658
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
20632
20659
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
20633
- const { transcribeFirstAudio } = await import("./audio-preflight-CiVw8470.js");
20660
+ const { transcribeFirstAudio } = await import("./audio-preflight-DucGa8w7.js");
20634
20661
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
20635
20662
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
20636
20663
  ctx: {
@@ -30271,7 +30298,7 @@ async function recordLoopOutcome(args) {
30271
30298
  if (!args.ctx?.sessionKey) return;
30272
30299
  try {
30273
30300
  const { getDiagnosticSessionState } = await import("./diagnostic-session-state-Wd5tNeQG.js").then((n) => n.n);
30274
- const { recordToolCallOutcome } = await import("./tool-loop-detection-gmtzSlNZ.js");
30301
+ const { recordToolCallOutcome } = await import("./tool-loop-detection-DseOlBug.js");
30275
30302
  recordToolCallOutcome(getDiagnosticSessionState({
30276
30303
  sessionKey: args.ctx.sessionKey,
30277
30304
  sessionId: args.ctx?.agentId
@@ -30292,8 +30319,8 @@ async function runBeforeToolCallHook(args) {
30292
30319
  const params = args.params;
30293
30320
  if (args.ctx?.sessionKey) {
30294
30321
  const { getDiagnosticSessionState } = await import("./diagnostic-session-state-Wd5tNeQG.js").then((n) => n.n);
30295
- const { logToolLoopAction } = await import("./diagnostic-BR07buTm.js").then((n) => n.n);
30296
- const { detectToolCallLoop, recordToolCall } = await import("./tool-loop-detection-gmtzSlNZ.js");
30322
+ const { logToolLoopAction } = await import("./diagnostic-_oc91gNi.js").then((n) => n.n);
30323
+ const { detectToolCallLoop, recordToolCall } = await import("./tool-loop-detection-DseOlBug.js");
30297
30324
  const sessionState = getDiagnosticSessionState({
30298
30325
  sessionKey: args.ctx.sessionKey,
30299
30326
  sessionId: args.ctx?.agentId
@@ -33902,6 +33929,7 @@ async function resolveDetachScriptPath(params) {
33902
33929
  return cachedScriptPath;
33903
33930
  }
33904
33931
  async function buildLongTaskPromptSuffix(params) {
33932
+ if (params.cronEnabled === false) return "";
33905
33933
  const scriptPath = await resolveDetachScriptPath(params);
33906
33934
  if (!scriptPath) return "";
33907
33935
  return "\n\n" + [
@@ -33916,12 +33944,13 @@ async function buildLongTaskPromptSuffix(params) {
33916
33944
  "- Register a cron monitor via the `cron` tool's `add` action. Use the schema documented in that tool's own description for the exact field names — do NOT guess. The monitor should fire roughly every 3 minutes as an isolated agentTurn job, and its message must literally contain the task-id, PID, log path, and status path so the future turn has enough context without re-deriving them.",
33917
33945
  "- Safe status read (inside the monitor turn):",
33918
33946
  " `status=$(cat \"<workdir>/task-<id>.status\" 2>/dev/null || echo missing)`",
33919
- " Possible values: `running pid=<N> started=<ISO>`, `complete rc=<N> ended=<ISO>`, `aborted rc=<N> signal=<TERM|INT|HUP> ended=<ISO>`, or `missing` if the file was cleaned up.",
33947
+ " Possible values: `running pid=<N> started=<ISO>`, `complete rc=<N> ended=<ISO>`, `aborted rc=<N> signal=<TERM|INT|HUP> ended=<ISO>`, `archived swept-from=… at=<ISO>` if the janitor archived an old finished task, or `missing` only when neither `.status` nor `.archived` exists (task crashed or workdir was wiped).",
33920
33948
  "- Monitor responsibilities each tick:",
33921
33949
  " • If status begins with `running`: tail -n 20 <log>, post a one-sentence progress line.",
33922
33950
  " • If status begins with `complete`: post a final summary with rc and tail, then call cron action=remove on this job id.",
33923
33951
  " • If status begins with `aborted`: post a failure summary with signal and tail, then call cron action=remove.",
33924
- " • Never leave stale monitors running after the task finishes."
33952
+ " • Never leave stale monitors running after the task finishes.",
33953
+ "- Inspecting and killing tasks: use `task_list` to enumerate detached tasks in the workspace (returns id/pid/alive/status/started for each), and `task_cancel` with `taskId` (and optional `signal`, default SIGTERM) to terminate a running task. Prefer these over raw `kill`/`ps` exec calls — they share the detach script's task-id allow-list and report alreadyDead cleanly."
33925
33954
  ].join("\n");
33926
33955
  }
33927
33956
 
@@ -34991,7 +35020,8 @@ async function runEmbeddedAttempt(params) {
34991
35020
  const longTaskSuffix = await buildLongTaskPromptSuffix({
34992
35021
  argv1: process.argv[1],
34993
35022
  cwd: process.cwd(),
34994
- moduleUrl: import.meta.url
35023
+ moduleUrl: import.meta.url,
35024
+ cronEnabled: process.env.SYMI_SKIP_CRON !== "1" && params.config?.cron?.enabled !== false
34995
35025
  });
34996
35026
  const emailCapabilitySuffix = buildEmailCapabilityPromptSuffix();
34997
35027
  const systemPromptText = createSystemPromptOverride(appendPrompt + longTaskSuffix + emailCapabilitySuffix + profilePromptSuffix)();
@@ -36835,27 +36865,27 @@ async function runAgentTurn(params) {
36835
36865
  function createDefaultDeps() {
36836
36866
  return {
36837
36867
  sendMessageWhatsApp: async (...args) => {
36838
- const { sendMessageWhatsApp } = await import("./web-CmKqZEsX.js");
36868
+ const { sendMessageWhatsApp } = await import("./web-BQzPfsd0.js");
36839
36869
  return await sendMessageWhatsApp(...args);
36840
36870
  },
36841
36871
  sendMessageTelegram: async (...args) => {
36842
- const { sendMessageTelegram } = await import("./send-CKXzQuXo.js").then((n) => n.l);
36872
+ const { sendMessageTelegram } = await import("./send-DLO_yV5_.js").then((n) => n.l);
36843
36873
  return await sendMessageTelegram(...args);
36844
36874
  },
36845
36875
  sendMessageDiscord: async (...args) => {
36846
- const { sendMessageDiscord } = await import("./send-Djq5IPRa.js").then((n) => n.t);
36876
+ const { sendMessageDiscord } = await import("./send-ZhAe1nXO.js").then((n) => n.t);
36847
36877
  return await sendMessageDiscord(...args);
36848
36878
  },
36849
36879
  sendMessageSlack: async (...args) => {
36850
- const { sendMessageSlack } = await import("./send-fNRDT21N.js").then((n) => n.n);
36880
+ const { sendMessageSlack } = await import("./send-BP5pSPaZ.js").then((n) => n.n);
36851
36881
  return await sendMessageSlack(...args);
36852
36882
  },
36853
36883
  sendMessageSignal: async (...args) => {
36854
- const { sendMessageSignal } = await import("./send-BtO-7fHs.js").then((n) => n.i);
36884
+ const { sendMessageSignal } = await import("./send-CGhw9mO3.js").then((n) => n.i);
36855
36885
  return await sendMessageSignal(...args);
36856
36886
  },
36857
36887
  sendMessageIMessage: async (...args) => {
36858
- const { sendMessageIMessage } = await import("./send-XSuwT1PC.js").then((n) => n.n);
36888
+ const { sendMessageIMessage } = await import("./send-jsofmTfJ.js").then((n) => n.n);
36859
36889
  return await sendMessageIMessage(...args);
36860
36890
  }
36861
36891
  };
@@ -47007,7 +47037,7 @@ function readSlackExternalArgMenuToken(raw) {
47007
47037
  }
47008
47038
  let commandsRegistry;
47009
47039
  async function getCommandsRegistry() {
47010
- if (!commandsRegistry) commandsRegistry = await import("./commands-registry-BhW_oGNt.js").then((n) => n.n);
47040
+ if (!commandsRegistry) commandsRegistry = await import("./commands-registry-BuYpmEx-.js").then((n) => n.n);
47011
47041
  return commandsRegistry;
47012
47042
  }
47013
47043
  function encodeSlackCommandArgValue(parts) {
@@ -47349,11 +47379,11 @@ async function registerSlackMonitorSlashCommands(params) {
47349
47379
  const channelName = channelInfo?.name;
47350
47380
  const roomLabel = channelName ? `#${channelName}` : `#${command.channel_id}`;
47351
47381
  const [{ resolveAgentRoute }, { finalizeInboundContext }, { dispatchReplyWithDispatcher }] = await Promise.all([
47352
- import("./resolve-route-CWfcnhza.js").then((n) => n.r),
47382
+ import("./resolve-route-CHQ7BTlU.js").then((n) => n.r),
47353
47383
  import("./inbound-context-D5EzMeL_.js").then((n) => n.n),
47354
47384
  Promise.resolve().then(() => provider_dispatcher_exports)
47355
47385
  ]);
47356
- const [{ resolveConversationLabel }, { createReplyPrefixOptions }] = await Promise.all([import("./conversation-label-yNSj43Jt.js").then((n) => n.t), import("./reply-prefix-uxfMZW4p.js").then((n) => n.r)]);
47386
+ const [{ resolveConversationLabel }, { createReplyPrefixOptions }] = await Promise.all([import("./conversation-label-yNSj43Jt.js").then((n) => n.t), import("./reply-prefix-BHuV5t70.js").then((n) => n.r)]);
47357
47387
  const route = resolveAgentRoute({
47358
47388
  cfg,
47359
47389
  channel: "slack",
@@ -47410,9 +47440,9 @@ async function registerSlackMonitorSlashCommands(params) {
47410
47440
  });
47411
47441
  const deliverSlashPayloads = async (replies) => {
47412
47442
  const [{ deliverSlackSlashReplies }, { resolveChunkMode }, { resolveMarkdownTableMode }] = await Promise.all([
47413
- import("./replies-CQ4szNhV.js").then((n) => n.r),
47414
- import("./chunk-Dw2XBYXv.js").then((n) => n.s),
47415
- import("./markdown-tables-BoYFajMu.js").then((n) => n.t)
47443
+ import("./replies-BR2TPTVW.js").then((n) => n.r),
47444
+ import("./chunk-jvk9axTQ.js").then((n) => n.s),
47445
+ import("./markdown-tables-Dfaqilz6.js").then((n) => n.t)
47416
47446
  ]);
47417
47447
  await deliverSlackSlashReplies({
47418
47448
  replies,
@@ -47465,7 +47495,7 @@ async function registerSlackMonitorSlashCommands(params) {
47465
47495
  let nativeCommands = [];
47466
47496
  if (nativeEnabled) {
47467
47497
  reg = await getCommandsRegistry();
47468
- const skillCommands = nativeSkillsEnabled ? (await import("./skill-commands-yzJVuTIW.js").then((n) => n.a)).listSkillCommandsForAgents({ cfg }) : [];
47498
+ const skillCommands = nativeSkillsEnabled ? (await import("./skill-commands-DEfqC_kJ.js").then((n) => n.a)).listSkillCommandsForAgents({ cfg }) : [];
47469
47499
  nativeCommands = reg.listNativeCommandSpecsForConfig(cfg, {
47470
47500
  skillCommands,
47471
47501
  provider: "slack"
@@ -52116,7 +52146,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
52116
52146
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
52117
52147
  let preflightTranscript;
52118
52148
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
52119
- const { transcribeFirstAudio } = await import("./audio-preflight-CiVw8470.js");
52149
+ const { transcribeFirstAudio } = await import("./audio-preflight-DucGa8w7.js");
52120
52150
  preflightTranscript = await transcribeFirstAudio({
52121
52151
  ctx: {
52122
52152
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -54261,23 +54291,23 @@ let webLoginQrPromise = null;
54261
54291
  let webChannelPromise = null;
54262
54292
  let whatsappActionsPromise = null;
54263
54293
  function loadWebOutbound() {
54264
- webOutboundPromise ??= import("./outbound-BVhSNFy0.js").then((n) => n.t);
54294
+ webOutboundPromise ??= import("./outbound-DW3cqlQW.js").then((n) => n.t);
54265
54295
  return webOutboundPromise;
54266
54296
  }
54267
54297
  function loadWebLogin() {
54268
- webLoginPromise ??= import("./login-g_rQAcuM.js").then((n) => n.n);
54298
+ webLoginPromise ??= import("./login-K1YB_7-t.js").then((n) => n.n);
54269
54299
  return webLoginPromise;
54270
54300
  }
54271
54301
  function loadWebLoginQr() {
54272
- webLoginQrPromise ??= import("./login-qr-BOUmLSY3.js");
54302
+ webLoginQrPromise ??= import("./login-qr-lMl_OqDj.js");
54273
54303
  return webLoginQrPromise;
54274
54304
  }
54275
54305
  function loadWebChannel() {
54276
- webChannelPromise ??= import("./web-CmKqZEsX.js");
54306
+ webChannelPromise ??= import("./web-BQzPfsd0.js");
54277
54307
  return webChannelPromise;
54278
54308
  }
54279
54309
  function loadWhatsAppActions() {
54280
- whatsappActionsPromise ??= import("./whatsapp-actions-B_1l8JMU.js");
54310
+ whatsappActionsPromise ??= import("./whatsapp-actions-eTefsWhW.js");
54281
54311
  return whatsappActionsPromise;
54282
54312
  }
54283
54313
  function createPluginRuntime() {
@@ -57540,7 +57570,7 @@ async function resolveSandboxWorkdir(params) {
57540
57570
  };
57541
57571
  }
57542
57572
  }
57543
- function resolveWorkdir(workdir, warnings) {
57573
+ function resolveWorkdir$1(workdir, warnings) {
57544
57574
  const fallback = safeCwd() ?? homedir();
57545
57575
  try {
57546
57576
  if (statSync(workdir).isDirectory()) return workdir;
@@ -58682,7 +58712,7 @@ function createExecTool(defaults) {
58682
58712
  });
58683
58713
  workdir = resolved.hostWorkdir;
58684
58714
  containerWorkdir = resolved.containerWorkdir;
58685
- } else workdir = resolveWorkdir(rawWorkdir, warnings);
58715
+ } else workdir = resolveWorkdir$1(rawWorkdir, warnings);
58686
58716
  const baseEnv = coerceEnv(process.env);
58687
58717
  if (host !== "sandbox" && params.env) validateHostEnv(params.env);
58688
58718
  const mergedEnv = params.env ? {
@@ -59596,6 +59626,8 @@ const SUBAGENT_TOOL_DENY_ALWAYS = [
59596
59626
  "whatsapp_login",
59597
59627
  "session_status",
59598
59628
  "cron",
59629
+ "task_list",
59630
+ "task_cancel",
59599
59631
  "memory_search",
59600
59632
  "memory_get",
59601
59633
  "memory_pin",
@@ -68665,6 +68697,301 @@ function createSubagentsTool(opts) {
68665
68697
  };
68666
68698
  }
68667
68699
 
68700
+ //#endregion
68701
+ //#region src/infra/long-task-state.ts
68702
+ /**
68703
+ * Shared helpers for reading the on-disk state files written by
68704
+ * skills/long-task/scripts/detach-task.sh:
68705
+ *
68706
+ * task-<id>.pid — PID of the detached process
68707
+ * task-<id>.cmd — literal command line
68708
+ * task-<id>.started — ISO-8601 start timestamp
68709
+ * task-<id>.log — combined stdout + stderr
68710
+ * task-<id>.status — current state line
68711
+ * task-<id>.archived — tombstone written by the janitor when it sweeps
68712
+ * a finished task more than 7 days old
68713
+ *
68714
+ * Both the agent-facing tools (task_list / task_cancel) and the gateway's
68715
+ * tasks.list RPC consume this helper so the two views stay in sync.
68716
+ */
68717
+ const TASK_FILE_PREFIX = "task-";
68718
+ const TASK_ID_RE = /^[a-zA-Z0-9_][a-zA-Z0-9._-]{0,59}$/;
68719
+ const TASK_FILE_SUFFIXES = [
68720
+ ".pid",
68721
+ ".status",
68722
+ ".started",
68723
+ ".cmd",
68724
+ ".log",
68725
+ ".archived"
68726
+ ];
68727
+ function defaultIsPidAlive(pid) {
68728
+ try {
68729
+ process.kill(pid, 0);
68730
+ return true;
68731
+ } catch (err) {
68732
+ if (err.code === "EPERM") return true;
68733
+ return false;
68734
+ }
68735
+ }
68736
+ async function safeRead(filePath) {
68737
+ try {
68738
+ return (await fs.promises.readFile(filePath, "utf8")).trim();
68739
+ } catch {
68740
+ return null;
68741
+ }
68742
+ }
68743
+ async function readTaskInfo(workdir, id, isPidAlive = defaultIsPidAlive) {
68744
+ const pidPath = path.join(workdir, `${TASK_FILE_PREFIX}${id}.pid`);
68745
+ const statusPath = path.join(workdir, `${TASK_FILE_PREFIX}${id}.status`);
68746
+ const archivedPath = path.join(workdir, `${TASK_FILE_PREFIX}${id}.archived`);
68747
+ const logPath = path.join(workdir, `${TASK_FILE_PREFIX}${id}.log`);
68748
+ const [pidText, status, started, cmd, archived] = await Promise.all([
68749
+ safeRead(pidPath),
68750
+ safeRead(statusPath),
68751
+ safeRead(path.join(workdir, `${TASK_FILE_PREFIX}${id}.started`)),
68752
+ safeRead(path.join(workdir, `${TASK_FILE_PREFIX}${id}.cmd`)),
68753
+ safeRead(archivedPath)
68754
+ ]);
68755
+ let pid = null;
68756
+ if (pidText) {
68757
+ const parsed = Number.parseInt(pidText, 10);
68758
+ if (Number.isFinite(parsed) && parsed > 0) pid = parsed;
68759
+ }
68760
+ let resolvedStatus;
68761
+ if (status) resolvedStatus = status;
68762
+ else if (archived) resolvedStatus = archived;
68763
+ else resolvedStatus = "missing";
68764
+ return {
68765
+ id,
68766
+ pid,
68767
+ alive: pid !== null && isPidAlive(pid),
68768
+ archived: archived !== null,
68769
+ status: resolvedStatus,
68770
+ started,
68771
+ cmd,
68772
+ pidPath,
68773
+ statusPath,
68774
+ archivedPath,
68775
+ logPath
68776
+ };
68777
+ }
68778
+ async function listTasksInWorkdir(workdir, isPidAlive = defaultIsPidAlive) {
68779
+ let entries;
68780
+ try {
68781
+ entries = await fs.promises.readdir(workdir);
68782
+ } catch {
68783
+ return [];
68784
+ }
68785
+ const taskIds = /* @__PURE__ */ new Set();
68786
+ for (const entry of entries) {
68787
+ if (!entry.startsWith(TASK_FILE_PREFIX)) continue;
68788
+ for (const suffix of TASK_FILE_SUFFIXES) if (entry.endsWith(suffix)) {
68789
+ const id = entry.slice(5, -suffix.length);
68790
+ if (id.length > 0 && TASK_ID_RE.test(id)) taskIds.add(id);
68791
+ break;
68792
+ }
68793
+ }
68794
+ return await Promise.all([...taskIds].toSorted().map((id) => readTaskInfo(workdir, id, isPidAlive)));
68795
+ }
68796
+
68797
+ //#endregion
68798
+ //#region src/agents/tools/task-tool.ts
68799
+ /**
68800
+ * Long-task management tools (task_list, task_cancel).
68801
+ *
68802
+ * Companions to the detach-task pattern in skills/long-task. The detach
68803
+ * script writes task-<id>.{pid,cmd,started,log,status} state files into
68804
+ * the agent's workspace; these tools read and act on those files so the
68805
+ * agent can answer "what's running?" and kill a task without needing
68806
+ * shell access. Shared scanning logic lives in
68807
+ * src/infra/long-task-state.ts so the gateway's tasks.list RPC and these
68808
+ * agent tools agree on every shape detail.
68809
+ *
68810
+ * task-id allow-list mirrors detach-task.sh: 1–60 chars from
68811
+ * [a-zA-Z0-9._-], must not start with '.' or '-'. Diverging would let the
68812
+ * agent kill processes it never spawned via path traversal.
68813
+ */
68814
+ const ALLOWED_SIGNALS = new Set([
68815
+ "SIGTERM",
68816
+ "SIGINT",
68817
+ "SIGHUP",
68818
+ "SIGQUIT",
68819
+ "SIGKILL",
68820
+ "SIGUSR1",
68821
+ "SIGUSR2"
68822
+ ]);
68823
+ const TaskListSchema = Type.Object({ workdir: Type.Optional(Type.String()) });
68824
+ const TaskCancelSchema = Type.Object({
68825
+ taskId: Type.String(),
68826
+ workdir: Type.Optional(Type.String()),
68827
+ signal: Type.Optional(Type.String())
68828
+ });
68829
+ function normaliseSignal(input) {
68830
+ if (!input) return "SIGTERM";
68831
+ const upper = input.trim().toUpperCase();
68832
+ const candidate = upper.startsWith("SIG") ? upper : `SIG${upper}`;
68833
+ if (ALLOWED_SIGNALS.has(candidate)) return candidate;
68834
+ throw new Error(`Unsupported signal: ${input}. Allowed: TERM, INT, HUP, QUIT, KILL, USR1, USR2.`);
68835
+ }
68836
+ function isPidAlive(pid) {
68837
+ try {
68838
+ process.kill(pid, 0);
68839
+ return true;
68840
+ } catch (err) {
68841
+ if (err.code === "EPERM") return true;
68842
+ return false;
68843
+ }
68844
+ }
68845
+ function resolveWorkdir(deps, override) {
68846
+ const raw = override?.trim();
68847
+ if (!raw) return deps.workspaceDir;
68848
+ if (!path.isAbsolute(raw)) throw new Error(`workdir must be an absolute path (got: ${raw})`);
68849
+ return raw;
68850
+ }
68851
+ function createTaskListTool(deps) {
68852
+ return {
68853
+ label: "Task List",
68854
+ name: "task_list",
68855
+ description: `List long-running detached tasks in the agent's workspace.
68856
+
68857
+ Globs task-<id>.{pid,status,started,cmd,log,archived} files, reads their
68858
+ state, and checks each PID's liveness. Use this to find the task-id of a
68859
+ running detach-task before calling task_cancel, or to answer "what's
68860
+ running right now?" without re-asking the user.
68861
+
68862
+ Returns: { workdir, tasks: [{ id, pid, alive, status, archived, started, cmd, pidPath, statusPath, archivedPath, logPath }] }.
68863
+ - archived=true means the janitor swept this task's live state files (>7d
68864
+ dead) and replaced them with a tombstone. The canonical end status is
68865
+ preserved in the .archived file. Distinct from "missing" (no tombstone,
68866
+ no live files) which means the task crashed or its workdir was wiped.
68867
+ - Tasks whose .pid file is missing are still listed (alive=false, pid=null)
68868
+ so the agent can spot orphan state files.`,
68869
+ parameters: TaskListSchema,
68870
+ execute: async (_toolCallId, args) => {
68871
+ const override = readStringParam(args, "workdir");
68872
+ let workdir;
68873
+ try {
68874
+ workdir = resolveWorkdir(deps, override);
68875
+ } catch (err) {
68876
+ return jsonResult({
68877
+ workdir: override ?? deps.workspaceDir,
68878
+ tasks: [],
68879
+ error: err instanceof Error ? err.message : String(err)
68880
+ });
68881
+ }
68882
+ try {
68883
+ const tasks = await listTasksInWorkdir(workdir, isPidAlive);
68884
+ return jsonResult({
68885
+ workdir,
68886
+ tasks
68887
+ });
68888
+ } catch (err) {
68889
+ return jsonResult({
68890
+ workdir,
68891
+ tasks: [],
68892
+ error: err instanceof Error ? err.message : String(err)
68893
+ });
68894
+ }
68895
+ }
68896
+ };
68897
+ }
68898
+ function createTaskCancelTool(deps) {
68899
+ return {
68900
+ label: "Task Cancel",
68901
+ name: "task_cancel",
68902
+ description: `Send a signal (default SIGTERM) to a running detached task.
68903
+
68904
+ Reads task-<id>.pid in the workdir, validates the recorded PID is alive,
68905
+ and sends the signal via process.kill. The task's TERM/INT/HUP trap will
68906
+ write an "aborted" status before exiting, so a follow-up task_list call
68907
+ sees the canonical end state.
68908
+
68909
+ task-id must match the same allow-list as detach-task.sh: 1–60 chars from
68910
+ [a-zA-Z0-9._-], no leading '.' or '-'. signal accepts TERM (default), INT,
68911
+ HUP, QUIT, KILL, USR1, USR2 — with or without the "SIG" prefix.
68912
+
68913
+ Returns: { ok, taskId, pid, sentSignal, alreadyDead?, error? }.`,
68914
+ parameters: TaskCancelSchema,
68915
+ execute: async (_toolCallId, args) => {
68916
+ const params = args;
68917
+ const taskId = readStringParam(params, "taskId", { required: true });
68918
+ if (!TASK_ID_RE.test(taskId)) return jsonResult({
68919
+ ok: false,
68920
+ taskId,
68921
+ error: "taskId must be 1–60 chars from [a-zA-Z0-9._-] and must not start with '.' or '-'."
68922
+ });
68923
+ const override = readStringParam(params, "workdir");
68924
+ let workdir;
68925
+ try {
68926
+ workdir = resolveWorkdir(deps, override);
68927
+ } catch (err) {
68928
+ return jsonResult({
68929
+ ok: false,
68930
+ taskId,
68931
+ error: err instanceof Error ? err.message : String(err)
68932
+ });
68933
+ }
68934
+ const signalRaw = readStringParam(params, "signal");
68935
+ let signal;
68936
+ try {
68937
+ signal = normaliseSignal(signalRaw);
68938
+ } catch (err) {
68939
+ return jsonResult({
68940
+ ok: false,
68941
+ taskId,
68942
+ error: err instanceof Error ? err.message : String(err)
68943
+ });
68944
+ }
68945
+ const pidPath = path.join(workdir, `${TASK_FILE_PREFIX}${taskId}.pid`);
68946
+ let pidText;
68947
+ try {
68948
+ pidText = (await fs.promises.readFile(pidPath, "utf8")).trim();
68949
+ } catch (err) {
68950
+ if (err.code === "ENOENT") return jsonResult({
68951
+ ok: false,
68952
+ taskId,
68953
+ error: `no pid file at ${pidPath} — task is unknown or already cleaned up`
68954
+ });
68955
+ return jsonResult({
68956
+ ok: false,
68957
+ taskId,
68958
+ error: err instanceof Error ? err.message : String(err)
68959
+ });
68960
+ }
68961
+ const pid = Number.parseInt(pidText, 10);
68962
+ if (!Number.isFinite(pid) || pid <= 0) return jsonResult({
68963
+ ok: false,
68964
+ taskId,
68965
+ error: `pid file at ${pidPath} did not contain a positive integer`
68966
+ });
68967
+ if (!isPidAlive(pid)) return jsonResult({
68968
+ ok: false,
68969
+ taskId,
68970
+ pid,
68971
+ alreadyDead: true,
68972
+ error: "process is no longer running"
68973
+ });
68974
+ try {
68975
+ process.kill(pid, signal);
68976
+ } catch (err) {
68977
+ return jsonResult({
68978
+ ok: false,
68979
+ taskId,
68980
+ pid,
68981
+ sentSignal: signal,
68982
+ error: err instanceof Error ? err.message : String(err)
68983
+ });
68984
+ }
68985
+ return jsonResult({
68986
+ ok: true,
68987
+ taskId,
68988
+ pid,
68989
+ sentSignal: signal
68990
+ });
68991
+ }
68992
+ };
68993
+ }
68994
+
68668
68995
  //#endregion
68669
68996
  //#region src/agents/tools/tts-tool.ts
68670
68997
  const TtsToolSchema = Type.Object({
@@ -69965,6 +70292,8 @@ function createSymiTools(options) {
69965
70292
  config: options?.config
69966
70293
  }),
69967
70294
  createCronTool({ agentSessionKey: options?.agentSessionKey }),
70295
+ createTaskListTool({ workspaceDir }),
70296
+ createTaskCancelTool({ workspaceDir }),
69968
70297
  ...messageTool ? [messageTool] : [],
69969
70298
  createTtsTool({
69970
70299
  agentChannel: options?.agentChannel,
@@ -78756,7 +79085,7 @@ async function deliverSessionMaintenanceWarning(params) {
78756
79085
  return;
78757
79086
  }
78758
79087
  try {
78759
- const { deliverOutboundPayloads } = await import("./deliver-B8Y2t-RH.js").then((n) => n.n);
79088
+ const { deliverOutboundPayloads } = await import("./deliver-CKgFosI5.js").then((n) => n.n);
78760
79089
  await deliverOutboundPayloads({
78761
79090
  cfg: params.cfg,
78762
79091
  channel,