@symerian/symi 2.6.42 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (283) hide show
  1. package/dist/{accounts-DDuIpcln.js → accounts-Cd816n6l.js} +7 -7
  2. package/dist/{accounts-bK-Yqdwx.js → accounts-CokRskCl.js} +1 -1
  3. package/dist/{accounts-DyJN4_vR.js → accounts-mN_EcgxC.js} +1 -1
  4. package/dist/{acp-cli-CrEIx-c7.js → acp-cli-COzlJi3B.js} +6 -6
  5. package/dist/{agent-scope-CgUHAtCo.js → agent-scope-BRwEc2pG.js} +18 -18
  6. package/dist/{agents-DDRDszOI.js → agents-Cu2bthAX.js} +4 -4
  7. package/dist/{agents.config-BKCY6F2A.js → agents.config-5PTwsijs.js} +1 -1
  8. package/dist/{agents.config-BEVb1Pyx.js → agents.config-Dib8Uo2P.js} +2 -2
  9. package/dist/{api-key-rotation-CzuPlV2t.js → api-key-rotation-CEr3lKih.js} +1 -1
  10. package/dist/{audio-preflight-CIiS5cfP.js → audio-preflight-mj-z_vQ6.js} +28 -28
  11. package/dist/{audit-DB9YkTVX.js → audit-Djfdh06o.js} +23 -23
  12. package/dist/{auth-choice-BbzReh6k.js → auth-choice-5gul6jy2.js} +1 -1
  13. package/dist/{auth-choice-D2xXwBeN.js → auth-choice-CmSUU3t8.js} +8 -8
  14. package/dist/{auth-token-Cay2jwzn.js → auth-token-83A2btbE.js} +1 -1
  15. package/dist/{banner-DqqRwplt.js → banner-B4vQpMIJ.js} +1 -1
  16. package/dist/{bindings-DFaVVCsf.js → bindings-ChzePa8q.js} +1 -1
  17. package/dist/{browser-cli-Ctn9do4z.js → browser-cli-BTD0NlrA.js} +9 -9
  18. package/dist/build-info.json +3 -3
  19. package/dist/bundled/boot-md/handler.js +1 -1
  20. package/dist/bundled/session-memory/handler.js +1 -1
  21. package/dist/{call-DwpGquzW.js → call-tmHtVCkn.js} +9 -9
  22. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  23. package/dist/{channel-options-DQcpDVCx.js → channel-options-DVf4CJIu.js} +1 -1
  24. package/dist/{channel-options-DcazVJQf.js → channel-options-DsWGc55A.js} +2 -2
  25. package/dist/{channel-selection-V2xDgw16.js → channel-selection-DaJDux-Q.js} +1 -1
  26. package/dist/{channel-web-u5yMYO4j.js → channel-web-vGC-WJXi.js} +17 -17
  27. package/dist/{channels-cli-Bog4Kn3X.js → channels-cli-COayA28A.js} +76 -76
  28. package/dist/{channels-cli-C3iJE8eg.js → channels-cli-CSv05N3q.js} +4 -4
  29. package/dist/{channels-status-issues-CJ0Vb_9z.js → channels-status-issues-B_PI3nEE.js} +1 -1
  30. package/dist/{chrome-DU2ZysN3.js → chrome-CSJzpT9Z.js} +2 -2
  31. package/dist/cli/daemon-cli.js +1 -1
  32. package/dist/{cli-eBtEEHLK.js → cli-B-g79xPe.js} +1 -1
  33. package/dist/{cli-QybdZdE7.js → cli-DJjOxip6.js} +63 -63
  34. package/dist/{client-jI1oE0_k.js → client-Bj_vTpri.js} +1 -1
  35. package/dist/{command-registry-BWnZSpbL.js → command-registry-BvpLfzl7.js} +9 -9
  36. package/dist/{commands-BNLCWX6e.js → commands-CtocZ4Lg.js} +1 -1
  37. package/dist/{commands-registry-BT0-zzs3.js → commands-registry-BZ0ZSQpM.js} +3 -3
  38. package/dist/{completion-cli-CUKm7Hb6.js → completion-cli-CfRZ-7QF.js} +2 -2
  39. package/dist/{completion-cli-BhJFXaVU.js → completion-cli-DtQcXg1N.js} +12 -12
  40. package/dist/{config-cli-CjnQyv45.js → config-cli-D9Z78raJ.js} +4 -4
  41. package/dist/{config-cli-B796xZBe.js → config-cli-DL2RdfLM.js} +1 -1
  42. package/dist/{config-guard-CEkSg4hl.js → config-guard-4oRmpR0a.js} +12 -12
  43. package/dist/{config-Dz95lSBW.js → config-tNauHpdq.js} +2 -2
  44. package/dist/{config-validation-HDVDlMSV.js → config-validation-BoDWiwe3.js} +1 -1
  45. package/dist/{configure-DUqT7Dyn.js → configure-Dq4f8WPa.js} +3 -3
  46. package/dist/{configure-D3wIQ0yI.js → configure-jDpF8lmx.js} +15 -15
  47. package/dist/{control-service-BYKXzY4f.js → control-service-BBnhN7aZ.js} +4 -4
  48. package/dist/control-ui/css/style.css +51 -0
  49. package/dist/control-ui/js/app.js +39 -0
  50. package/dist/control-ui/js/gateway.js +2 -0
  51. package/dist/control-ui/js/settings.js +71 -8
  52. package/dist/{control-ui-assets-B7moDVHX.js → control-ui-assets-6n-YayeS.js} +1 -1
  53. package/dist/{cron-cli-DCpsXkrw.js → cron-cli-D165ecaj.js} +10 -10
  54. package/dist/{daemon-cli-DSDcmWOi.js → daemon-cli-BccZzUb0.js} +11 -11
  55. package/dist/{daemon-runtime-mE1b-Q48.js → daemon-runtime-u01h46bE.js} +10 -10
  56. package/dist/{deliver-B4KZ6-oZ.js → deliver-BYdNAEqj.js} +7 -7
  57. package/dist/{devices-cli-x3jIP4Ih.js → devices-cli-D0N71nqX.js} +6 -6
  58. package/dist/{diagnostics-BRwihzJG.js → diagnostics-BrUo0gqs.js} +5 -5
  59. package/dist/{directory-cli-KgsAVTA0.js → directory-cli-aj7aXIBM.js} +7 -7
  60. package/dist/{dm-policy-shared-DlDAGtZL.js → dm-policy-shared-epgkayyq.js} +2 -2
  61. package/dist/{dns-cli-Cwr92Aiq.js → dns-cli-Dit09wbu.js} +3 -3
  62. package/dist/{dock-BhS32F6E.js → dock-BYiRZSgZ.js} +4 -4
  63. package/dist/{docs-cli-qE-blOLC.js → docs-cli-CyWGMA-e.js} +1 -1
  64. package/dist/{doctor-completion-D3oUNFQM.js → doctor-completion-Ccb83Wl5.js} +2 -2
  65. package/dist/{doctor-completion-DBE1IVKj.js → doctor-completion-oQemZItC.js} +1 -1
  66. package/dist/{doctor-config-flow-iIzSEQxb.js → doctor-config-flow-BXmHd2bb.js} +10 -10
  67. package/dist/entry.js +1 -1
  68. package/dist/{exec-approvals-cli-BSgxsdMt.js → exec-approvals-cli-CZ-iTtNO.js} +13 -13
  69. package/dist/extensionAPI.js +1 -1
  70. package/dist/{fs-safe-CUjO1ca2.js → fs-safe-CTDvb1DF.js} +6 -6
  71. package/dist/{gateway-cli-BguO9yV4.js → gateway-cli-C1zPKZ7B.js} +135 -120
  72. package/dist/{gateway-cli-Dc1RT_b9.js → gateway-cli-zbVm1MBQ.js} +30 -15
  73. package/dist/{gateway-rpc-5fREQe9Q.js → gateway-rpc-B1Wzoj99.js} +1 -1
  74. package/dist/{glass-ui-ws-D0UYleBF.js → glass-ui-ws-CvUFd4C6.js} +28 -9
  75. package/dist/{glass-ui-ws-DoIZyE9O.js → glass-ui-ws-D3tAmqKX.js} +104 -85
  76. package/dist/{health-cVvZdeDu.js → health-DQEqLYg1.js} +1 -1
  77. package/dist/{health-D3w4YMlC.js → health-o847FIt1.js} +13 -13
  78. package/dist/{hooks-cli-DZIbjfOA.js → hooks-cli-D_UW9fc8.js} +2 -2
  79. package/dist/{hooks-cli-te5hzOAB.js → hooks-cli-sYjbF4I6.js} +77 -77
  80. package/dist/{image-BWmcNF8N.js → image-lCS3o9xj.js} +3 -3
  81. package/dist/{image-ops-1OJMSAUX.js → image-ops-DYbDWaIA.js} +10 -10
  82. package/dist/index.js +73 -73
  83. package/dist/{inspect-CvbbCuoa.js → inspect-CNYyHVfH.js} +4 -4
  84. package/dist/{install-safe-path-D3Uz77u7.js → install-safe-path-D3mg1DMG.js} +11 -11
  85. package/dist/{installs-DQcRVF1U.js → installs-CYTVYWH_.js} +10 -10
  86. package/dist/{ir-DZam9q5M.js → ir-Dt4hOzxG.js} +6 -6
  87. package/dist/{lifecycle-core-C4HzGXA1.js → lifecycle-core-DxmxQdhS.js} +5 -5
  88. package/dist/llm-slug-generator.js +1 -1
  89. package/dist/{local-roots-aAFLQGkY.js → local-roots-BBeKX7PX.js} +2 -2
  90. package/dist/{login-DODfJ3Dn.js → login-CnjdNmGD.js} +3 -3
  91. package/dist/{login-qr-CBRxijIg.js → login-qr-DUf6CM0M.js} +5 -5
  92. package/dist/{logs-cli-CfGj-dOg.js → logs-cli-BVd6h2-Q.js} +7 -7
  93. package/dist/{manager-D4LJSRyZ.js → manager-C1CfGzZ2.js} +13 -13
  94. package/dist/{markdown-tables-CEbN0fEm.js → markdown-tables-ZwP14ydw.js} +1 -1
  95. package/dist/{memory-cli-DDumUksr.js → memory-cli-DhkRAIdT.js} +14 -14
  96. package/dist/{model-tWhwnFf8.js → model-CeeOcylL.js} +1 -1
  97. package/dist/{model-catalog-8Son0J4O.js → model-catalog-CvbwxWuC.js} +4 -4
  98. package/dist/{model-picker-CAm2Bftd.js → model-picker-C2MqloOs.js} +3 -3
  99. package/dist/{model-selection-CyFvYcRt.js → model-selection-X1oLh3CE.js} +9 -9
  100. package/dist/{models-BCfPhQ4m.js → models-Zol34e73.js} +2 -2
  101. package/dist/{models-cli-Cj2CwbPw.js → models-cli-BzcEA9oa.js} +3 -3
  102. package/dist/{models-cli-BFAtjNIF.js → models-cli-DnMUzr15.js} +72 -72
  103. package/dist/{models-config-CFFjJPe7.js → models-config-CEMioDUi.js} +7 -7
  104. package/dist/{node-cli-DnfDOh1d.js → node-cli-BVJid4L_.js} +28 -28
  105. package/dist/{node-service-CD47Qpf1.js → node-service-CXzMs782.js} +1 -1
  106. package/dist/{nodes-cli-Ci3oxw8k.js → nodes-cli-BN2Nslim.js} +10 -10
  107. package/dist/{nodes-screen-8Bq7DiSa.js → nodes-screen-Cd49cSPb.js} +4 -4
  108. package/dist/{npm-registry-spec-C0CPT3vr.js → npm-registry-spec-DchndI6P.js} +9 -9
  109. package/dist/{onboard-VcdBF5TB.js → onboard-CSseK0Co.js} +13 -13
  110. package/dist/{onboard-BMq8qc1m.js → onboard-CxOT_xD4.js} +2 -2
  111. package/dist/{onboard-channels-CiOun4k1.js → onboard-channels-CUlITipG.js} +5 -5
  112. package/dist/{onboard-channels-B5wgcffj.js → onboard-channels-D-lh_Vh1.js} +1 -1
  113. package/dist/{onboard-custom-XiomtQr7.js → onboard-custom-DTcLdtA9.js} +3 -3
  114. package/dist/{onboard-helpers-DFvWPFhU.js → onboard-helpers-CdPNw25E.js} +8 -8
  115. package/dist/{onboard-hooks-C3ok8kqB.js → onboard-hooks-C_2_jpWg.js} +1 -1
  116. package/dist/{onboard-remote-BURDxwoE.js → onboard-remote-v6QMnyJD.js} +1 -1
  117. package/dist/{onboard-skills-CbzgBT1W.js → onboard-skills-CQtkRP20.js} +4 -4
  118. package/dist/{onboarding-Dp7p6zKa.js → onboarding-DktESmTv.js} +3 -3
  119. package/dist/{onboarding-CGNpTyg2.js → onboarding-Dn5agNG_.js} +13 -13
  120. package/dist/{onboarding.finalize-CrsE5P43.js → onboarding.finalize-Bm-1Kdnh.js} +6 -6
  121. package/dist/{onboarding.finalize-B6DOu8vp.js → onboarding.finalize-CTIZ1zvV.js} +75 -75
  122. package/dist/{onboarding.gateway-config-DKwJ5bWd.js → onboarding.gateway-config-CwnQkyO0.js} +14 -14
  123. package/dist/{openai-model-default-WqcGxyFM.js → openai-model-default-4kBA1_78.js} +2 -2
  124. package/dist/{outbound-wnv03tb3.js → outbound-_Ir3M05f.js} +4 -4
  125. package/dist/{outbound-attachment-Bw-c5Cdp.js → outbound-attachment-Qfh5dlsg.js} +2 -2
  126. package/dist/{pairing-cli-DSM82gJG.js → pairing-cli-C8UXBJ_A.js} +8 -8
  127. package/dist/{pairing-labels-DyXoD1DS.js → pairing-labels-Dxb898X5.js} +1 -1
  128. package/dist/{pairing-store-CK726Dzq.js → pairing-store-B8ktu-6j.js} +2 -2
  129. package/dist/{pairing-token-CX3NN_qj.js → pairing-token-AV-MMfVE.js} +7 -7
  130. package/dist/{paths-BBm9fwuG.js → paths-CT6jsi4E.js} +1 -1
  131. package/dist/{pi-auth-json-zHckislA.js → pi-auth-json-FpfHyEcu.js} +5 -5
  132. package/dist/{pi-embedded-DQe8vBwU.js → pi-embedded-CYDMb5q0.js} +46 -7
  133. package/dist/{pi-embedded-helpers-BgdB5kvy.js → pi-embedded-helpers-Bs4eMaNo.js} +6 -6
  134. package/dist/{pi-tools.policy-DRWb_Cax.js → pi-tools.policy-BBxnqCay.js} +4 -4
  135. package/dist/{plugin-auto-enable-CP0nONRL.js → plugin-auto-enable-DwIrzVOA.js} +2 -2
  136. package/dist/{plugin-registry-BzIbwU3K.js → plugin-registry-CJGPW1-k.js} +1 -1
  137. package/dist/{plugin-registry-D3TUplW8.js → plugin-registry-d0oZLl6y.js} +3 -3
  138. package/dist/plugin-sdk/{channel-web-B6m8UOCl.js → channel-web-Dm-CzA1O.js} +1 -1
  139. package/dist/plugin-sdk/index.js +2 -2
  140. package/dist/plugin-sdk/{reply-CGoJQT_s.js → reply-4HEU7aDS.js} +46 -7
  141. package/dist/plugin-sdk/{web-CJjSOTnI.js → web-Cclb7FTq.js} +2 -2
  142. package/dist/{plugins-DKDeQZF0.js → plugins-BAyxWQSz.js} +2 -2
  143. package/dist/{plugins-cli-DFyRjAtJ.js → plugins-cli-BWgjIJQL.js} +72 -72
  144. package/dist/{plugins-cli-BD1Jb2Ml.js → plugins-cli-CL0tzkMo.js} +2 -2
  145. package/dist/{ports-BOmtxoTv.js → ports-OZQlocB7.js} +2 -2
  146. package/dist/{ports-DtW62rqS.js → ports-u9lWy2Jt.js} +1 -1
  147. package/dist/{program-qGm2M9PG.js → program-BHjH97Q_.js} +7 -7
  148. package/dist/{program-context-45vPEw2G.js → program-context-CXZHSZ4D.js} +39 -39
  149. package/dist/{prompt-select-styled-DRIS9jSv.js → prompt-select-styled-BUFEoSlM.js} +38 -38
  150. package/dist/{prompt-select-styled-DRraJGwA.js → prompt-select-styled-D8LXSUR7.js} +4 -4
  151. package/dist/{provider-auth-helpers-BNOWsjW5.js → provider-auth-helpers-BFHctF2f.js} +1 -1
  152. package/dist/{provider-auth-helpers-BREVjR7R.js → provider-auth-helpers-CeAbh3lv.js} +5 -5
  153. package/dist/{push-apns-CYC70eKy.js → push-apns-BylbQyP9.js} +1 -1
  154. package/dist/{push-apns-CObVeJLC.js → push-apns-DqFdzIkc.js} +4 -4
  155. package/dist/{pw-ai-DQohWnzT.js → pw-ai-CfrnAHwA.js} +7 -7
  156. package/dist/{qmd-manager-CCUK1xoc.js → qmd-manager-DUNbG4Qr.js} +18 -18
  157. package/dist/{qr-cli-CejYwqsj.js → qr-cli-BZYa2gvF.js} +3 -3
  158. package/dist/{register.agent-DzzY8jON.js → register.agent-DxAqRAt3.js} +6 -6
  159. package/dist/{register.agent-DRrHvYcz.js → register.agent-bzSGKS-l.js} +82 -82
  160. package/dist/register.configure-Boyfir72.js +148 -0
  161. package/dist/{register.configure-DlXkwkNR.js → register.configure-WS1nlSp8.js} +6 -6
  162. package/dist/{register.maintenance-CXLXouZV.js → register.maintenance-B1QcUr38.js} +85 -85
  163. package/dist/{register.maintenance-LEf8Q_5p.js → register.maintenance-D_qMTrgD.js} +8 -8
  164. package/dist/{register.message-C4ifV9vG.js → register.message-CJF8gLAN.js} +64 -64
  165. package/dist/{register.message-DsPa-xHV.js → register.message-zu3HGGff.js} +2 -2
  166. package/dist/{register.onboard-DLRPa_4B.js → register.onboard-9dwNqCe6.js} +4 -4
  167. package/dist/{register.onboard-CrY4PxLP.js → register.onboard-CswoaT7q.js} +75 -75
  168. package/dist/{register.setup-fBG_dJfi.js → register.setup-CvomtGGu.js} +78 -78
  169. package/dist/{register.setup-By37g1vN.js → register.setup-TcjUu6HC.js} +4 -4
  170. package/dist/{register.status-health-sessions-DG7KGnD0.js → register.status-health-sessions-CM1SX81r.js} +3 -3
  171. package/dist/{register.status-health-sessions-Ckw86-gn.js → register.status-health-sessions-CQMvbwr6.js} +76 -76
  172. package/dist/{register.subclis-C_xKLugM.js → register.subclis-CVQASXaL.js} +9 -9
  173. package/dist/{replies-BMqtgBhh.js → replies-Dy92jzrz.js} +1 -1
  174. package/dist/{reply-DyjXROKp.js → reply-CpNWtuU4.js} +183 -144
  175. package/dist/{reply-prefix-CE2YmmsD.js → reply-prefix-BLOOs1aW.js} +1 -1
  176. package/dist/{resolve-route-BMoTaVAH.js → resolve-route-BcnaXYvh.js} +2 -2
  177. package/dist/{routes-BAZTZNuQ.js → routes-CVwRcA9D.js} +8 -8
  178. package/dist/{rpc-Co5PQ3IJ.js → rpc-CZFfee1J.js} +1 -1
  179. package/dist/{run-main-Cg3ecTbO.js → run-main-Dq6tfDry.js} +14 -14
  180. package/dist/{runner-DRv0uCK_.js → runner-BAVs-p6Z.js} +20 -20
  181. package/dist/{sandbox-B6N8cV4d.js → sandbox-HZ_uilsn.js} +18 -18
  182. package/dist/{sandbox-cli-DwzaNjIJ.js → sandbox-cli-wZtiyo8g.js} +20 -20
  183. package/dist/{security-cli-D5BWzqEJ.js → security-cli-BESmRIrl.js} +36 -36
  184. package/dist/{send-CQVnyJyF.js → send-BVBCh27_.js} +13 -13
  185. package/dist/{send-DVm0du0_.js → send-CXFTeD_J.js} +4 -4
  186. package/dist/{send-B3RdXvjC.js → send-DT-5buW5.js} +6 -6
  187. package/dist/{send-9SapUCg7.js → send-DsSI8z3F.js} +6 -6
  188. package/dist/{send-Bm4ULEzh.js → send-JWV62VbW.js} +6 -6
  189. package/dist/{server-context-CCBZN8a0.js → server-context-VlF1_hYj.js} +5 -5
  190. package/dist/{server-methods-CWcLut3F.js → server-methods-B0pdetGJ.js} +130 -64
  191. package/dist/{server-methods-CW8eFTGD.js → server-methods-IBEaQXPX.js} +177 -111
  192. package/dist/{server-node-events-CDB0u8PP.js → server-node-events-BACmfyjo.js} +64 -64
  193. package/dist/{server-node-events-C2h9OPo7.js → server-node-events-CyDj7Txd.js} +2 -2
  194. package/dist/{service-osK70kTZ.js → service-D80PyJxB.js} +15 -15
  195. package/dist/{session-DsJGtM7g.js → session-6Qyc4cBQ.js} +2 -2
  196. package/dist/{session-dirs-Dgz7kkUM.js → session-dirs-DPzjjra2.js} +2 -2
  197. package/dist/{sessions-Cpgnq0pA.js → sessions-jTAGYjWl.js} +13 -13
  198. package/dist/{shared-DnmJ0ABB.js → shared-BV7WhIkY.js} +1 -1
  199. package/dist/{shared-73T9fyuK.js → shared-BfhtOZAz.js} +3 -3
  200. package/dist/{skill-commands-Cxw-jNxU.js → skill-commands-ZXbEITKi.js} +5 -5
  201. package/dist/{skill-scanner-hMtQbWPV.js → skill-scanner-w3DJvw1Q.js} +5 -5
  202. package/dist/{skills-6jdJQ5ZL.js → skills-DqQUtOph.js} +4 -4
  203. package/dist/{skills-cli-DXkx4vNV.js → skills-cli-D3lePXkf.js} +7 -7
  204. package/dist/{skills-install-CWVdJkLn.js → skills-install-HGYidhrv.js} +3 -3
  205. package/dist/{skills-status-C3ptXwnh.js → skills-status-Cjsh8we0.js} +1 -1
  206. package/dist/{sqlite-Dx3J_aSE.js → sqlite-BV5ILFtC.js} +12 -12
  207. package/dist/{status-DfPfMVNZ.js → status-BJtbD-cG.js} +2 -2
  208. package/dist/{status-CMx3GAax.js → status-DUeTrQSz.js} +1 -1
  209. package/dist/{status-B2Qt-5kL.js → status-DzHL-eVu.js} +3 -3
  210. package/dist/{status-ZPW5EACm.js → status-nzJEZmNT.js} +25 -25
  211. package/dist/{status.update-CG0ciGaf.js → status.update-TlYwuzTa.js} +3 -3
  212. package/dist/{store-r1DJSDq-.js → store-DvtcmOKj.js} +5 -5
  213. package/dist/{subagent-registry-DQHg3jUV.js → subagent-registry-CzS4CfnV.js} +46 -7
  214. package/dist/{symi-root-CrGJbkzf.js → symi-root-MF6_6SCS.js} +2 -2
  215. package/dist/{system-cli-DFZNGx0i.js → system-cli-C2yhGP4C.js} +7 -7
  216. package/dist/{systemd-DT6SbCim.js → systemd-CevHlgD4.js} +5 -5
  217. package/dist/{systemd-hints-xYZbFny_.js → systemd-hints-DmgRnw1L.js} +6 -6
  218. package/dist/{systemd-linger-DCskIKcx.js → systemd-linger-ScxQ1_H4.js} +1 -1
  219. package/dist/{tables-BEzT0Da4.js → tables-C38rzF6E.js} +1 -1
  220. package/dist/{target-errors-7AvoVa10.js → target-errors-CCz79CmV.js} +4 -4
  221. package/dist/{tool-images-DvUBlqjX.js → tool-images-B-pqX3nX.js} +1 -1
  222. package/dist/{tui-DjPsMdL6.js → tui-D2MOx3Kx.js} +7 -7
  223. package/dist/{tui-cli-pWD_NrUR.js → tui-cli-B2ii7u23.js} +28 -28
  224. package/dist/{unified-runner-DvOFqcrw.js → unified-runner-BtO3UQSd.js} +46 -7
  225. package/dist/{update-Ya0e-JnM.js → update-Don6XTH9.js} +3 -3
  226. package/dist/{update-check-7EzEjSzb.js → update-check-DCo5RtKp.js} +5 -5
  227. package/dist/{update-cli-DBasZeVl.js → update-cli-DRODEMSI.js} +8 -8
  228. package/dist/{update-cli-Df9rh_aN.js → update-cli-gKtjyXlD.js} +95 -95
  229. package/dist/{update-runner-BRKFzAwV.js → update-runner-AsKAxe31.js} +15 -15
  230. package/dist/{update-runner-DVa6cMqp.js → update-runner-JcdOHr71.js} +1 -1
  231. package/dist/{web-Dd05xbUr.js → web-BIzWZFiN.js} +1 -1
  232. package/dist/{web-Cw3bFAiP.js → web-DGo16lWn.js} +1 -1
  233. package/dist/{web-CGh5tw__.js → web-DKwOxo8E.js} +1 -1
  234. package/dist/web-sefqR11J.js +110 -0
  235. package/dist/{webhooks-cli-BRxe4uCg.js → webhooks-cli-DbnQ2BVE.js} +4 -4
  236. package/dist/{whatsapp-actions-ChO_shrk.js → whatsapp-actions-CqXxtCoj.js} +15 -15
  237. package/dist/{with-timeout-CtVdu_1U.js → with-timeout-Cm5EhxG_.js} +1 -1
  238. package/dist/{workspace-dirs-GpkFi6Kw.js → workspace-dirs-DKu48umx.js} +1 -1
  239. package/dist/{wsl-q8spwrME.js → wsl-xNOi_Ch8.js} +2 -2
  240. package/extensions/bluebubbles/package.json +1 -1
  241. package/extensions/copilot-proxy/package.json +1 -1
  242. package/extensions/diagnostics-otel/package.json +1 -1
  243. package/extensions/discord/package.json +1 -1
  244. package/extensions/feishu/package.json +1 -1
  245. package/extensions/google-antigravity-auth/package.json +1 -1
  246. package/extensions/google-gemini-cli-auth/package.json +1 -1
  247. package/extensions/googlechat/package.json +1 -1
  248. package/extensions/imessage/package.json +1 -1
  249. package/extensions/irc/package.json +1 -1
  250. package/extensions/learning-loop/package.json +1 -1
  251. package/extensions/line/package.json +1 -1
  252. package/extensions/llm-task/package.json +1 -1
  253. package/extensions/matrix/CHANGELOG.md +6 -0
  254. package/extensions/matrix/package.json +1 -1
  255. package/extensions/mattermost/package.json +1 -1
  256. package/extensions/memory-core/package.json +1 -1
  257. package/extensions/memory-lancedb/package.json +1 -1
  258. package/extensions/minimax-portal-auth/package.json +1 -1
  259. package/extensions/msteams/CHANGELOG.md +6 -0
  260. package/extensions/msteams/package.json +1 -1
  261. package/extensions/nextcloud-talk/package.json +1 -1
  262. package/extensions/nostr/CHANGELOG.md +6 -0
  263. package/extensions/nostr/package.json +1 -1
  264. package/extensions/open-prose/package.json +1 -1
  265. package/extensions/outlook/package.json +1 -1
  266. package/extensions/pipeline/package.json +1 -1
  267. package/extensions/signal/package.json +1 -1
  268. package/extensions/slack/package.json +1 -1
  269. package/extensions/telegram/package.json +1 -1
  270. package/extensions/tlon/package.json +1 -1
  271. package/extensions/twitch/CHANGELOG.md +6 -0
  272. package/extensions/twitch/package.json +1 -1
  273. package/extensions/voice-call/CHANGELOG.md +6 -0
  274. package/extensions/voice-call/package.json +1 -1
  275. package/extensions/whatsapp/package.json +1 -1
  276. package/extensions/zalo/CHANGELOG.md +6 -0
  277. package/extensions/zalo/package.json +1 -1
  278. package/extensions/zalouser/CHANGELOG.md +6 -0
  279. package/extensions/zalouser/package.json +1 -1
  280. package/package.json +1 -1
  281. package/skills/long-task/scripts/detach-task.sh +91 -14
  282. package/dist/register.configure-BxtTIFTa.js +0 -148
  283. package/dist/web-KiuDkd0x.js +0 -110
@@ -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
@@ -45586,6 +45586,21 @@ const getDmHistoryLimitFromSessionKey = getHistoryLimitFromSessionKey;
45586
45586
  //#region src/agents/pi-embedded-runner/long-task-prompt.ts
45587
45587
  const SCRIPT_REL_PATH = "skills/long-task/scripts/detach-task.sh";
45588
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
+ */
45589
45604
  async function resolveDetachScriptPath(params) {
45590
45605
  if (cachedScriptPath !== void 0) return cachedScriptPath;
45591
45606
  const packageRoot = await resolveSymiPackageRoot({
@@ -45598,7 +45613,17 @@ async function resolveDetachScriptPath(params) {
45598
45613
  return null;
45599
45614
  }
45600
45615
  const candidate = path.join(packageRoot, SCRIPT_REL_PATH);
45601
- cachedScriptPath = fs.existsSync(candidate) ? candidate : null;
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;
45602
45627
  return cachedScriptPath;
45603
45628
  }
45604
45629
  async function buildLongTaskPromptSuffix(params) {
@@ -45606,11 +45631,25 @@ async function buildLongTaskPromptSuffix(params) {
45606
45631
  if (!scriptPath) return "";
45607
45632
  return "\n\n" + [
45608
45633
  "LONG-RUNNING TASK PATTERN:",
45609
- "- For any task that may exceed 15 minutes (deep nmap scans of /24 or larger, full brute-force sweeps, long builds, exhaustive enumeration): detach from the agent turn. Do NOT foreground-block the exec tool for the full duration; the agent turn will hit its timeout and SIGTERM the process mid-run.",
45610
- `- Detach pattern: exec \`${scriptPath} <task-id> <workdir> <command...>\`. The script spawns under setsid+nohup, writes PID / cmd / started / status / log files in the workdir. Use the agent workspace as the workdir.`,
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.",
45611
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.",
45612
- "- Register a cron monitor using the `cron` tool with action=add. Schedule every 2-3 minutes. Job prompt must include the task-id, PID, log path, and status path so the future turn has enough context. Example job prompt: \"Check if PID <pid> is alive (kill -0). If alive: tail -n 20 <log>, post one-sentence progress update. If not alive: read <status> and tail <log>, post a final summary, then call cron tool with action=remove id=<this-cron-id>.\"",
45613
- "- When the monitor turn observes status=complete, it MUST call the cron tool with action=remove to clean up its own job. Do not leave stale monitors running."
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."
45614
45653
  ].join("\n");
45615
45654
  }
45616
45655
 
@@ -60949,7 +60988,7 @@ function isVoiceChannelType(type) {
60949
60988
  function createDefaultDeps() {
60950
60989
  return {
60951
60990
  sendMessageWhatsApp: async (...args) => {
60952
- const { sendMessageWhatsApp } = await import("./web-CGh5tw__.js");
60991
+ const { sendMessageWhatsApp } = await import("./web-DKwOxo8E.js");
60953
60992
  return await sendMessageWhatsApp(...args);
60954
60993
  },
60955
60994
  sendMessageTelegram: async (...args) => {
@@ -76229,7 +76268,7 @@ function loadWebLoginQr() {
76229
76268
  return webLoginQrPromise;
76230
76269
  }
76231
76270
  function loadWebChannel() {
76232
- webChannelPromise ??= import("./web-CGh5tw__.js");
76271
+ webChannelPromise ??= import("./web-DKwOxo8E.js");
76233
76272
  return webChannelPromise;
76234
76273
  }
76235
76274
  function loadWhatsAppActions() {
@@ -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-DQHg3jUV.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-DyjXROKp.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 });
@@ -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-CGoJQT_s.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-CGoJQT_s.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-B6m8UOCl.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";
@@ -33640,6 +33640,21 @@ const getDmHistoryLimitFromSessionKey = getHistoryLimitFromSessionKey;
33640
33640
  //#region src/agents/pi-embedded-runner/long-task-prompt.ts
33641
33641
  const SCRIPT_REL_PATH = "skills/long-task/scripts/detach-task.sh";
33642
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
+ */
33643
33658
  async function resolveDetachScriptPath(params) {
33644
33659
  if (cachedScriptPath !== void 0) return cachedScriptPath;
33645
33660
  const packageRoot = await resolveSymiPackageRoot({
@@ -33652,7 +33667,17 @@ async function resolveDetachScriptPath(params) {
33652
33667
  return null;
33653
33668
  }
33654
33669
  const candidate = path.join(packageRoot, SCRIPT_REL_PATH);
33655
- cachedScriptPath = fs.existsSync(candidate) ? candidate : null;
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;
33656
33681
  return cachedScriptPath;
33657
33682
  }
33658
33683
  async function buildLongTaskPromptSuffix(params) {
@@ -33660,11 +33685,25 @@ async function buildLongTaskPromptSuffix(params) {
33660
33685
  if (!scriptPath) return "";
33661
33686
  return "\n\n" + [
33662
33687
  "LONG-RUNNING TASK PATTERN:",
33663
- "- For any task that may exceed 15 minutes (deep nmap scans of /24 or larger, full brute-force sweeps, long builds, exhaustive enumeration): detach from the agent turn. Do NOT foreground-block the exec tool for the full duration; the agent turn will hit its timeout and SIGTERM the process mid-run.",
33664
- `- Detach pattern: exec \`${scriptPath} <task-id> <workdir> <command...>\`. The script spawns under setsid+nohup, writes PID / cmd / started / status / log files in the workdir. Use the agent workspace as the workdir.`,
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.",
33665
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.",
33666
- "- Register a cron monitor using the `cron` tool with action=add. Schedule every 2-3 minutes. Job prompt must include the task-id, PID, log path, and status path so the future turn has enough context. Example job prompt: \"Check if PID <pid> is alive (kill -0). If alive: tail -n 20 <log>, post one-sentence progress update. If not alive: read <status> and tail <log>, post a final summary, then call cron tool with action=remove id=<this-cron-id>.\"",
33667
- "- When the monitor turn observes status=complete, it MUST call the cron tool with action=remove to clean up its own job. Do not leave stale monitors running."
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."
33668
33707
  ].join("\n");
33669
33708
  }
33670
33709
 
@@ -36544,7 +36583,7 @@ async function runAgentTurn(params) {
36544
36583
  function createDefaultDeps() {
36545
36584
  return {
36546
36585
  sendMessageWhatsApp: async (...args) => {
36547
- const { sendMessageWhatsApp } = await import("./web-CJjSOTnI.js");
36586
+ const { sendMessageWhatsApp } = await import("./web-Cclb7FTq.js");
36548
36587
  return await sendMessageWhatsApp(...args);
36549
36588
  },
36550
36589
  sendMessageTelegram: async (...args) => {
@@ -53982,7 +54021,7 @@ function loadWebLoginQr() {
53982
54021
  return webLoginQrPromise;
53983
54022
  }
53984
54023
  function loadWebChannel() {
53985
- webChannelPromise ??= import("./web-CJjSOTnI.js");
54024
+ webChannelPromise ??= import("./web-Cclb7FTq.js");
53986
54025
  return webChannelPromise;
53987
54026
  }
53988
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-CGoJQT_s.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-B6m8UOCl.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
@@ -1,118 +1,118 @@
1
1
  import { g as resolveStateDir } from "./paths-Cqn-zk3M.js";
2
2
  import { B as theme, S as shortenHomePath, g as resolveConfigDir, x as shortenHomeInString, y as resolveUserPath } from "./utils-B-0b9bGM.js";
3
3
  import "./thinking-EAliFiVK.js";
4
- import "./reply-DyjXROKp.js";
4
+ import "./reply-CpNWtuU4.js";
5
5
  import "./registry-Cja8eT7G.js";
6
6
  import { f as defaultRuntime } from "./subsystem-D9vIQve0.js";
7
7
  import "./exec-CWkblSrI.js";
8
- import "./agent-scope-CgUHAtCo.js";
9
- import "./model-selection-CyFvYcRt.js";
8
+ import "./agent-scope-BRwEc2pG.js";
9
+ import "./model-selection-X1oLh3CE.js";
10
10
  import "./github-copilot-token-DAu1a6BX.js";
11
11
  import "./boolean-BsqeuxE6.js";
12
12
  import "./env-DPCHYPeH.js";
13
13
  import "./message-channel-aT-I_DTX.js";
14
- import "./send-CQVnyJyF.js";
15
- import { i as loadConfig, l as writeConfigFile } from "./config-Dz95lSBW.js";
14
+ import "./send-BVBCh27_.js";
15
+ import { i as loadConfig, l as writeConfigFile } from "./config-tNauHpdq.js";
16
16
  import { m as defaultSlotIdForKey, p as applyExclusiveSlotSelection, s as resolveBundledPluginsDir, t as clearPluginManifestRegistryCache } from "./manifest-registry-C4BxOMWX.js";
17
- import "./runner-DRv0uCK_.js";
18
- import "./image-BWmcNF8N.js";
19
- import "./models-config-CFFjJPe7.js";
17
+ import "./runner-BAVs-p6Z.js";
18
+ import "./image-lCS3o9xj.js";
19
+ import "./models-config-CEMioDUi.js";
20
20
  import "./pi-model-discovery-4uUnLc3n.js";
21
- import "./pi-embedded-helpers-BgdB5kvy.js";
22
- import "./sandbox-B6N8cV4d.js";
23
- import "./chrome-DU2ZysN3.js";
21
+ import "./pi-embedded-helpers-Bs4eMaNo.js";
22
+ import "./sandbox-HZ_uilsn.js";
23
+ import "./chrome-CSJzpT9Z.js";
24
24
  import { u as promptYesNo } from "./tailscale-D5dKabOc.js";
25
25
  import "./auth-B741uFtk.js";
26
- import "./server-context-CCBZN8a0.js";
26
+ import "./server-context-VlF1_hYj.js";
27
27
  import "./frontmatter-DWQhtOo7.js";
28
- import "./skills-6jdJQ5ZL.js";
29
- import "./routes-BAZTZNuQ.js";
28
+ import "./skills-DqQUtOph.js";
29
+ import "./routes-CVwRcA9D.js";
30
30
  import "./redact-f-Q-hFt_.js";
31
31
  import "./errors-BF3TeRH2.js";
32
- import "./fs-safe-CUjO1ca2.js";
33
- import "./paths-BBm9fwuG.js";
32
+ import "./fs-safe-CTDvb1DF.js";
33
+ import "./paths-CT6jsi4E.js";
34
34
  import "./ssrf-BCYMnxkM.js";
35
- import "./image-ops-1OJMSAUX.js";
36
- import "./store-r1DJSDq-.js";
37
- import "./ports-BOmtxoTv.js";
35
+ import "./image-ops-DYbDWaIA.js";
36
+ import "./store-DvtcmOKj.js";
37
+ import "./ports-OZQlocB7.js";
38
38
  import "./trash-DcMh1i4B.js";
39
- import "./sessions-Cpgnq0pA.js";
40
- import "./dock-BhS32F6E.js";
41
- import "./plugins-DKDeQZF0.js";
42
- import "./accounts-DDuIpcln.js";
43
- import "./accounts-bK-Yqdwx.js";
44
- import "./accounts-DyJN4_vR.js";
45
- import "./bindings-DFaVVCsf.js";
39
+ import "./sessions-jTAGYjWl.js";
40
+ import "./dock-BYiRZSgZ.js";
41
+ import "./plugins-BAyxWQSz.js";
42
+ import "./accounts-Cd816n6l.js";
43
+ import "./accounts-CokRskCl.js";
44
+ import "./accounts-mN_EcgxC.js";
45
+ import "./bindings-ChzePa8q.js";
46
46
  import "./logging-w5jq5901.js";
47
- import "./send-DVm0du0_.js";
47
+ import "./send-CXFTeD_J.js";
48
48
  import "./paths-CyhzMxFA.js";
49
- import "./tool-images-DvUBlqjX.js";
49
+ import "./tool-images-B-pqX3nX.js";
50
50
  import "./tool-display-D8N3rsYt.js";
51
51
  import "./fetch-guard-DOPkVbh3.js";
52
- import "./api-key-rotation-CzuPlV2t.js";
53
- import "./local-roots-aAFLQGkY.js";
54
- import "./sqlite-Dx3J_aSE.js";
55
- import "./model-catalog-8Son0J4O.js";
52
+ import "./api-key-rotation-CEr3lKih.js";
53
+ import "./local-roots-BBeKX7PX.js";
54
+ import "./sqlite-BV5ILFtC.js";
55
+ import "./model-catalog-CvbwxWuC.js";
56
56
  import "./tokens-BuceUQDl.js";
57
- import "./with-timeout-CtVdu_1U.js";
58
- import "./deliver-B4KZ6-oZ.js";
57
+ import "./with-timeout-Cm5EhxG_.js";
58
+ import "./deliver-BYdNAEqj.js";
59
59
  import "./diagnostic-CH0skkp6.js";
60
60
  import "./diagnostic-session-state-CUslJyKP.js";
61
- import "./send-B3RdXvjC.js";
62
- import "./model-tWhwnFf8.js";
63
- import "./reply-prefix-CE2YmmsD.js";
64
- import "./memory-cli-DDumUksr.js";
65
- import "./manager-D4LJSRyZ.js";
61
+ import "./send-DT-5buW5.js";
62
+ import "./model-CeeOcylL.js";
63
+ import "./reply-prefix-BLOOs1aW.js";
64
+ import "./memory-cli-DhkRAIdT.js";
65
+ import "./manager-C1CfGzZ2.js";
66
66
  import "./retry-BoS4e4X_.js";
67
- import "./target-errors-7AvoVa10.js";
67
+ import "./target-errors-CCz79CmV.js";
68
68
  import "./chunk-1dhPX1NK.js";
69
- import "./markdown-tables-CEbN0fEm.js";
70
- import "./ir-DZam9q5M.js";
69
+ import "./markdown-tables-ZwP14ydw.js";
70
+ import "./ir-Dt4hOzxG.js";
71
71
  import "./render-CXDO_kgw.js";
72
- import "./commands-BNLCWX6e.js";
73
- import "./commands-registry-BT0-zzs3.js";
74
- import "./client-jI1oE0_k.js";
75
- import "./call-DwpGquzW.js";
76
- import "./pairing-token-CX3NN_qj.js";
72
+ import "./commands-CtocZ4Lg.js";
73
+ import "./commands-registry-BZ0ZSQpM.js";
74
+ import "./client-Bj_vTpri.js";
75
+ import "./call-tmHtVCkn.js";
76
+ import "./pairing-token-AV-MMfVE.js";
77
77
  import "./channel-activity-BOiuJS3t.js";
78
78
  import "./fetch-DTNGXEzX.js";
79
- import "./tables-BEzT0Da4.js";
80
- import "./send-Bm4ULEzh.js";
81
- import "./pairing-store-CK726Dzq.js";
79
+ import "./tables-C38rzF6E.js";
80
+ import "./send-JWV62VbW.js";
81
+ import "./pairing-store-B8ktu-6j.js";
82
82
  import "./proxy-DU7W9XSc.js";
83
83
  import { t as formatDocsLink } from "./links-3i1eUga4.js";
84
84
  import "./cli-utils-DN_hM6ov.js";
85
85
  import "./help-format-B_-M23wP.js";
86
86
  import "./progress-jIePzvGA.js";
87
- import "./resolve-route-BMoTaVAH.js";
88
- import "./replies-BMqtgBhh.js";
89
- import "./skill-commands-Cxw-jNxU.js";
90
- import "./workspace-dirs-GpkFi6Kw.js";
91
- import "./pi-auth-json-zHckislA.js";
87
+ import "./resolve-route-BcnaXYvh.js";
88
+ import "./replies-Dy92jzrz.js";
89
+ import "./skill-commands-ZXbEITKi.js";
90
+ import "./workspace-dirs-DKu48umx.js";
91
+ import "./pi-auth-json-FpfHyEcu.js";
92
92
  import "./session-cost-usage-BXAI7CNH.js";
93
- import "./outbound-attachment-Bw-c5Cdp.js";
93
+ import "./outbound-attachment-Qfh5dlsg.js";
94
94
  import "./delivery-queue-CAxX6nGq.js";
95
- import "./send-9SapUCg7.js";
96
- import "./onboard-helpers-DFvWPFhU.js";
95
+ import "./send-DsSI8z3F.js";
96
+ import "./onboard-helpers-CdPNw25E.js";
97
97
  import "./prompt-style-CnkMpSXt.js";
98
- import "./pairing-labels-DyXoD1DS.js";
98
+ import "./pairing-labels-Dxb898X5.js";
99
99
  import "./exec-approvals-DXM2pQYL.js";
100
- import "./nodes-screen-8Bq7DiSa.js";
101
- import "./pi-tools.policy-DRWb_Cax.js";
102
- import "./control-service-BYKXzY4f.js";
100
+ import "./nodes-screen-Cd49cSPb.js";
101
+ import "./pi-tools.policy-BBxnqCay.js";
102
+ import "./control-service-BBnhN7aZ.js";
103
103
  import "./stagger-CvFURHzt.js";
104
- import "./channel-selection-V2xDgw16.js";
105
- import { c as resolveArchiveKind } from "./install-safe-path-D3Uz77u7.js";
106
- import "./npm-registry-spec-C0CPT3vr.js";
107
- import "./skill-scanner-hMtQbWPV.js";
108
- import { i as resolvePluginInstallDir, n as installPluginFromNpmSpec, r as installPluginFromPath, t as recordPluginInstall } from "./installs-DQcRVF1U.js";
104
+ import "./channel-selection-DaJDux-Q.js";
105
+ import { c as resolveArchiveKind } from "./install-safe-path-D3mg1DMG.js";
106
+ import "./npm-registry-spec-DchndI6P.js";
107
+ import "./skill-scanner-w3DJvw1Q.js";
108
+ import { i as resolvePluginInstallDir, n as installPluginFromNpmSpec, r as installPluginFromPath, t as recordPluginInstall } from "./installs-CYTVYWH_.js";
109
109
  import { t as renderTable } from "./table-BKlH0YlA.js";
110
- import { t as buildPluginStatusReport } from "./status-B2Qt-5kL.js";
111
- import { n as updateNpmInstalledPlugins } from "./update-Ya0e-JnM.js";
110
+ import { t as buildPluginStatusReport } from "./status-DzHL-eVu.js";
111
+ import { n as updateNpmInstalledPlugins } from "./update-Don6XTH9.js";
112
112
  import fs from "node:fs";
113
113
  import os from "node:os";
114
114
  import path from "node:path";
115
- import fs$1 from "node:fs/promises";
115
+ import fsPromises from "node:fs/promises";
116
116
 
117
117
  //#region src/plugins/source-display.ts
118
118
  function tryRelative(root, filePath) {
@@ -274,9 +274,9 @@ async function uninstallPlugin(params) {
274
274
  extensionsDir
275
275
  }) : null;
276
276
  if (deleteTarget) {
277
- const existed = await fs$1.access(deleteTarget).then(() => true).catch(() => false) ?? false;
277
+ const existed = await fsPromises.access(deleteTarget).then(() => true).catch(() => false) ?? false;
278
278
  try {
279
- await fs$1.rm(deleteTarget, {
279
+ await fsPromises.rm(deleteTarget, {
280
280
  recursive: true,
281
281
  force: true
282
282
  });