@shadowob/cloud 1.1.7 → 1.1.9
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.
- package/README.md +159 -11
- package/dist/{agent-browser-CERTMCDL.js → agent-browser-EI7FIK3X.js} +3 -3
- package/dist/{agent-browser-CIRZRIY4.js → agent-browser-YXE4ES6Q.js} +3 -3
- package/dist/{agent-pack-LF3O5TR4.js → agent-pack-35TFCZKP.js} +1 -1
- package/dist/{agent-pack-RQT27V7R.js → agent-pack-UOG6ZAUL.js} +1 -1
- package/dist/agentmemory-KP5O7GHB.js +101 -0
- package/dist/agentmemory-UV74POU5.js +100 -0
- package/dist/{airtable-BG2Q75G2.js → airtable-CXXS3YUN.js} +3 -3
- package/dist/{airtable-JCQXFM5D.js → airtable-YZ5JR5JC.js} +3 -3
- package/dist/{alipay-TZQI34RB.js → alipay-WED5P3XC.js} +3 -3
- package/dist/{alipay-MZX2XCDB.js → alipay-WJTVREMG.js} +3 -3
- package/dist/{amap-KPCLZYYL.js → amap-AIN23TQ7.js} +3 -3
- package/dist/{amap-5RQB3VGC.js → amap-F6GF7QKB.js} +3 -3
- package/dist/{atlassian-LGOEWYC7.js → atlassian-G6PM6UVM.js} +3 -3
- package/dist/{atlassian-TVS2A4IU.js → atlassian-IDR2NPJC.js} +3 -3
- package/dist/{baidu-appbuilder-QRRL3ETM.js → baidu-appbuilder-JKQIA5TG.js} +3 -3
- package/dist/{baidu-appbuilder-6UMESXHW.js → baidu-appbuilder-KVMCIFYH.js} +3 -3
- package/dist/{baidu-maps-HEPMVP5D.js → baidu-maps-GWMXV6YT.js} +3 -3
- package/dist/{baidu-maps-HXC4FBVP.js → baidu-maps-ZXGT6QZM.js} +3 -3
- package/dist/{baidu-netdisk-G5Q6B5NH.js → baidu-netdisk-J5SLQVWW.js} +3 -3
- package/dist/{baidu-netdisk-RS2K5W2M.js → baidu-netdisk-PONM3DY6.js} +3 -3
- package/dist/{baidu-smartprogram-JHD3XWF6.js → baidu-smartprogram-WJ5JMO6V.js} +3 -3
- package/dist/{baidu-smartprogram-EWTK5WKK.js → baidu-smartprogram-Y5WBR7RX.js} +3 -3
- package/dist/{browserbase-IUIYVYI7.js → browserbase-CGVQHRC4.js} +3 -3
- package/dist/{browserbase-JFO2PCIA.js → browserbase-PVWYTEZC.js} +3 -3
- package/dist/{canva-3YOFL7JS.js → canva-COCBQAT2.js} +3 -3
- package/dist/{canva-FMYN65SM.js → canva-RSTJSEX5.js} +3 -3
- package/dist/{chunk-35LJYCQF.js → chunk-3CT6RQNM.js} +745 -482
- package/dist/{chunk-KODMGZUC.js → chunk-4YO3NA26.js} +1 -1
- package/dist/{chunk-RECNVWMT.js → chunk-6V7MW4HU.js} +17 -3
- package/dist/{chunk-C6OI4ZNO.js → chunk-EVV774KS.js} +1 -1
- package/dist/{chunk-SVMXSIMG.js → chunk-F6CQ6GAG.js} +2 -1
- package/dist/{chunk-JUPAE5IA.js → chunk-OL5VH6RN.js} +72 -69
- package/dist/{chunk-POSVEKIY.js → chunk-OYY64ZSX.js} +17 -3
- package/dist/{chunk-ZHVYNIHA.js → chunk-P5Y6F2NH.js} +745 -482
- package/dist/{chunk-EEFMJYKB.js → chunk-PSK2SYZ3.js} +2 -1
- package/dist/{chunk-6YAYCWGK.js → chunk-PYJRFKPN.js} +1 -1
- package/dist/{chunk-JY2HTT7Q.js → chunk-RMDY3W4V.js} +6 -0
- package/dist/{chunk-EWB7L7IW.js → chunk-X2SREECR.js} +6 -6
- package/dist/{chunk-LXJBQBGL.js → chunk-X5VOIA72.js} +6 -6
- package/dist/{chunk-CTNUKOQE.js → chunk-Y5BJ3EW2.js} +6 -0
- package/dist/{chunk-SAP2DBHO.js → chunk-Y6BKVDG7.js} +1 -1
- package/dist/{chunk-6P2K6QZR.js → chunk-ZGMWSSCC.js} +72 -69
- package/dist/{claude-plugin-577TAQVS.js → claude-plugin-FPN32WMT.js} +1 -1
- package/dist/{claude-plugin-L3MXJJ6J.js → claude-plugin-IYHOVTVL.js} +1 -1
- package/dist/cli.js +930 -149
- package/dist/{cloudflare-RDFPKMM5.js → cloudflare-U3RHJJKK.js} +3 -3
- package/dist/{cloudflare-HBBABPK6.js → cloudflare-ZHN7UGPX.js} +3 -3
- package/dist/{cnb-FLP3QX46.js → cnb-AMXC5I7D.js} +3 -3
- package/dist/{cnb-YAVVEYFB.js → cnb-P3IZ4JTD.js} +3 -3
- package/dist/console/index.html +1 -1
- package/dist/console/static/css/index.f4563d95.css +1 -0
- package/dist/console/static/js/index.020abc71.js +1 -0
- package/dist/{coze-E6VGRNLV.js → coze-66RYMKVB.js} +3 -3
- package/dist/{coze-C6PMDPBI.js → coze-YE3BINXP.js} +3 -3
- package/dist/{dashboard.command-ZMQFKLNQ.js → dashboard.command-BRPZCZER.js} +1 -1
- package/dist/{dashboard.command-2AM45SIT.js → dashboard.command-GUHSJ2CN.js} +1 -1
- package/dist/{dingtalk-JNRNRN7E.js → dingtalk-4RFQG7N2.js} +3 -3
- package/dist/{dingtalk-WZGGIAHJ.js → dingtalk-VNFKXD2P.js} +3 -3
- package/dist/{douyin-miniprogram-AIJPPIZH.js → douyin-miniprogram-UEALAGOS.js} +3 -3
- package/dist/{douyin-miniprogram-HCYZ5NBW.js → douyin-miniprogram-UNB6UO2I.js} +3 -3
- package/dist/{figma-2YYNSCDX.js → figma-A264OWU5.js} +3 -3
- package/dist/{figma-RYOBMENP.js → figma-Y4TGSDZP.js} +3 -3
- package/dist/{firebase-OYSY6HPT.js → firebase-AI3MAGYG.js} +3 -3
- package/dist/{firebase-2IJDDBXX.js → firebase-ZGQARUIH.js} +3 -3
- package/dist/{firecrawl-2T3SBUW7.js → firecrawl-2JW7DMTH.js} +3 -3
- package/dist/{firecrawl-IYYXLAZM.js → firecrawl-UURQ5P5N.js} +3 -3
- package/dist/{flyai-QS5Q6FJR.js → flyai-EJGDMYFA.js} +3 -3
- package/dist/{flyai-7FJ4TRAG.js → flyai-ZFMZBBHJ.js} +3 -3
- package/dist/{gitagent-MWI75OIX.js → gitagent-5SDBYFNA.js} +1 -1
- package/dist/{gitagent-YBMWY7NZ.js → gitagent-ODXPCR4X.js} +1 -1
- package/dist/{gitee-3N7OFOM7.js → gitee-5UMJ4BC7.js} +3 -3
- package/dist/{gitee-KVNK6KLZ.js → gitee-D6NAZTCO.js} +3 -3
- package/dist/{github-LUEC2LID.js → github-JBLDKIA3.js} +3 -3
- package/dist/{github-XRO5Z3GC.js → github-PZQAVEZP.js} +3 -3
- package/dist/{google-ads-VPKWTX67.js → google-ads-BIFQOJ5M.js} +3 -3
- package/dist/{google-ads-A3QAJI4D.js → google-ads-QU3LJE4O.js} +3 -3
- package/dist/{google-analytics-C4UR5ZR2.js → google-analytics-7VZ6YZVA.js} +3 -3
- package/dist/{google-analytics-XDYZA2B7.js → google-analytics-HXMPCL5V.js} +3 -3
- package/dist/{google-workspace-YX35SHHX.js → google-workspace-6SEBJ4VA.js} +2 -2
- package/dist/{google-workspace-LL3EWVHH.js → google-workspace-L3AMJLCF.js} +2 -2
- package/dist/{huawei-xiaoyi-KPWLTSHB.js → huawei-xiaoyi-C6QIJMPM.js} +3 -3
- package/dist/{huawei-xiaoyi-6BSMGJHR.js → huawei-xiaoyi-JGLXWU5P.js} +3 -3
- package/dist/{hubspot-FTIEMNZO.js → hubspot-LACJGE6D.js} +3 -3
- package/dist/{hubspot-DIUHGEDI.js → hubspot-XWPRO4KZ.js} +3 -3
- package/dist/{huggingface-UUXK2RHK.js → huggingface-26QQZK4C.js} +3 -3
- package/dist/{huggingface-MJCOXA7E.js → huggingface-CQICNA2R.js} +3 -3
- package/dist/index.d.ts +1338 -1
- package/dist/index.js +1364 -226
- package/dist/{inference-ai-image-generation-PXV6IG4U.js → inference-ai-image-generation-5KYIUWT6.js} +3 -3
- package/dist/{inference-ai-image-generation-CMI6R5T3.js → inference-ai-image-generation-J2NYDCLZ.js} +3 -3
- package/dist/{inference-sh-7AZOLEFI.js → inference-sh-5SWQTK73.js} +3 -3
- package/dist/{inference-sh-ABQOD3YF.js → inference-sh-PTQF6T3R.js} +3 -3
- package/dist/{init.command-YVG4X6II.js → init.command-C7UKPK2Y.js} +3 -3
- package/dist/{init.command-JKE3SXAS.js → init.command-UNL66BMR.js} +3 -3
- package/dist/{klaviyo-LDPBWBSS.js → klaviyo-4UNPMBFT.js} +3 -3
- package/dist/{klaviyo-6K5YEFNH.js → klaviyo-SLYNEULT.js} +3 -3
- package/dist/{kuaidi100-HGFM5VK2.js → kuaidi100-HZKV5AIS.js} +3 -3
- package/dist/{kuaidi100-UHPFCVXP.js → kuaidi100-ZQUW7GHH.js} +3 -3
- package/dist/lark-HQUZNHDI.js +382 -0
- package/dist/lark-PAV7XWJS.js +381 -0
- package/dist/{linear-T4ORUP7N.js → linear-PYGQ5SLK.js} +3 -3
- package/dist/{linear-7QFSFPOD.js → linear-VJLYNTUF.js} +3 -3
- package/dist/{lovart-PDUXRUHJ.js → lovart-KC6SVNAJ.js} +3 -3
- package/dist/{lovart-QO3SK55T.js → lovart-WVKY4RR4.js} +3 -3
- package/dist/{meta-ads-SCNFI45S.js → meta-ads-E6XT33GI.js} +3 -3
- package/dist/{meta-ads-V6XPZWX3.js → meta-ads-RJ6DWRYN.js} +3 -3
- package/dist/{miclaw-TPPPS2WN.js → miclaw-4BA3A2YN.js} +3 -3
- package/dist/{miclaw-5CNTW7VV.js → miclaw-LUV6DCHX.js} +3 -3
- package/dist/{model-provider-KFB76XV5.js → model-provider-SYXJZ3JD.js} +1 -1
- package/dist/{model-provider-AVSFJSZP.js → model-provider-U7NEYA3Y.js} +1 -1
- package/dist/nature-skills-G76ABIWZ.js +143 -0
- package/dist/nature-skills-SQHMFXKT.js +142 -0
- package/dist/{notion-WFA7KGZZ.js → notion-2JZAKOFP.js} +1 -1
- package/dist/{notion-FZK76MN2.js → notion-O3NO5TJH.js} +1 -1
- package/dist/{oceanengine-3JZUS3PP.js → oceanengine-D23UZGVB.js} +3 -3
- package/dist/{oceanengine-5BRIJVJE.js → oceanengine-WDK2OXX5.js} +3 -3
- package/dist/{opencli-PFXHGCS2.js → opencli-36P63YNU.js} +3 -3
- package/dist/{opencli-VIGRJTGH.js → opencli-SUHDFR33.js} +3 -3
- package/dist/{paypal-Z5JYHIWD.js → paypal-K27SUW3B.js} +3 -3
- package/dist/{paypal-33UADIPR.js → paypal-OPZ3KOV5.js} +3 -3
- package/dist/{playwright-SQAQ3DZG.js → playwright-2ULT3NIC.js} +3 -3
- package/dist/{playwright-MG5WHK47.js → playwright-3Q7LBILG.js} +3 -3
- package/dist/{plugins-HZBWK3WQ.js → plugins-2MITZ4ZD.js} +2 -2
- package/dist/{plugins-I4GD5SZX.js → plugins-UK2QWD6G.js} +2 -2
- package/dist/{posthog-MU5MAJOQ.js → posthog-E3EHXLAN.js} +3 -3
- package/dist/{posthog-RJRRKDWB.js → posthog-KPJVLGX6.js} +3 -3
- package/dist/{salesforce-34FVIJTG.js → salesforce-FGPNG7FB.js} +3 -3
- package/dist/{salesforce-3QZ6OFVO.js → salesforce-TVHISKBC.js} +3 -3
- package/dist/{sentry-PIWW46VA.js → sentry-BZ3J3MZM.js} +3 -3
- package/dist/{sentry-MCIRMACU.js → sentry-XC57YRAJ.js} +3 -3
- package/dist/{seo-suite-WJXMA3S4.js → seo-suite-2MDEDLAB.js} +3 -3
- package/dist/{seo-suite-4SQ3I67Q.js → seo-suite-U75O3QP6.js} +3 -3
- package/dist/{serve.command-XLBJUOV6.js → serve.command-G5RVQFUD.js} +3 -3
- package/dist/{serve.command-RD6I6MFD.js → serve.command-PYGDG7K3.js} +3 -3
- package/dist/{shadowob-PRSMI5MW.js → shadowob-3QZ7DLDW.js} +158 -31
- package/dist/{shadowob-JELOWHWX.js → shadowob-CJLOEKFP.js} +158 -31
- package/dist/{sherlock-2PKY2E2Y.js → sherlock-CQFUHKDH.js} +3 -3
- package/dist/{sherlock-C5ZWPPVT.js → sherlock-DONK2I6E.js} +3 -3
- package/dist/{shopify-GL3NFVGE.js → shopify-NO5GI3WD.js} +3 -3
- package/dist/{shopify-R4G3UXM6.js → shopify-VW2KLKH5.js} +3 -3
- package/dist/{skill-discovery-YPXXV622.js → skill-discovery-6JEPPKKM.js} +3 -3
- package/dist/{skill-discovery-7INAUP4D.js → skill-discovery-PWRAVGIS.js} +3 -3
- package/dist/skills/shadowob-cli/SKILL.md +7 -0
- package/dist/{stripe-LJNPQ3CQ.js → stripe-HCNCKG4C.js} +1 -1
- package/dist/{stripe-C22RR4ZS.js → stripe-IU3KTJ4H.js} +1 -1
- package/dist/{supabase-IRNQ54FJ.js → supabase-KRL7JW2D.js} +3 -3
- package/dist/{supabase-N4ONFJNQ.js → supabase-TYEBTZNO.js} +3 -3
- package/dist/{taobao-aipaas-LRR4GMO3.js → taobao-aipaas-PEUIDOYP.js} +3 -3
- package/dist/{taobao-aipaas-RVKORSF4.js → taobao-aipaas-SA5E4MZA.js} +3 -3
- package/dist/{tapd-TMQRSMFG.js → tapd-6DDIUPVQ.js} +3 -3
- package/dist/{tapd-3JPVJ7XH.js → tapd-OTYLSZGY.js} +3 -3
- package/dist/{tencent-ads-UHC6OPBV.js → tencent-ads-OW2TAMH5.js} +3 -3
- package/dist/{tencent-ads-IGD33LO7.js → tencent-ads-XTQZ27YT.js} +3 -3
- package/dist/{tencent-docs-C3A4J3CJ.js → tencent-docs-6D6A2VCO.js} +3 -3
- package/dist/{tencent-docs-O2SC4FHL.js → tencent-docs-K3TMUIWD.js} +3 -3
- package/dist/{tencent-maps-OQOKHVW2.js → tencent-maps-IZYWITJZ.js} +3 -3
- package/dist/{tencent-maps-HMMWMNF4.js → tencent-maps-SWI7CLQY.js} +3 -3
- package/dist/text-to-cad-B2UP6PKA.js +192 -0
- package/dist/text-to-cad-I4B6VBFV.js +193 -0
- package/dist/{vercel-KOXDDTHX.js → vercel-CCKRC76D.js} +3 -3
- package/dist/{vercel-OLNVDWMG.js → vercel-SBGEMIJJ.js} +3 -3
- package/dist/{webflow-OMJKZM54.js → webflow-C3EHNNSN.js} +3 -3
- package/dist/{webflow-FULU5Q2I.js → webflow-ZFBJH4CR.js} +3 -3
- package/dist/{wechat-miniprogram-skyline-KYCDMQNW.js → wechat-miniprogram-skyline-VNCRERHX.js} +3 -3
- package/dist/{wechat-miniprogram-skyline-VR4FVIQL.js → wechat-miniprogram-skyline-Z5JQUV5Q.js} +3 -3
- package/dist/{wechat-pay-BCMAJ6UW.js → wechat-pay-RPDKPUEB.js} +3 -3
- package/dist/{wechat-pay-YQQKXVUI.js → wechat-pay-XVDGJRF2.js} +3 -3
- package/dist/{wonda-NGWIORYN.js → wonda-EL2P44S7.js} +3 -3
- package/dist/{wonda-RBABXFNM.js → wonda-XK5JK4X3.js} +3 -3
- package/dist/{wordpress-woocommerce-RNA5HB3N.js → wordpress-woocommerce-4MEE5A2M.js} +3 -3
- package/dist/{wordpress-woocommerce-RDIUTHYT.js → wordpress-woocommerce-6ECNM2QU.js} +3 -3
- package/dist/{wps-LUWHMZQQ.js → wps-E4OZEMOF.js} +3 -3
- package/dist/{wps-DAEFQHDE.js → wps-JNQUC4JS.js} +3 -3
- package/dist/{yuque-HCHTJWNI.js → yuque-GLAAOS7X.js} +3 -3
- package/dist/{yuque-KRH5O74J.js → yuque-MEF6VFLJ.js} +3 -3
- package/images/RUNNERS.md +15 -0
- package/images/cc-connect-runner/entrypoint.mjs +228 -0
- package/images/claude-runner/RUNNER.md +5 -3
- package/images/codex-runner/RUNNER.md +5 -3
- package/images/gemini-runner/RUNNER.md +5 -2
- package/images/hermes-runner/RUNNER.md +4 -2
- package/images/hermes-runner/entrypoint.mjs +269 -1
- package/images/openclaw-runner/Dockerfile +1 -0
- package/images/openclaw-runner/RUNNER.md +3 -0
- package/images/openclaw-runner/entrypoint.mjs +249 -1
- package/images/openclaw-runner/warm-runtime-deps.mjs +1 -3
- package/images/opencode-runner/RUNNER.md +5 -3
- package/package.json +3 -3
- package/templates/agent-marketplace-buddy.template.json +4 -1
- package/templates/bmad-method-buddy.template.json +4 -1
- package/templates/code-trainer.template.json +331 -0
- package/templates/gstack-buddy.template.json +4 -1
- package/templates/little-match-girl.template.json +10 -3
- package/dist/console/static/css/index.7f91f806.css +0 -1
- package/dist/console/static/js/index.4487e1ff.js +0 -1
- package/dist/lark-6LNA3LUQ.js +0 -103
- 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
|
-
"
|
|
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
|
|
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.
|
|
155
|
-
|
|
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
|
|
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=
|
|
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=
|
|
255
|
-
`
|
|
256
|
-
and
|
|
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:
|
|
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-
|
|
8
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-PSK2SYZ3.js";
|
|
8
|
+
import "./chunk-OYY64ZSX.js";
|
|
9
9
|
import {
|
|
10
10
|
defineConnectorPlugin
|
|
11
|
-
} from "./chunk-
|
|
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-
|
|
9
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-F6CQ6GAG.js";
|
|
9
|
+
import "./chunk-6V7MW4HU.js";
|
|
10
10
|
import {
|
|
11
11
|
defineConnectorPlugin
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-Y5BJ3EW2.js";
|
|
13
13
|
import "./chunk-AD3JTIU3.js";
|
|
14
14
|
|
|
15
15
|
// src/plugins/agent-browser/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-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-PSK2SYZ3.js";
|
|
6
|
+
import "./chunk-OYY64ZSX.js";
|
|
7
7
|
import {
|
|
8
8
|
defineConnectorPlugin
|
|
9
|
-
} from "./chunk-
|
|
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-
|
|
7
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-F6CQ6GAG.js";
|
|
7
|
+
import "./chunk-6V7MW4HU.js";
|
|
8
8
|
import {
|
|
9
9
|
defineConnectorPlugin
|
|
10
|
-
} from "./chunk-
|
|
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-
|
|
5
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-PSK2SYZ3.js";
|
|
5
|
+
import "./chunk-OYY64ZSX.js";
|
|
6
6
|
import {
|
|
7
7
|
defineConnectorPlugin
|
|
8
|
-
} from "./chunk-
|
|
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-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-F6CQ6GAG.js";
|
|
6
|
+
import "./chunk-6V7MW4HU.js";
|
|
7
7
|
import {
|
|
8
8
|
defineConnectorPlugin
|
|
9
|
-
} from "./chunk-
|
|
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-
|
|
5
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-PSK2SYZ3.js";
|
|
5
|
+
import "./chunk-OYY64ZSX.js";
|
|
6
6
|
import {
|
|
7
7
|
defineConnectorPlugin
|
|
8
|
-
} from "./chunk-
|
|
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-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-F6CQ6GAG.js";
|
|
6
|
+
import "./chunk-6V7MW4HU.js";
|
|
7
7
|
import {
|
|
8
8
|
defineConnectorPlugin
|
|
9
|
-
} from "./chunk-
|
|
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-
|
|
5
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-PSK2SYZ3.js";
|
|
5
|
+
import "./chunk-OYY64ZSX.js";
|
|
6
6
|
import {
|
|
7
7
|
defineConnectorPlugin
|
|
8
|
-
} from "./chunk-
|
|
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-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-F6CQ6GAG.js";
|
|
6
|
+
import "./chunk-6V7MW4HU.js";
|
|
7
7
|
import {
|
|
8
8
|
defineConnectorPlugin
|
|
9
|
-
} from "./chunk-
|
|
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-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-F6CQ6GAG.js";
|
|
6
|
+
import "./chunk-6V7MW4HU.js";
|
|
7
7
|
import {
|
|
8
8
|
defineConnectorPlugin
|
|
9
|
-
} from "./chunk-
|
|
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-
|
|
5
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-PSK2SYZ3.js";
|
|
5
|
+
import "./chunk-OYY64ZSX.js";
|
|
6
6
|
import {
|
|
7
7
|
defineConnectorPlugin
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-RMDY3W4V.js";
|
|
9
9
|
import "./chunk-R5U7XKVJ.js";
|
|
10
10
|
|
|
11
11
|
// src/plugins/baidu-appbuilder/index.ts
|