@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
@@ -1,11 +1,11 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { T as toWhatsappJid, V as getChildLogger, l as escapeRegExp } from "./utils-B-0b9bGM.js";
3
3
  import { t as createSubsystemLogger } from "./subsystem-D9vIQve0.js";
4
- import { i as loadConfig } from "./config-Dz95lSBW.js";
5
- import { n as resolveMarkdownTableMode } from "./markdown-tables-CEbN0fEm.js";
6
- import { a as loadWebMedia } from "./ir-DZam9q5M.js";
4
+ import { i as loadConfig } from "./config-tNauHpdq.js";
5
+ import { n as resolveMarkdownTableMode } from "./markdown-tables-ZwP14ydw.js";
6
+ import { a as loadWebMedia } from "./ir-Dt4hOzxG.js";
7
7
  import { n as normalizePollInput } from "./polls-DhH5YkzN.js";
8
- import { t as convertMarkdownTables } from "./tables-BEzT0Da4.js";
8
+ import { t as convertMarkdownTables } from "./tables-C38rzF6E.js";
9
9
  import { n as requireActiveWebListener } from "./active-listener-SKkHHqlN.js";
10
10
  import { randomUUID } from "node:crypto";
11
11
 
@@ -1,5 +1,5 @@
1
- import { r as saveMediaBuffer } from "./store-r1DJSDq-.js";
2
- import { a as loadWebMedia } from "./ir-DZam9q5M.js";
1
+ import { r as saveMediaBuffer } from "./store-DvtcmOKj.js";
2
+ import { a as loadWebMedia } from "./ir-Dt4hOzxG.js";
3
3
 
4
4
  //#region src/media/outbound-attachment.ts
5
5
  async function resolveOutboundAttachmentFromUrl(mediaUrl, maxBytes, options) {
@@ -3,21 +3,21 @@ import { B as theme } from "./utils-B-0b9bGM.js";
3
3
  import "./registry-Cja8eT7G.js";
4
4
  import { f as defaultRuntime } from "./subsystem-D9vIQve0.js";
5
5
  import "./exec-CWkblSrI.js";
6
- import "./agent-scope-CgUHAtCo.js";
7
- import "./model-selection-CyFvYcRt.js";
6
+ import "./agent-scope-BRwEc2pG.js";
7
+ import "./model-selection-X1oLh3CE.js";
8
8
  import "./github-copilot-token-DAu1a6BX.js";
9
9
  import { t as formatCliCommand } from "./command-format-COaS-S7B.js";
10
10
  import "./boolean-BsqeuxE6.js";
11
11
  import "./env-DPCHYPeH.js";
12
- import { i as loadConfig } from "./config-Dz95lSBW.js";
12
+ import { i as loadConfig } from "./config-tNauHpdq.js";
13
13
  import "./manifest-registry-C4BxOMWX.js";
14
- import { r as normalizeChannelId } from "./plugins-DKDeQZF0.js";
15
- import "./accounts-DDuIpcln.js";
16
- import "./bindings-DFaVVCsf.js";
14
+ import { r as normalizeChannelId } from "./plugins-BAyxWQSz.js";
15
+ import "./accounts-Cd816n6l.js";
16
+ import "./bindings-ChzePa8q.js";
17
17
  import "./logging-w5jq5901.js";
18
- import { l as listPairingChannels, n as approveChannelPairingCode, r as listChannelPairingRequests, u as notifyPairingApproved } from "./pairing-store-CK726Dzq.js";
18
+ import { l as listPairingChannels, n as approveChannelPairingCode, r as listChannelPairingRequests, u as notifyPairingApproved } from "./pairing-store-B8ktu-6j.js";
19
19
  import { t as formatDocsLink } from "./links-3i1eUga4.js";
20
- import { t as resolvePairingIdLabel } from "./pairing-labels-DyXoD1DS.js";
20
+ import { t as resolvePairingIdLabel } from "./pairing-labels-Dxb898X5.js";
21
21
  import { t as renderTable } from "./table-BKlH0YlA.js";
22
22
 
23
23
  //#region src/cli/pairing-cli.ts
@@ -1,4 +1,4 @@
1
- import { c as getPairingAdapter } from "./pairing-store-CK726Dzq.js";
1
+ import { c as getPairingAdapter } from "./pairing-store-B8ktu-6j.js";
2
2
 
3
3
  //#region src/pairing/pairing-labels.ts
4
4
  function resolvePairingIdLabel(channel) {
@@ -1,7 +1,7 @@
1
1
  import { g as resolveStateDir, m as resolveOAuthDir, y as resolveRequiredHomeDir } from "./paths-Cqn-zk3M.js";
2
2
  import { b as safeParseJson } from "./utils-B-0b9bGM.js";
3
- import { It as withFileLock$1 } from "./model-selection-CyFvYcRt.js";
4
- import { n as listChannelPlugins, t as getChannelPlugin } from "./plugins-DKDeQZF0.js";
3
+ import { It as withFileLock$1 } from "./model-selection-X1oLh3CE.js";
4
+ import { n as listChannelPlugins, t as getChannelPlugin } from "./plugins-BAyxWQSz.js";
5
5
  import fs from "node:fs";
6
6
  import os from "node:os";
7
7
  import path from "node:path";
@@ -1,13 +1,13 @@
1
1
  import { g as resolveStateDir } from "./paths-Cqn-zk3M.js";
2
2
  import { t as safeEqualSecret } from "./secret-equal-D7A3Bol7.js";
3
3
  import path from "node:path";
4
- import fs from "node:fs/promises";
4
+ import fsPromises from "node:fs/promises";
5
5
  import { randomBytes, randomUUID } from "node:crypto";
6
6
 
7
7
  //#region src/infra/json-files.ts
8
8
  async function readJsonFile(filePath) {
9
9
  try {
10
- const raw = await fs.readFile(filePath, "utf8");
10
+ const raw = await fsPromises.readFile(filePath, "utf8");
11
11
  return JSON.parse(raw);
12
12
  } catch {
13
13
  return null;
@@ -16,15 +16,15 @@ async function readJsonFile(filePath) {
16
16
  async function writeJsonAtomic(filePath, value, options) {
17
17
  const mode = options?.mode ?? 384;
18
18
  const dir = path.dirname(filePath);
19
- await fs.mkdir(dir, { recursive: true });
19
+ await fsPromises.mkdir(dir, { recursive: true });
20
20
  const tmp = `${filePath}.${randomUUID()}.tmp`;
21
- await fs.writeFile(tmp, JSON.stringify(value, null, 2), "utf8");
21
+ await fsPromises.writeFile(tmp, JSON.stringify(value, null, 2), "utf8");
22
22
  try {
23
- await fs.chmod(tmp, mode);
23
+ await fsPromises.chmod(tmp, mode);
24
24
  } catch {}
25
- await fs.rename(tmp, filePath);
25
+ await fsPromises.rename(tmp, filePath);
26
26
  try {
27
- await fs.chmod(filePath, mode);
27
+ await fsPromises.chmod(filePath, mode);
28
28
  } catch {}
29
29
  }
30
30
  function createAsyncLock() {
@@ -1,5 +1,5 @@
1
1
  import { X as resolvePreferredSymiTmpDir } from "./utils-B-0b9bGM.js";
2
- import { n as openFileWithinRoot, t as SafeOpenError } from "./fs-safe-CUjO1ca2.js";
2
+ import { n as openFileWithinRoot, t as SafeOpenError } from "./fs-safe-CTDvb1DF.js";
3
3
  import path from "node:path";
4
4
 
5
5
  //#region src/browser/paths.ts
@@ -1,13 +1,13 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { At as ensureAuthProfileStore, l as normalizeProviderId, zt as normalizeOptionalSecretInput } from "./model-selection-CyFvYcRt.js";
2
+ import { At as ensureAuthProfileStore, l as normalizeProviderId, zt as normalizeOptionalSecretInput } from "./model-selection-X1oLh3CE.js";
3
3
  import path from "node:path";
4
- import fs from "node:fs/promises";
4
+ import fsPromises from "node:fs/promises";
5
5
 
6
6
  //#region src/agents/pi-auth-json.ts
7
7
  var pi_auth_json_exports = /* @__PURE__ */ __exportAll({ ensurePiAuthJsonFromAuthProfiles: () => ensurePiAuthJsonFromAuthProfiles });
8
8
  async function readAuthJson(filePath) {
9
9
  try {
10
- const raw = await fs.readFile(filePath, "utf8");
10
+ const raw = await fsPromises.readFile(filePath, "utf8");
11
11
  const parsed = JSON.parse(raw);
12
12
  if (!parsed || typeof parsed !== "object") return {};
13
13
  return parsed;
@@ -118,11 +118,11 @@ async function ensurePiAuthJsonFromAuthProfiles(agentDir, options) {
118
118
  wrote: false,
119
119
  authPath
120
120
  };
121
- await fs.mkdir(agentDir, {
121
+ await fsPromises.mkdir(agentDir, {
122
122
  recursive: true,
123
123
  mode: 448
124
124
  });
125
- await fs.writeFile(authPath, `${JSON.stringify(existing, null, 2)}\n`, { mode: 384 });
125
+ await fsPromises.writeFile(authPath, `${JSON.stringify(existing, null, 2)}\n`, { mode: 384 });
126
126
  return {
127
127
  wrote: true,
128
128
  authPath
@@ -45582,6 +45582,77 @@ function getHistoryLimitFromSessionKey(sessionKey, config) {
45582
45582
  */
45583
45583
  const getDmHistoryLimitFromSessionKey = getHistoryLimitFromSessionKey;
45584
45584
 
45585
+ //#endregion
45586
+ //#region src/agents/pi-embedded-runner/long-task-prompt.ts
45587
+ const SCRIPT_REL_PATH = "skills/long-task/scripts/detach-task.sh";
45588
+ let cachedScriptPath;
45589
+ function isExecutable(candidatePath) {
45590
+ try {
45591
+ fs.accessSync(candidatePath, fs.constants.X_OK);
45592
+ return true;
45593
+ } catch {
45594
+ return false;
45595
+ }
45596
+ }
45597
+ /**
45598
+ * Ensure the script is present AND has the exec bit. npm usually preserves
45599
+ * mode 100755 on pack/install, but a subset of filesystems (FAT32, some
45600
+ * container mounts) silently drop it. If the bit is missing, we try to set
45601
+ * it; on failure we return null rather than emit a prompt that would break
45602
+ * when the model tries to exec the script.
45603
+ */
45604
+ async function resolveDetachScriptPath(params) {
45605
+ if (cachedScriptPath !== void 0) return cachedScriptPath;
45606
+ const packageRoot = await resolveSymiPackageRoot({
45607
+ cwd: params.cwd,
45608
+ argv1: params.argv1,
45609
+ moduleUrl: params.moduleUrl
45610
+ });
45611
+ if (!packageRoot) {
45612
+ cachedScriptPath = null;
45613
+ return null;
45614
+ }
45615
+ const candidate = path.join(packageRoot, SCRIPT_REL_PATH);
45616
+ if (!fs.existsSync(candidate)) {
45617
+ cachedScriptPath = null;
45618
+ return null;
45619
+ }
45620
+ if (!isExecutable(candidate)) try {
45621
+ fs.chmodSync(candidate, 493);
45622
+ } catch {
45623
+ cachedScriptPath = null;
45624
+ return null;
45625
+ }
45626
+ cachedScriptPath = candidate;
45627
+ return cachedScriptPath;
45628
+ }
45629
+ async function buildLongTaskPromptSuffix(params) {
45630
+ const scriptPath = await resolveDetachScriptPath(params);
45631
+ if (!scriptPath) return "";
45632
+ return "\n\n" + [
45633
+ "LONG-RUNNING TASK PATTERN:",
45634
+ "- 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.",
45635
+ "- 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.",
45636
+ `- Detach pattern: exec \`${scriptPath} <task-id> <workdir> <command...>\`.`,
45637
+ " • task-id: alphanumeric + dot/dash/underscore, 1–60 chars, must not start with '.' or '-'.",
45638
+ " • workdir: absolute path you own (e.g. the agent workspace).",
45639
+ " • Script spawns under setsid+nohup+disown, writes task-<id>.{pid,cmd,started,log,status} files.",
45640
+ "- 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.",
45641
+ "- Register a cron monitor using the `cron` tool with action=add. Required fields:",
45642
+ " • schedule: { kind: \"interval\", ms: 180000 } (every 3 minutes; minimum 60000)",
45643
+ " • payload: { kind: \"agent\", sessionTarget: \"isolated\", text: <job prompt> }",
45644
+ " 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.",
45645
+ "- Safe status read (inside the monitor turn):",
45646
+ " `status=$(cat \"<workdir>/task-<id>.status\" 2>/dev/null || echo missing)`",
45647
+ " 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.",
45648
+ "- Monitor responsibilities each tick:",
45649
+ " • If status begins with `running`: tail -n 20 <log>, post a one-sentence progress line.",
45650
+ " • If status begins with `complete`: post a final summary with rc and tail, then call cron action=remove on this job id.",
45651
+ " • If status begins with `aborted`: post a failure summary with signal and tail, then call cron action=remove.",
45652
+ " • Never leave stale monitors running after the task finishes."
45653
+ ].join("\n");
45654
+ }
45655
+
45585
45656
  //#endregion
45586
45657
  //#region src/agents/pi-embedded-runner/runs.ts
45587
45658
  const ACTIVE_EMBEDDED_RUNS = /* @__PURE__ */ new Map();
@@ -46632,7 +46703,12 @@ async function runEmbeddedAttempt(params) {
46632
46703
  const profileModelKey = params.modelId ?? "";
46633
46704
  const modelProfile = resolveModelProfile(profileModelKey, params.config?.models?.profiles);
46634
46705
  log$5.debug(`[profile] resolved: modelId=${profileModelKey} → profile=${modelProfile.label} validateToolArgs=${modelProfile.filters?.validateToolArgs ?? false}`);
46635
- const systemPromptText = createSystemPromptOverride(appendPrompt + (modelProfile.promptAdditions.length > 0 ? "\n\n" + modelProfile.promptAdditions.join("\n") : ""))();
46706
+ const profilePromptSuffix = modelProfile.promptAdditions.length > 0 ? "\n\n" + modelProfile.promptAdditions.join("\n") : "";
46707
+ const systemPromptText = createSystemPromptOverride(appendPrompt + await buildLongTaskPromptSuffix({
46708
+ argv1: process.argv[1],
46709
+ cwd: process.cwd(),
46710
+ moduleUrl: import.meta.url
46711
+ }) + profilePromptSuffix)();
46636
46712
  const sessionLock = await acquireSessionWriteLock({
46637
46713
  sessionFile: params.sessionFile,
46638
46714
  maxHoldMs: resolveSessionLockMaxHoldFromTimeout({ timeoutMs: params.timeoutMs })
@@ -60912,7 +60988,7 @@ function isVoiceChannelType(type) {
60912
60988
  function createDefaultDeps() {
60913
60989
  return {
60914
60990
  sendMessageWhatsApp: async (...args) => {
60915
- const { sendMessageWhatsApp } = await import("./web-CJk-lv93.js");
60991
+ const { sendMessageWhatsApp } = await import("./web-DKwOxo8E.js");
60916
60992
  return await sendMessageWhatsApp(...args);
60917
60993
  },
60918
60994
  sendMessageTelegram: async (...args) => {
@@ -76192,7 +76268,7 @@ function loadWebLoginQr() {
76192
76268
  return webLoginQrPromise;
76193
76269
  }
76194
76270
  function loadWebChannel() {
76195
- webChannelPromise ??= import("./web-CJk-lv93.js");
76271
+ webChannelPromise ??= import("./web-DKwOxo8E.js");
76196
76272
  return webChannelPromise;
76197
76273
  }
76198
76274
  function loadWhatsAppActions() {
@@ -9,7 +9,7 @@ import { h as isPidAlive, m as resolveProcessScopedMap } from "./auth-profiles-q
9
9
  import { n as formatCliCommand } from "./env-BDXYbTKj.js";
10
10
  import { t as parseBooleanValue } from "./boolean-CE7i9tBR.js";
11
11
  import { _ as parseDurationMs, a as writeConfigFile, n as loadConfig, s as parseByteSize, t as createConfigIO } from "./config-B6OxYMgn.js";
12
- import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-BYOhnxTr.js";
12
+ import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-CbA-qnhp.js";
13
13
  import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-Bs0AW1g3.js";
14
14
  import { n as formatErrorMessage, t as extractErrorCode } from "./errors-XIsvXeC-.js";
15
15
  import { b as openFileWithinRoot, i as getImageMetadata, n as buildImageResizeSideGrid, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS, y as SafeOpenError } from "./image-ops-C7CauEK8.js";
@@ -933,7 +933,7 @@ function isModuleNotFoundError(err) {
933
933
  }
934
934
  async function loadPwAiModule(mode) {
935
935
  try {
936
- return await import("./pw-ai-pQoxTh-a.js");
936
+ return await import("./pw-ai--LDjnyuN.js");
937
937
  } catch (err) {
938
938
  if (mode === "soft") return null;
939
939
  if (isModuleNotFoundError(err)) return null;
@@ -3473,11 +3473,11 @@ function createProfileContext(opts, profile) {
3473
3473
  const userDataDir = resolveSymiUserDataDir(profile.name);
3474
3474
  const profileState = getProfileState();
3475
3475
  if (await isHttpReachable(300) && !profileState.running) try {
3476
- await (await import("./pw-ai-pQoxTh-a.js")).closePlaywrightBrowserConnection();
3476
+ await (await import("./pw-ai--LDjnyuN.js")).closePlaywrightBrowserConnection();
3477
3477
  } catch {}
3478
3478
  if (profileState.running) await stopRunningBrowser();
3479
3479
  try {
3480
- await (await import("./pw-ai-pQoxTh-a.js")).closePlaywrightBrowserConnection();
3480
+ await (await import("./pw-ai--LDjnyuN.js")).closePlaywrightBrowserConnection();
3481
3481
  } catch {}
3482
3482
  if (!fs.existsSync(userDataDir)) return {
3483
3483
  moved: false,
@@ -1,9 +1,9 @@
1
1
  import { E as truncateUtf16Safe } from "./utils-B-0b9bGM.js";
2
2
  import { s as normalizeThinkLevel } from "./thinking-EAliFiVK.js";
3
- import { s as formatSandboxToolPolicyBlockedMessage } from "./sandbox-B6N8cV4d.js";
4
- import { t as sanitizeContentBlocksImages } from "./tool-images-DvUBlqjX.js";
3
+ import { s as formatSandboxToolPolicyBlockedMessage } from "./sandbox-HZ_uilsn.js";
4
+ import { t as sanitizeContentBlocksImages } from "./tool-images-B-pqX3nX.js";
5
5
  import path from "node:path";
6
- import fs from "node:fs/promises";
6
+ import fsPromises from "node:fs/promises";
7
7
  import { createHash } from "node:crypto";
8
8
 
9
9
  //#region src/agents/pi-embedded-helpers/bootstrap.ts
@@ -101,10 +101,10 @@ function clampToBudget(content, budget) {
101
101
  async function ensureSessionHeader(params) {
102
102
  const file = params.sessionFile;
103
103
  try {
104
- await fs.stat(file);
104
+ await fsPromises.stat(file);
105
105
  return;
106
106
  } catch {}
107
- await fs.mkdir(path.dirname(file), { recursive: true });
107
+ await fsPromises.mkdir(path.dirname(file), { recursive: true });
108
108
  const entry = {
109
109
  type: "session",
110
110
  version: 2,
@@ -112,7 +112,7 @@ async function ensureSessionHeader(params) {
112
112
  timestamp: (/* @__PURE__ */ new Date()).toISOString(),
113
113
  cwd: params.cwd
114
114
  };
115
- await fs.writeFile(file, `${JSON.stringify(entry)}\n`, "utf-8");
115
+ await fsPromises.writeFile(file, `${JSON.stringify(entry)}\n`, "utf-8");
116
116
  }
117
117
  function buildBootstrapContextFiles(files, opts) {
118
118
  const maxChars = opts?.maxChars ?? DEFAULT_BOOTSTRAP_MAX_CHARS;
@@ -1,9 +1,9 @@
1
1
  import { C as resolveThreadParentSessionKey, l as resolveAgentIdFromSessionKey } from "./session-key-DCt45XZa.js";
2
- import { r as resolveAgentConfig } from "./agent-scope-CgUHAtCo.js";
2
+ import { r as resolveAgentConfig } from "./agent-scope-BRwEc2pG.js";
3
3
  import { l as normalizeMessageChannel } from "./message-channel-aT-I_DTX.js";
4
- import { z as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH } from "./config-Dz95lSBW.js";
5
- import { T as matchesAnyGlobPattern, w as compileGlobPatterns, x as normalizeToolName, y as expandToolGroups } from "./sandbox-B6N8cV4d.js";
6
- import { o as resolveChannelGroupToolsPolicy, t as getChannelDock } from "./dock-BhS32F6E.js";
4
+ import { z as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH } from "./config-tNauHpdq.js";
5
+ import { T as matchesAnyGlobPattern, w as compileGlobPatterns, x as normalizeToolName, y as expandToolGroups } from "./sandbox-HZ_uilsn.js";
6
+ import { o as resolveChannelGroupToolsPolicy, t as getChannelDock } from "./dock-BYiRZSgZ.js";
7
7
 
8
8
  //#region src/agents/sandbox-tool-policy.ts
9
9
  function unionAllow(base, extra) {
@@ -1,7 +1,7 @@
1
1
  import { d as isRecord } from "./utils-B-0b9bGM.js";
2
2
  import { o as getChatChannelMeta, s as listChatChannels, u as normalizeChatChannelId } from "./registry-Cja8eT7G.js";
3
- import { l as normalizeProviderId } from "./model-selection-CyFvYcRt.js";
4
- import { t as hasAnyWhatsAppAuth } from "./accounts-DDuIpcln.js";
3
+ import { l as normalizeProviderId } from "./model-selection-X1oLh3CE.js";
4
+ import { t as hasAnyWhatsAppAuth } from "./accounts-Cd816n6l.js";
5
5
  import { n as getChannelPluginCatalogEntry, r as listChannelPluginCatalogEntries } from "./catalog-NQ4pj9RI.js";
6
6
  import { t as ensurePluginAllowlisted } from "./plugins-allowlist-BjKJrQ0e.js";
7
7
 
@@ -2,7 +2,7 @@ import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { M as getActivePluginRegistry, o as createSubsystemLogger } from "./entry.js";
3
3
  import { c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-D-jRCY0d.js";
4
4
  import { i as loadConfig } from "./config-BNTB6qj8.js";
5
- import { m as loadSymiPlugins } from "./subagent-registry-BPwn3Qm7.js";
5
+ import { m as loadSymiPlugins } from "./subagent-registry-CzS4CfnV.js";
6
6
 
7
7
  //#region src/cli/plugin-registry.ts
8
8
  var plugin_registry_exports = /* @__PURE__ */ __exportAll({ ensurePluginRegistryLoaded: () => ensurePluginRegistryLoaded });
@@ -1,9 +1,9 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { ft as loadSymiPlugins } from "./reply-CjYJHt_H.js";
2
+ import { ft as loadSymiPlugins } from "./reply-CpNWtuU4.js";
3
3
  import { d as getActivePluginRegistry } from "./registry-Cja8eT7G.js";
4
4
  import { t as createSubsystemLogger } from "./subsystem-D9vIQve0.js";
5
- import { c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-CgUHAtCo.js";
6
- import { i as loadConfig } from "./config-Dz95lSBW.js";
5
+ import { c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-BRwEc2pG.js";
6
+ import { i as loadConfig } from "./config-tNauHpdq.js";
7
7
 
8
8
  //#region src/cli/plugin-registry.ts
9
9
  var plugin_registry_exports = /* @__PURE__ */ __exportAll({ ensurePluginRegistryLoaded: () => ensurePluginRegistryLoaded });
@@ -0,0 +1,5 @@
1
+ export declare function buildLongTaskPromptSuffix(params: {
2
+ argv1?: string;
3
+ cwd?: string;
4
+ moduleUrl?: string;
5
+ }): Promise<string>;
@@ -1,6 +1,6 @@
1
1
  import { a as buildGroupHistoryKey, n as DEFAULT_MAIN_KEY, r as buildAgentMainSessionKey, s as normalizeAgentId } from "./session-key-C_0eELjb.js";
2
2
  import { f as readWebSelfId, o as getWebAuthAgeMs, r as resolveWhatsAppAccount } from "./accounts-D9zGZU5t.js";
3
- import { E as enqueueSystemEvent, G as resolveMentionGating, W as shouldAckReactionForWhatsApp, X as buildHistoryContextFromEntries, Y as DEFAULT_GROUP_HISTORY_LIMIT, _ as resolveEnvelopeFormatOptions, c as computeBackoff, d as formatDurationPrecise, f as dispatchReplyWithBufferedBlockDispatcher, g as formatInboundEnvelope, h as resolveInboundDebounceMs, ht as createDedupeCache, l as sleepWithAbort, m as createInboundDebouncer, n as normalizeGroupActivation, nt as buildMentionRegexes, r as parseActivationCommand, rt as normalizeMentionText, t as getReplyFromConfig, tt as recordPendingHistoryEntryIfEnabled, u as buildPairingReply, v as hasControlCommand, y as shouldComputeCommandAuthorized } from "./reply-Bok_WQGW.js";
3
+ import { E as enqueueSystemEvent, G as resolveMentionGating, W as shouldAckReactionForWhatsApp, X as buildHistoryContextFromEntries, Y as DEFAULT_GROUP_HISTORY_LIMIT, _ as resolveEnvelopeFormatOptions, c as computeBackoff, d as formatDurationPrecise, f as dispatchReplyWithBufferedBlockDispatcher, g as formatInboundEnvelope, h as resolveInboundDebounceMs, ht as createDedupeCache, l as sleepWithAbort, m as createInboundDebouncer, n as normalizeGroupActivation, nt as buildMentionRegexes, r as parseActivationCommand, rt as normalizeMentionText, t as getReplyFromConfig, tt as recordPendingHistoryEntryIfEnabled, u as buildPairingReply, v as hasControlCommand, y as shouldComputeCommandAuthorized } from "./reply-4HEU7aDS.js";
4
4
  import { A as normalizeE164, B as toWhatsappJid, K as logVerbose, N as resolveJidToE164, O as isSelfChatMode, R as sleep, Y as shouldLogVerbose, k as jidToE164, s as normalizeChatChannelId, tt as getChildLogger, x as clamp } from "./registry--_pGht6S.js";
5
5
  import { n as loadConfig } from "./config-DdA6JiyD.js";
6
6
  import { i as defaultRuntime, t as createSubsystemLogger } from "./subsystem-Coz2AgU8.js";
@@ -1,6 +1,6 @@
1
1
  import { f as DEFAULT_ACCOUNT_ID, p as normalizeAccountId } from "./session-key-C_0eELjb.js";
2
2
  import { _ as createAccountListHelpers, i as resolveWhatsAppAuthDir, n as resolveDefaultWhatsAppAccountId, r as resolveWhatsAppAccount, t as listWhatsAppAccountIds } from "./accounts-D9zGZU5t.js";
3
- import { $ as clearHistoryEntriesIfEnabled, A as resolveDiscordUserAllowlist, B as logTypingFailure, C as stripMarkdown, Ct as unbindThreadBindingsBySessionKey, D as resolveSlackUserAllowlist, Dt as BLUEBUBBLES_ACTION_NAMES, Et as BLUEBUBBLES_ACTIONS, F as stringEnum, G as resolveMentionGating, H as removeAckReactionAfterReply, I as recordInboundSession, J as summarizeMapping, K as resolveMentionGatingWithBypass, L as resolveControlCommandGate, M as collectDiscordAuditChannelIds, N as formatDocsLink, O as resolveSlackChannelAllowlist, Ot as BLUEBUBBLES_GROUP_ACTIONS, P as optionalStringEnum, Q as clearHistoryEntries, R as logAckFailure, S as processLineMessage, St as listThreadBindingsBySessionKey, T as attachFooterText, Tt as resolveAllowlistMatchSimple, U as shouldAckReaction, V as createTypingCallbacks, W as shouldAckReactionForWhatsApp, Y as DEFAULT_GROUP_HISTORY_LIMIT, Z as buildPendingHistoryContextFromMap, _t as listDevicePairing, a as normalizeAccountId$1, at as isWSLEnv, bt as registerPluginHttpRoute, ct as DEFAULT_WEBHOOK_MAX_BODY_BYTES, dt as isRequestBodyLimitError, et as recordPendingHistoryEntry, ft as readJsonBodyWithLimit, gt as approveDevicePairing, ht as createDedupeCache, i as listLineAccountIds, it as isWSL2Sync, j as resolveDiscordChannelAllowlist, k as detectBinary, kt as CHANNEL_MESSAGE_ACTION_NAMES, lt as RequestBodyLimitError, mt as requestBodyErrorToText, o as resolveDefaultLineAccountId, ot as isWSLSync, pt as readRequestBodyWithLimit, q as mergeAllowlist, s as resolveLineAccount, st as DEFAULT_WEBHOOK_BODY_TIMEOUT_MS, tt as recordPendingHistoryEntryIfEnabled, ut as installRequestBodyLimitGuard, vt as rejectDevicePairing, w as createReceiptCard, wt as formatAllowlistMatchMeta, x as hasMarkdownToConvert, xt as autoBindSpawnedDiscordSubagent, yt as extractToolSend, z as logInboundDrop } from "./reply-Bok_WQGW.js";
3
+ import { $ as clearHistoryEntriesIfEnabled, A as resolveDiscordUserAllowlist, B as logTypingFailure, C as stripMarkdown, Ct as unbindThreadBindingsBySessionKey, D as resolveSlackUserAllowlist, Dt as BLUEBUBBLES_ACTION_NAMES, Et as BLUEBUBBLES_ACTIONS, F as stringEnum, G as resolveMentionGating, H as removeAckReactionAfterReply, I as recordInboundSession, J as summarizeMapping, K as resolveMentionGatingWithBypass, L as resolveControlCommandGate, M as collectDiscordAuditChannelIds, N as formatDocsLink, O as resolveSlackChannelAllowlist, Ot as BLUEBUBBLES_GROUP_ACTIONS, P as optionalStringEnum, Q as clearHistoryEntries, R as logAckFailure, S as processLineMessage, St as listThreadBindingsBySessionKey, T as attachFooterText, Tt as resolveAllowlistMatchSimple, U as shouldAckReaction, V as createTypingCallbacks, W as shouldAckReactionForWhatsApp, Y as DEFAULT_GROUP_HISTORY_LIMIT, Z as buildPendingHistoryContextFromMap, _t as listDevicePairing, a as normalizeAccountId$1, at as isWSLEnv, bt as registerPluginHttpRoute, ct as DEFAULT_WEBHOOK_MAX_BODY_BYTES, dt as isRequestBodyLimitError, et as recordPendingHistoryEntry, ft as readJsonBodyWithLimit, gt as approveDevicePairing, ht as createDedupeCache, i as listLineAccountIds, it as isWSL2Sync, j as resolveDiscordChannelAllowlist, k as detectBinary, kt as CHANNEL_MESSAGE_ACTION_NAMES, lt as RequestBodyLimitError, mt as requestBodyErrorToText, o as resolveDefaultLineAccountId, ot as isWSLSync, pt as readRequestBodyWithLimit, q as mergeAllowlist, s as resolveLineAccount, st as DEFAULT_WEBHOOK_BODY_TIMEOUT_MS, tt as recordPendingHistoryEntryIfEnabled, ut as installRequestBodyLimitGuard, vt as rejectDevicePairing, w as createReceiptCard, wt as formatAllowlistMatchMeta, x as hasMarkdownToConvert, xt as autoBindSpawnedDiscordSubagent, yt as extractToolSend, z as logInboundDrop } from "./reply-4HEU7aDS.js";
4
4
  import "./paths-DR2yt_mP.js";
5
5
  import "./github-copilot-token-D9X2phUj.js";
6
6
  import { D as resolveSlackAccount, E as resolveDefaultSlackAccountId, F as resolveDiscordAccount, M as listDiscordAccountIds, O as resolveSlackReplyToMode, P as resolveDefaultDiscordAccountId, S as resolveTelegramAccount, T as listSlackAccountIds, _ as normalizeWhatsAppTarget, a as listDiscordDirectoryPeersFromConfig, b as listTelegramAccountIds, c as listTelegramDirectoryGroupsFromConfig, d as listWhatsAppDirectoryPeersFromConfig, f as looksLikeSlackTargetId, g as isWhatsAppGroupJid, i as listDiscordDirectoryGroupsFromConfig, l as listTelegramDirectoryPeersFromConfig, o as listSlackDirectoryGroupsFromConfig, p as normalizeSlackMessagingTarget, s as listSlackDirectoryPeersFromConfig, u as listWhatsAppDirectoryGroupsFromConfig, w as listEnabledSlackAccounts, x as resolveDefaultTelegramAccountId } from "./plugins-BbAvhC25.js";
@@ -47,7 +47,7 @@ import "./paths-A0xdf3yk.js";
47
47
  import { h as onDiagnosticEvent, m as isDiagnosticsEnabled, p as emitDiagnosticEvent } from "./diagnostic-EyuCSUXO.js";
48
48
  import { n as extractOriginalFilename } from "./store-Do3t33-c.js";
49
49
  import { t as resolveWhatsAppOutboundTarget } from "./resolve-outbound-target-BkCUbYGV.js";
50
- import { r as resolveWhatsAppHeartbeatRecipients } from "./channel-web-Ba27v-Om.js";
50
+ import { r as resolveWhatsAppHeartbeatRecipients } from "./channel-web-Dm-CzA1O.js";
51
51
  import "./image-aq-JAobP.js";
52
52
  import "./pi-model-discovery-LbcEa65a.js";
53
53
  import "./api-key-rotation-LTEeykrm.js";
@@ -33636,6 +33636,77 @@ function getHistoryLimitFromSessionKey(sessionKey, config) {
33636
33636
  */
33637
33637
  const getDmHistoryLimitFromSessionKey = getHistoryLimitFromSessionKey;
33638
33638
 
33639
+ //#endregion
33640
+ //#region src/agents/pi-embedded-runner/long-task-prompt.ts
33641
+ const SCRIPT_REL_PATH = "skills/long-task/scripts/detach-task.sh";
33642
+ let cachedScriptPath;
33643
+ function isExecutable(candidatePath) {
33644
+ try {
33645
+ fs.accessSync(candidatePath, fs.constants.X_OK);
33646
+ return true;
33647
+ } catch {
33648
+ return false;
33649
+ }
33650
+ }
33651
+ /**
33652
+ * Ensure the script is present AND has the exec bit. npm usually preserves
33653
+ * mode 100755 on pack/install, but a subset of filesystems (FAT32, some
33654
+ * container mounts) silently drop it. If the bit is missing, we try to set
33655
+ * it; on failure we return null rather than emit a prompt that would break
33656
+ * when the model tries to exec the script.
33657
+ */
33658
+ async function resolveDetachScriptPath(params) {
33659
+ if (cachedScriptPath !== void 0) return cachedScriptPath;
33660
+ const packageRoot = await resolveSymiPackageRoot({
33661
+ cwd: params.cwd,
33662
+ argv1: params.argv1,
33663
+ moduleUrl: params.moduleUrl
33664
+ });
33665
+ if (!packageRoot) {
33666
+ cachedScriptPath = null;
33667
+ return null;
33668
+ }
33669
+ const candidate = path.join(packageRoot, SCRIPT_REL_PATH);
33670
+ if (!fs.existsSync(candidate)) {
33671
+ cachedScriptPath = null;
33672
+ return null;
33673
+ }
33674
+ if (!isExecutable(candidate)) try {
33675
+ fs.chmodSync(candidate, 493);
33676
+ } catch {
33677
+ cachedScriptPath = null;
33678
+ return null;
33679
+ }
33680
+ cachedScriptPath = candidate;
33681
+ return cachedScriptPath;
33682
+ }
33683
+ async function buildLongTaskPromptSuffix(params) {
33684
+ const scriptPath = await resolveDetachScriptPath(params);
33685
+ if (!scriptPath) return "";
33686
+ return "\n\n" + [
33687
+ "LONG-RUNNING TASK PATTERN:",
33688
+ "- 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.",
33689
+ "- 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.",
33690
+ `- Detach pattern: exec \`${scriptPath} <task-id> <workdir> <command...>\`.`,
33691
+ " • task-id: alphanumeric + dot/dash/underscore, 1–60 chars, must not start with '.' or '-'.",
33692
+ " • workdir: absolute path you own (e.g. the agent workspace).",
33693
+ " • Script spawns under setsid+nohup+disown, writes task-<id>.{pid,cmd,started,log,status} files.",
33694
+ "- 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.",
33695
+ "- Register a cron monitor using the `cron` tool with action=add. Required fields:",
33696
+ " • schedule: { kind: \"interval\", ms: 180000 } (every 3 minutes; minimum 60000)",
33697
+ " • payload: { kind: \"agent\", sessionTarget: \"isolated\", text: <job prompt> }",
33698
+ " 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.",
33699
+ "- Safe status read (inside the monitor turn):",
33700
+ " `status=$(cat \"<workdir>/task-<id>.status\" 2>/dev/null || echo missing)`",
33701
+ " 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.",
33702
+ "- Monitor responsibilities each tick:",
33703
+ " • If status begins with `running`: tail -n 20 <log>, post a one-sentence progress line.",
33704
+ " • If status begins with `complete`: post a final summary with rc and tail, then call cron action=remove on this job id.",
33705
+ " • If status begins with `aborted`: post a failure summary with signal and tail, then call cron action=remove.",
33706
+ " • Never leave stale monitors running after the task finishes."
33707
+ ].join("\n");
33708
+ }
33709
+
33639
33710
  //#endregion
33640
33711
  //#region src/agents/pi-embedded-runner/runs.ts
33641
33712
  const ACTIVE_EMBEDDED_RUNS = /* @__PURE__ */ new Map();
@@ -34698,7 +34769,12 @@ async function runEmbeddedAttempt(params) {
34698
34769
  const profileModelKey = params.modelId ?? "";
34699
34770
  const modelProfile = resolveModelProfile(profileModelKey, params.config?.models?.profiles);
34700
34771
  log$7.debug(`[profile] resolved: modelId=${profileModelKey} → profile=${modelProfile.label} validateToolArgs=${modelProfile.filters?.validateToolArgs ?? false}`);
34701
- const systemPromptText = createSystemPromptOverride(appendPrompt + (modelProfile.promptAdditions.length > 0 ? "\n\n" + modelProfile.promptAdditions.join("\n") : ""))();
34772
+ const profilePromptSuffix = modelProfile.promptAdditions.length > 0 ? "\n\n" + modelProfile.promptAdditions.join("\n") : "";
34773
+ const systemPromptText = createSystemPromptOverride(appendPrompt + await buildLongTaskPromptSuffix({
34774
+ argv1: process.argv[1],
34775
+ cwd: process.cwd(),
34776
+ moduleUrl: import.meta.url
34777
+ }) + profilePromptSuffix)();
34702
34778
  const sessionLock = await acquireSessionWriteLock({
34703
34779
  sessionFile: params.sessionFile,
34704
34780
  maxHoldMs: resolveSessionLockMaxHoldFromTimeout({ timeoutMs: params.timeoutMs })
@@ -36507,7 +36583,7 @@ async function runAgentTurn(params) {
36507
36583
  function createDefaultDeps() {
36508
36584
  return {
36509
36585
  sendMessageWhatsApp: async (...args) => {
36510
- const { sendMessageWhatsApp } = await import("./web-BoOAa0Xn.js");
36586
+ const { sendMessageWhatsApp } = await import("./web-Cclb7FTq.js");
36511
36587
  return await sendMessageWhatsApp(...args);
36512
36588
  },
36513
36589
  sendMessageTelegram: async (...args) => {
@@ -53945,7 +54021,7 @@ function loadWebLoginQr() {
53945
54021
  return webLoginQrPromise;
53946
54022
  }
53947
54023
  function loadWebChannel() {
53948
- webChannelPromise ??= import("./web-BoOAa0Xn.js");
54024
+ webChannelPromise ??= import("./web-Cclb7FTq.js");
53949
54025
  return webChannelPromise;
53950
54026
  }
53951
54027
  function loadWhatsAppActions() {
@@ -1,5 +1,5 @@
1
1
  import { a as WA_WEB_AUTH_DIR, g as webAuthExists, s as logWebSelfId, u as pickWebChannel } from "./accounts-D9zGZU5t.js";
2
- import "./reply-Bok_WQGW.js";
2
+ import "./reply-4HEU7aDS.js";
3
3
  import "./paths-DR2yt_mP.js";
4
4
  import "./github-copilot-token-D9X2phUj.js";
5
5
  import "./plugins-BbAvhC25.js";
@@ -45,7 +45,7 @@ import "./pi-embedded-helpers-BPvzgLtj.js";
45
45
  import "./paths-A0xdf3yk.js";
46
46
  import "./diagnostic-EyuCSUXO.js";
47
47
  import "./store-Do3t33-c.js";
48
- import { n as monitorWebInbox, t as monitorWebChannel } from "./channel-web-Ba27v-Om.js";
48
+ import { n as monitorWebInbox, t as monitorWebChannel } from "./channel-web-Dm-CzA1O.js";
49
49
  import "./image-aq-JAobP.js";
50
50
  import "./pi-model-discovery-LbcEa65a.js";
51
51
  import "./api-key-rotation-LTEeykrm.js";
@@ -4,8 +4,8 @@ import { h as normalizeAccountId, m as DEFAULT_ACCOUNT_ID } from "./session-key-
4
4
  import { c as normalizeAnyChannelId, f as requireActivePluginRegistry, n as CHAT_CHANNEL_ORDER } from "./registry-Cja8eT7G.js";
5
5
  import { t as isTruthyEnvValue } from "./env-DPCHYPeH.js";
6
6
  import { t as normalizeChatType } from "./chat-type-DyovJwCt.js";
7
- import { h as createAccountListHelpers } from "./accounts-DDuIpcln.js";
8
- import { i as resolveDefaultAgentBoundAccountId, r as listBoundAccountIds } from "./bindings-DFaVVCsf.js";
7
+ import { h as createAccountListHelpers } from "./accounts-Cd816n6l.js";
8
+ import { i as resolveDefaultAgentBoundAccountId, r as listBoundAccountIds } from "./bindings-ChzePa8q.js";
9
9
  import fs from "node:fs";
10
10
 
11
11
  //#region src/channels/plugins/account-action-gate.ts