@shadowob/cloud 1.1.6-dev.311
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 +509 -0
- package/dist/agent-browser-CERTMCDL.js +117 -0
- package/dist/agent-browser-CIRZRIY4.js +118 -0
- package/dist/agent-pack-LF3O5TR4.js +1236 -0
- package/dist/agent-pack-RQT27V7R.js +1235 -0
- package/dist/airtable-BG2Q75G2.js +82 -0
- package/dist/airtable-JCQXFM5D.js +83 -0
- package/dist/alipay-MZX2XCDB.js +52 -0
- package/dist/alipay-TZQI34RB.js +51 -0
- package/dist/amap-5RQB3VGC.js +45 -0
- package/dist/amap-KPCLZYYL.js +44 -0
- package/dist/atlassian-LGOEWYC7.js +54 -0
- package/dist/atlassian-TVS2A4IU.js +55 -0
- package/dist/baidu-appbuilder-6UMESXHW.js +41 -0
- package/dist/baidu-appbuilder-QRRL3ETM.js +42 -0
- package/dist/baidu-maps-HEPMVP5D.js +44 -0
- package/dist/baidu-maps-HXC4FBVP.js +45 -0
- package/dist/baidu-netdisk-G5Q6B5NH.js +45 -0
- package/dist/baidu-netdisk-RS2K5W2M.js +44 -0
- package/dist/baidu-smartprogram-EWTK5WKK.js +41 -0
- package/dist/baidu-smartprogram-JHD3XWF6.js +40 -0
- package/dist/browserbase-IUIYVYI7.js +67 -0
- package/dist/browserbase-JFO2PCIA.js +68 -0
- package/dist/canva-3YOFL7JS.js +62 -0
- package/dist/canva-FMYN65SM.js +61 -0
- package/dist/chunk-6P2K6QZR.js +529 -0
- package/dist/chunk-7VMRQ7MG.js +90 -0
- package/dist/chunk-AD3JTIU3.js +17 -0
- package/dist/chunk-BF6CV2Y4.js +64 -0
- package/dist/chunk-CTNUKOQE.js +439 -0
- package/dist/chunk-EEFMJYKB.js +97 -0
- package/dist/chunk-EJKFQ35I.js +739 -0
- package/dist/chunk-HUICDC56.js +62 -0
- package/dist/chunk-JUPAE5IA.js +527 -0
- package/dist/chunk-JY2HTT7Q.js +437 -0
- package/dist/chunk-KEPTCLUO.js +121 -0
- package/dist/chunk-KKK5H7YX.js +3622 -0
- package/dist/chunk-POSVEKIY.js +210 -0
- package/dist/chunk-QET4LT4J.js +5769 -0
- package/dist/chunk-QV4XWO3P.js +30 -0
- package/dist/chunk-R52J3PH2.js +120 -0
- package/dist/chunk-R5U7XKVJ.js +16 -0
- package/dist/chunk-RECNVWMT.js +212 -0
- package/dist/chunk-RTPBU5HF.js +92 -0
- package/dist/chunk-SUZ2ATT6.js +5774 -0
- package/dist/chunk-SVMXSIMG.js +98 -0
- package/dist/chunk-TV3CBM7R.js +28 -0
- package/dist/chunk-V2LU736V.js +3495 -0
- package/dist/chunk-ZUYL3W53.js +741 -0
- package/dist/claude-plugin-577TAQVS.js +1463 -0
- package/dist/claude-plugin-L3MXJJ6J.js +1464 -0
- package/dist/cli.js +7021 -0
- package/dist/cloudflare-HBBABPK6.js +114 -0
- package/dist/cloudflare-RDFPKMM5.js +115 -0
- package/dist/cnb-FLP3QX46.js +44 -0
- package/dist/cnb-YAVVEYFB.js +45 -0
- package/dist/console/index.html +12 -0
- package/dist/console/logo.png +0 -0
- package/dist/console/static/css/5079.f9e0918d.css +1 -0
- package/dist/console/static/css/index.7f91f806.css +1 -0
- package/dist/console/static/font/codicon.5b7d6fac.ttf +0 -0
- package/dist/console/static/js/5079.72a51ca2.js +699 -0
- package/dist/console/static/js/5079.72a51ca2.js.LICENSE.txt +35 -0
- package/dist/console/static/js/7426.f8d483ea.js +1 -0
- package/dist/console/static/js/async/1008.4df521b7.js +1 -0
- package/dist/console/static/js/async/102.1d473ec7.js +1 -0
- package/dist/console/static/js/async/1134.3f9fd9e7.js +1 -0
- package/dist/console/static/js/async/1318.4b8e48e7.js +1 -0
- package/dist/console/static/js/async/1360.5606da88.js +7 -0
- package/dist/console/static/js/async/1546.045f484f.js +1 -0
- package/dist/console/static/js/async/1562.187de2a8.js +1 -0
- package/dist/console/static/js/async/168.456d4813.js +1 -0
- package/dist/console/static/js/async/1750.e6dc2664.js +1 -0
- package/dist/console/static/js/async/1994.3fc86066.js +1 -0
- package/dist/console/static/js/async/2348.613ae3d9.js +1 -0
- package/dist/console/static/js/async/2390.1b890b9d.js +1 -0
- package/dist/console/static/js/async/2414.9d040212.js +1 -0
- package/dist/console/static/js/async/2454.4c1784ab.js +1 -0
- package/dist/console/static/js/async/2498.f5f92030.js +1 -0
- package/dist/console/static/js/async/2924.b823cd1a.js +1 -0
- package/dist/console/static/js/async/3062.63fddea6.js +1 -0
- package/dist/console/static/js/async/3078.dd712008.js +1 -0
- package/dist/console/static/js/async/3198.1f307065.js +1 -0
- package/dist/console/static/js/async/3246.3d5a899f.js +1 -0
- package/dist/console/static/js/async/3286.871676eb.js +1 -0
- package/dist/console/static/js/async/342.10bf3b90.js +1 -0
- package/dist/console/static/js/async/3446.9681a4d7.js +1 -0
- package/dist/console/static/js/async/3698.ccfaabec.js +1 -0
- package/dist/console/static/js/async/3790.2a1106a6.js +1 -0
- package/dist/console/static/js/async/4231.b29784d4.js +1 -0
- package/dist/console/static/js/async/4551.515bd41d.js +1 -0
- package/dist/console/static/js/async/4596.40f6e71b.js +1 -0
- package/dist/console/static/js/async/4600.4aaebe6d.js +1 -0
- package/dist/console/static/js/async/4718.1aae022f.js +1 -0
- package/dist/console/static/js/async/4846.a347c020.js +1 -0
- package/dist/console/static/js/async/4860.83dadf89.js +1 -0
- package/dist/console/static/js/async/500.fcfa37cb.js +1 -0
- package/dist/console/static/js/async/5096.b360203d.js +1 -0
- package/dist/console/static/js/async/5222.043274fe.js +1 -0
- package/dist/console/static/js/async/5362.f498001c.js +1 -0
- package/dist/console/static/js/async/54.c94f0755.js +1 -0
- package/dist/console/static/js/async/5478.50dd9ef0.js +2 -0
- package/dist/console/static/js/async/5478.50dd9ef0.js.LICENSE.txt +3 -0
- package/dist/console/static/js/async/5507.a6a1f793.js +1 -0
- package/dist/console/static/js/async/5638.bc6b102d.js +1 -0
- package/dist/console/static/js/async/5722.e0029049.js +1 -0
- package/dist/console/static/js/async/5942.74635c6b.js +1 -0
- package/dist/console/static/js/async/5994.1c5629c1.js +1 -0
- package/dist/console/static/js/async/6054.6bddf720.js +1 -0
- package/dist/console/static/js/async/6118.45e754e5.js +1 -0
- package/dist/console/static/js/async/6127.adcbcbb6.js +1 -0
- package/dist/console/static/js/async/614.3f434c20.js +1 -0
- package/dist/console/static/js/async/6234.ba3b002d.js +1 -0
- package/dist/console/static/js/async/6310.6546a9ba.js +1 -0
- package/dist/console/static/js/async/6378.9f805419.js +1 -0
- package/dist/console/static/js/async/6380.e4433c49.js +1 -0
- package/dist/console/static/js/async/6418.f23bcfda.js +1 -0
- package/dist/console/static/js/async/6428.77c86114.js +1 -0
- package/dist/console/static/js/async/6443.83318a6c.js +1 -0
- package/dist/console/static/js/async/6508.2b445d62.js +3 -0
- package/dist/console/static/js/async/6542.e82a26c8.js +1 -0
- package/dist/console/static/js/async/6544.62111ecb.js +1 -0
- package/dist/console/static/js/async/6612.a0c9fcf4.js +1 -0
- package/dist/console/static/js/async/6740.695aebf0.js +1 -0
- package/dist/console/static/js/async/6822.dbbb32bc.js +1 -0
- package/dist/console/static/js/async/6824.ad3540ab.js +1 -0
- package/dist/console/static/js/async/6930.585dab94.js +1 -0
- package/dist/console/static/js/async/6982.c81b95e6.js +1 -0
- package/dist/console/static/js/async/7046.ab2378c1.js +1 -0
- package/dist/console/static/js/async/7110.a603277f.js +1 -0
- package/dist/console/static/js/async/7142.4a21366f.js +1 -0
- package/dist/console/static/js/async/7348.15cc6148.js +1373 -0
- package/dist/console/static/js/async/7348.15cc6148.js.LICENSE.txt +14 -0
- package/dist/console/static/js/async/7374.b1ac5c44.js +1 -0
- package/dist/console/static/js/async/742.847f17ca.js +1 -0
- package/dist/console/static/js/async/7446.743954d8.js +1 -0
- package/dist/console/static/js/async/7673.59bbbaac.js +1 -0
- package/dist/console/static/js/async/7684.c5760c8c.js +1 -0
- package/dist/console/static/js/async/7714.c30d0f94.js +1 -0
- package/dist/console/static/js/async/8118.36d5a3bf.js +298 -0
- package/dist/console/static/js/async/8145.4bcf043a.js +1 -0
- package/dist/console/static/js/async/8246.408de938.js +1 -0
- package/dist/console/static/js/async/8390.bdae1f7d.js +1 -0
- package/dist/console/static/js/async/8422.fd94dbe1.js +1 -0
- package/dist/console/static/js/async/8434.94a0e2ae.js +1 -0
- package/dist/console/static/js/async/8518.3158de13.js +1 -0
- package/dist/console/static/js/async/8564.fc2eb841.js +1 -0
- package/dist/console/static/js/async/8678.73af4c9b.js +1 -0
- package/dist/console/static/js/async/8694.79747168.js +1 -0
- package/dist/console/static/js/async/8756.1de37b83.js +1 -0
- package/dist/console/static/js/async/8804.7fe6bdf9.js +3 -0
- package/dist/console/static/js/async/8883.e717ee94.js +1 -0
- package/dist/console/static/js/async/8886.fe6e876c.js +1 -0
- package/dist/console/static/js/async/9030.fc1ae402.js +1 -0
- package/dist/console/static/js/async/9094.5598d084.js +1 -0
- package/dist/console/static/js/async/9218.ee7b84b7.js +1 -0
- package/dist/console/static/js/async/94.9b80bc35.js +1 -0
- package/dist/console/static/js/async/9526.92aba34c.js +1 -0
- package/dist/console/static/js/async/9762.f83bc4f3.js +1 -0
- package/dist/console/static/js/async/984.e11c113a.js +1 -0
- package/dist/console/static/js/async/9846.246653cd.js +1 -0
- package/dist/console/static/js/index.4487e1ff.js +1 -0
- package/dist/console/static/js/lib-react.15d7ca9a.js +2 -0
- package/dist/console/static/js/lib-react.15d7ca9a.js.LICENSE.txt +49 -0
- package/dist/coze-C6PMDPBI.js +49 -0
- package/dist/coze-E6VGRNLV.js +48 -0
- package/dist/dashboard.command-J7XOZNXU.js +8 -0
- package/dist/dashboard.command-RV2NHDKW.js +7 -0
- package/dist/dingtalk-JNRNRN7E.js +77 -0
- package/dist/dingtalk-WZGGIAHJ.js +76 -0
- package/dist/douyin-miniprogram-AIJPPIZH.js +41 -0
- package/dist/douyin-miniprogram-HCYZ5NBW.js +42 -0
- package/dist/figma-2YYNSCDX.js +103 -0
- package/dist/figma-RYOBMENP.js +102 -0
- package/dist/firebase-2IJDDBXX.js +112 -0
- package/dist/firebase-OYSY6HPT.js +111 -0
- package/dist/firecrawl-2T3SBUW7.js +66 -0
- package/dist/firecrawl-IYYXLAZM.js +65 -0
- package/dist/flyai-7FJ4TRAG.js +81 -0
- package/dist/flyai-QS5Q6FJR.js +82 -0
- package/dist/gitagent-MWI75OIX.js +725 -0
- package/dist/gitagent-YBMWY7NZ.js +726 -0
- package/dist/gitee-3N7OFOM7.js +53 -0
- package/dist/gitee-KVNK6KLZ.js +54 -0
- package/dist/github-LUEC2LID.js +143 -0
- package/dist/github-XRO5Z3GC.js +142 -0
- package/dist/google-ads-A3QAJI4D.js +88 -0
- package/dist/google-ads-VPKWTX67.js +89 -0
- package/dist/google-analytics-C4UR5ZR2.js +50 -0
- package/dist/google-analytics-XDYZA2B7.js +49 -0
- package/dist/google-workspace-LL3EWVHH.js +320 -0
- package/dist/google-workspace-YX35SHHX.js +321 -0
- package/dist/huawei-xiaoyi-6BSMGJHR.js +40 -0
- package/dist/huawei-xiaoyi-KPWLTSHB.js +41 -0
- package/dist/hubspot-DIUHGEDI.js +45 -0
- package/dist/hubspot-FTIEMNZO.js +44 -0
- package/dist/huggingface-MJCOXA7E.js +116 -0
- package/dist/huggingface-UUXK2RHK.js +117 -0
- package/dist/index.d.ts +3013 -0
- package/dist/index.js +15649 -0
- package/dist/inference-ai-image-generation-CMI6R5T3.js +106 -0
- package/dist/inference-ai-image-generation-PXV6IG4U.js +107 -0
- package/dist/inference-sh-7AZOLEFI.js +94 -0
- package/dist/inference-sh-ABQOD3YF.js +95 -0
- package/dist/init.command-6E24K4H3.js +9 -0
- package/dist/init.command-O4HG4HKR.js +10 -0
- package/dist/klaviyo-6K5YEFNH.js +45 -0
- package/dist/klaviyo-LDPBWBSS.js +44 -0
- package/dist/kuaidi100-HGFM5VK2.js +42 -0
- package/dist/kuaidi100-UHPFCVXP.js +41 -0
- package/dist/lark-6LNA3LUQ.js +103 -0
- package/dist/lark-URVBZNS4.js +102 -0
- package/dist/linear-7QFSFPOD.js +57 -0
- package/dist/linear-T4ORUP7N.js +56 -0
- package/dist/lovart-PDUXRUHJ.js +99 -0
- package/dist/lovart-QO3SK55T.js +100 -0
- package/dist/meta-ads-SCNFI45S.js +42 -0
- package/dist/meta-ads-V6XPZWX3.js +41 -0
- package/dist/miclaw-5CNTW7VV.js +36 -0
- package/dist/miclaw-TPPPS2WN.js +35 -0
- package/dist/model-provider-AVSFJSZP.js +393 -0
- package/dist/model-provider-KFB76XV5.js +392 -0
- package/dist/notion-FZK76MN2.js +69 -0
- package/dist/notion-WFA7KGZZ.js +70 -0
- package/dist/oceanengine-3JZUS3PP.js +43 -0
- package/dist/oceanengine-5BRIJVJE.js +42 -0
- package/dist/opencli-PFXHGCS2.js +81 -0
- package/dist/opencli-VIGRJTGH.js +80 -0
- package/dist/paypal-33UADIPR.js +54 -0
- package/dist/paypal-Z5JYHIWD.js +55 -0
- package/dist/playwright-MG5WHK47.js +58 -0
- package/dist/playwright-SQAQ3DZG.js +59 -0
- package/dist/plugins-HZBWK3WQ.js +120 -0
- package/dist/plugins-I4GD5SZX.js +121 -0
- package/dist/posthog-MU5MAJOQ.js +79 -0
- package/dist/posthog-RJRRKDWB.js +80 -0
- package/dist/salesforce-34FVIJTG.js +82 -0
- package/dist/salesforce-3QZ6OFVO.js +83 -0
- package/dist/sentry-MCIRMACU.js +111 -0
- package/dist/sentry-PIWW46VA.js +110 -0
- package/dist/seo-suite-4SQ3I67Q.js +54 -0
- package/dist/seo-suite-WJXMA3S4.js +55 -0
- package/dist/serve.command-5FMIPQRY.js +10 -0
- package/dist/serve.command-DNE6GPMK.js +9 -0
- package/dist/shadowob-JELOWHWX.js +1068 -0
- package/dist/shadowob-PRSMI5MW.js +1069 -0
- package/dist/sherlock-2PKY2E2Y.js +66 -0
- package/dist/sherlock-C5ZWPPVT.js +67 -0
- package/dist/shopify-GL3NFVGE.js +94 -0
- package/dist/shopify-R4G3UXM6.js +93 -0
- package/dist/skill-discovery-7INAUP4D.js +77 -0
- package/dist/skill-discovery-YPXXV622.js +78 -0
- package/dist/state-7MCZBTR5.js +17 -0
- package/dist/state-FGOFLFBE.js +18 -0
- package/dist/stripe-C22RR4ZS.js +83 -0
- package/dist/stripe-LJNPQ3CQ.js +82 -0
- package/dist/supabase-IRNQ54FJ.js +98 -0
- package/dist/supabase-N4ONFJNQ.js +97 -0
- package/dist/taobao-aipaas-LRR4GMO3.js +45 -0
- package/dist/taobao-aipaas-RVKORSF4.js +46 -0
- package/dist/tapd-3JPVJ7XH.js +46 -0
- package/dist/tapd-TMQRSMFG.js +47 -0
- package/dist/tencent-ads-IGD33LO7.js +42 -0
- package/dist/tencent-ads-UHC6OPBV.js +43 -0
- package/dist/tencent-docs-C3A4J3CJ.js +47 -0
- package/dist/tencent-docs-O2SC4FHL.js +48 -0
- package/dist/tencent-maps-HMMWMNF4.js +37 -0
- package/dist/tencent-maps-OQOKHVW2.js +36 -0
- package/dist/vercel-KOXDDTHX.js +73 -0
- package/dist/vercel-OLNVDWMG.js +74 -0
- package/dist/webflow-FULU5Q2I.js +114 -0
- package/dist/webflow-OMJKZM54.js +115 -0
- package/dist/wechat-miniprogram-skyline-KYCDMQNW.js +74 -0
- package/dist/wechat-miniprogram-skyline-VR4FVIQL.js +75 -0
- package/dist/wechat-pay-BCMAJ6UW.js +50 -0
- package/dist/wechat-pay-YQQKXVUI.js +51 -0
- package/dist/wonda-NGWIORYN.js +81 -0
- package/dist/wonda-RBABXFNM.js +82 -0
- package/dist/wordpress-woocommerce-RDIUTHYT.js +57 -0
- package/dist/wordpress-woocommerce-RNA5HB3N.js +58 -0
- package/dist/wps-DAEFQHDE.js +47 -0
- package/dist/wps-LUWHMZQQ.js +48 -0
- package/dist/yuque-HCHTJWNI.js +72 -0
- package/dist/yuque-KRH5O74J.js +71 -0
- package/images/RUNNERS.md +270 -0
- package/images/cc-connect-runner/entrypoint.mjs +311 -0
- package/images/claude-runner/Dockerfile +88 -0
- package/images/claude-runner/RUNNER.md +222 -0
- package/images/claude-runner/entrypoint.mjs +2 -0
- package/images/codex-runner/Dockerfile +87 -0
- package/images/codex-runner/RUNNER.md +226 -0
- package/images/codex-runner/entrypoint.mjs +2 -0
- package/images/gemini-runner/Dockerfile +87 -0
- package/images/gemini-runner/RUNNER.md +218 -0
- package/images/gemini-runner/entrypoint.mjs +2 -0
- package/images/hermes-runner/Dockerfile +74 -0
- package/images/hermes-runner/RUNNER.md +243 -0
- package/images/hermes-runner/entrypoint.mjs +283 -0
- package/images/openclaw-runner/Dockerfile +212 -0
- package/images/openclaw-runner/RUNNER.md +170 -0
- package/images/openclaw-runner/entrypoint.mjs +1113 -0
- package/images/openclaw-runner/warm-runtime-deps.mjs +95 -0
- package/images/opencode-runner/Dockerfile +87 -0
- package/images/opencode-runner/RUNNER.md +202 -0
- package/images/opencode-runner/entrypoint.mjs +2 -0
- package/package.json +121 -0
- package/templates/agent-marketplace-buddy.template.json +131 -0
- package/templates/ai-werewolf.template.json +92 -0
- package/templates/bmad-method-buddy.template.json +123 -0
- package/templates/brain-fix.template.json +92 -0
- package/templates/claude-ads-buddy.template.json +123 -0
- package/templates/claude-financial-services-buddy.template.json +111 -0
- package/templates/claude-seo-buddy.template.json +123 -0
- package/templates/code-arena.template.json +92 -0
- package/templates/daily-brief.template.json +92 -0
- package/templates/e-wife.template.json +92 -0
- package/templates/everything-claude-code-buddy.template.json +125 -0
- package/templates/financial-freedom.template.json +92 -0
- package/templates/gitstory.template.json +92 -0
- package/templates/google-workspace-buddy.template.json +88 -0
- package/templates/gsd-buddy.template.json +119 -0
- package/templates/gstack-buddy.template.json +143 -0
- package/templates/gstack.template.json +92 -0
- package/templates/little-match-girl.template.json +114 -0
- package/templates/lovart-buddy.template.json +110 -0
- package/templates/marketingskills-buddy.template.json +102 -0
- package/templates/retire-buddy.template.json +92 -0
- package/templates/scientific-skills-buddy.template.json +119 -0
- package/templates/seomachine-buddy.template.json +113 -0
- package/templates/shadow-server-app-demo.template.json +105 -0
- package/templates/slavingia-skills-buddy.template.json +102 -0
- package/templates/superclaude-buddy.template.json +146 -0
- package/templates/superpowers-buddy.template.json +108 -0
- package/templates/world-pulse.template.json +92 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
attachConnectorRuntimeAssets,
|
|
4
|
+
connectorManifest,
|
|
5
|
+
installedCheck,
|
|
6
|
+
npmGlobalDependency
|
|
7
|
+
} from "./chunk-SVMXSIMG.js";
|
|
8
|
+
import "./chunk-RECNVWMT.js";
|
|
9
|
+
import {
|
|
10
|
+
defineConnectorPlugin
|
|
11
|
+
} from "./chunk-CTNUKOQE.js";
|
|
12
|
+
import "./chunk-AD3JTIU3.js";
|
|
13
|
+
|
|
14
|
+
// src/plugins/opencli/index.ts
|
|
15
|
+
var manifest = connectorManifest({
|
|
16
|
+
id: "opencli",
|
|
17
|
+
name: "OpenCLI",
|
|
18
|
+
description: "OpenCLI turns websites, browser sessions, Electron apps, and local tools into deterministic CLI commands for agent workflows.",
|
|
19
|
+
category: "automation",
|
|
20
|
+
icon: "terminal",
|
|
21
|
+
website: "https://github.com/jackwener/opencli",
|
|
22
|
+
docs: "https://github.com/jackwener/opencli/tree/main/docs",
|
|
23
|
+
fields: [],
|
|
24
|
+
authType: "none",
|
|
25
|
+
capabilities: ["tool", "data-source", "action", "cli"],
|
|
26
|
+
tags: ["opencli", "browser", "automation", "cli", "adapter", "electron"],
|
|
27
|
+
popularity: 84
|
|
28
|
+
});
|
|
29
|
+
var runtimeDependencies = [
|
|
30
|
+
npmGlobalDependency("opencli", ["@jackwener/opencli"], "OpenCLI browser and adapter CLI")
|
|
31
|
+
];
|
|
32
|
+
var skillSources = [
|
|
33
|
+
{
|
|
34
|
+
id: "opencli-skills",
|
|
35
|
+
kind: "git",
|
|
36
|
+
url: "https://github.com/jackwener/opencli.git",
|
|
37
|
+
ref: "main",
|
|
38
|
+
from: "skills",
|
|
39
|
+
targetPath: "/workspace/.agents/plugin-skills/opencli",
|
|
40
|
+
include: [
|
|
41
|
+
"opencli-adapter-author",
|
|
42
|
+
"opencli-autofix",
|
|
43
|
+
"opencli-browser",
|
|
44
|
+
"opencli-usage",
|
|
45
|
+
"smart-search"
|
|
46
|
+
],
|
|
47
|
+
description: "OpenCLI agent skills for browser automation, adapter authoring, and usage"
|
|
48
|
+
}
|
|
49
|
+
];
|
|
50
|
+
var verificationChecks = [
|
|
51
|
+
installedCheck("opencli-cli-installed", "OpenCLI CLI installed", ["opencli", "--version"]),
|
|
52
|
+
{
|
|
53
|
+
id: "opencli-skills-mounted",
|
|
54
|
+
label: "OpenCLI skills mounted",
|
|
55
|
+
kind: "command",
|
|
56
|
+
command: ["test", "-f", "/workspace/.agents/plugin-skills/opencli/opencli-usage/SKILL.md"],
|
|
57
|
+
timeoutMs: 5e3,
|
|
58
|
+
risk: "safe"
|
|
59
|
+
}
|
|
60
|
+
];
|
|
61
|
+
var plugin = defineConnectorPlugin(manifest, {
|
|
62
|
+
cli: [
|
|
63
|
+
{
|
|
64
|
+
name: "opencli",
|
|
65
|
+
command: "opencli",
|
|
66
|
+
description: "OpenCLI command hub for website adapters, browser bridge operations, and local tool wrappers"
|
|
67
|
+
}
|
|
68
|
+
],
|
|
69
|
+
runtimeDependencies,
|
|
70
|
+
skillSources,
|
|
71
|
+
verificationChecks,
|
|
72
|
+
prompt: "Use OpenCLI for deterministic website adapters, browser bridge workflows, Electron app control, and local CLI hub tasks. Prefer built-in adapters for read-only public data. Ask before browser-backed actions that require a user session, account state, or writes."
|
|
73
|
+
});
|
|
74
|
+
var opencli_default = attachConnectorRuntimeAssets(plugin, {
|
|
75
|
+
runtimeDependencies,
|
|
76
|
+
skillSources,
|
|
77
|
+
skillsMountPath: "/workspace/.agents/plugin-skills/opencli"
|
|
78
|
+
});
|
|
79
|
+
export {
|
|
80
|
+
opencli_default as default
|
|
81
|
+
};
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import {
|
|
2
|
+
attachConnectorRuntimeAssets,
|
|
3
|
+
connectorManifest,
|
|
4
|
+
installedCheck,
|
|
5
|
+
npmGlobalDependency
|
|
6
|
+
} from "./chunk-EEFMJYKB.js";
|
|
7
|
+
import "./chunk-POSVEKIY.js";
|
|
8
|
+
import {
|
|
9
|
+
defineConnectorPlugin
|
|
10
|
+
} from "./chunk-JY2HTT7Q.js";
|
|
11
|
+
import "./chunk-R5U7XKVJ.js";
|
|
12
|
+
|
|
13
|
+
// src/plugins/opencli/index.ts
|
|
14
|
+
var manifest = connectorManifest({
|
|
15
|
+
id: "opencli",
|
|
16
|
+
name: "OpenCLI",
|
|
17
|
+
description: "OpenCLI turns websites, browser sessions, Electron apps, and local tools into deterministic CLI commands for agent workflows.",
|
|
18
|
+
category: "automation",
|
|
19
|
+
icon: "terminal",
|
|
20
|
+
website: "https://github.com/jackwener/opencli",
|
|
21
|
+
docs: "https://github.com/jackwener/opencli/tree/main/docs",
|
|
22
|
+
fields: [],
|
|
23
|
+
authType: "none",
|
|
24
|
+
capabilities: ["tool", "data-source", "action", "cli"],
|
|
25
|
+
tags: ["opencli", "browser", "automation", "cli", "adapter", "electron"],
|
|
26
|
+
popularity: 84
|
|
27
|
+
});
|
|
28
|
+
var runtimeDependencies = [
|
|
29
|
+
npmGlobalDependency("opencli", ["@jackwener/opencli"], "OpenCLI browser and adapter CLI")
|
|
30
|
+
];
|
|
31
|
+
var skillSources = [
|
|
32
|
+
{
|
|
33
|
+
id: "opencli-skills",
|
|
34
|
+
kind: "git",
|
|
35
|
+
url: "https://github.com/jackwener/opencli.git",
|
|
36
|
+
ref: "main",
|
|
37
|
+
from: "skills",
|
|
38
|
+
targetPath: "/workspace/.agents/plugin-skills/opencli",
|
|
39
|
+
include: [
|
|
40
|
+
"opencli-adapter-author",
|
|
41
|
+
"opencli-autofix",
|
|
42
|
+
"opencli-browser",
|
|
43
|
+
"opencli-usage",
|
|
44
|
+
"smart-search"
|
|
45
|
+
],
|
|
46
|
+
description: "OpenCLI agent skills for browser automation, adapter authoring, and usage"
|
|
47
|
+
}
|
|
48
|
+
];
|
|
49
|
+
var verificationChecks = [
|
|
50
|
+
installedCheck("opencli-cli-installed", "OpenCLI CLI installed", ["opencli", "--version"]),
|
|
51
|
+
{
|
|
52
|
+
id: "opencli-skills-mounted",
|
|
53
|
+
label: "OpenCLI skills mounted",
|
|
54
|
+
kind: "command",
|
|
55
|
+
command: ["test", "-f", "/workspace/.agents/plugin-skills/opencli/opencli-usage/SKILL.md"],
|
|
56
|
+
timeoutMs: 5e3,
|
|
57
|
+
risk: "safe"
|
|
58
|
+
}
|
|
59
|
+
];
|
|
60
|
+
var plugin = defineConnectorPlugin(manifest, {
|
|
61
|
+
cli: [
|
|
62
|
+
{
|
|
63
|
+
name: "opencli",
|
|
64
|
+
command: "opencli",
|
|
65
|
+
description: "OpenCLI command hub for website adapters, browser bridge operations, and local tool wrappers"
|
|
66
|
+
}
|
|
67
|
+
],
|
|
68
|
+
runtimeDependencies,
|
|
69
|
+
skillSources,
|
|
70
|
+
verificationChecks,
|
|
71
|
+
prompt: "Use OpenCLI for deterministic website adapters, browser bridge workflows, Electron app control, and local CLI hub tasks. Prefer built-in adapters for read-only public data. Ask before browser-backed actions that require a user session, account state, or writes."
|
|
72
|
+
});
|
|
73
|
+
var opencli_default = attachConnectorRuntimeAssets(plugin, {
|
|
74
|
+
runtimeDependencies,
|
|
75
|
+
skillSources,
|
|
76
|
+
skillsMountPath: "/workspace/.agents/plugin-skills/opencli"
|
|
77
|
+
});
|
|
78
|
+
export {
|
|
79
|
+
opencli_default as default
|
|
80
|
+
};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import {
|
|
2
|
+
connectorField,
|
|
3
|
+
connectorManifest
|
|
4
|
+
} from "./chunk-EEFMJYKB.js";
|
|
5
|
+
import "./chunk-POSVEKIY.js";
|
|
6
|
+
import {
|
|
7
|
+
defineConnectorPlugin
|
|
8
|
+
} from "./chunk-JY2HTT7Q.js";
|
|
9
|
+
import "./chunk-R5U7XKVJ.js";
|
|
10
|
+
|
|
11
|
+
// src/plugins/paypal/index.ts
|
|
12
|
+
var manifest = connectorManifest({
|
|
13
|
+
id: "paypal",
|
|
14
|
+
name: "PayPal",
|
|
15
|
+
description: "PayPal commerce operations for transaction reconciliation, account risk triage, disputes, refunds, and chargeback workflows.",
|
|
16
|
+
category: "finance",
|
|
17
|
+
icon: "wallet-cards",
|
|
18
|
+
website: "https://developer.paypal.com",
|
|
19
|
+
docs: "https://docs.paypal.ai/developer/tools/ai/mcp-quickstart",
|
|
20
|
+
fields: [
|
|
21
|
+
connectorField("PAYPAL_CLIENT_ID", "PayPal client ID", {
|
|
22
|
+
description: "REST app client ID.",
|
|
23
|
+
sensitive: false,
|
|
24
|
+
placeholder: "Client ID"
|
|
25
|
+
}),
|
|
26
|
+
connectorField("PAYPAL_CLIENT_SECRET", "PayPal client secret", {
|
|
27
|
+
description: "REST app client secret.",
|
|
28
|
+
placeholder: "Client secret"
|
|
29
|
+
}),
|
|
30
|
+
connectorField("PAYPAL_ENVIRONMENT", "PayPal environment", {
|
|
31
|
+
description: "Use sandbox for testing or live for production.",
|
|
32
|
+
required: false,
|
|
33
|
+
sensitive: false,
|
|
34
|
+
placeholder: "sandbox"
|
|
35
|
+
})
|
|
36
|
+
],
|
|
37
|
+
capabilities: ["tool", "data-source", "action", "mcp"],
|
|
38
|
+
tags: ["payments", "paypal", "disputes", "refunds", "risk", "mcp"],
|
|
39
|
+
popularity: 97
|
|
40
|
+
});
|
|
41
|
+
var paypal_default = defineConnectorPlugin(manifest, {
|
|
42
|
+
mcp: {
|
|
43
|
+
id: "paypal-mcp",
|
|
44
|
+
transport: "streamable-http",
|
|
45
|
+
url: "https://mcp.paypal.com/http",
|
|
46
|
+
description: "PayPal MCP server for PayPal commerce APIs",
|
|
47
|
+
auth: { type: "oauth2" },
|
|
48
|
+
requiredEnv: ["PAYPAL_CLIENT_ID", "PAYPAL_CLIENT_SECRET"]
|
|
49
|
+
},
|
|
50
|
+
prompt: "Use PayPal for payment reconciliation, dispute and chargeback investigation, refund review, and account-risk triage. Ask for approval before refunds, captures, or dispute responses."
|
|
51
|
+
});
|
|
52
|
+
export {
|
|
53
|
+
paypal_default as default
|
|
54
|
+
};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
connectorField,
|
|
4
|
+
connectorManifest
|
|
5
|
+
} from "./chunk-SVMXSIMG.js";
|
|
6
|
+
import "./chunk-RECNVWMT.js";
|
|
7
|
+
import {
|
|
8
|
+
defineConnectorPlugin
|
|
9
|
+
} from "./chunk-CTNUKOQE.js";
|
|
10
|
+
import "./chunk-AD3JTIU3.js";
|
|
11
|
+
|
|
12
|
+
// src/plugins/paypal/index.ts
|
|
13
|
+
var manifest = connectorManifest({
|
|
14
|
+
id: "paypal",
|
|
15
|
+
name: "PayPal",
|
|
16
|
+
description: "PayPal commerce operations for transaction reconciliation, account risk triage, disputes, refunds, and chargeback workflows.",
|
|
17
|
+
category: "finance",
|
|
18
|
+
icon: "wallet-cards",
|
|
19
|
+
website: "https://developer.paypal.com",
|
|
20
|
+
docs: "https://docs.paypal.ai/developer/tools/ai/mcp-quickstart",
|
|
21
|
+
fields: [
|
|
22
|
+
connectorField("PAYPAL_CLIENT_ID", "PayPal client ID", {
|
|
23
|
+
description: "REST app client ID.",
|
|
24
|
+
sensitive: false,
|
|
25
|
+
placeholder: "Client ID"
|
|
26
|
+
}),
|
|
27
|
+
connectorField("PAYPAL_CLIENT_SECRET", "PayPal client secret", {
|
|
28
|
+
description: "REST app client secret.",
|
|
29
|
+
placeholder: "Client secret"
|
|
30
|
+
}),
|
|
31
|
+
connectorField("PAYPAL_ENVIRONMENT", "PayPal environment", {
|
|
32
|
+
description: "Use sandbox for testing or live for production.",
|
|
33
|
+
required: false,
|
|
34
|
+
sensitive: false,
|
|
35
|
+
placeholder: "sandbox"
|
|
36
|
+
})
|
|
37
|
+
],
|
|
38
|
+
capabilities: ["tool", "data-source", "action", "mcp"],
|
|
39
|
+
tags: ["payments", "paypal", "disputes", "refunds", "risk", "mcp"],
|
|
40
|
+
popularity: 97
|
|
41
|
+
});
|
|
42
|
+
var paypal_default = defineConnectorPlugin(manifest, {
|
|
43
|
+
mcp: {
|
|
44
|
+
id: "paypal-mcp",
|
|
45
|
+
transport: "streamable-http",
|
|
46
|
+
url: "https://mcp.paypal.com/http",
|
|
47
|
+
description: "PayPal MCP server for PayPal commerce APIs",
|
|
48
|
+
auth: { type: "oauth2" },
|
|
49
|
+
requiredEnv: ["PAYPAL_CLIENT_ID", "PAYPAL_CLIENT_SECRET"]
|
|
50
|
+
},
|
|
51
|
+
prompt: "Use PayPal for payment reconciliation, dispute and chargeback investigation, refund review, and account-risk triage. Ask for approval before refunds, captures, or dispute responses."
|
|
52
|
+
});
|
|
53
|
+
export {
|
|
54
|
+
paypal_default as default
|
|
55
|
+
};
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import {
|
|
2
|
+
attachConnectorRuntimeAssets,
|
|
3
|
+
connectorManifest,
|
|
4
|
+
installedCheck,
|
|
5
|
+
npmGlobalDependency
|
|
6
|
+
} from "./chunk-EEFMJYKB.js";
|
|
7
|
+
import "./chunk-POSVEKIY.js";
|
|
8
|
+
import {
|
|
9
|
+
defineConnectorPlugin
|
|
10
|
+
} from "./chunk-JY2HTT7Q.js";
|
|
11
|
+
import "./chunk-R5U7XKVJ.js";
|
|
12
|
+
|
|
13
|
+
// src/plugins/playwright/index.ts
|
|
14
|
+
var manifest = connectorManifest({
|
|
15
|
+
id: "playwright",
|
|
16
|
+
name: "Playwright",
|
|
17
|
+
description: "Playwright BrowserOps gives Buddies deterministic browser automation for E2E testing, visual QA, screenshots, trace review, and scripted web workflows.",
|
|
18
|
+
category: "automation",
|
|
19
|
+
icon: "panel-top",
|
|
20
|
+
website: "https://playwright.dev",
|
|
21
|
+
docs: "https://playwright.dev/docs/mcp",
|
|
22
|
+
fields: [],
|
|
23
|
+
authType: "none",
|
|
24
|
+
capabilities: ["tool", "data-source", "action", "cli", "mcp"],
|
|
25
|
+
tags: ["playwright", "browser", "e2e", "screenshots", "visual-qa", "mcp"],
|
|
26
|
+
popularity: 90
|
|
27
|
+
});
|
|
28
|
+
var runtimeDependencies = [
|
|
29
|
+
npmGlobalDependency("playwright", ["playwright", "@playwright/mcp"], "Playwright CLI and MCP")
|
|
30
|
+
];
|
|
31
|
+
var plugin = defineConnectorPlugin(manifest, {
|
|
32
|
+
cli: [
|
|
33
|
+
{
|
|
34
|
+
name: "playwright",
|
|
35
|
+
command: "playwright",
|
|
36
|
+
description: "Playwright CLI for browser testing, screenshots, traces, and codegen"
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
mcp: {
|
|
40
|
+
id: "playwright-mcp",
|
|
41
|
+
transport: "stdio",
|
|
42
|
+
command: "npx",
|
|
43
|
+
args: ["-y", "@playwright/mcp@latest"],
|
|
44
|
+
description: "Playwright MCP server for browser automation"
|
|
45
|
+
},
|
|
46
|
+
runtimeDependencies,
|
|
47
|
+
verificationChecks: [
|
|
48
|
+
installedCheck("playwright-cli-installed", "Playwright CLI installed", [
|
|
49
|
+
"playwright",
|
|
50
|
+
"--version"
|
|
51
|
+
])
|
|
52
|
+
],
|
|
53
|
+
prompt: "Use Playwright for browser automation, E2E tests, screenshots, visual QA, trace analysis, and reproducible web workflows. Confirm before submitting forms, publishing content, or changing account state."
|
|
54
|
+
});
|
|
55
|
+
var playwright_default = attachConnectorRuntimeAssets(plugin, { runtimeDependencies });
|
|
56
|
+
export {
|
|
57
|
+
playwright_default as default
|
|
58
|
+
};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
attachConnectorRuntimeAssets,
|
|
4
|
+
connectorManifest,
|
|
5
|
+
installedCheck,
|
|
6
|
+
npmGlobalDependency
|
|
7
|
+
} from "./chunk-SVMXSIMG.js";
|
|
8
|
+
import "./chunk-RECNVWMT.js";
|
|
9
|
+
import {
|
|
10
|
+
defineConnectorPlugin
|
|
11
|
+
} from "./chunk-CTNUKOQE.js";
|
|
12
|
+
import "./chunk-AD3JTIU3.js";
|
|
13
|
+
|
|
14
|
+
// src/plugins/playwright/index.ts
|
|
15
|
+
var manifest = connectorManifest({
|
|
16
|
+
id: "playwright",
|
|
17
|
+
name: "Playwright",
|
|
18
|
+
description: "Playwright BrowserOps gives Buddies deterministic browser automation for E2E testing, visual QA, screenshots, trace review, and scripted web workflows.",
|
|
19
|
+
category: "automation",
|
|
20
|
+
icon: "panel-top",
|
|
21
|
+
website: "https://playwright.dev",
|
|
22
|
+
docs: "https://playwright.dev/docs/mcp",
|
|
23
|
+
fields: [],
|
|
24
|
+
authType: "none",
|
|
25
|
+
capabilities: ["tool", "data-source", "action", "cli", "mcp"],
|
|
26
|
+
tags: ["playwright", "browser", "e2e", "screenshots", "visual-qa", "mcp"],
|
|
27
|
+
popularity: 90
|
|
28
|
+
});
|
|
29
|
+
var runtimeDependencies = [
|
|
30
|
+
npmGlobalDependency("playwright", ["playwright", "@playwright/mcp"], "Playwright CLI and MCP")
|
|
31
|
+
];
|
|
32
|
+
var plugin = defineConnectorPlugin(manifest, {
|
|
33
|
+
cli: [
|
|
34
|
+
{
|
|
35
|
+
name: "playwright",
|
|
36
|
+
command: "playwright",
|
|
37
|
+
description: "Playwright CLI for browser testing, screenshots, traces, and codegen"
|
|
38
|
+
}
|
|
39
|
+
],
|
|
40
|
+
mcp: {
|
|
41
|
+
id: "playwright-mcp",
|
|
42
|
+
transport: "stdio",
|
|
43
|
+
command: "npx",
|
|
44
|
+
args: ["-y", "@playwright/mcp@latest"],
|
|
45
|
+
description: "Playwright MCP server for browser automation"
|
|
46
|
+
},
|
|
47
|
+
runtimeDependencies,
|
|
48
|
+
verificationChecks: [
|
|
49
|
+
installedCheck("playwright-cli-installed", "Playwright CLI installed", [
|
|
50
|
+
"playwright",
|
|
51
|
+
"--version"
|
|
52
|
+
])
|
|
53
|
+
],
|
|
54
|
+
prompt: "Use Playwright for browser automation, E2E tests, screenshots, visual QA, trace analysis, and reproducible web workflows. Confirm before submitting forms, publishing content, or changing account state."
|
|
55
|
+
});
|
|
56
|
+
var playwright_default = attachConnectorRuntimeAssets(plugin, { runtimeDependencies });
|
|
57
|
+
export {
|
|
58
|
+
playwright_default as default
|
|
59
|
+
};
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createPluginRegistry,
|
|
3
|
+
getPluginRegistry,
|
|
4
|
+
loadAllPlugins,
|
|
5
|
+
registerPlugin,
|
|
6
|
+
resetPluginRegistry,
|
|
7
|
+
resolveAgentPluginConfig,
|
|
8
|
+
resolvePluginSecrets,
|
|
9
|
+
validateManifest
|
|
10
|
+
} from "./chunk-JUPAE5IA.js";
|
|
11
|
+
import {
|
|
12
|
+
defineChannelPlugin,
|
|
13
|
+
defineConnectorPlugin,
|
|
14
|
+
definePlugin,
|
|
15
|
+
defineProviderPlugin,
|
|
16
|
+
defineSkillPlugin,
|
|
17
|
+
loadManifest
|
|
18
|
+
} from "./chunk-JY2HTT7Q.js";
|
|
19
|
+
import "./chunk-R5U7XKVJ.js";
|
|
20
|
+
|
|
21
|
+
// src/plugins/lifecycle.ts
|
|
22
|
+
async function executePluginProvisions(agent, config, namespace, logger, dryRun = false, extraSecrets = {}, persistedState = null) {
|
|
23
|
+
const registry = getPluginRegistry();
|
|
24
|
+
const results = { secrets: {}, states: {}, errors: [] };
|
|
25
|
+
if (registry.size === 0) return results;
|
|
26
|
+
for (const pluginDef of registry.getAll()) {
|
|
27
|
+
const pluginId = pluginDef.manifest.id;
|
|
28
|
+
if (!pluginDef._hooks.provision.length) continue;
|
|
29
|
+
const resolved = resolveAgentPluginConfig(pluginId, agent.id, config);
|
|
30
|
+
if (!resolved) continue;
|
|
31
|
+
const secrets = { ...resolvePluginSecrets(pluginId, config, process.env), ...extraSecrets };
|
|
32
|
+
const context = {
|
|
33
|
+
agent,
|
|
34
|
+
config,
|
|
35
|
+
agentConfig: resolved,
|
|
36
|
+
secrets,
|
|
37
|
+
namespace,
|
|
38
|
+
logger,
|
|
39
|
+
dryRun,
|
|
40
|
+
previousState: persistedState?.plugins?.[pluginId] ?? null
|
|
41
|
+
};
|
|
42
|
+
try {
|
|
43
|
+
logger.dim(` Provisioning plugin: ${pluginDef.manifest.name}`);
|
|
44
|
+
for (const fn of pluginDef._hooks.provision) {
|
|
45
|
+
const result = await fn(context);
|
|
46
|
+
if (result.state) results.states[pluginId] = result.state;
|
|
47
|
+
if (result.secrets) Object.assign(results.secrets, result.secrets);
|
|
48
|
+
}
|
|
49
|
+
} catch (err) {
|
|
50
|
+
const cause = err instanceof Error ? err.cause : void 0;
|
|
51
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
52
|
+
const detail = cause ? ` (cause: ${cause.code ?? ""} ${cause.message ?? ""})` : "";
|
|
53
|
+
const stack = err instanceof Error && err.stack ? `
|
|
54
|
+
${err.stack.split("\n").slice(0, 4).join("\n")}` : "";
|
|
55
|
+
results.errors.push({ pluginId, error: message + detail });
|
|
56
|
+
logger.info(` \u26A0 Plugin ${pluginId} provision failed: ${message}${detail}${stack}`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return results;
|
|
60
|
+
}
|
|
61
|
+
async function checkPluginHealth(config, agentId = "") {
|
|
62
|
+
const registry = getPluginRegistry();
|
|
63
|
+
const results = [];
|
|
64
|
+
if (registry.size === 0) return results;
|
|
65
|
+
for (const pluginDef of registry.getAll()) {
|
|
66
|
+
const pluginId = pluginDef.manifest.id;
|
|
67
|
+
if (!pluginDef._hooks.healthCheck.length) continue;
|
|
68
|
+
const resolved = resolveAgentPluginConfig(pluginId, agentId, config);
|
|
69
|
+
if (!resolved) continue;
|
|
70
|
+
const secrets = resolvePluginSecrets(pluginId, config, process.env);
|
|
71
|
+
const context = {
|
|
72
|
+
agent: {
|
|
73
|
+
id: agentId,
|
|
74
|
+
runtime: "openclaw",
|
|
75
|
+
configuration: { openclaw: {} }
|
|
76
|
+
},
|
|
77
|
+
config,
|
|
78
|
+
agentConfig: resolved,
|
|
79
|
+
secrets,
|
|
80
|
+
namespace: config.deployments?.namespace ?? "default",
|
|
81
|
+
pluginRegistry: registry,
|
|
82
|
+
cwd: process.cwd()
|
|
83
|
+
};
|
|
84
|
+
try {
|
|
85
|
+
for (const fn of pluginDef._hooks.healthCheck) {
|
|
86
|
+
const result = await fn(context);
|
|
87
|
+
results.push({
|
|
88
|
+
pluginId,
|
|
89
|
+
name: pluginDef.manifest.name,
|
|
90
|
+
healthy: result.healthy,
|
|
91
|
+
message: result.message
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
} catch (err) {
|
|
95
|
+
results.push({
|
|
96
|
+
pluginId,
|
|
97
|
+
name: pluginDef.manifest.name,
|
|
98
|
+
healthy: false,
|
|
99
|
+
message: err instanceof Error ? err.message : String(err)
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return results;
|
|
104
|
+
}
|
|
105
|
+
export {
|
|
106
|
+
checkPluginHealth,
|
|
107
|
+
createPluginRegistry,
|
|
108
|
+
defineChannelPlugin,
|
|
109
|
+
defineConnectorPlugin,
|
|
110
|
+
definePlugin,
|
|
111
|
+
defineProviderPlugin,
|
|
112
|
+
defineSkillPlugin,
|
|
113
|
+
executePluginProvisions,
|
|
114
|
+
getPluginRegistry,
|
|
115
|
+
loadAllPlugins,
|
|
116
|
+
loadManifest,
|
|
117
|
+
registerPlugin,
|
|
118
|
+
resetPluginRegistry,
|
|
119
|
+
validateManifest
|
|
120
|
+
};
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
createPluginRegistry,
|
|
4
|
+
getPluginRegistry,
|
|
5
|
+
loadAllPlugins,
|
|
6
|
+
registerPlugin,
|
|
7
|
+
resetPluginRegistry,
|
|
8
|
+
resolveAgentPluginConfig,
|
|
9
|
+
resolvePluginSecrets,
|
|
10
|
+
validateManifest
|
|
11
|
+
} from "./chunk-6P2K6QZR.js";
|
|
12
|
+
import {
|
|
13
|
+
defineChannelPlugin,
|
|
14
|
+
defineConnectorPlugin,
|
|
15
|
+
definePlugin,
|
|
16
|
+
defineProviderPlugin,
|
|
17
|
+
defineSkillPlugin,
|
|
18
|
+
loadManifest
|
|
19
|
+
} from "./chunk-CTNUKOQE.js";
|
|
20
|
+
import "./chunk-AD3JTIU3.js";
|
|
21
|
+
|
|
22
|
+
// src/plugins/lifecycle.ts
|
|
23
|
+
async function executePluginProvisions(agent, config, namespace, logger, dryRun = false, extraSecrets = {}, persistedState = null) {
|
|
24
|
+
const registry = getPluginRegistry();
|
|
25
|
+
const results = { secrets: {}, states: {}, errors: [] };
|
|
26
|
+
if (registry.size === 0) return results;
|
|
27
|
+
for (const pluginDef of registry.getAll()) {
|
|
28
|
+
const pluginId = pluginDef.manifest.id;
|
|
29
|
+
if (!pluginDef._hooks.provision.length) continue;
|
|
30
|
+
const resolved = resolveAgentPluginConfig(pluginId, agent.id, config);
|
|
31
|
+
if (!resolved) continue;
|
|
32
|
+
const secrets = { ...resolvePluginSecrets(pluginId, config, process.env), ...extraSecrets };
|
|
33
|
+
const context = {
|
|
34
|
+
agent,
|
|
35
|
+
config,
|
|
36
|
+
agentConfig: resolved,
|
|
37
|
+
secrets,
|
|
38
|
+
namespace,
|
|
39
|
+
logger,
|
|
40
|
+
dryRun,
|
|
41
|
+
previousState: persistedState?.plugins?.[pluginId] ?? null
|
|
42
|
+
};
|
|
43
|
+
try {
|
|
44
|
+
logger.dim(` Provisioning plugin: ${pluginDef.manifest.name}`);
|
|
45
|
+
for (const fn of pluginDef._hooks.provision) {
|
|
46
|
+
const result = await fn(context);
|
|
47
|
+
if (result.state) results.states[pluginId] = result.state;
|
|
48
|
+
if (result.secrets) Object.assign(results.secrets, result.secrets);
|
|
49
|
+
}
|
|
50
|
+
} catch (err) {
|
|
51
|
+
const cause = err instanceof Error ? err.cause : void 0;
|
|
52
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
53
|
+
const detail = cause ? ` (cause: ${cause.code ?? ""} ${cause.message ?? ""})` : "";
|
|
54
|
+
const stack = err instanceof Error && err.stack ? `
|
|
55
|
+
${err.stack.split("\n").slice(0, 4).join("\n")}` : "";
|
|
56
|
+
results.errors.push({ pluginId, error: message + detail });
|
|
57
|
+
logger.info(` \u26A0 Plugin ${pluginId} provision failed: ${message}${detail}${stack}`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return results;
|
|
61
|
+
}
|
|
62
|
+
async function checkPluginHealth(config, agentId = "") {
|
|
63
|
+
const registry = getPluginRegistry();
|
|
64
|
+
const results = [];
|
|
65
|
+
if (registry.size === 0) return results;
|
|
66
|
+
for (const pluginDef of registry.getAll()) {
|
|
67
|
+
const pluginId = pluginDef.manifest.id;
|
|
68
|
+
if (!pluginDef._hooks.healthCheck.length) continue;
|
|
69
|
+
const resolved = resolveAgentPluginConfig(pluginId, agentId, config);
|
|
70
|
+
if (!resolved) continue;
|
|
71
|
+
const secrets = resolvePluginSecrets(pluginId, config, process.env);
|
|
72
|
+
const context = {
|
|
73
|
+
agent: {
|
|
74
|
+
id: agentId,
|
|
75
|
+
runtime: "openclaw",
|
|
76
|
+
configuration: { openclaw: {} }
|
|
77
|
+
},
|
|
78
|
+
config,
|
|
79
|
+
agentConfig: resolved,
|
|
80
|
+
secrets,
|
|
81
|
+
namespace: config.deployments?.namespace ?? "default",
|
|
82
|
+
pluginRegistry: registry,
|
|
83
|
+
cwd: process.cwd()
|
|
84
|
+
};
|
|
85
|
+
try {
|
|
86
|
+
for (const fn of pluginDef._hooks.healthCheck) {
|
|
87
|
+
const result = await fn(context);
|
|
88
|
+
results.push({
|
|
89
|
+
pluginId,
|
|
90
|
+
name: pluginDef.manifest.name,
|
|
91
|
+
healthy: result.healthy,
|
|
92
|
+
message: result.message
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
} catch (err) {
|
|
96
|
+
results.push({
|
|
97
|
+
pluginId,
|
|
98
|
+
name: pluginDef.manifest.name,
|
|
99
|
+
healthy: false,
|
|
100
|
+
message: err instanceof Error ? err.message : String(err)
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return results;
|
|
105
|
+
}
|
|
106
|
+
export {
|
|
107
|
+
checkPluginHealth,
|
|
108
|
+
createPluginRegistry,
|
|
109
|
+
defineChannelPlugin,
|
|
110
|
+
defineConnectorPlugin,
|
|
111
|
+
definePlugin,
|
|
112
|
+
defineProviderPlugin,
|
|
113
|
+
defineSkillPlugin,
|
|
114
|
+
executePluginProvisions,
|
|
115
|
+
getPluginRegistry,
|
|
116
|
+
loadAllPlugins,
|
|
117
|
+
loadManifest,
|
|
118
|
+
registerPlugin,
|
|
119
|
+
resetPluginRegistry,
|
|
120
|
+
validateManifest
|
|
121
|
+
};
|