@symerian/symi 2.6.42 → 2.7.0

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 (283) hide show
  1. package/dist/{accounts-DDuIpcln.js → accounts-Cd816n6l.js} +7 -7
  2. package/dist/{accounts-bK-Yqdwx.js → accounts-CokRskCl.js} +1 -1
  3. package/dist/{accounts-DyJN4_vR.js → accounts-mN_EcgxC.js} +1 -1
  4. package/dist/{acp-cli-CrEIx-c7.js → acp-cli-COzlJi3B.js} +6 -6
  5. package/dist/{agent-scope-CgUHAtCo.js → agent-scope-BRwEc2pG.js} +18 -18
  6. package/dist/{agents-DDRDszOI.js → agents-Cu2bthAX.js} +4 -4
  7. package/dist/{agents.config-BKCY6F2A.js → agents.config-5PTwsijs.js} +1 -1
  8. package/dist/{agents.config-BEVb1Pyx.js → agents.config-Dib8Uo2P.js} +2 -2
  9. package/dist/{api-key-rotation-CzuPlV2t.js → api-key-rotation-CEr3lKih.js} +1 -1
  10. package/dist/{audio-preflight-CIiS5cfP.js → audio-preflight-mj-z_vQ6.js} +28 -28
  11. package/dist/{audit-DB9YkTVX.js → audit-Djfdh06o.js} +23 -23
  12. package/dist/{auth-choice-BbzReh6k.js → auth-choice-5gul6jy2.js} +1 -1
  13. package/dist/{auth-choice-D2xXwBeN.js → auth-choice-CmSUU3t8.js} +8 -8
  14. package/dist/{auth-token-Cay2jwzn.js → auth-token-83A2btbE.js} +1 -1
  15. package/dist/{banner-DqqRwplt.js → banner-B4vQpMIJ.js} +1 -1
  16. package/dist/{bindings-DFaVVCsf.js → bindings-ChzePa8q.js} +1 -1
  17. package/dist/{browser-cli-Ctn9do4z.js → browser-cli-BTD0NlrA.js} +9 -9
  18. package/dist/build-info.json +3 -3
  19. package/dist/bundled/boot-md/handler.js +1 -1
  20. package/dist/bundled/session-memory/handler.js +1 -1
  21. package/dist/{call-DwpGquzW.js → call-tmHtVCkn.js} +9 -9
  22. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  23. package/dist/{channel-options-DQcpDVCx.js → channel-options-DVf4CJIu.js} +1 -1
  24. package/dist/{channel-options-DcazVJQf.js → channel-options-DsWGc55A.js} +2 -2
  25. package/dist/{channel-selection-V2xDgw16.js → channel-selection-DaJDux-Q.js} +1 -1
  26. package/dist/{channel-web-u5yMYO4j.js → channel-web-vGC-WJXi.js} +17 -17
  27. package/dist/{channels-cli-Bog4Kn3X.js → channels-cli-COayA28A.js} +76 -76
  28. package/dist/{channels-cli-C3iJE8eg.js → channels-cli-CSv05N3q.js} +4 -4
  29. package/dist/{channels-status-issues-CJ0Vb_9z.js → channels-status-issues-B_PI3nEE.js} +1 -1
  30. package/dist/{chrome-DU2ZysN3.js → chrome-CSJzpT9Z.js} +2 -2
  31. package/dist/cli/daemon-cli.js +1 -1
  32. package/dist/{cli-eBtEEHLK.js → cli-B-g79xPe.js} +1 -1
  33. package/dist/{cli-QybdZdE7.js → cli-DJjOxip6.js} +63 -63
  34. package/dist/{client-jI1oE0_k.js → client-Bj_vTpri.js} +1 -1
  35. package/dist/{command-registry-BWnZSpbL.js → command-registry-BvpLfzl7.js} +9 -9
  36. package/dist/{commands-BNLCWX6e.js → commands-CtocZ4Lg.js} +1 -1
  37. package/dist/{commands-registry-BT0-zzs3.js → commands-registry-BZ0ZSQpM.js} +3 -3
  38. package/dist/{completion-cli-CUKm7Hb6.js → completion-cli-CfRZ-7QF.js} +2 -2
  39. package/dist/{completion-cli-BhJFXaVU.js → completion-cli-DtQcXg1N.js} +12 -12
  40. package/dist/{config-cli-CjnQyv45.js → config-cli-D9Z78raJ.js} +4 -4
  41. package/dist/{config-cli-B796xZBe.js → config-cli-DL2RdfLM.js} +1 -1
  42. package/dist/{config-guard-CEkSg4hl.js → config-guard-4oRmpR0a.js} +12 -12
  43. package/dist/{config-Dz95lSBW.js → config-tNauHpdq.js} +2 -2
  44. package/dist/{config-validation-HDVDlMSV.js → config-validation-BoDWiwe3.js} +1 -1
  45. package/dist/{configure-DUqT7Dyn.js → configure-Dq4f8WPa.js} +3 -3
  46. package/dist/{configure-D3wIQ0yI.js → configure-jDpF8lmx.js} +15 -15
  47. package/dist/{control-service-BYKXzY4f.js → control-service-BBnhN7aZ.js} +4 -4
  48. package/dist/control-ui/css/style.css +51 -0
  49. package/dist/control-ui/js/app.js +39 -0
  50. package/dist/control-ui/js/gateway.js +2 -0
  51. package/dist/control-ui/js/settings.js +71 -8
  52. package/dist/{control-ui-assets-B7moDVHX.js → control-ui-assets-6n-YayeS.js} +1 -1
  53. package/dist/{cron-cli-DCpsXkrw.js → cron-cli-D165ecaj.js} +10 -10
  54. package/dist/{daemon-cli-DSDcmWOi.js → daemon-cli-BccZzUb0.js} +11 -11
  55. package/dist/{daemon-runtime-mE1b-Q48.js → daemon-runtime-u01h46bE.js} +10 -10
  56. package/dist/{deliver-B4KZ6-oZ.js → deliver-BYdNAEqj.js} +7 -7
  57. package/dist/{devices-cli-x3jIP4Ih.js → devices-cli-D0N71nqX.js} +6 -6
  58. package/dist/{diagnostics-BRwihzJG.js → diagnostics-BrUo0gqs.js} +5 -5
  59. package/dist/{directory-cli-KgsAVTA0.js → directory-cli-aj7aXIBM.js} +7 -7
  60. package/dist/{dm-policy-shared-DlDAGtZL.js → dm-policy-shared-epgkayyq.js} +2 -2
  61. package/dist/{dns-cli-Cwr92Aiq.js → dns-cli-Dit09wbu.js} +3 -3
  62. package/dist/{dock-BhS32F6E.js → dock-BYiRZSgZ.js} +4 -4
  63. package/dist/{docs-cli-qE-blOLC.js → docs-cli-CyWGMA-e.js} +1 -1
  64. package/dist/{doctor-completion-D3oUNFQM.js → doctor-completion-Ccb83Wl5.js} +2 -2
  65. package/dist/{doctor-completion-DBE1IVKj.js → doctor-completion-oQemZItC.js} +1 -1
  66. package/dist/{doctor-config-flow-iIzSEQxb.js → doctor-config-flow-BXmHd2bb.js} +10 -10
  67. package/dist/entry.js +1 -1
  68. package/dist/{exec-approvals-cli-BSgxsdMt.js → exec-approvals-cli-CZ-iTtNO.js} +13 -13
  69. package/dist/extensionAPI.js +1 -1
  70. package/dist/{fs-safe-CUjO1ca2.js → fs-safe-CTDvb1DF.js} +6 -6
  71. package/dist/{gateway-cli-BguO9yV4.js → gateway-cli-C1zPKZ7B.js} +135 -120
  72. package/dist/{gateway-cli-Dc1RT_b9.js → gateway-cli-zbVm1MBQ.js} +30 -15
  73. package/dist/{gateway-rpc-5fREQe9Q.js → gateway-rpc-B1Wzoj99.js} +1 -1
  74. package/dist/{glass-ui-ws-D0UYleBF.js → glass-ui-ws-CvUFd4C6.js} +28 -9
  75. package/dist/{glass-ui-ws-DoIZyE9O.js → glass-ui-ws-D3tAmqKX.js} +104 -85
  76. package/dist/{health-cVvZdeDu.js → health-DQEqLYg1.js} +1 -1
  77. package/dist/{health-D3w4YMlC.js → health-o847FIt1.js} +13 -13
  78. package/dist/{hooks-cli-DZIbjfOA.js → hooks-cli-D_UW9fc8.js} +2 -2
  79. package/dist/{hooks-cli-te5hzOAB.js → hooks-cli-sYjbF4I6.js} +77 -77
  80. package/dist/{image-BWmcNF8N.js → image-lCS3o9xj.js} +3 -3
  81. package/dist/{image-ops-1OJMSAUX.js → image-ops-DYbDWaIA.js} +10 -10
  82. package/dist/index.js +73 -73
  83. package/dist/{inspect-CvbbCuoa.js → inspect-CNYyHVfH.js} +4 -4
  84. package/dist/{install-safe-path-D3Uz77u7.js → install-safe-path-D3mg1DMG.js} +11 -11
  85. package/dist/{installs-DQcRVF1U.js → installs-CYTVYWH_.js} +10 -10
  86. package/dist/{ir-DZam9q5M.js → ir-Dt4hOzxG.js} +6 -6
  87. package/dist/{lifecycle-core-C4HzGXA1.js → lifecycle-core-DxmxQdhS.js} +5 -5
  88. package/dist/llm-slug-generator.js +1 -1
  89. package/dist/{local-roots-aAFLQGkY.js → local-roots-BBeKX7PX.js} +2 -2
  90. package/dist/{login-DODfJ3Dn.js → login-CnjdNmGD.js} +3 -3
  91. package/dist/{login-qr-CBRxijIg.js → login-qr-DUf6CM0M.js} +5 -5
  92. package/dist/{logs-cli-CfGj-dOg.js → logs-cli-BVd6h2-Q.js} +7 -7
  93. package/dist/{manager-D4LJSRyZ.js → manager-C1CfGzZ2.js} +13 -13
  94. package/dist/{markdown-tables-CEbN0fEm.js → markdown-tables-ZwP14ydw.js} +1 -1
  95. package/dist/{memory-cli-DDumUksr.js → memory-cli-DhkRAIdT.js} +14 -14
  96. package/dist/{model-tWhwnFf8.js → model-CeeOcylL.js} +1 -1
  97. package/dist/{model-catalog-8Son0J4O.js → model-catalog-CvbwxWuC.js} +4 -4
  98. package/dist/{model-picker-CAm2Bftd.js → model-picker-C2MqloOs.js} +3 -3
  99. package/dist/{model-selection-CyFvYcRt.js → model-selection-X1oLh3CE.js} +9 -9
  100. package/dist/{models-BCfPhQ4m.js → models-Zol34e73.js} +2 -2
  101. package/dist/{models-cli-Cj2CwbPw.js → models-cli-BzcEA9oa.js} +3 -3
  102. package/dist/{models-cli-BFAtjNIF.js → models-cli-DnMUzr15.js} +72 -72
  103. package/dist/{models-config-CFFjJPe7.js → models-config-CEMioDUi.js} +7 -7
  104. package/dist/{node-cli-DnfDOh1d.js → node-cli-BVJid4L_.js} +28 -28
  105. package/dist/{node-service-CD47Qpf1.js → node-service-CXzMs782.js} +1 -1
  106. package/dist/{nodes-cli-Ci3oxw8k.js → nodes-cli-BN2Nslim.js} +10 -10
  107. package/dist/{nodes-screen-8Bq7DiSa.js → nodes-screen-Cd49cSPb.js} +4 -4
  108. package/dist/{npm-registry-spec-C0CPT3vr.js → npm-registry-spec-DchndI6P.js} +9 -9
  109. package/dist/{onboard-VcdBF5TB.js → onboard-CSseK0Co.js} +13 -13
  110. package/dist/{onboard-BMq8qc1m.js → onboard-CxOT_xD4.js} +2 -2
  111. package/dist/{onboard-channels-CiOun4k1.js → onboard-channels-CUlITipG.js} +5 -5
  112. package/dist/{onboard-channels-B5wgcffj.js → onboard-channels-D-lh_Vh1.js} +1 -1
  113. package/dist/{onboard-custom-XiomtQr7.js → onboard-custom-DTcLdtA9.js} +3 -3
  114. package/dist/{onboard-helpers-DFvWPFhU.js → onboard-helpers-CdPNw25E.js} +8 -8
  115. package/dist/{onboard-hooks-C3ok8kqB.js → onboard-hooks-C_2_jpWg.js} +1 -1
  116. package/dist/{onboard-remote-BURDxwoE.js → onboard-remote-v6QMnyJD.js} +1 -1
  117. package/dist/{onboard-skills-CbzgBT1W.js → onboard-skills-CQtkRP20.js} +4 -4
  118. package/dist/{onboarding-Dp7p6zKa.js → onboarding-DktESmTv.js} +3 -3
  119. package/dist/{onboarding-CGNpTyg2.js → onboarding-Dn5agNG_.js} +13 -13
  120. package/dist/{onboarding.finalize-CrsE5P43.js → onboarding.finalize-Bm-1Kdnh.js} +6 -6
  121. package/dist/{onboarding.finalize-B6DOu8vp.js → onboarding.finalize-CTIZ1zvV.js} +75 -75
  122. package/dist/{onboarding.gateway-config-DKwJ5bWd.js → onboarding.gateway-config-CwnQkyO0.js} +14 -14
  123. package/dist/{openai-model-default-WqcGxyFM.js → openai-model-default-4kBA1_78.js} +2 -2
  124. package/dist/{outbound-wnv03tb3.js → outbound-_Ir3M05f.js} +4 -4
  125. package/dist/{outbound-attachment-Bw-c5Cdp.js → outbound-attachment-Qfh5dlsg.js} +2 -2
  126. package/dist/{pairing-cli-DSM82gJG.js → pairing-cli-C8UXBJ_A.js} +8 -8
  127. package/dist/{pairing-labels-DyXoD1DS.js → pairing-labels-Dxb898X5.js} +1 -1
  128. package/dist/{pairing-store-CK726Dzq.js → pairing-store-B8ktu-6j.js} +2 -2
  129. package/dist/{pairing-token-CX3NN_qj.js → pairing-token-AV-MMfVE.js} +7 -7
  130. package/dist/{paths-BBm9fwuG.js → paths-CT6jsi4E.js} +1 -1
  131. package/dist/{pi-auth-json-zHckislA.js → pi-auth-json-FpfHyEcu.js} +5 -5
  132. package/dist/{pi-embedded-DQe8vBwU.js → pi-embedded-CYDMb5q0.js} +46 -7
  133. package/dist/{pi-embedded-helpers-BgdB5kvy.js → pi-embedded-helpers-Bs4eMaNo.js} +6 -6
  134. package/dist/{pi-tools.policy-DRWb_Cax.js → pi-tools.policy-BBxnqCay.js} +4 -4
  135. package/dist/{plugin-auto-enable-CP0nONRL.js → plugin-auto-enable-DwIrzVOA.js} +2 -2
  136. package/dist/{plugin-registry-BzIbwU3K.js → plugin-registry-CJGPW1-k.js} +1 -1
  137. package/dist/{plugin-registry-D3TUplW8.js → plugin-registry-d0oZLl6y.js} +3 -3
  138. package/dist/plugin-sdk/{channel-web-B6m8UOCl.js → channel-web-Dm-CzA1O.js} +1 -1
  139. package/dist/plugin-sdk/index.js +2 -2
  140. package/dist/plugin-sdk/{reply-CGoJQT_s.js → reply-4HEU7aDS.js} +46 -7
  141. package/dist/plugin-sdk/{web-CJjSOTnI.js → web-Cclb7FTq.js} +2 -2
  142. package/dist/{plugins-DKDeQZF0.js → plugins-BAyxWQSz.js} +2 -2
  143. package/dist/{plugins-cli-DFyRjAtJ.js → plugins-cli-BWgjIJQL.js} +72 -72
  144. package/dist/{plugins-cli-BD1Jb2Ml.js → plugins-cli-CL0tzkMo.js} +2 -2
  145. package/dist/{ports-BOmtxoTv.js → ports-OZQlocB7.js} +2 -2
  146. package/dist/{ports-DtW62rqS.js → ports-u9lWy2Jt.js} +1 -1
  147. package/dist/{program-qGm2M9PG.js → program-BHjH97Q_.js} +7 -7
  148. package/dist/{program-context-45vPEw2G.js → program-context-CXZHSZ4D.js} +39 -39
  149. package/dist/{prompt-select-styled-DRIS9jSv.js → prompt-select-styled-BUFEoSlM.js} +38 -38
  150. package/dist/{prompt-select-styled-DRraJGwA.js → prompt-select-styled-D8LXSUR7.js} +4 -4
  151. package/dist/{provider-auth-helpers-BNOWsjW5.js → provider-auth-helpers-BFHctF2f.js} +1 -1
  152. package/dist/{provider-auth-helpers-BREVjR7R.js → provider-auth-helpers-CeAbh3lv.js} +5 -5
  153. package/dist/{push-apns-CYC70eKy.js → push-apns-BylbQyP9.js} +1 -1
  154. package/dist/{push-apns-CObVeJLC.js → push-apns-DqFdzIkc.js} +4 -4
  155. package/dist/{pw-ai-DQohWnzT.js → pw-ai-CfrnAHwA.js} +7 -7
  156. package/dist/{qmd-manager-CCUK1xoc.js → qmd-manager-DUNbG4Qr.js} +18 -18
  157. package/dist/{qr-cli-CejYwqsj.js → qr-cli-BZYa2gvF.js} +3 -3
  158. package/dist/{register.agent-DzzY8jON.js → register.agent-DxAqRAt3.js} +6 -6
  159. package/dist/{register.agent-DRrHvYcz.js → register.agent-bzSGKS-l.js} +82 -82
  160. package/dist/register.configure-Boyfir72.js +148 -0
  161. package/dist/{register.configure-DlXkwkNR.js → register.configure-WS1nlSp8.js} +6 -6
  162. package/dist/{register.maintenance-CXLXouZV.js → register.maintenance-B1QcUr38.js} +85 -85
  163. package/dist/{register.maintenance-LEf8Q_5p.js → register.maintenance-D_qMTrgD.js} +8 -8
  164. package/dist/{register.message-C4ifV9vG.js → register.message-CJF8gLAN.js} +64 -64
  165. package/dist/{register.message-DsPa-xHV.js → register.message-zu3HGGff.js} +2 -2
  166. package/dist/{register.onboard-DLRPa_4B.js → register.onboard-9dwNqCe6.js} +4 -4
  167. package/dist/{register.onboard-CrY4PxLP.js → register.onboard-CswoaT7q.js} +75 -75
  168. package/dist/{register.setup-fBG_dJfi.js → register.setup-CvomtGGu.js} +78 -78
  169. package/dist/{register.setup-By37g1vN.js → register.setup-TcjUu6HC.js} +4 -4
  170. package/dist/{register.status-health-sessions-DG7KGnD0.js → register.status-health-sessions-CM1SX81r.js} +3 -3
  171. package/dist/{register.status-health-sessions-Ckw86-gn.js → register.status-health-sessions-CQMvbwr6.js} +76 -76
  172. package/dist/{register.subclis-C_xKLugM.js → register.subclis-CVQASXaL.js} +9 -9
  173. package/dist/{replies-BMqtgBhh.js → replies-Dy92jzrz.js} +1 -1
  174. package/dist/{reply-DyjXROKp.js → reply-CpNWtuU4.js} +183 -144
  175. package/dist/{reply-prefix-CE2YmmsD.js → reply-prefix-BLOOs1aW.js} +1 -1
  176. package/dist/{resolve-route-BMoTaVAH.js → resolve-route-BcnaXYvh.js} +2 -2
  177. package/dist/{routes-BAZTZNuQ.js → routes-CVwRcA9D.js} +8 -8
  178. package/dist/{rpc-Co5PQ3IJ.js → rpc-CZFfee1J.js} +1 -1
  179. package/dist/{run-main-Cg3ecTbO.js → run-main-Dq6tfDry.js} +14 -14
  180. package/dist/{runner-DRv0uCK_.js → runner-BAVs-p6Z.js} +20 -20
  181. package/dist/{sandbox-B6N8cV4d.js → sandbox-HZ_uilsn.js} +18 -18
  182. package/dist/{sandbox-cli-DwzaNjIJ.js → sandbox-cli-wZtiyo8g.js} +20 -20
  183. package/dist/{security-cli-D5BWzqEJ.js → security-cli-BESmRIrl.js} +36 -36
  184. package/dist/{send-CQVnyJyF.js → send-BVBCh27_.js} +13 -13
  185. package/dist/{send-DVm0du0_.js → send-CXFTeD_J.js} +4 -4
  186. package/dist/{send-B3RdXvjC.js → send-DT-5buW5.js} +6 -6
  187. package/dist/{send-9SapUCg7.js → send-DsSI8z3F.js} +6 -6
  188. package/dist/{send-Bm4ULEzh.js → send-JWV62VbW.js} +6 -6
  189. package/dist/{server-context-CCBZN8a0.js → server-context-VlF1_hYj.js} +5 -5
  190. package/dist/{server-methods-CWcLut3F.js → server-methods-B0pdetGJ.js} +130 -64
  191. package/dist/{server-methods-CW8eFTGD.js → server-methods-IBEaQXPX.js} +177 -111
  192. package/dist/{server-node-events-CDB0u8PP.js → server-node-events-BACmfyjo.js} +64 -64
  193. package/dist/{server-node-events-C2h9OPo7.js → server-node-events-CyDj7Txd.js} +2 -2
  194. package/dist/{service-osK70kTZ.js → service-D80PyJxB.js} +15 -15
  195. package/dist/{session-DsJGtM7g.js → session-6Qyc4cBQ.js} +2 -2
  196. package/dist/{session-dirs-Dgz7kkUM.js → session-dirs-DPzjjra2.js} +2 -2
  197. package/dist/{sessions-Cpgnq0pA.js → sessions-jTAGYjWl.js} +13 -13
  198. package/dist/{shared-DnmJ0ABB.js → shared-BV7WhIkY.js} +1 -1
  199. package/dist/{shared-73T9fyuK.js → shared-BfhtOZAz.js} +3 -3
  200. package/dist/{skill-commands-Cxw-jNxU.js → skill-commands-ZXbEITKi.js} +5 -5
  201. package/dist/{skill-scanner-hMtQbWPV.js → skill-scanner-w3DJvw1Q.js} +5 -5
  202. package/dist/{skills-6jdJQ5ZL.js → skills-DqQUtOph.js} +4 -4
  203. package/dist/{skills-cli-DXkx4vNV.js → skills-cli-D3lePXkf.js} +7 -7
  204. package/dist/{skills-install-CWVdJkLn.js → skills-install-HGYidhrv.js} +3 -3
  205. package/dist/{skills-status-C3ptXwnh.js → skills-status-Cjsh8we0.js} +1 -1
  206. package/dist/{sqlite-Dx3J_aSE.js → sqlite-BV5ILFtC.js} +12 -12
  207. package/dist/{status-DfPfMVNZ.js → status-BJtbD-cG.js} +2 -2
  208. package/dist/{status-CMx3GAax.js → status-DUeTrQSz.js} +1 -1
  209. package/dist/{status-B2Qt-5kL.js → status-DzHL-eVu.js} +3 -3
  210. package/dist/{status-ZPW5EACm.js → status-nzJEZmNT.js} +25 -25
  211. package/dist/{status.update-CG0ciGaf.js → status.update-TlYwuzTa.js} +3 -3
  212. package/dist/{store-r1DJSDq-.js → store-DvtcmOKj.js} +5 -5
  213. package/dist/{subagent-registry-DQHg3jUV.js → subagent-registry-CzS4CfnV.js} +46 -7
  214. package/dist/{symi-root-CrGJbkzf.js → symi-root-MF6_6SCS.js} +2 -2
  215. package/dist/{system-cli-DFZNGx0i.js → system-cli-C2yhGP4C.js} +7 -7
  216. package/dist/{systemd-DT6SbCim.js → systemd-CevHlgD4.js} +5 -5
  217. package/dist/{systemd-hints-xYZbFny_.js → systemd-hints-DmgRnw1L.js} +6 -6
  218. package/dist/{systemd-linger-DCskIKcx.js → systemd-linger-ScxQ1_H4.js} +1 -1
  219. package/dist/{tables-BEzT0Da4.js → tables-C38rzF6E.js} +1 -1
  220. package/dist/{target-errors-7AvoVa10.js → target-errors-CCz79CmV.js} +4 -4
  221. package/dist/{tool-images-DvUBlqjX.js → tool-images-B-pqX3nX.js} +1 -1
  222. package/dist/{tui-DjPsMdL6.js → tui-D2MOx3Kx.js} +7 -7
  223. package/dist/{tui-cli-pWD_NrUR.js → tui-cli-B2ii7u23.js} +28 -28
  224. package/dist/{unified-runner-DvOFqcrw.js → unified-runner-BtO3UQSd.js} +46 -7
  225. package/dist/{update-Ya0e-JnM.js → update-Don6XTH9.js} +3 -3
  226. package/dist/{update-check-7EzEjSzb.js → update-check-DCo5RtKp.js} +5 -5
  227. package/dist/{update-cli-DBasZeVl.js → update-cli-DRODEMSI.js} +8 -8
  228. package/dist/{update-cli-Df9rh_aN.js → update-cli-gKtjyXlD.js} +95 -95
  229. package/dist/{update-runner-BRKFzAwV.js → update-runner-AsKAxe31.js} +15 -15
  230. package/dist/{update-runner-DVa6cMqp.js → update-runner-JcdOHr71.js} +1 -1
  231. package/dist/{web-Dd05xbUr.js → web-BIzWZFiN.js} +1 -1
  232. package/dist/{web-Cw3bFAiP.js → web-DGo16lWn.js} +1 -1
  233. package/dist/{web-CGh5tw__.js → web-DKwOxo8E.js} +1 -1
  234. package/dist/web-sefqR11J.js +110 -0
  235. package/dist/{webhooks-cli-BRxe4uCg.js → webhooks-cli-DbnQ2BVE.js} +4 -4
  236. package/dist/{whatsapp-actions-ChO_shrk.js → whatsapp-actions-CqXxtCoj.js} +15 -15
  237. package/dist/{with-timeout-CtVdu_1U.js → with-timeout-Cm5EhxG_.js} +1 -1
  238. package/dist/{workspace-dirs-GpkFi6Kw.js → workspace-dirs-DKu48umx.js} +1 -1
  239. package/dist/{wsl-q8spwrME.js → wsl-xNOi_Ch8.js} +2 -2
  240. package/extensions/bluebubbles/package.json +1 -1
  241. package/extensions/copilot-proxy/package.json +1 -1
  242. package/extensions/diagnostics-otel/package.json +1 -1
  243. package/extensions/discord/package.json +1 -1
  244. package/extensions/feishu/package.json +1 -1
  245. package/extensions/google-antigravity-auth/package.json +1 -1
  246. package/extensions/google-gemini-cli-auth/package.json +1 -1
  247. package/extensions/googlechat/package.json +1 -1
  248. package/extensions/imessage/package.json +1 -1
  249. package/extensions/irc/package.json +1 -1
  250. package/extensions/learning-loop/package.json +1 -1
  251. package/extensions/line/package.json +1 -1
  252. package/extensions/llm-task/package.json +1 -1
  253. package/extensions/matrix/CHANGELOG.md +6 -0
  254. package/extensions/matrix/package.json +1 -1
  255. package/extensions/mattermost/package.json +1 -1
  256. package/extensions/memory-core/package.json +1 -1
  257. package/extensions/memory-lancedb/package.json +1 -1
  258. package/extensions/minimax-portal-auth/package.json +1 -1
  259. package/extensions/msteams/CHANGELOG.md +6 -0
  260. package/extensions/msteams/package.json +1 -1
  261. package/extensions/nextcloud-talk/package.json +1 -1
  262. package/extensions/nostr/CHANGELOG.md +6 -0
  263. package/extensions/nostr/package.json +1 -1
  264. package/extensions/open-prose/package.json +1 -1
  265. package/extensions/outlook/package.json +1 -1
  266. package/extensions/pipeline/package.json +1 -1
  267. package/extensions/signal/package.json +1 -1
  268. package/extensions/slack/package.json +1 -1
  269. package/extensions/telegram/package.json +1 -1
  270. package/extensions/tlon/package.json +1 -1
  271. package/extensions/twitch/CHANGELOG.md +6 -0
  272. package/extensions/twitch/package.json +1 -1
  273. package/extensions/voice-call/CHANGELOG.md +6 -0
  274. package/extensions/voice-call/package.json +1 -1
  275. package/extensions/whatsapp/package.json +1 -1
  276. package/extensions/zalo/CHANGELOG.md +6 -0
  277. package/extensions/zalo/package.json +1 -1
  278. package/extensions/zalouser/CHANGELOG.md +6 -0
  279. package/extensions/zalouser/package.json +1 -1
  280. package/package.json +1 -1
  281. package/skills/long-task/scripts/detach-task.sh +91 -14
  282. package/dist/register.configure-BxtTIFTa.js +0 -148
  283. package/dist/web-KiuDkd0x.js +0 -110
@@ -3,102 +3,102 @@ import { g as resolveStateDir, r as STATE_DIR, u as resolveGatewayPort, y as res
3
3
  import { B as theme, C as sleep$1, D as isPlainObject, E as truncateUtf16Safe, F as shouldLogVerbose, J as normalizeLogLevel, L as warn, M as logVerbose, O as danger, S as shortenHomePath, V as getChildLogger, X as resolvePreferredSymiTmpDir, d as isRecord$1, i as clampInt, l as escapeRegExp, m as normalizeE164, t as CONFIG_DIR, w as sliceUtf16Safe, x as shortenHomeInString, y as resolveUserPath } from "./utils-B-0b9bGM.js";
4
4
  import { a as normalizeElevatedLevel, c as normalizeUsageDisplay, d as supportsXHighThinking, l as normalizeVerboseLevel, n as formatXHighModelHint, o as normalizeReasoningLevel, s as normalizeThinkLevel, t as formatThinkingLevels, u as resolveResponseUsageMode } from "./thinking-EAliFiVK.js";
5
5
  import { C as resolveThreadParentSessionKey, S as parseAgentSessionKey, _ as getSubagentDepth, b as isCronSessionKey, c as normalizeMainKey, d as sanitizeAgentId, h as normalizeAccountId$2, l as resolveAgentIdFromSessionKey, m as DEFAULT_ACCOUNT_ID, o as classifySessionKeyShape, r as buildAgentMainSessionKey, s as normalizeAgentId, t as DEFAULT_AGENT_ID, u as resolveThreadSessionKeys, v as isAcpSessionKey, x as isSubagentSessionKey, y as isCronRunSessionKey } from "./session-key-DCt45XZa.js";
6
- import { t as resolveSymiPackageRoot } from "./symi-root-CrGJbkzf.js";
6
+ import { t as resolveSymiPackageRoot } from "./symi-root-MF6_6SCS.js";
7
7
  import { C as createInternalHookEvent, T as triggerInternalHook, _ as clearPluginCommands, b as listPluginCommands, c as normalizeAnyChannelId, f as requireActivePluginRegistry, g as normalizePluginHttpPath, h as createPluginRegistry, l as normalizeChannelId, n as CHAT_CHANNEL_ORDER, p as setActivePluginRegistry, r as DEFAULT_CHAT_CHANNEL, v as executePluginCommand, x as matchPluginCommand, y as getPluginCommandSpecs } from "./registry-Cja8eT7G.js";
8
8
  import { d as createNonExitingRuntime, f as defaultRuntime, t as createSubsystemLogger } from "./subsystem-D9vIQve0.js";
9
9
  import { a as logError, i as logDebug, n as runExec, o as logInfo, r as spawnWithFallback, s as logWarn, t as runCommandWithTimeout } from "./exec-CWkblSrI.js";
10
- import { C as ensureAgentWorkspace, E as loadWorkspaceBootstrapFiles, a as resolveAgentModelFallbacksOverride, c as resolveAgentWorkspaceDir, d as resolveSessionAgentId, f as resolveSessionAgentIds, g as DEFAULT_IDENTITY_FILENAME, h as DEFAULT_BOOTSTRAP_FILENAME, i as resolveAgentDir, l as resolveDefaultAgentId, m as DEFAULT_AGENT_WORKSPACE_DIR, n as listAgentIds, o as resolveAgentModelPrimary, r as resolveAgentConfig, s as resolveAgentSkillsFilter, u as resolveEffectiveModelFallbacks, w as filterBootstrapFilesForSession } from "./agent-scope-CgUHAtCo.js";
11
- import { At as ensureAuthProfileStore, Bt as normalizeSecretInput, Et as markAuthProfileGood, Ft as resolveSymiAgentDir, G as getCustomProviderApiKey, Gt as DEFAULT_MODEL, H as OLLAMA_NATIVE_BASE_URL, It as withFileLock, K as requireApiKey, Kt as DEFAULT_PROVIDER, Pt as resolveAuthStorePathForDisplay, Q as getShellPathFromLoginShell, Tt as listProfilesForProvider, U as createOllamaStreamFn, Vt as resolveAuthProfileDisplayLabel, W as getApiKeyForModel, Wt as DEFAULT_CONTEXT_TOKENS, X as resolveModelAuthMode, Y as resolveEnvApiKey, c as normalizeModelRef$2, et as resolveShellEnvFallbackTimeoutMs, ft as resolveAuthProfileOrder, g as resolveModelRefFromString, gt as markAuthProfileUsed, ht as markAuthProfileFailure, i as findNormalizedProviderValue, l as normalizeProviderId, m as resolveDefaultModelForAgent, mt as isProfileInCooldown, n as buildConfiguredAllowlistKeys, o as isCliProvider, p as resolveConfiguredModelRef, pt as getSoonestCooldownExpiry, q as resolveApiKeyForProvider, r as buildModelAliasIndex, s as modelKey, t as buildAllowedModelSet, u as parseModelRef, v as resolveSubagentSpawnModelSelection, vt as resolveApiKeyForProfile, wt as dedupeProfileIds, y as resolveThinkingDefault } from "./model-selection-CyFvYcRt.js";
10
+ import { C as ensureAgentWorkspace, E as loadWorkspaceBootstrapFiles, a as resolveAgentModelFallbacksOverride, c as resolveAgentWorkspaceDir, d as resolveSessionAgentId, f as resolveSessionAgentIds, g as DEFAULT_IDENTITY_FILENAME, h as DEFAULT_BOOTSTRAP_FILENAME, i as resolveAgentDir, l as resolveDefaultAgentId, m as DEFAULT_AGENT_WORKSPACE_DIR, n as listAgentIds, o as resolveAgentModelPrimary, r as resolveAgentConfig, s as resolveAgentSkillsFilter, u as resolveEffectiveModelFallbacks, w as filterBootstrapFilesForSession } from "./agent-scope-BRwEc2pG.js";
11
+ import { At as ensureAuthProfileStore, Bt as normalizeSecretInput, Et as markAuthProfileGood, Ft as resolveSymiAgentDir, G as getCustomProviderApiKey, Gt as DEFAULT_MODEL, H as OLLAMA_NATIVE_BASE_URL, It as withFileLock, K as requireApiKey, Kt as DEFAULT_PROVIDER, Pt as resolveAuthStorePathForDisplay, Q as getShellPathFromLoginShell, Tt as listProfilesForProvider, U as createOllamaStreamFn, Vt as resolveAuthProfileDisplayLabel, W as getApiKeyForModel, Wt as DEFAULT_CONTEXT_TOKENS, X as resolveModelAuthMode, Y as resolveEnvApiKey, c as normalizeModelRef$2, et as resolveShellEnvFallbackTimeoutMs, ft as resolveAuthProfileOrder, g as resolveModelRefFromString, gt as markAuthProfileUsed, ht as markAuthProfileFailure, i as findNormalizedProviderValue, l as normalizeProviderId, m as resolveDefaultModelForAgent, mt as isProfileInCooldown, n as buildConfiguredAllowlistKeys, o as isCliProvider, p as resolveConfiguredModelRef, pt as getSoonestCooldownExpiry, q as resolveApiKeyForProvider, r as buildModelAliasIndex, s as modelKey, t as buildAllowedModelSet, u as parseModelRef, v as resolveSubagentSpawnModelSelection, vt as resolveApiKeyForProfile, wt as dedupeProfileIds, y as resolveThinkingDefault } from "./model-selection-X1oLh3CE.js";
12
12
  import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-DAu1a6BX.js";
13
13
  import { t as formatCliCommand } from "./command-format-COaS-S7B.js";
14
14
  import { t as parseBooleanValue$1 } from "./boolean-BsqeuxE6.js";
15
15
  import { t as isTruthyEnvValue } from "./env-DPCHYPeH.js";
16
16
  import { a as isInternalMessageChannel, c as listDeliverableMessageChannels, d as resolveMessageChannel, h as GATEWAY_CLIENT_NAMES, i as isGatewayMessageChannel, l as normalizeMessageChannel, m as GATEWAY_CLIENT_MODES, n as isDeliverableMessageChannel, o as isMarkdownCapableMessageChannel, p as GATEWAY_CLIENT_IDS, t as INTERNAL_MESSAGE_CHANNEL, u as resolveGatewayMessageChannel } from "./message-channel-aT-I_DTX.js";
17
- import { $ as parseDiscordTarget, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as createDiscordRestClient, D as pinMessageDiscord, Dt as normalizeChannelSlug, E as listThreadsDiscord, Et as buildChannelKeyCandidates, 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 createDiscordClient, T as listPinsDiscord, Tt as applyChannelMatchMeta, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordSystemLocation, a as removeReactionDiscord, at as normalizeDiscordAllowList, b as sendWebhookMessageDiscord, bt as fetchChannelPermissionsDiscord, c as formatDiscordComponentEventText, ct as resolveDiscordChannelConfigWithFallback, d as parseDiscordModalCustomId, dt as resolveDiscordOwnerAllowFrom, et as resolveDiscordChannelId, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordShouldRequireMention, g as sendMessageDiscord, gt as formatDiscordUserTag, h as resolveDiscordModalEntry, ht as formatDiscordReactionEmoji, i as removeOwnReactionsDiscord, it as isDiscordGroupAllowedByPolicy, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as resolveDiscordGuildEntry, m as resolveDiscordComponentEntry, mt as shouldEmitDiscordReactionNotification, n as fetchReactionsDiscord, nt as listDiscordDirectoryPeersLive, o as sendDiscordComponentMessage, ot as normalizeDiscordSlug, p as readDiscordComponentSpec, pt as resolveGroupDmAllow, q as deleteChannelDiscord, r as reactMessageDiscord, rt as allowListMatches$1, s as createDiscordFormModal, st as resolveDiscordAllowListMatch, tt as listDiscordDirectoryGroupsLive, u as parseDiscordComponentCustomIdForCarbon, ut as resolveDiscordMemberAccessState, v as sendStickerDiscord, vt as resolveTimestampMs, w as fetchMessageDiscord, wt as chunkDiscordTextWithMode, x as createThreadDiscord, xt as hasAnyGuildPermissionDiscord, y as sendVoiceMessageDiscord, yt as fetchDiscord, z as listGuildChannelsDiscord } from "./send-CQVnyJyF.js";
18
- import { A as parseConfigPath, B as resolveAgentMaxConcurrent, C as parseDurationMs, D as setConfigOverride, E as resetConfigOverrides, H as VERSION, M as unsetConfigValueAtPath, O as unsetConfigOverride, T as getConfigOverrides, _ as isInboundPathAllowed, b as resolveIMessageRemoteAttachmentRoots, c as resolveConfigSnapshotHash, h as resolveTelegramCustomCommands, i as loadConfig, j as setConfigValueAtPath, k as getConfigValueAtPath, l as writeConfigFile, m as normalizeTelegramCommandName, o as readConfigFileSnapshot, p as TELEGRAM_COMMAND_NAME_PATTERN, u as validateConfigObjectWithPlugins, w as validateJsonSchemaValue, x as normalizeScpRemoteHost, y as resolveIMessageAttachmentRoots, z as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH } from "./config-Dz95lSBW.js";
17
+ import { $ as parseDiscordTarget, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as createDiscordRestClient, D as pinMessageDiscord, Dt as normalizeChannelSlug, E as listThreadsDiscord, Et as buildChannelKeyCandidates, 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 createDiscordClient, T as listPinsDiscord, Tt as applyChannelMatchMeta, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordSystemLocation, a as removeReactionDiscord, at as normalizeDiscordAllowList, b as sendWebhookMessageDiscord, bt as fetchChannelPermissionsDiscord, c as formatDiscordComponentEventText, ct as resolveDiscordChannelConfigWithFallback, d as parseDiscordModalCustomId, dt as resolveDiscordOwnerAllowFrom, et as resolveDiscordChannelId, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordShouldRequireMention, g as sendMessageDiscord, gt as formatDiscordUserTag, h as resolveDiscordModalEntry, ht as formatDiscordReactionEmoji, i as removeOwnReactionsDiscord, it as isDiscordGroupAllowedByPolicy, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as resolveDiscordGuildEntry, m as resolveDiscordComponentEntry, mt as shouldEmitDiscordReactionNotification, n as fetchReactionsDiscord, nt as listDiscordDirectoryPeersLive, o as sendDiscordComponentMessage, ot as normalizeDiscordSlug, p as readDiscordComponentSpec, pt as resolveGroupDmAllow, q as deleteChannelDiscord, r as reactMessageDiscord, rt as allowListMatches$1, s as createDiscordFormModal, st as resolveDiscordAllowListMatch, tt as listDiscordDirectoryGroupsLive, u as parseDiscordComponentCustomIdForCarbon, ut as resolveDiscordMemberAccessState, v as sendStickerDiscord, vt as resolveTimestampMs, w as fetchMessageDiscord, wt as chunkDiscordTextWithMode, x as createThreadDiscord, xt as hasAnyGuildPermissionDiscord, y as sendVoiceMessageDiscord, yt as fetchDiscord, z as listGuildChannelsDiscord } from "./send-BVBCh27_.js";
18
+ import { A as parseConfigPath, B as resolveAgentMaxConcurrent, C as parseDurationMs, D as setConfigOverride, E as resetConfigOverrides, H as VERSION, M as unsetConfigValueAtPath, O as unsetConfigOverride, T as getConfigOverrides, _ as isInboundPathAllowed, b as resolveIMessageRemoteAttachmentRoots, c as resolveConfigSnapshotHash, h as resolveTelegramCustomCommands, i as loadConfig, j as setConfigValueAtPath, k as getConfigValueAtPath, l as writeConfigFile, m as normalizeTelegramCommandName, o as readConfigFileSnapshot, p as TELEGRAM_COMMAND_NAME_PATTERN, u as validateConfigObjectWithPlugins, w as validateJsonSchemaValue, x as normalizeScpRemoteHost, y as resolveIMessageAttachmentRoots, z as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH } from "./config-tNauHpdq.js";
19
19
  import { a as safeStatSync, c as applyTestPluginDefaults, d as resolveEnableState, f as resolveMemorySlotDecision, h as isDangerousHostEnvVarName, i as isPathInside, n as loadPluginManifestRegistry, r as discoverSymiPlugins, u as normalizePluginsConfig } from "./manifest-registry-C4BxOMWX.js";
20
20
  import { a as isPathInsideWithRealpath } from "./legacy-names-Be3msDZo.js";
21
21
  import { t as normalizeChatType } from "./chat-type-DyovJwCt.js";
22
22
  import { n as resolveConversationLabel } from "./conversation-label-Bn5j3lUT.js";
23
23
  import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-CmmmT8IP.js";
24
- import { _ as applyTemplate, a as resolveMediaAttachmentLocalRoots, c as resolveAttachmentKind, d as registerUnhandledRejectionHandler, f as resolveConcurrency, g as CLI_OUTPUT_MAX_BUFFER, h as resolveMediaUnderstandingScope, i as resolveAutoImageModel, l as buildRandomTempFilePath, m as normalizeMediaUnderstandingChatType, n as createMediaAttachmentCache, o as runCapability, p as resolveTimeoutMs, r as normalizeMediaAttachments, t as buildProviderRegistry } from "./runner-DRv0uCK_.js";
25
- import { _ as stripThinkingTagsFromText, a as decodeDataUrl, b as minimaxUnderstandImage, 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 stripReasoningTagsFromText, y as extractTextFromChatContent } from "./image-BWmcNF8N.js";
26
- import { t as ensureSymiModelsJson } from "./models-config-CFFjJPe7.js";
24
+ import { _ as applyTemplate, a as resolveMediaAttachmentLocalRoots, c as resolveAttachmentKind, d as registerUnhandledRejectionHandler, f as resolveConcurrency, g as CLI_OUTPUT_MAX_BUFFER, h as resolveMediaUnderstandingScope, i as resolveAutoImageModel, l as buildRandomTempFilePath, m as normalizeMediaUnderstandingChatType, n as createMediaAttachmentCache, o as runCapability, p as resolveTimeoutMs, r as normalizeMediaAttachments, t as buildProviderRegistry } from "./runner-BAVs-p6Z.js";
25
+ import { _ as stripThinkingTagsFromText, a as decodeDataUrl, b as minimaxUnderstandImage, 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 stripReasoningTagsFromText, y as extractTextFromChatContent } from "./image-lCS3o9xj.js";
26
+ import { t as ensureSymiModelsJson } from "./models-config-CEMioDUi.js";
27
27
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-4uUnLc3n.js";
28
- import { A as isTransientHttpError, C as isContextOverflowError, D as isRateLimitAssistantError, E as isLikelyContextOverflowError, F as ensureSessionHeader, I as resolveBootstrapMaxChars, L as resolveBootstrapTotalMaxChars, M as parseImageSizeError, N as sanitizeUserFacingText, O as isRawApiErrorPayload, P as buildBootstrapContextFiles, R as sanitizeGoogleTurnOrdering, S as isCompactionFailureError, T as isFailoverErrorMessage, _ as formatRawAssistantErrorForUi, a as isMessagingToolDuplicateNormalized, b as isBillingAssistantError, c as extractToolCallsFromAssistant, d as isAntigravityClaude, f as isGoogleModelApi, g as formatBillingErrorMessage, h as formatAssistantErrorText, j as parseImageDimensionError, k as isTimeoutErrorMessage, l as extractToolResultId, m as classifyFailoverReason, n as validateGeminiTurns, o as normalizeTextForComparison, p as BILLING_ERROR_USER_MESSAGE, r as pickFallbackThinkingLevel, s as sanitizeSessionMessagesImages, t as validateAnthropicTurns, u as downgradeOpenAIReasoningBlocks, v as getApiErrorPayloadFingerprint, w as isFailoverAssistantError, x as isCloudCodeAssistFormatError, y as isAuthAssistantError } from "./pi-embedded-helpers-BgdB5kvy.js";
29
- import { C as stripPluginOnlyAllowlist, S as resolveToolProfilePolicy, T as matchesAnyGlobPattern, _ as collectExplicitAllowlist, a as ensureSandboxWorkspaceForSession, b as mergeAlsoAllowPolicy, c as resolveSandboxRuntimeStatus, d as getBridgeAuthForPort, f as resolveSandboxConfigForAgent, g as buildPluginToolGroups, h as applyOwnerOnlyToolPolicy, o as resolveSandboxContext, v as expandPolicyWithPluginGroups, w as compileGlobPatterns, x as normalizeToolName } from "./sandbox-B6N8cV4d.js";
30
- import { T as DEFAULT_AI_SNAPSHOT_MAX_CHARS } from "./chrome-DU2ZysN3.js";
31
- import { i as resolveBrowserConfig, m as resolveBrowserControlAuth } from "./server-context-CCBZN8a0.js";
32
- import { a as resolveSkillsPromptForRun, d as resolveSandboxInputPath, h as applySkillEnvOverridesFromSnapshot, i as loadWorkspaceSkillEntries, l as assertMediaNotDataUrl, m as applySkillEnvOverrides, p as resolveSandboxedMediaSource, r as buildWorkspaceSkillSnapshot, u as assertSandboxPath } from "./skills-6jdJQ5ZL.js";
28
+ import { A as isTransientHttpError, C as isContextOverflowError, D as isRateLimitAssistantError, E as isLikelyContextOverflowError, F as ensureSessionHeader, I as resolveBootstrapMaxChars, L as resolveBootstrapTotalMaxChars, M as parseImageSizeError, N as sanitizeUserFacingText, O as isRawApiErrorPayload, P as buildBootstrapContextFiles, R as sanitizeGoogleTurnOrdering, S as isCompactionFailureError, T as isFailoverErrorMessage, _ as formatRawAssistantErrorForUi, a as isMessagingToolDuplicateNormalized, b as isBillingAssistantError, c as extractToolCallsFromAssistant, d as isAntigravityClaude, f as isGoogleModelApi, g as formatBillingErrorMessage, h as formatAssistantErrorText, j as parseImageDimensionError, k as isTimeoutErrorMessage, l as extractToolResultId, m as classifyFailoverReason, n as validateGeminiTurns, o as normalizeTextForComparison, p as BILLING_ERROR_USER_MESSAGE, r as pickFallbackThinkingLevel, s as sanitizeSessionMessagesImages, t as validateAnthropicTurns, u as downgradeOpenAIReasoningBlocks, v as getApiErrorPayloadFingerprint, w as isFailoverAssistantError, x as isCloudCodeAssistFormatError, y as isAuthAssistantError } from "./pi-embedded-helpers-Bs4eMaNo.js";
29
+ import { C as stripPluginOnlyAllowlist, S as resolveToolProfilePolicy, T as matchesAnyGlobPattern, _ as collectExplicitAllowlist, a as ensureSandboxWorkspaceForSession, b as mergeAlsoAllowPolicy, c as resolveSandboxRuntimeStatus, d as getBridgeAuthForPort, f as resolveSandboxConfigForAgent, g as buildPluginToolGroups, h as applyOwnerOnlyToolPolicy, o as resolveSandboxContext, v as expandPolicyWithPluginGroups, w as compileGlobPatterns, x as normalizeToolName } from "./sandbox-HZ_uilsn.js";
30
+ import { T as DEFAULT_AI_SNAPSHOT_MAX_CHARS } from "./chrome-CSJzpT9Z.js";
31
+ import { i as resolveBrowserConfig, m as resolveBrowserControlAuth } from "./server-context-VlF1_hYj.js";
32
+ import { a as resolveSkillsPromptForRun, d as resolveSandboxInputPath, h as applySkillEnvOverridesFromSnapshot, i as loadWorkspaceSkillEntries, l as assertMediaNotDataUrl, m as applySkillEnvOverrides, p as resolveSandboxedMediaSource, r as buildWorkspaceSkillSnapshot, u as assertSandboxPath } from "./skills-DqQUtOph.js";
33
33
  import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-BF3TeRH2.js";
34
- import { i as resolveExistingPathsWithinRoot, r as DEFAULT_UPLOAD_DIR } from "./paths-BBm9fwuG.js";
34
+ import { i as resolveExistingPathsWithinRoot, r as DEFAULT_UPLOAD_DIR } from "./paths-CT6jsi4E.js";
35
35
  import { i as isBlockedHostnameOrIp, o as normalizeHostname, t as SsrFBlockedError } from "./ssrf-BCYMnxkM.js";
36
- 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-1OJMSAUX.js";
37
- import { n as getMediaDir, r as saveMediaBuffer } from "./store-r1DJSDq-.js";
38
- import { B as resolveAgentMainSessionKey, C as capArrayByJsonBytes, D as resolveSessionTranscriptCandidates, E as readSessionTitleFieldsFromTranscript, F as resolveSessionResetType, H as resolveMainSessionKey, I as resolveThreadFlag, J as acquireSessionWriteLock, K as buildGroupDisplayName, L as DEFAULT_RESET_TRIGGERS, M as evaluateSessionFreshness, N as resolveChannelResetConfig, P as resolveSessionResetPolicy, R as resolveFreshSessionTotalTokens, S as archiveSessionTranscripts, V as resolveExplicitAgentSessionKey, W as deriveSessionMetaPatch, X as resolveSessionLockMaxHoldFromTimeout, _ as mergeDeliveryContext, a as resolveAndPersistSessionFile, b as normalizeAccountId$3, c as recordSessionMetaFromInbound, d as updateSessionStore, f as updateSessionStoreEntry, g as deliveryContextKey, h as deliveryContextFromSession, j as resolveSessionKey, m as resolveCacheTtlMs$1, n as parseSessionThreadInfo, o as loadSessionStore, p as isCacheEnabled, q as resolveGroupSessionKey, r as appendAssistantMessageToSessionTranscript, s as readSessionUpdatedAt, t as extractDeliveryInfo, u as updateLastRoute, v as normalizeDeliveryContext, y as normalizeSessionDeliveryFields, z as canonicalizeMainSessionAlias } from "./sessions-Cpgnq0pA.js";
39
- import { a as resolveChannelGroupRequireMention, c as normalizeHyphenSlug, i as resolveChannelGroupPolicy, l as normalizeStringEntries, n as listChannelDocks, r as normalizeSignalMessagingTarget, s as normalizeAtHashSlug, t as getChannelDock, u as normalizeStringEntriesLower } from "./dock-BhS32F6E.js";
40
- import { _ as listEnabledDiscordAccounts, a as isWhatsAppGroupJid, c as listEnabledTelegramAccounts, d as resolveTelegramToken, f as resolveSlackAccount, g as createDiscordActionGate, h as resolveSlackBotToken, l as listTelegramAccountIds, m as resolveSlackAppToken, n as listChannelPlugins, o as normalizeWhatsAppTarget, r as normalizeChannelId$1, s as createTelegramActionGate, t as getChannelPlugin, u as resolveTelegramAccount, v as resolveDiscordAccount, y as normalizeDiscordToken } from "./plugins-DKDeQZF0.js";
41
- import { a as logWebSelfId, i as getWebAuthAgeMs, m as webAuthExists, n as resolveWhatsAppAccount, o as logoutWeb, u as readWebSelfId } from "./accounts-DDuIpcln.js";
42
- import { t as resolveIMessageAccount } from "./accounts-bK-Yqdwx.js";
43
- import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-DyJN4_vR.js";
44
- import { a as resolveSlackWebClientOptions, c as buildSlackBlocksFallbackText, i as createSlackWebClient, l as parseSlackTarget, o as parseSlackBlocksInput, s as validateSlackBlocksArray, t as sendMessageSlack, u as resolveSlackChannelId } from "./send-DVm0du0_.js";
36
+ 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-DYbDWaIA.js";
37
+ import { n as getMediaDir, r as saveMediaBuffer } from "./store-DvtcmOKj.js";
38
+ import { B as resolveAgentMainSessionKey, C as capArrayByJsonBytes, D as resolveSessionTranscriptCandidates, E as readSessionTitleFieldsFromTranscript, F as resolveSessionResetType, H as resolveMainSessionKey, I as resolveThreadFlag, J as acquireSessionWriteLock, K as buildGroupDisplayName, L as DEFAULT_RESET_TRIGGERS, M as evaluateSessionFreshness, N as resolveChannelResetConfig, P as resolveSessionResetPolicy, R as resolveFreshSessionTotalTokens, S as archiveSessionTranscripts, V as resolveExplicitAgentSessionKey, W as deriveSessionMetaPatch, X as resolveSessionLockMaxHoldFromTimeout, _ as mergeDeliveryContext, a as resolveAndPersistSessionFile, b as normalizeAccountId$3, c as recordSessionMetaFromInbound, d as updateSessionStore, f as updateSessionStoreEntry, g as deliveryContextKey, h as deliveryContextFromSession, j as resolveSessionKey, m as resolveCacheTtlMs$1, n as parseSessionThreadInfo, o as loadSessionStore, p as isCacheEnabled, q as resolveGroupSessionKey, r as appendAssistantMessageToSessionTranscript, s as readSessionUpdatedAt, t as extractDeliveryInfo, u as updateLastRoute, v as normalizeDeliveryContext, y as normalizeSessionDeliveryFields, z as canonicalizeMainSessionAlias } from "./sessions-jTAGYjWl.js";
39
+ import { a as resolveChannelGroupRequireMention, c as normalizeHyphenSlug, i as resolveChannelGroupPolicy, l as normalizeStringEntries, n as listChannelDocks, r as normalizeSignalMessagingTarget, s as normalizeAtHashSlug, t as getChannelDock, u as normalizeStringEntriesLower } from "./dock-BYiRZSgZ.js";
40
+ import { _ as listEnabledDiscordAccounts, a as isWhatsAppGroupJid, c as listEnabledTelegramAccounts, d as resolveTelegramToken, f as resolveSlackAccount, g as createDiscordActionGate, h as resolveSlackBotToken, l as listTelegramAccountIds, m as resolveSlackAppToken, n as listChannelPlugins, o as normalizeWhatsAppTarget, r as normalizeChannelId$1, s as createTelegramActionGate, t as getChannelPlugin, u as resolveTelegramAccount, v as resolveDiscordAccount, y as normalizeDiscordToken } from "./plugins-BAyxWQSz.js";
41
+ import { a as logWebSelfId, i as getWebAuthAgeMs, m as webAuthExists, n as resolveWhatsAppAccount, o as logoutWeb, u as readWebSelfId } from "./accounts-Cd816n6l.js";
42
+ import { t as resolveIMessageAccount } from "./accounts-CokRskCl.js";
43
+ import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-mN_EcgxC.js";
44
+ import { a as resolveSlackWebClientOptions, c as buildSlackBlocksFallbackText, i as createSlackWebClient, l as parseSlackTarget, o as parseSlackBlocksInput, s as validateSlackBlocksArray, t as sendMessageSlack, u as resolveSlackChannelId } from "./send-CXFTeD_J.js";
45
45
  import { c as resolveStorePath, i as resolveSessionTranscriptPath, n as resolveSessionFilePath, r as resolveSessionFilePathOptions, t as resolveDefaultSessionStorePath } from "./paths-CyhzMxFA.js";
46
46
  import { i as normalizeInputProvenance, n as applyInputProvenanceToUserMessage, r as hasInterSessionUserProvenance } from "./input-provenance-BzbXHcaD.js";
47
47
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-DdnTeoR1.js";
48
- import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-DvUBlqjX.js";
48
+ import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-B-pqX3nX.js";
49
49
  import { n as resolveToolDisplay } from "./tool-display-D8N3rsYt.js";
50
50
  import { n as fetchWithTimeout, t as bindAbortRelay } from "./fetch-timeout-Db3da8yR.js";
51
51
  import { t as fetchWithSsrFGuard } from "./fetch-guard-DOPkVbh3.js";
52
- import { a as readResponseWithLimit, i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, t as getAgentScopedMediaLocalRoots } from "./local-roots-aAFLQGkY.js";
53
- import { v as runTasksWithConcurrency } from "./sqlite-Dx3J_aSE.js";
54
- import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-8Son0J4O.js";
52
+ import { a as readResponseWithLimit, i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, t as getAgentScopedMediaLocalRoots } from "./local-roots-BBeKX7PX.js";
53
+ import { v as runTasksWithConcurrency } from "./sqlite-BV5ILFtC.js";
54
+ import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-CvbwxWuC.js";
55
55
  import { a as isSilentReplyText, i as isSilentReplyPrefixText, n as SILENT_REPLY_TOKEN, r as SYMIPULSE_TOKEN, t as HEARTBEAT_TOKEN } from "./tokens-BuceUQDl.js";
56
- import { n as createBrowserRouteDispatcher, r as getMachineDisplayName, t as withTimeout$4 } from "./with-timeout-CtVdu_1U.js";
57
- 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-B4KZ6-oZ.js";
56
+ import { n as createBrowserRouteDispatcher, r as getMachineDisplayName, t as withTimeout$4 } from "./with-timeout-Cm5EhxG_.js";
57
+ 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-BYdNAEqj.js";
58
58
  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-CH0skkp6.js";
59
59
  import { r as getDiagnosticSessionState } from "./diagnostic-session-state-CUslJyKP.js";
60
- import { A as hasBotMention, B as resolveSenderAllowMatch, C as buildTelegramGroupPeerId, D as describeReplyTarget, E as buildTypingThreadParams, F as resolveTelegramReplyId, G as toLocationContext, H as isSenderIdAllowed, I as resolveTelegramStreamMode, J as parseTelegramTarget, K as withTelegramApiErrorLogging, L as resolveTelegramThreadSpec, M as resolveTelegramForumThreadId, N as resolveTelegramGroupAllowFromContext, O as expandTextLinks, P as resolveTelegramMediaPlaceholder, R as isSenderAllowed$1, S as buildTelegramGroupFrom, T as buildTelegramThreadParams, U as mergeAllowFromSources, V as firstDefined$1, W as formatLocationText, Y as resolveTelegramTargetChatType, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildSenderLabel, c as sendStickerTelegram, d as wasSentByBot, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as normalizeForwardedContext, k as extractTelegramLocation, m as markdownToTelegramHtml, n as createForumTopicTelegram, o as sendMessageTelegram, p as markdownToTelegramChunks, q as isVoiceCompatibleAudio, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramParentPeer, x as buildSenderName, y as buildGroupLabel, z as normalizeAllowFromWithStore$1 } from "./send-B3RdXvjC.js";
61
- import { a as buildModelAliasLines, n as resolveModel } from "./model-tWhwnFf8.js";
62
- import { a as resolveAgentIdentity, i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-CE2YmmsD.js";
63
- import { i as resolveMemoryBackendConfig, n as registerMemoryCli, r as getMemorySearchManager } from "./memory-cli-DDumUksr.js";
64
- import { i as resolveMemorySearchConfig } from "./manager-D4LJSRyZ.js";
60
+ import { A as hasBotMention, B as resolveSenderAllowMatch, C as buildTelegramGroupPeerId, D as describeReplyTarget, E as buildTypingThreadParams, F as resolveTelegramReplyId, G as toLocationContext, H as isSenderIdAllowed, I as resolveTelegramStreamMode, J as parseTelegramTarget, K as withTelegramApiErrorLogging, L as resolveTelegramThreadSpec, M as resolveTelegramForumThreadId, N as resolveTelegramGroupAllowFromContext, O as expandTextLinks, P as resolveTelegramMediaPlaceholder, R as isSenderAllowed$1, S as buildTelegramGroupFrom, T as buildTelegramThreadParams, U as mergeAllowFromSources, V as firstDefined$1, W as formatLocationText, Y as resolveTelegramTargetChatType, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildSenderLabel, c as sendStickerTelegram, d as wasSentByBot, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as normalizeForwardedContext, k as extractTelegramLocation, m as markdownToTelegramHtml, n as createForumTopicTelegram, o as sendMessageTelegram, p as markdownToTelegramChunks, q as isVoiceCompatibleAudio, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramParentPeer, x as buildSenderName, y as buildGroupLabel, z as normalizeAllowFromWithStore$1 } from "./send-DT-5buW5.js";
61
+ import { a as buildModelAliasLines, n as resolveModel } from "./model-CeeOcylL.js";
62
+ import { a as resolveAgentIdentity, i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-BLOOs1aW.js";
63
+ import { i as resolveMemoryBackendConfig, n as registerMemoryCli, r as getMemorySearchManager } from "./memory-cli-DhkRAIdT.js";
64
+ import { i as resolveMemorySearchConfig } from "./manager-C1CfGzZ2.js";
65
65
  import { n as retryAsync } from "./retry-BoS4e4X_.js";
66
- import { c as imageResultFromFile, d as readNumberParam, f as readReactionParams, h as readStringParam, l as jsonResult, m as readStringOrNumberParam, n as missingTargetError, o as createActionGate, p as readStringArrayParam, r as unknownTargetError, s as imageResult, t as ambiguousTargetError, u as parseAvailableTags } from "./target-errors-7AvoVa10.js";
66
+ import { c as imageResultFromFile, d as readNumberParam, f as readReactionParams, h as readStringParam, l as jsonResult, m as readStringOrNumberParam, n as missingTargetError, o as createActionGate, p as readStringArrayParam, r as unknownTargetError, s as imageResult, t as ambiguousTargetError, u as parseAvailableTags } from "./target-errors-CCz79CmV.js";
67
67
  import { a as chunkText, c as resolveChunkMode, d as isSafeFenceBreak, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, o as chunkTextWithMode, r as chunkMarkdownText, t as chunkByNewline, u as findFenceSpanAt } from "./chunk-1dhPX1NK.js";
68
- import { n as resolveMarkdownTableMode } from "./markdown-tables-CEbN0fEm.js";
69
- import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-DZam9q5M.js";
70
- import { a as resolveNativeSkillsEnabled, i as resolveNativeCommandsEnabled, n as isNativeCommandsExplicitlyDisabled, r as isRestartEnabled, t as isCommandFlagEnabled } from "./commands-BNLCWX6e.js";
71
- import { a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, i as listChatCommands, l as parseCommandArgs, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices } from "./commands-registry-BT0-zzs3.js";
72
- import { Nt as SESSION_LABEL_MAX_LENGTH, t as GatewayClient } from "./client-jI1oE0_k.js";
73
- import { a as randomIdempotencyKey, d as resolveLeastPrivilegeOperatorScopesForMethod, n as callGateway, r as callGatewayLeastPrivilege, t as buildGatewayConnectionDetails } from "./call-DwpGquzW.js";
68
+ import { n as resolveMarkdownTableMode } from "./markdown-tables-ZwP14ydw.js";
69
+ import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-Dt4hOzxG.js";
70
+ import { a as resolveNativeSkillsEnabled, i as resolveNativeCommandsEnabled, n as isNativeCommandsExplicitlyDisabled, r as isRestartEnabled, t as isCommandFlagEnabled } from "./commands-CtocZ4Lg.js";
71
+ import { a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, i as listChatCommands, l as parseCommandArgs, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices } from "./commands-registry-BZ0ZSQpM.js";
72
+ import { Nt as SESSION_LABEL_MAX_LENGTH, t as GatewayClient } from "./client-Bj_vTpri.js";
73
+ import { a as randomIdempotencyKey, d as resolveLeastPrivilegeOperatorScopesForMethod, n as callGateway, r as callGatewayLeastPrivilege, t as buildGatewayConnectionDetails } from "./call-tmHtVCkn.js";
74
74
  import { n as formatTimeAgo } from "./format-relative-BXoxEQVN.js";
75
75
  import { n as normalizePollInput } from "./polls-DhH5YkzN.js";
76
76
  import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-BOiuJS3t.js";
77
77
  import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-DTNGXEzX.js";
78
- import { t as convertMarkdownTables } from "./tables-BEzT0Da4.js";
79
- import { c as signalRpcRequest, l as streamSignalEvents, n as sendReadReceiptSignal, o as resolveSignalRpcContext, r as sendTypingSignal, s as signalCheck, t as sendMessageSignal } from "./send-Bm4ULEzh.js";
80
- import { i as readChannelAllowFromStore, l as listPairingChannels, o as removeChannelAllowFromStoreEntry, s as upsertChannelPairingRequest, t as addChannelAllowFromStoreEntry } from "./pairing-store-CK726Dzq.js";
78
+ import { t as convertMarkdownTables } from "./tables-C38rzF6E.js";
79
+ import { c as signalRpcRequest, l as streamSignalEvents, n as sendReadReceiptSignal, o as resolveSignalRpcContext, r as sendTypingSignal, s as signalCheck, t as sendMessageSignal } from "./send-JWV62VbW.js";
80
+ import { i as readChannelAllowFromStore, l as listPairingChannels, o as removeChannelAllowFromStoreEntry, s as upsertChannelPairingRequest, t as addChannelAllowFromStoreEntry } from "./pairing-store-B8ktu-6j.js";
81
81
  import { t as makeProxyFetch } from "./proxy-DU7W9XSc.js";
82
82
  import { i as formatDurationSeconds, r as formatDurationPrecise, t as formatDurationCompact$1 } from "./format-duration-D0B0Uo-I.js";
83
- import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-BMoTaVAH.js";
84
- import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-BMqtgBhh.js";
85
- import { b as ensureSkillsWatcher, i as resolveSkillCommandInvocation, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, r as listSkillCommandsForWorkspace, t as listReservedChatSlashCommandNames, x as getSkillsSnapshotVersion } from "./skill-commands-Cxw-jNxU.js";
86
- import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-zHckislA.js";
83
+ import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-BcnaXYvh.js";
84
+ import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-Dy92jzrz.js";
85
+ import { b as ensureSkillsWatcher, i as resolveSkillCommandInvocation, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, r as listSkillCommandsForWorkspace, t as listReservedChatSlashCommandNames, x as getSkillsSnapshotVersion } from "./skill-commands-ZXbEITKi.js";
86
+ import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-FpfHyEcu.js";
87
87
  import { c as hasNonzeroUsage, l as normalizeUsage, n as loadCostUsageSummary, o as derivePromptTokens, r as loadSessionCostSummary, s as deriveSessionTotalTokens } from "./session-cost-usage-BXAI7CNH.js";
88
- import { a as normalizeIMessageHandle, c as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, i as isAllowedIMessageSender, o as parseIMessageTarget, r as formatIMessageChatTarget, s as createIMessageRpcClient, t as sendMessageIMessage } from "./send-9SapUCg7.js";
89
- import { r as detectBinary } from "./onboard-helpers-DFvWPFhU.js";
90
- import { t as resolvePairingIdLabel } from "./pairing-labels-DyXoD1DS.js";
88
+ import { a as normalizeIMessageHandle, c as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, i as isAllowedIMessageSender, o as parseIMessageTarget, r as formatIMessageChatTarget, s as createIMessageRpcClient, t as sendMessageIMessage } from "./send-DsSI8z3F.js";
89
+ import { r as detectBinary } from "./onboard-helpers-CdPNw25E.js";
90
+ import { t as resolvePairingIdLabel } from "./pairing-labels-Dxb898X5.js";
91
91
  import { i as resolveModelCostConfig, n as formatTokenCount$2, r as formatUsd, t as estimateUsageCost } from "./usage-format-BgUx3Bm4.js";
92
92
  import { t as getActiveWebListener } from "./active-listener-SKkHHqlN.js";
93
93
  import { _ as getTrustedSafeBinDirs, b as buildSafeShellCommand, d as resolveExecApprovals, f as resolveExecApprovalsFromFile, g as resolveSafeBins, h as evaluateShellAllowlist, i as maxAsk, l as recordAllowlistUse, n as addAllowlistEntry, o as minSecurity, u as requiresExecApproval, y as buildSafeBinsShellCommand } from "./exec-approvals-DXM2pQYL.js";
94
- import { a as canvasSnapshotTempPath, c as parseCameraClipPayload, d as writeCameraClipPayloadToFile, f as writeUrlToFile, g as normalizePathPrepend, h as mergePathPrepend, i as parseEnvPairs, l as parseCameraSnapPayload, m as applyPathPrepend, n as screenRecordTempPath, o as parseCanvasSnapshotPayload, p as buildNodeShellCommand, r as writeScreenRecordToFile, s as cameraTempPath, t as parseScreenRecordPayload, u as writeBase64ToFile } from "./nodes-screen-8Bq7DiSa.js";
94
+ import { a as canvasSnapshotTempPath, c as parseCameraClipPayload, d as writeCameraClipPayloadToFile, f as writeUrlToFile, g as normalizePathPrepend, h as mergePathPrepend, i as parseEnvPairs, l as parseCameraSnapPayload, m as applyPathPrepend, n as screenRecordTempPath, o as parseCanvasSnapshotPayload, p as buildNodeShellCommand, r as writeScreenRecordToFile, s as cameraTempPath, t as parseScreenRecordPayload, u as writeBase64ToFile } from "./nodes-screen-Cd49cSPb.js";
95
95
  import { n as parseNodeList, r as parsePairingList, t as resolveNodeIdFromCandidates } from "./node-match-CdUiymRU.js";
96
96
  import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-CaTOIqVn.js";
97
- import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-DRWb_Cax.js";
98
- import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-BYKXzY4f.js";
97
+ import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-BBxnqCay.js";
98
+ import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-BBnhN7aZ.js";
99
99
  import { i as parseAbsoluteTimeMs, r as resolveDefaultCronStaggerMs, t as normalizeCronStaggerMs } from "./stagger-CvFURHzt.js";
100
100
  import { c as resolveGatewayLaunchAgentLabel, d as resolveGatewaySystemdServiceName } from "./constants-CafH8-8D.js";
101
- import { n as resolveMessageChannelSelection, t as listConfiguredMessageChannels } from "./channel-selection-V2xDgw16.js";
101
+ import { n as resolveMessageChannelSelection, t as listConfiguredMessageChannels } from "./channel-selection-DaJDux-Q.js";
102
102
  import { t as parseTimeoutMs } from "./parse-timeout-2S5vp0-9.js";
103
103
  import { createRequire } from "node:module";
104
104
  import { fileURLToPath } from "node:url";
@@ -106,7 +106,7 @@ import fs, { existsSync, mkdirSync, mkdtempSync, readFileSync, renameSync, rmSyn
106
106
  import os, { homedir } from "node:os";
107
107
  import path from "node:path";
108
108
  import JSON5 from "json5";
109
- import fs$1 from "node:fs/promises";
109
+ import fsPromises from "node:fs/promises";
110
110
  import { execFileSync, spawn, spawnSync } from "node:child_process";
111
111
  import { inspect } from "node:util";
112
112
  import crypto, { createHash, createHmac, randomBytes, randomUUID } from "node:crypto";
@@ -2894,7 +2894,7 @@ async function createModelSelectionState(params) {
2894
2894
  }
2895
2895
  }
2896
2896
  if (sessionEntry && sessionStore && sessionKey && sessionEntry.authProfileOverride) {
2897
- const { ensureAuthProfileStore } = await import("./model-selection-CyFvYcRt.js").then((n) => n.dt);
2897
+ const { ensureAuthProfileStore } = await import("./model-selection-X1oLh3CE.js").then((n) => n.dt);
2898
2898
  const profile = ensureAuthProfileStore(void 0, { allowKeychainPrompt: false }).profiles[sessionEntry.authProfileOverride];
2899
2899
  const providerKey = normalizeProviderId(provider);
2900
2900
  if (!profile || normalizeProviderId(profile.provider) !== providerKey) await clearSessionAuthProfileOverride({
@@ -10416,7 +10416,7 @@ async function routeReply(params) {
10416
10416
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
10417
10417
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
10418
10418
  try {
10419
- const { deliverOutboundPayloads } = await import("./deliver-B4KZ6-oZ.js").then((n) => n.n);
10419
+ const { deliverOutboundPayloads } = await import("./deliver-BYdNAEqj.js").then((n) => n.n);
10420
10420
  return {
10421
10421
  ok: true,
10422
10422
  messageId: (await deliverOutboundPayloads({
@@ -12965,8 +12965,8 @@ async function describeStickerImage(params) {
12965
12965
  const { provider, model } = resolved;
12966
12966
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
12967
12967
  try {
12968
- const buffer = await fs$1.readFile(imagePath);
12969
- const { describeImageWithModel } = await import("./image-BWmcNF8N.js").then((n) => n.n);
12968
+ const buffer = await fsPromises.readFile(imagePath);
12969
+ const { describeImageWithModel } = await import("./image-lCS3o9xj.js").then((n) => n.n);
12970
12970
  return (await describeImageWithModel({
12971
12971
  buffer,
12972
12972
  fileName: "sticker.webp",
@@ -13389,7 +13389,7 @@ function createWhatsAppLoginTool() {
13389
13389
  force: Type.Optional(Type.Boolean())
13390
13390
  }),
13391
13391
  execute: async (_toolCallId, args) => {
13392
- const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-CBRxijIg.js");
13392
+ const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-DUf6CM0M.js");
13393
13393
  if ((args?.action ?? "start") === "wait") {
13394
13394
  const result = await waitForWebLogin({ timeoutMs: typeof args.timeoutMs === "number" ? args.timeoutMs : void 0 });
13395
13395
  return {
@@ -15605,7 +15605,7 @@ async function preflightDiscordMessage(params) {
15605
15605
  let preflightTranscript;
15606
15606
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
15607
15607
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
15608
- const { transcribeFirstAudio } = await import("./audio-preflight-CIiS5cfP.js");
15608
+ const { transcribeFirstAudio } = await import("./audio-preflight-mj-z_vQ6.js");
15609
15609
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
15610
15610
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
15611
15611
  ctx: {
@@ -21611,18 +21611,18 @@ function appendImagePathsToPrompt(prompt, paths) {
21611
21611
  return `${trimmed}${trimmed ? "\n\n" : ""}${paths.join("\n")}`;
21612
21612
  }
21613
21613
  async function writeCliImages(images) {
21614
- const tempDir = await fs$1.mkdtemp(path.join(os.tmpdir(), "symi-cli-images-"));
21614
+ const tempDir = await fsPromises.mkdtemp(path.join(os.tmpdir(), "symi-cli-images-"));
21615
21615
  const paths = [];
21616
21616
  for (let i = 0; i < images.length; i += 1) {
21617
21617
  const image = images[i];
21618
21618
  const ext = resolveImageExtension(image.mimeType);
21619
21619
  const filePath = path.join(tempDir, `image-${i + 1}.${ext}`);
21620
21620
  const buffer = Buffer.from(image.data, "base64");
21621
- await fs$1.writeFile(filePath, buffer, { mode: 384 });
21621
+ await fsPromises.writeFile(filePath, buffer, { mode: 384 });
21622
21622
  paths.push(filePath);
21623
21623
  }
21624
21624
  const cleanup = async () => {
21625
- await fs$1.rm(tempDir, {
21625
+ await fsPromises.rm(tempDir, {
21626
21626
  recursive: true,
21627
21627
  force: true
21628
21628
  });
@@ -22745,12 +22745,12 @@ function getQueuedFileWriter(writers, filePath) {
22745
22745
  const existing = writers.get(filePath);
22746
22746
  if (existing) return existing;
22747
22747
  const dir = path.dirname(filePath);
22748
- const ready = fs$1.mkdir(dir, { recursive: true }).catch(() => void 0);
22748
+ const ready = fsPromises.mkdir(dir, { recursive: true }).catch(() => void 0);
22749
22749
  let queue = Promise.resolve();
22750
22750
  const writer = {
22751
22751
  filePath,
22752
22752
  write: (line) => {
22753
- queue = queue.then(() => ready).then(() => fs$1.appendFile(filePath, line, "utf8")).catch(() => void 0);
22753
+ queue = queue.then(() => ready).then(() => fsPromises.appendFile(filePath, line, "utf8")).catch(() => void 0);
22754
22754
  }
22755
22755
  };
22756
22756
  writers.set(filePath, writer);
@@ -26166,7 +26166,7 @@ function repairToolUseResultPairing(messages) {
26166
26166
  */
26167
26167
  async function readSessionFile(sessionFile) {
26168
26168
  try {
26169
- return await fs$1.readFile(sessionFile, "utf-8");
26169
+ return await fsPromises.readFile(sessionFile, "utf-8");
26170
26170
  } catch {
26171
26171
  return null;
26172
26172
  }
@@ -26175,8 +26175,8 @@ async function writeAtomically(sessionFile, text) {
26175
26175
  const dir = path.dirname(sessionFile);
26176
26176
  const base = path.basename(sessionFile);
26177
26177
  const tmp = path.join(dir, `.${base}.prune-${process.pid}-${Date.now()}.tmp`);
26178
- await fs$1.writeFile(tmp, text, "utf-8");
26179
- await fs$1.rename(tmp, sessionFile);
26178
+ await fsPromises.writeFile(tmp, text, "utf-8");
26179
+ await fsPromises.rename(tmp, sessionFile);
26180
26180
  }
26181
26181
  /**
26182
26182
  * Remove empty assistant JSONL entries from the session file.
@@ -26244,7 +26244,7 @@ async function repairSessionFileIfNeeded(params) {
26244
26244
  };
26245
26245
  let content;
26246
26246
  try {
26247
- content = await fs$1.readFile(sessionFile, "utf-8");
26247
+ content = await fsPromises.readFile(sessionFile, "utf-8");
26248
26248
  } catch (err) {
26249
26249
  if (err?.code === "ENOENT") return {
26250
26250
  repaired: false,
@@ -26292,15 +26292,15 @@ async function repairSessionFileIfNeeded(params) {
26292
26292
  const backupPath = `${sessionFile}.bak-${process.pid}-${Date.now()}`;
26293
26293
  const tmpPath = `${sessionFile}.repair-${process.pid}-${Date.now()}.tmp`;
26294
26294
  try {
26295
- const stat = await fs$1.stat(sessionFile).catch(() => null);
26296
- await fs$1.writeFile(backupPath, content, "utf-8");
26297
- if (stat) await fs$1.chmod(backupPath, stat.mode);
26298
- await fs$1.writeFile(tmpPath, cleaned, "utf-8");
26299
- if (stat) await fs$1.chmod(tmpPath, stat.mode);
26300
- await fs$1.rename(tmpPath, sessionFile);
26295
+ const stat = await fsPromises.stat(sessionFile).catch(() => null);
26296
+ await fsPromises.writeFile(backupPath, content, "utf-8");
26297
+ if (stat) await fsPromises.chmod(backupPath, stat.mode);
26298
+ await fsPromises.writeFile(tmpPath, cleaned, "utf-8");
26299
+ if (stat) await fsPromises.chmod(tmpPath, stat.mode);
26300
+ await fsPromises.rename(tmpPath, sessionFile);
26301
26301
  } catch (err) {
26302
26302
  try {
26303
- await fs$1.unlink(tmpPath);
26303
+ await fsPromises.unlink(tmpPath);
26304
26304
  } catch (cleanupErr) {
26305
26305
  params.warn?.(`session file repair cleanup failed: ${cleanupErr instanceof Error ? cleanupErr.message : "unknown error"} (${path.basename(tmpPath)})`);
26306
26306
  }
@@ -26711,7 +26711,7 @@ function isInPoisonRange(version) {
26711
26711
  */
26712
26712
  async function checkSessionPoison(sessionFile) {
26713
26713
  try {
26714
- const firstLine = (await fs$1.readFile(sessionFile, "utf-8")).split("\n")[0];
26714
+ const firstLine = (await fsPromises.readFile(sessionFile, "utf-8")).split("\n")[0];
26715
26715
  if (!firstLine) return null;
26716
26716
  const header = JSON.parse(firstLine);
26717
26717
  if (header.type !== "session") return null;
@@ -26729,7 +26729,7 @@ async function checkSessionPoison(sessionFile) {
26729
26729
  */
26730
26730
  async function archivePoisonedSession(sessionFile) {
26731
26731
  const archiveName = `${sessionFile}.archived-poison.${(/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-")}`;
26732
- await fs$1.rename(sessionFile, archiveName);
26732
+ await fsPromises.rename(sessionFile, archiveName);
26733
26733
  return archiveName;
26734
26734
  }
26735
26735
  /**
@@ -26738,14 +26738,14 @@ async function archivePoisonedSession(sessionFile) {
26738
26738
  */
26739
26739
  async function stampSessionVersion(sessionFile) {
26740
26740
  try {
26741
- const lines = (await fs$1.readFile(sessionFile, "utf-8")).split("\n");
26741
+ const lines = (await fsPromises.readFile(sessionFile, "utf-8")).split("\n");
26742
26742
  if (lines.length === 0) return;
26743
26743
  const header = JSON.parse(lines[0]);
26744
26744
  if (header.type !== "session") return;
26745
26745
  if (header.symiVersion === VERSION) return;
26746
26746
  header.symiVersion = VERSION;
26747
26747
  lines[0] = JSON.stringify(header);
26748
- await fs$1.writeFile(sessionFile, lines.join("\n"), "utf-8");
26748
+ await fsPromises.writeFile(sessionFile, lines.join("\n"), "utf-8");
26749
26749
  } catch {}
26750
26750
  }
26751
26751
  /**
@@ -28834,6 +28834,21 @@ const getDmHistoryLimitFromSessionKey = getHistoryLimitFromSessionKey;
28834
28834
  //#region src/agents/pi-embedded-runner/long-task-prompt.ts
28835
28835
  const SCRIPT_REL_PATH = "skills/long-task/scripts/detach-task.sh";
28836
28836
  let cachedScriptPath;
28837
+ function isExecutable(candidatePath) {
28838
+ try {
28839
+ fs.accessSync(candidatePath, fs.constants.X_OK);
28840
+ return true;
28841
+ } catch {
28842
+ return false;
28843
+ }
28844
+ }
28845
+ /**
28846
+ * Ensure the script is present AND has the exec bit. npm usually preserves
28847
+ * mode 100755 on pack/install, but a subset of filesystems (FAT32, some
28848
+ * container mounts) silently drop it. If the bit is missing, we try to set
28849
+ * it; on failure we return null rather than emit a prompt that would break
28850
+ * when the model tries to exec the script.
28851
+ */
28837
28852
  async function resolveDetachScriptPath(params) {
28838
28853
  if (cachedScriptPath !== void 0) return cachedScriptPath;
28839
28854
  const packageRoot = await resolveSymiPackageRoot({
@@ -28846,7 +28861,17 @@ async function resolveDetachScriptPath(params) {
28846
28861
  return null;
28847
28862
  }
28848
28863
  const candidate = path.join(packageRoot, SCRIPT_REL_PATH);
28849
- cachedScriptPath = fs.existsSync(candidate) ? candidate : null;
28864
+ if (!fs.existsSync(candidate)) {
28865
+ cachedScriptPath = null;
28866
+ return null;
28867
+ }
28868
+ if (!isExecutable(candidate)) try {
28869
+ fs.chmodSync(candidate, 493);
28870
+ } catch {
28871
+ cachedScriptPath = null;
28872
+ return null;
28873
+ }
28874
+ cachedScriptPath = candidate;
28850
28875
  return cachedScriptPath;
28851
28876
  }
28852
28877
  async function buildLongTaskPromptSuffix(params) {
@@ -28854,11 +28879,25 @@ async function buildLongTaskPromptSuffix(params) {
28854
28879
  if (!scriptPath) return "";
28855
28880
  return "\n\n" + [
28856
28881
  "LONG-RUNNING TASK PATTERN:",
28857
- "- For any task that may exceed 15 minutes (deep nmap scans of /24 or larger, full brute-force sweeps, long builds, exhaustive enumeration): detach from the agent turn. Do NOT foreground-block the exec tool for the full duration; the agent turn will hit its timeout and SIGTERM the process mid-run.",
28858
- `- Detach pattern: exec \`${scriptPath} <task-id> <workdir> <command...>\`. The script spawns under setsid+nohup, writes PID / cmd / started / status / log files in the workdir. Use the agent workspace as the workdir.`,
28882
+ "- Applies ONLY when a command is expected to take longer than about 15 minutes (deep nmap scans of /24 or larger, full brute-force sweeps, long builds, exhaustive enumeration). For anything shorter, use the normal exec tool detaching short tasks creates pointless cron noise.",
28883
+ "- Foreground-blocking the exec tool for the full duration will fail: the agent turn will hit its timeout and the process will be SIGTERMed mid-run. Detach instead.",
28884
+ `- Detach pattern: exec \`${scriptPath} <task-id> <workdir> <command...>\`.`,
28885
+ " • task-id: alphanumeric + dot/dash/underscore, 1–60 chars, must not start with '.' or '-'.",
28886
+ " • workdir: absolute path you own (e.g. the agent workspace).",
28887
+ " • Script spawns under setsid+nohup+disown, writes task-<id>.{pid,cmd,started,log,status} files.",
28859
28888
  "- Immediately after detaching, respond to the user with: task id, PID, log file path, your ETA estimate, and that a cron monitor has been scheduled.",
28860
- "- Register a cron monitor using the `cron` tool with action=add. Schedule every 2-3 minutes. Job prompt must include the task-id, PID, log path, and status path so the future turn has enough context. Example job prompt: \"Check if PID <pid> is alive (kill -0). If alive: tail -n 20 <log>, post one-sentence progress update. If not alive: read <status> and tail <log>, post a final summary, then call cron tool with action=remove id=<this-cron-id>.\"",
28861
- "- When the monitor turn observes status=complete, it MUST call the cron tool with action=remove to clean up its own job. Do not leave stale monitors running."
28889
+ "- Register a cron monitor using the `cron` tool with action=add. Required fields:",
28890
+ " schedule: { kind: \"interval\", ms: 180000 } (every 3 minutes; minimum 60000)",
28891
+ " • payload: { kind: \"agent\", sessionTarget: \"isolated\", text: <job prompt> }",
28892
+ " The job prompt must literally contain the task-id, PID, log path, and status path so the future turn has enough context without re-deriving them.",
28893
+ "- Safe status read (inside the monitor turn):",
28894
+ " `status=$(cat \"<workdir>/task-<id>.status\" 2>/dev/null || echo missing)`",
28895
+ " 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.",
28896
+ "- Monitor responsibilities each tick:",
28897
+ " • If status begins with `running`: tail -n 20 <log>, post a one-sentence progress line.",
28898
+ " • If status begins with `complete`: post a final summary with rc and tail, then call cron action=remove on this job id.",
28899
+ " • If status begins with `aborted`: post a failure summary with signal and tail, then call cron action=remove.",
28900
+ " • Never leave stale monitors running after the task finishes."
28862
28901
  ].join("\n");
28863
28902
  }
28864
28903
 
@@ -29023,7 +29062,7 @@ async function prewarmSessionFile(sessionFile) {
29023
29062
  if (!isSessionManagerCacheEnabled()) return;
29024
29063
  if (isSessionManagerCached(sessionFile)) return;
29025
29064
  try {
29026
- const handle = await fs$1.open(sessionFile, "r");
29065
+ const handle = await fsPromises.open(sessionFile, "r");
29027
29066
  try {
29028
29067
  const buffer = Buffer$1.alloc(4096);
29029
29068
  await handle.read(buffer, 0, buffer.length, 0);
@@ -29057,7 +29096,7 @@ async function prepareSessionManagerForRun(params) {
29057
29096
  return;
29058
29097
  }
29059
29098
  if (params.hadSessionFile && header && !hasAssistant) {
29060
- await fs$1.writeFile(params.sessionFile, "", "utf-8");
29099
+ await fsPromises.writeFile(params.sessionFile, "", "utf-8");
29061
29100
  sm.fileEntries = [header];
29062
29101
  sm.byId?.clear?.();
29063
29102
  sm.labelsById?.clear?.();
@@ -29702,7 +29741,7 @@ async function runEmbeddedAttempt(params) {
29702
29741
  const prevCwd = process.cwd();
29703
29742
  const runAbortController = new AbortController();
29704
29743
  log$7.debug(`embedded run start: runId=${params.runId} sessionId=${params.sessionId} provider=${params.provider} model=${params.modelId} thinking=${params.thinkLevel} messageChannel=${params.messageChannel ?? params.messageProvider ?? "unknown"}`);
29705
- await fs$1.mkdir(resolvedWorkspace, { recursive: true });
29744
+ await fsPromises.mkdir(resolvedWorkspace, { recursive: true });
29706
29745
  const sandboxSessionKey = params.sessionKey?.trim() || params.sessionId;
29707
29746
  const sandbox = await resolveSandboxContext({
29708
29747
  config: params.config,
@@ -29710,7 +29749,7 @@ async function runEmbeddedAttempt(params) {
29710
29749
  workspaceDir: resolvedWorkspace
29711
29750
  });
29712
29751
  const effectiveWorkspace = sandbox?.enabled ? sandbox.workspaceAccess === "rw" ? resolvedWorkspace : sandbox.workspaceDir : resolvedWorkspace;
29713
- await fs$1.mkdir(effectiveWorkspace, { recursive: true });
29752
+ await fsPromises.mkdir(effectiveWorkspace, { recursive: true });
29714
29753
  let restoreSkillEnv;
29715
29754
  process.chdir(effectiveWorkspace);
29716
29755
  try {
@@ -29945,7 +29984,7 @@ async function runEmbeddedAttempt(params) {
29945
29984
  sessionFile: params.sessionFile,
29946
29985
  warn: (message) => log$7.warn(message)
29947
29986
  });
29948
- const hadSessionFile = await fs$1.stat(params.sessionFile).then(() => true).catch(() => false);
29987
+ const hadSessionFile = await fsPromises.stat(params.sessionFile).then(() => true).catch(() => false);
29949
29988
  const transcriptPolicy = resolveTranscriptPolicy({
29950
29989
  modelApi: params.model?.api,
29951
29990
  provider: params.provider,
@@ -31017,7 +31056,7 @@ async function runEmbeddedPiAgent(params) {
31017
31056
  }
31018
31057
  runLoopIterations += 1;
31019
31058
  attemptedThinking.add(thinkLevel);
31020
- await fs$1.mkdir(resolvedWorkspace, { recursive: true });
31059
+ await fsPromises.mkdir(resolvedWorkspace, { recursive: true });
31021
31060
  const prompt = provider === "anthropic" ? scrubAnthropicRefusalMagic(params.prompt) : params.prompt;
31022
31061
  const attempt = await runEmbeddedAttempt({
31023
31062
  sessionId: params.sessionId,
@@ -31741,27 +31780,27 @@ async function runAgentTurn(params) {
31741
31780
  function createDefaultDeps() {
31742
31781
  return {
31743
31782
  sendMessageWhatsApp: async (...args) => {
31744
- const { sendMessageWhatsApp } = await import("./web-KiuDkd0x.js");
31783
+ const { sendMessageWhatsApp } = await import("./web-sefqR11J.js");
31745
31784
  return await sendMessageWhatsApp(...args);
31746
31785
  },
31747
31786
  sendMessageTelegram: async (...args) => {
31748
- const { sendMessageTelegram } = await import("./send-B3RdXvjC.js").then((n) => n.l);
31787
+ const { sendMessageTelegram } = await import("./send-DT-5buW5.js").then((n) => n.l);
31749
31788
  return await sendMessageTelegram(...args);
31750
31789
  },
31751
31790
  sendMessageDiscord: async (...args) => {
31752
- const { sendMessageDiscord } = await import("./send-CQVnyJyF.js").then((n) => n.t);
31791
+ const { sendMessageDiscord } = await import("./send-BVBCh27_.js").then((n) => n.t);
31753
31792
  return await sendMessageDiscord(...args);
31754
31793
  },
31755
31794
  sendMessageSlack: async (...args) => {
31756
- const { sendMessageSlack } = await import("./send-DVm0du0_.js").then((n) => n.n);
31795
+ const { sendMessageSlack } = await import("./send-CXFTeD_J.js").then((n) => n.n);
31757
31796
  return await sendMessageSlack(...args);
31758
31797
  },
31759
31798
  sendMessageSignal: async (...args) => {
31760
- const { sendMessageSignal } = await import("./send-Bm4ULEzh.js").then((n) => n.i);
31799
+ const { sendMessageSignal } = await import("./send-JWV62VbW.js").then((n) => n.i);
31761
31800
  return await sendMessageSignal(...args);
31762
31801
  },
31763
31802
  sendMessageIMessage: async (...args) => {
31764
- const { sendMessageIMessage } = await import("./send-9SapUCg7.js").then((n) => n.n);
31803
+ const { sendMessageIMessage } = await import("./send-DsSI8z3F.js").then((n) => n.n);
31765
31804
  return await sendMessageIMessage(...args);
31766
31805
  }
31767
31806
  };
@@ -32943,10 +32982,10 @@ function estimateDurationSeconds(pcm) {
32943
32982
  return pcm.length / (bytesPerSample * SAMPLE_RATE);
32944
32983
  }
32945
32984
  async function writeWavFile(pcm) {
32946
- const tempDir = await fs$1.mkdtemp(path.join(resolvePreferredSymiTmpDir(), "discord-voice-"));
32985
+ const tempDir = await fsPromises.mkdtemp(path.join(resolvePreferredSymiTmpDir(), "discord-voice-"));
32947
32986
  const filePath = path.join(tempDir, `segment-${randomUUID()}.wav`);
32948
32987
  const wav = buildWavBuffer(pcm);
32949
- await fs$1.writeFile(filePath, wav);
32988
+ await fsPromises.writeFile(filePath, wav);
32950
32989
  scheduleTempCleanup(tempDir);
32951
32990
  return {
32952
32991
  path: filePath,
@@ -32955,7 +32994,7 @@ async function writeWavFile(pcm) {
32955
32994
  }
32956
32995
  function scheduleTempCleanup(tempDir, delayMs = 1800 * 1e3) {
32957
32996
  setTimeout(() => {
32958
- fs$1.rm(tempDir, {
32997
+ fsPromises.rm(tempDir, {
32959
32998
  recursive: true,
32960
32999
  force: true
32961
33000
  }).catch((err) => {
@@ -36694,7 +36733,7 @@ function normalizeAllowList$2(list) {
36694
36733
  async function detectRemoteHostFromCliPath(cliPath) {
36695
36734
  try {
36696
36735
  const expanded = cliPath.startsWith("~") ? cliPath.replace(/^~/, process.env.HOME ?? "") : cliPath;
36697
- const content = await fs$1.readFile(expanded, "utf8");
36736
+ const content = await fsPromises.readFile(expanded, "utf8");
36698
36737
  const userHostMatch = content.match(/\bssh\b[^\n]*?\s+([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+)/);
36699
36738
  if (userHostMatch) return userHostMatch[1];
36700
36739
  return content.match(/\bssh\b[^\n]*?\s+([a-zA-Z][a-zA-Z0-9._-]*)\s+\S*\bimsg\b/)?.[1];
@@ -42909,7 +42948,7 @@ function readSlackExternalArgMenuToken(raw) {
42909
42948
  }
42910
42949
  let commandsRegistry;
42911
42950
  async function getCommandsRegistry() {
42912
- if (!commandsRegistry) commandsRegistry = await import("./commands-registry-BT0-zzs3.js").then((n) => n.n);
42951
+ if (!commandsRegistry) commandsRegistry = await import("./commands-registry-BZ0ZSQpM.js").then((n) => n.n);
42913
42952
  return commandsRegistry;
42914
42953
  }
42915
42954
  function encodeSlackCommandArgValue(parts) {
@@ -43251,11 +43290,11 @@ async function registerSlackMonitorSlashCommands(params) {
43251
43290
  const channelName = channelInfo?.name;
43252
43291
  const roomLabel = channelName ? `#${channelName}` : `#${command.channel_id}`;
43253
43292
  const [{ resolveAgentRoute }, { finalizeInboundContext }, { dispatchReplyWithDispatcher }] = await Promise.all([
43254
- import("./resolve-route-BMoTaVAH.js").then((n) => n.r),
43293
+ import("./resolve-route-BcnaXYvh.js").then((n) => n.r),
43255
43294
  import("./inbound-context-CmmmT8IP.js").then((n) => n.n),
43256
43295
  Promise.resolve().then(() => provider_dispatcher_exports)
43257
43296
  ]);
43258
- const [{ resolveConversationLabel }, { createReplyPrefixOptions }] = await Promise.all([import("./conversation-label-Bn5j3lUT.js").then((n) => n.t), import("./reply-prefix-CE2YmmsD.js").then((n) => n.n)]);
43297
+ const [{ resolveConversationLabel }, { createReplyPrefixOptions }] = await Promise.all([import("./conversation-label-Bn5j3lUT.js").then((n) => n.t), import("./reply-prefix-BLOOs1aW.js").then((n) => n.n)]);
43259
43298
  const route = resolveAgentRoute({
43260
43299
  cfg,
43261
43300
  channel: "slack",
@@ -43312,9 +43351,9 @@ async function registerSlackMonitorSlashCommands(params) {
43312
43351
  });
43313
43352
  const deliverSlashPayloads = async (replies) => {
43314
43353
  const [{ deliverSlackSlashReplies }, { resolveChunkMode }, { resolveMarkdownTableMode }] = await Promise.all([
43315
- import("./replies-BMqtgBhh.js").then((n) => n.r),
43354
+ import("./replies-Dy92jzrz.js").then((n) => n.r),
43316
43355
  import("./chunk-1dhPX1NK.js").then((n) => n.s),
43317
- import("./markdown-tables-CEbN0fEm.js").then((n) => n.t)
43356
+ import("./markdown-tables-ZwP14ydw.js").then((n) => n.t)
43318
43357
  ]);
43319
43358
  await deliverSlackSlashReplies({
43320
43359
  replies,
@@ -43367,7 +43406,7 @@ async function registerSlackMonitorSlashCommands(params) {
43367
43406
  let nativeCommands = [];
43368
43407
  if (nativeEnabled) {
43369
43408
  reg = await getCommandsRegistry();
43370
- const skillCommands = nativeSkillsEnabled ? (await import("./skill-commands-Cxw-jNxU.js").then((n) => n.a)).listSkillCommandsForAgents({ cfg }) : [];
43409
+ const skillCommands = nativeSkillsEnabled ? (await import("./skill-commands-ZXbEITKi.js").then((n) => n.a)).listSkillCommandsForAgents({ cfg }) : [];
43371
43410
  nativeCommands = reg.listNativeCommandSpecsForConfig(cfg, {
43372
43411
  skillCommands,
43373
43412
  provider: "slack"
@@ -48006,7 +48045,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
48006
48045
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
48007
48046
  let preflightTranscript;
48008
48047
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
48009
- const { transcribeFirstAudio } = await import("./audio-preflight-CIiS5cfP.js");
48048
+ const { transcribeFirstAudio } = await import("./audio-preflight-mj-z_vQ6.js");
48010
48049
  preflightTranscript = await transcribeFirstAudio({
48011
48050
  ctx: {
48012
48051
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -49774,7 +49813,7 @@ function safeParseState(raw) {
49774
49813
  async function readTelegramUpdateOffset(params) {
49775
49814
  const filePath = resolveTelegramUpdateOffsetPath(params.accountId, params.env);
49776
49815
  try {
49777
- return safeParseState(await fs$1.readFile(filePath, "utf-8"))?.lastUpdateId ?? null;
49816
+ return safeParseState(await fsPromises.readFile(filePath, "utf-8"))?.lastUpdateId ?? null;
49778
49817
  } catch (err) {
49779
49818
  if (err.code === "ENOENT") return null;
49780
49819
  return null;
@@ -49783,7 +49822,7 @@ async function readTelegramUpdateOffset(params) {
49783
49822
  async function writeTelegramUpdateOffset(params) {
49784
49823
  const filePath = resolveTelegramUpdateOffsetPath(params.accountId, params.env);
49785
49824
  const dir = path.dirname(filePath);
49786
- await fs$1.mkdir(dir, {
49825
+ await fsPromises.mkdir(dir, {
49787
49826
  recursive: true,
49788
49827
  mode: 448
49789
49828
  });
@@ -49792,14 +49831,14 @@ async function writeTelegramUpdateOffset(params) {
49792
49831
  version: STORE_VERSION,
49793
49832
  lastUpdateId: params.updateId
49794
49833
  };
49795
- await fs$1.writeFile(tmp, `${JSON.stringify(payload, null, 2)}\n`, { encoding: "utf-8" });
49796
- await fs$1.chmod(tmp, 384);
49797
- await fs$1.rename(tmp, filePath);
49834
+ await fsPromises.writeFile(tmp, `${JSON.stringify(payload, null, 2)}\n`, { encoding: "utf-8" });
49835
+ await fsPromises.chmod(tmp, 384);
49836
+ await fsPromises.rename(tmp, filePath);
49798
49837
  }
49799
49838
  async function deleteTelegramUpdateOffset(params) {
49800
49839
  const filePath = resolveTelegramUpdateOffsetPath(params.accountId, params.env);
49801
49840
  try {
49802
- await fs$1.unlink(filePath);
49841
+ await fsPromises.unlink(filePath);
49803
49842
  } catch (err) {
49804
49843
  if (err.code === "ENOENT") return;
49805
49844
  throw err;
@@ -50160,23 +50199,23 @@ let webLoginQrPromise = null;
50160
50199
  let webChannelPromise = null;
50161
50200
  let whatsappActionsPromise = null;
50162
50201
  function loadWebOutbound() {
50163
- webOutboundPromise ??= import("./outbound-wnv03tb3.js").then((n) => n.t);
50202
+ webOutboundPromise ??= import("./outbound-_Ir3M05f.js").then((n) => n.t);
50164
50203
  return webOutboundPromise;
50165
50204
  }
50166
50205
  function loadWebLogin() {
50167
- webLoginPromise ??= import("./login-DODfJ3Dn.js").then((n) => n.n);
50206
+ webLoginPromise ??= import("./login-CnjdNmGD.js").then((n) => n.n);
50168
50207
  return webLoginPromise;
50169
50208
  }
50170
50209
  function loadWebLoginQr() {
50171
- webLoginQrPromise ??= import("./login-qr-CBRxijIg.js");
50210
+ webLoginQrPromise ??= import("./login-qr-DUf6CM0M.js");
50172
50211
  return webLoginQrPromise;
50173
50212
  }
50174
50213
  function loadWebChannel() {
50175
- webChannelPromise ??= import("./web-KiuDkd0x.js");
50214
+ webChannelPromise ??= import("./web-sefqR11J.js");
50176
50215
  return webChannelPromise;
50177
50216
  }
50178
50217
  function loadWhatsAppActions() {
50179
- whatsappActionsPromise ??= import("./whatsapp-actions-ChO_shrk.js");
50218
+ whatsappActionsPromise ??= import("./whatsapp-actions-CqXxtCoj.js");
50180
50219
  return whatsappActionsPromise;
50181
50220
  }
50182
50221
  function createPluginRuntime() {
@@ -50943,7 +50982,7 @@ function resolvePluginTools(params) {
50943
50982
  //#endregion
50944
50983
  //#region src/agents/apply-patch-update.ts
50945
50984
  async function defaultReadFile(filePath) {
50946
- return fs$1.readFile(filePath, "utf8");
50985
+ return fsPromises.readFile(filePath, "utf8");
50947
50986
  }
50948
50987
  async function applyUpdateHunk(filePath, chunks, options) {
50949
50988
  const originalLines = (await (options?.readFile ?? defaultReadFile)(filePath).catch((err) => {
@@ -51187,10 +51226,10 @@ function resolvePatchFileOps(options) {
51187
51226
  };
51188
51227
  }
51189
51228
  return {
51190
- readFile: (filePath) => fs$1.readFile(filePath, "utf8"),
51191
- writeFile: (filePath, content) => fs$1.writeFile(filePath, content, "utf8"),
51192
- remove: (filePath) => fs$1.rm(filePath),
51193
- mkdirp: (dir) => fs$1.mkdir(dir, { recursive: true }).then(() => {})
51229
+ readFile: (filePath) => fsPromises.readFile(filePath, "utf8"),
51230
+ writeFile: (filePath, content) => fsPromises.writeFile(filePath, content, "utf8"),
51231
+ remove: (filePath) => fsPromises.rm(filePath),
51232
+ mkdirp: (dir) => fsPromises.mkdir(dir, { recursive: true }).then(() => {})
51194
51233
  };
51195
51234
  }
51196
51235
  async function ensureDir(filePath, ops) {
@@ -51911,7 +51950,7 @@ async function resolveSandboxWorkdir(params) {
51911
51950
  cwd: process.cwd(),
51912
51951
  root: params.sandbox.workspaceDir
51913
51952
  });
51914
- if (!(await fs$1.stat(resolved.resolved)).isDirectory()) throw new Error("workdir is not a directory");
51953
+ if (!(await fsPromises.stat(resolved.resolved)).isDirectory()) throw new Error("workdir is not a directory");
51915
51954
  const relative = resolved.relative ? resolved.relative.split(path.sep).join(path.posix.sep) : "";
51916
51955
  const containerWorkdir = relative ? path.posix.join(params.sandbox.containerWorkdir, relative) : params.sandbox.containerWorkdir;
51917
51956
  return {
@@ -52892,13 +52931,13 @@ async function validateScriptFileForShellBleed(params) {
52892
52931
  cwd: params.workdir,
52893
52932
  root: params.workdir
52894
52933
  });
52895
- stat = await fs$1.stat(absPath);
52934
+ stat = await fsPromises.stat(absPath);
52896
52935
  } catch {
52897
52936
  return;
52898
52937
  }
52899
52938
  if (!stat.isFile()) return;
52900
52939
  if (stat.size > 512 * 1024) return;
52901
- const content = await fs$1.readFile(absPath, "utf-8");
52940
+ const content = await fsPromises.readFile(absPath, "utf-8");
52902
52941
  const first = /\$[A-Z_][A-Z0-9_]{1,}/g.exec(content);
52903
52942
  if (first) {
52904
52943
  const idx = first.index;
@@ -55572,7 +55611,7 @@ async function readJsonlFromPath(jsonlPath) {
55572
55611
  if (shouldLogVerbose()) logVerbose(`Blocked canvas jsonlPath outside allowed roots: ${resolved}`);
55573
55612
  throw new Error("jsonlPath outside allowed roots");
55574
55613
  }
55575
- const canonical = await fs$1.realpath(resolved).catch(() => resolved);
55614
+ const canonical = await fsPromises.realpath(resolved).catch(() => resolved);
55576
55615
  if (!isInboundPathAllowed({
55577
55616
  filePath: canonical,
55578
55617
  roots
@@ -55580,7 +55619,7 @@ async function readJsonlFromPath(jsonlPath) {
55580
55619
  if (shouldLogVerbose()) logVerbose(`Blocked canvas jsonlPath outside allowed roots: ${canonical}`);
55581
55620
  throw new Error("jsonlPath outside allowed roots");
55582
55621
  }
55583
- return await fs$1.readFile(canonical, "utf8");
55622
+ return await fsPromises.readFile(canonical, "utf8");
55584
55623
  }
55585
55624
  const CanvasToolSchema = Type.Object({
55586
55625
  action: stringEnum(CANVAS_ACTIONS),
@@ -56360,27 +56399,27 @@ function resolveRestartSentinelPath(env = process.env) {
56360
56399
  }
56361
56400
  async function writeRestartSentinel(payload, env = process.env) {
56362
56401
  const filePath = resolveRestartSentinelPath(env);
56363
- await fs$1.mkdir(path.dirname(filePath), { recursive: true });
56402
+ await fsPromises.mkdir(path.dirname(filePath), { recursive: true });
56364
56403
  const data = {
56365
56404
  version: 1,
56366
56405
  payload
56367
56406
  };
56368
- await fs$1.writeFile(filePath, `${JSON.stringify(data, null, 2)}\n`, "utf-8");
56407
+ await fsPromises.writeFile(filePath, `${JSON.stringify(data, null, 2)}\n`, "utf-8");
56369
56408
  return filePath;
56370
56409
  }
56371
56410
  async function readRestartSentinel(env = process.env) {
56372
56411
  const filePath = resolveRestartSentinelPath(env);
56373
56412
  try {
56374
- const raw = await fs$1.readFile(filePath, "utf-8");
56413
+ const raw = await fsPromises.readFile(filePath, "utf-8");
56375
56414
  let parsed;
56376
56415
  try {
56377
56416
  parsed = JSON.parse(raw);
56378
56417
  } catch {
56379
- await fs$1.unlink(filePath).catch(() => {});
56418
+ await fsPromises.unlink(filePath).catch(() => {});
56380
56419
  return null;
56381
56420
  }
56382
56421
  if (!parsed || parsed.version !== 1 || !parsed.payload) {
56383
- await fs$1.unlink(filePath).catch(() => {});
56422
+ await fsPromises.unlink(filePath).catch(() => {});
56384
56423
  return null;
56385
56424
  }
56386
56425
  return parsed;
@@ -56392,7 +56431,7 @@ async function consumeRestartSentinel(env = process.env) {
56392
56431
  const filePath = resolveRestartSentinelPath(env);
56393
56432
  const parsed = await readRestartSentinel(env);
56394
56433
  if (!parsed) return null;
56395
- await fs$1.unlink(filePath).catch(() => {});
56434
+ await fsPromises.unlink(filePath).catch(() => {});
56396
56435
  return parsed;
56397
56436
  }
56398
56437
  function formatRestartSentinelMessage(payload) {
@@ -57499,7 +57538,7 @@ async function hydrateAttachmentPayload(params) {
57499
57538
  accountId: params.accountId
57500
57539
  }),
57501
57540
  sandboxValidated: true,
57502
- readFile: (filePath) => fs$1.readFile(filePath)
57541
+ readFile: (filePath) => fsPromises.readFile(filePath)
57503
57542
  });
57504
57543
  params.args.buffer = media.buffer.toString("base64");
57505
57544
  if (!contentTypeParam && media.contentType) params.args.contentType = media.contentType;
@@ -65051,7 +65090,7 @@ async function compactEmbeddedPiSessionDirect(params) {
65051
65090
  } catch (err) {
65052
65091
  return fail(describeUnknownError(err));
65053
65092
  }
65054
- await fs$1.mkdir(resolvedWorkspace, { recursive: true });
65093
+ await fsPromises.mkdir(resolvedWorkspace, { recursive: true });
65055
65094
  const sandboxSessionKey = params.sessionKey?.trim() || params.sessionId;
65056
65095
  const sandbox = await resolveSandboxContext({
65057
65096
  config: params.config,
@@ -65059,7 +65098,7 @@ async function compactEmbeddedPiSessionDirect(params) {
65059
65098
  workspaceDir: resolvedWorkspace
65060
65099
  });
65061
65100
  const effectiveWorkspace = sandbox?.enabled ? sandbox.workspaceAccess === "rw" ? resolvedWorkspace : sandbox.workspaceDir : resolvedWorkspace;
65062
- await fs$1.mkdir(effectiveWorkspace, { recursive: true });
65101
+ await fsPromises.mkdir(effectiveWorkspace, { recursive: true });
65063
65102
  await ensureSessionHeader({
65064
65103
  sessionFile: params.sessionFile,
65065
65104
  sessionId: params.sessionId,
@@ -69214,7 +69253,7 @@ async function handleCommands(params) {
69214
69253
  try {
69215
69254
  const messages = [];
69216
69255
  if (sessionFile) {
69217
- const content = await fs$1.readFile(sessionFile, "utf-8");
69256
+ const content = await fsPromises.readFile(sessionFile, "utf-8");
69218
69257
  for (const line of content.split("\n")) {
69219
69258
  if (!line.trim()) continue;
69220
69259
  try {
@@ -72875,7 +72914,7 @@ async function deliverSessionMaintenanceWarning(params) {
72875
72914
  return;
72876
72915
  }
72877
72916
  try {
72878
- const { deliverOutboundPayloads } = await import("./deliver-B4KZ6-oZ.js").then((n) => n.n);
72917
+ const { deliverOutboundPayloads } = await import("./deliver-BYdNAEqj.js").then((n) => n.n);
72879
72918
  await deliverOutboundPayloads({
72880
72919
  cfg: params.cfg,
72881
72920
  channel,
@@ -73250,7 +73289,7 @@ async function stageSandboxMedia(params) {
73250
73289
  };
73251
73290
  try {
73252
73291
  const destDir = sandbox ? path.join(effectiveWorkspaceDir, "media", "inbound") : effectiveWorkspaceDir;
73253
- await fs$1.mkdir(destDir, { recursive: true });
73292
+ await fsPromises.mkdir(destDir, { recursive: true });
73254
73293
  const remoteAttachmentRoots = resolveIMessageRemoteAttachmentRoots({
73255
73294
  cfg,
73256
73295
  accountId: ctx.AccountId
@@ -73300,7 +73339,7 @@ async function stageSandboxMedia(params) {
73300
73339
  usedNames.add(fileName);
73301
73340
  const dest = path.join(destDir, fileName);
73302
73341
  if (ctx.MediaRemoteHost) await scpFile(ctx.MediaRemoteHost, source, dest);
73303
- else await fs$1.copyFile(source, dest);
73342
+ else await fsPromises.copyFile(source, dest);
73304
73343
  const stagedPath = sandbox ? path.posix.join("media", "inbound", fileName) : dest;
73305
73344
  staged.set(source, stagedPath);
73306
73345
  }