@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.
Files changed (334) hide show
  1. package/README.md +509 -0
  2. package/dist/agent-browser-CERTMCDL.js +117 -0
  3. package/dist/agent-browser-CIRZRIY4.js +118 -0
  4. package/dist/agent-pack-LF3O5TR4.js +1236 -0
  5. package/dist/agent-pack-RQT27V7R.js +1235 -0
  6. package/dist/airtable-BG2Q75G2.js +82 -0
  7. package/dist/airtable-JCQXFM5D.js +83 -0
  8. package/dist/alipay-MZX2XCDB.js +52 -0
  9. package/dist/alipay-TZQI34RB.js +51 -0
  10. package/dist/amap-5RQB3VGC.js +45 -0
  11. package/dist/amap-KPCLZYYL.js +44 -0
  12. package/dist/atlassian-LGOEWYC7.js +54 -0
  13. package/dist/atlassian-TVS2A4IU.js +55 -0
  14. package/dist/baidu-appbuilder-6UMESXHW.js +41 -0
  15. package/dist/baidu-appbuilder-QRRL3ETM.js +42 -0
  16. package/dist/baidu-maps-HEPMVP5D.js +44 -0
  17. package/dist/baidu-maps-HXC4FBVP.js +45 -0
  18. package/dist/baidu-netdisk-G5Q6B5NH.js +45 -0
  19. package/dist/baidu-netdisk-RS2K5W2M.js +44 -0
  20. package/dist/baidu-smartprogram-EWTK5WKK.js +41 -0
  21. package/dist/baidu-smartprogram-JHD3XWF6.js +40 -0
  22. package/dist/browserbase-IUIYVYI7.js +67 -0
  23. package/dist/browserbase-JFO2PCIA.js +68 -0
  24. package/dist/canva-3YOFL7JS.js +62 -0
  25. package/dist/canva-FMYN65SM.js +61 -0
  26. package/dist/chunk-6P2K6QZR.js +529 -0
  27. package/dist/chunk-7VMRQ7MG.js +90 -0
  28. package/dist/chunk-AD3JTIU3.js +17 -0
  29. package/dist/chunk-BF6CV2Y4.js +64 -0
  30. package/dist/chunk-CTNUKOQE.js +439 -0
  31. package/dist/chunk-EEFMJYKB.js +97 -0
  32. package/dist/chunk-EJKFQ35I.js +739 -0
  33. package/dist/chunk-HUICDC56.js +62 -0
  34. package/dist/chunk-JUPAE5IA.js +527 -0
  35. package/dist/chunk-JY2HTT7Q.js +437 -0
  36. package/dist/chunk-KEPTCLUO.js +121 -0
  37. package/dist/chunk-KKK5H7YX.js +3622 -0
  38. package/dist/chunk-POSVEKIY.js +210 -0
  39. package/dist/chunk-QET4LT4J.js +5769 -0
  40. package/dist/chunk-QV4XWO3P.js +30 -0
  41. package/dist/chunk-R52J3PH2.js +120 -0
  42. package/dist/chunk-R5U7XKVJ.js +16 -0
  43. package/dist/chunk-RECNVWMT.js +212 -0
  44. package/dist/chunk-RTPBU5HF.js +92 -0
  45. package/dist/chunk-SUZ2ATT6.js +5774 -0
  46. package/dist/chunk-SVMXSIMG.js +98 -0
  47. package/dist/chunk-TV3CBM7R.js +28 -0
  48. package/dist/chunk-V2LU736V.js +3495 -0
  49. package/dist/chunk-ZUYL3W53.js +741 -0
  50. package/dist/claude-plugin-577TAQVS.js +1463 -0
  51. package/dist/claude-plugin-L3MXJJ6J.js +1464 -0
  52. package/dist/cli.js +7021 -0
  53. package/dist/cloudflare-HBBABPK6.js +114 -0
  54. package/dist/cloudflare-RDFPKMM5.js +115 -0
  55. package/dist/cnb-FLP3QX46.js +44 -0
  56. package/dist/cnb-YAVVEYFB.js +45 -0
  57. package/dist/console/index.html +12 -0
  58. package/dist/console/logo.png +0 -0
  59. package/dist/console/static/css/5079.f9e0918d.css +1 -0
  60. package/dist/console/static/css/index.7f91f806.css +1 -0
  61. package/dist/console/static/font/codicon.5b7d6fac.ttf +0 -0
  62. package/dist/console/static/js/5079.72a51ca2.js +699 -0
  63. package/dist/console/static/js/5079.72a51ca2.js.LICENSE.txt +35 -0
  64. package/dist/console/static/js/7426.f8d483ea.js +1 -0
  65. package/dist/console/static/js/async/1008.4df521b7.js +1 -0
  66. package/dist/console/static/js/async/102.1d473ec7.js +1 -0
  67. package/dist/console/static/js/async/1134.3f9fd9e7.js +1 -0
  68. package/dist/console/static/js/async/1318.4b8e48e7.js +1 -0
  69. package/dist/console/static/js/async/1360.5606da88.js +7 -0
  70. package/dist/console/static/js/async/1546.045f484f.js +1 -0
  71. package/dist/console/static/js/async/1562.187de2a8.js +1 -0
  72. package/dist/console/static/js/async/168.456d4813.js +1 -0
  73. package/dist/console/static/js/async/1750.e6dc2664.js +1 -0
  74. package/dist/console/static/js/async/1994.3fc86066.js +1 -0
  75. package/dist/console/static/js/async/2348.613ae3d9.js +1 -0
  76. package/dist/console/static/js/async/2390.1b890b9d.js +1 -0
  77. package/dist/console/static/js/async/2414.9d040212.js +1 -0
  78. package/dist/console/static/js/async/2454.4c1784ab.js +1 -0
  79. package/dist/console/static/js/async/2498.f5f92030.js +1 -0
  80. package/dist/console/static/js/async/2924.b823cd1a.js +1 -0
  81. package/dist/console/static/js/async/3062.63fddea6.js +1 -0
  82. package/dist/console/static/js/async/3078.dd712008.js +1 -0
  83. package/dist/console/static/js/async/3198.1f307065.js +1 -0
  84. package/dist/console/static/js/async/3246.3d5a899f.js +1 -0
  85. package/dist/console/static/js/async/3286.871676eb.js +1 -0
  86. package/dist/console/static/js/async/342.10bf3b90.js +1 -0
  87. package/dist/console/static/js/async/3446.9681a4d7.js +1 -0
  88. package/dist/console/static/js/async/3698.ccfaabec.js +1 -0
  89. package/dist/console/static/js/async/3790.2a1106a6.js +1 -0
  90. package/dist/console/static/js/async/4231.b29784d4.js +1 -0
  91. package/dist/console/static/js/async/4551.515bd41d.js +1 -0
  92. package/dist/console/static/js/async/4596.40f6e71b.js +1 -0
  93. package/dist/console/static/js/async/4600.4aaebe6d.js +1 -0
  94. package/dist/console/static/js/async/4718.1aae022f.js +1 -0
  95. package/dist/console/static/js/async/4846.a347c020.js +1 -0
  96. package/dist/console/static/js/async/4860.83dadf89.js +1 -0
  97. package/dist/console/static/js/async/500.fcfa37cb.js +1 -0
  98. package/dist/console/static/js/async/5096.b360203d.js +1 -0
  99. package/dist/console/static/js/async/5222.043274fe.js +1 -0
  100. package/dist/console/static/js/async/5362.f498001c.js +1 -0
  101. package/dist/console/static/js/async/54.c94f0755.js +1 -0
  102. package/dist/console/static/js/async/5478.50dd9ef0.js +2 -0
  103. package/dist/console/static/js/async/5478.50dd9ef0.js.LICENSE.txt +3 -0
  104. package/dist/console/static/js/async/5507.a6a1f793.js +1 -0
  105. package/dist/console/static/js/async/5638.bc6b102d.js +1 -0
  106. package/dist/console/static/js/async/5722.e0029049.js +1 -0
  107. package/dist/console/static/js/async/5942.74635c6b.js +1 -0
  108. package/dist/console/static/js/async/5994.1c5629c1.js +1 -0
  109. package/dist/console/static/js/async/6054.6bddf720.js +1 -0
  110. package/dist/console/static/js/async/6118.45e754e5.js +1 -0
  111. package/dist/console/static/js/async/6127.adcbcbb6.js +1 -0
  112. package/dist/console/static/js/async/614.3f434c20.js +1 -0
  113. package/dist/console/static/js/async/6234.ba3b002d.js +1 -0
  114. package/dist/console/static/js/async/6310.6546a9ba.js +1 -0
  115. package/dist/console/static/js/async/6378.9f805419.js +1 -0
  116. package/dist/console/static/js/async/6380.e4433c49.js +1 -0
  117. package/dist/console/static/js/async/6418.f23bcfda.js +1 -0
  118. package/dist/console/static/js/async/6428.77c86114.js +1 -0
  119. package/dist/console/static/js/async/6443.83318a6c.js +1 -0
  120. package/dist/console/static/js/async/6508.2b445d62.js +3 -0
  121. package/dist/console/static/js/async/6542.e82a26c8.js +1 -0
  122. package/dist/console/static/js/async/6544.62111ecb.js +1 -0
  123. package/dist/console/static/js/async/6612.a0c9fcf4.js +1 -0
  124. package/dist/console/static/js/async/6740.695aebf0.js +1 -0
  125. package/dist/console/static/js/async/6822.dbbb32bc.js +1 -0
  126. package/dist/console/static/js/async/6824.ad3540ab.js +1 -0
  127. package/dist/console/static/js/async/6930.585dab94.js +1 -0
  128. package/dist/console/static/js/async/6982.c81b95e6.js +1 -0
  129. package/dist/console/static/js/async/7046.ab2378c1.js +1 -0
  130. package/dist/console/static/js/async/7110.a603277f.js +1 -0
  131. package/dist/console/static/js/async/7142.4a21366f.js +1 -0
  132. package/dist/console/static/js/async/7348.15cc6148.js +1373 -0
  133. package/dist/console/static/js/async/7348.15cc6148.js.LICENSE.txt +14 -0
  134. package/dist/console/static/js/async/7374.b1ac5c44.js +1 -0
  135. package/dist/console/static/js/async/742.847f17ca.js +1 -0
  136. package/dist/console/static/js/async/7446.743954d8.js +1 -0
  137. package/dist/console/static/js/async/7673.59bbbaac.js +1 -0
  138. package/dist/console/static/js/async/7684.c5760c8c.js +1 -0
  139. package/dist/console/static/js/async/7714.c30d0f94.js +1 -0
  140. package/dist/console/static/js/async/8118.36d5a3bf.js +298 -0
  141. package/dist/console/static/js/async/8145.4bcf043a.js +1 -0
  142. package/dist/console/static/js/async/8246.408de938.js +1 -0
  143. package/dist/console/static/js/async/8390.bdae1f7d.js +1 -0
  144. package/dist/console/static/js/async/8422.fd94dbe1.js +1 -0
  145. package/dist/console/static/js/async/8434.94a0e2ae.js +1 -0
  146. package/dist/console/static/js/async/8518.3158de13.js +1 -0
  147. package/dist/console/static/js/async/8564.fc2eb841.js +1 -0
  148. package/dist/console/static/js/async/8678.73af4c9b.js +1 -0
  149. package/dist/console/static/js/async/8694.79747168.js +1 -0
  150. package/dist/console/static/js/async/8756.1de37b83.js +1 -0
  151. package/dist/console/static/js/async/8804.7fe6bdf9.js +3 -0
  152. package/dist/console/static/js/async/8883.e717ee94.js +1 -0
  153. package/dist/console/static/js/async/8886.fe6e876c.js +1 -0
  154. package/dist/console/static/js/async/9030.fc1ae402.js +1 -0
  155. package/dist/console/static/js/async/9094.5598d084.js +1 -0
  156. package/dist/console/static/js/async/9218.ee7b84b7.js +1 -0
  157. package/dist/console/static/js/async/94.9b80bc35.js +1 -0
  158. package/dist/console/static/js/async/9526.92aba34c.js +1 -0
  159. package/dist/console/static/js/async/9762.f83bc4f3.js +1 -0
  160. package/dist/console/static/js/async/984.e11c113a.js +1 -0
  161. package/dist/console/static/js/async/9846.246653cd.js +1 -0
  162. package/dist/console/static/js/index.4487e1ff.js +1 -0
  163. package/dist/console/static/js/lib-react.15d7ca9a.js +2 -0
  164. package/dist/console/static/js/lib-react.15d7ca9a.js.LICENSE.txt +49 -0
  165. package/dist/coze-C6PMDPBI.js +49 -0
  166. package/dist/coze-E6VGRNLV.js +48 -0
  167. package/dist/dashboard.command-J7XOZNXU.js +8 -0
  168. package/dist/dashboard.command-RV2NHDKW.js +7 -0
  169. package/dist/dingtalk-JNRNRN7E.js +77 -0
  170. package/dist/dingtalk-WZGGIAHJ.js +76 -0
  171. package/dist/douyin-miniprogram-AIJPPIZH.js +41 -0
  172. package/dist/douyin-miniprogram-HCYZ5NBW.js +42 -0
  173. package/dist/figma-2YYNSCDX.js +103 -0
  174. package/dist/figma-RYOBMENP.js +102 -0
  175. package/dist/firebase-2IJDDBXX.js +112 -0
  176. package/dist/firebase-OYSY6HPT.js +111 -0
  177. package/dist/firecrawl-2T3SBUW7.js +66 -0
  178. package/dist/firecrawl-IYYXLAZM.js +65 -0
  179. package/dist/flyai-7FJ4TRAG.js +81 -0
  180. package/dist/flyai-QS5Q6FJR.js +82 -0
  181. package/dist/gitagent-MWI75OIX.js +725 -0
  182. package/dist/gitagent-YBMWY7NZ.js +726 -0
  183. package/dist/gitee-3N7OFOM7.js +53 -0
  184. package/dist/gitee-KVNK6KLZ.js +54 -0
  185. package/dist/github-LUEC2LID.js +143 -0
  186. package/dist/github-XRO5Z3GC.js +142 -0
  187. package/dist/google-ads-A3QAJI4D.js +88 -0
  188. package/dist/google-ads-VPKWTX67.js +89 -0
  189. package/dist/google-analytics-C4UR5ZR2.js +50 -0
  190. package/dist/google-analytics-XDYZA2B7.js +49 -0
  191. package/dist/google-workspace-LL3EWVHH.js +320 -0
  192. package/dist/google-workspace-YX35SHHX.js +321 -0
  193. package/dist/huawei-xiaoyi-6BSMGJHR.js +40 -0
  194. package/dist/huawei-xiaoyi-KPWLTSHB.js +41 -0
  195. package/dist/hubspot-DIUHGEDI.js +45 -0
  196. package/dist/hubspot-FTIEMNZO.js +44 -0
  197. package/dist/huggingface-MJCOXA7E.js +116 -0
  198. package/dist/huggingface-UUXK2RHK.js +117 -0
  199. package/dist/index.d.ts +3013 -0
  200. package/dist/index.js +15649 -0
  201. package/dist/inference-ai-image-generation-CMI6R5T3.js +106 -0
  202. package/dist/inference-ai-image-generation-PXV6IG4U.js +107 -0
  203. package/dist/inference-sh-7AZOLEFI.js +94 -0
  204. package/dist/inference-sh-ABQOD3YF.js +95 -0
  205. package/dist/init.command-6E24K4H3.js +9 -0
  206. package/dist/init.command-O4HG4HKR.js +10 -0
  207. package/dist/klaviyo-6K5YEFNH.js +45 -0
  208. package/dist/klaviyo-LDPBWBSS.js +44 -0
  209. package/dist/kuaidi100-HGFM5VK2.js +42 -0
  210. package/dist/kuaidi100-UHPFCVXP.js +41 -0
  211. package/dist/lark-6LNA3LUQ.js +103 -0
  212. package/dist/lark-URVBZNS4.js +102 -0
  213. package/dist/linear-7QFSFPOD.js +57 -0
  214. package/dist/linear-T4ORUP7N.js +56 -0
  215. package/dist/lovart-PDUXRUHJ.js +99 -0
  216. package/dist/lovart-QO3SK55T.js +100 -0
  217. package/dist/meta-ads-SCNFI45S.js +42 -0
  218. package/dist/meta-ads-V6XPZWX3.js +41 -0
  219. package/dist/miclaw-5CNTW7VV.js +36 -0
  220. package/dist/miclaw-TPPPS2WN.js +35 -0
  221. package/dist/model-provider-AVSFJSZP.js +393 -0
  222. package/dist/model-provider-KFB76XV5.js +392 -0
  223. package/dist/notion-FZK76MN2.js +69 -0
  224. package/dist/notion-WFA7KGZZ.js +70 -0
  225. package/dist/oceanengine-3JZUS3PP.js +43 -0
  226. package/dist/oceanengine-5BRIJVJE.js +42 -0
  227. package/dist/opencli-PFXHGCS2.js +81 -0
  228. package/dist/opencli-VIGRJTGH.js +80 -0
  229. package/dist/paypal-33UADIPR.js +54 -0
  230. package/dist/paypal-Z5JYHIWD.js +55 -0
  231. package/dist/playwright-MG5WHK47.js +58 -0
  232. package/dist/playwright-SQAQ3DZG.js +59 -0
  233. package/dist/plugins-HZBWK3WQ.js +120 -0
  234. package/dist/plugins-I4GD5SZX.js +121 -0
  235. package/dist/posthog-MU5MAJOQ.js +79 -0
  236. package/dist/posthog-RJRRKDWB.js +80 -0
  237. package/dist/salesforce-34FVIJTG.js +82 -0
  238. package/dist/salesforce-3QZ6OFVO.js +83 -0
  239. package/dist/sentry-MCIRMACU.js +111 -0
  240. package/dist/sentry-PIWW46VA.js +110 -0
  241. package/dist/seo-suite-4SQ3I67Q.js +54 -0
  242. package/dist/seo-suite-WJXMA3S4.js +55 -0
  243. package/dist/serve.command-5FMIPQRY.js +10 -0
  244. package/dist/serve.command-DNE6GPMK.js +9 -0
  245. package/dist/shadowob-JELOWHWX.js +1068 -0
  246. package/dist/shadowob-PRSMI5MW.js +1069 -0
  247. package/dist/sherlock-2PKY2E2Y.js +66 -0
  248. package/dist/sherlock-C5ZWPPVT.js +67 -0
  249. package/dist/shopify-GL3NFVGE.js +94 -0
  250. package/dist/shopify-R4G3UXM6.js +93 -0
  251. package/dist/skill-discovery-7INAUP4D.js +77 -0
  252. package/dist/skill-discovery-YPXXV622.js +78 -0
  253. package/dist/state-7MCZBTR5.js +17 -0
  254. package/dist/state-FGOFLFBE.js +18 -0
  255. package/dist/stripe-C22RR4ZS.js +83 -0
  256. package/dist/stripe-LJNPQ3CQ.js +82 -0
  257. package/dist/supabase-IRNQ54FJ.js +98 -0
  258. package/dist/supabase-N4ONFJNQ.js +97 -0
  259. package/dist/taobao-aipaas-LRR4GMO3.js +45 -0
  260. package/dist/taobao-aipaas-RVKORSF4.js +46 -0
  261. package/dist/tapd-3JPVJ7XH.js +46 -0
  262. package/dist/tapd-TMQRSMFG.js +47 -0
  263. package/dist/tencent-ads-IGD33LO7.js +42 -0
  264. package/dist/tencent-ads-UHC6OPBV.js +43 -0
  265. package/dist/tencent-docs-C3A4J3CJ.js +47 -0
  266. package/dist/tencent-docs-O2SC4FHL.js +48 -0
  267. package/dist/tencent-maps-HMMWMNF4.js +37 -0
  268. package/dist/tencent-maps-OQOKHVW2.js +36 -0
  269. package/dist/vercel-KOXDDTHX.js +73 -0
  270. package/dist/vercel-OLNVDWMG.js +74 -0
  271. package/dist/webflow-FULU5Q2I.js +114 -0
  272. package/dist/webflow-OMJKZM54.js +115 -0
  273. package/dist/wechat-miniprogram-skyline-KYCDMQNW.js +74 -0
  274. package/dist/wechat-miniprogram-skyline-VR4FVIQL.js +75 -0
  275. package/dist/wechat-pay-BCMAJ6UW.js +50 -0
  276. package/dist/wechat-pay-YQQKXVUI.js +51 -0
  277. package/dist/wonda-NGWIORYN.js +81 -0
  278. package/dist/wonda-RBABXFNM.js +82 -0
  279. package/dist/wordpress-woocommerce-RDIUTHYT.js +57 -0
  280. package/dist/wordpress-woocommerce-RNA5HB3N.js +58 -0
  281. package/dist/wps-DAEFQHDE.js +47 -0
  282. package/dist/wps-LUWHMZQQ.js +48 -0
  283. package/dist/yuque-HCHTJWNI.js +72 -0
  284. package/dist/yuque-KRH5O74J.js +71 -0
  285. package/images/RUNNERS.md +270 -0
  286. package/images/cc-connect-runner/entrypoint.mjs +311 -0
  287. package/images/claude-runner/Dockerfile +88 -0
  288. package/images/claude-runner/RUNNER.md +222 -0
  289. package/images/claude-runner/entrypoint.mjs +2 -0
  290. package/images/codex-runner/Dockerfile +87 -0
  291. package/images/codex-runner/RUNNER.md +226 -0
  292. package/images/codex-runner/entrypoint.mjs +2 -0
  293. package/images/gemini-runner/Dockerfile +87 -0
  294. package/images/gemini-runner/RUNNER.md +218 -0
  295. package/images/gemini-runner/entrypoint.mjs +2 -0
  296. package/images/hermes-runner/Dockerfile +74 -0
  297. package/images/hermes-runner/RUNNER.md +243 -0
  298. package/images/hermes-runner/entrypoint.mjs +283 -0
  299. package/images/openclaw-runner/Dockerfile +212 -0
  300. package/images/openclaw-runner/RUNNER.md +170 -0
  301. package/images/openclaw-runner/entrypoint.mjs +1113 -0
  302. package/images/openclaw-runner/warm-runtime-deps.mjs +95 -0
  303. package/images/opencode-runner/Dockerfile +87 -0
  304. package/images/opencode-runner/RUNNER.md +202 -0
  305. package/images/opencode-runner/entrypoint.mjs +2 -0
  306. package/package.json +121 -0
  307. package/templates/agent-marketplace-buddy.template.json +131 -0
  308. package/templates/ai-werewolf.template.json +92 -0
  309. package/templates/bmad-method-buddy.template.json +123 -0
  310. package/templates/brain-fix.template.json +92 -0
  311. package/templates/claude-ads-buddy.template.json +123 -0
  312. package/templates/claude-financial-services-buddy.template.json +111 -0
  313. package/templates/claude-seo-buddy.template.json +123 -0
  314. package/templates/code-arena.template.json +92 -0
  315. package/templates/daily-brief.template.json +92 -0
  316. package/templates/e-wife.template.json +92 -0
  317. package/templates/everything-claude-code-buddy.template.json +125 -0
  318. package/templates/financial-freedom.template.json +92 -0
  319. package/templates/gitstory.template.json +92 -0
  320. package/templates/google-workspace-buddy.template.json +88 -0
  321. package/templates/gsd-buddy.template.json +119 -0
  322. package/templates/gstack-buddy.template.json +143 -0
  323. package/templates/gstack.template.json +92 -0
  324. package/templates/little-match-girl.template.json +114 -0
  325. package/templates/lovart-buddy.template.json +110 -0
  326. package/templates/marketingskills-buddy.template.json +102 -0
  327. package/templates/retire-buddy.template.json +92 -0
  328. package/templates/scientific-skills-buddy.template.json +119 -0
  329. package/templates/seomachine-buddy.template.json +113 -0
  330. package/templates/shadow-server-app-demo.template.json +105 -0
  331. package/templates/slavingia-skills-buddy.template.json +102 -0
  332. package/templates/superclaude-buddy.template.json +146 -0
  333. package/templates/superpowers-buddy.template.json +108 -0
  334. package/templates/world-pulse.template.json +92 -0
@@ -0,0 +1,320 @@
1
+ import {
2
+ buildRuntimeAssetK8sProvider
3
+ } from "./chunk-POSVEKIY.js";
4
+ import {
5
+ definePlugin
6
+ } from "./chunk-JY2HTT7Q.js";
7
+ import "./chunk-R5U7XKVJ.js";
8
+
9
+ // src/plugins/google-workspace/manifest.json
10
+ var manifest_default = {
11
+ id: "google-workspace",
12
+ name: "Google Workspace",
13
+ description: "Connect agents to Gmail, Calendar, Drive, Docs, Sheets, Chat, Admin, and other Workspace APIs through the gws CLI and its agent skills",
14
+ version: "1.0.0",
15
+ category: "productivity",
16
+ icon: "google",
17
+ website: "https://github.com/googleworkspace/cli",
18
+ docs: "https://github.com/googleworkspace/cli#authentication",
19
+ auth: {
20
+ type: "oauth2",
21
+ fields: [
22
+ {
23
+ key: "GOOGLE_WORKSPACE_CLI_CREDENTIALS_JSON",
24
+ label: "Google Workspace credentials.json",
25
+ description: "Paste credentials.json from `gws auth export --unmasked`, or a service-account JSON.",
26
+ required: false,
27
+ sensitive: true,
28
+ placeholder: '{"installed":{"client_id":"..."}}'
29
+ }
30
+ ],
31
+ oauth: {
32
+ authorizationUrl: "https://accounts.google.com/o/oauth2/v2/auth",
33
+ tokenUrl: "https://oauth2.googleapis.com/token",
34
+ pkce: true,
35
+ scopes: [
36
+ "openid",
37
+ "email",
38
+ "https://www.googleapis.com/auth/drive",
39
+ "https://www.googleapis.com/auth/gmail.modify",
40
+ "https://www.googleapis.com/auth/calendar",
41
+ "https://www.googleapis.com/auth/documents",
42
+ "https://www.googleapis.com/auth/spreadsheets"
43
+ ]
44
+ }
45
+ },
46
+ config: {
47
+ type: "object",
48
+ properties: {
49
+ services: {
50
+ type: "array",
51
+ description: "Workspace services this Buddy should prefer, such as gmail, calendar, drive, docs, sheets, chat, or admin.",
52
+ items: { type: "string" },
53
+ default: ["gmail", "calendar", "drive", "docs", "sheets"]
54
+ },
55
+ readOnlyByDefault: {
56
+ type: "boolean",
57
+ description: "Require explicit user approval before create, update, send, or delete actions.",
58
+ default: true
59
+ }
60
+ }
61
+ },
62
+ capabilities: ["tool", "data-source", "action", "skill", "cli"],
63
+ tags: [
64
+ "google",
65
+ "workspace",
66
+ "gmail",
67
+ "calendar",
68
+ "drive",
69
+ "docs",
70
+ "sheets",
71
+ "chat",
72
+ "admin",
73
+ "cli"
74
+ ],
75
+ popularity: 94
76
+ };
77
+
78
+ // src/plugins/google-workspace/index.ts
79
+ var PLUGIN_ID = "google-workspace";
80
+ var GWS_PACKAGE = "@googleworkspace/cli";
81
+ var GWS_REPO = "https://github.com/googleworkspace/cli.git";
82
+ var RUNTIME_MOUNT = "/opt/shadow-plugin-deps/google-workspace";
83
+ var SKILLS_MOUNT = "/workspace/.agents/plugin-skills/google-workspace";
84
+ var CREDENTIALS_FILE = "/home/shadow/.config/gws/credentials.json";
85
+ var ADC_FILE = "/home/shadow/.config/gws/application-default-credentials.json";
86
+ var AUTH_ENV_KEYS = ["GOOGLE_WORKSPACE_CLI_CREDENTIALS_JSON"];
87
+ var SECRET_FIELD_KEYS = {
88
+ credentialsJson: "GOOGLE_WORKSPACE_CLI_CREDENTIALS_JSON"
89
+ };
90
+ var LEGACY_SECRET_FIELD_KEYS = {
91
+ credentialsJson: "GOOGLE_WORKSPACE_CREDENTIALS_JSON",
92
+ adcJson: "GOOGLE_WORKSPACE_ADC_JSON",
93
+ applicationCredentialsJson: "GOOGLE_APPLICATION_CREDENTIALS_JSON",
94
+ cliToken: "GOOGLE_WORKSPACE_CLI_TOKEN",
95
+ accessToken: "GOOGLE_WORKSPACE_ACCESS_TOKEN"
96
+ };
97
+ var RUNTIME_DEPENDENCIES = [
98
+ {
99
+ id: "gws-cli",
100
+ kind: "npm-global",
101
+ packages: [GWS_PACKAGE],
102
+ targetPath: "/runtime-deps",
103
+ binPath: "/runtime-deps/bin/gws",
104
+ description: "Google Workspace CLI binary"
105
+ }
106
+ ];
107
+ var SKILL_SOURCES = [
108
+ {
109
+ id: "google-workspace-cli-skills",
110
+ kind: "git",
111
+ url: GWS_REPO,
112
+ ref: "main",
113
+ from: "skills",
114
+ targetPath: SKILLS_MOUNT,
115
+ includePattern: "gws-*",
116
+ description: "Google Workspace CLI agent skills"
117
+ }
118
+ ];
119
+ function isEnabledForAgent(agent, configUse) {
120
+ const agentEnabled = agent.use?.some((entry) => entry.plugin === PLUGIN_ID);
121
+ const globalEnabled = Array.isArray(configUse) && configUse.some((entry) => entry && typeof entry === "object" && entry.plugin === PLUGIN_ID);
122
+ return Boolean(agentEnabled || globalEnabled);
123
+ }
124
+ function stringArray(value, fallback) {
125
+ if (!Array.isArray(value)) return fallback;
126
+ const items = value.filter(
127
+ (item) => typeof item === "string" && item.trim().length > 0
128
+ );
129
+ return items.length > 0 ? items : fallback;
130
+ }
131
+ function firstSecret(context, keys) {
132
+ for (const key of keys) {
133
+ const value = context.secrets[key];
134
+ if (value) return value;
135
+ }
136
+ return void 0;
137
+ }
138
+ function hasWorkspaceCredential(context) {
139
+ return Boolean(
140
+ firstSecret(context, [
141
+ SECRET_FIELD_KEYS.credentialsJson,
142
+ LEGACY_SECRET_FIELD_KEYS.credentialsJson,
143
+ LEGACY_SECRET_FIELD_KEYS.adcJson,
144
+ LEGACY_SECRET_FIELD_KEYS.applicationCredentialsJson
145
+ ])
146
+ );
147
+ }
148
+ var googleWorkspaceK8sProvider = buildRuntimeAssetK8sProvider({
149
+ pluginId: PLUGIN_ID,
150
+ isEnabled: (agent, config) => isEnabledForAgent(agent, config.use),
151
+ runtimeMountPath: RUNTIME_MOUNT,
152
+ skillsMountPath: SKILLS_MOUNT,
153
+ runtimeVolumeName: "google-workspace-runtime",
154
+ skillsVolumeName: "google-workspace-skills",
155
+ runtimeDependencies: RUNTIME_DEPENDENCIES,
156
+ skillSources: SKILL_SOURCES,
157
+ envVars: [{ name: "GOOGLE_WORKSPACE_CLI_CREDENTIALS_FILE", value: CREDENTIALS_FILE }],
158
+ sanityCommands: ["/runtime-deps/bin/gws --version", "test -f /plugin-skills/gws-shared/SKILL.md"]
159
+ });
160
+ var plugin = definePlugin(manifest_default, (api) => {
161
+ api.addSecretFields([
162
+ {
163
+ key: SECRET_FIELD_KEYS.credentialsJson,
164
+ label: "Google Workspace credentials.json",
165
+ description: "Paste credentials.json from `gws auth export --unmasked`, or a service-account JSON.",
166
+ sensitive: true,
167
+ placeholder: '{"installed":{"client_id":"..."}}',
168
+ aliases: [
169
+ LEGACY_SECRET_FIELD_KEYS.credentialsJson,
170
+ LEGACY_SECRET_FIELD_KEYS.adcJson,
171
+ LEGACY_SECRET_FIELD_KEYS.applicationCredentialsJson
172
+ ]
173
+ }
174
+ ]);
175
+ api.ignoreEnvRefs([LEGACY_SECRET_FIELD_KEYS.cliToken, LEGACY_SECRET_FIELD_KEYS.accessToken]);
176
+ api.addCLI([
177
+ {
178
+ name: "gws",
179
+ command: "gws",
180
+ description: "Google Workspace CLI for Gmail, Calendar, Drive, Docs, Sheets, Chat, Admin",
181
+ env: {
182
+ GOOGLE_WORKSPACE_CLI_CREDENTIALS_FILE: CREDENTIALS_FILE
183
+ }
184
+ }
185
+ ]);
186
+ api.addRuntimeDependencies(RUNTIME_DEPENDENCIES);
187
+ api.addSkillSources(SKILL_SOURCES);
188
+ api.addCredentialFiles([
189
+ {
190
+ envKey: "GOOGLE_WORKSPACE_CLI_CREDENTIALS_JSON",
191
+ path: CREDENTIALS_FILE,
192
+ mode: "0600"
193
+ },
194
+ {
195
+ envKey: "GOOGLE_APPLICATION_CREDENTIALS_JSON",
196
+ path: ADC_FILE,
197
+ mode: "0600"
198
+ }
199
+ ]);
200
+ api.addVerificationChecks([
201
+ {
202
+ id: "google-workspace-cli-installed",
203
+ label: "Google Workspace CLI installed",
204
+ kind: "command",
205
+ command: ["gws", "--version"],
206
+ timeoutMs: 1e4,
207
+ risk: "safe"
208
+ },
209
+ {
210
+ id: "google-workspace-auth",
211
+ label: "Google Workspace auth status",
212
+ kind: "command",
213
+ command: ["gws", "auth", "status"],
214
+ timeoutMs: 15e3,
215
+ risk: "safe",
216
+ requiredEnvAny: AUTH_ENV_KEYS
217
+ },
218
+ {
219
+ id: "google-workspace-drive-read",
220
+ label: "Google Drive read smoke test",
221
+ kind: "command",
222
+ command: ["gws", "drive", "files", "list", "--params", '{"pageSize": 1}'],
223
+ timeoutMs: 2e4,
224
+ risk: "read",
225
+ requiredEnvAny: AUTH_ENV_KEYS
226
+ },
227
+ {
228
+ id: "google-workspace-calendar-agenda",
229
+ label: "Google Calendar agenda smoke test",
230
+ kind: "command",
231
+ command: ["gws", "calendar", "+agenda"],
232
+ timeoutMs: 2e4,
233
+ risk: "read",
234
+ requiredEnvAny: AUTH_ENV_KEYS
235
+ }
236
+ ]);
237
+ api.onBuildConfig((context) => {
238
+ const services = stringArray(context.agentConfig.services, [
239
+ "gmail",
240
+ "calendar",
241
+ "drive",
242
+ "docs",
243
+ "sheets"
244
+ ]);
245
+ return {
246
+ skills: {
247
+ load: { extraDirs: [SKILLS_MOUNT] },
248
+ entries: {
249
+ [PLUGIN_ID]: {
250
+ enabled: true,
251
+ config: {
252
+ services,
253
+ skillSources: [SKILLS_MOUNT]
254
+ },
255
+ env: {
256
+ GOOGLE_WORKSPACE_CLI_CREDENTIALS_FILE: CREDENTIALS_FILE,
257
+ GOOGLE_WORKSPACE_SERVICES: services.join(",")
258
+ }
259
+ }
260
+ }
261
+ }
262
+ };
263
+ });
264
+ api.onBuildEnv((context) => {
265
+ const env = {
266
+ GOOGLE_WORKSPACE_CLI_CREDENTIALS_FILE: CREDENTIALS_FILE,
267
+ GOOGLE_WORKSPACE_CLI_KEYRING_BACKEND: "file"
268
+ };
269
+ const credentialsJson = firstSecret(context, [
270
+ SECRET_FIELD_KEYS.credentialsJson,
271
+ LEGACY_SECRET_FIELD_KEYS.credentialsJson,
272
+ LEGACY_SECRET_FIELD_KEYS.adcJson,
273
+ LEGACY_SECRET_FIELD_KEYS.applicationCredentialsJson
274
+ ]);
275
+ const adcJson = firstSecret(context, [
276
+ LEGACY_SECRET_FIELD_KEYS.adcJson,
277
+ LEGACY_SECRET_FIELD_KEYS.applicationCredentialsJson
278
+ ]);
279
+ if (credentialsJson) env.GOOGLE_WORKSPACE_CLI_CREDENTIALS_JSON = credentialsJson;
280
+ if (adcJson) env.GOOGLE_APPLICATION_CREDENTIALS_JSON = adcJson;
281
+ for (const key of ["GOOGLE_WORKSPACE_CLI_SANITIZE_TEMPLATE", "GOOGLE_WORKSPACE_PROJECT_ID"]) {
282
+ const value = context.secrets[key] ?? context.agentConfig[key];
283
+ if (typeof value === "string" && value) env[key] = value;
284
+ }
285
+ if (env.GOOGLE_APPLICATION_CREDENTIALS_JSON) {
286
+ env.GOOGLE_APPLICATION_CREDENTIALS = ADC_FILE;
287
+ }
288
+ return env;
289
+ });
290
+ api.onBuildPrompt((context) => {
291
+ const readOnlyByDefault = context.agentConfig.readOnlyByDefault !== false;
292
+ return [
293
+ "Google Workspace is available through the `gws` CLI and the mounted gws agent skills.",
294
+ "Prefer structured JSON output and cite the exact Gmail, Calendar, Drive, Docs, Sheets, or Chat command used.",
295
+ readOnlyByDefault ? "Read-only commands are safe by default. Ask for explicit approval before sending email, creating calendar events, editing docs or sheets, uploading files, deleting, or sharing." : "Write actions are enabled by configuration, but still summarize the exact action before executing it.",
296
+ "Use `--dry-run` when gws supports it for drafts, sends, uploads, shares, or destructive changes."
297
+ ].join("\n");
298
+ });
299
+ api.onValidate((context) => {
300
+ if (hasWorkspaceCredential(context)) return { valid: true, errors: [] };
301
+ return {
302
+ valid: true,
303
+ errors: [
304
+ {
305
+ path: `secrets.${SECRET_FIELD_KEYS.credentialsJson}`,
306
+ message: "Google Workspace works best with credentials.json from gws auth export or a service-account JSON.",
307
+ severity: "warning"
308
+ }
309
+ ]
310
+ };
311
+ });
312
+ api.onHealthCheck(async (context) => {
313
+ return hasWorkspaceCredential(context) ? { healthy: true, message: "Google Workspace credentials are configured" } : { healthy: false, message: "Missing Google Workspace credentials" };
314
+ });
315
+ });
316
+ plugin.k8s = googleWorkspaceK8sProvider;
317
+ var google_workspace_default = plugin;
318
+ export {
319
+ google_workspace_default as default
320
+ };
@@ -0,0 +1,321 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ buildRuntimeAssetK8sProvider
4
+ } from "./chunk-RECNVWMT.js";
5
+ import {
6
+ definePlugin
7
+ } from "./chunk-CTNUKOQE.js";
8
+ import "./chunk-AD3JTIU3.js";
9
+
10
+ // src/plugins/google-workspace/manifest.json
11
+ var manifest_default = {
12
+ id: "google-workspace",
13
+ name: "Google Workspace",
14
+ description: "Connect agents to Gmail, Calendar, Drive, Docs, Sheets, Chat, Admin, and other Workspace APIs through the gws CLI and its agent skills",
15
+ version: "1.0.0",
16
+ category: "productivity",
17
+ icon: "google",
18
+ website: "https://github.com/googleworkspace/cli",
19
+ docs: "https://github.com/googleworkspace/cli#authentication",
20
+ auth: {
21
+ type: "oauth2",
22
+ fields: [
23
+ {
24
+ key: "GOOGLE_WORKSPACE_CLI_CREDENTIALS_JSON",
25
+ label: "Google Workspace credentials.json",
26
+ description: "Paste credentials.json from `gws auth export --unmasked`, or a service-account JSON.",
27
+ required: false,
28
+ sensitive: true,
29
+ placeholder: '{"installed":{"client_id":"..."}}'
30
+ }
31
+ ],
32
+ oauth: {
33
+ authorizationUrl: "https://accounts.google.com/o/oauth2/v2/auth",
34
+ tokenUrl: "https://oauth2.googleapis.com/token",
35
+ pkce: true,
36
+ scopes: [
37
+ "openid",
38
+ "email",
39
+ "https://www.googleapis.com/auth/drive",
40
+ "https://www.googleapis.com/auth/gmail.modify",
41
+ "https://www.googleapis.com/auth/calendar",
42
+ "https://www.googleapis.com/auth/documents",
43
+ "https://www.googleapis.com/auth/spreadsheets"
44
+ ]
45
+ }
46
+ },
47
+ config: {
48
+ type: "object",
49
+ properties: {
50
+ services: {
51
+ type: "array",
52
+ description: "Workspace services this Buddy should prefer, such as gmail, calendar, drive, docs, sheets, chat, or admin.",
53
+ items: { type: "string" },
54
+ default: ["gmail", "calendar", "drive", "docs", "sheets"]
55
+ },
56
+ readOnlyByDefault: {
57
+ type: "boolean",
58
+ description: "Require explicit user approval before create, update, send, or delete actions.",
59
+ default: true
60
+ }
61
+ }
62
+ },
63
+ capabilities: ["tool", "data-source", "action", "skill", "cli"],
64
+ tags: [
65
+ "google",
66
+ "workspace",
67
+ "gmail",
68
+ "calendar",
69
+ "drive",
70
+ "docs",
71
+ "sheets",
72
+ "chat",
73
+ "admin",
74
+ "cli"
75
+ ],
76
+ popularity: 94
77
+ };
78
+
79
+ // src/plugins/google-workspace/index.ts
80
+ var PLUGIN_ID = "google-workspace";
81
+ var GWS_PACKAGE = "@googleworkspace/cli";
82
+ var GWS_REPO = "https://github.com/googleworkspace/cli.git";
83
+ var RUNTIME_MOUNT = "/opt/shadow-plugin-deps/google-workspace";
84
+ var SKILLS_MOUNT = "/workspace/.agents/plugin-skills/google-workspace";
85
+ var CREDENTIALS_FILE = "/home/shadow/.config/gws/credentials.json";
86
+ var ADC_FILE = "/home/shadow/.config/gws/application-default-credentials.json";
87
+ var AUTH_ENV_KEYS = ["GOOGLE_WORKSPACE_CLI_CREDENTIALS_JSON"];
88
+ var SECRET_FIELD_KEYS = {
89
+ credentialsJson: "GOOGLE_WORKSPACE_CLI_CREDENTIALS_JSON"
90
+ };
91
+ var LEGACY_SECRET_FIELD_KEYS = {
92
+ credentialsJson: "GOOGLE_WORKSPACE_CREDENTIALS_JSON",
93
+ adcJson: "GOOGLE_WORKSPACE_ADC_JSON",
94
+ applicationCredentialsJson: "GOOGLE_APPLICATION_CREDENTIALS_JSON",
95
+ cliToken: "GOOGLE_WORKSPACE_CLI_TOKEN",
96
+ accessToken: "GOOGLE_WORKSPACE_ACCESS_TOKEN"
97
+ };
98
+ var RUNTIME_DEPENDENCIES = [
99
+ {
100
+ id: "gws-cli",
101
+ kind: "npm-global",
102
+ packages: [GWS_PACKAGE],
103
+ targetPath: "/runtime-deps",
104
+ binPath: "/runtime-deps/bin/gws",
105
+ description: "Google Workspace CLI binary"
106
+ }
107
+ ];
108
+ var SKILL_SOURCES = [
109
+ {
110
+ id: "google-workspace-cli-skills",
111
+ kind: "git",
112
+ url: GWS_REPO,
113
+ ref: "main",
114
+ from: "skills",
115
+ targetPath: SKILLS_MOUNT,
116
+ includePattern: "gws-*",
117
+ description: "Google Workspace CLI agent skills"
118
+ }
119
+ ];
120
+ function isEnabledForAgent(agent, configUse) {
121
+ const agentEnabled = agent.use?.some((entry) => entry.plugin === PLUGIN_ID);
122
+ const globalEnabled = Array.isArray(configUse) && configUse.some((entry) => entry && typeof entry === "object" && entry.plugin === PLUGIN_ID);
123
+ return Boolean(agentEnabled || globalEnabled);
124
+ }
125
+ function stringArray(value, fallback) {
126
+ if (!Array.isArray(value)) return fallback;
127
+ const items = value.filter(
128
+ (item) => typeof item === "string" && item.trim().length > 0
129
+ );
130
+ return items.length > 0 ? items : fallback;
131
+ }
132
+ function firstSecret(context, keys) {
133
+ for (const key of keys) {
134
+ const value = context.secrets[key];
135
+ if (value) return value;
136
+ }
137
+ return void 0;
138
+ }
139
+ function hasWorkspaceCredential(context) {
140
+ return Boolean(
141
+ firstSecret(context, [
142
+ SECRET_FIELD_KEYS.credentialsJson,
143
+ LEGACY_SECRET_FIELD_KEYS.credentialsJson,
144
+ LEGACY_SECRET_FIELD_KEYS.adcJson,
145
+ LEGACY_SECRET_FIELD_KEYS.applicationCredentialsJson
146
+ ])
147
+ );
148
+ }
149
+ var googleWorkspaceK8sProvider = buildRuntimeAssetK8sProvider({
150
+ pluginId: PLUGIN_ID,
151
+ isEnabled: (agent, config) => isEnabledForAgent(agent, config.use),
152
+ runtimeMountPath: RUNTIME_MOUNT,
153
+ skillsMountPath: SKILLS_MOUNT,
154
+ runtimeVolumeName: "google-workspace-runtime",
155
+ skillsVolumeName: "google-workspace-skills",
156
+ runtimeDependencies: RUNTIME_DEPENDENCIES,
157
+ skillSources: SKILL_SOURCES,
158
+ envVars: [{ name: "GOOGLE_WORKSPACE_CLI_CREDENTIALS_FILE", value: CREDENTIALS_FILE }],
159
+ sanityCommands: ["/runtime-deps/bin/gws --version", "test -f /plugin-skills/gws-shared/SKILL.md"]
160
+ });
161
+ var plugin = definePlugin(manifest_default, (api) => {
162
+ api.addSecretFields([
163
+ {
164
+ key: SECRET_FIELD_KEYS.credentialsJson,
165
+ label: "Google Workspace credentials.json",
166
+ description: "Paste credentials.json from `gws auth export --unmasked`, or a service-account JSON.",
167
+ sensitive: true,
168
+ placeholder: '{"installed":{"client_id":"..."}}',
169
+ aliases: [
170
+ LEGACY_SECRET_FIELD_KEYS.credentialsJson,
171
+ LEGACY_SECRET_FIELD_KEYS.adcJson,
172
+ LEGACY_SECRET_FIELD_KEYS.applicationCredentialsJson
173
+ ]
174
+ }
175
+ ]);
176
+ api.ignoreEnvRefs([LEGACY_SECRET_FIELD_KEYS.cliToken, LEGACY_SECRET_FIELD_KEYS.accessToken]);
177
+ api.addCLI([
178
+ {
179
+ name: "gws",
180
+ command: "gws",
181
+ description: "Google Workspace CLI for Gmail, Calendar, Drive, Docs, Sheets, Chat, Admin",
182
+ env: {
183
+ GOOGLE_WORKSPACE_CLI_CREDENTIALS_FILE: CREDENTIALS_FILE
184
+ }
185
+ }
186
+ ]);
187
+ api.addRuntimeDependencies(RUNTIME_DEPENDENCIES);
188
+ api.addSkillSources(SKILL_SOURCES);
189
+ api.addCredentialFiles([
190
+ {
191
+ envKey: "GOOGLE_WORKSPACE_CLI_CREDENTIALS_JSON",
192
+ path: CREDENTIALS_FILE,
193
+ mode: "0600"
194
+ },
195
+ {
196
+ envKey: "GOOGLE_APPLICATION_CREDENTIALS_JSON",
197
+ path: ADC_FILE,
198
+ mode: "0600"
199
+ }
200
+ ]);
201
+ api.addVerificationChecks([
202
+ {
203
+ id: "google-workspace-cli-installed",
204
+ label: "Google Workspace CLI installed",
205
+ kind: "command",
206
+ command: ["gws", "--version"],
207
+ timeoutMs: 1e4,
208
+ risk: "safe"
209
+ },
210
+ {
211
+ id: "google-workspace-auth",
212
+ label: "Google Workspace auth status",
213
+ kind: "command",
214
+ command: ["gws", "auth", "status"],
215
+ timeoutMs: 15e3,
216
+ risk: "safe",
217
+ requiredEnvAny: AUTH_ENV_KEYS
218
+ },
219
+ {
220
+ id: "google-workspace-drive-read",
221
+ label: "Google Drive read smoke test",
222
+ kind: "command",
223
+ command: ["gws", "drive", "files", "list", "--params", '{"pageSize": 1}'],
224
+ timeoutMs: 2e4,
225
+ risk: "read",
226
+ requiredEnvAny: AUTH_ENV_KEYS
227
+ },
228
+ {
229
+ id: "google-workspace-calendar-agenda",
230
+ label: "Google Calendar agenda smoke test",
231
+ kind: "command",
232
+ command: ["gws", "calendar", "+agenda"],
233
+ timeoutMs: 2e4,
234
+ risk: "read",
235
+ requiredEnvAny: AUTH_ENV_KEYS
236
+ }
237
+ ]);
238
+ api.onBuildConfig((context) => {
239
+ const services = stringArray(context.agentConfig.services, [
240
+ "gmail",
241
+ "calendar",
242
+ "drive",
243
+ "docs",
244
+ "sheets"
245
+ ]);
246
+ return {
247
+ skills: {
248
+ load: { extraDirs: [SKILLS_MOUNT] },
249
+ entries: {
250
+ [PLUGIN_ID]: {
251
+ enabled: true,
252
+ config: {
253
+ services,
254
+ skillSources: [SKILLS_MOUNT]
255
+ },
256
+ env: {
257
+ GOOGLE_WORKSPACE_CLI_CREDENTIALS_FILE: CREDENTIALS_FILE,
258
+ GOOGLE_WORKSPACE_SERVICES: services.join(",")
259
+ }
260
+ }
261
+ }
262
+ }
263
+ };
264
+ });
265
+ api.onBuildEnv((context) => {
266
+ const env = {
267
+ GOOGLE_WORKSPACE_CLI_CREDENTIALS_FILE: CREDENTIALS_FILE,
268
+ GOOGLE_WORKSPACE_CLI_KEYRING_BACKEND: "file"
269
+ };
270
+ const credentialsJson = firstSecret(context, [
271
+ SECRET_FIELD_KEYS.credentialsJson,
272
+ LEGACY_SECRET_FIELD_KEYS.credentialsJson,
273
+ LEGACY_SECRET_FIELD_KEYS.adcJson,
274
+ LEGACY_SECRET_FIELD_KEYS.applicationCredentialsJson
275
+ ]);
276
+ const adcJson = firstSecret(context, [
277
+ LEGACY_SECRET_FIELD_KEYS.adcJson,
278
+ LEGACY_SECRET_FIELD_KEYS.applicationCredentialsJson
279
+ ]);
280
+ if (credentialsJson) env.GOOGLE_WORKSPACE_CLI_CREDENTIALS_JSON = credentialsJson;
281
+ if (adcJson) env.GOOGLE_APPLICATION_CREDENTIALS_JSON = adcJson;
282
+ for (const key of ["GOOGLE_WORKSPACE_CLI_SANITIZE_TEMPLATE", "GOOGLE_WORKSPACE_PROJECT_ID"]) {
283
+ const value = context.secrets[key] ?? context.agentConfig[key];
284
+ if (typeof value === "string" && value) env[key] = value;
285
+ }
286
+ if (env.GOOGLE_APPLICATION_CREDENTIALS_JSON) {
287
+ env.GOOGLE_APPLICATION_CREDENTIALS = ADC_FILE;
288
+ }
289
+ return env;
290
+ });
291
+ api.onBuildPrompt((context) => {
292
+ const readOnlyByDefault = context.agentConfig.readOnlyByDefault !== false;
293
+ return [
294
+ "Google Workspace is available through the `gws` CLI and the mounted gws agent skills.",
295
+ "Prefer structured JSON output and cite the exact Gmail, Calendar, Drive, Docs, Sheets, or Chat command used.",
296
+ readOnlyByDefault ? "Read-only commands are safe by default. Ask for explicit approval before sending email, creating calendar events, editing docs or sheets, uploading files, deleting, or sharing." : "Write actions are enabled by configuration, but still summarize the exact action before executing it.",
297
+ "Use `--dry-run` when gws supports it for drafts, sends, uploads, shares, or destructive changes."
298
+ ].join("\n");
299
+ });
300
+ api.onValidate((context) => {
301
+ if (hasWorkspaceCredential(context)) return { valid: true, errors: [] };
302
+ return {
303
+ valid: true,
304
+ errors: [
305
+ {
306
+ path: `secrets.${SECRET_FIELD_KEYS.credentialsJson}`,
307
+ message: "Google Workspace works best with credentials.json from gws auth export or a service-account JSON.",
308
+ severity: "warning"
309
+ }
310
+ ]
311
+ };
312
+ });
313
+ api.onHealthCheck(async (context) => {
314
+ return hasWorkspaceCredential(context) ? { healthy: true, message: "Google Workspace credentials are configured" } : { healthy: false, message: "Missing Google Workspace credentials" };
315
+ });
316
+ });
317
+ plugin.k8s = googleWorkspaceK8sProvider;
318
+ var google_workspace_default = plugin;
319
+ export {
320
+ google_workspace_default as default
321
+ };
@@ -0,0 +1,40 @@
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/huawei-xiaoyi/index.ts
12
+ var manifest = connectorManifest({
13
+ id: "huawei-xiaoyi",
14
+ name: "Huawei Xiaoyi",
15
+ description: "Huawei Xiaoyi agent workflows for HarmonyOS MCP plugins, service lookup, tool integration, mobile-agent actions, and scenario publishing.",
16
+ category: "automation",
17
+ icon: "sparkles",
18
+ website: "https://developer.huawei.com/consumer/cn",
19
+ docs: "https://developer.huawei.com/consumer/cn/doc/service/mcp-plugin-0000002437785774",
20
+ fields: [
21
+ connectorField("HUAWEI_XIAOYI_CLIENT_ID", "Client ID", {
22
+ description: "Huawei Xiaoyi platform client ID.",
23
+ sensitive: false,
24
+ placeholder: "Client ID"
25
+ }),
26
+ connectorField("HUAWEI_XIAOYI_CLIENT_SECRET", "Client secret", {
27
+ description: "Huawei Xiaoyi platform client secret.",
28
+ placeholder: "Client secret"
29
+ })
30
+ ],
31
+ capabilities: ["tool", "data-source", "action", "mcp"],
32
+ tags: ["huawei", "xiaoyi", "harmonyos", "mcp", "mobile-agent", "plugins"],
33
+ popularity: 81
34
+ });
35
+ var huawei_xiaoyi_default = defineConnectorPlugin(manifest, {
36
+ prompt: "Use Huawei Xiaoyi for HarmonyOS MCP plugin workflows, service lookup, tool integration, mobile-agent tasks, and scenario publishing. Confirm publishing or configuration changes before applying them."
37
+ });
38
+ export {
39
+ huawei_xiaoyi_default as default
40
+ };