openclaw-multi-auto 1.5.4 → 1.5.5

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 (430) hide show
  1. package/dist/{accounts-C_lW3Ag9.js → accounts-BOzyfwW4.js} +2 -2
  2. package/dist/{accounts-BVgYdU9W.js → accounts-BtEMxtPK.js} +1 -1
  3. package/dist/{accounts-BU-CeDai.js → accounts-CUYZBSKh.js} +1 -1
  4. package/dist/{accounts-C9HcPI9h.js → accounts-L9ByEpnP.js} +2 -2
  5. package/dist/{accounts-DJaYqD2E.js → accounts-khXX75l1.js} +7 -7
  6. package/dist/{accounts-Tgelvk0C.js → accounts-yfBeCZtS.js} +17 -17
  7. package/dist/{acp-cli-oWFHnS7i.js → acp-cli-CA2oCCEA.js} +8 -8
  8. package/dist/{active-listener-BEdprTkn.js → active-listener-D1yqT1cw.js} +2 -2
  9. package/dist/{agent-scope-BRElciAf.js → agent-scope-NQ9CtXYN.js} +17 -17
  10. package/dist/{agents-CujsWz9d.js → agents-BWVlofyv.js} +14 -14
  11. package/dist/{agents.config-C42STger.js → agents.config-QVfqc4C-.js} +2 -2
  12. package/dist/{plugin-sdk/api-key-rotation-BRE4X2tf.js → api-key-rotation-DtsNS2Nb.js} +2 -2
  13. package/dist/{api-key-rotation-BbuLHl0_.js → api-key-rotation-Vix80AUw.js} +1 -1
  14. package/dist/{audio-preflight-DDBLZBdb.js → audio-preflight-5FEeDooz.js} +4 -4
  15. package/dist/{audio-preflight-Yg1vzPE1.js → audio-preflight-DUtdCXjJ.js} +34 -34
  16. package/dist/{audio-preflight-BMvgEQ5j.js → audio-preflight-DpxQCpsA.js} +32 -32
  17. package/dist/{audio-transcription-runner-gLFfz8fr.js → audio-transcription-runner-28fcRNNi.js} +12 -12
  18. package/dist/{audio-transcription-runner-DZbSWT9E.js → audio-transcription-runner-B-UvoDjZ.js} +1 -1
  19. package/dist/{audio-transcription-runner-D1cvrZ6s.js → audio-transcription-runner-DYKvqK54.js} +23 -23
  20. package/dist/{audit-membership-runtime-Dntemq07.js → audit-membership-runtime-DWyHWAHM.js} +4 -4
  21. package/dist/{audit-DtlAv66L.js → audit-oC--RZy0.js} +29 -29
  22. package/dist/{auth-Mj21c_GN.js → auth-YB6m93-M.js} +1 -1
  23. package/dist/{auth-choice-CEycltU4.js → auth-choice-CsSQLEkP.js} +13 -13
  24. package/dist/{auth-choice-CGHVedXa.js → auth-choice-gp-h1aBd.js} +11 -11
  25. package/dist/{auth-choice.apply-helpers-D4YQXYfc.js → auth-choice.apply-helpers-CPpuynsT.js} +1 -1
  26. package/dist/{auth-profiles-CdLTlJLc.js → auth-profiles-15pq9j9V.js} +16 -16
  27. package/dist/{auth-token-7kzDLVhb.js → auth-token-Bwn8N6KA.js} +1 -1
  28. package/dist/{banner-CpzKVd4-.js → banner-hcZ0XNXv.js} +2 -2
  29. package/dist/{bonjour-discovery-BuS9wF_p.js → bonjour-discovery-2btw06uD.js} +1 -1
  30. package/dist/{browser-cli-BVtbvQ3Z.js → browser-cli-C4PdLYHy.js} +12 -12
  31. package/dist/build-info.json +3 -3
  32. package/dist/bundled/boot-md/handler.js +51 -51
  33. package/dist/bundled/bootstrap-extra-files/handler.js +6 -6
  34. package/dist/bundled/command-logger/handler.js +2 -2
  35. package/dist/bundled/session-memory/handler.js +51 -51
  36. package/dist/{call-Dp9SDkqK.js → call-CZgRbVYm.js} +10 -10
  37. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  38. package/dist/{channel-account-context-ESLVGdUf.js → channel-account-context-BYiOuxnf.js} +5 -5
  39. package/dist/{channel-activity-LfmEkdDN.js → channel-activity-D9K6yeu8.js} +1 -1
  40. package/dist/{channel-activity-BDnjYF7B.js → channel-activity-xHOMiarp.js} +3 -3
  41. package/dist/{channel-options-CsYaFB_4.js → channel-options-DJkf_8wi.js} +3 -3
  42. package/dist/{channel-selection-DFJsYFPo.js → channel-selection-BpIsCVV5.js} +1 -1
  43. package/dist/{channel-web-DzRsJEE4.js → channel-web-wb1My1Yi.js} +17 -17
  44. package/dist/{channels-cli-CpfeOXtJ.js → channels-cli-DlQONtY9.js} +93 -93
  45. package/dist/{channels-status-issues-6V9ktlZD.js → channels-status-issues-Hj-GOSVm.js} +1 -1
  46. package/dist/{chrome-CMU2WVFh.js → chrome-D45SyhQL.js} +8 -8
  47. package/dist/{chrome-DxxEKrY7.js → chrome-DwizpzOC.js} +18 -18
  48. package/dist/{chrome-CyM61Cn2.js → chrome-L_icBVLq.js} +4 -4
  49. package/dist/{clawbot-cli-COtnakIJ.js → clawbot-cli-CyTZUVIJ.js} +11 -11
  50. package/dist/cli/daemon-cli.js +1 -1
  51. package/dist/{cli-jnT1hYPO.js → cli-CNTrB-ni.js} +73 -73
  52. package/dist/{client-C-wA75vx.js → client-g0366Z73.js} +2 -2
  53. package/dist/{command-registry-g5tDqdAU.js → command-registry-VOmumlmD.js} +11 -11
  54. package/dist/{command-secret-targets-u3eWn-W3.js → command-secret-targets-CIMuIdbL.js} +4 -4
  55. package/dist/{commands-C8pWcFs_.js → commands-DU7At3rY.js} +1 -1
  56. package/dist/{commands-registry-J6nVL3BQ.js → commands-registry-B_WUa9KB.js} +3 -3
  57. package/dist/{commands-registry-D5qXbFJn.js → commands-registry-V1zZ5pPC.js} +4 -4
  58. package/dist/{completion-cli-DQsyli3B.js → completion-cli-pqdmKVTo.js} +13 -13
  59. package/dist/{config-cli-DUycVHoC.js → config-cli-BqznmzlM.js} +7 -7
  60. package/dist/{config-guard--Obk2MGi.js → config-guard-D8jiLjr7.js} +3 -3
  61. package/dist/{config-validation-iOxszdEd.js → config-validation-BngLiGoq.js} +3 -3
  62. package/dist/{configure-Al_pz_5z.js → configure-B--Umf_O.js} +17 -17
  63. package/dist/{control-ui-assets-DpjfNcTC.js → control-ui-assets-C9ewbI8z.js} +1 -1
  64. package/dist/{cron-cli-CQ5EZw_b.js → cron-cli-DCRPpI1m.js} +11 -11
  65. package/dist/{daemon-cli-Bb80Mzv5.js → daemon-cli-DtBzKM_d.js} +15 -15
  66. package/dist/{daemon-install-B09ifLcJ.js → daemon-install-ckPBUAjJ.js} +4 -4
  67. package/dist/{daemon-install-helpers-CYpECiEx.js → daemon-install-helpers-BWf-PrgA.js} +11 -11
  68. package/dist/{deliver-BXVcFIHL.js → deliver-B9cys0EZ.js} +1 -1
  69. package/dist/{deliver-DbdywYJE.js → deliver-D4o6VIur.js} +21 -21
  70. package/dist/{deliver-CxF9h9PE.js → deliver-b93aBgie.js} +7 -7
  71. package/dist/deliver-runtime-CdWd-JQI.js +61 -0
  72. package/dist/{deliver-runtime-DTaIS-1i.js → deliver-runtime-DhaQJ0pI.js} +3 -3
  73. package/dist/deliver-runtime-P-G3bPjW.js +36 -0
  74. package/dist/deps-send-discord.runtime-BltWu9GW.js +36 -0
  75. package/dist/deps-send-discord.runtime-DnbhTFX9.js +26 -0
  76. package/dist/deps-send-imessage.runtime-BOiQ6mDx.js +25 -0
  77. package/dist/deps-send-imessage.runtime-CdCif3t7.js +35 -0
  78. package/dist/deps-send-signal.runtime-CTcl388M.js +24 -0
  79. package/dist/deps-send-signal.runtime-fHqkSmMW.js +34 -0
  80. package/dist/deps-send-slack.runtime-CCqBz4Kg.js +22 -0
  81. package/dist/deps-send-slack.runtime-CkyZO7ln.js +32 -0
  82. package/dist/{deps-send-telegram.runtime-B6wp3kx8.js → deps-send-telegram.runtime-C--B69CN.js} +16 -16
  83. package/dist/deps-send-telegram.runtime-DGSKTCpH.js +27 -0
  84. package/dist/deps-send-whatsapp.runtime-BkoMLlCM.js +119 -0
  85. package/dist/deps-send-whatsapp.runtime-CJkTHkah.js +60 -0
  86. package/dist/{deps-send-whatsapp.runtime-CIZqFAqb.js → deps-send-whatsapp.runtime-DvTL2tzN.js} +7 -7
  87. package/dist/{devices-cli-C0dUbeL4.js → devices-cli-D6V059Dh.js} +8 -8
  88. package/dist/{diagnostic-Co6Kghr-.js → diagnostic-Bn4PZjMZ.js} +2 -2
  89. package/dist/{diagnostic-BfiudAAN.js → diagnostic-BpP9UBCE.js} +1 -1
  90. package/dist/{diagnostics-DCWM_8Ur.js → diagnostics---0c2_jo.js} +5 -5
  91. package/dist/{directory-cli-Dlws13Di.js → directory-cli-RYC34-EU.js} +7 -7
  92. package/dist/{dns-cli-But7QdAw.js → dns-cli-CElNoV5S.js} +5 -5
  93. package/dist/{dock-BbUkruOF.js → dock-nA2DVPCV.js} +4 -4
  94. package/dist/{docs-cli-Ck2IKAtw.js → docs-cli-Bv7ltPvi.js} +4 -4
  95. package/dist/{doctor-completion-Nat1HXE1.js → doctor-completion-CQIiN7rY.js} +2 -2
  96. package/dist/{doctor-config-flow-WCCoUXeB.js → doctor-config-flow-BOAryh5P.js} +15 -15
  97. package/dist/{enable-C3H8BtN4.js → enable-688HYBNS.js} +1 -1
  98. package/dist/entry.js +2 -2
  99. package/dist/{plugin-sdk/errors-DaiAM-yU.js → errors-CCLeFWAg.js} +1 -1
  100. package/dist/{exec-approvals-allowlist-ySf2Yo5n.js → exec-approvals-allowlist-C0Eya3rT.js} +1 -1
  101. package/dist/{exec-approvals-cli-DhLLOys6.js → exec-approvals-cli-BYYerKp8.js} +16 -16
  102. package/dist/{exec-safe-bin-runtime-policy-DnXViOlF.js → exec-safe-bin-runtime-policy-BmJmfDRo.js} +2 -2
  103. package/dist/extensionAPI.js +6 -6
  104. package/dist/{fetch-D-SiVqBm.js → fetch-BhAHVdwx.js} +3 -3
  105. package/dist/{fetch-DuraYswo.js → fetch-BlJWzEP6.js} +5 -5
  106. package/dist/{fetch-guard-CKYBfJ66.js → fetch-guard-BbBdhWz_.js} +1 -1
  107. package/dist/{fetch-guard-DWr0d00H.js → fetch-guard-ChYBwfiy.js} +2 -2
  108. package/dist/{frontmatter-BkTfEZ93.js → frontmatter-CvaMP376.js} +3 -3
  109. package/dist/{fs-safe-CTYUrIgQ.js → fs-safe-0jAo_Whb.js} +4 -4
  110. package/dist/{fs-safe-jMDpsYew.js → fs-safe-CFLs-j60.js} +24 -24
  111. package/dist/{gateway-cli--atF6LYo.js → gateway-cli-DOYWSRqa.js} +153 -153
  112. package/dist/{gateway-rpc-DYyQQ1z9.js → gateway-rpc-w6t8Eq_1.js} +1 -1
  113. package/dist/{github-copilot-token-BDioPmd6.js → github-copilot-token-D13V9YBz.js} +7 -7
  114. package/dist/{health-BDJ72U4Z.js → health-C1EstYHd.js} +11 -11
  115. package/dist/{hooks-cli-r0UX8B9a.js → hooks-cli-BFMve5sG.js} +81 -81
  116. package/dist/{hooks-status-CxBdpBry.js → hooks-status-DBnEWOEP.js} +1 -1
  117. package/dist/{image-eT7Y-nP5.js → image-Bbn53mzj.js} +6 -6
  118. package/dist/{image-CyHTO86Q.js → image-Bw71y73Q.js} +5 -5
  119. package/dist/{image-BCVLo0qw.js → image-DAOPwVXi.js} +1 -1
  120. package/dist/{image-ops-pjs5W0CZ.js → image-ops-AJL9tN3_.js} +10 -10
  121. package/dist/{image-ops-BuUnEOE0.js → image-ops-CehkHxmW.js} +2 -2
  122. package/dist/image-runtime-6jhrqcle.js +55 -0
  123. package/dist/image-runtime-CVv2ra9J.js +29 -0
  124. package/dist/{image-runtime-DtCKpMPZ.js → image-runtime-wlCLVvVv.js} +3 -3
  125. package/dist/{inspect-BeU4yMp2.js → inspect-CUxeDA8c.js} +4 -4
  126. package/dist/{install-safe-path-BiL8OJvK.js → install-safe-path-BX58wFBl.js} +25 -25
  127. package/dist/{installs-BwKmG0Uy.js → installs-B-xr0Fzq.js} +9 -9
  128. package/dist/{ipv4-BoGwfnEw.js → ipv4-C4Yt-xid.js} +1 -1
  129. package/dist/{ir-B83looB-.js → ir-DAP-B-Xw.js} +8 -8
  130. package/dist/{ir-Da7Ahsqc.js → ir-otKVkb4a.js} +8 -8
  131. package/dist/{issue-format-CJ89_-9v.js → issue-format-DSksfKiV.js} +1 -1
  132. package/dist/{json-files-CuJjdF_0.js → json-files-rR19q30D.js} +8 -8
  133. package/dist/{legacy-names-DOC03BkU.js → legacy-names-TyzbVqa_.js} +1 -1
  134. package/dist/{lifecycle-core-BzuWBBm8.js → lifecycle-core-DVwen0ks.js} +5 -5
  135. package/dist/llm-slug-generator.js +51 -51
  136. package/dist/{logger-BfjWMCSD.js → logger-DMZQQtxK.js} +7 -7
  137. package/dist/{login-VkQ9MW3d.js → login-BcRaGQb6.js} +3 -3
  138. package/dist/{login-CrIwcrVI.js → login-DiCctRo1.js} +5 -5
  139. package/dist/{login-qr-BVMQ-xQz.js → login-qr-C9D47WEZ.js} +6 -6
  140. package/dist/{login-qr-BpPDZdl_.js → login-qr-MUbXgjtd.js} +10 -10
  141. package/dist/{logs-cli-DWHhSnWs.js → logs-cli-B3TG2lp8.js} +9 -9
  142. package/dist/{manager-1bvuGrNR.js → manager-BW_NSIMl.js} +13 -13
  143. package/dist/{manager-BUBwl6M6.js → manager-iwcRf3Xc.js} +14 -14
  144. package/dist/manager-runtime-BN6VevdC.js +18 -0
  145. package/dist/{manager-runtime-H9iQnw64.js → manager-runtime-D3KqpRT7.js} +9 -9
  146. package/dist/{manifest-registry-DVviqWVY.js → manifest-registry-CJb8odRF.js} +1 -1
  147. package/dist/{memory-cli-DarWCbU6.js → memory-cli-DGsJx7YM.js} +12 -12
  148. package/dist/{model-BLV8y_N-.js → model-B792l3Cn.js} +2 -2
  149. package/dist/{model-catalog-DTcBkUlX.js → model-catalog-DZ6kl2Ko.js} +3 -3
  150. package/dist/{model-picker-D-fTOOzb.js → model-picker-6fHys0wK.js} +4 -4
  151. package/dist/{model-selection-Dna0Gz1k.js → model-selection-idoqPmw0.js} +43 -43
  152. package/dist/{models-CmjutMmh.js → models-DerrMmwF.js} +17 -17
  153. package/dist/{models-cli-BZFQX22p.js → models-cli-BkTZg_4v.js} +78 -78
  154. package/dist/{models-config-DNcDbV_G.js → models-config-Dabs9Kdv.js} +6 -6
  155. package/dist/{net-D5fSREu4.js → net-BAIqYNz0.js} +2 -2
  156. package/dist/{node-cli-Cnq-PJTp.js → node-cli-DoEq4zeG.js} +33 -33
  157. package/dist/{node-command-policy-B5BMBBJP.js → node-command-policy-DRhSc90G.js} +1 -1
  158. package/dist/{node-service-BpYZAvpl.js → node-service-CcgtNIeT.js} +1 -1
  159. package/dist/{nodes-cli-CkrDOWpv.js → nodes-cli--d9RiCnK.js} +16 -16
  160. package/dist/{nodes-screen-DfsQohWd.js → nodes-screen-BTND5VDq.js} +7 -7
  161. package/dist/{npm-pack-install-E-mkrZ55.js → npm-pack-install-CGUDOSKz.js} +18 -18
  162. package/dist/{npm-resolution-BUUmg5ON.js → npm-resolution-CAoULCWM.js} +4 -4
  163. package/dist/{onboard-DINGSS9R.js → onboard-CMZRkPVc.js} +6 -6
  164. package/dist/{onboard-channels-Di4MjWDY.js → onboard-channels-SlJu6XWJ.js} +21 -21
  165. package/dist/{onboard-custom-DITBQuWQ.js → onboard-custom-EzfL89yz.js} +4 -4
  166. package/dist/{onboard-helpers-DO7u2ZOy.js → onboard-helpers-lGpaVp03.js} +10 -10
  167. package/dist/{onboard-hooks-K02_ZWDq.js → onboard-hooks-B7TMiJoY.js} +4 -4
  168. package/dist/{onboard-remote-5-ugiSN2.js → onboard-remote-nvWS7on7.js} +4 -4
  169. package/dist/{onboard-skills-CSzbC2KZ.js → onboard-skills-hz91W03u.js} +4 -4
  170. package/dist/{onboarding-BM4dvUK6.js → onboarding-CTPuMVQI.js} +14 -14
  171. package/dist/{onboarding.finalize-p_RDh7ET.js → onboarding.finalize-DLzl5ZOg.js} +87 -87
  172. package/dist/{onboarding.gateway-config-DldlRfms.js → onboarding.gateway-config-C4MoTr60.js} +18 -18
  173. package/dist/{onboarding.secret-input-BIRIJiCU.js → onboarding.secret-input-BFD0OW4X.js} +1 -1
  174. package/dist/{openai-model-default-CY2Nk4cn.js → openai-model-default-h4LbSR7f.js} +2 -2
  175. package/dist/{openclaw-root-BFfBQ6FD.js → openclaw-root-BU3lu8pM.js} +8 -8
  176. package/dist/{outbound-ChDjtuD6.js → outbound-C2kanETZ.js} +6 -6
  177. package/dist/{outbound-attachment-DfWsfe2N.js → outbound-attachment-CAJBGcna.js} +2 -2
  178. package/dist/{outbound-attachment-DqHlD21U.js → outbound-attachment-DBrYWX8h.js} +2 -2
  179. package/dist/{outbound-DPdJe7e1.js → outbound-kbHYt1JW.js} +3 -3
  180. package/dist/{pairing-cli-D2VZxWg3.js → pairing-cli-CXbmkz7Z.js} +8 -8
  181. package/dist/{pairing-labels-D4rnJ5pJ.js → pairing-labels-CaPLIhlh.js} +1 -1
  182. package/dist/{pairing-store-BXArq4hn.js → pairing-store-Brs9aNn_.js} +3 -3
  183. package/dist/{path-alias-guards-DbNvNQar.js → path-alias-guards-DhIwq92y.js} +3 -3
  184. package/dist/{path-alias-guards-BzvdLvTI.js → path-alias-guards-DqXRZmsL.js} +1 -1
  185. package/dist/{path-safety-ClQO4BB6.js → path-safety-BjIM4N4t.js} +1 -1
  186. package/dist/{paths-Cvc9EM8Y.js → paths-C6TxBCvO.js} +5 -5
  187. package/dist/{paths-Bkr-BCxW.js → paths-CCxysrzL.js} +4 -4
  188. package/dist/{paths-BB_1ZWOj.js → paths-Cv63xST_.js} +9 -9
  189. package/dist/{pi-embedded-BQQa91aA.js → pi-embedded-BaGj07T0.js} +158 -158
  190. package/dist/{pi-embedded-CgQ_W6Xs.js → pi-embedded-DYU79yGe.js} +24 -24
  191. package/dist/{pi-embedded-helpers-oXDyXTD8.js → pi-embedded-helpers-DC2OtKrl.js} +6 -6
  192. package/dist/{pi-embedded-helpers-CwuBTKza.js → pi-embedded-helpers-uTRAmQ4n.js} +3 -3
  193. package/dist/{pi-embedded-helpers-CLXm10bV.js → pi-embedded-helpers-wy0DZvx1.js} +52 -52
  194. package/dist/{pi-model-discovery-Dymwdjt0.js → pi-model-discovery-BGgOlX8N.js} +7 -7
  195. package/dist/{pi-model-discovery-CECkJMCt.js → pi-model-discovery-DOb5RTev.js} +1 -1
  196. package/dist/pi-model-discovery-runtime-Bwmi4Ev8.js +11 -0
  197. package/dist/{pi-model-discovery-runtime-g7UP-SFR.js → pi-model-discovery-runtime-DShjmiiF.js} +5 -5
  198. package/dist/{pi-tools.before-tool-call.runtime-Df7B-ggW.js → pi-tools.before-tool-call.runtime-B079pVah.js} +5 -5
  199. package/dist/{pi-tools.before-tool-call.runtime-Cwab_5W1.js → pi-tools.before-tool-call.runtime-BuLxSyx9.js} +9 -9
  200. package/dist/{pi-tools.policy-CydUEzFi.js → pi-tools.policy-DZ-X86Va.js} +5 -5
  201. package/dist/{plugin-auto-enable-BE4ZVjAL.js → plugin-auto-enable-BCMqEDjQ.js} +3 -3
  202. package/dist/{plugin-registry-DXW3eyib.js → plugin-registry-BPlCWMur.js} +3 -3
  203. package/dist/plugin-sdk/discord.js +6 -6
  204. package/dist/plugin-sdk/index.js +50 -50
  205. package/dist/plugin-sdk/mattermost.js +3 -3
  206. package/dist/{plugins-4Rj4OjLY.js → plugins-CWkRQYDj.js} +11 -11
  207. package/dist/{plugins-VAZrrfgw.js → plugins-DCxT-37x.js} +2 -2
  208. package/dist/{plugins-cli-BQJOOVMx.js → plugins-cli-D9ILEfyb.js} +83 -83
  209. package/dist/{ports-DMkRSlnH.js → ports-BlCLhwbc.js} +1 -1
  210. package/dist/{ports-DogAV7pa.js → ports-CER5YPnN.js} +2 -2
  211. package/dist/{program-BA11qFx1.js → program-CV56xn7w.js} +81 -81
  212. package/dist/{prompt-select-styled-B0GS28ia.js → prompt-select-styled-BOa5I_PU.js} +40 -40
  213. package/dist/{provider-auth-helpers-CrGL-jik.js → provider-auth-helpers-c6mNCUXO.js} +5 -5
  214. package/dist/{proxy-env-wKO3g8Yv.js → proxy-env-BMrSVckF.js} +1 -1
  215. package/dist/{proxy-env-DlmzDx8x.js → proxy-env-Cq5gdrbj.js} +1 -1
  216. package/dist/{proxy-fetch-B2pEfjbR.js → proxy-fetch-CCjEYbFm.js} +1 -1
  217. package/dist/{push-apns-BEwBjZ0a.js → push-apns-FOkPD05E.js} +5 -5
  218. package/dist/{pw-ai-DNMjFMqH.js → pw-ai-Cl1Lc7RC.js} +14 -14
  219. package/dist/{pw-ai-CnbxziFP.js → pw-ai-CxBU3aK5.js} +18 -18
  220. package/dist/{pw-ai-CmphSzHx.js → pw-ai-GcYO6HPE.js} +1 -1
  221. package/dist/{qmd-manager-BtIKUaO9.js → qmd-manager-BsYsO9Ii.js} +10 -10
  222. package/dist/{qmd-manager-Dp6PJ8zQ.js → qmd-manager-DEJMqoGd.js} +20 -20
  223. package/dist/{qr-cli-CFz9kS5X.js → qr-cli-BD2jK4fg.js} +2 -2
  224. package/dist/{query-expansion-BrSWVbaE.js → query-expansion-1UTIWjP6.js} +12 -12
  225. package/dist/{query-expansion-CX-1fS52.js → query-expansion-DtLc3wjL.js} +6 -6
  226. package/dist/{redact-COik8ET1.js → redact-ClbcYG1J.js} +1 -1
  227. package/dist/{redact-snapshot-Bs4goggz.js → redact-snapshot-D_qQD4A-.js} +1 -1
  228. package/dist/{register.agent-D641ju8B.js → register.agent-tbPA5YAy.js} +94 -94
  229. package/dist/register.configure-DuwRrXc2.js +165 -0
  230. package/dist/{register.maintenance-BFkk8MEH.js → register.maintenance-DrqDlV5b.js} +95 -95
  231. package/dist/{register.message-D5uE_Hop.js → register.message-CoKXNaU0.js} +74 -74
  232. package/dist/{register.onboard-zHFvSwFr.js → register.onboard-CSWOSL9O.js} +18 -18
  233. package/dist/{register.setup-uTbv3_P1.js → register.setup-DBx5JX6h.js} +21 -21
  234. package/dist/{register.status-health-sessions-CB7t-JQx.js → register.status-health-sessions-D1bPtfep.js} +88 -88
  235. package/dist/{register.subclis-MEiNmuy5.js → register.subclis-QGJNmjss.js} +31 -31
  236. package/dist/{rpc-DVfuVmy9.js → rpc-DkMrTUww.js} +1 -1
  237. package/dist/{run-main-mrvunzuy.js → run-main-CPftxqTe.js} +92 -92
  238. package/dist/{run-with-concurrency-BgYfgkXT.js → run-with-concurrency-D_ZpbgEG.js} +4 -4
  239. package/dist/{runtime-C87FQrrv.js → runtime-MAH2Oph4.js} +3 -3
  240. package/dist/{runtime-config-collectors-BQaC477D.js → runtime-config-collectors-BJMV6Mt1.js} +1 -1
  241. package/dist/{runtime-whatsapp-login.runtime-DjdgScUI.js → runtime-whatsapp-login.runtime-CGYWl9eB.js} +7 -7
  242. package/dist/runtime-whatsapp-login.runtime-IeylZEl4.js +13 -0
  243. package/dist/runtime-whatsapp-outbound.runtime-ClBRuLsq.js +22 -0
  244. package/dist/{runtime-whatsapp-outbound.runtime-B74K7opl.js → runtime-whatsapp-outbound.runtime-hZEfYaRM.js} +15 -15
  245. package/dist/{sandbox-Ct-_lzi1.js → sandbox-0TbzPJaS.js} +18 -18
  246. package/dist/{sandbox-cli-C3RoXFRE.js → sandbox-cli-NLaxffXl.js} +25 -25
  247. package/dist/{secrets-cli-B3hqCxvs.js → secrets-cli-KLGbYet6.js} +11 -11
  248. package/dist/{security-cli-DcHIyXr7.js → security-cli-EIEkcYVb.js} +42 -42
  249. package/dist/{send-dfu6_rgf.js → send-BQERFNyo.js} +5 -5
  250. package/dist/{send-CnRP4P-G.js → send-BW-ZtYG3.js} +5 -5
  251. package/dist/{send-L7gRiwyd.js → send-Bj776ESJ.js} +7 -7
  252. package/dist/{send-2zKwf9NW.js → send-BtZAqquW.js} +11 -11
  253. package/dist/{send-DAQAKa9Z.js → send-CxgWxXZc.js} +6 -6
  254. package/dist/{send-5o2p_xjn.js → send-DAMtu9kK.js} +4 -4
  255. package/dist/{send-PE6cwoTe.js → send-DcxmcFi_.js} +8 -8
  256. package/dist/{send-6lz6rNVP.js → send-Dx2RkUOZ.js} +6 -6
  257. package/dist/{send-u1Bo4CSn.js → send-sC6ka831.js} +8 -8
  258. package/dist/{send-BHTiZcH3.js → send-vmONuVgL.js} +26 -26
  259. package/dist/{server-context-8pDe2iyd.js → server-context-HJVwPQYn.js} +12 -12
  260. package/dist/{server-Ci4xtuR9.js → server-kUElNhlY.js} +20 -20
  261. package/dist/{server-lifecycle-k5daSrde.js → server-lifecycle-BE32unpZ.js} +2 -2
  262. package/dist/{server-middleware-DMiFT9xU.js → server-middleware-AS2VOYkK.js} +1 -1
  263. package/dist/{server-node-events-BmnPjNXE.js → server-node-events-DkbZzI6P.js} +74 -74
  264. package/dist/{service-BhOFtHSw.js → service-CyStNr3d.js} +15 -15
  265. package/dist/{session-D8ImowSs.js → session-A4QhBRvH.js} +8 -8
  266. package/dist/{session-DkOjpX3_.js → session-CaCx4rPH.js} +1 -1
  267. package/dist/{session-utils-DKRmXD2l.js → session-utils-CGqb1oeq.js} +6 -6
  268. package/dist/{sessions-svLGrv0Z.js → sessions-BV6HNW4h.js} +4 -4
  269. package/dist/{sessions-BOWPuhe5.js → sessions-BmVDW-7q.js} +15 -15
  270. package/dist/{shared-CjuadLFV.js → shared-DUQavBtY.js} +3 -3
  271. package/dist/{shared-CbAkLNrg.js → shared-JW74idb0.js} +1 -1
  272. package/dist/{skill-commands-DNqJ-kwn.js → skill-commands-CMzBZKG2.js} +9 -9
  273. package/dist/{skill-commands-TpUsdjev.js → skill-commands-WtIJG0CI.js} +5 -5
  274. package/dist/{skill-scanner-BZvvItef.js → skill-scanner-DIFsGcqE.js} +6 -6
  275. package/dist/{skills-DR-vacol.js → skills-7T9PwwL6.js} +3 -3
  276. package/dist/{skills-7ODkHQYp.js → skills-CE_iqvM5.js} +22 -22
  277. package/dist/{skills-cli-oay0tY8Z.js → skills-cli-DPavvthL.js} +5 -5
  278. package/dist/{skills-install-Vmi7xYfa.js → skills-install-BoLfaoWv.js} +6 -6
  279. package/dist/{skills-status-BmN697ff.js → skills-status-CK5Gnf6i.js} +1 -1
  280. package/dist/{slash-commands.runtime-BfaheruW.js → slash-commands.runtime-CMGx2xHy.js} +11 -11
  281. package/dist/slash-commands.runtime-Cpn2tYW4.js +16 -0
  282. package/dist/slash-dispatch.runtime-BAeJXa56.js +114 -0
  283. package/dist/{slash-dispatch.runtime-131yup2e.js → slash-dispatch.runtime-Dh053pQK.js} +6 -6
  284. package/dist/slash-dispatch.runtime-DoBAQBU5.js +56 -0
  285. package/dist/{slash-skill-commands.runtime-D34BKAN-.js → slash-skill-commands.runtime-ChU2tck2.js} +15 -15
  286. package/dist/slash-skill-commands.runtime-DKMvvdDW.js +20 -0
  287. package/dist/{status-BcQchPaC.js → status-Bp-K1BEf.js} +27 -27
  288. package/dist/{status.update-B20UBTDq.js → status.update-ZYUSggzS.js} +2 -2
  289. package/dist/{store-D89wDcz9.js → store--eR1R_UX.js} +2 -2
  290. package/dist/{store-DDkqo1sO.js → store-DeASfYEV.js} +5 -5
  291. package/dist/{subagent-registry-CPxHbyN5.js → subagent-registry-8qHIVhRq.js} +149 -149
  292. package/dist/{subagent-registry-runtime-DbSf_Je6.js → subagent-registry-runtime-DSi5mnCQ.js} +6 -6
  293. package/dist/subagent-registry-runtime-DVomlbm6.js +114 -0
  294. package/dist/subagent-registry-runtime-ppWS3tVu.js +56 -0
  295. package/dist/{subsystem-B45WV3qB.js → subsystem-Di1z8l0Z.js} +14 -14
  296. package/dist/{system-cli-D2yIJoKU.js → system-cli-C2xNfuQM.js} +9 -9
  297. package/dist/{system-run-command-BmhbnLTE.js → system-run-command-BPWZk7KI.js} +1 -1
  298. package/dist/{systemd-DjWVSbAG.js → systemd-Cf-0XKYu.js} +9 -9
  299. package/dist/{systemd-hints-Do-aQ9jw.js → systemd-hints-CYllYKO0.js} +6 -6
  300. package/dist/{systemd-linger-DpmnYgKU.js → systemd-linger-zllO90bD.js} +1 -1
  301. package/dist/{tables-BxyIF0w4.js → tables-CV7Afb0h.js} +1 -1
  302. package/dist/{tables-mE4cJBN2.js → tables-d739Y1xW.js} +1 -1
  303. package/dist/{tailnet-0_FsdHP-.js → tailnet-DJFUq7_R.js} +1 -1
  304. package/dist/{target-errors-KOHiT_JA.js → target-errors-CBI2Ga0y.js} +2 -2
  305. package/dist/{target-errors-mnlwhAjP.js → target-errors-iVxliVqA.js} +4 -4
  306. package/dist/{thinking-BeGmb5k6.js → thinking-DXYisHiZ.js} +7 -7
  307. package/dist/{tokens-q32vI39c.js → tokens-DxnY9ui_.js} +1 -1
  308. package/dist/{tool-images-RZdHiZcG.js → tool-images-2cBx1W8h.js} +2 -2
  309. package/dist/{tool-images-CNPfeCmU.js → tool-images-Bn6dB14u.js} +1 -1
  310. package/dist/{tui-DL6NZZEa.js → tui-DTVy-YhN.js} +6 -6
  311. package/dist/{tui-cli-BNAYhvpu.js → tui-cli-CexRLJ3a.js} +32 -32
  312. package/dist/{update-DlS-d52F.js → update-DijPxK0g.js} +3 -3
  313. package/dist/{update-cli-D8-DqIs2.js → update-cli-9NslG4yR.js} +104 -104
  314. package/dist/{update-runner-CzTQ7BJT.js → update-runner-B6_UqreW.js} +16 -16
  315. package/dist/{web-MR9d7KyB.js → web-1hWJDzNA.js} +6 -6
  316. package/dist/{web-Btj-e8kN.js → web-CzWRVmFt.js} +55 -55
  317. package/dist/web-DGoa03ue.js +118 -0
  318. package/dist/{webhooks-cli-QdaQhvbT.js → webhooks-cli-B4ZcXTtw.js} +6 -6
  319. package/dist/{whatsapp-actions-Bp8F0cOF.js → whatsapp-actions-Jm4VW1Ve.js} +17 -17
  320. package/dist/{whatsapp-actions-BHbJJyqw.js → whatsapp-actions-iEArE_Ez.js} +21 -21
  321. package/dist/{with-timeout-BMMWHlH3.js → with-timeout-C8-tY12i.js} +3 -3
  322. package/dist/{workspace-v76gFdZu.js → workspace-CIGzK2_w.js} +1 -1
  323. package/dist/{workspace-U-DyR64O.js → workspace-CUVC6GX1.js} +20 -20
  324. package/dist/{workspace-dirs-Cz_Zgtg2.js → workspace-dirs-D4SMysgC.js} +1 -1
  325. package/dist/{wsl-CvQfS6aU.js → wsl-CsGe5QCP.js} +2 -2
  326. package/package.json +1 -1
  327. package/scripts/create-instance.sh +73 -2
  328. package/scripts/npm_publish.sh +1 -0
  329. package/dist/api-key-rotation-BJpKWXy0.js +0 -181
  330. package/dist/deliver-runtime-BFs7iAZF.js +0 -36
  331. package/dist/deliver-runtime-DixuU_uB.js +0 -61
  332. package/dist/deps-send-discord.runtime-CDcLcDSt.js +0 -36
  333. package/dist/deps-send-discord.runtime-DZUccI6Z.js +0 -26
  334. package/dist/deps-send-imessage.runtime-BGPUVMIE.js +0 -35
  335. package/dist/deps-send-imessage.runtime-CF3OpoqY.js +0 -25
  336. package/dist/deps-send-signal.runtime-Cw4-ozeO.js +0 -24
  337. package/dist/deps-send-signal.runtime-DQDD44_O.js +0 -34
  338. package/dist/deps-send-slack.runtime-BDsDhS1P.js +0 -22
  339. package/dist/deps-send-slack.runtime-Cpy77gBG.js +0 -32
  340. package/dist/deps-send-telegram.runtime-D_4xVasO.js +0 -27
  341. package/dist/deps-send-whatsapp.runtime-D2sVAclS.js +0 -119
  342. package/dist/deps-send-whatsapp.runtime-DK8jqd14.js +0 -60
  343. package/dist/errors-xt401nuk.js +0 -54
  344. package/dist/image-runtime-B2qh5seQ.js +0 -55
  345. package/dist/image-runtime-BcAK3n8a.js +0 -29
  346. package/dist/manager-runtime-FO1Sx3W8.js +0 -18
  347. package/dist/pi-model-discovery-runtime-BeY4EUPp.js +0 -11
  348. package/dist/plugin-sdk/accounts-CJWOBzwB.js +0 -35
  349. package/dist/plugin-sdk/accounts-DP1-L-QS.js +0 -288
  350. package/dist/plugin-sdk/accounts-DZhWlEg3.js +0 -46
  351. package/dist/plugin-sdk/active-listener-B_sLJTXM.js +0 -50
  352. package/dist/plugin-sdk/audio-preflight-DGEUDxxR.js +0 -69
  353. package/dist/plugin-sdk/audio-transcription-runner-DkoPNPYt.js +0 -2176
  354. package/dist/plugin-sdk/audit-membership-runtime-DSBHHw7o.js +0 -58
  355. package/dist/plugin-sdk/channel-activity-F3d0yUwy.js +0 -94
  356. package/dist/plugin-sdk/channel-web-QF7EpjeP.js +0 -2256
  357. package/dist/plugin-sdk/chrome-BXoCyCkY.js +0 -2415
  358. package/dist/plugin-sdk/commands-registry-t7cXBTfN.js +0 -1125
  359. package/dist/plugin-sdk/config-BkEnz2Po.js +0 -17913
  360. package/dist/plugin-sdk/deliver-B6AG_l67.js +0 -1694
  361. package/dist/plugin-sdk/deliver-runtime-D585kJZc.js +0 -32
  362. package/dist/plugin-sdk/deps-send-discord.runtime-a_OKY2js.js +0 -23
  363. package/dist/plugin-sdk/deps-send-imessage.runtime-Baxy9TD4.js +0 -22
  364. package/dist/plugin-sdk/deps-send-signal.runtime-BwXoCrFl.js +0 -21
  365. package/dist/plugin-sdk/deps-send-slack.runtime-CLmKjgso.js +0 -19
  366. package/dist/plugin-sdk/deps-send-telegram.runtime-BKfdBKnZ.js +0 -24
  367. package/dist/plugin-sdk/deps-send-whatsapp.runtime-BOTwkbx_.js +0 -57
  368. package/dist/plugin-sdk/diagnostic-CsP-lEkI.js +0 -319
  369. package/dist/plugin-sdk/fetch-guard-DETCcJzQ.js +0 -156
  370. package/dist/plugin-sdk/fs-safe-B8y811FR.js +0 -352
  371. package/dist/plugin-sdk/image-DjTEkYZE.js +0 -2310
  372. package/dist/plugin-sdk/image-ops-BSiMpAw4.js +0 -584
  373. package/dist/plugin-sdk/image-runtime-6xPp8m5a.js +0 -25
  374. package/dist/plugin-sdk/ir-DQ7_HbvK.js +0 -1296
  375. package/dist/plugin-sdk/local-roots-BUP4YBmR.js +0 -186
  376. package/dist/plugin-sdk/logger-CZY9KIoY.js +0 -1163
  377. package/dist/plugin-sdk/login-BxEKLlCo.js +0 -57
  378. package/dist/plugin-sdk/login-qr-BQIpMPr9.js +0 -320
  379. package/dist/plugin-sdk/manager-I6KbPihW.js +0 -3917
  380. package/dist/plugin-sdk/manager-runtime-CFfYYWIQ.js +0 -15
  381. package/dist/plugin-sdk/outbound-NS6UHnB6.js +0 -212
  382. package/dist/plugin-sdk/outbound-attachment-Dy6fyf6H.js +0 -19
  383. package/dist/plugin-sdk/path-alias-guards-DBjLbIX_.js +0 -43
  384. package/dist/plugin-sdk/paths-vTM3Lh3X.js +0 -166
  385. package/dist/plugin-sdk/pi-embedded-helpers-1R1gu7eX.js +0 -9627
  386. package/dist/plugin-sdk/pi-model-discovery-runtime-Do9o-dUd.js +0 -8
  387. package/dist/plugin-sdk/pi-model-discovery-v-XPUOOf.js +0 -134
  388. package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-D4sFsIks.js +0 -354
  389. package/dist/plugin-sdk/plugins-DeBZB9l_.js +0 -864
  390. package/dist/plugin-sdk/proxy-fetch-ChxOhWF4.js +0 -38
  391. package/dist/plugin-sdk/pw-ai-DEOmCSSC.js +0 -1938
  392. package/dist/plugin-sdk/qmd-manager-HyYKoEch.js +0 -1448
  393. package/dist/plugin-sdk/query-expansion-CeyKUeDW.js +0 -1011
  394. package/dist/plugin-sdk/redact-DjVX-1N3.js +0 -319
  395. package/dist/plugin-sdk/reply-DAo_Jt8K.js +0 -97916
  396. package/dist/plugin-sdk/resolve-outbound-target-B42qgQS9.js +0 -40
  397. package/dist/plugin-sdk/run-with-concurrency-Bt_ks0Qa.js +0 -1994
  398. package/dist/plugin-sdk/runtime-whatsapp-login.runtime-B6W989eF.js +0 -10
  399. package/dist/plugin-sdk/runtime-whatsapp-outbound.runtime-c_GDFy37.js +0 -19
  400. package/dist/plugin-sdk/send-CQpMudwO.js +0 -2587
  401. package/dist/plugin-sdk/send-DQHLzVyO.js +0 -414
  402. package/dist/plugin-sdk/send-DTB24bEF.js +0 -3135
  403. package/dist/plugin-sdk/send-DfHadjZ_.js +0 -503
  404. package/dist/plugin-sdk/send-XXlW2iny.js +0 -540
  405. package/dist/plugin-sdk/session-6TF6MyaC.js +0 -169
  406. package/dist/plugin-sdk/skill-commands-CkGeFUMl.js +0 -342
  407. package/dist/plugin-sdk/skills-CBkHBYPq.js +0 -1428
  408. package/dist/plugin-sdk/slash-commands.runtime-CxliuGaP.js +0 -13
  409. package/dist/plugin-sdk/slash-dispatch.runtime-DFaeYlJQ.js +0 -52
  410. package/dist/plugin-sdk/slash-skill-commands.runtime-0M0OLCxq.js +0 -16
  411. package/dist/plugin-sdk/ssrf-cFtplYtS.js +0 -202
  412. package/dist/plugin-sdk/store-5nyxY3WU.js +0 -81
  413. package/dist/plugin-sdk/subagent-registry-runtime-DCtmDwna.js +0 -52
  414. package/dist/plugin-sdk/tables-C47P4GTN.js +0 -55
  415. package/dist/plugin-sdk/target-errors-Blia4S69.js +0 -195
  416. package/dist/plugin-sdk/thinking-Bo2eosVa.js +0 -1206
  417. package/dist/plugin-sdk/tokens-DgNRBwIg.js +0 -52
  418. package/dist/plugin-sdk/tool-images-Gk_-0y2N.js +0 -274
  419. package/dist/plugin-sdk/web-CVxZbXyH.js +0 -56
  420. package/dist/plugin-sdk/whatsapp-actions-Bw0H9g-n.js +0 -80
  421. package/dist/register.configure-BrDOSLIq.js +0 -165
  422. package/dist/runtime-whatsapp-login.runtime-DUb55byQ.js +0 -13
  423. package/dist/runtime-whatsapp-outbound.runtime-Bii_xSfI.js +0 -22
  424. package/dist/slash-commands.runtime-CVw6566g.js +0 -16
  425. package/dist/slash-dispatch.runtime-B9Ygtzi4.js +0 -56
  426. package/dist/slash-dispatch.runtime-D0xInkf3.js +0 -114
  427. package/dist/slash-skill-commands.runtime-DxZ4z5h6.js +0 -20
  428. package/dist/subagent-registry-runtime-DL1Wv7nA.js +0 -56
  429. package/dist/subagent-registry-runtime-SkB2tTaE.js +0 -114
  430. package/dist/web-DWiOofzq.js +0 -118
@@ -1,352 +0,0 @@
1
- import { B as isSymlinkOpenError, L as hasNodeErrorCode, N as sameFileIdentity, R as isNotFoundPathError, z as isPathInside } from "./run-with-concurrency-Bt_ks0Qa.js";
2
- import { l as expandHomePrefix } from "./paths-MKyEVmEb.js";
3
- import { i as logWarn } from "./logger-CZY9KIoY.js";
4
- import { n as assertNoPathAliasEscape } from "./path-alias-guards-DBjLbIX_.js";
5
- import { constants } from "node:fs";
6
- import path from "node:path";
7
- import os from "node:os";
8
- import fs$1 from "node:fs/promises";
9
- import { randomUUID } from "node:crypto";
10
- import { pipeline } from "node:stream/promises";
11
-
12
- //#region src/infra/fs-safe.ts
13
- var SafeOpenError = class extends Error {
14
- constructor(code, message, options) {
15
- super(message, options);
16
- this.code = code;
17
- this.name = "SafeOpenError";
18
- }
19
- };
20
- const SUPPORTS_NOFOLLOW = process.platform !== "win32" && "O_NOFOLLOW" in constants;
21
- const OPEN_READ_FLAGS = constants.O_RDONLY | (SUPPORTS_NOFOLLOW ? constants.O_NOFOLLOW : 0);
22
- const OPEN_WRITE_EXISTING_FLAGS = constants.O_WRONLY | (SUPPORTS_NOFOLLOW ? constants.O_NOFOLLOW : 0);
23
- const OPEN_WRITE_CREATE_FLAGS = constants.O_WRONLY | constants.O_CREAT | constants.O_EXCL | (SUPPORTS_NOFOLLOW ? constants.O_NOFOLLOW : 0);
24
- const ensureTrailingSep = (value) => value.endsWith(path.sep) ? value : value + path.sep;
25
- async function expandRelativePathWithHome(relativePath) {
26
- let home = process.env.HOME || process.env.USERPROFILE || os.homedir();
27
- try {
28
- home = await fs$1.realpath(home);
29
- } catch {}
30
- return expandHomePrefix(relativePath, { home });
31
- }
32
- async function openVerifiedLocalFile(filePath, options) {
33
- try {
34
- if ((await fs$1.lstat(filePath)).isDirectory()) throw new SafeOpenError("not-file", "not a file");
35
- } catch (err) {
36
- if (err instanceof SafeOpenError) throw err;
37
- }
38
- let handle;
39
- try {
40
- handle = await fs$1.open(filePath, OPEN_READ_FLAGS);
41
- } catch (err) {
42
- if (isNotFoundPathError(err)) throw new SafeOpenError("not-found", "file not found");
43
- if (isSymlinkOpenError(err)) throw new SafeOpenError("symlink", "symlink open blocked", { cause: err });
44
- if (hasNodeErrorCode(err, "EISDIR")) throw new SafeOpenError("not-file", "not a file");
45
- throw err;
46
- }
47
- try {
48
- const [stat, lstat] = await Promise.all([handle.stat(), fs$1.lstat(filePath)]);
49
- if (lstat.isSymbolicLink()) throw new SafeOpenError("symlink", "symlink not allowed");
50
- if (!stat.isFile()) throw new SafeOpenError("not-file", "not a file");
51
- if (options?.rejectHardlinks && stat.nlink > 1) throw new SafeOpenError("invalid-path", "hardlinked path not allowed");
52
- if (!sameFileIdentity(stat, lstat)) throw new SafeOpenError("path-mismatch", "path changed during read");
53
- const realPath = await fs$1.realpath(filePath);
54
- const realStat = await fs$1.stat(realPath);
55
- if (options?.rejectHardlinks && realStat.nlink > 1) throw new SafeOpenError("invalid-path", "hardlinked path not allowed");
56
- if (!sameFileIdentity(stat, realStat)) throw new SafeOpenError("path-mismatch", "path mismatch");
57
- return {
58
- handle,
59
- realPath,
60
- stat
61
- };
62
- } catch (err) {
63
- await handle.close().catch(() => {});
64
- if (err instanceof SafeOpenError) throw err;
65
- if (isNotFoundPathError(err)) throw new SafeOpenError("not-found", "file not found");
66
- throw err;
67
- }
68
- }
69
- async function resolvePathWithinRoot(params) {
70
- let rootReal;
71
- try {
72
- rootReal = await fs$1.realpath(params.rootDir);
73
- } catch (err) {
74
- if (isNotFoundPathError(err)) throw new SafeOpenError("not-found", "root dir not found");
75
- throw err;
76
- }
77
- const rootWithSep = ensureTrailingSep(rootReal);
78
- const expanded = await expandRelativePathWithHome(params.relativePath);
79
- const resolved = path.resolve(rootWithSep, expanded);
80
- if (!isPathInside(rootWithSep, resolved)) throw new SafeOpenError("outside-workspace", "file is outside workspace root");
81
- return {
82
- rootReal,
83
- rootWithSep,
84
- resolved
85
- };
86
- }
87
- async function openFileWithinRoot(params) {
88
- const { rootWithSep, resolved } = await resolvePathWithinRoot(params);
89
- let opened;
90
- try {
91
- opened = await openVerifiedLocalFile(resolved);
92
- } catch (err) {
93
- if (err instanceof SafeOpenError) {
94
- if (err.code === "not-found") throw err;
95
- throw new SafeOpenError("invalid-path", "path is not a regular file under root", { cause: err });
96
- }
97
- throw err;
98
- }
99
- if (params.rejectHardlinks !== false && opened.stat.nlink > 1) {
100
- await opened.handle.close().catch(() => {});
101
- throw new SafeOpenError("invalid-path", "hardlinked path not allowed");
102
- }
103
- if (!isPathInside(rootWithSep, opened.realPath)) {
104
- await opened.handle.close().catch(() => {});
105
- throw new SafeOpenError("outside-workspace", "file is outside workspace root");
106
- }
107
- return opened;
108
- }
109
- async function readFileWithinRoot(params) {
110
- const opened = await openFileWithinRoot({
111
- rootDir: params.rootDir,
112
- relativePath: params.relativePath,
113
- rejectHardlinks: params.rejectHardlinks
114
- });
115
- try {
116
- return await readOpenedFileSafely({
117
- opened,
118
- maxBytes: params.maxBytes
119
- });
120
- } finally {
121
- await opened.handle.close().catch(() => {});
122
- }
123
- }
124
- async function readPathWithinRoot(params) {
125
- const rootDir = path.resolve(params.rootDir);
126
- const candidatePath = path.isAbsolute(params.filePath) ? path.resolve(params.filePath) : path.resolve(rootDir, params.filePath);
127
- return await readFileWithinRoot({
128
- rootDir,
129
- relativePath: path.relative(rootDir, candidatePath),
130
- rejectHardlinks: params.rejectHardlinks,
131
- maxBytes: params.maxBytes
132
- });
133
- }
134
- function createRootScopedReadFile(params) {
135
- const rootDir = path.resolve(params.rootDir);
136
- return async (filePath) => {
137
- return (await readPathWithinRoot({
138
- rootDir,
139
- filePath,
140
- rejectHardlinks: params.rejectHardlinks,
141
- maxBytes: params.maxBytes
142
- })).buffer;
143
- };
144
- }
145
- async function readLocalFileSafely(params) {
146
- const opened = await openVerifiedLocalFile(params.filePath);
147
- try {
148
- return await readOpenedFileSafely({
149
- opened,
150
- maxBytes: params.maxBytes
151
- });
152
- } finally {
153
- await opened.handle.close().catch(() => {});
154
- }
155
- }
156
- async function readOpenedFileSafely(params) {
157
- if (params.maxBytes !== void 0 && params.opened.stat.size > params.maxBytes) throw new SafeOpenError("too-large", `file exceeds limit of ${params.maxBytes} bytes (got ${params.opened.stat.size})`);
158
- return {
159
- buffer: await params.opened.handle.readFile(),
160
- realPath: params.opened.realPath,
161
- stat: params.opened.stat
162
- };
163
- }
164
- function emitWriteBoundaryWarning(reason) {
165
- logWarn(`security: fs-safe write boundary warning (${reason})`);
166
- }
167
- function buildAtomicWriteTempPath(targetPath) {
168
- const dir = path.dirname(targetPath);
169
- const base = path.basename(targetPath);
170
- return path.join(dir, `.${base}.${process.pid}.${randomUUID()}.tmp`);
171
- }
172
- async function writeTempFileForAtomicReplace(params) {
173
- const tempHandle = await fs$1.open(params.tempPath, OPEN_WRITE_CREATE_FLAGS, params.mode);
174
- try {
175
- if (typeof params.data === "string") await tempHandle.writeFile(params.data, params.encoding ?? "utf8");
176
- else await tempHandle.writeFile(params.data);
177
- return await tempHandle.stat();
178
- } finally {
179
- await tempHandle.close().catch(() => {});
180
- }
181
- }
182
- async function verifyAtomicWriteResult(params) {
183
- const rootWithSep = ensureTrailingSep(await fs$1.realpath(params.rootDir));
184
- const opened = await openVerifiedLocalFile(params.targetPath, { rejectHardlinks: true });
185
- try {
186
- if (!sameFileIdentity(opened.stat, params.expectedStat)) throw new SafeOpenError("path-mismatch", "path changed during write");
187
- if (!isPathInside(rootWithSep, opened.realPath)) throw new SafeOpenError("outside-workspace", "file is outside workspace root");
188
- } finally {
189
- await opened.handle.close().catch(() => {});
190
- }
191
- }
192
- async function resolveOpenedFileRealPathForHandle(handle, ioPath) {
193
- try {
194
- return await fs$1.realpath(ioPath);
195
- } catch (err) {
196
- if (!isNotFoundPathError(err)) throw err;
197
- }
198
- const fdCandidates = process.platform === "linux" ? [`/proc/self/fd/${handle.fd}`, `/dev/fd/${handle.fd}`] : process.platform === "win32" ? [] : [`/dev/fd/${handle.fd}`];
199
- for (const fdPath of fdCandidates) try {
200
- return await fs$1.realpath(fdPath);
201
- } catch {}
202
- throw new SafeOpenError("path-mismatch", "unable to resolve opened file path");
203
- }
204
- async function openWritableFileWithinRoot(params) {
205
- const { rootReal, rootWithSep, resolved } = await resolvePathWithinRoot(params);
206
- try {
207
- await assertNoPathAliasEscape({
208
- absolutePath: resolved,
209
- rootPath: rootReal,
210
- boundaryLabel: "root"
211
- });
212
- } catch (err) {
213
- throw new SafeOpenError("invalid-path", "path alias escape blocked", { cause: err });
214
- }
215
- if (params.mkdir !== false) await fs$1.mkdir(path.dirname(resolved), { recursive: true });
216
- let ioPath = resolved;
217
- try {
218
- const resolvedRealPath = await fs$1.realpath(resolved);
219
- if (!isPathInside(rootWithSep, resolvedRealPath)) throw new SafeOpenError("outside-workspace", "file is outside workspace root");
220
- ioPath = resolvedRealPath;
221
- } catch (err) {
222
- if (err instanceof SafeOpenError) throw err;
223
- if (!isNotFoundPathError(err)) throw err;
224
- }
225
- const fileMode = params.mode ?? 384;
226
- let handle;
227
- let createdForWrite = false;
228
- try {
229
- try {
230
- handle = await fs$1.open(ioPath, OPEN_WRITE_EXISTING_FLAGS, fileMode);
231
- } catch (err) {
232
- if (!isNotFoundPathError(err)) throw err;
233
- handle = await fs$1.open(ioPath, OPEN_WRITE_CREATE_FLAGS, fileMode);
234
- createdForWrite = true;
235
- }
236
- } catch (err) {
237
- if (isNotFoundPathError(err)) throw new SafeOpenError("not-found", "file not found");
238
- if (isSymlinkOpenError(err)) throw new SafeOpenError("invalid-path", "symlink open blocked", { cause: err });
239
- throw err;
240
- }
241
- let openedRealPath = null;
242
- try {
243
- const stat = await handle.stat();
244
- if (!stat.isFile()) throw new SafeOpenError("invalid-path", "path is not a regular file under root");
245
- if (stat.nlink > 1) throw new SafeOpenError("invalid-path", "hardlinked path not allowed");
246
- try {
247
- const lstat = await fs$1.lstat(ioPath);
248
- if (lstat.isSymbolicLink() || !lstat.isFile()) throw new SafeOpenError("invalid-path", "path is not a regular file under root");
249
- if (!sameFileIdentity(stat, lstat)) throw new SafeOpenError("path-mismatch", "path changed during write");
250
- } catch (err) {
251
- if (!isNotFoundPathError(err)) throw err;
252
- }
253
- const realPath = await resolveOpenedFileRealPathForHandle(handle, ioPath);
254
- openedRealPath = realPath;
255
- const realStat = await fs$1.stat(realPath);
256
- if (!sameFileIdentity(stat, realStat)) throw new SafeOpenError("path-mismatch", "path mismatch");
257
- if (realStat.nlink > 1) throw new SafeOpenError("invalid-path", "hardlinked path not allowed");
258
- if (!isPathInside(rootWithSep, realPath)) throw new SafeOpenError("outside-workspace", "file is outside workspace root");
259
- if (params.truncateExisting !== false && !createdForWrite) await handle.truncate(0);
260
- return {
261
- handle,
262
- createdForWrite,
263
- openedRealPath: realPath,
264
- openedStat: stat
265
- };
266
- } catch (err) {
267
- const cleanupCreatedPath = createdForWrite && err instanceof SafeOpenError;
268
- const cleanupPath = openedRealPath ?? ioPath;
269
- await handle.close().catch(() => {});
270
- if (cleanupCreatedPath) await fs$1.rm(cleanupPath, { force: true }).catch(() => {});
271
- throw err;
272
- }
273
- }
274
- async function writeFileWithinRoot(params) {
275
- const target = await openWritableFileWithinRoot({
276
- rootDir: params.rootDir,
277
- relativePath: params.relativePath,
278
- mkdir: params.mkdir,
279
- truncateExisting: false
280
- });
281
- const destinationPath = target.openedRealPath;
282
- const targetMode = target.openedStat.mode & 511;
283
- await target.handle.close().catch(() => {});
284
- let tempPath = null;
285
- try {
286
- tempPath = buildAtomicWriteTempPath(destinationPath);
287
- const writtenStat = await writeTempFileForAtomicReplace({
288
- tempPath,
289
- data: params.data,
290
- encoding: params.encoding,
291
- mode: targetMode || 384
292
- });
293
- await fs$1.rename(tempPath, destinationPath);
294
- tempPath = null;
295
- try {
296
- await verifyAtomicWriteResult({
297
- rootDir: params.rootDir,
298
- targetPath: destinationPath,
299
- expectedStat: writtenStat
300
- });
301
- } catch (err) {
302
- emitWriteBoundaryWarning(`post-write verification failed: ${String(err)}`);
303
- throw err;
304
- }
305
- } finally {
306
- if (tempPath) await fs$1.rm(tempPath, { force: true }).catch(() => {});
307
- }
308
- }
309
- async function copyFileWithinRoot(params) {
310
- const source = await openVerifiedLocalFile(params.sourcePath, { rejectHardlinks: params.rejectSourceHardlinks });
311
- if (params.maxBytes !== void 0 && source.stat.size > params.maxBytes) {
312
- await source.handle.close().catch(() => {});
313
- throw new SafeOpenError("too-large", `file exceeds limit of ${params.maxBytes} bytes (got ${source.stat.size})`);
314
- }
315
- let target = null;
316
- let sourceClosedByStream = false;
317
- let targetClosedByStream = false;
318
- try {
319
- target = await openWritableFileWithinRoot({
320
- rootDir: params.rootDir,
321
- relativePath: params.relativePath,
322
- mkdir: params.mkdir
323
- });
324
- const sourceStream = source.handle.createReadStream();
325
- const targetStream = target.handle.createWriteStream();
326
- sourceStream.once("close", () => {
327
- sourceClosedByStream = true;
328
- });
329
- targetStream.once("close", () => {
330
- targetClosedByStream = true;
331
- });
332
- await pipeline(sourceStream, targetStream);
333
- } catch (err) {
334
- if (target?.createdForWrite) await fs$1.rm(target.openedRealPath, { force: true }).catch(() => {});
335
- throw err;
336
- } finally {
337
- if (!sourceClosedByStream) await source.handle.close().catch(() => {});
338
- if (target && !targetClosedByStream) await target.handle.close().catch(() => {});
339
- }
340
- }
341
- async function writeFileFromPathWithinRoot(params) {
342
- await copyFileWithinRoot({
343
- sourcePath: params.sourcePath,
344
- rootDir: params.rootDir,
345
- relativePath: params.relativePath,
346
- mkdir: params.mkdir,
347
- rejectSourceHardlinks: true
348
- });
349
- }
350
-
351
- //#endregion
352
- export { openWritableFileWithinRoot as a, writeFileFromPathWithinRoot as c, openFileWithinRoot as i, writeFileWithinRoot as l, copyFileWithinRoot as n, readFileWithinRoot as o, createRootScopedReadFile as r, readLocalFileSafely as s, SafeOpenError as t };