openclaw-multi-auto 1.0.9 → 1.1.1

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 (490) 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/{api-key-rotation-BJpKWXy0.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-Yg1vzPE1.js → audio-preflight-DUtdCXjJ.js} +34 -34
  15. package/dist/{audio-preflight-C58LeYZM.js → audio-preflight-DpxQCpsA.js} +32 -32
  16. package/dist/{audio-transcription-runner-B8jbozH5.js → audio-transcription-runner-28fcRNNi.js} +12 -12
  17. package/dist/{audio-transcription-runner-D1cvrZ6s.js → audio-transcription-runner-DYKvqK54.js} +23 -23
  18. package/dist/{audit-membership-runtime-Dntemq07.js → audit-membership-runtime-DWyHWAHM.js} +4 -4
  19. package/dist/{audit-DtlAv66L.js → audit-oC--RZy0.js} +29 -29
  20. package/dist/{auth-Mj21c_GN.js → auth-YB6m93-M.js} +1 -1
  21. package/dist/{auth-choice-CEycltU4.js → auth-choice-CsSQLEkP.js} +13 -13
  22. package/dist/{auth-choice-CGHVedXa.js → auth-choice-gp-h1aBd.js} +11 -11
  23. package/dist/{auth-choice.apply-helpers-D4YQXYfc.js → auth-choice.apply-helpers-CPpuynsT.js} +1 -1
  24. package/dist/{auth-profiles-CdLTlJLc.js → auth-profiles-15pq9j9V.js} +16 -16
  25. package/dist/{auth-token-7kzDLVhb.js → auth-token-Bwn8N6KA.js} +1 -1
  26. package/dist/{banner-CpzKVd4-.js → banner-hcZ0XNXv.js} +2 -2
  27. package/dist/{bonjour-discovery-BuS9wF_p.js → bonjour-discovery-2btw06uD.js} +1 -1
  28. package/dist/{browser-cli-BVtbvQ3Z.js → browser-cli-C4PdLYHy.js} +12 -12
  29. package/dist/build-info.json +3 -3
  30. package/dist/bundled/boot-md/handler.js +51 -51
  31. package/dist/bundled/bootstrap-extra-files/handler.js +6 -6
  32. package/dist/bundled/command-logger/handler.js +2 -2
  33. package/dist/bundled/session-memory/handler.js +51 -51
  34. package/dist/{call-Dp9SDkqK.js → call-CZgRbVYm.js} +10 -10
  35. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  36. package/dist/{channel-account-context-ESLVGdUf.js → channel-account-context-BYiOuxnf.js} +5 -5
  37. package/dist/{channel-activity-LfmEkdDN.js → channel-activity-D9K6yeu8.js} +1 -1
  38. package/dist/{channel-activity-BDnjYF7B.js → channel-activity-xHOMiarp.js} +3 -3
  39. package/dist/{channel-options-CsYaFB_4.js → channel-options-DJkf_8wi.js} +3 -3
  40. package/dist/{channel-selection-DFJsYFPo.js → channel-selection-BpIsCVV5.js} +1 -1
  41. package/dist/{channel-web-DzRsJEE4.js → channel-web-wb1My1Yi.js} +17 -17
  42. package/dist/{channels-cli-CpfeOXtJ.js → channels-cli-DlQONtY9.js} +93 -93
  43. package/dist/{channels-status-issues-6V9ktlZD.js → channels-status-issues-Hj-GOSVm.js} +1 -1
  44. package/dist/{chrome-CRBG2YP_.js → chrome-DwizpzOC.js} +26 -26
  45. package/dist/{chrome-CyM61Cn2.js → chrome-L_icBVLq.js} +4 -4
  46. package/dist/{clawbot-cli-COtnakIJ.js → clawbot-cli-CyTZUVIJ.js} +11 -11
  47. package/dist/cli/daemon-cli.js +1 -1
  48. package/dist/{cli-jnT1hYPO.js → cli-CNTrB-ni.js} +73 -73
  49. package/dist/{client-C-wA75vx.js → client-g0366Z73.js} +2 -2
  50. package/dist/{command-registry-g5tDqdAU.js → command-registry-VOmumlmD.js} +11 -11
  51. package/dist/{command-secret-targets-u3eWn-W3.js → command-secret-targets-CIMuIdbL.js} +4 -4
  52. package/dist/{commands-C8pWcFs_.js → commands-DU7At3rY.js} +1 -1
  53. package/dist/{commands-registry-J6nVL3BQ.js → commands-registry-B_WUa9KB.js} +3 -3
  54. package/dist/{commands-registry-D5qXbFJn.js → commands-registry-V1zZ5pPC.js} +4 -4
  55. package/dist/{completion-cli-DQsyli3B.js → completion-cli-pqdmKVTo.js} +13 -13
  56. package/dist/{config-cli-DUycVHoC.js → config-cli-BqznmzlM.js} +7 -7
  57. package/dist/{config-guard--Obk2MGi.js → config-guard-D8jiLjr7.js} +3 -3
  58. package/dist/{config-validation-iOxszdEd.js → config-validation-BngLiGoq.js} +3 -3
  59. package/dist/{configure-Al_pz_5z.js → configure-B--Umf_O.js} +17 -17
  60. package/dist/{control-ui-assets-DpjfNcTC.js → control-ui-assets-C9ewbI8z.js} +1 -1
  61. package/dist/{cron-cli-CQ5EZw_b.js → cron-cli-DCRPpI1m.js} +11 -11
  62. package/dist/{daemon-cli-Bb80Mzv5.js → daemon-cli-DtBzKM_d.js} +15 -15
  63. package/dist/{daemon-install-B09ifLcJ.js → daemon-install-ckPBUAjJ.js} +4 -4
  64. package/dist/{daemon-install-helpers-CYpECiEx.js → daemon-install-helpers-BWf-PrgA.js} +11 -11
  65. package/dist/{deliver-ChbFOwjw.js → deliver-D4o6VIur.js} +21 -21
  66. package/dist/{deliver-CxF9h9PE.js → deliver-b93aBgie.js} +7 -7
  67. package/dist/deliver-runtime-CdWd-JQI.js +61 -0
  68. package/dist/deliver-runtime-P-G3bPjW.js +36 -0
  69. package/dist/deps-send-discord.runtime-BltWu9GW.js +36 -0
  70. package/dist/deps-send-discord.runtime-DnbhTFX9.js +26 -0
  71. package/dist/deps-send-imessage.runtime-BOiQ6mDx.js +25 -0
  72. package/dist/deps-send-imessage.runtime-CdCif3t7.js +35 -0
  73. package/dist/deps-send-signal.runtime-CTcl388M.js +24 -0
  74. package/dist/deps-send-signal.runtime-fHqkSmMW.js +34 -0
  75. package/dist/deps-send-slack.runtime-CCqBz4Kg.js +22 -0
  76. package/dist/deps-send-slack.runtime-CkyZO7ln.js +32 -0
  77. package/dist/{deps-send-telegram.runtime-B6wp3kx8.js → deps-send-telegram.runtime-C--B69CN.js} +16 -16
  78. package/dist/deps-send-telegram.runtime-DGSKTCpH.js +27 -0
  79. package/dist/deps-send-whatsapp.runtime-BkoMLlCM.js +119 -0
  80. package/dist/deps-send-whatsapp.runtime-CJkTHkah.js +60 -0
  81. package/dist/{devices-cli-C0dUbeL4.js → devices-cli-D6V059Dh.js} +8 -8
  82. package/dist/{diagnostic-Co6Kghr-.js → diagnostic-Bn4PZjMZ.js} +2 -2
  83. package/dist/{diagnostic-BfiudAAN.js → diagnostic-BpP9UBCE.js} +1 -1
  84. package/dist/{diagnostics-DCWM_8Ur.js → diagnostics---0c2_jo.js} +5 -5
  85. package/dist/{directory-cli-Dlws13Di.js → directory-cli-RYC34-EU.js} +7 -7
  86. package/dist/{dns-cli-But7QdAw.js → dns-cli-CElNoV5S.js} +5 -5
  87. package/dist/{dock-BbUkruOF.js → dock-nA2DVPCV.js} +4 -4
  88. package/dist/{docs-cli-Ck2IKAtw.js → docs-cli-Bv7ltPvi.js} +4 -4
  89. package/dist/{doctor-completion-Nat1HXE1.js → doctor-completion-CQIiN7rY.js} +2 -2
  90. package/dist/{doctor-config-flow-WCCoUXeB.js → doctor-config-flow-BOAryh5P.js} +15 -15
  91. package/dist/{enable-C3H8BtN4.js → enable-688HYBNS.js} +1 -1
  92. package/dist/entry.js +2 -2
  93. package/dist/{errors-xt401nuk.js → errors-CCLeFWAg.js} +1 -1
  94. package/dist/{exec-approvals-allowlist-ySf2Yo5n.js → exec-approvals-allowlist-C0Eya3rT.js} +1 -1
  95. package/dist/{exec-approvals-cli-DhLLOys6.js → exec-approvals-cli-BYYerKp8.js} +16 -16
  96. package/dist/{exec-safe-bin-runtime-policy-DnXViOlF.js → exec-safe-bin-runtime-policy-BmJmfDRo.js} +2 -2
  97. package/dist/{fetch-D-SiVqBm.js → fetch-BhAHVdwx.js} +3 -3
  98. package/dist/{fetch-DuraYswo.js → fetch-BlJWzEP6.js} +5 -5
  99. package/dist/{fetch-guard-CKYBfJ66.js → fetch-guard-BbBdhWz_.js} +1 -1
  100. package/dist/{fetch-guard-DWr0d00H.js → fetch-guard-ChYBwfiy.js} +2 -2
  101. package/dist/{frontmatter-BkTfEZ93.js → frontmatter-CvaMP376.js} +3 -3
  102. package/dist/{fs-safe-CTYUrIgQ.js → fs-safe-0jAo_Whb.js} +4 -4
  103. package/dist/{fs-safe-jMDpsYew.js → fs-safe-CFLs-j60.js} +24 -24
  104. package/dist/{gateway-cli--atF6LYo.js → gateway-cli-DOYWSRqa.js} +153 -153
  105. package/dist/{gateway-rpc-DYyQQ1z9.js → gateway-rpc-w6t8Eq_1.js} +1 -1
  106. package/dist/{github-copilot-token-BDioPmd6.js → github-copilot-token-D13V9YBz.js} +7 -7
  107. package/dist/{health-BDJ72U4Z.js → health-C1EstYHd.js} +11 -11
  108. package/dist/{hooks-cli-r0UX8B9a.js → hooks-cli-BFMve5sG.js} +81 -81
  109. package/dist/{hooks-status-CxBdpBry.js → hooks-status-DBnEWOEP.js} +1 -1
  110. package/dist/{image-C7RmnYxa.js → image-Bbn53mzj.js} +6 -6
  111. package/dist/{image-CyHTO86Q.js → image-Bw71y73Q.js} +5 -5
  112. package/dist/{image-ops-pjs5W0CZ.js → image-ops-AJL9tN3_.js} +10 -10
  113. package/dist/{image-ops-BuUnEOE0.js → image-ops-CehkHxmW.js} +2 -2
  114. package/dist/image-runtime-6jhrqcle.js +55 -0
  115. package/dist/image-runtime-CVv2ra9J.js +29 -0
  116. package/dist/{inspect-BeU4yMp2.js → inspect-CUxeDA8c.js} +4 -4
  117. package/dist/{install-safe-path-BiL8OJvK.js → install-safe-path-BX58wFBl.js} +25 -25
  118. package/dist/{installs-BwKmG0Uy.js → installs-B-xr0Fzq.js} +9 -9
  119. package/dist/{ipv4-BoGwfnEw.js → ipv4-C4Yt-xid.js} +1 -1
  120. package/dist/{ir-B83looB-.js → ir-DAP-B-Xw.js} +8 -8
  121. package/dist/{ir-Da7Ahsqc.js → ir-otKVkb4a.js} +8 -8
  122. package/dist/{issue-format-CJ89_-9v.js → issue-format-DSksfKiV.js} +1 -1
  123. package/dist/{json-files-CuJjdF_0.js → json-files-rR19q30D.js} +8 -8
  124. package/dist/{legacy-names-DOC03BkU.js → legacy-names-TyzbVqa_.js} +1 -1
  125. package/dist/{lifecycle-core-BzuWBBm8.js → lifecycle-core-DVwen0ks.js} +5 -5
  126. package/dist/llm-slug-generator.js +51 -51
  127. package/dist/{logger-BfjWMCSD.js → logger-DMZQQtxK.js} +7 -7
  128. package/dist/{login-VkQ9MW3d.js → login-BcRaGQb6.js} +3 -3
  129. package/dist/{login-CrIwcrVI.js → login-DiCctRo1.js} +5 -5
  130. package/dist/{login-qr-BVMQ-xQz.js → login-qr-C9D47WEZ.js} +6 -6
  131. package/dist/{login-qr-BpPDZdl_.js → login-qr-MUbXgjtd.js} +10 -10
  132. package/dist/{logs-cli-DWHhSnWs.js → logs-cli-B3TG2lp8.js} +9 -9
  133. package/dist/{manager-1bvuGrNR.js → manager-BW_NSIMl.js} +13 -13
  134. package/dist/{manager-BUBwl6M6.js → manager-iwcRf3Xc.js} +14 -14
  135. package/dist/manager-runtime-BN6VevdC.js +18 -0
  136. package/dist/{manager-runtime-H9iQnw64.js → manager-runtime-D3KqpRT7.js} +9 -9
  137. package/dist/{manifest-registry-DVviqWVY.js → manifest-registry-CJb8odRF.js} +1 -1
  138. package/dist/{memory-cli-DarWCbU6.js → memory-cli-DGsJx7YM.js} +12 -12
  139. package/dist/{model-BLV8y_N-.js → model-B792l3Cn.js} +2 -2
  140. package/dist/{model-catalog-DTcBkUlX.js → model-catalog-DZ6kl2Ko.js} +3 -3
  141. package/dist/{model-picker-D-fTOOzb.js → model-picker-6fHys0wK.js} +4 -4
  142. package/dist/{model-selection-Dna0Gz1k.js → model-selection-idoqPmw0.js} +43 -43
  143. package/dist/{models-CmjutMmh.js → models-DerrMmwF.js} +17 -17
  144. package/dist/{models-cli-BZFQX22p.js → models-cli-BkTZg_4v.js} +78 -78
  145. package/dist/{models-config-DNcDbV_G.js → models-config-Dabs9Kdv.js} +6 -6
  146. package/dist/{net-D5fSREu4.js → net-BAIqYNz0.js} +2 -2
  147. package/dist/{node-cli-Cnq-PJTp.js → node-cli-DoEq4zeG.js} +33 -33
  148. package/dist/{node-command-policy-B5BMBBJP.js → node-command-policy-DRhSc90G.js} +1 -1
  149. package/dist/{node-service-BpYZAvpl.js → node-service-CcgtNIeT.js} +1 -1
  150. package/dist/{nodes-cli-CkrDOWpv.js → nodes-cli--d9RiCnK.js} +16 -16
  151. package/dist/{nodes-screen-DfsQohWd.js → nodes-screen-BTND5VDq.js} +7 -7
  152. package/dist/{npm-pack-install-E-mkrZ55.js → npm-pack-install-CGUDOSKz.js} +18 -18
  153. package/dist/{npm-resolution-BUUmg5ON.js → npm-resolution-CAoULCWM.js} +4 -4
  154. package/dist/{onboard-DINGSS9R.js → onboard-CMZRkPVc.js} +6 -6
  155. package/dist/{onboard-channels-Di4MjWDY.js → onboard-channels-SlJu6XWJ.js} +21 -21
  156. package/dist/{onboard-custom-DITBQuWQ.js → onboard-custom-EzfL89yz.js} +4 -4
  157. package/dist/{onboard-helpers-DO7u2ZOy.js → onboard-helpers-lGpaVp03.js} +10 -10
  158. package/dist/{onboard-hooks-K02_ZWDq.js → onboard-hooks-B7TMiJoY.js} +4 -4
  159. package/dist/{onboard-remote-5-ugiSN2.js → onboard-remote-nvWS7on7.js} +4 -4
  160. package/dist/{onboard-skills-CSzbC2KZ.js → onboard-skills-hz91W03u.js} +4 -4
  161. package/dist/{onboarding-BM4dvUK6.js → onboarding-CTPuMVQI.js} +14 -14
  162. package/dist/{onboarding.finalize-p_RDh7ET.js → onboarding.finalize-DLzl5ZOg.js} +87 -87
  163. package/dist/{onboarding.gateway-config-DldlRfms.js → onboarding.gateway-config-C4MoTr60.js} +18 -18
  164. package/dist/{onboarding.secret-input-BIRIJiCU.js → onboarding.secret-input-BFD0OW4X.js} +1 -1
  165. package/dist/{openai-model-default-CY2Nk4cn.js → openai-model-default-h4LbSR7f.js} +2 -2
  166. package/dist/{openclaw-root-BFfBQ6FD.js → openclaw-root-BU3lu8pM.js} +8 -8
  167. package/dist/{outbound-ChDjtuD6.js → outbound-C2kanETZ.js} +6 -6
  168. package/dist/{outbound-attachment-DfWsfe2N.js → outbound-attachment-CAJBGcna.js} +2 -2
  169. package/dist/{outbound-attachment-DqHlD21U.js → outbound-attachment-DBrYWX8h.js} +2 -2
  170. package/dist/{outbound-DPdJe7e1.js → outbound-kbHYt1JW.js} +3 -3
  171. package/dist/{pairing-cli-D2VZxWg3.js → pairing-cli-CXbmkz7Z.js} +8 -8
  172. package/dist/{pairing-labels-D4rnJ5pJ.js → pairing-labels-CaPLIhlh.js} +1 -1
  173. package/dist/{pairing-store-BXArq4hn.js → pairing-store-Brs9aNn_.js} +3 -3
  174. package/dist/{path-alias-guards-DbNvNQar.js → path-alias-guards-DhIwq92y.js} +3 -3
  175. package/dist/{path-alias-guards-BzvdLvTI.js → path-alias-guards-DqXRZmsL.js} +1 -1
  176. package/dist/{path-safety-ClQO4BB6.js → path-safety-BjIM4N4t.js} +1 -1
  177. package/dist/{paths-Cvc9EM8Y.js → paths-C6TxBCvO.js} +5 -5
  178. package/dist/{paths-Bkr-BCxW.js → paths-CCxysrzL.js} +4 -4
  179. package/dist/{paths-BB_1ZWOj.js → paths-Cv63xST_.js} +9 -9
  180. package/dist/{pi-embedded-BC_GWGuw.js → pi-embedded-BaGj07T0.js} +167 -167
  181. package/dist/{pi-embedded-helpers-oXDyXTD8.js → pi-embedded-helpers-DC2OtKrl.js} +6 -6
  182. package/dist/{pi-embedded-helpers-CbIShbOM.js → pi-embedded-helpers-wy0DZvx1.js} +52 -52
  183. package/dist/{pi-model-discovery-Dymwdjt0.js → pi-model-discovery-BGgOlX8N.js} +7 -7
  184. package/dist/{pi-model-discovery-CECkJMCt.js → pi-model-discovery-DOb5RTev.js} +1 -1
  185. package/dist/pi-model-discovery-runtime-Bwmi4Ev8.js +11 -0
  186. package/dist/{pi-model-discovery-runtime-g7UP-SFR.js → pi-model-discovery-runtime-DShjmiiF.js} +5 -5
  187. package/dist/{pi-tools.before-tool-call.runtime-Df7B-ggW.js → pi-tools.before-tool-call.runtime-B079pVah.js} +5 -5
  188. package/dist/{pi-tools.before-tool-call.runtime-Cwab_5W1.js → pi-tools.before-tool-call.runtime-BuLxSyx9.js} +9 -9
  189. package/dist/{pi-tools.policy-CydUEzFi.js → pi-tools.policy-DZ-X86Va.js} +5 -5
  190. package/dist/{plugin-auto-enable-BE4ZVjAL.js → plugin-auto-enable-BCMqEDjQ.js} +3 -3
  191. package/dist/{plugin-registry-DXW3eyib.js → plugin-registry-BPlCWMur.js} +3 -3
  192. package/dist/plugin-sdk/discord.js +6 -6
  193. package/dist/{plugins-4Rj4OjLY.js → plugins-CWkRQYDj.js} +11 -11
  194. package/dist/{plugins-VAZrrfgw.js → plugins-DCxT-37x.js} +2 -2
  195. package/dist/{plugins-cli-BQJOOVMx.js → plugins-cli-D9ILEfyb.js} +83 -83
  196. package/dist/{ports-DMkRSlnH.js → ports-BlCLhwbc.js} +1 -1
  197. package/dist/{ports-DogAV7pa.js → ports-CER5YPnN.js} +2 -2
  198. package/dist/{program-BA11qFx1.js → program-CV56xn7w.js} +81 -81
  199. package/dist/{prompt-select-styled-B0GS28ia.js → prompt-select-styled-BOa5I_PU.js} +40 -40
  200. package/dist/{provider-auth-helpers-CrGL-jik.js → provider-auth-helpers-c6mNCUXO.js} +5 -5
  201. package/dist/{proxy-env-wKO3g8Yv.js → proxy-env-BMrSVckF.js} +1 -1
  202. package/dist/{proxy-env-DlmzDx8x.js → proxy-env-Cq5gdrbj.js} +1 -1
  203. package/dist/{proxy-fetch-B2pEfjbR.js → proxy-fetch-CCjEYbFm.js} +1 -1
  204. package/dist/{push-apns-BEwBjZ0a.js → push-apns-FOkPD05E.js} +5 -5
  205. package/dist/{pw-ai-D2wlMJtN.js → pw-ai-Cl1Lc7RC.js} +14 -14
  206. package/dist/{pw-ai-CnbxziFP.js → pw-ai-CxBU3aK5.js} +18 -18
  207. package/dist/{qmd-manager-BtIKUaO9.js → qmd-manager-BsYsO9Ii.js} +10 -10
  208. package/dist/{qmd-manager-Dp6PJ8zQ.js → qmd-manager-DEJMqoGd.js} +20 -20
  209. package/dist/{qr-cli-CFz9kS5X.js → qr-cli-BD2jK4fg.js} +2 -2
  210. package/dist/{query-expansion-BrSWVbaE.js → query-expansion-1UTIWjP6.js} +12 -12
  211. package/dist/{query-expansion-CX-1fS52.js → query-expansion-DtLc3wjL.js} +6 -6
  212. package/dist/{redact-COik8ET1.js → redact-ClbcYG1J.js} +1 -1
  213. package/dist/{redact-snapshot-Bs4goggz.js → redact-snapshot-D_qQD4A-.js} +1 -1
  214. package/dist/{register.agent-D641ju8B.js → register.agent-tbPA5YAy.js} +94 -94
  215. package/dist/register.configure-DuwRrXc2.js +165 -0
  216. package/dist/{register.maintenance-BFkk8MEH.js → register.maintenance-DrqDlV5b.js} +95 -95
  217. package/dist/{register.message-D5uE_Hop.js → register.message-CoKXNaU0.js} +74 -74
  218. package/dist/{register.onboard-zHFvSwFr.js → register.onboard-CSWOSL9O.js} +18 -18
  219. package/dist/{register.setup-uTbv3_P1.js → register.setup-DBx5JX6h.js} +21 -21
  220. package/dist/{register.status-health-sessions-CB7t-JQx.js → register.status-health-sessions-D1bPtfep.js} +88 -88
  221. package/dist/{register.subclis-MEiNmuy5.js → register.subclis-QGJNmjss.js} +31 -31
  222. package/dist/{rpc-DVfuVmy9.js → rpc-DkMrTUww.js} +1 -1
  223. package/dist/{run-main-mrvunzuy.js → run-main-CPftxqTe.js} +92 -92
  224. package/dist/{run-with-concurrency-BgYfgkXT.js → run-with-concurrency-D_ZpbgEG.js} +4 -4
  225. package/dist/{runtime-C87FQrrv.js → runtime-MAH2Oph4.js} +3 -3
  226. package/dist/{runtime-config-collectors-BQaC477D.js → runtime-config-collectors-BJMV6Mt1.js} +1 -1
  227. package/dist/{runtime-whatsapp-login.runtime-DjdgScUI.js → runtime-whatsapp-login.runtime-CGYWl9eB.js} +7 -7
  228. package/dist/runtime-whatsapp-login.runtime-IeylZEl4.js +13 -0
  229. package/dist/runtime-whatsapp-outbound.runtime-ClBRuLsq.js +22 -0
  230. package/dist/{runtime-whatsapp-outbound.runtime-B74K7opl.js → runtime-whatsapp-outbound.runtime-hZEfYaRM.js} +15 -15
  231. package/dist/{sandbox-Ct-_lzi1.js → sandbox-0TbzPJaS.js} +18 -18
  232. package/dist/{sandbox-cli-C3RoXFRE.js → sandbox-cli-NLaxffXl.js} +25 -25
  233. package/dist/{secrets-cli-B3hqCxvs.js → secrets-cli-KLGbYet6.js} +11 -11
  234. package/dist/{security-cli-DcHIyXr7.js → security-cli-EIEkcYVb.js} +42 -42
  235. package/dist/{send-dfu6_rgf.js → send-BQERFNyo.js} +5 -5
  236. package/dist/{send-CnRP4P-G.js → send-BW-ZtYG3.js} +5 -5
  237. package/dist/{send-L7gRiwyd.js → send-Bj776ESJ.js} +7 -7
  238. package/dist/{send-2zKwf9NW.js → send-BtZAqquW.js} +11 -11
  239. package/dist/{send-DAQAKa9Z.js → send-CxgWxXZc.js} +6 -6
  240. package/dist/{send-5o2p_xjn.js → send-DAMtu9kK.js} +4 -4
  241. package/dist/{send-PE6cwoTe.js → send-DcxmcFi_.js} +8 -8
  242. package/dist/{send-6lz6rNVP.js → send-Dx2RkUOZ.js} +6 -6
  243. package/dist/{send-u1Bo4CSn.js → send-sC6ka831.js} +8 -8
  244. package/dist/{send-BHTiZcH3.js → send-vmONuVgL.js} +26 -26
  245. package/dist/{server-context-8pDe2iyd.js → server-context-HJVwPQYn.js} +12 -12
  246. package/dist/{server-Ci4xtuR9.js → server-kUElNhlY.js} +20 -20
  247. package/dist/{server-lifecycle-k5daSrde.js → server-lifecycle-BE32unpZ.js} +2 -2
  248. package/dist/{server-middleware-DMiFT9xU.js → server-middleware-AS2VOYkK.js} +1 -1
  249. package/dist/{server-node-events-BmnPjNXE.js → server-node-events-DkbZzI6P.js} +74 -74
  250. package/dist/{service-BhOFtHSw.js → service-CyStNr3d.js} +15 -15
  251. package/dist/{session-D8ImowSs.js → session-A4QhBRvH.js} +8 -8
  252. package/dist/{session-DkOjpX3_.js → session-CaCx4rPH.js} +1 -1
  253. package/dist/{session-utils-DKRmXD2l.js → session-utils-CGqb1oeq.js} +6 -6
  254. package/dist/{sessions-svLGrv0Z.js → sessions-BV6HNW4h.js} +4 -4
  255. package/dist/{sessions-BOWPuhe5.js → sessions-BmVDW-7q.js} +15 -15
  256. package/dist/{shared-CjuadLFV.js → shared-DUQavBtY.js} +3 -3
  257. package/dist/{shared-CbAkLNrg.js → shared-JW74idb0.js} +1 -1
  258. package/dist/{skill-commands-DNqJ-kwn.js → skill-commands-CMzBZKG2.js} +9 -9
  259. package/dist/{skill-commands-TpUsdjev.js → skill-commands-WtIJG0CI.js} +5 -5
  260. package/dist/{skill-scanner-BZvvItef.js → skill-scanner-DIFsGcqE.js} +6 -6
  261. package/dist/{skills-DR-vacol.js → skills-7T9PwwL6.js} +3 -3
  262. package/dist/{skills-7ODkHQYp.js → skills-CE_iqvM5.js} +22 -22
  263. package/dist/{skills-cli-oay0tY8Z.js → skills-cli-DPavvthL.js} +5 -5
  264. package/dist/{skills-install-Vmi7xYfa.js → skills-install-BoLfaoWv.js} +6 -6
  265. package/dist/{skills-status-BmN697ff.js → skills-status-CK5Gnf6i.js} +1 -1
  266. package/dist/{slash-commands.runtime-BfaheruW.js → slash-commands.runtime-CMGx2xHy.js} +11 -11
  267. package/dist/slash-commands.runtime-Cpn2tYW4.js +16 -0
  268. package/dist/slash-dispatch.runtime-BAeJXa56.js +114 -0
  269. package/dist/slash-dispatch.runtime-DoBAQBU5.js +56 -0
  270. package/dist/{slash-skill-commands.runtime-D34BKAN-.js → slash-skill-commands.runtime-ChU2tck2.js} +15 -15
  271. package/dist/slash-skill-commands.runtime-DKMvvdDW.js +20 -0
  272. package/dist/{status-BcQchPaC.js → status-Bp-K1BEf.js} +27 -27
  273. package/dist/{status.update-B20UBTDq.js → status.update-ZYUSggzS.js} +2 -2
  274. package/dist/{store-D89wDcz9.js → store--eR1R_UX.js} +2 -2
  275. package/dist/{store-DDkqo1sO.js → store-DeASfYEV.js} +5 -5
  276. package/dist/{subagent-registry-CPxHbyN5.js → subagent-registry-8qHIVhRq.js} +149 -149
  277. package/dist/subagent-registry-runtime-DVomlbm6.js +114 -0
  278. package/dist/subagent-registry-runtime-ppWS3tVu.js +56 -0
  279. package/dist/{subsystem-B45WV3qB.js → subsystem-Di1z8l0Z.js} +14 -14
  280. package/dist/{system-cli-D2yIJoKU.js → system-cli-C2xNfuQM.js} +9 -9
  281. package/dist/{system-run-command-BmhbnLTE.js → system-run-command-BPWZk7KI.js} +1 -1
  282. package/dist/{systemd-DjWVSbAG.js → systemd-Cf-0XKYu.js} +9 -9
  283. package/dist/{systemd-hints-Do-aQ9jw.js → systemd-hints-CYllYKO0.js} +6 -6
  284. package/dist/{systemd-linger-DpmnYgKU.js → systemd-linger-zllO90bD.js} +1 -1
  285. package/dist/{tables-BxyIF0w4.js → tables-CV7Afb0h.js} +1 -1
  286. package/dist/{tables-mE4cJBN2.js → tables-d739Y1xW.js} +1 -1
  287. package/dist/{tailnet-0_FsdHP-.js → tailnet-DJFUq7_R.js} +1 -1
  288. package/dist/{target-errors-KOHiT_JA.js → target-errors-CBI2Ga0y.js} +2 -2
  289. package/dist/{target-errors-mnlwhAjP.js → target-errors-iVxliVqA.js} +4 -4
  290. package/dist/{thinking-BeGmb5k6.js → thinking-DXYisHiZ.js} +7 -7
  291. package/dist/{tokens-q32vI39c.js → tokens-DxnY9ui_.js} +1 -1
  292. package/dist/{tool-images-RZdHiZcG.js → tool-images-2cBx1W8h.js} +2 -2
  293. package/dist/{tool-images-CNPfeCmU.js → tool-images-Bn6dB14u.js} +1 -1
  294. package/dist/{tui-DL6NZZEa.js → tui-DTVy-YhN.js} +6 -6
  295. package/dist/{tui-cli-BNAYhvpu.js → tui-cli-CexRLJ3a.js} +32 -32
  296. package/dist/{update-DlS-d52F.js → update-DijPxK0g.js} +3 -3
  297. package/dist/{update-cli-D8-DqIs2.js → update-cli-9NslG4yR.js} +104 -104
  298. package/dist/{update-runner-CzTQ7BJT.js → update-runner-B6_UqreW.js} +16 -16
  299. package/dist/{web-igmw_EhT.js → web-CzWRVmFt.js} +55 -55
  300. package/dist/web-DGoa03ue.js +118 -0
  301. package/dist/{webhooks-cli-QdaQhvbT.js → webhooks-cli-B4ZcXTtw.js} +6 -6
  302. package/dist/{whatsapp-actions-Bp8F0cOF.js → whatsapp-actions-Jm4VW1Ve.js} +17 -17
  303. package/dist/{whatsapp-actions-BHbJJyqw.js → whatsapp-actions-iEArE_Ez.js} +21 -21
  304. package/dist/{with-timeout-BMMWHlH3.js → with-timeout-C8-tY12i.js} +3 -3
  305. package/dist/{workspace-v76gFdZu.js → workspace-CIGzK2_w.js} +1 -1
  306. package/dist/{workspace-U-DyR64O.js → workspace-CUVC6GX1.js} +20 -20
  307. package/dist/{workspace-dirs-Cz_Zgtg2.js → workspace-dirs-D4SMysgC.js} +1 -1
  308. package/dist/{wsl-CvQfS6aU.js → wsl-CsGe5QCP.js} +2 -2
  309. package/package.json +7 -9
  310. package/scripts/auth-monitor.sh +89 -0
  311. package/scripts/bench-cli-startup.ts +200 -0
  312. package/scripts/bench-model.ts +146 -0
  313. package/scripts/build-and-run-mac.sh +18 -0
  314. package/scripts/build-docs-list.mjs +14 -0
  315. package/scripts/build_icon.sh +59 -0
  316. package/scripts/bundle-a2ui.sh +95 -0
  317. package/scripts/canvas-a2ui-copy.ts +40 -0
  318. package/scripts/changelog-to-html.sh +91 -0
  319. package/scripts/check-channel-agnostic-boundaries.mjs +343 -0
  320. package/scripts/check-composite-action-input-interpolation.py +81 -0
  321. package/scripts/check-ingress-agent-owner-context.mjs +45 -0
  322. package/scripts/check-no-monolithic-plugin-sdk-entry-imports.ts +103 -0
  323. package/scripts/check-no-pairing-store-group-auth.mjs +180 -0
  324. package/scripts/check-no-random-messaging-tmp.mjs +89 -0
  325. package/scripts/check-no-raw-channel-fetch.mjs +107 -0
  326. package/scripts/check-no-raw-window-open.mjs +86 -0
  327. package/scripts/check-no-register-http-handler.mjs +38 -0
  328. package/scripts/check-pairing-account-scope.mjs +100 -0
  329. package/scripts/check-plugin-sdk-exports.mjs +157 -0
  330. package/scripts/check-ts-max-loc.ts +80 -0
  331. package/scripts/check-webhook-auth-body-order.mjs +55 -0
  332. package/scripts/ci-changed-scope.d.mts +9 -0
  333. package/scripts/ci-changed-scope.mjs +141 -0
  334. package/scripts/claude-auth-status.sh +280 -0
  335. package/scripts/clawlog.sh +321 -0
  336. package/scripts/clawtributors-map.json +40 -0
  337. package/scripts/codesign-mac-app.sh +289 -0
  338. package/scripts/codespell-dictionary.txt +3 -0
  339. package/scripts/codespell-ignore.txt +9 -0
  340. package/scripts/committer +117 -0
  341. package/scripts/copy-export-html-templates.ts +59 -0
  342. package/scripts/copy-hook-metadata.ts +55 -0
  343. package/scripts/copy-plugin-sdk-root-alias.mjs +10 -0
  344. package/scripts/create-dmg.sh +176 -0
  345. package/scripts/create-instance.sh +4 -1
  346. package/scripts/cron_usage_report.ts +273 -0
  347. package/scripts/debug-claude-usage.ts +391 -0
  348. package/scripts/dev/discord-acp-plain-language-smoke.ts +868 -0
  349. package/scripts/dev/gateway-smoke.ts +75 -0
  350. package/scripts/dev/gateway-ws-client.ts +132 -0
  351. package/scripts/dev/ios-node-e2e.ts +283 -0
  352. package/scripts/dev/ios-pull-gateway-log.sh +17 -0
  353. package/scripts/dev/test-device-pair-telegram.ts +62 -0
  354. package/scripts/docker/cleanup-smoke/Dockerfile +19 -0
  355. package/scripts/docker/cleanup-smoke/run.sh +35 -0
  356. package/scripts/docker/install-sh-common/cli-verify.sh +47 -0
  357. package/scripts/docker/install-sh-e2e/Dockerfile +17 -0
  358. package/scripts/docker/install-sh-e2e/run.sh +535 -0
  359. package/scripts/docker/install-sh-nonroot/Dockerfile +33 -0
  360. package/scripts/docker/install-sh-nonroot/run.sh +36 -0
  361. package/scripts/docker/install-sh-smoke/Dockerfile +25 -0
  362. package/scripts/docker/install-sh-smoke/run.sh +63 -0
  363. package/scripts/docs-i18n/doc_mode.go +272 -0
  364. package/scripts/docs-i18n/glossary.go +29 -0
  365. package/scripts/docs-i18n/go.mod +10 -0
  366. package/scripts/docs-i18n/go.sum +10 -0
  367. package/scripts/docs-i18n/html_translate.go +160 -0
  368. package/scripts/docs-i18n/main.go +273 -0
  369. package/scripts/docs-i18n/markdown_segments.go +131 -0
  370. package/scripts/docs-i18n/masking.go +89 -0
  371. package/scripts/docs-i18n/order.go +37 -0
  372. package/scripts/docs-i18n/placeholders.go +30 -0
  373. package/scripts/docs-i18n/process.go +202 -0
  374. package/scripts/docs-i18n/prompt.go +146 -0
  375. package/scripts/docs-i18n/segment.go +11 -0
  376. package/scripts/docs-i18n/tm.go +132 -0
  377. package/scripts/docs-i18n/translator.go +247 -0
  378. package/scripts/docs-i18n/util.go +81 -0
  379. package/scripts/docs-link-audit.mjs +233 -0
  380. package/scripts/docs-list.js +173 -0
  381. package/scripts/docs-spellcheck.sh +44 -0
  382. package/scripts/e2e/Dockerfile +30 -0
  383. package/scripts/e2e/Dockerfile.qr-import +13 -0
  384. package/scripts/e2e/doctor-install-switch-docker.sh +160 -0
  385. package/scripts/e2e/gateway-network-docker.sh +145 -0
  386. package/scripts/e2e/onboard-docker.sh +570 -0
  387. package/scripts/e2e/plugins-docker.sh +224 -0
  388. package/scripts/e2e/qr-import-docker.sh +11 -0
  389. package/scripts/firecrawl-compare.ts +139 -0
  390. package/scripts/generate-host-env-security-policy-swift.mjs +74 -0
  391. package/scripts/generate-secretref-credential-matrix.ts +14 -0
  392. package/scripts/ghsa-patch.mjs +168 -0
  393. package/scripts/install-maca.sh +173 -0
  394. package/scripts/install.ps1 +329 -0
  395. package/scripts/ios-configure-signing.sh +100 -0
  396. package/scripts/ios-team-id.sh +207 -0
  397. package/scripts/label-open-issues.ts +893 -0
  398. package/scripts/lib/callsite-guard.mjs +45 -0
  399. package/scripts/lib/pairing-guard-context.mjs +13 -0
  400. package/scripts/lib/ts-guard-utils.mjs +157 -0
  401. package/scripts/make_appcast.sh +70 -0
  402. package/scripts/mobile-reauth.sh +84 -0
  403. package/scripts/notarize-mac-artifact.sh +65 -0
  404. package/scripts/npm_publish.sh +48 -0
  405. package/scripts/package-mac-app.sh +280 -0
  406. package/scripts/package-mac-dist.sh +93 -0
  407. package/scripts/podman/openclaw.container.in +28 -0
  408. package/scripts/pr +1708 -0
  409. package/scripts/pr-merge +44 -0
  410. package/scripts/pr-prepare +40 -0
  411. package/scripts/pr-review +13 -0
  412. package/scripts/pre-commit/filter-staged-files.mjs +39 -0
  413. package/scripts/pre-commit/run-node-tool.sh +31 -0
  414. package/scripts/protocol-gen-swift.ts +247 -0
  415. package/scripts/protocol-gen.ts +51 -0
  416. package/scripts/readability-basic-compare.ts +66 -0
  417. package/scripts/recover-orphaned-processes.sh +191 -0
  418. package/scripts/release-check.ts +362 -0
  419. package/scripts/repro/tsx-name-repro.ts +3 -0
  420. package/scripts/restart-mac.sh +269 -0
  421. package/scripts/run-node.d.mts +22 -0
  422. package/scripts/run-node.mjs +263 -0
  423. package/scripts/run-openclaw-podman.sh +213 -0
  424. package/scripts/sandbox-browser-entrypoint.sh +127 -0
  425. package/scripts/sandbox-browser-setup.sh +7 -0
  426. package/scripts/sandbox-common-setup.sh +40 -0
  427. package/scripts/sandbox-setup.sh +7 -0
  428. package/scripts/setup-auth-system.sh +119 -0
  429. package/scripts/shell-helpers/README.md +226 -0
  430. package/scripts/shell-helpers/clawdock-helpers.sh +417 -0
  431. package/scripts/sparkle-build.ts +76 -0
  432. package/scripts/sqlite-vec-smoke.mjs +38 -0
  433. package/scripts/sync-dist.sh +171 -0
  434. package/scripts/sync-labels.ts +100 -0
  435. package/scripts/sync-moonshot-docs.ts +125 -0
  436. package/scripts/sync-plugin-versions.ts +108 -0
  437. package/scripts/systemd/openclaw-auth-monitor.service +14 -0
  438. package/scripts/systemd/openclaw-auth-monitor.timer +10 -0
  439. package/scripts/termux-auth-widget.sh +81 -0
  440. package/scripts/termux-quick-auth.sh +30 -0
  441. package/scripts/termux-sync-widget.sh +25 -0
  442. package/scripts/test-cleanup-docker.sh +14 -0
  443. package/scripts/test-force.ts +59 -0
  444. package/scripts/test-hotspots.mjs +83 -0
  445. package/scripts/test-install-sh-docker.sh +72 -0
  446. package/scripts/test-install-sh-e2e-docker.sh +29 -0
  447. package/scripts/test-live-gateway-models-docker.sh +33 -0
  448. package/scripts/test-live-models-docker.sh +34 -0
  449. package/scripts/test-parallel.mjs +468 -0
  450. package/scripts/test-perf-budget.mjs +127 -0
  451. package/scripts/test-shell-completion.ts +223 -0
  452. package/scripts/ui.js +203 -0
  453. package/scripts/update-clawtributors.ts +573 -0
  454. package/scripts/update-clawtributors.types.ts +36 -0
  455. package/scripts/update-package-with-mirror.sh +67 -0
  456. package/scripts/watch-node.d.mts +14 -0
  457. package/scripts/watch-node.mjs +92 -0
  458. package/scripts/write-build-info.ts +47 -0
  459. package/scripts/write-cli-compat.ts +74 -0
  460. package/scripts/write-cli-startup-metadata.ts +93 -0
  461. package/scripts/write-plugin-sdk-entry-dts.ts +60 -0
  462. package/scripts/zai-fallback-repro.ts +168 -0
  463. package/dist/deliver-runtime-B80mXYrL.js +0 -36
  464. package/dist/deliver-runtime-DixuU_uB.js +0 -61
  465. package/dist/deps-send-discord.runtime-CDcLcDSt.js +0 -36
  466. package/dist/deps-send-discord.runtime-DZUccI6Z.js +0 -26
  467. package/dist/deps-send-imessage.runtime-BGPUVMIE.js +0 -35
  468. package/dist/deps-send-imessage.runtime-CF3OpoqY.js +0 -25
  469. package/dist/deps-send-signal.runtime-Cw4-ozeO.js +0 -24
  470. package/dist/deps-send-signal.runtime-DQDD44_O.js +0 -34
  471. package/dist/deps-send-slack.runtime-BDsDhS1P.js +0 -22
  472. package/dist/deps-send-slack.runtime-Cpy77gBG.js +0 -32
  473. package/dist/deps-send-telegram.runtime-D_4xVasO.js +0 -27
  474. package/dist/deps-send-whatsapp.runtime-D2sVAclS.js +0 -119
  475. package/dist/deps-send-whatsapp.runtime-UBgpoWg9.js +0 -60
  476. package/dist/image-runtime-B2qh5seQ.js +0 -55
  477. package/dist/image-runtime-DtMbm7AR.js +0 -29
  478. package/dist/manager-runtime-FO1Sx3W8.js +0 -18
  479. package/dist/pi-model-discovery-runtime-BeY4EUPp.js +0 -11
  480. package/dist/register.configure-BrDOSLIq.js +0 -165
  481. package/dist/runtime-whatsapp-login.runtime-DUb55byQ.js +0 -13
  482. package/dist/runtime-whatsapp-outbound.runtime-Bii_xSfI.js +0 -22
  483. package/dist/slash-commands.runtime-CVw6566g.js +0 -16
  484. package/dist/slash-dispatch.runtime-CMK_EPYG.js +0 -56
  485. package/dist/slash-dispatch.runtime-D0xInkf3.js +0 -114
  486. package/dist/slash-skill-commands.runtime-DxZ4z5h6.js +0 -20
  487. package/dist/subagent-registry-runtime-DdGrQBnQ.js +0 -56
  488. package/dist/subagent-registry-runtime-SkB2tTaE.js +0 -114
  489. package/dist/web-DWiOofzq.js +0 -118
  490. package/install.sh +0 -293
@@ -0,0 +1,173 @@
1
+ #!/usr/bin/env bash
2
+ # =================================================================
3
+ # OpenClaw 离线增强版部署脚本 (适配 bundledDependencies + 中国区镜像)
4
+ # 核心逻辑:修复权限 -> 固化环境 -> 极速安装核心依赖 -> 实例初始化
5
+ # =================================================================
6
+
7
+ set -e
8
+
9
+ # 颜色定义
10
+ RED='\033[0;31m'
11
+ GREEN='\033[0;32m'
12
+ YELLOW='\033[1;33m'
13
+ BLUE='\033[0;34m'
14
+ NC='\033[0m'
15
+
16
+ MIN_NODE_VERSION="22.12.0"
17
+
18
+ echo -e "${BLUE}================================================${NC}"
19
+ echo -e "${BLUE} OpenClaw 极速一键部署 ${NC}"
20
+ echo -e "${BLUE}================================================${NC}"
21
+
22
+ # ==================== 1. 彻底修复权限污染 ====================
23
+ echo -e "${YELLOW}🔧 正在修复本地环境权限...${NC}"
24
+ # 收回被 root 误占用的 npm 目录所有权,防止 EACCES 报错
25
+ sudo chown -R $(id -u):$(id -g) "$HOME/.npm" 2>/dev/null || true
26
+
27
+ # --- 新增:NPM 10 物理去毒逻辑 (防止因旧配置导致 npm 崩溃) ---
28
+ if [ -f "$HOME/.npmrc" ]; then
29
+ # 使用 sed 直接操作文件,避开已经崩溃的 npm 命令
30
+ sed -i '' '/sharp_binary_host/d' "$HOME/.npmrc" 2>/dev/null || sed -i '/sharp_binary_host/d' "$HOME/.npmrc" 2>/dev/null || true
31
+ sed -i '' '/sharp_libvips_binary_host/d' "$HOME/.npmrc" 2>/dev/null || sed -i '/sharp_libvips_binary_host/d' "$HOME/.npmrc" 2>/dev/null || true
32
+ fi
33
+ unset npm_config_sharp_binary_host
34
+ unset npm_config_sharp_libvips_binary_host
35
+ # -------------------------------------------------------
36
+
37
+ # ==================== 2. 系统环境识别 ====================
38
+ OS="$(uname -s)"
39
+ ARCH="$(uname -m)"
40
+ if [[ "$SHELL" == */zsh ]]; then
41
+ CONF_FILE="$HOME/.zshrc"
42
+ else
43
+ CONF_FILE="$HOME/.bashrc"
44
+ fi
45
+
46
+ # ==================== 3. 基础编译工具链 (针对原生模块) ====================
47
+ if [[ "$OS" == "Linux" ]]; then
48
+ echo -e "${YELLOW}🔍 检查系统编译依赖 (build-essential)...${NC}"
49
+ if command -v apt-get &> /dev/null; then
50
+ sudo apt-get update -qq && sudo apt-get install -y -qq build-essential python3 make gcc g++ 2>/dev/null || true
51
+ fi
52
+ # 强制让 npm 知道 python 路径,防止 node-pty 编译失败
53
+ PYTHON_PATH=$(command -v python3 || command -v python)
54
+ [ -n "$PYTHON_PATH" ] && npm config set python "$PYTHON_PATH" 2>/dev/null || true
55
+ fi
56
+
57
+ # ==================== 4. Node.js 环境镜像安装 ====================
58
+ check_node() {
59
+ if ! command -v node &> /dev/null; then return 1; fi
60
+ local CUR_V=$(node -v | sed 's/v//')
61
+ # 简单的版本号比较逻辑
62
+ [[ "$(printf '%s\n%s' "$MIN_NODE_VERSION" "$CUR_V" | sort -V | head -n1)" == "$MIN_NODE_VERSION" ]]
63
+ }
64
+
65
+ if ! check_node; then
66
+ echo -e "${YELLOW}📥 正在从国内镜像站下载 Node.js v${MIN_NODE_VERSION}...${NC}"
67
+ DIST="linux-x64"
68
+ [[ "$OS" == "Darwin" ]] && DIST="darwin-x64"
69
+ [[ "$OS" == "Darwin" && "$ARCH" == "arm64" ]] && DIST="darwin-arm64"
70
+ [[ "$OS" == "Linux" && "$ARCH" == "aarch64" ]] && DIST="linux-arm64"
71
+
72
+ URL="https://npmmirror.com/mirrors/node/v${MIN_NODE_VERSION}/node-v${MIN_NODE_VERSION}-${DIST}.tar.gz"
73
+ TEMP_DIR=$(mktemp -d)
74
+ curl -L "$URL" -o "$TEMP_DIR/node.tar.gz"
75
+
76
+ sudo mkdir -p /usr/local/lib/nodejs
77
+ sudo tar -xzf "$TEMP_DIR/node.tar.gz" -C /usr/local/lib/nodejs
78
+ NODE_DIR=$(find /usr/local/lib/nodejs -maxdepth 1 -type d -name "node-v${MIN_NODE_VERSION}*")
79
+
80
+ sudo ln -sf "$NODE_DIR/bin/node" /usr/local/bin/node
81
+ sudo ln -sf "$NODE_DIR/bin/npm" /usr/local/bin/npm
82
+ sudo ln -sf "$NODE_DIR/bin/npx" /usr/local/bin/npx
83
+ rm -rf "$TEMP_DIR"
84
+ fi
85
+ echo -e "${GREEN}✅ Node.js 环境已就绪: $(node -v)${NC}"
86
+
87
+ # ==================== 5. 配置用户级全局路径 ====================
88
+ echo -e "${YELLOW}🔧 配置用户全局安装路径 ($HOME/.npm-global)...${NC}"
89
+ NPM_GLOBAL_BIN="$HOME/.npm-global"
90
+ mkdir -p "$NPM_GLOBAL_BIN/bin"
91
+ npm config set prefix "$NPM_GLOBAL_BIN"
92
+
93
+ # 立即注入当前进程环境变量
94
+ export PATH="$NPM_GLOBAL_BIN/bin:$PATH"
95
+ # 永久注入配置文件
96
+ if ! grep -q ".npm-global/bin" "$CONF_FILE" 2>/dev/null; then
97
+ echo -e "\n# OpenClaw PATH\nexport PATH=\"\$HOME/.npm-global/bin:\$PATH\"" >> "$CONF_FILE"
98
+ fi
99
+
100
+ # ==================== 6. 建立 GitHub 隧道 (针对插件克隆) ====================
101
+ echo -e "${YELLOW}🚀 切换 GitHub 稳定隧道镜像 (moeyy 代理)...${NC}"
102
+ git config --global url."https://github.moeyy.xyz/https://github.com/".insteadOf "https://github.com/"
103
+ git config --global http.sslVerify false
104
+
105
+ # ==================== 6.5 补全编译依赖与镜像 ====================
106
+ echo -e "${YELLOW}🛠️ 正在补全编译工具与二进制镜像...${NC}"
107
+
108
+ # 1. 安装 pnpm (项目 package.json 明确要求使用 pnpm 10)
109
+ npm install -g pnpm --registry=https://registry.npmmirror.com
110
+
111
+ # 2. 确保 node-gyp 编译环境 (针对 macOS)
112
+ if [[ "$OS" == "Darwin" ]]; then
113
+ export CFLAGS="-Wno-error=implicit-function-declaration"
114
+ fi
115
+
116
+ # ==================== 7. 安装核心依赖与 OpenClaw ====================
117
+ echo -e "${YELLOW}📥 正在以 NPM 10 安全模式安装 (跳过脚本校验)...${NC}"
118
+
119
+ # 1. 物理清理残留
120
+ rm -rf ~/.npm-global/lib_node_modules/openclaw-multi-auto 2>/dev/null || true
121
+
122
+ # 2. 注入二进制镜像 (环境变量方式)
123
+ export SHARP_BINARY_HOST="https://npmmirror.com/mirrors/sharp"
124
+ export SHARP_LIBVIPS_BINARY_HOST="https://npmmirror.com/mirrors/sharp-libvips"
125
+ export NODEJS_ORG_MIRROR="https://npmmirror.com/mirrors/node"
126
+
127
+ echo -e "${YELLOW}📥 正在执行全局安装...${NC}"
128
+
129
+ # 核心改动:使用 --ignore-scripts 避开全局安装时的 sharp 报错
130
+ npm install -g openclaw-multi-auto@latest \
131
+ --registry=https://registry.npmmirror.com \
132
+ --unsafe-perm=true
133
+
134
+ # 3. 补救措施:手动确保 bin 链接正确
135
+ npm link openclaw-multi-auto --registry=https://registry.npmmirror.com 2>/dev/null || true
136
+
137
+ echo -e "${GREEN}✅ 程序包已部署。${NC}"
138
+
139
+ # ==================== 8. 自动化实例初始化 ====================
140
+ GLOBAL_ROOT=$(npm config get prefix)
141
+ # 定位脚本路径
142
+ CREATE_SCRIPT="$GLOBAL_ROOT/lib/node_modules/openclaw-multi-auto/scripts/create-instance.sh"
143
+
144
+ if [ ! -f "$CREATE_SCRIPT" ]; then
145
+ # 兼容本地开发环境路径
146
+ CREATE_SCRIPT="$(pwd)/scripts/create-instance.sh"
147
+ fi
148
+
149
+ echo -e "${YELLOW}🏗️ 正在调用全自动初始化程序...${NC}"
150
+
151
+ if [ -f "$CREATE_SCRIPT" ]; then
152
+ chmod +x "$CREATE_SCRIPT"
153
+ # 执行全自动创建并启动逻辑
154
+ bash "$CREATE_SCRIPT" "yunwei" "18790" "$PROVIDER" "$USR_KEY"
155
+ else
156
+ echo -e "${RED}⚠️ 警告:未找到实例创建脚本(create-instance.sh),请检查安装。${NC}"
157
+ fi
158
+
159
+ # ==================== 9. 部署反馈 ====================
160
+ INSTANCE_DIR="$HOME/openclaws/yunwei"
161
+ if [ -d "$INSTANCE_DIR" ]; then
162
+ # 提取端口号用于展示
163
+ FINAL_PORT=$(grep '"port":' "$INSTANCE_DIR/config/openclaw.json" | awk -F': ' '{print $2}' | tr -d ', ' | xargs)
164
+
165
+ echo -e "${GREEN}================================================${NC}"
166
+ echo -e "${GREEN}🎉 OpenClaw 环境部署及 [yunwei] 实例已上线!${NC}"
167
+ echo -e "🌐 访问地址: ${BLUE}http://localhost:${FINAL_PORT:-18790}${NC}"
168
+ echo -e "📄 实时日志: ${BLUE}tail -f ${INSTANCE_DIR}/workspace/server.log${NC}"
169
+ echo -e "💡 交互管理: ${YELLOW}openclaw tui${NC}"
170
+ echo -e "${GREEN}================================================${NC}"
171
+ else
172
+ echo -e "${YELLOW}💡 环境安装完成。由于未自动创建实例,请手动运行 'create-instance.sh'。${NC}"
173
+ fi
@@ -0,0 +1,329 @@
1
+ # OpenClaw Installer for Windows (PowerShell)
2
+ # Usage: iwr -useb https://openclaw.ai/install.ps1 | iex
3
+ # Or: & ([scriptblock]::Create((iwr -useb https://openclaw.ai/install.ps1))) -NoOnboard
4
+
5
+ param(
6
+ [string]$InstallMethod = "npm",
7
+ [string]$Tag = "latest",
8
+ [string]$GitDir = "$env:USERPROFILE\openclaw",
9
+ [switch]$NoOnboard,
10
+ [switch]$NoGitUpdate,
11
+ [switch]$DryRun
12
+ )
13
+
14
+ $ErrorActionPreference = "Stop"
15
+
16
+ # Colors
17
+ $ACCENT = "`e[38;2;255;77;77m" # coral-bright
18
+ $SUCCESS = "`e[38;2;0;229;204m" # cyan-bright
19
+ $WARN = "`e[38;2;255;176;32m" # amber
20
+ $ERROR = "`e[38;2;230;57;70m" # coral-mid
21
+ $MUTED = "`e[38;2;90;100;128m" # text-muted
22
+ $NC = "`e[0m" # No Color
23
+
24
+ function Write-Host {
25
+ param([string]$Message, [string]$Level = "info")
26
+ $msg = switch ($Level) {
27
+ "success" { "$SUCCESS✓$NC $Message" }
28
+ "warn" { "$WARN!$NC $Message" }
29
+ "error" { "$ERROR✗$NC $Message" }
30
+ default { "$MUTED·$NC $Message" }
31
+ }
32
+ Microsoft.PowerShell.Host\Write-Host $msg
33
+ }
34
+
35
+ function Write-Banner {
36
+ Write-Host ""
37
+ Write-Host "${ACCENT} 🦞 OpenClaw Installer$NC" -Level info
38
+ Write-Host "${MUTED} All your chats, one OpenClaw.$NC" -Level info
39
+ Write-Host ""
40
+ }
41
+
42
+ function Get-ExecutionPolicyStatus {
43
+ $policy = Get-ExecutionPolicy
44
+ if ($policy -eq "Restricted" -or $policy -eq "AllSigned") {
45
+ return @{ Blocked = $true; Policy = $policy }
46
+ }
47
+ return @{ Blocked = $false; Policy = $policy }
48
+ }
49
+
50
+ function Test-Admin {
51
+ $currentUser = [Security.Principal.WindowsIdentity]::GetCurrent()
52
+ $principal = New-Object Security.Principal.WindowsPrincipal($currentUser)
53
+ return $principal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
54
+ }
55
+
56
+ function Ensure-ExecutionPolicy {
57
+ $status = Get-ExecutionPolicyStatus
58
+ if ($status.Blocked) {
59
+ Write-Host "PowerShell execution policy is set to: $($status.Policy)" -Level warn
60
+ Write-Host "This prevents scripts like npm.ps1 from running." -Level warn
61
+ Write-Host ""
62
+
63
+ # Try to set execution policy for current process
64
+ try {
65
+ Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process -ErrorAction Stop
66
+ Write-Host "Set execution policy to RemoteSigned for current process" -Level success
67
+ return $true
68
+ } catch {
69
+ Write-Host "Could not automatically set execution policy" -Level error
70
+ Write-Host ""
71
+ Write-Host "To fix this, run:" -Level info
72
+ Write-Host " Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process" -Level info
73
+ Write-Host ""
74
+ Write-Host "Or run PowerShell as Administrator and execute:" -Level info
75
+ Write-Host " Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine" -Level info
76
+ return $false
77
+ }
78
+ }
79
+ return $true
80
+ }
81
+
82
+ function Get-NodeVersion {
83
+ try {
84
+ $version = node --version 2>$null
85
+ if ($version) {
86
+ return $version -replace '^v', ''
87
+ }
88
+ } catch { }
89
+ return $null
90
+ }
91
+
92
+ function Get-NpmVersion {
93
+ try {
94
+ $version = npm --version 2>$null
95
+ if ($version) {
96
+ return $version
97
+ }
98
+ } catch { }
99
+ return $null
100
+ }
101
+
102
+ function Install-Node {
103
+ Write-Host "Node.js not found" -Level info
104
+ Write-Host "Installing Node.js..." -Level info
105
+
106
+ # Try winget first
107
+ if (Get-Command winget -ErrorAction SilentlyContinue) {
108
+ Write-Host " Using winget..." -Level info
109
+ try {
110
+ winget install OpenJS.NodeJS.LTS --accept-package-agreements --accept-source-agreements 2>&1 | Out-Null
111
+ # Refresh PATH
112
+ $env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
113
+ Write-Host " Node.js installed via winget" -Level success
114
+ return $true
115
+ } catch {
116
+ Write-Host " Winget install failed: $_" -Level warn
117
+ }
118
+ }
119
+
120
+ # Try chocolatey
121
+ if (Get-Command choco -ErrorAction SilentlyContinue) {
122
+ Write-Host " Using chocolatey..." -Level info
123
+ try {
124
+ choco install nodejs-lts -y 2>&1 | Out-Null
125
+ $env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
126
+ Write-Host " Node.js installed via chocolatey" -Level success
127
+ return $true
128
+ } catch {
129
+ Write-Host " Chocolatey install failed: $_" -Level warn
130
+ }
131
+ }
132
+
133
+ # Try scoop
134
+ if (Get-Command scoop -ErrorAction SilentlyContinue) {
135
+ Write-Host " Using scoop..." -Level info
136
+ try {
137
+ scoop install nodejs-lts 2>&1 | Out-Null
138
+ $env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
139
+ Write-Host " Node.js installed via scoop" -Level success
140
+ return $true
141
+ } catch {
142
+ Write-Host " Scoop install failed: $_" -Level warn
143
+ }
144
+ }
145
+
146
+ Write-Host "Could not install Node.js automatically" -Level error
147
+ Write-Host "Please install Node.js 22+ manually from: https://nodejs.org" -Level info
148
+ return $false
149
+ }
150
+
151
+ function Ensure-Node {
152
+ $nodeVersion = Get-NodeVersion
153
+ if ($nodeVersion) {
154
+ $major = [int]($nodeVersion -split '\.')[0]
155
+ if ($major -ge 22) {
156
+ Write-Host "Node.js v$nodeVersion found" -Level success
157
+ return $true
158
+ }
159
+ Write-Host "Node.js v$nodeVersion found, but need v22+" -Level warn
160
+ }
161
+ return Install-Node
162
+ }
163
+
164
+ function Get-GitVersion {
165
+ try {
166
+ $version = git --version 2>$null
167
+ if ($version) {
168
+ return $version
169
+ }
170
+ } catch { }
171
+ return $null
172
+ }
173
+
174
+ function Install-Git {
175
+ Write-Host "Git not found" -Level info
176
+
177
+ if (Get-Command winget -ErrorAction SilentlyContinue) {
178
+ Write-Host " Installing Git via winget..." -Level info
179
+ try {
180
+ winget install Git.Git --accept-package-agreements --accept-source-agreements 2>&1 | Out-Null
181
+ $env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
182
+ Write-Host " Git installed" -Level success
183
+ return $true
184
+ } catch {
185
+ Write-Host " Winget install failed" -Level warn
186
+ }
187
+ }
188
+
189
+ Write-Host "Please install Git for Windows from: https://git-scm.com" -Level error
190
+ return $false
191
+ }
192
+
193
+ function Ensure-Git {
194
+ $gitVersion = Get-GitVersion
195
+ if ($gitVersion) {
196
+ Write-Host "$gitVersion found" -Level success
197
+ return $true
198
+ }
199
+ return Install-Git
200
+ }
201
+
202
+ function Install-OpenClawNpm {
203
+ param([string]$Version = "latest")
204
+
205
+ Write-Host "Installing OpenClaw (openclaw@$Version)..." -Level info
206
+
207
+ try {
208
+ # Use -ExecutionPolicy Bypass to handle restricted execution policy
209
+ npm install -g openclaw@$Version --no-fund --no-audit 2>&1
210
+ Write-Host "OpenClaw installed" -Level success
211
+ return $true
212
+ } catch {
213
+ Write-Host "npm install failed: $_" -Level error
214
+ return $false
215
+ }
216
+ }
217
+
218
+ function Install-OpenClawGit {
219
+ param([string]$RepoDir, [switch]$Update)
220
+
221
+ Write-Host "Installing OpenClaw from git..." -Level info
222
+
223
+ if (!(Test-Path $RepoDir)) {
224
+ Write-Host " Cloning repository..." -Level info
225
+ git clone https://github.com/openclaw/openclaw.git $RepoDir 2>&1
226
+ } elseif ($Update) {
227
+ Write-Host " Updating repository..." -Level info
228
+ git -C $RepoDir pull --rebase 2>&1
229
+ }
230
+
231
+ # Install pnpm if not present
232
+ if (!(Get-Command pnpm -ErrorAction SilentlyContinue)) {
233
+ Write-Host " Installing pnpm..." -Level info
234
+ npm install -g pnpm 2>&1
235
+ }
236
+
237
+ # Install dependencies
238
+ Write-Host " Installing dependencies..." -Level info
239
+ pnpm install --dir $RepoDir 2>&1
240
+
241
+ # Build
242
+ Write-Host " Building..." -Level info
243
+ pnpm --dir $RepoDir build 2>&1
244
+
245
+ # Create wrapper
246
+ $wrapperDir = "$env:USERPROFILE\.local\bin"
247
+ if (!(Test-Path $wrapperDir)) {
248
+ New-Item -ItemType Directory -Path $wrapperDir -Force | Out-Null
249
+ }
250
+
251
+ @"
252
+ @echo off
253
+ node "%~dp0..\openclaw\dist\entry.js" %*
254
+ "@ | Out-File -FilePath "$wrapperDir\openclaw.cmd" -Encoding ASCII -Force
255
+
256
+ Write-Host "OpenClaw installed" -Level success
257
+ return $true
258
+ }
259
+
260
+ function Add-ToPath {
261
+ param([string]$Path)
262
+
263
+ $currentPath = [Environment]::GetEnvironmentVariable("Path", "User")
264
+ if ($currentPath -notlike "*$Path*") {
265
+ [Environment]::SetEnvironmentVariable("Path", "$currentPath;$Path", "User")
266
+ Write-Host "Added $Path to user PATH" -Level info
267
+ }
268
+ }
269
+
270
+ # Main
271
+ function Main {
272
+ Write-Banner
273
+
274
+ Write-Host "Windows detected" -Level success
275
+
276
+ # Check and handle execution policy FIRST, before any npm calls
277
+ if (!(Ensure-ExecutionPolicy)) {
278
+ Write-Host ""
279
+ Write-Host "Installation cannot continue due to execution policy restrictions" -Level error
280
+ exit 1
281
+ }
282
+
283
+ if (!(Ensure-Node)) {
284
+ exit 1
285
+ }
286
+
287
+ if ($InstallMethod -eq "git") {
288
+ if (!(Ensure-Git)) {
289
+ exit 1
290
+ }
291
+
292
+ if ($DryRun) {
293
+ Write-Host "[DRY RUN] Would install OpenClaw from git to $GitDir" -Level info
294
+ } else {
295
+ Install-OpenClawGit -RepoDir $GitDir -Update:(-not $NoGitUpdate)
296
+ }
297
+ } else {
298
+ # npm method
299
+ if (!(Ensure-Git)) {
300
+ Write-Host "Git is required for npm installs. Please install Git and try again." -Level warn
301
+ }
302
+
303
+ if ($DryRun) {
304
+ Write-Host "[DRY RUN] Would install OpenClaw via npm (tag: $Tag)" -Level info
305
+ } else {
306
+ if (!(Install-OpenClawNpm -Version $Tag)) {
307
+ exit 1
308
+ }
309
+ }
310
+ }
311
+
312
+ # Try to add npm global bin to PATH
313
+ try {
314
+ $npmPrefix = npm config get prefix 2>$null
315
+ if ($npmPrefix) {
316
+ Add-ToPath -Path "$npmPrefix"
317
+ }
318
+ } catch { }
319
+
320
+ if (!$NoOnboard -and !$DryRun) {
321
+ Write-Host ""
322
+ Write-Host "Run 'openclaw onboard' to complete setup" -Level info
323
+ }
324
+
325
+ Write-Host ""
326
+ Write-Host "🦞 OpenClaw installed successfully!" -Level success
327
+ }
328
+
329
+ Main
@@ -0,0 +1,100 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
5
+ IOS_DIR="${ROOT_DIR}/apps/ios"
6
+ TEAM_ID_SCRIPT="${ROOT_DIR}/scripts/ios-team-id.sh"
7
+ LOCAL_SIGNING_FILE="${IOS_DIR}/.local-signing.xcconfig"
8
+
9
+ sanitize_identifier_segment() {
10
+ local raw="${1:-}"
11
+ raw="$(printf '%s' "$raw" | tr '[:upper:]' '[:lower:]')"
12
+ raw="$(printf '%s' "$raw" | sed -E 's/[^a-z0-9]+/-/g; s/^-+//; s/-+$//; s/-+/-/g')"
13
+ if [[ -z "$raw" ]]; then
14
+ raw="local"
15
+ fi
16
+ printf '%s\n' "$raw"
17
+ }
18
+
19
+ normalize_bundle_id() {
20
+ local raw="${1:-}"
21
+ raw="$(printf '%s' "$raw" | tr '[:upper:]' '[:lower:]')"
22
+ raw="$(printf '%s' "$raw" | sed -E 's/[^a-z0-9.-]+/-/g; s/\.+/./g; s/^-+//; s/[.-]+$//')"
23
+ if [[ -z "$raw" ]]; then
24
+ raw="ai.openclaw.ios.test.local"
25
+ fi
26
+ printf '%s\n' "$raw"
27
+ }
28
+
29
+ if [[ ! -x "${TEAM_ID_SCRIPT}" ]]; then
30
+ echo "ERROR: Missing team detection helper: ${TEAM_ID_SCRIPT}" >&2
31
+ exit 1
32
+ fi
33
+
34
+ team_id=""
35
+ if team_id="$("${TEAM_ID_SCRIPT}" 2>/dev/null)"; then
36
+ :
37
+ else
38
+ if [[ "${IOS_SIGNING_REQUIRED:-0}" == "1" ]]; then
39
+ "${TEAM_ID_SCRIPT}"
40
+ exit 1
41
+ fi
42
+
43
+ echo "WARN: Unable to detect an Apple Team ID; keeping existing iOS signing override (if any)." >&2
44
+ exit 0
45
+ fi
46
+
47
+ if [[ -n "${OPENCLAW_IOS_BUNDLE_SUFFIX:-}" ]]; then
48
+ identity_source="${OPENCLAW_IOS_BUNDLE_SUFFIX}"
49
+ else
50
+ identity_source="${USER:-}"
51
+ if [[ -z "${identity_source}" ]]; then
52
+ identity_source="$(id -un 2>/dev/null || true)"
53
+ fi
54
+ team_segment="$(sanitize_identifier_segment "${team_id}")"
55
+ identity_source="${identity_source}-${team_segment}"
56
+ fi
57
+ bundle_suffix="$(sanitize_identifier_segment "${identity_source}")"
58
+
59
+ bundle_base="${OPENCLAW_IOS_APP_BUNDLE_ID:-${OPENCLAW_IOS_BUNDLE_ID_BASE:-}}"
60
+ if [[ -z "${bundle_base}" ]]; then
61
+ bundle_base="ai.openclaw.ios.test.${bundle_suffix}"
62
+ fi
63
+ bundle_base="$(normalize_bundle_id "${bundle_base}")"
64
+
65
+ share_bundle_id="${OPENCLAW_IOS_SHARE_BUNDLE_ID:-${bundle_base}.share}"
66
+ watch_app_bundle_id="${OPENCLAW_IOS_WATCH_APP_BUNDLE_ID:-${bundle_base}.watchkitapp}"
67
+ watch_extension_bundle_id="${OPENCLAW_IOS_WATCH_EXTENSION_BUNDLE_ID:-${watch_app_bundle_id}.extension}"
68
+
69
+ code_sign_style="${OPENCLAW_IOS_CODE_SIGN_STYLE:-Automatic}"
70
+ app_profile="${OPENCLAW_IOS_APP_PROFILE:-}"
71
+ share_profile="${OPENCLAW_IOS_SHARE_PROFILE:-}"
72
+
73
+ tmp_file="$(mktemp "${TMPDIR:-/tmp}/openclaw-ios-signing.XXXXXX")"
74
+ cat >"${tmp_file}" <<EOF
75
+ // Auto-generated by scripts/ios-configure-signing.sh.
76
+ // This file is local-only and should not be committed.
77
+ // Override values with env vars if needed:
78
+ // OPENCLAW_IOS_APP_BUNDLE_ID / OPENCLAW_IOS_BUNDLE_ID_BASE
79
+ // OPENCLAW_IOS_SHARE_BUNDLE_ID / OPENCLAW_IOS_WATCH_APP_BUNDLE_ID / OPENCLAW_IOS_WATCH_EXTENSION_BUNDLE_ID
80
+ // OPENCLAW_IOS_CODE_SIGN_STYLE / OPENCLAW_IOS_APP_PROFILE / OPENCLAW_IOS_SHARE_PROFILE
81
+ OPENCLAW_CODE_SIGN_STYLE = ${code_sign_style}
82
+ OPENCLAW_DEVELOPMENT_TEAM = ${team_id}
83
+ // Keep legacy key for compatibility with older signing config paths.
84
+ OPENCLAW_IOS_SELECTED_TEAM = ${team_id}
85
+ OPENCLAW_APP_BUNDLE_ID = ${bundle_base}
86
+ OPENCLAW_SHARE_BUNDLE_ID = ${share_bundle_id}
87
+ OPENCLAW_WATCH_APP_BUNDLE_ID = ${watch_app_bundle_id}
88
+ OPENCLAW_WATCH_EXTENSION_BUNDLE_ID = ${watch_extension_bundle_id}
89
+ OPENCLAW_APP_PROFILE = ${app_profile}
90
+ OPENCLAW_SHARE_PROFILE = ${share_profile}
91
+ EOF
92
+
93
+ if [[ -f "${LOCAL_SIGNING_FILE}" ]] && cmp -s "${tmp_file}" "${LOCAL_SIGNING_FILE}"; then
94
+ rm -f "${tmp_file}"
95
+ echo "iOS signing config already up to date: team=${team_id} app=${bundle_base}"
96
+ exit 0
97
+ fi
98
+
99
+ mv "${tmp_file}" "${LOCAL_SIGNING_FILE}"
100
+ echo "Configured iOS signing: team=${team_id} app=${bundle_base}"