@shadowob/cloud 1.1.7 → 1.1.8

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 (198) hide show
  1. package/README.md +159 -11
  2. package/dist/{agent-browser-CERTMCDL.js → agent-browser-EI7FIK3X.js} +3 -3
  3. package/dist/{agent-browser-CIRZRIY4.js → agent-browser-YXE4ES6Q.js} +3 -3
  4. package/dist/{agent-pack-LF3O5TR4.js → agent-pack-35TFCZKP.js} +1 -1
  5. package/dist/{agent-pack-RQT27V7R.js → agent-pack-UOG6ZAUL.js} +1 -1
  6. package/dist/agentmemory-KP5O7GHB.js +101 -0
  7. package/dist/agentmemory-UV74POU5.js +100 -0
  8. package/dist/{airtable-BG2Q75G2.js → airtable-CXXS3YUN.js} +3 -3
  9. package/dist/{airtable-JCQXFM5D.js → airtable-YZ5JR5JC.js} +3 -3
  10. package/dist/{alipay-TZQI34RB.js → alipay-WED5P3XC.js} +3 -3
  11. package/dist/{alipay-MZX2XCDB.js → alipay-WJTVREMG.js} +3 -3
  12. package/dist/{amap-KPCLZYYL.js → amap-AIN23TQ7.js} +3 -3
  13. package/dist/{amap-5RQB3VGC.js → amap-F6GF7QKB.js} +3 -3
  14. package/dist/{atlassian-LGOEWYC7.js → atlassian-G6PM6UVM.js} +3 -3
  15. package/dist/{atlassian-TVS2A4IU.js → atlassian-IDR2NPJC.js} +3 -3
  16. package/dist/{baidu-appbuilder-QRRL3ETM.js → baidu-appbuilder-JKQIA5TG.js} +3 -3
  17. package/dist/{baidu-appbuilder-6UMESXHW.js → baidu-appbuilder-KVMCIFYH.js} +3 -3
  18. package/dist/{baidu-maps-HEPMVP5D.js → baidu-maps-GWMXV6YT.js} +3 -3
  19. package/dist/{baidu-maps-HXC4FBVP.js → baidu-maps-ZXGT6QZM.js} +3 -3
  20. package/dist/{baidu-netdisk-G5Q6B5NH.js → baidu-netdisk-J5SLQVWW.js} +3 -3
  21. package/dist/{baidu-netdisk-RS2K5W2M.js → baidu-netdisk-PONM3DY6.js} +3 -3
  22. package/dist/{baidu-smartprogram-JHD3XWF6.js → baidu-smartprogram-WJ5JMO6V.js} +3 -3
  23. package/dist/{baidu-smartprogram-EWTK5WKK.js → baidu-smartprogram-Y5WBR7RX.js} +3 -3
  24. package/dist/{browserbase-IUIYVYI7.js → browserbase-CGVQHRC4.js} +3 -3
  25. package/dist/{browserbase-JFO2PCIA.js → browserbase-PVWYTEZC.js} +3 -3
  26. package/dist/{canva-3YOFL7JS.js → canva-COCBQAT2.js} +3 -3
  27. package/dist/{canva-FMYN65SM.js → canva-RSTJSEX5.js} +3 -3
  28. package/dist/{chunk-35LJYCQF.js → chunk-3CT6RQNM.js} +745 -482
  29. package/dist/{chunk-KODMGZUC.js → chunk-4YO3NA26.js} +1 -1
  30. package/dist/{chunk-RECNVWMT.js → chunk-6V7MW4HU.js} +17 -3
  31. package/dist/{chunk-C6OI4ZNO.js → chunk-EVV774KS.js} +1 -1
  32. package/dist/{chunk-SVMXSIMG.js → chunk-F6CQ6GAG.js} +2 -1
  33. package/dist/{chunk-JUPAE5IA.js → chunk-OL5VH6RN.js} +72 -69
  34. package/dist/{chunk-POSVEKIY.js → chunk-OYY64ZSX.js} +17 -3
  35. package/dist/{chunk-ZHVYNIHA.js → chunk-P5Y6F2NH.js} +745 -482
  36. package/dist/{chunk-EEFMJYKB.js → chunk-PSK2SYZ3.js} +2 -1
  37. package/dist/{chunk-6YAYCWGK.js → chunk-PYJRFKPN.js} +1 -1
  38. package/dist/{chunk-JY2HTT7Q.js → chunk-RMDY3W4V.js} +6 -0
  39. package/dist/{chunk-EWB7L7IW.js → chunk-X2SREECR.js} +6 -6
  40. package/dist/{chunk-LXJBQBGL.js → chunk-X5VOIA72.js} +6 -6
  41. package/dist/{chunk-CTNUKOQE.js → chunk-Y5BJ3EW2.js} +6 -0
  42. package/dist/{chunk-SAP2DBHO.js → chunk-Y6BKVDG7.js} +1 -1
  43. package/dist/{chunk-6P2K6QZR.js → chunk-ZGMWSSCC.js} +72 -69
  44. package/dist/{claude-plugin-577TAQVS.js → claude-plugin-FPN32WMT.js} +1 -1
  45. package/dist/{claude-plugin-L3MXJJ6J.js → claude-plugin-IYHOVTVL.js} +1 -1
  46. package/dist/cli.js +930 -149
  47. package/dist/{cloudflare-RDFPKMM5.js → cloudflare-U3RHJJKK.js} +3 -3
  48. package/dist/{cloudflare-HBBABPK6.js → cloudflare-ZHN7UGPX.js} +3 -3
  49. package/dist/{cnb-FLP3QX46.js → cnb-AMXC5I7D.js} +3 -3
  50. package/dist/{cnb-YAVVEYFB.js → cnb-P3IZ4JTD.js} +3 -3
  51. package/dist/console/index.html +1 -1
  52. package/dist/console/static/css/index.f4563d95.css +1 -0
  53. package/dist/console/static/js/index.020abc71.js +1 -0
  54. package/dist/{coze-E6VGRNLV.js → coze-66RYMKVB.js} +3 -3
  55. package/dist/{coze-C6PMDPBI.js → coze-YE3BINXP.js} +3 -3
  56. package/dist/{dashboard.command-ZMQFKLNQ.js → dashboard.command-BRPZCZER.js} +1 -1
  57. package/dist/{dashboard.command-2AM45SIT.js → dashboard.command-GUHSJ2CN.js} +1 -1
  58. package/dist/{dingtalk-JNRNRN7E.js → dingtalk-4RFQG7N2.js} +3 -3
  59. package/dist/{dingtalk-WZGGIAHJ.js → dingtalk-VNFKXD2P.js} +3 -3
  60. package/dist/{douyin-miniprogram-AIJPPIZH.js → douyin-miniprogram-UEALAGOS.js} +3 -3
  61. package/dist/{douyin-miniprogram-HCYZ5NBW.js → douyin-miniprogram-UNB6UO2I.js} +3 -3
  62. package/dist/{figma-2YYNSCDX.js → figma-A264OWU5.js} +3 -3
  63. package/dist/{figma-RYOBMENP.js → figma-Y4TGSDZP.js} +3 -3
  64. package/dist/{firebase-OYSY6HPT.js → firebase-AI3MAGYG.js} +3 -3
  65. package/dist/{firebase-2IJDDBXX.js → firebase-ZGQARUIH.js} +3 -3
  66. package/dist/{firecrawl-2T3SBUW7.js → firecrawl-2JW7DMTH.js} +3 -3
  67. package/dist/{firecrawl-IYYXLAZM.js → firecrawl-UURQ5P5N.js} +3 -3
  68. package/dist/{flyai-QS5Q6FJR.js → flyai-EJGDMYFA.js} +3 -3
  69. package/dist/{flyai-7FJ4TRAG.js → flyai-ZFMZBBHJ.js} +3 -3
  70. package/dist/{gitagent-MWI75OIX.js → gitagent-5SDBYFNA.js} +1 -1
  71. package/dist/{gitagent-YBMWY7NZ.js → gitagent-ODXPCR4X.js} +1 -1
  72. package/dist/{gitee-3N7OFOM7.js → gitee-5UMJ4BC7.js} +3 -3
  73. package/dist/{gitee-KVNK6KLZ.js → gitee-D6NAZTCO.js} +3 -3
  74. package/dist/{github-LUEC2LID.js → github-JBLDKIA3.js} +3 -3
  75. package/dist/{github-XRO5Z3GC.js → github-PZQAVEZP.js} +3 -3
  76. package/dist/{google-ads-VPKWTX67.js → google-ads-BIFQOJ5M.js} +3 -3
  77. package/dist/{google-ads-A3QAJI4D.js → google-ads-QU3LJE4O.js} +3 -3
  78. package/dist/{google-analytics-C4UR5ZR2.js → google-analytics-7VZ6YZVA.js} +3 -3
  79. package/dist/{google-analytics-XDYZA2B7.js → google-analytics-HXMPCL5V.js} +3 -3
  80. package/dist/{google-workspace-YX35SHHX.js → google-workspace-6SEBJ4VA.js} +2 -2
  81. package/dist/{google-workspace-LL3EWVHH.js → google-workspace-L3AMJLCF.js} +2 -2
  82. package/dist/{huawei-xiaoyi-KPWLTSHB.js → huawei-xiaoyi-C6QIJMPM.js} +3 -3
  83. package/dist/{huawei-xiaoyi-6BSMGJHR.js → huawei-xiaoyi-JGLXWU5P.js} +3 -3
  84. package/dist/{hubspot-FTIEMNZO.js → hubspot-LACJGE6D.js} +3 -3
  85. package/dist/{hubspot-DIUHGEDI.js → hubspot-XWPRO4KZ.js} +3 -3
  86. package/dist/{huggingface-UUXK2RHK.js → huggingface-26QQZK4C.js} +3 -3
  87. package/dist/{huggingface-MJCOXA7E.js → huggingface-CQICNA2R.js} +3 -3
  88. package/dist/index.d.ts +1338 -1
  89. package/dist/index.js +1364 -226
  90. package/dist/{inference-ai-image-generation-PXV6IG4U.js → inference-ai-image-generation-5KYIUWT6.js} +3 -3
  91. package/dist/{inference-ai-image-generation-CMI6R5T3.js → inference-ai-image-generation-J2NYDCLZ.js} +3 -3
  92. package/dist/{inference-sh-7AZOLEFI.js → inference-sh-5SWQTK73.js} +3 -3
  93. package/dist/{inference-sh-ABQOD3YF.js → inference-sh-PTQF6T3R.js} +3 -3
  94. package/dist/{init.command-YVG4X6II.js → init.command-C7UKPK2Y.js} +3 -3
  95. package/dist/{init.command-JKE3SXAS.js → init.command-UNL66BMR.js} +3 -3
  96. package/dist/{klaviyo-LDPBWBSS.js → klaviyo-4UNPMBFT.js} +3 -3
  97. package/dist/{klaviyo-6K5YEFNH.js → klaviyo-SLYNEULT.js} +3 -3
  98. package/dist/{kuaidi100-HGFM5VK2.js → kuaidi100-HZKV5AIS.js} +3 -3
  99. package/dist/{kuaidi100-UHPFCVXP.js → kuaidi100-ZQUW7GHH.js} +3 -3
  100. package/dist/lark-HQUZNHDI.js +382 -0
  101. package/dist/lark-PAV7XWJS.js +381 -0
  102. package/dist/{linear-T4ORUP7N.js → linear-PYGQ5SLK.js} +3 -3
  103. package/dist/{linear-7QFSFPOD.js → linear-VJLYNTUF.js} +3 -3
  104. package/dist/{lovart-PDUXRUHJ.js → lovart-KC6SVNAJ.js} +3 -3
  105. package/dist/{lovart-QO3SK55T.js → lovart-WVKY4RR4.js} +3 -3
  106. package/dist/{meta-ads-SCNFI45S.js → meta-ads-E6XT33GI.js} +3 -3
  107. package/dist/{meta-ads-V6XPZWX3.js → meta-ads-RJ6DWRYN.js} +3 -3
  108. package/dist/{miclaw-TPPPS2WN.js → miclaw-4BA3A2YN.js} +3 -3
  109. package/dist/{miclaw-5CNTW7VV.js → miclaw-LUV6DCHX.js} +3 -3
  110. package/dist/{model-provider-KFB76XV5.js → model-provider-SYXJZ3JD.js} +1 -1
  111. package/dist/{model-provider-AVSFJSZP.js → model-provider-U7NEYA3Y.js} +1 -1
  112. package/dist/nature-skills-G76ABIWZ.js +143 -0
  113. package/dist/nature-skills-SQHMFXKT.js +142 -0
  114. package/dist/{notion-WFA7KGZZ.js → notion-2JZAKOFP.js} +1 -1
  115. package/dist/{notion-FZK76MN2.js → notion-O3NO5TJH.js} +1 -1
  116. package/dist/{oceanengine-3JZUS3PP.js → oceanengine-D23UZGVB.js} +3 -3
  117. package/dist/{oceanengine-5BRIJVJE.js → oceanengine-WDK2OXX5.js} +3 -3
  118. package/dist/{opencli-PFXHGCS2.js → opencli-36P63YNU.js} +3 -3
  119. package/dist/{opencli-VIGRJTGH.js → opencli-SUHDFR33.js} +3 -3
  120. package/dist/{paypal-Z5JYHIWD.js → paypal-K27SUW3B.js} +3 -3
  121. package/dist/{paypal-33UADIPR.js → paypal-OPZ3KOV5.js} +3 -3
  122. package/dist/{playwright-SQAQ3DZG.js → playwright-2ULT3NIC.js} +3 -3
  123. package/dist/{playwright-MG5WHK47.js → playwright-3Q7LBILG.js} +3 -3
  124. package/dist/{plugins-HZBWK3WQ.js → plugins-2MITZ4ZD.js} +2 -2
  125. package/dist/{plugins-I4GD5SZX.js → plugins-UK2QWD6G.js} +2 -2
  126. package/dist/{posthog-MU5MAJOQ.js → posthog-E3EHXLAN.js} +3 -3
  127. package/dist/{posthog-RJRRKDWB.js → posthog-KPJVLGX6.js} +3 -3
  128. package/dist/{salesforce-34FVIJTG.js → salesforce-FGPNG7FB.js} +3 -3
  129. package/dist/{salesforce-3QZ6OFVO.js → salesforce-TVHISKBC.js} +3 -3
  130. package/dist/{sentry-PIWW46VA.js → sentry-BZ3J3MZM.js} +3 -3
  131. package/dist/{sentry-MCIRMACU.js → sentry-XC57YRAJ.js} +3 -3
  132. package/dist/{seo-suite-WJXMA3S4.js → seo-suite-2MDEDLAB.js} +3 -3
  133. package/dist/{seo-suite-4SQ3I67Q.js → seo-suite-U75O3QP6.js} +3 -3
  134. package/dist/{serve.command-XLBJUOV6.js → serve.command-G5RVQFUD.js} +3 -3
  135. package/dist/{serve.command-RD6I6MFD.js → serve.command-PYGDG7K3.js} +3 -3
  136. package/dist/{shadowob-PRSMI5MW.js → shadowob-3QZ7DLDW.js} +158 -31
  137. package/dist/{shadowob-JELOWHWX.js → shadowob-CJLOEKFP.js} +158 -31
  138. package/dist/{sherlock-2PKY2E2Y.js → sherlock-CQFUHKDH.js} +3 -3
  139. package/dist/{sherlock-C5ZWPPVT.js → sherlock-DONK2I6E.js} +3 -3
  140. package/dist/{shopify-GL3NFVGE.js → shopify-NO5GI3WD.js} +3 -3
  141. package/dist/{shopify-R4G3UXM6.js → shopify-VW2KLKH5.js} +3 -3
  142. package/dist/{skill-discovery-YPXXV622.js → skill-discovery-6JEPPKKM.js} +3 -3
  143. package/dist/{skill-discovery-7INAUP4D.js → skill-discovery-PWRAVGIS.js} +3 -3
  144. package/dist/skills/shadowob-cli/SKILL.md +7 -0
  145. package/dist/{stripe-LJNPQ3CQ.js → stripe-HCNCKG4C.js} +1 -1
  146. package/dist/{stripe-C22RR4ZS.js → stripe-IU3KTJ4H.js} +1 -1
  147. package/dist/{supabase-IRNQ54FJ.js → supabase-KRL7JW2D.js} +3 -3
  148. package/dist/{supabase-N4ONFJNQ.js → supabase-TYEBTZNO.js} +3 -3
  149. package/dist/{taobao-aipaas-LRR4GMO3.js → taobao-aipaas-PEUIDOYP.js} +3 -3
  150. package/dist/{taobao-aipaas-RVKORSF4.js → taobao-aipaas-SA5E4MZA.js} +3 -3
  151. package/dist/{tapd-TMQRSMFG.js → tapd-6DDIUPVQ.js} +3 -3
  152. package/dist/{tapd-3JPVJ7XH.js → tapd-OTYLSZGY.js} +3 -3
  153. package/dist/{tencent-ads-UHC6OPBV.js → tencent-ads-OW2TAMH5.js} +3 -3
  154. package/dist/{tencent-ads-IGD33LO7.js → tencent-ads-XTQZ27YT.js} +3 -3
  155. package/dist/{tencent-docs-C3A4J3CJ.js → tencent-docs-6D6A2VCO.js} +3 -3
  156. package/dist/{tencent-docs-O2SC4FHL.js → tencent-docs-K3TMUIWD.js} +3 -3
  157. package/dist/{tencent-maps-OQOKHVW2.js → tencent-maps-IZYWITJZ.js} +3 -3
  158. package/dist/{tencent-maps-HMMWMNF4.js → tencent-maps-SWI7CLQY.js} +3 -3
  159. package/dist/text-to-cad-B2UP6PKA.js +192 -0
  160. package/dist/text-to-cad-I4B6VBFV.js +193 -0
  161. package/dist/{vercel-KOXDDTHX.js → vercel-CCKRC76D.js} +3 -3
  162. package/dist/{vercel-OLNVDWMG.js → vercel-SBGEMIJJ.js} +3 -3
  163. package/dist/{webflow-OMJKZM54.js → webflow-C3EHNNSN.js} +3 -3
  164. package/dist/{webflow-FULU5Q2I.js → webflow-ZFBJH4CR.js} +3 -3
  165. package/dist/{wechat-miniprogram-skyline-KYCDMQNW.js → wechat-miniprogram-skyline-VNCRERHX.js} +3 -3
  166. package/dist/{wechat-miniprogram-skyline-VR4FVIQL.js → wechat-miniprogram-skyline-Z5JQUV5Q.js} +3 -3
  167. package/dist/{wechat-pay-BCMAJ6UW.js → wechat-pay-RPDKPUEB.js} +3 -3
  168. package/dist/{wechat-pay-YQQKXVUI.js → wechat-pay-XVDGJRF2.js} +3 -3
  169. package/dist/{wonda-NGWIORYN.js → wonda-EL2P44S7.js} +3 -3
  170. package/dist/{wonda-RBABXFNM.js → wonda-XK5JK4X3.js} +3 -3
  171. package/dist/{wordpress-woocommerce-RNA5HB3N.js → wordpress-woocommerce-4MEE5A2M.js} +3 -3
  172. package/dist/{wordpress-woocommerce-RDIUTHYT.js → wordpress-woocommerce-6ECNM2QU.js} +3 -3
  173. package/dist/{wps-LUWHMZQQ.js → wps-E4OZEMOF.js} +3 -3
  174. package/dist/{wps-DAEFQHDE.js → wps-JNQUC4JS.js} +3 -3
  175. package/dist/{yuque-HCHTJWNI.js → yuque-GLAAOS7X.js} +3 -3
  176. package/dist/{yuque-KRH5O74J.js → yuque-MEF6VFLJ.js} +3 -3
  177. package/images/RUNNERS.md +15 -0
  178. package/images/cc-connect-runner/entrypoint.mjs +228 -0
  179. package/images/claude-runner/RUNNER.md +5 -3
  180. package/images/codex-runner/RUNNER.md +5 -3
  181. package/images/gemini-runner/RUNNER.md +5 -2
  182. package/images/hermes-runner/RUNNER.md +4 -2
  183. package/images/hermes-runner/entrypoint.mjs +269 -1
  184. package/images/openclaw-runner/Dockerfile +1 -0
  185. package/images/openclaw-runner/RUNNER.md +3 -0
  186. package/images/openclaw-runner/entrypoint.mjs +249 -1
  187. package/images/openclaw-runner/warm-runtime-deps.mjs +1 -3
  188. package/images/opencode-runner/RUNNER.md +5 -3
  189. package/package.json +3 -3
  190. package/templates/agent-marketplace-buddy.template.json +4 -1
  191. package/templates/bmad-method-buddy.template.json +4 -1
  192. package/templates/code-trainer.template.json +331 -0
  193. package/templates/gstack-buddy.template.json +4 -1
  194. package/templates/little-match-girl.template.json +10 -3
  195. package/dist/console/static/css/index.7f91f806.css +0 -1
  196. package/dist/console/static/js/index.4487e1ff.js +0 -1
  197. package/dist/lark-6LNA3LUQ.js +0 -103
  198. package/dist/lark-URVBZNS4.js +0 -102
package/README.md CHANGED
@@ -132,27 +132,51 @@ Deploy to cloud servers (Ubuntu/Debian) over SSH with a single command — no ex
132
132
  "systemDefaultRegistry": "registry.cn-hangzhou.aliyuncs.com",
133
133
  "pauseImage": "registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6"
134
134
  },
135
+ "features": {
136
+ "sandbox": {
137
+ "enabled": true,
138
+ "version": "v0.4.5",
139
+ // Optional: use your mirrored image when registry.k8s.io is unreachable.
140
+ "controllerImage": "registry.example.cn/agent-sandbox/agent-sandbox-controller:v0.4.5",
141
+ "runtimeClassName": "shadow-runc",
142
+ "createRuntimeClass": true,
143
+ "runtimeClassHandler": "runc",
144
+ "nodeSelector": { "shadowob.com/sandbox-ready": "true" },
145
+ "smokeTest": false
146
+ }
147
+ },
135
148
  "nodes": [
136
149
  {
137
150
  "role": "master",
138
151
  "host": "1.2.3.4",
139
152
  "user": "root",
140
- "sshKeyPath": "~/.ssh/id_rsa"
153
+ "sshKeyPath": "~/.ssh/id_rsa",
154
+ "sshKeyPassphrase": "${env:SSH_KEY_PASSPHRASE}"
141
155
  },
142
156
  {
143
157
  "role": "worker",
144
158
  "host": "1.2.3.5",
145
159
  "user": "root",
146
- "password": "${env:SERVER_PASSWORD}"
160
+ "sshAgent": true,
161
+ "install": {
162
+ "k3sMirror": "cn",
163
+ "systemDefaultRegistry": "registry.cn-hangzhou.aliyuncs.com"
164
+ },
165
+ "region": "cn",
166
+ "features": { "sandbox": true },
167
+ "labels": { "shadowob.com/region": "cn" }
147
168
  }
148
169
  ]
149
170
  }
150
171
  ```
151
172
 
152
- Credentials never stored on disk use `${env:VAR}` for passwords.
173
+ Credentials never stored on disk. Use `${env:VAR}` for passwords and key passphrases. For encrypted
174
+ keys already loaded into `ssh-agent`, set `"sshAgent": true`; if the agent socket is mounted at a
175
+ custom path, set `"sshAgent": "/path/to/agent.sock"` or `"${env:SSH_AUTH_SOCK}"`.
153
176
 
154
- `install` is optional. Use it when a server cannot reliably reach GitHub releases, or when you need
155
- repeatable cluster builds:
177
+ `install` is optional. Set it at the cluster level for shared defaults, or on an individual node to
178
+ override those defaults. Node-level overrides are useful for mixed-region clusters where, for
179
+ example, China nodes need domestic mirrors while overseas nodes can use the upstream defaults.
156
180
 
157
181
  | Field | Meaning |
158
182
  | --- | --- |
@@ -163,6 +187,45 @@ repeatable cluster builds:
163
187
  | `systemDefaultRegistry` | Registry prefix passed as `--system-default-registry` for bundled k3s system images. If omitted with `k3sMirror: "cn"`, Shadow uses `registry.cn-hangzhou.aliyuncs.com`. |
164
188
  | `pauseImage` | k3s sandbox pause image passed as `--pause-image`. If omitted with `k3sMirror: "cn"`, Shadow uses `registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6` so Pod sandbox creation does not depend on Docker Hub. |
165
189
 
190
+ `features.sandbox` makes agent-sandbox a managed cluster capability. `true` is shorthand for the
191
+ default pinned install. During `cluster init` and `cluster apply`, Shadow applies the upstream
192
+ agent-sandbox core and extensions manifests, optionally rewrites the controller image to a private
193
+ or domestic registry, creates/verifies the configured RuntimeClass, waits for the CRDs/controller,
194
+ labels Kubernetes nodes with `shadowob.com/sandbox-ready`, optionally runs a real
195
+ SandboxTemplate/SandboxClaim smoke test, and stores the capability plus a cluster config hash in
196
+ `~/.shadow-cloud/clusters/<name>.json`.
197
+
198
+ By default the managed RuntimeClass is `shadow-runc` with handler `runc`, so a vanilla k3s node can
199
+ run sandbox workloads immediately. For stronger isolation, install gVisor/runsc on the nodes and set
200
+ `runtimeClassName: "gvisor"`, `createRuntimeClass: false` if the class already exists, or
201
+ `runtimeClassHandler: "runsc"` if Shadow should create it. For restricted networks, mirror
202
+ `https://github.com/kubernetes-sigs/agent-sandbox/releases/download/v0.4.5/manifest.yaml` and
203
+ `extensions.yaml`, then set `manifestUrls` to the mirrored URLs.
204
+
205
+ For workload registry mirrors, add `install.registries`; Shadow writes it to k3s
206
+ `/etc/rancher/k3s/registries.yaml` on every configured node before install/apply:
207
+
208
+ ```jsonc
209
+ {
210
+ "install": {
211
+ "registries": {
212
+ "mirrors": {
213
+ "docker.io": { "endpoint": ["https://docker.mirror.example.cn"] },
214
+ "registry.k8s.io": { "endpoint": ["https://registry-k8s.mirror.example.cn"] }
215
+ },
216
+ "configs": {
217
+ "registry.example.cn": {
218
+ "auth": {
219
+ "username": "${env:REGISTRY_USER}",
220
+ "password": "${env:REGISTRY_PASSWORD}"
221
+ }
222
+ }
223
+ }
224
+ }
225
+ }
226
+ }
227
+ ```
228
+
166
229
  Environment variables override the same installer settings:
167
230
  `INSTALL_K3S_VERSION`, `INSTALL_K3S_ARTIFACT_URL`, `INSTALL_K3S_CHANNEL`, and
168
231
  `INSTALL_K3S_CHANNEL_URL`. `INSTALL_K3S_MIRROR=cn` is also accepted for local testing.
@@ -175,10 +238,15 @@ registry.
175
238
  ```bash
176
239
  shadowob-cloud cluster init # default: reads cluster.json
177
240
  shadowob-cloud cluster init --config my-cluster.json
241
+ shadowob-cloud cluster apply --config cluster.json # same idempotent apply path
178
242
  shadowob-cloud cluster init --force # reinstall k3s even if already present
179
243
  ```
180
244
 
181
- **Re-initializing safely:** If k3s is already installed on a node, `init` skips that node by default. Pass `--force` to fully reinstall (uninstalls first, then reinstalls).
245
+ **Re-initializing safely:** If k3s is already installed on a node, `init`/`apply` skips that node by
246
+ default. To expand a cluster, add the new worker to `nodes`, keep the existing master in the file,
247
+ and run `shadowob-cloud cluster apply --config cluster.json`. Shadow reads the existing master token,
248
+ installs k3s only on newly listed workers, joins them to the cluster, and refreshes the registered
249
+ kubeconfig metadata. Pass `--force` only when you intentionally want to reinstall listed nodes.
182
250
 
183
251
  ### 3. Deploy agents
184
252
 
@@ -235,12 +303,16 @@ shadowob-cloud cluster import --name prod --file ./prod.yaml
235
303
  2. Configure the server environment:
236
304
 
237
305
  ```env
306
+ KUBECONFIG_HOST_PATH=/absolute/host/path/to/prod.yaml
307
+ KUBECONFIG_CONTAINER_PATH=/home/node/.shadow-cloud/clusters/prod.yaml
308
+ KUBECONFIG_CONTEXT=
238
309
  CLOUD_SAAS_CLUSTER_CONFIG_HOST_PATH=/absolute/host/path/to/cluster.json
239
310
  CLOUD_SAAS_CLUSTER_CONFIG=/app/cluster.json
240
311
  CLOUD_SAAS_CLUSTER_KUBECONFIG_HOST_PATH=/absolute/host/path/to/prod.yaml
241
312
  CLOUD_SAAS_CLUSTER_KUBECONFIG=/home/node/.shadow-cloud/clusters/prod.yaml
242
- CLOUD_SAAS_WORKLOAD_BACKEND=deployment
313
+ CLOUD_SAAS_WORKLOAD_BACKEND=auto
243
314
  SHADOW_AGENT_SERVER_URL=https://shadow.example.com
315
+ SHADOWOB_OPENCLAW_RUNNER_IMAGE=ghcr.io/buggyblues/openclaw-runner:latest
244
316
  PULUMI_CONFIG_PASSPHRASE=change-me
245
317
  ```
246
318
 
@@ -248,12 +320,59 @@ On startup, `apps/server` reads `CLOUD_SAAS_CLUSTER_CONFIG`, resolves the cluste
248
320
  kubeconfig, sets `KUBECONFIG` for the embedded Cloud deployment processor, and fails fast if the
249
321
  kubeconfig is missing.
250
322
 
323
+ When running the production compose stack as the non-root `node` user, the mounted files must be
324
+ readable by UID 1000 inside the container. For root-owned host files, use either `chown 1000:1000`
325
+ with `chmod 600`, or `chmod 644` for non-secret cluster metadata. Do not mount a missing host file:
326
+ Docker will create a directory at the target path, which later fails as `EISDIR: illegal operation on
327
+ a directory, read`.
328
+
329
+ The server container must be able to reach the Kubernetes API in the kubeconfig. For a remote k3s
330
+ node, open TCP `6443` from the Shadow server host, or use an SSH tunnel and set the kubeconfig
331
+ `server` to the tunnel endpoint with `tls-server-name` pointing at the original API hostname/IP.
332
+
333
+ `SHADOW_AGENT_SERVER_URL` is the URL injected into pods. It must be reachable from the k3s nodes and
334
+ from the workload pods. `http://host.lima.internal:3002` is only valid for local Lima/Rancher
335
+ Desktop style development; remote clusters should use the public Shadow origin, for example
336
+ `https://shadowob.com`. Keep `SHADOW_SERVER_URL=http://server:3002` for server-side provisioning in
337
+ Docker Compose if the server container can reach itself through the compose network.
338
+
339
+ Official Cloud SaaS model-provider deployments use `SHADOW_AGENT_SERVER_URL` as the base URL for the
340
+ Shadow model proxy (`/api/ai/v1`). If only an internal Docker/Lima address is configured, deployment
341
+ creation fails fast with a `SHADOW_AGENT_SERVER_URL` configuration error instead of writing an
342
+ unreachable proxy URL into the workload ConfigMap.
343
+
344
+ For China-based worker nodes, k3s system images and workload images are separate concerns:
345
+
346
+ - Use `install.k3sMirror: "cn"`, `systemDefaultRegistry`, and `pauseImage` for k3s system images.
347
+ - Ensure `SHADOWOB_OPENCLAW_RUNNER_IMAGE` points to an image reachable by the worker nodes, or
348
+ pre-load the image into containerd and use a local tag such as `shadowob/openclaw-runner:local`.
349
+ - Prefer a real private registry mirror for production. Pre-loading is useful for a single-node
350
+ emergency fix, but it must be repeated whenever the runner image changes.
351
+
352
+ With the production compose file, the effective update flow is:
353
+
354
+ ```bash
355
+ docker-compose -f docker-compose.prod.yml pull server web admin
356
+ docker-compose -f docker-compose.prod.yml up -d --remove-orphans
357
+ ```
358
+
359
+ After changing `.env`, run at least `docker-compose -f docker-compose.prod.yml up -d server` so the
360
+ server process picks up the new Kubernetes and pod-facing URL settings.
361
+
251
362
  This config controls where the server deploys workloads. If a template's agent needs Kubernetes
252
363
  access at runtime, still provide `KUBECONFIG_B64` through the Cloud SaaS env var flow.
253
364
 
254
- `CLOUD_SAAS_WORKLOAD_BACKEND=deployment` is the safe default for vanilla k3s clusters created from
255
- `cluster.json`. Use `agent-sandbox` only on clusters where the `SandboxTemplate`/`SandboxClaim` CRDs
256
- and controller are already installed.
365
+ `CLOUD_SAAS_WORKLOAD_BACKEND=auto` lets `cluster.json` decide the default backend: if
366
+ `features.sandbox` is enabled, Web SaaS injects `deployments.backend=agent-sandbox` plus the
367
+ configured sandbox RuntimeClass and node selector; otherwise it injects `deployment` as the fallback.
368
+ Deployments then run a real preflight before Pulumi applies resources. Set
369
+ `CLOUD_SAAS_WORKLOAD_BACKEND=deployment` only as an emergency override.
370
+
371
+ Cloud configs can make fallback behavior explicit with `deployments.backendPolicy`:
372
+
373
+ - `sandbox-required`: fail fast if CRDs/controller/RuntimeClass are not ready.
374
+ - `sandbox-preferred`: use sandbox when preflight passes, otherwise fall back to Deployment.
375
+ - `deployment-only`: always use Deployment.
257
376
 
258
377
  For Docker Compose, mount both files into the server container:
259
378
 
@@ -261,9 +380,11 @@ For Docker Compose, mount both files into the server container:
261
380
  services:
262
381
  server:
263
382
  environment:
383
+ KUBECONFIG: /home/node/.shadow-cloud/clusters/prod.yaml
264
384
  CLOUD_SAAS_CLUSTER_CONFIG: /app/cluster.json
265
385
  CLOUD_SAAS_CLUSTER_KUBECONFIG: /home/node/.shadow-cloud/clusters/prod.yaml
266
- CLOUD_SAAS_WORKLOAD_BACKEND: deployment
386
+ CLOUD_SAAS_WORKLOAD_BACKEND: auto
387
+ SHADOWOB_OPENCLAW_RUNNER_IMAGE: ghcr.io/buggyblues/openclaw-runner:latest
267
388
  volumes:
268
389
  - ./cluster.json:/app/cluster.json:ro
269
390
  - ~/.shadow-cloud/clusters/prod.yaml:/home/node/.shadow-cloud/clusters/prod.yaml:ro
@@ -271,6 +392,33 @@ services:
271
392
 
272
393
  Then start the product stack and deploy from Web at `/app/cloud`.
273
394
 
395
+ ### Expanding a Web SaaS Cluster
396
+
397
+ To add a new node, edit the same `cluster.json` mounted into the server and add a new `worker` entry
398
+ under `nodes`. Keep the existing master entry in the file, then apply it from a machine/container
399
+ that can SSH to every node:
400
+
401
+ ```bash
402
+ shadowob-cloud cluster apply --config /workspace/shadow/ops/prod-cn-cluster.json
403
+ ```
404
+
405
+ `apply` skips nodes where k3s is already installed, reads the master token, installs k3s only on new
406
+ workers, joins them to the cluster, and refreshes the stored kubeconfig metadata.
407
+
408
+ If you run the CLI from a Docker image and your SSH key is encrypted, either pass
409
+ `sshKeyPassphrase: "${env:SSH_KEY_PASSPHRASE}"` in the node config, or use `sshAgent: true` and mount
410
+ the agent socket:
411
+
412
+ ```bash
413
+ docker run --rm --user root --network host \
414
+ -e SSH_AUTH_SOCK=/ssh-agent \
415
+ -v "$SSH_AUTH_SOCK:/ssh-agent" \
416
+ -v /root/.shadow-cloud:/root/.shadow-cloud \
417
+ -v /workspace/shadow/ops/prod-cn-cluster.json:/cluster.json:ro \
418
+ ghcr.io/buggyblues/shadow-server:latest \
419
+ node /app/apps/cloud/dist/cli.js cluster apply --config /cluster.json
420
+ ```
421
+
274
422
  ## Dashboard
275
423
 
276
424
  ```bash
@@ -4,11 +4,11 @@ import {
4
4
  connectorManifest,
5
5
  installedCheck,
6
6
  npmGlobalDependency
7
- } from "./chunk-EEFMJYKB.js";
8
- import "./chunk-POSVEKIY.js";
7
+ } from "./chunk-PSK2SYZ3.js";
8
+ import "./chunk-OYY64ZSX.js";
9
9
  import {
10
10
  defineConnectorPlugin
11
- } from "./chunk-JY2HTT7Q.js";
11
+ } from "./chunk-RMDY3W4V.js";
12
12
  import "./chunk-R5U7XKVJ.js";
13
13
 
14
14
  // src/plugins/agent-browser/index.ts
@@ -5,11 +5,11 @@ import {
5
5
  connectorManifest,
6
6
  installedCheck,
7
7
  npmGlobalDependency
8
- } from "./chunk-SVMXSIMG.js";
9
- import "./chunk-RECNVWMT.js";
8
+ } from "./chunk-F6CQ6GAG.js";
9
+ import "./chunk-6V7MW4HU.js";
10
10
  import {
11
11
  defineConnectorPlugin
12
- } from "./chunk-CTNUKOQE.js";
12
+ } from "./chunk-Y5BJ3EW2.js";
13
13
  import "./chunk-AD3JTIU3.js";
14
14
 
15
15
  // src/plugins/agent-browser/index.ts
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-ZUYL3W53.js";
5
5
  import {
6
6
  definePlugin
7
- } from "./chunk-CTNUKOQE.js";
7
+ } from "./chunk-Y5BJ3EW2.js";
8
8
  import "./chunk-AD3JTIU3.js";
9
9
 
10
10
  // src/plugins/agent-pack/index.ts
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-EJKFQ35I.js";
4
4
  import {
5
5
  definePlugin
6
- } from "./chunk-JY2HTT7Q.js";
6
+ } from "./chunk-RMDY3W4V.js";
7
7
  import "./chunk-R5U7XKVJ.js";
8
8
 
9
9
  // src/plugins/agent-pack/index.ts
@@ -0,0 +1,101 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ attachConnectorRuntimeAssets,
4
+ connectorField,
5
+ connectorManifest,
6
+ installedCheck,
7
+ npmGlobalDependency
8
+ } from "./chunk-F6CQ6GAG.js";
9
+ import "./chunk-6V7MW4HU.js";
10
+ import {
11
+ defineConnectorPlugin
12
+ } from "./chunk-Y5BJ3EW2.js";
13
+ import "./chunk-AD3JTIU3.js";
14
+
15
+ // src/plugins/agentmemory/index.ts
16
+ var manifest = connectorManifest({
17
+ id: "agentmemory",
18
+ name: "AgentMemory",
19
+ description: "AgentMemory adds persistent, searchable memory for coding agents through its MCP server, CLI, and optional local/remote memory service.",
20
+ category: "automation",
21
+ icon: "brain",
22
+ website: "https://agent-memory.dev",
23
+ docs: "https://github.com/rohitg00/agentmemory",
24
+ fields: [
25
+ connectorField("AGENTMEMORY_URL", "AgentMemory service URL", {
26
+ description: "Optional remote AgentMemory service URL. Omit to use the local runtime store.",
27
+ required: false,
28
+ sensitive: false,
29
+ placeholder: "http://127.0.0.1:7331",
30
+ helpUrl: "https://github.com/rohitg00/agentmemory"
31
+ }),
32
+ connectorField("AGENTMEMORY_API_KEY", "AgentMemory API key", {
33
+ description: "Optional API key for a protected AgentMemory service.",
34
+ required: false,
35
+ placeholder: "am_...",
36
+ helpUrl: "https://github.com/rohitg00/agentmemory"
37
+ }),
38
+ connectorField("AGENTMEMORY_PROJECT_ID", "AgentMemory project id", {
39
+ description: "Optional project/workspace id used to partition memories.",
40
+ required: false,
41
+ sensitive: false,
42
+ placeholder: "shadow-cloud"
43
+ })
44
+ ],
45
+ authType: "none",
46
+ capabilities: ["tool", "data-source", "action", "cli", "mcp"],
47
+ tags: ["memory", "mcp", "coding-agent", "context", "search", "persistence"],
48
+ popularity: 82
49
+ });
50
+ var runtimeDependencies = [
51
+ npmGlobalDependency(
52
+ "agentmemory",
53
+ ["@agentmemory/agentmemory@latest", "@agentmemory/mcp@latest"],
54
+ "AgentMemory CLI and MCP server"
55
+ )
56
+ ];
57
+ var agentMemoryEnv = {
58
+ AGENTMEMORY_URL: "${env:AGENTMEMORY_URL}",
59
+ AGENTMEMORY_API_KEY: "${env:AGENTMEMORY_API_KEY}",
60
+ AGENTMEMORY_PROJECT_ID: "${env:AGENTMEMORY_PROJECT_ID}"
61
+ };
62
+ var plugin = defineConnectorPlugin(manifest, {
63
+ cli: [
64
+ {
65
+ name: "agentmemory",
66
+ command: "agentmemory",
67
+ description: "AgentMemory CLI for inspecting and managing persistent agent memories",
68
+ env: agentMemoryEnv
69
+ },
70
+ {
71
+ name: "agentmemory-mcp",
72
+ command: "agentmemory-mcp",
73
+ description: "AgentMemory MCP server process",
74
+ env: agentMemoryEnv
75
+ }
76
+ ],
77
+ mcp: {
78
+ id: "agentmemory",
79
+ transport: "stdio",
80
+ command: "npx",
81
+ args: ["-y", "@agentmemory/mcp@latest"],
82
+ env: agentMemoryEnv,
83
+ description: "AgentMemory MCP tools for saving, searching, compacting, and governing persistent coding-agent memory"
84
+ },
85
+ runtimeDependencies,
86
+ verificationChecks: [
87
+ installedCheck("agentmemory-cli-installed", "AgentMemory CLI installed", [
88
+ "agentmemory",
89
+ "--help"
90
+ ]),
91
+ installedCheck("agentmemory-mcp-installed", "AgentMemory MCP installed", [
92
+ "agentmemory-mcp",
93
+ "--help"
94
+ ])
95
+ ],
96
+ prompt: "Use AgentMemory for persistent project memory, session recall, durable decisions, and semantic memory search. Store only durable technical context, decisions, and user-approved facts. Do not save secrets, tokens, credentials, private personal data, or transient chat filler."
97
+ });
98
+ var agentmemory_default = attachConnectorRuntimeAssets(plugin, { runtimeDependencies });
99
+ export {
100
+ agentmemory_default as default
101
+ };
@@ -0,0 +1,100 @@
1
+ import {
2
+ attachConnectorRuntimeAssets,
3
+ connectorField,
4
+ connectorManifest,
5
+ installedCheck,
6
+ npmGlobalDependency
7
+ } from "./chunk-PSK2SYZ3.js";
8
+ import "./chunk-OYY64ZSX.js";
9
+ import {
10
+ defineConnectorPlugin
11
+ } from "./chunk-RMDY3W4V.js";
12
+ import "./chunk-R5U7XKVJ.js";
13
+
14
+ // src/plugins/agentmemory/index.ts
15
+ var manifest = connectorManifest({
16
+ id: "agentmemory",
17
+ name: "AgentMemory",
18
+ description: "AgentMemory adds persistent, searchable memory for coding agents through its MCP server, CLI, and optional local/remote memory service.",
19
+ category: "automation",
20
+ icon: "brain",
21
+ website: "https://agent-memory.dev",
22
+ docs: "https://github.com/rohitg00/agentmemory",
23
+ fields: [
24
+ connectorField("AGENTMEMORY_URL", "AgentMemory service URL", {
25
+ description: "Optional remote AgentMemory service URL. Omit to use the local runtime store.",
26
+ required: false,
27
+ sensitive: false,
28
+ placeholder: "http://127.0.0.1:7331",
29
+ helpUrl: "https://github.com/rohitg00/agentmemory"
30
+ }),
31
+ connectorField("AGENTMEMORY_API_KEY", "AgentMemory API key", {
32
+ description: "Optional API key for a protected AgentMemory service.",
33
+ required: false,
34
+ placeholder: "am_...",
35
+ helpUrl: "https://github.com/rohitg00/agentmemory"
36
+ }),
37
+ connectorField("AGENTMEMORY_PROJECT_ID", "AgentMemory project id", {
38
+ description: "Optional project/workspace id used to partition memories.",
39
+ required: false,
40
+ sensitive: false,
41
+ placeholder: "shadow-cloud"
42
+ })
43
+ ],
44
+ authType: "none",
45
+ capabilities: ["tool", "data-source", "action", "cli", "mcp"],
46
+ tags: ["memory", "mcp", "coding-agent", "context", "search", "persistence"],
47
+ popularity: 82
48
+ });
49
+ var runtimeDependencies = [
50
+ npmGlobalDependency(
51
+ "agentmemory",
52
+ ["@agentmemory/agentmemory@latest", "@agentmemory/mcp@latest"],
53
+ "AgentMemory CLI and MCP server"
54
+ )
55
+ ];
56
+ var agentMemoryEnv = {
57
+ AGENTMEMORY_URL: "${env:AGENTMEMORY_URL}",
58
+ AGENTMEMORY_API_KEY: "${env:AGENTMEMORY_API_KEY}",
59
+ AGENTMEMORY_PROJECT_ID: "${env:AGENTMEMORY_PROJECT_ID}"
60
+ };
61
+ var plugin = defineConnectorPlugin(manifest, {
62
+ cli: [
63
+ {
64
+ name: "agentmemory",
65
+ command: "agentmemory",
66
+ description: "AgentMemory CLI for inspecting and managing persistent agent memories",
67
+ env: agentMemoryEnv
68
+ },
69
+ {
70
+ name: "agentmemory-mcp",
71
+ command: "agentmemory-mcp",
72
+ description: "AgentMemory MCP server process",
73
+ env: agentMemoryEnv
74
+ }
75
+ ],
76
+ mcp: {
77
+ id: "agentmemory",
78
+ transport: "stdio",
79
+ command: "npx",
80
+ args: ["-y", "@agentmemory/mcp@latest"],
81
+ env: agentMemoryEnv,
82
+ description: "AgentMemory MCP tools for saving, searching, compacting, and governing persistent coding-agent memory"
83
+ },
84
+ runtimeDependencies,
85
+ verificationChecks: [
86
+ installedCheck("agentmemory-cli-installed", "AgentMemory CLI installed", [
87
+ "agentmemory",
88
+ "--help"
89
+ ]),
90
+ installedCheck("agentmemory-mcp-installed", "AgentMemory MCP installed", [
91
+ "agentmemory-mcp",
92
+ "--help"
93
+ ])
94
+ ],
95
+ prompt: "Use AgentMemory for persistent project memory, session recall, durable decisions, and semantic memory search. Store only durable technical context, decisions, and user-approved facts. Do not save secrets, tokens, credentials, private personal data, or transient chat filler."
96
+ });
97
+ var agentmemory_default = attachConnectorRuntimeAssets(plugin, { runtimeDependencies });
98
+ export {
99
+ agentmemory_default as default
100
+ };
@@ -2,11 +2,11 @@ import {
2
2
  attachConnectorRuntimeAssets,
3
3
  connectorField,
4
4
  connectorManifest
5
- } from "./chunk-EEFMJYKB.js";
6
- import "./chunk-POSVEKIY.js";
5
+ } from "./chunk-PSK2SYZ3.js";
6
+ import "./chunk-OYY64ZSX.js";
7
7
  import {
8
8
  defineConnectorPlugin
9
- } from "./chunk-JY2HTT7Q.js";
9
+ } from "./chunk-RMDY3W4V.js";
10
10
  import "./chunk-R5U7XKVJ.js";
11
11
 
12
12
  // src/plugins/airtable/index.ts
@@ -3,11 +3,11 @@ import {
3
3
  attachConnectorRuntimeAssets,
4
4
  connectorField,
5
5
  connectorManifest
6
- } from "./chunk-SVMXSIMG.js";
7
- import "./chunk-RECNVWMT.js";
6
+ } from "./chunk-F6CQ6GAG.js";
7
+ import "./chunk-6V7MW4HU.js";
8
8
  import {
9
9
  defineConnectorPlugin
10
- } from "./chunk-CTNUKOQE.js";
10
+ } from "./chunk-Y5BJ3EW2.js";
11
11
  import "./chunk-AD3JTIU3.js";
12
12
 
13
13
  // src/plugins/airtable/index.ts
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  connectorField,
3
3
  connectorManifest
4
- } from "./chunk-EEFMJYKB.js";
5
- import "./chunk-POSVEKIY.js";
4
+ } from "./chunk-PSK2SYZ3.js";
5
+ import "./chunk-OYY64ZSX.js";
6
6
  import {
7
7
  defineConnectorPlugin
8
- } from "./chunk-JY2HTT7Q.js";
8
+ } from "./chunk-RMDY3W4V.js";
9
9
  import "./chunk-R5U7XKVJ.js";
10
10
 
11
11
  // src/plugins/alipay/index.ts
@@ -2,11 +2,11 @@
2
2
  import {
3
3
  connectorField,
4
4
  connectorManifest
5
- } from "./chunk-SVMXSIMG.js";
6
- import "./chunk-RECNVWMT.js";
5
+ } from "./chunk-F6CQ6GAG.js";
6
+ import "./chunk-6V7MW4HU.js";
7
7
  import {
8
8
  defineConnectorPlugin
9
- } from "./chunk-CTNUKOQE.js";
9
+ } from "./chunk-Y5BJ3EW2.js";
10
10
  import "./chunk-AD3JTIU3.js";
11
11
 
12
12
  // src/plugins/alipay/index.ts
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  connectorField,
3
3
  connectorManifest
4
- } from "./chunk-EEFMJYKB.js";
5
- import "./chunk-POSVEKIY.js";
4
+ } from "./chunk-PSK2SYZ3.js";
5
+ import "./chunk-OYY64ZSX.js";
6
6
  import {
7
7
  defineConnectorPlugin
8
- } from "./chunk-JY2HTT7Q.js";
8
+ } from "./chunk-RMDY3W4V.js";
9
9
  import "./chunk-R5U7XKVJ.js";
10
10
 
11
11
  // src/plugins/amap/index.ts
@@ -2,11 +2,11 @@
2
2
  import {
3
3
  connectorField,
4
4
  connectorManifest
5
- } from "./chunk-SVMXSIMG.js";
6
- import "./chunk-RECNVWMT.js";
5
+ } from "./chunk-F6CQ6GAG.js";
6
+ import "./chunk-6V7MW4HU.js";
7
7
  import {
8
8
  defineConnectorPlugin
9
- } from "./chunk-CTNUKOQE.js";
9
+ } from "./chunk-Y5BJ3EW2.js";
10
10
  import "./chunk-AD3JTIU3.js";
11
11
 
12
12
  // src/plugins/amap/index.ts
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  connectorField,
3
3
  connectorManifest
4
- } from "./chunk-EEFMJYKB.js";
5
- import "./chunk-POSVEKIY.js";
4
+ } from "./chunk-PSK2SYZ3.js";
5
+ import "./chunk-OYY64ZSX.js";
6
6
  import {
7
7
  defineConnectorPlugin
8
- } from "./chunk-JY2HTT7Q.js";
8
+ } from "./chunk-RMDY3W4V.js";
9
9
  import "./chunk-R5U7XKVJ.js";
10
10
 
11
11
  // src/plugins/atlassian/index.ts
@@ -2,11 +2,11 @@
2
2
  import {
3
3
  connectorField,
4
4
  connectorManifest
5
- } from "./chunk-SVMXSIMG.js";
6
- import "./chunk-RECNVWMT.js";
5
+ } from "./chunk-F6CQ6GAG.js";
6
+ import "./chunk-6V7MW4HU.js";
7
7
  import {
8
8
  defineConnectorPlugin
9
- } from "./chunk-CTNUKOQE.js";
9
+ } from "./chunk-Y5BJ3EW2.js";
10
10
  import "./chunk-AD3JTIU3.js";
11
11
 
12
12
  // src/plugins/atlassian/index.ts
@@ -2,11 +2,11 @@
2
2
  import {
3
3
  connectorField,
4
4
  connectorManifest
5
- } from "./chunk-SVMXSIMG.js";
6
- import "./chunk-RECNVWMT.js";
5
+ } from "./chunk-F6CQ6GAG.js";
6
+ import "./chunk-6V7MW4HU.js";
7
7
  import {
8
8
  defineConnectorPlugin
9
- } from "./chunk-CTNUKOQE.js";
9
+ } from "./chunk-Y5BJ3EW2.js";
10
10
  import "./chunk-AD3JTIU3.js";
11
11
 
12
12
  // src/plugins/baidu-appbuilder/index.ts
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  connectorField,
3
3
  connectorManifest
4
- } from "./chunk-EEFMJYKB.js";
5
- import "./chunk-POSVEKIY.js";
4
+ } from "./chunk-PSK2SYZ3.js";
5
+ import "./chunk-OYY64ZSX.js";
6
6
  import {
7
7
  defineConnectorPlugin
8
- } from "./chunk-JY2HTT7Q.js";
8
+ } from "./chunk-RMDY3W4V.js";
9
9
  import "./chunk-R5U7XKVJ.js";
10
10
 
11
11
  // src/plugins/baidu-appbuilder/index.ts