@symerian/symi 2.6.41 → 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 (292) 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-B4RNdKQ3.js → agents-Cu2bthAX.js} +4 -4
  7. package/dist/{agents.config-CA31c0kN.js → agents.config-5PTwsijs.js} +1 -1
  8. package/dist/{agents.config-CG2klYOg.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-K-s65jbB.js → audio-preflight-COaFw917.js} +4 -4
  11. package/dist/{audio-preflight-CIiS5cfP.js → audio-preflight-mj-z_vQ6.js} +28 -28
  12. package/dist/{audit-DB9YkTVX.js → audit-Djfdh06o.js} +23 -23
  13. package/dist/{auth-choice-CCGIgXvF.js → auth-choice-5gul6jy2.js} +1 -1
  14. package/dist/{auth-choice-CiMf3Pjp.js → auth-choice-CmSUU3t8.js} +8 -8
  15. package/dist/{auth-token-Cay2jwzn.js → auth-token-83A2btbE.js} +1 -1
  16. package/dist/{banner-BNsB_A87.js → banner-B4vQpMIJ.js} +1 -1
  17. package/dist/{bindings-DFaVVCsf.js → bindings-ChzePa8q.js} +1 -1
  18. package/dist/{browser-cli-Ctn9do4z.js → browser-cli-BTD0NlrA.js} +9 -9
  19. package/dist/build-info.json +3 -3
  20. package/dist/bundled/boot-md/handler.js +6 -6
  21. package/dist/bundled/session-memory/handler.js +6 -6
  22. package/dist/{call-DwpGquzW.js → call-tmHtVCkn.js} +9 -9
  23. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  24. package/dist/{channel-options-BMQlkUDX.js → channel-options-DVf4CJIu.js} +1 -1
  25. package/dist/{channel-options-pAH4A-xX.js → channel-options-DsWGc55A.js} +2 -2
  26. package/dist/{channel-selection-V2xDgw16.js → channel-selection-DaJDux-Q.js} +1 -1
  27. package/dist/{channel-web-Dwuj48T5.js → channel-web-vGC-WJXi.js} +17 -17
  28. package/dist/{channels-cli-rmDzxb0W.js → channels-cli-COayA28A.js} +76 -76
  29. package/dist/{channels-cli-CuExxB0U.js → channels-cli-CSv05N3q.js} +4 -4
  30. package/dist/{channels-status-issues-CJ0Vb_9z.js → channels-status-issues-B_PI3nEE.js} +1 -1
  31. package/dist/{chrome-DU2ZysN3.js → chrome-CSJzpT9Z.js} +2 -2
  32. package/dist/{chrome-BYOhnxTr.js → chrome-CbA-qnhp.js} +7 -7
  33. package/dist/cli/daemon-cli.js +1 -1
  34. package/dist/{cli-Mcq2pPI0.js → cli-B-g79xPe.js} +1 -1
  35. package/dist/{cli-BPGZalMg.js → cli-DJjOxip6.js} +63 -63
  36. package/dist/{client-jI1oE0_k.js → client-Bj_vTpri.js} +1 -1
  37. package/dist/{command-registry-BoEw2RzH.js → command-registry-BvpLfzl7.js} +9 -9
  38. package/dist/{commands-BNLCWX6e.js → commands-CtocZ4Lg.js} +1 -1
  39. package/dist/{commands-registry-BT0-zzs3.js → commands-registry-BZ0ZSQpM.js} +3 -3
  40. package/dist/{completion-cli-CQVZGJPg.js → completion-cli-CfRZ-7QF.js} +2 -2
  41. package/dist/{completion-cli-CE9Xqlyx.js → completion-cli-DtQcXg1N.js} +12 -12
  42. package/dist/{config-cli-mU_ckD4l.js → config-cli-D9Z78raJ.js} +4 -4
  43. package/dist/{config-cli-BucNvr-c.js → config-cli-DL2RdfLM.js} +1 -1
  44. package/dist/{config-guard-CEkSg4hl.js → config-guard-4oRmpR0a.js} +12 -12
  45. package/dist/{config-Dz95lSBW.js → config-tNauHpdq.js} +2 -2
  46. package/dist/{config-validation-HDVDlMSV.js → config-validation-BoDWiwe3.js} +1 -1
  47. package/dist/{configure-CxnBcN95.js → configure-Dq4f8WPa.js} +3 -3
  48. package/dist/{configure-CDOF87Fk.js → configure-jDpF8lmx.js} +15 -15
  49. package/dist/{control-service-BYKXzY4f.js → control-service-BBnhN7aZ.js} +4 -4
  50. package/dist/control-ui/css/style.css +51 -0
  51. package/dist/control-ui/js/app.js +39 -0
  52. package/dist/control-ui/js/gateway.js +2 -0
  53. package/dist/control-ui/js/settings.js +71 -8
  54. package/dist/{control-ui-assets-B7moDVHX.js → control-ui-assets-6n-YayeS.js} +1 -1
  55. package/dist/{cron-cli-DCpsXkrw.js → cron-cli-D165ecaj.js} +10 -10
  56. package/dist/{daemon-cli-DSDcmWOi.js → daemon-cli-BccZzUb0.js} +11 -11
  57. package/dist/{daemon-runtime-mE1b-Q48.js → daemon-runtime-u01h46bE.js} +10 -10
  58. package/dist/{deliver-B4KZ6-oZ.js → deliver-BYdNAEqj.js} +7 -7
  59. package/dist/{deliver-C1HRkzPJ.js → deliver-C7NePF9Z.js} +1 -1
  60. package/dist/{devices-cli-x3jIP4Ih.js → devices-cli-D0N71nqX.js} +6 -6
  61. package/dist/{diagnostics-BRwihzJG.js → diagnostics-BrUo0gqs.js} +5 -5
  62. package/dist/{directory-cli-KgsAVTA0.js → directory-cli-aj7aXIBM.js} +7 -7
  63. package/dist/{dm-policy-shared-DlDAGtZL.js → dm-policy-shared-epgkayyq.js} +2 -2
  64. package/dist/{dns-cli-Cwr92Aiq.js → dns-cli-Dit09wbu.js} +3 -3
  65. package/dist/{dock-BhS32F6E.js → dock-BYiRZSgZ.js} +4 -4
  66. package/dist/{docs-cli-qE-blOLC.js → docs-cli-CyWGMA-e.js} +1 -1
  67. package/dist/{doctor-completion-CoftKlUX.js → doctor-completion-Ccb83Wl5.js} +2 -2
  68. package/dist/{doctor-completion-CHF_TwGQ.js → doctor-completion-oQemZItC.js} +1 -1
  69. package/dist/{doctor-config-flow-iIzSEQxb.js → doctor-config-flow-BXmHd2bb.js} +10 -10
  70. package/dist/entry.js +1 -1
  71. package/dist/{exec-approvals-cli-BSgxsdMt.js → exec-approvals-cli-CZ-iTtNO.js} +13 -13
  72. package/dist/extensionAPI.js +1 -1
  73. package/dist/{fs-safe-CUjO1ca2.js → fs-safe-CTDvb1DF.js} +6 -6
  74. package/dist/{gateway-cli-SNaqDM7f.js → gateway-cli-C1zPKZ7B.js} +137 -121
  75. package/dist/{gateway-cli-G7fiXsQ6.js → gateway-cli-zbVm1MBQ.js} +32 -16
  76. package/dist/{gateway-rpc-5fREQe9Q.js → gateway-rpc-B1Wzoj99.js} +1 -1
  77. package/dist/{glass-ui-ws-CF0__vuO.js → glass-ui-ws-CvUFd4C6.js} +28 -9
  78. package/dist/{glass-ui-ws-he25wGFt.js → glass-ui-ws-D3tAmqKX.js} +104 -85
  79. package/dist/{health-q7706M36.js → health-DQEqLYg1.js} +1 -1
  80. package/dist/{health-en2N_Kqc.js → health-o847FIt1.js} +13 -13
  81. package/dist/{hooks-cli-ChQbBpyb.js → hooks-cli-D_UW9fc8.js} +2 -2
  82. package/dist/{hooks-cli-C4rVaLzZ.js → hooks-cli-sYjbF4I6.js} +77 -77
  83. package/dist/{image-CbyTdMd5.js → image-C3ugMkb5.js} +1 -1
  84. package/dist/{image-BWmcNF8N.js → image-lCS3o9xj.js} +3 -3
  85. package/dist/{image-ops-1OJMSAUX.js → image-ops-DYbDWaIA.js} +10 -10
  86. package/dist/index.js +73 -73
  87. package/dist/{inspect-CvbbCuoa.js → inspect-CNYyHVfH.js} +4 -4
  88. package/dist/{install-safe-path-D3Uz77u7.js → install-safe-path-D3mg1DMG.js} +11 -11
  89. package/dist/{installs-DQcRVF1U.js → installs-CYTVYWH_.js} +10 -10
  90. package/dist/{ir-DZam9q5M.js → ir-Dt4hOzxG.js} +6 -6
  91. package/dist/{lifecycle-core-C4HzGXA1.js → lifecycle-core-DxmxQdhS.js} +5 -5
  92. package/dist/llm-slug-generator.js +6 -6
  93. package/dist/{local-roots-aAFLQGkY.js → local-roots-BBeKX7PX.js} +2 -2
  94. package/dist/{login-DODfJ3Dn.js → login-CnjdNmGD.js} +3 -3
  95. package/dist/{login-qr-CBRxijIg.js → login-qr-DUf6CM0M.js} +5 -5
  96. package/dist/{logs-cli-CfGj-dOg.js → logs-cli-BVd6h2-Q.js} +7 -7
  97. package/dist/{manager-D4LJSRyZ.js → manager-C1CfGzZ2.js} +13 -13
  98. package/dist/{markdown-tables-CEbN0fEm.js → markdown-tables-ZwP14ydw.js} +1 -1
  99. package/dist/{memory-cli-DDumUksr.js → memory-cli-DhkRAIdT.js} +14 -14
  100. package/dist/{model-tWhwnFf8.js → model-CeeOcylL.js} +1 -1
  101. package/dist/{model-catalog-8Son0J4O.js → model-catalog-CvbwxWuC.js} +4 -4
  102. package/dist/{model-picker-CAm2Bftd.js → model-picker-C2MqloOs.js} +3 -3
  103. package/dist/{model-selection-CyFvYcRt.js → model-selection-X1oLh3CE.js} +9 -9
  104. package/dist/{models-DOTpfa7b.js → models-Zol34e73.js} +2 -2
  105. package/dist/{models-cli-MJAY_Wg4.js → models-cli-BzcEA9oa.js} +3 -3
  106. package/dist/{models-cli-CBl45f7R.js → models-cli-DnMUzr15.js} +72 -72
  107. package/dist/{models-config-CFFjJPe7.js → models-config-CEMioDUi.js} +7 -7
  108. package/dist/{node-cli-DnfDOh1d.js → node-cli-BVJid4L_.js} +28 -28
  109. package/dist/{node-service-CD47Qpf1.js → node-service-CXzMs782.js} +1 -1
  110. package/dist/{nodes-cli-Ci3oxw8k.js → nodes-cli-BN2Nslim.js} +10 -10
  111. package/dist/{nodes-screen-8Bq7DiSa.js → nodes-screen-Cd49cSPb.js} +4 -4
  112. package/dist/{npm-registry-spec-C0CPT3vr.js → npm-registry-spec-DchndI6P.js} +9 -9
  113. package/dist/{onboard-DQdGJ1lE.js → onboard-CSseK0Co.js} +13 -13
  114. package/dist/{onboard-Bx02XPb1.js → onboard-CxOT_xD4.js} +2 -2
  115. package/dist/{onboard-channels-Bp89ZT6Q.js → onboard-channels-CUlITipG.js} +5 -5
  116. package/dist/{onboard-channels-Ct2eNYUC.js → onboard-channels-D-lh_Vh1.js} +1 -1
  117. package/dist/{onboard-custom-XiomtQr7.js → onboard-custom-DTcLdtA9.js} +3 -3
  118. package/dist/{onboard-helpers-DFvWPFhU.js → onboard-helpers-CdPNw25E.js} +8 -8
  119. package/dist/{onboard-hooks-C3ok8kqB.js → onboard-hooks-C_2_jpWg.js} +1 -1
  120. package/dist/{onboard-remote-BURDxwoE.js → onboard-remote-v6QMnyJD.js} +1 -1
  121. package/dist/{onboard-skills-CbzgBT1W.js → onboard-skills-CQtkRP20.js} +4 -4
  122. package/dist/{onboarding-Dnn_0VTy.js → onboarding-DktESmTv.js} +3 -3
  123. package/dist/{onboarding-DxUcsrKV.js → onboarding-Dn5agNG_.js} +13 -13
  124. package/dist/{onboarding.finalize-1kzzMLFM.js → onboarding.finalize-Bm-1Kdnh.js} +6 -6
  125. package/dist/{onboarding.finalize-Dwr-jEtL.js → onboarding.finalize-CTIZ1zvV.js} +75 -75
  126. package/dist/{onboarding.gateway-config-DKwJ5bWd.js → onboarding.gateway-config-CwnQkyO0.js} +14 -14
  127. package/dist/{openai-model-default-WqcGxyFM.js → openai-model-default-4kBA1_78.js} +2 -2
  128. package/dist/{outbound-wnv03tb3.js → outbound-_Ir3M05f.js} +4 -4
  129. package/dist/{outbound-attachment-Bw-c5Cdp.js → outbound-attachment-Qfh5dlsg.js} +2 -2
  130. package/dist/{pairing-cli-DSM82gJG.js → pairing-cli-C8UXBJ_A.js} +8 -8
  131. package/dist/{pairing-labels-DyXoD1DS.js → pairing-labels-Dxb898X5.js} +1 -1
  132. package/dist/{pairing-store-CK726Dzq.js → pairing-store-B8ktu-6j.js} +2 -2
  133. package/dist/{pairing-token-CX3NN_qj.js → pairing-token-AV-MMfVE.js} +7 -7
  134. package/dist/{paths-BBm9fwuG.js → paths-CT6jsi4E.js} +1 -1
  135. package/dist/{pi-auth-json-zHckislA.js → pi-auth-json-FpfHyEcu.js} +5 -5
  136. package/dist/{pi-embedded-BfEg6Wwb.js → pi-embedded-CYDMb5q0.js} +79 -3
  137. package/dist/{pi-embedded-helpers-GaCyI2oH.js → pi-embedded-helpers-BgRcgoC9.js} +4 -4
  138. package/dist/{pi-embedded-helpers-BgdB5kvy.js → pi-embedded-helpers-Bs4eMaNo.js} +6 -6
  139. package/dist/{pi-tools.policy-DRWb_Cax.js → pi-tools.policy-BBxnqCay.js} +4 -4
  140. package/dist/{plugin-auto-enable-CP0nONRL.js → plugin-auto-enable-DwIrzVOA.js} +2 -2
  141. package/dist/{plugin-registry-BMFEJ4FA.js → plugin-registry-CJGPW1-k.js} +1 -1
  142. package/dist/{plugin-registry-wAQeBSeD.js → plugin-registry-d0oZLl6y.js} +3 -3
  143. package/dist/plugin-sdk/agents/pi-embedded-runner/long-task-prompt.d.ts +5 -0
  144. package/dist/plugin-sdk/{channel-web-Ba27v-Om.js → channel-web-Dm-CzA1O.js} +1 -1
  145. package/dist/plugin-sdk/index.js +2 -2
  146. package/dist/plugin-sdk/{reply-Bok_WQGW.js → reply-4HEU7aDS.js} +79 -3
  147. package/dist/plugin-sdk/{web-BoOAa0Xn.js → web-Cclb7FTq.js} +2 -2
  148. package/dist/{plugins-DKDeQZF0.js → plugins-BAyxWQSz.js} +2 -2
  149. package/dist/{plugins-cli-B36YKKla.js → plugins-cli-BWgjIJQL.js} +72 -72
  150. package/dist/{plugins-cli-DoJbbST7.js → plugins-cli-CL0tzkMo.js} +2 -2
  151. package/dist/{ports-BOmtxoTv.js → ports-OZQlocB7.js} +2 -2
  152. package/dist/{ports-DtW62rqS.js → ports-u9lWy2Jt.js} +1 -1
  153. package/dist/{program-4f7W2RMs.js → program-BHjH97Q_.js} +7 -7
  154. package/dist/{program-context-Y4KnAKNT.js → program-context-CXZHSZ4D.js} +39 -39
  155. package/dist/{prompt-select-styled-D0sLJ4TD.js → prompt-select-styled-BUFEoSlM.js} +38 -38
  156. package/dist/{prompt-select-styled-Dql_0SI0.js → prompt-select-styled-D8LXSUR7.js} +4 -4
  157. package/dist/{provider-auth-helpers-GSv3namf.js → provider-auth-helpers-BFHctF2f.js} +1 -1
  158. package/dist/{provider-auth-helpers-CJbHC_mv.js → provider-auth-helpers-CeAbh3lv.js} +5 -5
  159. package/dist/{push-apns-giplY7u-.js → push-apns-BylbQyP9.js} +1 -1
  160. package/dist/{push-apns-sxB8QxSj.js → push-apns-DqFdzIkc.js} +4 -4
  161. package/dist/{pw-ai-pQoxTh-a.js → pw-ai--LDjnyuN.js} +1 -1
  162. package/dist/{pw-ai-DQohWnzT.js → pw-ai-CfrnAHwA.js} +7 -7
  163. package/dist/{qmd-manager-CCUK1xoc.js → qmd-manager-DUNbG4Qr.js} +18 -18
  164. package/dist/{qr-cli-CejYwqsj.js → qr-cli-BZYa2gvF.js} +3 -3
  165. package/dist/{register.agent-_2tVQLMK.js → register.agent-DxAqRAt3.js} +6 -6
  166. package/dist/{register.agent-vd2BSsyE.js → register.agent-bzSGKS-l.js} +82 -82
  167. package/dist/register.configure-Boyfir72.js +148 -0
  168. package/dist/{register.configure-BVKwTrz8.js → register.configure-WS1nlSp8.js} +6 -6
  169. package/dist/{register.maintenance-XySU31jf.js → register.maintenance-B1QcUr38.js} +85 -85
  170. package/dist/{register.maintenance-BqYR2fop.js → register.maintenance-D_qMTrgD.js} +8 -8
  171. package/dist/{register.message-CCfWNWs3.js → register.message-CJF8gLAN.js} +64 -64
  172. package/dist/{register.message-DOyREWdG.js → register.message-zu3HGGff.js} +2 -2
  173. package/dist/{register.onboard-Dy_D_uMj.js → register.onboard-9dwNqCe6.js} +4 -4
  174. package/dist/{register.onboard-zmF-euog.js → register.onboard-CswoaT7q.js} +75 -75
  175. package/dist/{register.setup-DiGPa1Fw.js → register.setup-CvomtGGu.js} +78 -78
  176. package/dist/{register.setup-cE7gPp2m.js → register.setup-TcjUu6HC.js} +4 -4
  177. package/dist/{register.status-health-sessions-ksv1WnIs.js → register.status-health-sessions-CM1SX81r.js} +3 -3
  178. package/dist/{register.status-health-sessions-DWKL1rkz.js → register.status-health-sessions-CQMvbwr6.js} +76 -76
  179. package/dist/{register.subclis-Crt_IYK0.js → register.subclis-CVQASXaL.js} +9 -9
  180. package/dist/{replies-BMqtgBhh.js → replies-Dy92jzrz.js} +1 -1
  181. package/dist/{reply-CjYJHt_H.js → reply-CpNWtuU4.js} +216 -140
  182. package/dist/{reply-prefix-CE2YmmsD.js → reply-prefix-BLOOs1aW.js} +1 -1
  183. package/dist/{resolve-route-BMoTaVAH.js → resolve-route-BcnaXYvh.js} +2 -2
  184. package/dist/{routes-BAZTZNuQ.js → routes-CVwRcA9D.js} +8 -8
  185. package/dist/{rpc-Co5PQ3IJ.js → rpc-CZFfee1J.js} +1 -1
  186. package/dist/{run-main-bOlPbL7t.js → run-main-Dq6tfDry.js} +14 -14
  187. package/dist/{runner-DRv0uCK_.js → runner-BAVs-p6Z.js} +20 -20
  188. package/dist/{runner-B0AbN8wV.js → runner-cJ3m-bxK.js} +1 -1
  189. package/dist/{sandbox-B6N8cV4d.js → sandbox-HZ_uilsn.js} +18 -18
  190. package/dist/{sandbox-cli-DwzaNjIJ.js → sandbox-cli-wZtiyo8g.js} +20 -20
  191. package/dist/{security-cli-D5BWzqEJ.js → security-cli-BESmRIrl.js} +36 -36
  192. package/dist/{send-CQVnyJyF.js → send-BVBCh27_.js} +13 -13
  193. package/dist/{send-DVm0du0_.js → send-CXFTeD_J.js} +4 -4
  194. package/dist/{send-B3RdXvjC.js → send-DT-5buW5.js} +6 -6
  195. package/dist/{send-9SapUCg7.js → send-DsSI8z3F.js} +6 -6
  196. package/dist/{send-Bm4ULEzh.js → send-JWV62VbW.js} +6 -6
  197. package/dist/{server-context-CCBZN8a0.js → server-context-VlF1_hYj.js} +5 -5
  198. package/dist/{server-methods-VimYvcpY.js → server-methods-B0pdetGJ.js} +130 -64
  199. package/dist/{server-methods-CiwWwj6K.js → server-methods-IBEaQXPX.js} +177 -111
  200. package/dist/{server-node-events-DYC45lKC.js → server-node-events-BACmfyjo.js} +64 -64
  201. package/dist/{server-node-events-CHmLiFNV.js → server-node-events-CyDj7Txd.js} +2 -2
  202. package/dist/{service-osK70kTZ.js → service-D80PyJxB.js} +15 -15
  203. package/dist/{session-DsJGtM7g.js → session-6Qyc4cBQ.js} +2 -2
  204. package/dist/{session-dirs-Dgz7kkUM.js → session-dirs-DPzjjra2.js} +2 -2
  205. package/dist/{sessions-Cpgnq0pA.js → sessions-jTAGYjWl.js} +13 -13
  206. package/dist/{shared-DnmJ0ABB.js → shared-BV7WhIkY.js} +1 -1
  207. package/dist/{shared-73T9fyuK.js → shared-BfhtOZAz.js} +3 -3
  208. package/dist/{skill-commands-Cxw-jNxU.js → skill-commands-ZXbEITKi.js} +5 -5
  209. package/dist/{skill-scanner-hMtQbWPV.js → skill-scanner-w3DJvw1Q.js} +5 -5
  210. package/dist/{skills-6jdJQ5ZL.js → skills-DqQUtOph.js} +4 -4
  211. package/dist/{skills-cli-DXkx4vNV.js → skills-cli-D3lePXkf.js} +7 -7
  212. package/dist/{skills-install-CWVdJkLn.js → skills-install-HGYidhrv.js} +3 -3
  213. package/dist/{skills-status-C3ptXwnh.js → skills-status-Cjsh8we0.js} +1 -1
  214. package/dist/{sqlite-Dx3J_aSE.js → sqlite-BV5ILFtC.js} +12 -12
  215. package/dist/{status-DxhtJtzE.js → status-BJtbD-cG.js} +2 -2
  216. package/dist/{status-Dt_MXoNa.js → status-DUeTrQSz.js} +1 -1
  217. package/dist/{status-CA5wJHMj.js → status-DzHL-eVu.js} +3 -3
  218. package/dist/{status-DEpM69Pd.js → status-nzJEZmNT.js} +25 -25
  219. package/dist/{status.update-CG0ciGaf.js → status.update-TlYwuzTa.js} +3 -3
  220. package/dist/{store-r1DJSDq-.js → store-DvtcmOKj.js} +5 -5
  221. package/dist/{subagent-registry-BPwn3Qm7.js → subagent-registry-CzS4CfnV.js} +79 -3
  222. package/dist/{symi-root-CrGJbkzf.js → symi-root-MF6_6SCS.js} +2 -2
  223. package/dist/{system-cli-DFZNGx0i.js → system-cli-C2yhGP4C.js} +7 -7
  224. package/dist/{systemd-DT6SbCim.js → systemd-CevHlgD4.js} +5 -5
  225. package/dist/{systemd-hints-xYZbFny_.js → systemd-hints-DmgRnw1L.js} +6 -6
  226. package/dist/{systemd-linger-DCskIKcx.js → systemd-linger-ScxQ1_H4.js} +1 -1
  227. package/dist/{tables-BEzT0Da4.js → tables-C38rzF6E.js} +1 -1
  228. package/dist/{target-errors-7AvoVa10.js → target-errors-CCz79CmV.js} +4 -4
  229. package/dist/{tool-images-DvUBlqjX.js → tool-images-B-pqX3nX.js} +1 -1
  230. package/dist/{tui-DjPsMdL6.js → tui-D2MOx3Kx.js} +7 -7
  231. package/dist/{tui-cli-pWD_NrUR.js → tui-cli-B2ii7u23.js} +28 -28
  232. package/dist/{unified-runner-CVkyzT1I.js → unified-runner-BtO3UQSd.js} +93 -17
  233. package/dist/{update-Ya0e-JnM.js → update-Don6XTH9.js} +3 -3
  234. package/dist/{update-check-7EzEjSzb.js → update-check-DCo5RtKp.js} +5 -5
  235. package/dist/{update-cli-Dh_dfprI.js → update-cli-DRODEMSI.js} +8 -8
  236. package/dist/{update-cli-Dv4c5Gup.js → update-cli-gKtjyXlD.js} +95 -95
  237. package/dist/{update-runner-MMFI1UZ0.js → update-runner-AsKAxe31.js} +15 -15
  238. package/dist/{update-runner-CG_kbbGR.js → update-runner-JcdOHr71.js} +1 -1
  239. package/dist/{web-DCBOD-Vj.js → web-BIzWZFiN.js} +1 -1
  240. package/dist/{web-BUc-ts5b.js → web-DGo16lWn.js} +6 -6
  241. package/dist/{web-CJk-lv93.js → web-DKwOxo8E.js} +1 -1
  242. package/dist/web-sefqR11J.js +110 -0
  243. package/dist/{webhooks-cli-BRxe4uCg.js → webhooks-cli-DbnQ2BVE.js} +4 -4
  244. package/dist/{whatsapp-actions-ChO_shrk.js → whatsapp-actions-CqXxtCoj.js} +15 -15
  245. package/dist/{with-timeout-CtVdu_1U.js → with-timeout-Cm5EhxG_.js} +1 -1
  246. package/dist/{workspace-dirs-GpkFi6Kw.js → workspace-dirs-DKu48umx.js} +1 -1
  247. package/dist/{wsl-q8spwrME.js → wsl-xNOi_Ch8.js} +2 -2
  248. package/extensions/bluebubbles/package.json +1 -1
  249. package/extensions/copilot-proxy/package.json +1 -1
  250. package/extensions/diagnostics-otel/package.json +1 -1
  251. package/extensions/discord/package.json +1 -1
  252. package/extensions/feishu/package.json +1 -1
  253. package/extensions/google-antigravity-auth/package.json +1 -1
  254. package/extensions/google-gemini-cli-auth/package.json +1 -1
  255. package/extensions/googlechat/package.json +1 -1
  256. package/extensions/imessage/package.json +1 -1
  257. package/extensions/irc/package.json +1 -1
  258. package/extensions/learning-loop/package.json +1 -1
  259. package/extensions/line/package.json +1 -1
  260. package/extensions/llm-task/package.json +1 -1
  261. package/extensions/matrix/CHANGELOG.md +12 -0
  262. package/extensions/matrix/package.json +1 -1
  263. package/extensions/mattermost/package.json +1 -1
  264. package/extensions/memory-core/package.json +1 -1
  265. package/extensions/memory-lancedb/package.json +1 -1
  266. package/extensions/minimax-portal-auth/package.json +1 -1
  267. package/extensions/msteams/CHANGELOG.md +12 -0
  268. package/extensions/msteams/package.json +1 -1
  269. package/extensions/nextcloud-talk/package.json +1 -1
  270. package/extensions/nostr/CHANGELOG.md +12 -0
  271. package/extensions/nostr/package.json +1 -1
  272. package/extensions/open-prose/package.json +1 -1
  273. package/extensions/outlook/package.json +1 -1
  274. package/extensions/pipeline/package.json +1 -1
  275. package/extensions/signal/package.json +1 -1
  276. package/extensions/slack/package.json +1 -1
  277. package/extensions/telegram/package.json +1 -1
  278. package/extensions/tlon/package.json +1 -1
  279. package/extensions/twitch/CHANGELOG.md +12 -0
  280. package/extensions/twitch/package.json +1 -1
  281. package/extensions/voice-call/CHANGELOG.md +12 -0
  282. package/extensions/voice-call/package.json +1 -1
  283. package/extensions/whatsapp/package.json +1 -1
  284. package/extensions/zalo/CHANGELOG.md +12 -0
  285. package/extensions/zalo/package.json +1 -1
  286. package/extensions/zalouser/CHANGELOG.md +12 -0
  287. package/extensions/zalouser/package.json +1 -1
  288. package/package.json +1 -1
  289. package/skills/long-task/SKILL.md +57 -0
  290. package/skills/long-task/scripts/detach-task.sh +135 -0
  291. package/dist/register.configure-D-XV6_Nb.js +0 -148
  292. package/dist/web-CfVd3Mhp.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
  /**
@@ -28830,6 +28830,77 @@ function getHistoryLimitFromSessionKey(sessionKey, config) {
28830
28830
  */
28831
28831
  const getDmHistoryLimitFromSessionKey = getHistoryLimitFromSessionKey;
28832
28832
 
28833
+ //#endregion
28834
+ //#region src/agents/pi-embedded-runner/long-task-prompt.ts
28835
+ const SCRIPT_REL_PATH = "skills/long-task/scripts/detach-task.sh";
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
+ */
28852
+ async function resolveDetachScriptPath(params) {
28853
+ if (cachedScriptPath !== void 0) return cachedScriptPath;
28854
+ const packageRoot = await resolveSymiPackageRoot({
28855
+ cwd: params.cwd,
28856
+ argv1: params.argv1,
28857
+ moduleUrl: params.moduleUrl
28858
+ });
28859
+ if (!packageRoot) {
28860
+ cachedScriptPath = null;
28861
+ return null;
28862
+ }
28863
+ const candidate = path.join(packageRoot, SCRIPT_REL_PATH);
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;
28875
+ return cachedScriptPath;
28876
+ }
28877
+ async function buildLongTaskPromptSuffix(params) {
28878
+ const scriptPath = await resolveDetachScriptPath(params);
28879
+ if (!scriptPath) return "";
28880
+ return "\n\n" + [
28881
+ "LONG-RUNNING TASK PATTERN:",
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.",
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.",
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."
28901
+ ].join("\n");
28902
+ }
28903
+
28833
28904
  //#endregion
28834
28905
  //#region src/agents/pi-embedded-runner/runs.ts
28835
28906
  const ACTIVE_EMBEDDED_RUNS = /* @__PURE__ */ new Map();
@@ -28991,7 +29062,7 @@ async function prewarmSessionFile(sessionFile) {
28991
29062
  if (!isSessionManagerCacheEnabled()) return;
28992
29063
  if (isSessionManagerCached(sessionFile)) return;
28993
29064
  try {
28994
- const handle = await fs$1.open(sessionFile, "r");
29065
+ const handle = await fsPromises.open(sessionFile, "r");
28995
29066
  try {
28996
29067
  const buffer = Buffer$1.alloc(4096);
28997
29068
  await handle.read(buffer, 0, buffer.length, 0);
@@ -29025,7 +29096,7 @@ async function prepareSessionManagerForRun(params) {
29025
29096
  return;
29026
29097
  }
29027
29098
  if (params.hadSessionFile && header && !hasAssistant) {
29028
- await fs$1.writeFile(params.sessionFile, "", "utf-8");
29099
+ await fsPromises.writeFile(params.sessionFile, "", "utf-8");
29029
29100
  sm.fileEntries = [header];
29030
29101
  sm.byId?.clear?.();
29031
29102
  sm.labelsById?.clear?.();
@@ -29670,7 +29741,7 @@ async function runEmbeddedAttempt(params) {
29670
29741
  const prevCwd = process.cwd();
29671
29742
  const runAbortController = new AbortController();
29672
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"}`);
29673
- await fs$1.mkdir(resolvedWorkspace, { recursive: true });
29744
+ await fsPromises.mkdir(resolvedWorkspace, { recursive: true });
29674
29745
  const sandboxSessionKey = params.sessionKey?.trim() || params.sessionId;
29675
29746
  const sandbox = await resolveSandboxContext({
29676
29747
  config: params.config,
@@ -29678,7 +29749,7 @@ async function runEmbeddedAttempt(params) {
29678
29749
  workspaceDir: resolvedWorkspace
29679
29750
  });
29680
29751
  const effectiveWorkspace = sandbox?.enabled ? sandbox.workspaceAccess === "rw" ? resolvedWorkspace : sandbox.workspaceDir : resolvedWorkspace;
29681
- await fs$1.mkdir(effectiveWorkspace, { recursive: true });
29752
+ await fsPromises.mkdir(effectiveWorkspace, { recursive: true });
29682
29753
  let restoreSkillEnv;
29683
29754
  process.chdir(effectiveWorkspace);
29684
29755
  try {
@@ -29895,7 +29966,12 @@ async function runEmbeddedAttempt(params) {
29895
29966
  const profileModelKey = params.modelId ?? "";
29896
29967
  const modelProfile = resolveModelProfile(profileModelKey, params.config?.models?.profiles);
29897
29968
  log$7.debug(`[profile] resolved: modelId=${profileModelKey} → profile=${modelProfile.label} validateToolArgs=${modelProfile.filters?.validateToolArgs ?? false}`);
29898
- const systemPromptText = createSystemPromptOverride(appendPrompt + (modelProfile.promptAdditions.length > 0 ? "\n\n" + modelProfile.promptAdditions.join("\n") : ""))();
29969
+ const profilePromptSuffix = modelProfile.promptAdditions.length > 0 ? "\n\n" + modelProfile.promptAdditions.join("\n") : "";
29970
+ const systemPromptText = createSystemPromptOverride(appendPrompt + await buildLongTaskPromptSuffix({
29971
+ argv1: process.argv[1],
29972
+ cwd: process.cwd(),
29973
+ moduleUrl: import.meta.url
29974
+ }) + profilePromptSuffix)();
29899
29975
  const sessionLock = await acquireSessionWriteLock({
29900
29976
  sessionFile: params.sessionFile,
29901
29977
  maxHoldMs: resolveSessionLockMaxHoldFromTimeout({ timeoutMs: params.timeoutMs })
@@ -29908,7 +29984,7 @@ async function runEmbeddedAttempt(params) {
29908
29984
  sessionFile: params.sessionFile,
29909
29985
  warn: (message) => log$7.warn(message)
29910
29986
  });
29911
- const hadSessionFile = await fs$1.stat(params.sessionFile).then(() => true).catch(() => false);
29987
+ const hadSessionFile = await fsPromises.stat(params.sessionFile).then(() => true).catch(() => false);
29912
29988
  const transcriptPolicy = resolveTranscriptPolicy({
29913
29989
  modelApi: params.model?.api,
29914
29990
  provider: params.provider,
@@ -30980,7 +31056,7 @@ async function runEmbeddedPiAgent(params) {
30980
31056
  }
30981
31057
  runLoopIterations += 1;
30982
31058
  attemptedThinking.add(thinkLevel);
30983
- await fs$1.mkdir(resolvedWorkspace, { recursive: true });
31059
+ await fsPromises.mkdir(resolvedWorkspace, { recursive: true });
30984
31060
  const prompt = provider === "anthropic" ? scrubAnthropicRefusalMagic(params.prompt) : params.prompt;
30985
31061
  const attempt = await runEmbeddedAttempt({
30986
31062
  sessionId: params.sessionId,
@@ -31704,27 +31780,27 @@ async function runAgentTurn(params) {
31704
31780
  function createDefaultDeps() {
31705
31781
  return {
31706
31782
  sendMessageWhatsApp: async (...args) => {
31707
- const { sendMessageWhatsApp } = await import("./web-CfVd3Mhp.js");
31783
+ const { sendMessageWhatsApp } = await import("./web-sefqR11J.js");
31708
31784
  return await sendMessageWhatsApp(...args);
31709
31785
  },
31710
31786
  sendMessageTelegram: async (...args) => {
31711
- const { sendMessageTelegram } = await import("./send-B3RdXvjC.js").then((n) => n.l);
31787
+ const { sendMessageTelegram } = await import("./send-DT-5buW5.js").then((n) => n.l);
31712
31788
  return await sendMessageTelegram(...args);
31713
31789
  },
31714
31790
  sendMessageDiscord: async (...args) => {
31715
- const { sendMessageDiscord } = await import("./send-CQVnyJyF.js").then((n) => n.t);
31791
+ const { sendMessageDiscord } = await import("./send-BVBCh27_.js").then((n) => n.t);
31716
31792
  return await sendMessageDiscord(...args);
31717
31793
  },
31718
31794
  sendMessageSlack: async (...args) => {
31719
- const { sendMessageSlack } = await import("./send-DVm0du0_.js").then((n) => n.n);
31795
+ const { sendMessageSlack } = await import("./send-CXFTeD_J.js").then((n) => n.n);
31720
31796
  return await sendMessageSlack(...args);
31721
31797
  },
31722
31798
  sendMessageSignal: async (...args) => {
31723
- const { sendMessageSignal } = await import("./send-Bm4ULEzh.js").then((n) => n.i);
31799
+ const { sendMessageSignal } = await import("./send-JWV62VbW.js").then((n) => n.i);
31724
31800
  return await sendMessageSignal(...args);
31725
31801
  },
31726
31802
  sendMessageIMessage: async (...args) => {
31727
- const { sendMessageIMessage } = await import("./send-9SapUCg7.js").then((n) => n.n);
31803
+ const { sendMessageIMessage } = await import("./send-DsSI8z3F.js").then((n) => n.n);
31728
31804
  return await sendMessageIMessage(...args);
31729
31805
  }
31730
31806
  };
@@ -32906,10 +32982,10 @@ function estimateDurationSeconds(pcm) {
32906
32982
  return pcm.length / (bytesPerSample * SAMPLE_RATE);
32907
32983
  }
32908
32984
  async function writeWavFile(pcm) {
32909
- const tempDir = await fs$1.mkdtemp(path.join(resolvePreferredSymiTmpDir(), "discord-voice-"));
32985
+ const tempDir = await fsPromises.mkdtemp(path.join(resolvePreferredSymiTmpDir(), "discord-voice-"));
32910
32986
  const filePath = path.join(tempDir, `segment-${randomUUID()}.wav`);
32911
32987
  const wav = buildWavBuffer(pcm);
32912
- await fs$1.writeFile(filePath, wav);
32988
+ await fsPromises.writeFile(filePath, wav);
32913
32989
  scheduleTempCleanup(tempDir);
32914
32990
  return {
32915
32991
  path: filePath,
@@ -32918,7 +32994,7 @@ async function writeWavFile(pcm) {
32918
32994
  }
32919
32995
  function scheduleTempCleanup(tempDir, delayMs = 1800 * 1e3) {
32920
32996
  setTimeout(() => {
32921
- fs$1.rm(tempDir, {
32997
+ fsPromises.rm(tempDir, {
32922
32998
  recursive: true,
32923
32999
  force: true
32924
33000
  }).catch((err) => {
@@ -36657,7 +36733,7 @@ function normalizeAllowList$2(list) {
36657
36733
  async function detectRemoteHostFromCliPath(cliPath) {
36658
36734
  try {
36659
36735
  const expanded = cliPath.startsWith("~") ? cliPath.replace(/^~/, process.env.HOME ?? "") : cliPath;
36660
- const content = await fs$1.readFile(expanded, "utf8");
36736
+ const content = await fsPromises.readFile(expanded, "utf8");
36661
36737
  const userHostMatch = content.match(/\bssh\b[^\n]*?\s+([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+)/);
36662
36738
  if (userHostMatch) return userHostMatch[1];
36663
36739
  return content.match(/\bssh\b[^\n]*?\s+([a-zA-Z][a-zA-Z0-9._-]*)\s+\S*\bimsg\b/)?.[1];
@@ -42872,7 +42948,7 @@ function readSlackExternalArgMenuToken(raw) {
42872
42948
  }
42873
42949
  let commandsRegistry;
42874
42950
  async function getCommandsRegistry() {
42875
- 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);
42876
42952
  return commandsRegistry;
42877
42953
  }
42878
42954
  function encodeSlackCommandArgValue(parts) {
@@ -43214,11 +43290,11 @@ async function registerSlackMonitorSlashCommands(params) {
43214
43290
  const channelName = channelInfo?.name;
43215
43291
  const roomLabel = channelName ? `#${channelName}` : `#${command.channel_id}`;
43216
43292
  const [{ resolveAgentRoute }, { finalizeInboundContext }, { dispatchReplyWithDispatcher }] = await Promise.all([
43217
- import("./resolve-route-BMoTaVAH.js").then((n) => n.r),
43293
+ import("./resolve-route-BcnaXYvh.js").then((n) => n.r),
43218
43294
  import("./inbound-context-CmmmT8IP.js").then((n) => n.n),
43219
43295
  Promise.resolve().then(() => provider_dispatcher_exports)
43220
43296
  ]);
43221
- 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)]);
43222
43298
  const route = resolveAgentRoute({
43223
43299
  cfg,
43224
43300
  channel: "slack",
@@ -43275,9 +43351,9 @@ async function registerSlackMonitorSlashCommands(params) {
43275
43351
  });
43276
43352
  const deliverSlashPayloads = async (replies) => {
43277
43353
  const [{ deliverSlackSlashReplies }, { resolveChunkMode }, { resolveMarkdownTableMode }] = await Promise.all([
43278
- import("./replies-BMqtgBhh.js").then((n) => n.r),
43354
+ import("./replies-Dy92jzrz.js").then((n) => n.r),
43279
43355
  import("./chunk-1dhPX1NK.js").then((n) => n.s),
43280
- import("./markdown-tables-CEbN0fEm.js").then((n) => n.t)
43356
+ import("./markdown-tables-ZwP14ydw.js").then((n) => n.t)
43281
43357
  ]);
43282
43358
  await deliverSlackSlashReplies({
43283
43359
  replies,
@@ -43330,7 +43406,7 @@ async function registerSlackMonitorSlashCommands(params) {
43330
43406
  let nativeCommands = [];
43331
43407
  if (nativeEnabled) {
43332
43408
  reg = await getCommandsRegistry();
43333
- 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 }) : [];
43334
43410
  nativeCommands = reg.listNativeCommandSpecsForConfig(cfg, {
43335
43411
  skillCommands,
43336
43412
  provider: "slack"
@@ -47969,7 +48045,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
47969
48045
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
47970
48046
  let preflightTranscript;
47971
48047
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
47972
- const { transcribeFirstAudio } = await import("./audio-preflight-CIiS5cfP.js");
48048
+ const { transcribeFirstAudio } = await import("./audio-preflight-mj-z_vQ6.js");
47973
48049
  preflightTranscript = await transcribeFirstAudio({
47974
48050
  ctx: {
47975
48051
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -49737,7 +49813,7 @@ function safeParseState(raw) {
49737
49813
  async function readTelegramUpdateOffset(params) {
49738
49814
  const filePath = resolveTelegramUpdateOffsetPath(params.accountId, params.env);
49739
49815
  try {
49740
- return safeParseState(await fs$1.readFile(filePath, "utf-8"))?.lastUpdateId ?? null;
49816
+ return safeParseState(await fsPromises.readFile(filePath, "utf-8"))?.lastUpdateId ?? null;
49741
49817
  } catch (err) {
49742
49818
  if (err.code === "ENOENT") return null;
49743
49819
  return null;
@@ -49746,7 +49822,7 @@ async function readTelegramUpdateOffset(params) {
49746
49822
  async function writeTelegramUpdateOffset(params) {
49747
49823
  const filePath = resolveTelegramUpdateOffsetPath(params.accountId, params.env);
49748
49824
  const dir = path.dirname(filePath);
49749
- await fs$1.mkdir(dir, {
49825
+ await fsPromises.mkdir(dir, {
49750
49826
  recursive: true,
49751
49827
  mode: 448
49752
49828
  });
@@ -49755,14 +49831,14 @@ async function writeTelegramUpdateOffset(params) {
49755
49831
  version: STORE_VERSION,
49756
49832
  lastUpdateId: params.updateId
49757
49833
  };
49758
- await fs$1.writeFile(tmp, `${JSON.stringify(payload, null, 2)}\n`, { encoding: "utf-8" });
49759
- await fs$1.chmod(tmp, 384);
49760
- 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);
49761
49837
  }
49762
49838
  async function deleteTelegramUpdateOffset(params) {
49763
49839
  const filePath = resolveTelegramUpdateOffsetPath(params.accountId, params.env);
49764
49840
  try {
49765
- await fs$1.unlink(filePath);
49841
+ await fsPromises.unlink(filePath);
49766
49842
  } catch (err) {
49767
49843
  if (err.code === "ENOENT") return;
49768
49844
  throw err;
@@ -50123,23 +50199,23 @@ let webLoginQrPromise = null;
50123
50199
  let webChannelPromise = null;
50124
50200
  let whatsappActionsPromise = null;
50125
50201
  function loadWebOutbound() {
50126
- webOutboundPromise ??= import("./outbound-wnv03tb3.js").then((n) => n.t);
50202
+ webOutboundPromise ??= import("./outbound-_Ir3M05f.js").then((n) => n.t);
50127
50203
  return webOutboundPromise;
50128
50204
  }
50129
50205
  function loadWebLogin() {
50130
- webLoginPromise ??= import("./login-DODfJ3Dn.js").then((n) => n.n);
50206
+ webLoginPromise ??= import("./login-CnjdNmGD.js").then((n) => n.n);
50131
50207
  return webLoginPromise;
50132
50208
  }
50133
50209
  function loadWebLoginQr() {
50134
- webLoginQrPromise ??= import("./login-qr-CBRxijIg.js");
50210
+ webLoginQrPromise ??= import("./login-qr-DUf6CM0M.js");
50135
50211
  return webLoginQrPromise;
50136
50212
  }
50137
50213
  function loadWebChannel() {
50138
- webChannelPromise ??= import("./web-CfVd3Mhp.js");
50214
+ webChannelPromise ??= import("./web-sefqR11J.js");
50139
50215
  return webChannelPromise;
50140
50216
  }
50141
50217
  function loadWhatsAppActions() {
50142
- whatsappActionsPromise ??= import("./whatsapp-actions-ChO_shrk.js");
50218
+ whatsappActionsPromise ??= import("./whatsapp-actions-CqXxtCoj.js");
50143
50219
  return whatsappActionsPromise;
50144
50220
  }
50145
50221
  function createPluginRuntime() {
@@ -50906,7 +50982,7 @@ function resolvePluginTools(params) {
50906
50982
  //#endregion
50907
50983
  //#region src/agents/apply-patch-update.ts
50908
50984
  async function defaultReadFile(filePath) {
50909
- return fs$1.readFile(filePath, "utf8");
50985
+ return fsPromises.readFile(filePath, "utf8");
50910
50986
  }
50911
50987
  async function applyUpdateHunk(filePath, chunks, options) {
50912
50988
  const originalLines = (await (options?.readFile ?? defaultReadFile)(filePath).catch((err) => {
@@ -51150,10 +51226,10 @@ function resolvePatchFileOps(options) {
51150
51226
  };
51151
51227
  }
51152
51228
  return {
51153
- readFile: (filePath) => fs$1.readFile(filePath, "utf8"),
51154
- writeFile: (filePath, content) => fs$1.writeFile(filePath, content, "utf8"),
51155
- remove: (filePath) => fs$1.rm(filePath),
51156
- 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(() => {})
51157
51233
  };
51158
51234
  }
51159
51235
  async function ensureDir(filePath, ops) {
@@ -51874,7 +51950,7 @@ async function resolveSandboxWorkdir(params) {
51874
51950
  cwd: process.cwd(),
51875
51951
  root: params.sandbox.workspaceDir
51876
51952
  });
51877
- 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");
51878
51954
  const relative = resolved.relative ? resolved.relative.split(path.sep).join(path.posix.sep) : "";
51879
51955
  const containerWorkdir = relative ? path.posix.join(params.sandbox.containerWorkdir, relative) : params.sandbox.containerWorkdir;
51880
51956
  return {
@@ -52855,13 +52931,13 @@ async function validateScriptFileForShellBleed(params) {
52855
52931
  cwd: params.workdir,
52856
52932
  root: params.workdir
52857
52933
  });
52858
- stat = await fs$1.stat(absPath);
52934
+ stat = await fsPromises.stat(absPath);
52859
52935
  } catch {
52860
52936
  return;
52861
52937
  }
52862
52938
  if (!stat.isFile()) return;
52863
52939
  if (stat.size > 512 * 1024) return;
52864
- const content = await fs$1.readFile(absPath, "utf-8");
52940
+ const content = await fsPromises.readFile(absPath, "utf-8");
52865
52941
  const first = /\$[A-Z_][A-Z0-9_]{1,}/g.exec(content);
52866
52942
  if (first) {
52867
52943
  const idx = first.index;
@@ -55535,7 +55611,7 @@ async function readJsonlFromPath(jsonlPath) {
55535
55611
  if (shouldLogVerbose()) logVerbose(`Blocked canvas jsonlPath outside allowed roots: ${resolved}`);
55536
55612
  throw new Error("jsonlPath outside allowed roots");
55537
55613
  }
55538
- const canonical = await fs$1.realpath(resolved).catch(() => resolved);
55614
+ const canonical = await fsPromises.realpath(resolved).catch(() => resolved);
55539
55615
  if (!isInboundPathAllowed({
55540
55616
  filePath: canonical,
55541
55617
  roots
@@ -55543,7 +55619,7 @@ async function readJsonlFromPath(jsonlPath) {
55543
55619
  if (shouldLogVerbose()) logVerbose(`Blocked canvas jsonlPath outside allowed roots: ${canonical}`);
55544
55620
  throw new Error("jsonlPath outside allowed roots");
55545
55621
  }
55546
- return await fs$1.readFile(canonical, "utf8");
55622
+ return await fsPromises.readFile(canonical, "utf8");
55547
55623
  }
55548
55624
  const CanvasToolSchema = Type.Object({
55549
55625
  action: stringEnum(CANVAS_ACTIONS),
@@ -56323,27 +56399,27 @@ function resolveRestartSentinelPath(env = process.env) {
56323
56399
  }
56324
56400
  async function writeRestartSentinel(payload, env = process.env) {
56325
56401
  const filePath = resolveRestartSentinelPath(env);
56326
- await fs$1.mkdir(path.dirname(filePath), { recursive: true });
56402
+ await fsPromises.mkdir(path.dirname(filePath), { recursive: true });
56327
56403
  const data = {
56328
56404
  version: 1,
56329
56405
  payload
56330
56406
  };
56331
- 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");
56332
56408
  return filePath;
56333
56409
  }
56334
56410
  async function readRestartSentinel(env = process.env) {
56335
56411
  const filePath = resolveRestartSentinelPath(env);
56336
56412
  try {
56337
- const raw = await fs$1.readFile(filePath, "utf-8");
56413
+ const raw = await fsPromises.readFile(filePath, "utf-8");
56338
56414
  let parsed;
56339
56415
  try {
56340
56416
  parsed = JSON.parse(raw);
56341
56417
  } catch {
56342
- await fs$1.unlink(filePath).catch(() => {});
56418
+ await fsPromises.unlink(filePath).catch(() => {});
56343
56419
  return null;
56344
56420
  }
56345
56421
  if (!parsed || parsed.version !== 1 || !parsed.payload) {
56346
- await fs$1.unlink(filePath).catch(() => {});
56422
+ await fsPromises.unlink(filePath).catch(() => {});
56347
56423
  return null;
56348
56424
  }
56349
56425
  return parsed;
@@ -56355,7 +56431,7 @@ async function consumeRestartSentinel(env = process.env) {
56355
56431
  const filePath = resolveRestartSentinelPath(env);
56356
56432
  const parsed = await readRestartSentinel(env);
56357
56433
  if (!parsed) return null;
56358
- await fs$1.unlink(filePath).catch(() => {});
56434
+ await fsPromises.unlink(filePath).catch(() => {});
56359
56435
  return parsed;
56360
56436
  }
56361
56437
  function formatRestartSentinelMessage(payload) {
@@ -57462,7 +57538,7 @@ async function hydrateAttachmentPayload(params) {
57462
57538
  accountId: params.accountId
57463
57539
  }),
57464
57540
  sandboxValidated: true,
57465
- readFile: (filePath) => fs$1.readFile(filePath)
57541
+ readFile: (filePath) => fsPromises.readFile(filePath)
57466
57542
  });
57467
57543
  params.args.buffer = media.buffer.toString("base64");
57468
57544
  if (!contentTypeParam && media.contentType) params.args.contentType = media.contentType;
@@ -65014,7 +65090,7 @@ async function compactEmbeddedPiSessionDirect(params) {
65014
65090
  } catch (err) {
65015
65091
  return fail(describeUnknownError(err));
65016
65092
  }
65017
- await fs$1.mkdir(resolvedWorkspace, { recursive: true });
65093
+ await fsPromises.mkdir(resolvedWorkspace, { recursive: true });
65018
65094
  const sandboxSessionKey = params.sessionKey?.trim() || params.sessionId;
65019
65095
  const sandbox = await resolveSandboxContext({
65020
65096
  config: params.config,
@@ -65022,7 +65098,7 @@ async function compactEmbeddedPiSessionDirect(params) {
65022
65098
  workspaceDir: resolvedWorkspace
65023
65099
  });
65024
65100
  const effectiveWorkspace = sandbox?.enabled ? sandbox.workspaceAccess === "rw" ? resolvedWorkspace : sandbox.workspaceDir : resolvedWorkspace;
65025
- await fs$1.mkdir(effectiveWorkspace, { recursive: true });
65101
+ await fsPromises.mkdir(effectiveWorkspace, { recursive: true });
65026
65102
  await ensureSessionHeader({
65027
65103
  sessionFile: params.sessionFile,
65028
65104
  sessionId: params.sessionId,
@@ -69177,7 +69253,7 @@ async function handleCommands(params) {
69177
69253
  try {
69178
69254
  const messages = [];
69179
69255
  if (sessionFile) {
69180
- const content = await fs$1.readFile(sessionFile, "utf-8");
69256
+ const content = await fsPromises.readFile(sessionFile, "utf-8");
69181
69257
  for (const line of content.split("\n")) {
69182
69258
  if (!line.trim()) continue;
69183
69259
  try {
@@ -72838,7 +72914,7 @@ async function deliverSessionMaintenanceWarning(params) {
72838
72914
  return;
72839
72915
  }
72840
72916
  try {
72841
- const { deliverOutboundPayloads } = await import("./deliver-B4KZ6-oZ.js").then((n) => n.n);
72917
+ const { deliverOutboundPayloads } = await import("./deliver-BYdNAEqj.js").then((n) => n.n);
72842
72918
  await deliverOutboundPayloads({
72843
72919
  cfg: params.cfg,
72844
72920
  channel,
@@ -73213,7 +73289,7 @@ async function stageSandboxMedia(params) {
73213
73289
  };
73214
73290
  try {
73215
73291
  const destDir = sandbox ? path.join(effectiveWorkspaceDir, "media", "inbound") : effectiveWorkspaceDir;
73216
- await fs$1.mkdir(destDir, { recursive: true });
73292
+ await fsPromises.mkdir(destDir, { recursive: true });
73217
73293
  const remoteAttachmentRoots = resolveIMessageRemoteAttachmentRoots({
73218
73294
  cfg,
73219
73295
  accountId: ctx.AccountId
@@ -73263,7 +73339,7 @@ async function stageSandboxMedia(params) {
73263
73339
  usedNames.add(fileName);
73264
73340
  const dest = path.join(destDir, fileName);
73265
73341
  if (ctx.MediaRemoteHost) await scpFile(ctx.MediaRemoteHost, source, dest);
73266
- else await fs$1.copyFile(source, dest);
73342
+ else await fsPromises.copyFile(source, dest);
73267
73343
  const stagedPath = sandbox ? path.posix.join("media", "inbound", fileName) : dest;
73268
73344
  staged.set(source, stagedPath);
73269
73345
  }