@agenticmail/enterprise 0.3.2 → 0.4.0

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 (1106) hide show
  1. package/.github/CODEOWNERS +23 -0
  2. package/.github/workflows/publish-community-skills.yml +121 -0
  3. package/.github/workflows/validate-community-skills.yml +172 -0
  4. package/ARCHITECTURE.md +184 -167
  5. package/CLAUDE.md +40 -0
  6. package/CONTRIBUTING.md +254 -0
  7. package/DEPLOYMENT.md +1031 -0
  8. package/README.md +355 -174
  9. package/community-skills/_template/README.md +31 -0
  10. package/community-skills/_template/agenticmail-skill.json +48 -0
  11. package/community-skills/activecampaign/README.md +21 -0
  12. package/community-skills/activecampaign/agenticmail-skill.json +56 -0
  13. package/community-skills/adobe-sign/README.md +21 -0
  14. package/community-skills/adobe-sign/agenticmail-skill.json +72 -0
  15. package/community-skills/adp/README.md +21 -0
  16. package/community-skills/adp/agenticmail-skill.json +65 -0
  17. package/community-skills/airtable-bases/README.md +29 -0
  18. package/community-skills/airtable-bases/agenticmail-skill.json +69 -0
  19. package/community-skills/apollo-io/README.md +21 -0
  20. package/community-skills/apollo-io/agenticmail-skill.json +50 -0
  21. package/community-skills/asana-tasks/README.md +30 -0
  22. package/community-skills/asana-tasks/agenticmail-skill.json +70 -0
  23. package/community-skills/auth0/README.md +21 -0
  24. package/community-skills/auth0/agenticmail-skill.json +56 -0
  25. package/community-skills/aws-services/README.md +38 -0
  26. package/community-skills/aws-services/agenticmail-skill.json +70 -0
  27. package/community-skills/azure-devops/README.md +21 -0
  28. package/community-skills/azure-devops/agenticmail-skill.json +57 -0
  29. package/community-skills/bamboohr/README.md +21 -0
  30. package/community-skills/bamboohr/agenticmail-skill.json +56 -0
  31. package/community-skills/basecamp/README.md +21 -0
  32. package/community-skills/basecamp/agenticmail-skill.json +56 -0
  33. package/community-skills/bigcommerce/README.md +21 -0
  34. package/community-skills/bigcommerce/agenticmail-skill.json +55 -0
  35. package/community-skills/bitbucket-repos/README.md +29 -0
  36. package/community-skills/bitbucket-repos/agenticmail-skill.json +70 -0
  37. package/community-skills/box/README.md +21 -0
  38. package/community-skills/box/agenticmail-skill.json +48 -0
  39. package/community-skills/brex/README.md +21 -0
  40. package/community-skills/brex/agenticmail-skill.json +48 -0
  41. package/community-skills/buffer/README.md +21 -0
  42. package/community-skills/buffer/agenticmail-skill.json +50 -0
  43. package/community-skills/calendly/README.md +20 -0
  44. package/community-skills/calendly/agenticmail-skill.json +43 -0
  45. package/community-skills/canva-design/README.md +33 -0
  46. package/community-skills/canva-design/agenticmail-skill.json +60 -0
  47. package/community-skills/chargebee/README.md +21 -0
  48. package/community-skills/chargebee/agenticmail-skill.json +55 -0
  49. package/community-skills/circleci-pipelines/README.md +28 -0
  50. package/community-skills/circleci-pipelines/agenticmail-skill.json +66 -0
  51. package/community-skills/clickup/README.md +21 -0
  52. package/community-skills/clickup/agenticmail-skill.json +48 -0
  53. package/community-skills/close-crm/README.md +21 -0
  54. package/community-skills/close-crm/agenticmail-skill.json +49 -0
  55. package/community-skills/cloudflare-cdn/README.md +37 -0
  56. package/community-skills/cloudflare-cdn/agenticmail-skill.json +67 -0
  57. package/community-skills/confluence-wiki/README.md +31 -0
  58. package/community-skills/confluence-wiki/agenticmail-skill.json +74 -0
  59. package/community-skills/contentful/README.md +21 -0
  60. package/community-skills/contentful/agenticmail-skill.json +62 -0
  61. package/community-skills/copper-crm/README.md +21 -0
  62. package/community-skills/copper-crm/agenticmail-skill.json +56 -0
  63. package/community-skills/crisp/README.md +21 -0
  64. package/community-skills/crisp/agenticmail-skill.json +56 -0
  65. package/community-skills/crowdstrike/README.md +21 -0
  66. package/community-skills/crowdstrike/agenticmail-skill.json +69 -0
  67. package/community-skills/datadog-monitoring/README.md +37 -0
  68. package/community-skills/datadog-monitoring/agenticmail-skill.json +73 -0
  69. package/community-skills/digitalocean/README.md +21 -0
  70. package/community-skills/digitalocean/agenticmail-skill.json +48 -0
  71. package/community-skills/discord/README.md +45 -0
  72. package/community-skills/discord/agenticmail-skill.json +65 -0
  73. package/community-skills/docker-containers/README.md +38 -0
  74. package/community-skills/docker-containers/agenticmail-skill.json +70 -0
  75. package/community-skills/docusign-esign/README.md +35 -0
  76. package/community-skills/docusign-esign/agenticmail-skill.json +66 -0
  77. package/community-skills/drift/README.md +21 -0
  78. package/community-skills/drift/agenticmail-skill.json +50 -0
  79. package/community-skills/dropbox-storage/README.md +36 -0
  80. package/community-skills/dropbox-storage/agenticmail-skill.json +67 -0
  81. package/community-skills/figma-design/README.md +36 -0
  82. package/community-skills/figma-design/agenticmail-skill.json +66 -0
  83. package/community-skills/firebase/README.md +21 -0
  84. package/community-skills/firebase/agenticmail-skill.json +56 -0
  85. package/community-skills/flyio/README.md +21 -0
  86. package/community-skills/flyio/agenticmail-skill.json +56 -0
  87. package/community-skills/freshbooks/README.md +21 -0
  88. package/community-skills/freshbooks/agenticmail-skill.json +55 -0
  89. package/community-skills/freshdesk/README.md +21 -0
  90. package/community-skills/freshdesk/agenticmail-skill.json +57 -0
  91. package/community-skills/freshsales/README.md +21 -0
  92. package/community-skills/freshsales/agenticmail-skill.json +55 -0
  93. package/community-skills/freshservice/README.md +21 -0
  94. package/community-skills/freshservice/agenticmail-skill.json +56 -0
  95. package/community-skills/front/README.md +21 -0
  96. package/community-skills/front/agenticmail-skill.json +48 -0
  97. package/community-skills/github/README.md +49 -0
  98. package/community-skills/github/agenticmail-skill.json +73 -0
  99. package/community-skills/github-actions/README.md +29 -0
  100. package/community-skills/github-actions/agenticmail-skill.json +72 -0
  101. package/community-skills/gitlab-ci/README.md +51 -0
  102. package/community-skills/gitlab-ci/agenticmail-skill.json +66 -0
  103. package/community-skills/gong/README.md +21 -0
  104. package/community-skills/gong/agenticmail-skill.json +50 -0
  105. package/community-skills/google-ads/README.md +36 -0
  106. package/community-skills/google-ads/agenticmail-skill.json +58 -0
  107. package/community-skills/google-analytics/README.md +28 -0
  108. package/community-skills/google-analytics/agenticmail-skill.json +69 -0
  109. package/community-skills/google-cloud/README.md +33 -0
  110. package/community-skills/google-cloud/agenticmail-skill.json +59 -0
  111. package/community-skills/google-drive/README.md +36 -0
  112. package/community-skills/google-drive/agenticmail-skill.json +65 -0
  113. package/community-skills/gotomeeting/README.md +20 -0
  114. package/community-skills/gotomeeting/agenticmail-skill.json +45 -0
  115. package/community-skills/grafana/README.md +21 -0
  116. package/community-skills/grafana/agenticmail-skill.json +56 -0
  117. package/community-skills/greenhouse/README.md +21 -0
  118. package/community-skills/greenhouse/agenticmail-skill.json +49 -0
  119. package/community-skills/gusto/README.md +21 -0
  120. package/community-skills/gusto/agenticmail-skill.json +49 -0
  121. package/community-skills/hashicorp-vault/README.md +21 -0
  122. package/community-skills/hashicorp-vault/agenticmail-skill.json +58 -0
  123. package/community-skills/heroku/README.md +21 -0
  124. package/community-skills/heroku/agenticmail-skill.json +48 -0
  125. package/community-skills/hibob/README.md +21 -0
  126. package/community-skills/hibob/agenticmail-skill.json +48 -0
  127. package/community-skills/hootsuite/README.md +21 -0
  128. package/community-skills/hootsuite/agenticmail-skill.json +48 -0
  129. package/community-skills/hubspot-crm/README.md +36 -0
  130. package/community-skills/hubspot-crm/agenticmail-skill.json +70 -0
  131. package/community-skills/huggingface/README.md +21 -0
  132. package/community-skills/huggingface/agenticmail-skill.json +48 -0
  133. package/community-skills/index.json +1320 -0
  134. package/community-skills/intercom-support/README.md +36 -0
  135. package/community-skills/intercom-support/agenticmail-skill.json +64 -0
  136. package/community-skills/jira/README.md +53 -0
  137. package/community-skills/jira/agenticmail-skill.json +72 -0
  138. package/community-skills/klaviyo/README.md +21 -0
  139. package/community-skills/klaviyo/agenticmail-skill.json +48 -0
  140. package/community-skills/kubernetes-cluster/README.md +36 -0
  141. package/community-skills/kubernetes-cluster/agenticmail-skill.json +72 -0
  142. package/community-skills/lattice/README.md +21 -0
  143. package/community-skills/lattice/agenticmail-skill.json +49 -0
  144. package/community-skills/launchdarkly/README.md +21 -0
  145. package/community-skills/launchdarkly/agenticmail-skill.json +48 -0
  146. package/community-skills/lever/README.md +21 -0
  147. package/community-skills/lever/agenticmail-skill.json +49 -0
  148. package/community-skills/linear/README.md +29 -0
  149. package/community-skills/linear/agenticmail-skill.json +81 -0
  150. package/community-skills/linkedin/README.md +21 -0
  151. package/community-skills/linkedin/agenticmail-skill.json +48 -0
  152. package/community-skills/livechat/README.md +20 -0
  153. package/community-skills/livechat/agenticmail-skill.json +43 -0
  154. package/community-skills/loom-video/README.md +20 -0
  155. package/community-skills/loom-video/agenticmail-skill.json +44 -0
  156. package/community-skills/mailchimp-campaigns/README.md +37 -0
  157. package/community-skills/mailchimp-campaigns/agenticmail-skill.json +69 -0
  158. package/community-skills/mailgun/README.md +21 -0
  159. package/community-skills/mailgun/agenticmail-skill.json +71 -0
  160. package/community-skills/microsoft-teams/README.md +51 -0
  161. package/community-skills/microsoft-teams/agenticmail-skill.json +66 -0
  162. package/community-skills/miro-boards/README.md +20 -0
  163. package/community-skills/miro-boards/agenticmail-skill.json +44 -0
  164. package/community-skills/mixpanel-analytics/README.md +34 -0
  165. package/community-skills/mixpanel-analytics/agenticmail-skill.json +64 -0
  166. package/community-skills/monday-boards/README.md +28 -0
  167. package/community-skills/monday-boards/agenticmail-skill.json +68 -0
  168. package/community-skills/mongodb-atlas/README.md +21 -0
  169. package/community-skills/mongodb-atlas/agenticmail-skill.json +58 -0
  170. package/community-skills/neon/README.md +21 -0
  171. package/community-skills/neon/agenticmail-skill.json +50 -0
  172. package/community-skills/netlify/README.md +21 -0
  173. package/community-skills/netlify/agenticmail-skill.json +48 -0
  174. package/community-skills/netsuite/README.md +21 -0
  175. package/community-skills/netsuite/agenticmail-skill.json +57 -0
  176. package/community-skills/newrelic/README.md +21 -0
  177. package/community-skills/newrelic/agenticmail-skill.json +58 -0
  178. package/community-skills/notion/README.md +49 -0
  179. package/community-skills/notion/agenticmail-skill.json +72 -0
  180. package/community-skills/okta/README.md +21 -0
  181. package/community-skills/okta/agenticmail-skill.json +57 -0
  182. package/community-skills/openai/README.md +21 -0
  183. package/community-skills/openai/agenticmail-skill.json +48 -0
  184. package/community-skills/opsgenie/README.md +21 -0
  185. package/community-skills/opsgenie/agenticmail-skill.json +48 -0
  186. package/community-skills/outreach/README.md +21 -0
  187. package/community-skills/outreach/agenticmail-skill.json +50 -0
  188. package/community-skills/paddle/README.md +21 -0
  189. package/community-skills/paddle/agenticmail-skill.json +55 -0
  190. package/community-skills/pagerduty/README.md +21 -0
  191. package/community-skills/pagerduty/agenticmail-skill.json +48 -0
  192. package/community-skills/pandadoc/README.md +21 -0
  193. package/community-skills/pandadoc/agenticmail-skill.json +48 -0
  194. package/community-skills/paypal/README.md +21 -0
  195. package/community-skills/paypal/agenticmail-skill.json +55 -0
  196. package/community-skills/personio/README.md +21 -0
  197. package/community-skills/personio/agenticmail-skill.json +48 -0
  198. package/community-skills/pinecone/README.md +21 -0
  199. package/community-skills/pinecone/agenticmail-skill.json +48 -0
  200. package/community-skills/pipedrive-deals/README.md +33 -0
  201. package/community-skills/pipedrive-deals/agenticmail-skill.json +60 -0
  202. package/community-skills/plaid/README.md +21 -0
  203. package/community-skills/plaid/agenticmail-skill.json +65 -0
  204. package/community-skills/postmark/README.md +21 -0
  205. package/community-skills/postmark/agenticmail-skill.json +48 -0
  206. package/community-skills/power-automate/README.md +21 -0
  207. package/community-skills/power-automate/agenticmail-skill.json +59 -0
  208. package/community-skills/quickbooks-accounting/README.md +38 -0
  209. package/community-skills/quickbooks-accounting/agenticmail-skill.json +70 -0
  210. package/community-skills/recurly/README.md +21 -0
  211. package/community-skills/recurly/agenticmail-skill.json +48 -0
  212. package/community-skills/reddit/README.md +21 -0
  213. package/community-skills/reddit/agenticmail-skill.json +48 -0
  214. package/community-skills/render/README.md +21 -0
  215. package/community-skills/render/agenticmail-skill.json +48 -0
  216. package/community-skills/ringcentral/README.md +20 -0
  217. package/community-skills/ringcentral/agenticmail-skill.json +43 -0
  218. package/community-skills/rippling/README.md +21 -0
  219. package/community-skills/rippling/agenticmail-skill.json +48 -0
  220. package/community-skills/salesforce/README.md +53 -0
  221. package/community-skills/salesforce/agenticmail-skill.json +73 -0
  222. package/community-skills/salesloft/README.md +21 -0
  223. package/community-skills/salesloft/agenticmail-skill.json +48 -0
  224. package/community-skills/sanity/README.md +21 -0
  225. package/community-skills/sanity/agenticmail-skill.json +62 -0
  226. package/community-skills/sap/README.md +21 -0
  227. package/community-skills/sap/agenticmail-skill.json +63 -0
  228. package/community-skills/segment-cdp/README.md +37 -0
  229. package/community-skills/segment-cdp/agenticmail-skill.json +66 -0
  230. package/community-skills/sendgrid-email/README.md +51 -0
  231. package/community-skills/sendgrid-email/agenticmail-skill.json +71 -0
  232. package/community-skills/sentry/README.md +21 -0
  233. package/community-skills/sentry/agenticmail-skill.json +58 -0
  234. package/community-skills/servicenow/README.md +21 -0
  235. package/community-skills/servicenow/agenticmail-skill.json +56 -0
  236. package/community-skills/shopify/README.md +21 -0
  237. package/community-skills/shopify/agenticmail-skill.json +56 -0
  238. package/community-skills/shortcut/README.md +21 -0
  239. package/community-skills/shortcut/agenticmail-skill.json +48 -0
  240. package/community-skills/slack/README.md +45 -0
  241. package/community-skills/slack/agenticmail-skill.json +73 -0
  242. package/community-skills/smartsheet/README.md +21 -0
  243. package/community-skills/smartsheet/agenticmail-skill.json +48 -0
  244. package/community-skills/snowflake-warehouse/README.md +37 -0
  245. package/community-skills/snowflake-warehouse/agenticmail-skill.json +71 -0
  246. package/community-skills/snyk/README.md +21 -0
  247. package/community-skills/snyk/agenticmail-skill.json +48 -0
  248. package/community-skills/splunk/README.md +21 -0
  249. package/community-skills/splunk/agenticmail-skill.json +56 -0
  250. package/community-skills/square/README.md +21 -0
  251. package/community-skills/square/agenticmail-skill.json +55 -0
  252. package/community-skills/statuspage/README.md +21 -0
  253. package/community-skills/statuspage/agenticmail-skill.json +56 -0
  254. package/community-skills/stripe/README.md +45 -0
  255. package/community-skills/stripe/agenticmail-skill.json +66 -0
  256. package/community-skills/supabase/README.md +21 -0
  257. package/community-skills/supabase/agenticmail-skill.json +56 -0
  258. package/community-skills/teamwork/README.md +21 -0
  259. package/community-skills/teamwork/agenticmail-skill.json +56 -0
  260. package/community-skills/telegram-bot/README.md +20 -0
  261. package/community-skills/telegram-bot/agenticmail-skill.json +52 -0
  262. package/community-skills/terraform-iac/README.md +34 -0
  263. package/community-skills/terraform-iac/agenticmail-skill.json +66 -0
  264. package/community-skills/todoist-tasks/README.md +29 -0
  265. package/community-skills/todoist-tasks/agenticmail-skill.json +72 -0
  266. package/community-skills/trello-cards/README.md +30 -0
  267. package/community-skills/trello-cards/agenticmail-skill.json +72 -0
  268. package/community-skills/twilio-sms/README.md +47 -0
  269. package/community-skills/twilio-sms/agenticmail-skill.json +63 -0
  270. package/community-skills/twitter/README.md +21 -0
  271. package/community-skills/twitter/agenticmail-skill.json +48 -0
  272. package/community-skills/vercel-deployments/README.md +29 -0
  273. package/community-skills/vercel-deployments/agenticmail-skill.json +70 -0
  274. package/community-skills/weaviate/README.md +21 -0
  275. package/community-skills/weaviate/agenticmail-skill.json +56 -0
  276. package/community-skills/webex/README.md +20 -0
  277. package/community-skills/webex/agenticmail-skill.json +43 -0
  278. package/community-skills/webflow/README.md +21 -0
  279. package/community-skills/webflow/agenticmail-skill.json +48 -0
  280. package/community-skills/whatsapp-business/README.md +20 -0
  281. package/community-skills/whatsapp-business/agenticmail-skill.json +52 -0
  282. package/community-skills/whereby/README.md +20 -0
  283. package/community-skills/whereby/agenticmail-skill.json +43 -0
  284. package/community-skills/woocommerce/README.md +21 -0
  285. package/community-skills/woocommerce/agenticmail-skill.json +55 -0
  286. package/community-skills/wordpress/README.md +21 -0
  287. package/community-skills/wordpress/agenticmail-skill.json +56 -0
  288. package/community-skills/workday/README.md +21 -0
  289. package/community-skills/workday/agenticmail-skill.json +56 -0
  290. package/community-skills/wrike/README.md +21 -0
  291. package/community-skills/wrike/agenticmail-skill.json +48 -0
  292. package/community-skills/xero/README.md +21 -0
  293. package/community-skills/xero/agenticmail-skill.json +56 -0
  294. package/community-skills/youtube/README.md +21 -0
  295. package/community-skills/youtube/agenticmail-skill.json +52 -0
  296. package/community-skills/zendesk-tickets/README.md +37 -0
  297. package/community-skills/zendesk-tickets/agenticmail-skill.json +65 -0
  298. package/community-skills/zoho-crm/README.md +21 -0
  299. package/community-skills/zoho-crm/agenticmail-skill.json +74 -0
  300. package/community-skills/zoom-meetings/README.md +51 -0
  301. package/community-skills/zoom-meetings/agenticmail-skill.json +66 -0
  302. package/community-skills/zuora/README.md +21 -0
  303. package/community-skills/zuora/agenticmail-skill.json +55 -0
  304. package/dashboards/README.md +81 -70
  305. package/dashboards/django/app.py +117 -0
  306. package/dashboards/django/static/styles.css +284 -0
  307. package/dashboards/django/templates/agent_detail.html +501 -0
  308. package/dashboards/django/templates/agents.html +217 -0
  309. package/dashboards/django/templates/api_keys.html +41 -0
  310. package/dashboards/django/templates/audit.html +26 -0
  311. package/dashboards/django/templates/compliance.html +33 -0
  312. package/dashboards/django/templates/components/modal.html +6 -0
  313. package/dashboards/django/templates/components/pagination.html +9 -0
  314. package/dashboards/django/templates/components/stats.html +8 -0
  315. package/dashboards/django/templates/dashboard.html +24 -0
  316. package/dashboards/django/templates/dlp.html +70 -0
  317. package/dashboards/django/templates/guardrails.html +78 -0
  318. package/dashboards/django/templates/journal.html +39 -0
  319. package/dashboards/django/templates/layout.html +52 -0
  320. package/dashboards/django/templates/login.html +30 -0
  321. package/dashboards/django/templates/messages.html +38 -0
  322. package/dashboards/django/templates/settings.html +472 -0
  323. package/dashboards/django/templates/skills.html +66 -0
  324. package/dashboards/django/templates/users.html +34 -0
  325. package/dashboards/django/templates/vault.html +46 -0
  326. package/dashboards/django/utils/__init__.py +0 -0
  327. package/dashboards/django/utils/api.py +20 -0
  328. package/dashboards/django/utils/helpers.py +39 -0
  329. package/dashboards/django/views/__init__.py +38 -0
  330. package/dashboards/django/views/agents.py +343 -0
  331. package/dashboards/django/views/api_keys.py +47 -0
  332. package/dashboards/django/views/audit.py +35 -0
  333. package/dashboards/django/views/auth.py +34 -0
  334. package/dashboards/django/views/compliance.py +37 -0
  335. package/dashboards/django/views/dashboard.py +27 -0
  336. package/dashboards/django/views/dlp.py +53 -0
  337. package/dashboards/django/views/guardrails.py +61 -0
  338. package/dashboards/django/views/journal.py +41 -0
  339. package/dashboards/django/views/messages.py +65 -0
  340. package/dashboards/django/views/settings_view.py +335 -0
  341. package/dashboards/django/views/skills.py +50 -0
  342. package/dashboards/django/views/users.py +42 -0
  343. package/dashboards/django/views/vault.py +50 -0
  344. package/dashboards/dotnet/AgenticMailDashboard.csproj +10 -0
  345. package/dashboards/dotnet/Program.cs +53 -233
  346. package/dashboards/dotnet/Routes/AgentRoutes.cs +771 -0
  347. package/dashboards/dotnet/Routes/ApiKeyRoutes.cs +185 -0
  348. package/dashboards/dotnet/Routes/AuditRoutes.cs +86 -0
  349. package/dashboards/dotnet/Routes/AuthRoutes.cs +50 -0
  350. package/dashboards/dotnet/Routes/ComplianceRoutes.cs +143 -0
  351. package/dashboards/dotnet/Routes/DashboardRoutes.cs +81 -0
  352. package/dashboards/dotnet/Routes/DlpRoutes.cs +230 -0
  353. package/dashboards/dotnet/Routes/GuardrailRoutes.cs +285 -0
  354. package/dashboards/dotnet/Routes/JournalRoutes.cs +118 -0
  355. package/dashboards/dotnet/Routes/MessageRoutes.cs +167 -0
  356. package/dashboards/dotnet/Routes/SettingRoutes.cs +907 -0
  357. package/dashboards/dotnet/Routes/SkillRoutes.cs +198 -0
  358. package/dashboards/dotnet/Routes/UserRoutes.cs +111 -0
  359. package/dashboards/dotnet/Routes/VaultRoutes.cs +162 -0
  360. package/dashboards/dotnet/Services/ApiClient.cs +103 -0
  361. package/dashboards/dotnet/Services/HtmlBuilder.cs +249 -0
  362. package/dashboards/dotnet/wwwroot/styles.css +284 -0
  363. package/dashboards/express/app.js +37 -126
  364. package/dashboards/express/middleware/auth.js +10 -0
  365. package/dashboards/express/package-lock.json +922 -0
  366. package/dashboards/express/package.json +17 -0
  367. package/dashboards/express/public/styles.css +284 -0
  368. package/dashboards/express/routes/agents.js +771 -0
  369. package/dashboards/express/routes/apiKeys.js +107 -0
  370. package/dashboards/express/routes/audit.js +75 -0
  371. package/dashboards/express/routes/auth.js +38 -0
  372. package/dashboards/express/routes/compliance.js +93 -0
  373. package/dashboards/express/routes/dashboard.js +65 -0
  374. package/dashboards/express/routes/dlp.js +165 -0
  375. package/dashboards/express/routes/guardrails.js +195 -0
  376. package/dashboards/express/routes/journal.js +95 -0
  377. package/dashboards/express/routes/messages.js +97 -0
  378. package/dashboards/express/routes/settings.js +830 -0
  379. package/dashboards/express/routes/skills.js +141 -0
  380. package/dashboards/express/routes/users.js +69 -0
  381. package/dashboards/express/routes/vault.js +141 -0
  382. package/dashboards/express/utils/api.js +44 -0
  383. package/dashboards/express/utils/helpers.js +46 -0
  384. package/dashboards/express/views/components/modal.js +255 -0
  385. package/dashboards/express/views/components/stats.js +22 -0
  386. package/dashboards/express/views/components/table.js +31 -0
  387. package/dashboards/express/views/layout.js +73 -0
  388. package/dashboards/express/views/login.js +45 -0
  389. package/dashboards/go/go.mod +3 -0
  390. package/dashboards/go/handlers/agents.go +790 -0
  391. package/dashboards/go/handlers/apikeys.go +38 -0
  392. package/dashboards/go/handlers/audit.go +52 -0
  393. package/dashboards/go/handlers/auth.go +39 -0
  394. package/dashboards/go/handlers/compliance.go +58 -0
  395. package/dashboards/go/handlers/dashboard.go +43 -0
  396. package/dashboards/go/handlers/dlp.go +78 -0
  397. package/dashboards/go/handlers/guardrails.go +89 -0
  398. package/dashboards/go/handlers/journal.go +60 -0
  399. package/dashboards/go/handlers/messages.go +59 -0
  400. package/dashboards/go/handlers/settings.go +951 -0
  401. package/dashboards/go/handlers/skills.go +129 -0
  402. package/dashboards/go/handlers/users.go +54 -0
  403. package/dashboards/go/handlers/vault.go +85 -0
  404. package/dashboards/go/main.go +35 -485
  405. package/dashboards/go/middleware/auth.go +17 -0
  406. package/dashboards/go/services/api.go +38 -0
  407. package/dashboards/go/services/session.go +52 -0
  408. package/dashboards/go/static/styles.css +284 -0
  409. package/dashboards/go/templates/components.go +45 -0
  410. package/dashboards/go/templates/helpers.go +35 -0
  411. package/dashboards/go/templates/layout.go +59 -0
  412. package/dashboards/html/index.html +203 -450
  413. package/dashboards/html/package.json +11 -0
  414. package/dashboards/html/public/styles.css +149 -0
  415. package/dashboards/html/src/api.js +36 -0
  416. package/dashboards/html/src/components/badge.js +13 -0
  417. package/dashboards/html/src/components/layout.js +11 -0
  418. package/dashboards/html/src/components/modal.js +9 -0
  419. package/dashboards/html/src/components/pagination.js +12 -0
  420. package/dashboards/html/src/components/stat-card.js +14 -0
  421. package/dashboards/html/src/components/table.js +6 -0
  422. package/dashboards/html/src/main.js +83 -0
  423. package/dashboards/html/src/pages/agents.js +831 -0
  424. package/dashboards/html/src/pages/api-keys.js +80 -0
  425. package/dashboards/html/src/pages/audit.js +50 -0
  426. package/dashboards/html/src/pages/compliance.js +69 -0
  427. package/dashboards/html/src/pages/dashboard.js +25 -0
  428. package/dashboards/html/src/pages/dlp.js +112 -0
  429. package/dashboards/html/src/pages/guardrails.js +127 -0
  430. package/dashboards/html/src/pages/journal.js +54 -0
  431. package/dashboards/html/src/pages/login.js +84 -0
  432. package/dashboards/html/src/pages/messages.js +90 -0
  433. package/dashboards/html/src/pages/settings.js +656 -0
  434. package/dashboards/html/src/pages/skills.js +114 -0
  435. package/dashboards/html/src/pages/users.js +62 -0
  436. package/dashboards/html/src/pages/vault.js +105 -0
  437. package/dashboards/html/src/router.js +40 -0
  438. package/dashboards/html/src/utils/escape.js +7 -0
  439. package/dashboards/html/src/utils/time.js +16 -0
  440. package/dashboards/html/src/utils/toast.js +10 -0
  441. package/dashboards/java/AgenticMailDashboard.java +123 -346
  442. package/dashboards/java/handlers/AgentsHandler.java +807 -0
  443. package/dashboards/java/handlers/ApiKeysHandler.java +201 -0
  444. package/dashboards/java/handlers/AuditHandler.java +95 -0
  445. package/dashboards/java/handlers/AuthHandler.java +71 -0
  446. package/dashboards/java/handlers/ComplianceHandler.java +192 -0
  447. package/dashboards/java/handlers/DashboardHandler.java +98 -0
  448. package/dashboards/java/handlers/DlpHandler.java +230 -0
  449. package/dashboards/java/handlers/GuardrailsHandler.java +272 -0
  450. package/dashboards/java/handlers/JournalHandler.java +130 -0
  451. package/dashboards/java/handlers/MessagesHandler.java +168 -0
  452. package/dashboards/java/handlers/SettingsHandler.java +1017 -0
  453. package/dashboards/java/handlers/SkillsHandler.java +198 -0
  454. package/dashboards/java/handlers/UsersHandler.java +118 -0
  455. package/dashboards/java/handlers/VaultHandler.java +168 -0
  456. package/dashboards/java/services/ApiClient.java +233 -0
  457. package/dashboards/java/services/SessionManager.java +138 -0
  458. package/dashboards/java/static/styles.css +288 -0
  459. package/dashboards/java/templates/Components.java +142 -0
  460. package/dashboards/java/templates/Helpers.java +106 -0
  461. package/dashboards/java/templates/Layout.java +98 -0
  462. package/dashboards/laravel/controllers/AgentController.php +250 -0
  463. package/dashboards/laravel/controllers/ApiKeyController.php +73 -0
  464. package/dashboards/laravel/controllers/AuditController.php +31 -0
  465. package/dashboards/laravel/controllers/AuthController.php +44 -0
  466. package/dashboards/laravel/controllers/ComplianceController.php +55 -0
  467. package/dashboards/laravel/controllers/DashboardController.php +28 -0
  468. package/dashboards/laravel/controllers/DlpController.php +88 -0
  469. package/dashboards/laravel/controllers/GuardrailController.php +110 -0
  470. package/dashboards/laravel/controllers/JournalController.php +44 -0
  471. package/dashboards/laravel/controllers/MessageController.php +47 -0
  472. package/dashboards/laravel/controllers/SettingController.php +258 -0
  473. package/dashboards/laravel/controllers/SkillController.php +74 -0
  474. package/dashboards/laravel/controllers/UserController.php +47 -0
  475. package/dashboards/laravel/controllers/VaultController.php +94 -0
  476. package/dashboards/laravel/index.php +319 -0
  477. package/dashboards/laravel/lib/Api.php +73 -0
  478. package/dashboards/laravel/lib/Helpers.php +123 -0
  479. package/dashboards/laravel/public/styles.css +291 -0
  480. package/dashboards/laravel/views/agent-detail.php +534 -0
  481. package/dashboards/laravel/views/agents.php +204 -0
  482. package/dashboards/laravel/views/api-keys.php +55 -0
  483. package/dashboards/laravel/views/audit.php +30 -0
  484. package/dashboards/laravel/views/compliance.php +48 -0
  485. package/dashboards/laravel/views/components/modal.php +59 -0
  486. package/dashboards/laravel/views/components/stats.php +21 -0
  487. package/dashboards/laravel/views/components/table.php +35 -0
  488. package/dashboards/laravel/views/dashboard.php +31 -0
  489. package/dashboards/laravel/views/dlp.php +87 -0
  490. package/dashboards/laravel/views/guardrails.php +95 -0
  491. package/dashboards/laravel/views/journal.php +50 -0
  492. package/dashboards/laravel/views/layout.php +82 -0
  493. package/dashboards/laravel/views/login.php +45 -0
  494. package/dashboards/laravel/views/messages.php +60 -0
  495. package/dashboards/laravel/views/settings.php +622 -0
  496. package/dashboards/laravel/views/skills.php +74 -0
  497. package/dashboards/laravel/views/users.php +42 -0
  498. package/dashboards/laravel/views/vault.php +80 -0
  499. package/dashboards/php/components/layout.php +80 -0
  500. package/dashboards/php/components/modal.php +22 -0
  501. package/dashboards/php/components/stats.php +20 -0
  502. package/dashboards/php/components/table.php +33 -0
  503. package/dashboards/php/index.php +663 -381
  504. package/dashboards/php/lib/api.php +37 -0
  505. package/dashboards/php/lib/auth.php +47 -0
  506. package/dashboards/php/lib/helpers.php +69 -0
  507. package/dashboards/php/pages/agent-detail.php +552 -0
  508. package/dashboards/php/pages/agents.php +185 -0
  509. package/dashboards/php/pages/api-keys.php +34 -0
  510. package/dashboards/php/pages/audit.php +31 -0
  511. package/dashboards/php/pages/compliance.php +38 -0
  512. package/dashboards/php/pages/dashboard.php +29 -0
  513. package/dashboards/php/pages/dlp.php +65 -0
  514. package/dashboards/php/pages/guardrails.php +70 -0
  515. package/dashboards/php/pages/journal.php +53 -0
  516. package/dashboards/php/pages/login.php +34 -0
  517. package/dashboards/php/pages/messages.php +53 -0
  518. package/dashboards/php/pages/settings.php +687 -0
  519. package/dashboards/php/pages/skills.php +70 -0
  520. package/dashboards/php/pages/users.php +37 -0
  521. package/dashboards/php/pages/vault.php +70 -0
  522. package/dashboards/php/public/styles.css +81 -0
  523. package/dashboards/python/app.py +61 -259
  524. package/dashboards/python/routes/__init__.py +0 -0
  525. package/dashboards/python/routes/agents.py +296 -0
  526. package/dashboards/python/routes/api_keys.py +49 -0
  527. package/dashboards/python/routes/audit.py +33 -0
  528. package/dashboards/python/routes/auth.py +30 -0
  529. package/dashboards/python/routes/compliance.py +50 -0
  530. package/dashboards/python/routes/dashboard.py +32 -0
  531. package/dashboards/python/routes/dlp.py +64 -0
  532. package/dashboards/python/routes/guardrails.py +79 -0
  533. package/dashboards/python/routes/journal.py +40 -0
  534. package/dashboards/python/routes/messages.py +46 -0
  535. package/dashboards/python/routes/settings.py +260 -0
  536. package/dashboards/python/routes/skills.py +59 -0
  537. package/dashboards/python/routes/users.py +43 -0
  538. package/dashboards/python/routes/vault.py +59 -0
  539. package/dashboards/python/static/styles.css +288 -0
  540. package/dashboards/python/templates/agent_detail.html +552 -0
  541. package/dashboards/python/templates/agents.html +246 -0
  542. package/dashboards/python/templates/api_keys.html +64 -0
  543. package/dashboards/python/templates/audit.html +50 -0
  544. package/dashboards/python/templates/compliance.html +74 -0
  545. package/dashboards/python/templates/components/modal.html +43 -0
  546. package/dashboards/python/templates/components/stats.html +26 -0
  547. package/dashboards/python/templates/components/table.html +43 -0
  548. package/dashboards/python/templates/dashboard.html +34 -0
  549. package/dashboards/python/templates/dlp.html +159 -0
  550. package/dashboards/python/templates/guardrails.html +131 -0
  551. package/dashboards/python/templates/journal.html +66 -0
  552. package/dashboards/python/templates/layout.html +86 -0
  553. package/dashboards/python/templates/login.html +36 -0
  554. package/dashboards/python/templates/messages.html +90 -0
  555. package/dashboards/python/templates/settings.html +624 -0
  556. package/dashboards/python/templates/skills.html +89 -0
  557. package/dashboards/python/templates/users.html +70 -0
  558. package/dashboards/python/templates/vault.html +73 -0
  559. package/dashboards/python/utils/__init__.py +0 -0
  560. package/dashboards/python/utils/api.py +35 -0
  561. package/dashboards/python/utils/helpers.py +90 -0
  562. package/dashboards/rails/app.rb +56 -0
  563. package/dashboards/rails/helpers/api.rb +39 -0
  564. package/dashboards/rails/helpers/auth.rb +11 -0
  565. package/dashboards/rails/helpers/view.rb +95 -0
  566. package/dashboards/rails/public/styles.css +299 -0
  567. package/dashboards/rails/routes/agents.rb +173 -0
  568. package/dashboards/rails/routes/api_keys.rb +30 -0
  569. package/dashboards/rails/routes/audit.rb +15 -0
  570. package/dashboards/rails/routes/auth.rb +29 -0
  571. package/dashboards/rails/routes/compliance.rb +25 -0
  572. package/dashboards/rails/routes/dashboard.rb +13 -0
  573. package/dashboards/rails/routes/dlp.rb +40 -0
  574. package/dashboards/rails/routes/guardrails.rb +51 -0
  575. package/dashboards/rails/routes/journal.rb +24 -0
  576. package/dashboards/rails/routes/messages.rb +22 -0
  577. package/dashboards/rails/routes/settings.rb +196 -0
  578. package/dashboards/rails/routes/skills.rb +38 -0
  579. package/dashboards/rails/routes/users.rb +18 -0
  580. package/dashboards/rails/routes/vault.rb +37 -0
  581. package/dashboards/rails/views/agent_detail.erb +550 -0
  582. package/dashboards/rails/views/agents.erb +214 -0
  583. package/dashboards/rails/views/api_keys.erb +52 -0
  584. package/dashboards/rails/views/audit.erb +38 -0
  585. package/dashboards/rails/views/compliance.erb +69 -0
  586. package/dashboards/rails/views/dashboard.erb +46 -0
  587. package/dashboards/rails/views/dlp.erb +104 -0
  588. package/dashboards/rails/views/guardrails.erb +107 -0
  589. package/dashboards/rails/views/journal.erb +65 -0
  590. package/dashboards/rails/views/layout.erb +53 -0
  591. package/dashboards/rails/views/login.erb +47 -0
  592. package/dashboards/rails/views/messages.erb +62 -0
  593. package/dashboards/rails/views/settings.erb +578 -0
  594. package/dashboards/rails/views/skills.erb +66 -0
  595. package/dashboards/rails/views/users.erb +53 -0
  596. package/dashboards/rails/views/vault.erb +66 -0
  597. package/dashboards/ruby/app.rb +53 -182
  598. package/dashboards/ruby/helpers/api.rb +63 -0
  599. package/dashboards/ruby/helpers/auth.rb +20 -0
  600. package/dashboards/ruby/helpers/view.rb +91 -0
  601. package/dashboards/ruby/public/styles.css +294 -0
  602. package/dashboards/ruby/routes/agents.rb +197 -0
  603. package/dashboards/ruby/routes/api_keys.rb +43 -0
  604. package/dashboards/ruby/routes/audit.rb +15 -0
  605. package/dashboards/ruby/routes/auth.rb +29 -0
  606. package/dashboards/ruby/routes/compliance.rb +28 -0
  607. package/dashboards/ruby/routes/dashboard.rb +13 -0
  608. package/dashboards/ruby/routes/dlp.rb +55 -0
  609. package/dashboards/ruby/routes/guardrails.rb +77 -0
  610. package/dashboards/ruby/routes/journal.rb +24 -0
  611. package/dashboards/ruby/routes/messages.rb +27 -0
  612. package/dashboards/ruby/routes/settings.rb +214 -0
  613. package/dashboards/ruby/routes/skills.rb +50 -0
  614. package/dashboards/ruby/routes/users.rb +26 -0
  615. package/dashboards/ruby/routes/vault.rb +49 -0
  616. package/dashboards/ruby/views/agent_detail.erb +550 -0
  617. package/dashboards/ruby/views/agents.erb +214 -0
  618. package/dashboards/ruby/views/api_keys.erb +59 -0
  619. package/dashboards/ruby/views/audit.erb +38 -0
  620. package/dashboards/ruby/views/compliance.erb +45 -0
  621. package/dashboards/ruby/views/dashboard.erb +46 -0
  622. package/dashboards/ruby/views/dlp.erb +88 -0
  623. package/dashboards/ruby/views/guardrails.erb +103 -0
  624. package/dashboards/ruby/views/journal.erb +53 -0
  625. package/dashboards/ruby/views/layout.erb +52 -0
  626. package/dashboards/ruby/views/login.erb +31 -0
  627. package/dashboards/ruby/views/messages.erb +51 -0
  628. package/dashboards/ruby/views/settings.erb +579 -0
  629. package/dashboards/ruby/views/skills.erb +66 -0
  630. package/dashboards/ruby/views/users.erb +53 -0
  631. package/dashboards/ruby/views/vault.erb +66 -0
  632. package/dashboards/shared/styles.css +322 -0
  633. package/dist/{chunk-TVF23PUW.js → chunk-7FVRYOP4.js} +22 -7
  634. package/dist/chunk-DRXMYYKN.js +79 -0
  635. package/dist/chunk-E23VJ3QX.js +9427 -0
  636. package/dist/chunk-EOBN6RCA.js +12652 -0
  637. package/dist/chunk-FLRYMSKY.js +23 -0
  638. package/dist/chunk-HAUHDCUB.js +764 -0
  639. package/dist/chunk-HSF6OJ5Z.js +154 -0
  640. package/dist/{chunk-PNKVD2UK.js → chunk-KFQGP6VL.js} +7 -0
  641. package/dist/chunk-LKAFZ343.js +591 -0
  642. package/dist/{chunk-GXIEEA2T.js → chunk-NTVN3JHS.js} +10 -10
  643. package/dist/chunk-RO537U6H.js +70 -0
  644. package/dist/chunk-SGBTJHEF.js +2287 -0
  645. package/dist/chunk-SMUXH6FM.js +1943 -0
  646. package/dist/chunk-TY7NVD4U.js +275 -0
  647. package/dist/chunk-X6UVWFHW.js +3455 -0
  648. package/dist/{chunk-7RGCCHIT.js → chunk-XMDE2NGH.js} +2 -1
  649. package/dist/chunk-ZNR5DDTA.js +239 -0
  650. package/dist/cidr-LISVZSM2.js +17 -0
  651. package/dist/cli-build-skill-XOYECCLE.js +235 -0
  652. package/dist/cli-recover-SSGGSKZJ.js +97 -0
  653. package/dist/cli-submit-skill-RSBLF5XN.js +162 -0
  654. package/dist/cli-validate-WJBUOEGW.js +148 -0
  655. package/dist/cli-verify-V3GPFMWU.js +98 -0
  656. package/dist/cli.js +50 -376
  657. package/dist/config-store-CRMKWBON.js +58 -0
  658. package/dist/dashboard/app.js +246 -0
  659. package/dist/dashboard/assets/logo.png +0 -0
  660. package/dist/dashboard/components/error-boundary.js +21 -0
  661. package/dist/dashboard/components/help-button.js +34 -0
  662. package/dist/dashboard/components/icons.js +53 -0
  663. package/dist/dashboard/components/modal.js +124 -0
  664. package/dist/dashboard/components/persona-fields.js +271 -0
  665. package/dist/dashboard/components/settings-help.js +191 -0
  666. package/dist/dashboard/components/tag-input.js +96 -0
  667. package/dist/dashboard/components/utils.js +148 -0
  668. package/dist/dashboard/index.html +407 -874
  669. package/dist/dashboard/pages/activity.js +62 -0
  670. package/dist/dashboard/pages/agent-detail.js +3577 -0
  671. package/dist/dashboard/pages/agents.js +1072 -0
  672. package/dist/dashboard/pages/approvals.js +81 -0
  673. package/dist/dashboard/pages/audit.js +133 -0
  674. package/dist/dashboard/pages/community-skills.js +665 -0
  675. package/dist/dashboard/pages/compliance.js +81 -0
  676. package/dist/dashboard/pages/dashboard.js +150 -0
  677. package/dist/dashboard/pages/dlp.js +107 -0
  678. package/dist/dashboard/pages/domain-status.js +123 -0
  679. package/dist/dashboard/pages/guardrails.js +995 -0
  680. package/dist/dashboard/pages/journal.js +51 -0
  681. package/dist/dashboard/pages/knowledge-contributions.js +763 -0
  682. package/dist/dashboard/pages/knowledge.js +46 -0
  683. package/dist/dashboard/pages/login.js +491 -0
  684. package/dist/dashboard/pages/messages.js +274 -0
  685. package/dist/dashboard/pages/settings.js +1554 -0
  686. package/dist/dashboard/pages/skill-connections.js +452 -0
  687. package/dist/dashboard/pages/skills.js +433 -0
  688. package/dist/dashboard/pages/users.js +49 -0
  689. package/dist/dashboard/pages/vault.js +538 -0
  690. package/dist/dashboard/pages/workforce.js +569 -0
  691. package/dist/dashboard/vendor/react-dom.production.min.js +267 -0
  692. package/dist/dashboard/vendor/react.production.min.js +31 -0
  693. package/dist/db-adapter-5PWMLY67.js +7 -0
  694. package/dist/domain-lock-URIFILHB.js +7 -0
  695. package/dist/{dynamodb-CCGL2E77.js → dynamodb-CD3LREWD.js} +4 -4
  696. package/dist/{factory-HINWFYZ3.js → factory-FVJH5RRY.js} +2 -2
  697. package/dist/firewall-AHIRE6UB.js +10 -0
  698. package/dist/index.js +133 -448
  699. package/dist/{managed-RZITNPXG.js → managed-QVTONZ7E.js} +4 -2
  700. package/dist/{mongodb-ODTXIVPV.js → mongodb-73MGW7LD.js} +4 -4
  701. package/dist/{mysql-RM3S2FV5.js → mysql-A2RYNBQG.js} +59 -6
  702. package/dist/{postgres-LN7A6MGQ.js → postgres-OE23X46P.js} +63 -6
  703. package/dist/registry/cli.js +411 -0
  704. package/dist/routes-NJK5OI5N.js +5673 -0
  705. package/dist/runtime-SMA6JUMP.js +46 -0
  706. package/dist/server-ZT5NWHT4.js +11 -0
  707. package/dist/setup-RCYNX5NA.js +20 -0
  708. package/dist/skills-QNR3CCHA.js +14 -0
  709. package/dist/soul-templates.json +1525 -0
  710. package/dist/{sqlite-VLKVAJA4.js → sqlite-SFVNZPHX.js} +56 -8
  711. package/dist/{turso-LDWODSDI.js → turso-L6WQAY7U.js} +59 -6
  712. package/live-test.mjs +1 -1
  713. package/package.json +11 -10
  714. package/schemas/agenticmail-skill.v1.schema.json +180 -0
  715. package/serve.mjs +12 -2
  716. package/src/admin/routes.ts +536 -5
  717. package/src/agent-tools/common.ts +232 -0
  718. package/src/agent-tools/index.ts +246 -0
  719. package/src/agent-tools/merge.ts +62 -0
  720. package/src/agent-tools/middleware.ts +436 -0
  721. package/src/agent-tools/security.ts +352 -0
  722. package/src/agent-tools/tools/bash.ts +154 -0
  723. package/src/agent-tools/tools/browser.ts +236 -0
  724. package/src/agent-tools/tools/edit.ts +100 -0
  725. package/src/agent-tools/tools/enterprise-calendar.ts +561 -0
  726. package/src/agent-tools/tools/enterprise-code-sandbox.ts +395 -0
  727. package/src/agent-tools/tools/enterprise-database.ts +377 -0
  728. package/src/agent-tools/tools/enterprise-diff.ts +580 -0
  729. package/src/agent-tools/tools/enterprise-documents.ts +896 -0
  730. package/src/agent-tools/tools/enterprise-finance.ts +484 -0
  731. package/src/agent-tools/tools/enterprise-http.ts +477 -0
  732. package/src/agent-tools/tools/enterprise-knowledge-search.ts +369 -0
  733. package/src/agent-tools/tools/enterprise-logs.ts +479 -0
  734. package/src/agent-tools/tools/enterprise-notifications.ts +532 -0
  735. package/src/agent-tools/tools/enterprise-security-scan.ts +528 -0
  736. package/src/agent-tools/tools/enterprise-spreadsheet.ts +825 -0
  737. package/src/agent-tools/tools/enterprise-translation.ts +530 -0
  738. package/src/agent-tools/tools/enterprise-vision.ts +348 -0
  739. package/src/agent-tools/tools/enterprise-web-research.ts +422 -0
  740. package/src/agent-tools/tools/enterprise-workflow.ts +308 -0
  741. package/src/agent-tools/tools/glob.ts +129 -0
  742. package/src/agent-tools/tools/grep.ts +178 -0
  743. package/src/agent-tools/tools/memory.ts +194 -0
  744. package/src/agent-tools/tools/read.ts +160 -0
  745. package/src/agent-tools/tools/web-fetch-utils.ts +202 -0
  746. package/src/agent-tools/tools/web-fetch.ts +456 -0
  747. package/src/agent-tools/tools/web-search.ts +480 -0
  748. package/src/agent-tools/tools/web-shared.ts +232 -0
  749. package/src/agent-tools/tools/write.ts +68 -0
  750. package/src/agent-tools/types.ts +193 -0
  751. package/src/auth/routes.ts +916 -51
  752. package/src/cli.ts +74 -14
  753. package/src/dashboard/app.js +246 -0
  754. package/src/dashboard/assets/logo.png +0 -0
  755. package/src/dashboard/components/error-boundary.js +21 -0
  756. package/src/dashboard/components/help-button.js +34 -0
  757. package/src/dashboard/components/icons.js +53 -0
  758. package/src/dashboard/components/modal.js +124 -0
  759. package/src/dashboard/components/persona-fields.js +271 -0
  760. package/src/dashboard/components/settings-help.js +191 -0
  761. package/src/dashboard/components/tag-input.js +96 -0
  762. package/src/dashboard/components/utils.js +148 -0
  763. package/src/dashboard/index.html +407 -874
  764. package/src/dashboard/pages/activity.js +62 -0
  765. package/src/dashboard/pages/agent-detail.js +3577 -0
  766. package/src/dashboard/pages/agents.js +1072 -0
  767. package/src/dashboard/pages/approvals.js +81 -0
  768. package/src/dashboard/pages/audit.js +133 -0
  769. package/src/dashboard/pages/community-skills.js +665 -0
  770. package/src/dashboard/pages/compliance.js +81 -0
  771. package/src/dashboard/pages/dashboard.js +150 -0
  772. package/src/dashboard/pages/dlp.js +107 -0
  773. package/src/dashboard/pages/domain-status.js +123 -0
  774. package/src/dashboard/pages/guardrails.js +995 -0
  775. package/src/dashboard/pages/journal.js +51 -0
  776. package/src/dashboard/pages/knowledge-contributions.js +763 -0
  777. package/src/dashboard/pages/knowledge.js +46 -0
  778. package/src/dashboard/pages/login.js +491 -0
  779. package/src/dashboard/pages/messages.js +274 -0
  780. package/src/dashboard/pages/settings.js +1554 -0
  781. package/src/dashboard/pages/skill-connections.js +452 -0
  782. package/src/dashboard/pages/skills.js +433 -0
  783. package/src/dashboard/pages/users.js +49 -0
  784. package/src/dashboard/pages/vault.js +538 -0
  785. package/src/dashboard/pages/workforce.js +569 -0
  786. package/src/dashboard/vendor/react-dom.production.min.js +267 -0
  787. package/src/dashboard/vendor/react.production.min.js +31 -0
  788. package/src/db/adapter.ts +134 -1
  789. package/src/db/dynamodb.ts +2 -2
  790. package/src/db/mongodb.ts +2 -2
  791. package/src/db/mysql.ts +55 -1
  792. package/src/db/postgres.ts +59 -1
  793. package/src/db/proxy.ts +39 -0
  794. package/src/db/sql-schema.ts +2 -1
  795. package/src/db/sqlite.ts +51 -3
  796. package/src/db/turso.ts +55 -1
  797. package/src/deploy/fly.ts +2 -2
  798. package/src/deploy/managed.ts +32 -11
  799. package/src/domain-lock/cli-recover.ts +124 -0
  800. package/src/domain-lock/cli-verify.ts +122 -0
  801. package/src/domain-lock/index.ts +220 -0
  802. package/src/engine/activity-routes.ts +116 -0
  803. package/src/engine/activity.ts +62 -2
  804. package/src/engine/agent-config.ts +190 -24
  805. package/src/engine/agent-memory.ts +1062 -0
  806. package/src/engine/agent-routes.ts +379 -0
  807. package/src/engine/approvals.ts +309 -2
  808. package/src/engine/catalog-routes.ts +155 -0
  809. package/src/engine/cli-build-skill.ts +285 -0
  810. package/src/engine/cli-submit-skill.ts +200 -0
  811. package/src/engine/cli-validate.ts +188 -0
  812. package/src/engine/communication-routes.ts +139 -0
  813. package/src/engine/communication.ts +759 -0
  814. package/src/engine/community-registry.ts +1509 -0
  815. package/src/engine/community-routes.ts +233 -0
  816. package/src/engine/compliance-routes.ts +93 -0
  817. package/src/engine/compliance.ts +325 -0
  818. package/src/engine/db-adapter.ts +349 -1
  819. package/src/engine/db-schema.ts +971 -23
  820. package/src/engine/deploy-schema-routes.ts +176 -0
  821. package/src/engine/deployer.ts +6 -6
  822. package/src/engine/dlp-routes.ts +59 -0
  823. package/src/engine/dlp.ts +231 -0
  824. package/src/engine/guardrail-routes.ts +125 -0
  825. package/src/engine/guardrails.ts +403 -0
  826. package/src/engine/index.ts +131 -10
  827. package/src/engine/journal-routes.ts +56 -0
  828. package/src/engine/journal.ts +249 -0
  829. package/src/engine/knowledge-contribution-routes.ts +385 -0
  830. package/src/engine/knowledge-contribution.ts +1319 -0
  831. package/src/engine/knowledge-routes.ts +68 -0
  832. package/src/engine/knowledge.ts +73 -1
  833. package/src/engine/lifecycle.ts +487 -31
  834. package/src/engine/memory-routes.ts +142 -0
  835. package/src/engine/oauth-connect-routes.ts +366 -0
  836. package/src/engine/oauth-connect.ts +304 -0
  837. package/src/engine/onboarding-routes.ts +140 -0
  838. package/src/engine/onboarding.ts +574 -0
  839. package/src/engine/org-approval-routes.ts +146 -0
  840. package/src/engine/org-policies.ts +497 -0
  841. package/src/engine/policy-import-routes.ts +125 -0
  842. package/src/engine/policy-import.ts +1186 -0
  843. package/src/engine/policy-routes.ts +163 -0
  844. package/src/engine/routes.ts +239 -482
  845. package/src/engine/skill-updater-routes.ts +132 -0
  846. package/src/engine/skill-updater.ts +480 -0
  847. package/src/engine/skill-validator.ts +331 -0
  848. package/src/engine/skills/enterprise-calendar.ts +142 -0
  849. package/src/engine/skills/enterprise-code-sandbox.ts +112 -0
  850. package/src/engine/skills/enterprise-database.ts +122 -0
  851. package/src/engine/skills/enterprise-diff.ts +94 -0
  852. package/src/engine/skills/enterprise-documents.ts +161 -0
  853. package/src/engine/skills/enterprise-finance.ts +109 -0
  854. package/src/engine/skills/enterprise-http.ts +98 -0
  855. package/src/engine/skills/enterprise-knowledge-search.ts +106 -0
  856. package/src/engine/skills/enterprise-logs.ts +115 -0
  857. package/src/engine/skills/enterprise-notifications.ts +119 -0
  858. package/src/engine/skills/enterprise-security-scan.ts +124 -0
  859. package/src/engine/skills/enterprise-spreadsheet.ts +170 -0
  860. package/src/engine/skills/enterprise-translation.ts +111 -0
  861. package/src/engine/skills/enterprise-vision.ts +107 -0
  862. package/src/engine/skills/enterprise-web-research.ts +114 -0
  863. package/src/engine/skills/enterprise-workflow.ts +109 -0
  864. package/src/engine/skills/gws-admin.ts +17 -0
  865. package/src/engine/skills/gws-calendar.ts +19 -0
  866. package/src/engine/skills/gws-chat.ts +16 -0
  867. package/src/engine/skills/gws-docs.ts +17 -0
  868. package/src/engine/skills/gws-drive.ts +20 -0
  869. package/src/engine/skills/gws-forms.ts +16 -0
  870. package/src/engine/skills/gws-gmail.ts +20 -0
  871. package/src/engine/skills/gws-groups.ts +16 -0
  872. package/src/engine/skills/gws-keep.ts +16 -0
  873. package/src/engine/skills/gws-meet.ts +16 -0
  874. package/src/engine/skills/gws-sheets.ts +18 -0
  875. package/src/engine/skills/gws-sites.ts +15 -0
  876. package/src/engine/skills/gws-slides.ts +16 -0
  877. package/src/engine/skills/gws-vault.ts +16 -0
  878. package/src/engine/skills/index.ts +121 -0
  879. package/src/engine/skills/m365-admin.ts +17 -0
  880. package/src/engine/skills/m365-bookings.ts +16 -0
  881. package/src/engine/skills/m365-copilot.ts +16 -0
  882. package/src/engine/skills/m365-excel.ts +59 -0
  883. package/src/engine/skills/m365-forms.ts +16 -0
  884. package/src/engine/skills/m365-onedrive.ts +59 -0
  885. package/src/engine/skills/m365-onenote.ts +16 -0
  886. package/src/engine/skills/m365-outlook.ts +26 -0
  887. package/src/engine/skills/m365-planner.ts +17 -0
  888. package/src/engine/skills/m365-power-automate.ts +17 -0
  889. package/src/engine/skills/m365-power-bi.ts +18 -0
  890. package/src/engine/skills/m365-powerpoint.ts +32 -0
  891. package/src/engine/skills/m365-sharepoint.ts +19 -0
  892. package/src/engine/skills/m365-teams.ts +20 -0
  893. package/src/engine/skills/m365-todo.ts +16 -0
  894. package/src/engine/skills/m365-whiteboard.ts +15 -0
  895. package/src/engine/skills/m365-word.ts +41 -0
  896. package/src/engine/skills.ts +353 -17
  897. package/src/engine/soul-library.ts +142 -0
  898. package/src/engine/soul-templates.json +1525 -0
  899. package/src/engine/storage-manager.ts +252 -0
  900. package/src/engine/storage-routes.ts +113 -0
  901. package/src/engine/storage.ts +528 -0
  902. package/src/engine/tenant.ts +69 -5
  903. package/src/engine/tool-catalog.ts +177 -13
  904. package/src/engine/vault-routes.ts +130 -0
  905. package/src/engine/vault.ts +544 -0
  906. package/src/engine/workforce-routes.ts +282 -0
  907. package/src/engine/workforce.ts +957 -0
  908. package/src/index.ts +9 -1
  909. package/src/lib/cidr.ts +122 -0
  910. package/src/lib/config-store.ts +86 -0
  911. package/src/mcp/adapters/activecampaign.adapter.ts +391 -0
  912. package/src/mcp/adapters/adobe-sign.adapter.ts +469 -0
  913. package/src/mcp/adapters/adp.adapter.ts +358 -0
  914. package/src/mcp/adapters/airtable.adapter.ts +273 -0
  915. package/src/mcp/adapters/apollo.adapter.ts +420 -0
  916. package/src/mcp/adapters/asana.adapter.ts +315 -0
  917. package/src/mcp/adapters/auth0.adapter.ts +386 -0
  918. package/src/mcp/adapters/aws.adapter.ts +345 -0
  919. package/src/mcp/adapters/azure-devops.adapter.ts +389 -0
  920. package/src/mcp/adapters/bamboohr.adapter.ts +376 -0
  921. package/src/mcp/adapters/basecamp.adapter.ts +366 -0
  922. package/src/mcp/adapters/bigcommerce.adapter.ts +429 -0
  923. package/src/mcp/adapters/bitbucket.adapter.ts +260 -0
  924. package/src/mcp/adapters/box.adapter.ts +350 -0
  925. package/src/mcp/adapters/brex.adapter.ts +367 -0
  926. package/src/mcp/adapters/buffer.adapter.ts +303 -0
  927. package/src/mcp/adapters/calendly.adapter.ts +262 -0
  928. package/src/mcp/adapters/canva.adapter.ts +256 -0
  929. package/src/mcp/adapters/chargebee.adapter.ts +448 -0
  930. package/src/mcp/adapters/circleci.adapter.ts +216 -0
  931. package/src/mcp/adapters/clickup.adapter.ts +335 -0
  932. package/src/mcp/adapters/close.adapter.ts +390 -0
  933. package/src/mcp/adapters/cloudflare.adapter.ts +377 -0
  934. package/src/mcp/adapters/confluence.adapter.ts +301 -0
  935. package/src/mcp/adapters/contentful.adapter.ts +355 -0
  936. package/src/mcp/adapters/copper.adapter.ts +468 -0
  937. package/src/mcp/adapters/crisp.adapter.ts +415 -0
  938. package/src/mcp/adapters/crowdstrike.adapter.ts +413 -0
  939. package/src/mcp/adapters/datadog.adapter.ts +373 -0
  940. package/src/mcp/adapters/digitalocean.adapter.ts +336 -0
  941. package/src/mcp/adapters/discord.adapter.ts +248 -0
  942. package/src/mcp/adapters/docker.adapter.ts +238 -0
  943. package/src/mcp/adapters/docusign.adapter.ts +431 -0
  944. package/src/mcp/adapters/drift.adapter.ts +386 -0
  945. package/src/mcp/adapters/dropbox.adapter.ts +315 -0
  946. package/src/mcp/adapters/figma.adapter.ts +302 -0
  947. package/src/mcp/adapters/firebase.adapter.ts +446 -0
  948. package/src/mcp/adapters/flyio.adapter.ts +302 -0
  949. package/src/mcp/adapters/freshbooks.adapter.ts +474 -0
  950. package/src/mcp/adapters/freshdesk.adapter.ts +441 -0
  951. package/src/mcp/adapters/freshsales.adapter.ts +457 -0
  952. package/src/mcp/adapters/freshservice.adapter.ts +481 -0
  953. package/src/mcp/adapters/front.adapter.ts +357 -0
  954. package/src/mcp/adapters/github-actions.adapter.ts +329 -0
  955. package/src/mcp/adapters/github.adapter.ts +387 -0
  956. package/src/mcp/adapters/gitlab.adapter.ts +368 -0
  957. package/src/mcp/adapters/gong.adapter.ts +386 -0
  958. package/src/mcp/adapters/google-ads.adapter.ts +363 -0
  959. package/src/mcp/adapters/google-analytics.adapter.ts +316 -0
  960. package/src/mcp/adapters/google-cloud.adapter.ts +312 -0
  961. package/src/mcp/adapters/google-drive.adapter.ts +387 -0
  962. package/src/mcp/adapters/gotomeeting.adapter.ts +255 -0
  963. package/src/mcp/adapters/grafana.adapter.ts +361 -0
  964. package/src/mcp/adapters/greenhouse.adapter.ts +354 -0
  965. package/src/mcp/adapters/gusto.adapter.ts +329 -0
  966. package/src/mcp/adapters/hashicorp-vault.adapter.ts +355 -0
  967. package/src/mcp/adapters/heroku.adapter.ts +291 -0
  968. package/src/mcp/adapters/hibob.adapter.ts +334 -0
  969. package/src/mcp/adapters/hootsuite.adapter.ts +322 -0
  970. package/src/mcp/adapters/hubspot.adapter.ts +400 -0
  971. package/src/mcp/adapters/huggingface.adapter.ts +349 -0
  972. package/src/mcp/adapters/index.ts +530 -0
  973. package/src/mcp/adapters/intercom.adapter.ts +269 -0
  974. package/src/mcp/adapters/jira.adapter.ts +482 -0
  975. package/src/mcp/adapters/klaviyo.adapter.ts +353 -0
  976. package/src/mcp/adapters/kubernetes.adapter.ts +431 -0
  977. package/src/mcp/adapters/lattice.adapter.ts +339 -0
  978. package/src/mcp/adapters/launchdarkly.adapter.ts +368 -0
  979. package/src/mcp/adapters/lever.adapter.ts +347 -0
  980. package/src/mcp/adapters/linear.adapter.ts +300 -0
  981. package/src/mcp/adapters/linkedin.adapter.ts +331 -0
  982. package/src/mcp/adapters/livechat.adapter.ts +259 -0
  983. package/src/mcp/adapters/loom.adapter.ts +230 -0
  984. package/src/mcp/adapters/mailchimp.adapter.ts +394 -0
  985. package/src/mcp/adapters/mailgun.adapter.ts +425 -0
  986. package/src/mcp/adapters/microsoft-teams.adapter.ts +251 -0
  987. package/src/mcp/adapters/miro.adapter.ts +274 -0
  988. package/src/mcp/adapters/mixpanel.adapter.ts +324 -0
  989. package/src/mcp/adapters/monday.adapter.ts +308 -0
  990. package/src/mcp/adapters/mongodb-atlas.adapter.ts +345 -0
  991. package/src/mcp/adapters/neon.adapter.ts +312 -0
  992. package/src/mcp/adapters/netlify.adapter.ts +324 -0
  993. package/src/mcp/adapters/netsuite.adapter.ts +411 -0
  994. package/src/mcp/adapters/newrelic.adapter.ts +339 -0
  995. package/src/mcp/adapters/notion.adapter.ts +338 -0
  996. package/src/mcp/adapters/okta.adapter.ts +394 -0
  997. package/src/mcp/adapters/openai.adapter.ts +315 -0
  998. package/src/mcp/adapters/opsgenie.adapter.ts +375 -0
  999. package/src/mcp/adapters/outreach.adapter.ts +372 -0
  1000. package/src/mcp/adapters/paddle.adapter.ts +467 -0
  1001. package/src/mcp/adapters/pagerduty.adapter.ts +412 -0
  1002. package/src/mcp/adapters/pandadoc.adapter.ts +389 -0
  1003. package/src/mcp/adapters/paypal.adapter.ts +465 -0
  1004. package/src/mcp/adapters/personio.adapter.ts +401 -0
  1005. package/src/mcp/adapters/pinecone.adapter.ts +340 -0
  1006. package/src/mcp/adapters/pipedrive.adapter.ts +324 -0
  1007. package/src/mcp/adapters/plaid.adapter.ts +444 -0
  1008. package/src/mcp/adapters/postmark.adapter.ts +387 -0
  1009. package/src/mcp/adapters/power-automate.adapter.ts +388 -0
  1010. package/src/mcp/adapters/quickbooks.adapter.ts +431 -0
  1011. package/src/mcp/adapters/recurly.adapter.ts +433 -0
  1012. package/src/mcp/adapters/reddit.adapter.ts +371 -0
  1013. package/src/mcp/adapters/render.adapter.ts +332 -0
  1014. package/src/mcp/adapters/ringcentral.adapter.ts +281 -0
  1015. package/src/mcp/adapters/rippling.adapter.ts +287 -0
  1016. package/src/mcp/adapters/salesforce.adapter.ts +321 -0
  1017. package/src/mcp/adapters/salesloft.adapter.ts +413 -0
  1018. package/src/mcp/adapters/sanity.adapter.ts +363 -0
  1019. package/src/mcp/adapters/sap.adapter.ts +483 -0
  1020. package/src/mcp/adapters/segment.adapter.ts +260 -0
  1021. package/src/mcp/adapters/sendgrid.adapter.ts +265 -0
  1022. package/src/mcp/adapters/sentry.adapter.ts +331 -0
  1023. package/src/mcp/adapters/servicenow.adapter.ts +468 -0
  1024. package/src/mcp/adapters/shopify.adapter.ts +451 -0
  1025. package/src/mcp/adapters/shortcut.adapter.ts +290 -0
  1026. package/src/mcp/adapters/slack.adapter.ts +380 -0
  1027. package/src/mcp/adapters/smartsheet.adapter.ts +326 -0
  1028. package/src/mcp/adapters/snowflake.adapter.ts +347 -0
  1029. package/src/mcp/adapters/snyk.adapter.ts +394 -0
  1030. package/src/mcp/adapters/splunk.adapter.ts +403 -0
  1031. package/src/mcp/adapters/square.adapter.ts +467 -0
  1032. package/src/mcp/adapters/statuspage.adapter.ts +401 -0
  1033. package/src/mcp/adapters/stripe.adapter.ts +380 -0
  1034. package/src/mcp/adapters/supabase.adapter.ts +334 -0
  1035. package/src/mcp/adapters/teamwork.adapter.ts +404 -0
  1036. package/src/mcp/adapters/telegram.adapter.ts +299 -0
  1037. package/src/mcp/adapters/terraform.adapter.ts +300 -0
  1038. package/src/mcp/adapters/todoist.adapter.ts +239 -0
  1039. package/src/mcp/adapters/trello.adapter.ts +316 -0
  1040. package/src/mcp/adapters/twilio.adapter.ts +233 -0
  1041. package/src/mcp/adapters/twitter.adapter.ts +348 -0
  1042. package/src/mcp/adapters/vercel.adapter.ts +219 -0
  1043. package/src/mcp/adapters/weaviate.adapter.ts +371 -0
  1044. package/src/mcp/adapters/webex.adapter.ts +237 -0
  1045. package/src/mcp/adapters/webflow.adapter.ts +287 -0
  1046. package/src/mcp/adapters/whatsapp.adapter.ts +273 -0
  1047. package/src/mcp/adapters/whereby.adapter.ts +240 -0
  1048. package/src/mcp/adapters/woocommerce.adapter.ts +454 -0
  1049. package/src/mcp/adapters/wordpress.adapter.ts +455 -0
  1050. package/src/mcp/adapters/workday.adapter.ts +354 -0
  1051. package/src/mcp/adapters/wrike.adapter.ts +349 -0
  1052. package/src/mcp/adapters/xero.adapter.ts +472 -0
  1053. package/src/mcp/adapters/youtube.adapter.ts +401 -0
  1054. package/src/mcp/adapters/zendesk.adapter.ts +399 -0
  1055. package/src/mcp/adapters/zoho-crm.adapter.ts +410 -0
  1056. package/src/mcp/adapters/zoom.adapter.ts +241 -0
  1057. package/src/mcp/adapters/zuora.adapter.ts +476 -0
  1058. package/src/mcp/framework/api-executor.ts +192 -0
  1059. package/src/mcp/framework/aws-sigv4.ts +216 -0
  1060. package/src/mcp/framework/credential-resolver.ts +128 -0
  1061. package/src/mcp/framework/skill-mcp-framework.ts +226 -0
  1062. package/src/mcp/framework/types.ts +130 -0
  1063. package/src/mcp/index.ts +124 -0
  1064. package/src/middleware/egress-filter.ts +81 -0
  1065. package/src/middleware/firewall.ts +121 -0
  1066. package/src/middleware/index.ts +33 -0
  1067. package/src/registry/cli.ts +63 -0
  1068. package/src/registry/server.ts +504 -0
  1069. package/src/runtime/agent-loop.ts +504 -0
  1070. package/src/runtime/email-channel.ts +120 -0
  1071. package/src/runtime/followup.ts +211 -0
  1072. package/src/runtime/gateway.ts +260 -0
  1073. package/src/runtime/hooks.ts +472 -0
  1074. package/src/runtime/index.ts +679 -0
  1075. package/src/runtime/llm-client.ts +1019 -0
  1076. package/src/runtime/providers.ts +231 -0
  1077. package/src/runtime/session-manager.ts +340 -0
  1078. package/src/runtime/subagent.ts +154 -0
  1079. package/src/runtime/tool-executor.ts +202 -0
  1080. package/src/runtime/types.ts +215 -0
  1081. package/src/server.ts +157 -45
  1082. package/src/setup/company.ts +127 -8
  1083. package/src/setup/database.ts +2 -1
  1084. package/src/setup/domain.ts +33 -4
  1085. package/src/setup/index.ts +19 -7
  1086. package/src/setup/provision.ts +128 -8
  1087. package/src/setup/registration.ts +227 -0
  1088. package/src/types/hono-env.ts +14 -0
  1089. package/src/types/optional-deps.d.ts +10 -0
  1090. package/start-live.mjs +12 -3
  1091. package/test-integration.mjs +628 -257
  1092. package/dist/chunk-77IDQJL3.js +0 -7
  1093. package/dist/chunk-BE7MXVLA.js +0 -757
  1094. package/dist/chunk-BS2WCSHO.js +0 -48
  1095. package/dist/chunk-FL3VQBGL.js +0 -757
  1096. package/dist/chunk-IQWA44WT.js +0 -970
  1097. package/dist/chunk-N2JVTNNJ.js +0 -2553
  1098. package/dist/chunk-YFDSE4BW.js +0 -1355
  1099. package/dist/db-adapter-DEWEFNIV.js +0 -7
  1100. package/dist/factory-V37IG5AT.js +0 -9
  1101. package/dist/routes-2JEPIIKC.js +0 -441
  1102. package/dist/server-32YYCI3A.js +0 -8
  1103. package/dist/server-H3C6WUOS.js +0 -8
  1104. package/dist/sqlite-3K5YOZ4K.js +0 -439
  1105. package/src/engine/agenticmail-bridge.ts +0 -296
  1106. package/src/engine/openclaw-hook.ts +0 -371
@@ -0,0 +1,1509 @@
1
+ /**
2
+ * Community Skill Registry — Marketplace for Community-Contributed Skills
3
+ *
4
+ * Full DB-backed registry that replaces the in-memory stub from skills.ts.
5
+ * Handles publishing, installing, reviewing, and importing community skills.
6
+ *
7
+ * Skills are described by an `agenticmail-skill.json` manifest and can be
8
+ * imported from any public GitHub repo containing that file.
9
+ */
10
+
11
+ import type { EngineDatabase } from './db-adapter.js';
12
+ import type { PermissionEngine, SkillDefinition } from './skills.js';
13
+ import { validateSkillManifest, collectCommunityToolIds, VALID_CATEGORIES, type ManifestValidationResult as _MVR } from './skill-validator.js';
14
+
15
+ // ─── Types ──────────────────────────────────────────────
16
+
17
+ export interface CommunitySkillManifest {
18
+ id: string;
19
+ name: string;
20
+ description: string;
21
+ version: string;
22
+ author: string;
23
+ repository: string;
24
+ license: string;
25
+ category?: string;
26
+ risk?: 'low' | 'medium' | 'high' | 'critical';
27
+ icon?: string;
28
+ tags?: string[];
29
+ tools: Array<{
30
+ id: string;
31
+ name: string;
32
+ description: string;
33
+ parameters?: Record<string, any>;
34
+ riskLevel?: string;
35
+ }>;
36
+ configSchema?: Record<string, any>;
37
+ minEngineVersion?: string;
38
+ homepage?: string;
39
+ }
40
+
41
+ export interface IndexedCommunitySkill extends CommunitySkillManifest {
42
+ downloads: number;
43
+ rating: number;
44
+ ratingCount: number;
45
+ verified: boolean;
46
+ featured: boolean;
47
+ createdAt: string;
48
+ updatedAt: string;
49
+ }
50
+
51
+ export interface InstalledCommunitySkill {
52
+ id: string;
53
+ orgId: string;
54
+ skillId: string;
55
+ version: string;
56
+ enabled: boolean;
57
+ config: Record<string, any>;
58
+ installedBy: string;
59
+ installedAt: string;
60
+ updatedAt: string;
61
+ }
62
+
63
+ export interface CommunitySkillReview {
64
+ id: string;
65
+ skillId: string;
66
+ userId: string;
67
+ userName?: string;
68
+ rating: number;
69
+ reviewText?: string;
70
+ createdAt: string;
71
+ }
72
+
73
+ export type { ManifestValidationResult } from './skill-validator.js';
74
+
75
+ // ─── Helpers ─────────────────────────────────────────────
76
+
77
+ function uid(): string {
78
+ return Date.now().toString(36) + Math.random().toString(36).slice(2, 10);
79
+ }
80
+
81
+ import type { ManifestValidationResult } from './skill-validator.js';
82
+
83
+ // ─── Community Skill Registry ─────────────────────────────
84
+
85
+ // ─── Remote Registry Config ──────────────────────────────
86
+
87
+ const DEFAULT_REGISTRY_REPO = 'agenticmail/enterprise';
88
+ const DEFAULT_REGISTRY_BRANCH = 'main';
89
+ const DEFAULT_SYNC_INTERVAL_MS = 6 * 60 * 60 * 1000; // 6 hours
90
+
91
+ export class CommunitySkillRegistry {
92
+ private engineDb?: EngineDatabase;
93
+ private permissions: PermissionEngine;
94
+ private index = new Map<string, IndexedCommunitySkill>();
95
+ private installed = new Map<string, InstalledCommunitySkill>();
96
+ private syncTimer?: ReturnType<typeof setInterval>;
97
+ private registryRepo: string;
98
+ private registryBranch: string;
99
+ private lastSyncAt?: string;
100
+
101
+ constructor(opts: { permissions: PermissionEngine; registryRepo?: string; registryBranch?: string }) {
102
+ this.permissions = opts.permissions;
103
+ this.registryRepo = opts.registryRepo || DEFAULT_REGISTRY_REPO;
104
+ this.registryBranch = opts.registryBranch || DEFAULT_REGISTRY_BRANCH;
105
+ }
106
+
107
+ // ── DB Wiring ─────────────────────────────────────────
108
+
109
+ async setDb(db: EngineDatabase): Promise<void> {
110
+ this.engineDb = db;
111
+ await this.loadFromDb();
112
+ }
113
+
114
+ private async loadFromDb(): Promise<void> {
115
+ if (!this.engineDb) return;
116
+
117
+ // Load global index
118
+ const { skills } = await this.engineDb.getAllCommunitySkills({ limit: 10000 });
119
+ this.index.clear();
120
+ for (const s of skills) this.index.set(s.id, s);
121
+
122
+ // Seed example skills (upserts — safe to run repeatedly, ensures icons/metadata stay current)
123
+ await this.seedIndex();
124
+
125
+ // Load all installed skills and re-register enabled ones
126
+ // For simplicity, load installed for all orgs
127
+ // (in production this would be per-org on request)
128
+ try {
129
+ const rows = await this.engineDb.getInstalledSkillsByOrg('*').catch(() => [] as any[]);
130
+ // Actually load per-org when requested; for startup, just clear
131
+ this.installed.clear();
132
+ } catch {
133
+ // noop — table may not exist yet during first run
134
+ }
135
+ }
136
+
137
+ // ── Publishing ────────────────────────────────────────
138
+
139
+ async publish(manifest: CommunitySkillManifest): Promise<IndexedCommunitySkill> {
140
+ const validation = this.validateManifest(manifest);
141
+ if (!validation.valid) throw new Error('Invalid manifest: ' + validation.errors.join(', '));
142
+
143
+ const existing = this.index.get(manifest.id);
144
+ const skill: IndexedCommunitySkill = {
145
+ ...manifest,
146
+ downloads: existing?.downloads || 0,
147
+ rating: existing?.rating || 0,
148
+ ratingCount: existing?.ratingCount || 0,
149
+ verified: existing?.verified || false,
150
+ featured: existing?.featured || false,
151
+ createdAt: existing?.createdAt || new Date().toISOString(),
152
+ updatedAt: new Date().toISOString(),
153
+ };
154
+
155
+ this.index.set(skill.id, skill);
156
+ if (this.engineDb) await this.engineDb.upsertCommunitySkill(skill);
157
+ return skill;
158
+ }
159
+
160
+ async unpublish(skillId: string): Promise<void> {
161
+ this.index.delete(skillId);
162
+ if (this.engineDb) await this.engineDb.deleteCommunitySkill(skillId);
163
+ }
164
+
165
+ async setVerified(skillId: string, verified: boolean): Promise<void> {
166
+ const skill = this.index.get(skillId);
167
+ if (!skill) throw new Error('Skill not found: ' + skillId);
168
+ skill.verified = verified;
169
+ skill.updatedAt = new Date().toISOString();
170
+ if (this.engineDb) await this.engineDb.upsertCommunitySkill(skill);
171
+ }
172
+
173
+ async setFeatured(skillId: string, featured: boolean): Promise<void> {
174
+ const skill = this.index.get(skillId);
175
+ if (!skill) throw new Error('Skill not found: ' + skillId);
176
+ skill.featured = featured;
177
+ skill.updatedAt = new Date().toISOString();
178
+ if (this.engineDb) await this.engineDb.upsertCommunitySkill(skill);
179
+ }
180
+
181
+ // ── Install / Uninstall ───────────────────────────────
182
+
183
+ async install(orgId: string, skillId: string, installedBy: string, config?: Record<string, any>): Promise<InstalledCommunitySkill> {
184
+ const skill = this.index.get(skillId);
185
+ if (!skill) throw new Error('Skill not found: ' + skillId);
186
+
187
+ const id = `${orgId}:${skillId}`;
188
+ const inst: InstalledCommunitySkill = {
189
+ id,
190
+ orgId,
191
+ skillId,
192
+ version: skill.version,
193
+ enabled: true,
194
+ config: config || {},
195
+ installedBy,
196
+ installedAt: new Date().toISOString(),
197
+ updatedAt: new Date().toISOString(),
198
+ };
199
+
200
+ this.installed.set(id, inst);
201
+ if (this.engineDb) {
202
+ await this.engineDb.upsertInstalledSkill(inst);
203
+ await this.engineDb.incrementDownloads(skillId);
204
+ }
205
+ skill.downloads = (skill.downloads || 0) + 1;
206
+
207
+ // Register skill tools with PermissionEngine
208
+ this.registerWithPermissions(skill);
209
+
210
+ return inst;
211
+ }
212
+
213
+ async uninstall(orgId: string, skillId: string): Promise<void> {
214
+ const id = `${orgId}:${skillId}`;
215
+ this.installed.delete(id);
216
+ if (this.engineDb) await this.engineDb.deleteInstalledSkill(orgId, skillId);
217
+ }
218
+
219
+ async enable(orgId: string, skillId: string): Promise<void> {
220
+ const id = `${orgId}:${skillId}`;
221
+ const inst = this.installed.get(id);
222
+ if (!inst) throw new Error('Skill not installed');
223
+ inst.enabled = true;
224
+ inst.updatedAt = new Date().toISOString();
225
+ if (this.engineDb) await this.engineDb.upsertInstalledSkill(inst);
226
+
227
+ const skill = this.index.get(skillId);
228
+ if (skill) this.registerWithPermissions(skill);
229
+ }
230
+
231
+ async disable(orgId: string, skillId: string): Promise<void> {
232
+ const id = `${orgId}:${skillId}`;
233
+ const inst = this.installed.get(id);
234
+ if (!inst) throw new Error('Skill not installed');
235
+ inst.enabled = false;
236
+ inst.updatedAt = new Date().toISOString();
237
+ if (this.engineDb) await this.engineDb.upsertInstalledSkill(inst);
238
+ }
239
+
240
+ async updateConfig(orgId: string, skillId: string, config: Record<string, any>): Promise<void> {
241
+ const id = `${orgId}:${skillId}`;
242
+ const inst = this.installed.get(id);
243
+ if (!inst) throw new Error('Skill not installed');
244
+ inst.config = { ...inst.config, ...config };
245
+ inst.updatedAt = new Date().toISOString();
246
+ if (this.engineDb) await this.engineDb.upsertInstalledSkill(inst);
247
+ }
248
+
249
+ async upgrade(orgId: string, skillId: string): Promise<InstalledCommunitySkill> {
250
+ const id = `${orgId}:${skillId}`;
251
+ const inst = this.installed.get(id);
252
+ if (!inst) throw new Error('Skill not installed');
253
+
254
+ const skill = this.index.get(skillId);
255
+ if (!skill) throw new Error('Skill not found in index');
256
+
257
+ inst.version = skill.version;
258
+ inst.updatedAt = new Date().toISOString();
259
+ if (this.engineDb) await this.engineDb.upsertInstalledSkill(inst);
260
+ return inst;
261
+ }
262
+
263
+ // ── Queries ───────────────────────────────────────────
264
+
265
+ async search(opts?: {
266
+ query?: string; category?: string; risk?: string; tag?: string;
267
+ verified?: boolean; featured?: boolean;
268
+ sortBy?: string; order?: string;
269
+ limit?: number; offset?: number;
270
+ }): Promise<{ skills: IndexedCommunitySkill[]; total: number }> {
271
+ if (this.engineDb) {
272
+ return this.engineDb.getAllCommunitySkills({
273
+ search: opts?.query,
274
+ category: opts?.category,
275
+ risk: opts?.risk,
276
+ tag: opts?.tag,
277
+ verified: opts?.verified,
278
+ featured: opts?.featured,
279
+ sortBy: opts?.sortBy,
280
+ order: opts?.order,
281
+ limit: opts?.limit || 50,
282
+ offset: opts?.offset || 0,
283
+ });
284
+ }
285
+
286
+ // Fallback to in-memory
287
+ let results = Array.from(this.index.values());
288
+ if (opts?.query) {
289
+ const q = opts.query.toLowerCase();
290
+ results = results.filter(s => s.name.toLowerCase().includes(q) || s.description.toLowerCase().includes(q));
291
+ }
292
+ if (opts?.category) results = results.filter(s => s.category === opts.category);
293
+ if (opts?.risk) results = results.filter(s => s.risk === opts.risk);
294
+ if (opts?.verified !== undefined) results = results.filter(s => s.verified === opts.verified);
295
+ if (opts?.featured !== undefined) results = results.filter(s => s.featured === opts.featured);
296
+
297
+ const total = results.length;
298
+ const offset = opts?.offset || 0;
299
+ const limit = opts?.limit || 50;
300
+ return { skills: results.slice(offset, offset + limit), total };
301
+ }
302
+
303
+ getIndex(): IndexedCommunitySkill[] {
304
+ return Array.from(this.index.values());
305
+ }
306
+
307
+ getSkill(skillId: string): IndexedCommunitySkill | undefined {
308
+ return this.index.get(skillId);
309
+ }
310
+
311
+ async getFeatured(): Promise<IndexedCommunitySkill[]> {
312
+ if (this.engineDb) {
313
+ const { skills } = await this.engineDb.getAllCommunitySkills({ featured: true, limit: 20 });
314
+ return skills;
315
+ }
316
+ return Array.from(this.index.values()).filter(s => s.featured);
317
+ }
318
+
319
+ async getPopular(limit: number = 10): Promise<IndexedCommunitySkill[]> {
320
+ if (this.engineDb) {
321
+ const { skills } = await this.engineDb.getAllCommunitySkills({ sortBy: 'popular', limit });
322
+ return skills;
323
+ }
324
+ return Array.from(this.index.values())
325
+ .sort((a, b) => b.downloads - a.downloads)
326
+ .slice(0, limit);
327
+ }
328
+
329
+ getCategories(): readonly string[] {
330
+ return VALID_CATEGORIES;
331
+ }
332
+
333
+ async getInstalled(orgId: string): Promise<InstalledCommunitySkill[]> {
334
+ if (this.engineDb) {
335
+ return this.engineDb.getInstalledSkillsByOrg(orgId);
336
+ }
337
+ return Array.from(this.installed.values()).filter(s => s.orgId === orgId);
338
+ }
339
+
340
+ async getInstalledWithDetails(orgId: string): Promise<Array<InstalledCommunitySkill & { skill?: IndexedCommunitySkill }>> {
341
+ const installs = await this.getInstalled(orgId);
342
+ return installs.map(inst => ({
343
+ ...inst,
344
+ skill: this.index.get(inst.skillId),
345
+ }));
346
+ }
347
+
348
+ // ── Reviews ───────────────────────────────────────────
349
+
350
+ async submitReview(review: { skillId: string; userId: string; userName?: string; rating: number; reviewText?: string }): Promise<CommunitySkillReview> {
351
+ if (review.rating < 1 || review.rating > 5) throw new Error('Rating must be 1-5');
352
+
353
+ const entry: CommunitySkillReview = {
354
+ id: uid(),
355
+ skillId: review.skillId,
356
+ userId: review.userId,
357
+ userName: review.userName,
358
+ rating: review.rating,
359
+ reviewText: review.reviewText,
360
+ createdAt: new Date().toISOString(),
361
+ };
362
+
363
+ if (this.engineDb) {
364
+ await this.engineDb.insertReview(entry);
365
+ // Update aggregate rating on the skill
366
+ const { avg, count } = await this.engineDb.getAverageRating(review.skillId);
367
+ const skill = this.index.get(review.skillId);
368
+ if (skill) {
369
+ skill.rating = Math.round(avg * 10) / 10;
370
+ skill.ratingCount = count;
371
+ await this.engineDb.upsertCommunitySkill(skill);
372
+ }
373
+ }
374
+
375
+ return entry;
376
+ }
377
+
378
+ async getReviews(skillId: string, limit: number = 50): Promise<CommunitySkillReview[]> {
379
+ if (this.engineDb) return this.engineDb.getReviews(skillId, limit);
380
+ return [];
381
+ }
382
+
383
+ // ── Validation ────────────────────────────────────────
384
+
385
+ validateManifest(manifest: Partial<CommunitySkillManifest>): ManifestValidationResult {
386
+ return validateSkillManifest(manifest);
387
+ }
388
+
389
+ // ── Load from Directory (git-repo-as-marketplace) ────
390
+
391
+ async loadFromDirectory(dirPath: string): Promise<{
392
+ loaded: number;
393
+ errors: Array<{ skillId: string; errors: string[] }>;
394
+ }> {
395
+ const fs = await import('fs/promises');
396
+ const path = await import('path');
397
+
398
+ let entries: import('fs').Dirent[];
399
+ try {
400
+ entries = await fs.readdir(dirPath, { withFileTypes: true });
401
+ } catch {
402
+ return { loaded: 0, errors: [] };
403
+ }
404
+
405
+ let loaded = 0;
406
+ const loadErrors: Array<{ skillId: string; errors: string[] }> = [];
407
+
408
+ for (const entry of entries) {
409
+ if (!entry.isDirectory() || entry.name.startsWith('_') || entry.name.startsWith('.')) continue;
410
+
411
+ const manifestPath = path.join(dirPath, entry.name, 'agenticmail-skill.json');
412
+ try {
413
+ const raw = await fs.readFile(manifestPath, 'utf-8');
414
+ const manifest = JSON.parse(raw) as CommunitySkillManifest;
415
+
416
+ const validation = validateSkillManifest(manifest);
417
+ if (!validation.valid) {
418
+ loadErrors.push({ skillId: entry.name, errors: validation.errors });
419
+ continue;
420
+ }
421
+
422
+ await this.publish(manifest);
423
+ loaded++;
424
+ } catch (err: any) {
425
+ if (err.code !== 'ENOENT') {
426
+ loadErrors.push({ skillId: entry.name, errors: [err.message] });
427
+ }
428
+ }
429
+ }
430
+
431
+ return { loaded, errors: loadErrors };
432
+ }
433
+
434
+ // ── GitHub Import ─────────────────────────────────────
435
+
436
+ async importFromGitHub(repoUrl: string): Promise<IndexedCommunitySkill> {
437
+ // Parse GitHub URL: https://github.com/user/repo or user/repo
438
+ const match = repoUrl.match(/(?:github\.com\/)?([^/]+\/[^/]+)/);
439
+ if (!match) throw new Error('Invalid GitHub URL or slug');
440
+
441
+ const slug = match[1].replace(/\.git$/, '');
442
+ const rawUrl = `https://raw.githubusercontent.com/${slug}/main/agenticmail-skill.json`;
443
+
444
+ let manifest: CommunitySkillManifest;
445
+ try {
446
+ const res = await fetch(rawUrl);
447
+ if (!res.ok) {
448
+ // Try master branch
449
+ const res2 = await fetch(rawUrl.replace('/main/', '/master/'));
450
+ if (!res2.ok) throw new Error(`Could not fetch manifest from ${slug} (tried main and master branches)`);
451
+ manifest = await res2.json() as CommunitySkillManifest;
452
+ } else {
453
+ manifest = await res.json() as CommunitySkillManifest;
454
+ }
455
+ } catch (err: any) {
456
+ throw new Error(`Failed to fetch manifest: ${err.message}`);
457
+ }
458
+
459
+ // Ensure repository is set
460
+ manifest.repository = manifest.repository || `https://github.com/${slug}`;
461
+
462
+ return this.publish(manifest);
463
+ }
464
+
465
+ // ── Remote Registry Sync ─────────────────────────────
466
+
467
+ /**
468
+ * Sync skills from the central GitHub repo (agenticmail/enterprise).
469
+ * Fetches community-skills/index.json which lists all available skills,
470
+ * then fetches each skill's manifest and publishes it locally.
471
+ *
472
+ * This is how deployed instances get new community skills without
473
+ * needing an npm update or server restart.
474
+ */
475
+ async syncFromRemote(): Promise<{
476
+ synced: number;
477
+ errors: Array<{ skillId: string; error: string }>;
478
+ }> {
479
+ const baseUrl = `https://raw.githubusercontent.com/${this.registryRepo}/${this.registryBranch}`;
480
+ const indexUrl = `${baseUrl}/community-skills/index.json`;
481
+
482
+ let skillIds: string[];
483
+ try {
484
+ const res = await fetch(indexUrl, { signal: AbortSignal.timeout(10000) });
485
+ if (!res.ok) throw new Error(`HTTP ${res.status}`);
486
+ const data = await res.json() as { skills: Array<{ id: string; version: string }> };
487
+ skillIds = (data.skills || []).map((s: any) => s.id);
488
+ } catch (err: any) {
489
+ // If no index.json exists yet, nothing to sync
490
+ return { synced: 0, errors: [{ skillId: '_index', error: `Cannot fetch index: ${err.message}` }] };
491
+ }
492
+
493
+ let synced = 0;
494
+ const errors: Array<{ skillId: string; error: string }> = [];
495
+
496
+ for (const skillId of skillIds) {
497
+ try {
498
+ // Check if we already have this skill at the same or newer version
499
+ const existing = this.index.get(skillId);
500
+ const manifestUrl = `${baseUrl}/community-skills/${skillId}/agenticmail-skill.json`;
501
+
502
+ const res = await fetch(manifestUrl, { signal: AbortSignal.timeout(10000) });
503
+ if (!res.ok) {
504
+ errors.push({ skillId, error: `HTTP ${res.status}` });
505
+ continue;
506
+ }
507
+
508
+ const manifest = await res.json() as CommunitySkillManifest;
509
+
510
+ // Skip if we already have the same version
511
+ if (existing && existing.version === manifest.version) continue;
512
+
513
+ const validation = validateSkillManifest(manifest);
514
+ if (!validation.valid) {
515
+ errors.push({ skillId, error: validation.errors.join('; ') });
516
+ continue;
517
+ }
518
+
519
+ await this.publish(manifest);
520
+ synced++;
521
+ } catch (err: any) {
522
+ errors.push({ skillId, error: err.message });
523
+ }
524
+ }
525
+
526
+ this.lastSyncAt = new Date().toISOString();
527
+ return { synced, errors };
528
+ }
529
+
530
+ /**
531
+ * Start periodic background sync from the remote registry.
532
+ * Default: every 6 hours.
533
+ */
534
+ startPeriodicSync(intervalMs: number = DEFAULT_SYNC_INTERVAL_MS): void {
535
+ this.stopPeriodicSync();
536
+ // Do an initial sync after a short delay (let the server finish booting)
537
+ setTimeout(() => {
538
+ this.syncFromRemote().then(({ synced, errors }) => {
539
+ if (synced > 0) console.log(`[community] Remote sync: ${synced} new skills`);
540
+ if (errors.length > 0 && errors[0]?.skillId !== '_index') {
541
+ console.warn(`[community] Remote sync: ${errors.length} errors`);
542
+ }
543
+ }).catch(() => {});
544
+ }, 15000);
545
+
546
+ this.syncTimer = setInterval(() => {
547
+ this.syncFromRemote().then(({ synced }) => {
548
+ if (synced > 0) console.log(`[community] Periodic sync: ${synced} new skills`);
549
+ }).catch(() => {});
550
+ }, intervalMs);
551
+
552
+ // Don't block process exit
553
+ if (this.syncTimer && typeof this.syncTimer === 'object' && 'unref' in this.syncTimer) {
554
+ this.syncTimer.unref();
555
+ }
556
+ }
557
+
558
+ stopPeriodicSync(): void {
559
+ if (this.syncTimer) {
560
+ clearInterval(this.syncTimer);
561
+ this.syncTimer = undefined;
562
+ }
563
+ }
564
+
565
+ getLastSyncAt(): string | undefined {
566
+ return this.lastSyncAt;
567
+ }
568
+
569
+ // ── Stats ─────────────────────────────────────────────
570
+
571
+ getStats(): { totalSkills: number; verified: number; featured: number; categories: number; totalDownloads: number; lastSyncAt?: string; registryRepo: string } {
572
+ const all = Array.from(this.index.values());
573
+ const categories = new Set(all.map(s => s.category).filter(Boolean));
574
+ return {
575
+ totalSkills: all.length,
576
+ verified: all.filter(s => s.verified).length,
577
+ featured: all.filter(s => s.featured).length,
578
+ categories: categories.size,
579
+ totalDownloads: all.reduce((sum, s) => sum + (s.downloads || 0), 0),
580
+ lastSyncAt: this.lastSyncAt,
581
+ registryRepo: this.registryRepo,
582
+ };
583
+ }
584
+
585
+ // ── Permission Engine Integration ─────────────────────
586
+
587
+ private registerWithPermissions(skill: IndexedCommunitySkill): void {
588
+ const def: SkillDefinition = {
589
+ id: `community:${skill.id}`,
590
+ name: skill.name,
591
+ description: skill.description,
592
+ category: (skill.category || 'custom') as any,
593
+ risk: (skill.risk || 'medium') as any,
594
+ tools: skill.tools.map(t => ({
595
+ id: t.id,
596
+ name: t.name,
597
+ description: t.description,
598
+ category: (skill.category || 'custom') as any,
599
+ risk: (t.riskLevel || skill.risk || 'medium') as any,
600
+ skillId: `community:${skill.id}`,
601
+ parameters: t.parameters || {},
602
+ sideEffects: [],
603
+ })),
604
+ configSchema: {},
605
+ };
606
+ this.permissions.registerSkill(def);
607
+ }
608
+
609
+ // ── Seed Data ─────────────────────────────────────────
610
+
611
+ private async seedIndex(): Promise<void> {
612
+ const seeds: CommunitySkillManifest[] = [
613
+ {
614
+ id: 'github-issues',
615
+ name: 'GitHub Issues Manager',
616
+ description: 'Create, update, close, and triage GitHub issues. Supports labels, milestones, and assignees.',
617
+ version: '1.2.0',
618
+ author: 'agenticmail',
619
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/github-issues',
620
+ license: 'MIT',
621
+ category: 'development',
622
+ risk: 'medium',
623
+ icon: 'https://cdn.simpleicons.org/github/white',
624
+ tags: ['github', 'issues', 'project-management'],
625
+ tools: [
626
+ { id: 'github_create_issue', name: 'Create Issue', description: 'Create a new GitHub issue' },
627
+ { id: 'github_update_issue', name: 'Update Issue', description: 'Update an existing issue' },
628
+ { id: 'github_close_issue', name: 'Close Issue', description: 'Close a GitHub issue' },
629
+ { id: 'github_list_issues', name: 'List Issues', description: 'List issues with filters' },
630
+ ],
631
+ },
632
+ {
633
+ id: 'slack-notifications',
634
+ name: 'Slack Notifications',
635
+ description: 'Send messages, create channels, and manage notifications in Slack workspaces.',
636
+ version: '2.0.1',
637
+ author: 'agenticmail',
638
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/slack',
639
+ license: 'MIT',
640
+ category: 'communication',
641
+ risk: 'medium',
642
+ icon: "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ccircle cx='16' cy='16' r='16' fill='%234A154B'/%3E%3Ctext x='16' y='22' text-anchor='middle' fill='white' font-family='system-ui,sans-serif' font-weight='700' font-size='16'%3ES%3C/text%3E%3C/svg%3E",
643
+ tags: ['slack', 'notifications', 'messaging'],
644
+ tools: [
645
+ { id: 'slack_send_message', name: 'Send Message', description: 'Send a message to a Slack channel' },
646
+ { id: 'slack_create_channel', name: 'Create Channel', description: 'Create a new Slack channel' },
647
+ { id: 'slack_list_channels', name: 'List Channels', description: 'List available channels' },
648
+ ],
649
+ },
650
+ {
651
+ id: 'jira-integration',
652
+ name: 'Jira Integration',
653
+ description: 'Full Jira integration for creating tickets, managing sprints, and tracking progress.',
654
+ version: '1.5.0',
655
+ author: 'agenticmail',
656
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/jira',
657
+ license: 'MIT',
658
+ category: 'productivity',
659
+ risk: 'medium',
660
+ icon: 'https://cdn.simpleicons.org/jira/0052CC',
661
+ tags: ['jira', 'project-management', 'agile'],
662
+ tools: [
663
+ { id: 'jira_create_ticket', name: 'Create Ticket', description: 'Create a Jira ticket' },
664
+ { id: 'jira_update_ticket', name: 'Update Ticket', description: 'Update an existing ticket' },
665
+ { id: 'jira_transition', name: 'Transition Issue', description: 'Move issue to new status' },
666
+ { id: 'jira_search', name: 'Search Issues', description: 'Search Jira issues with JQL' },
667
+ ],
668
+ },
669
+ {
670
+ id: 'stripe-billing',
671
+ name: 'Stripe Billing',
672
+ description: 'Manage Stripe customers, subscriptions, invoices, and payment methods.',
673
+ version: '1.0.0',
674
+ author: 'community',
675
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/stripe',
676
+ license: 'MIT',
677
+ category: 'finance',
678
+ risk: 'high',
679
+ icon: 'https://cdn.simpleicons.org/stripe/635BFF',
680
+ tags: ['stripe', 'billing', 'payments'],
681
+ tools: [
682
+ { id: 'stripe_create_customer', name: 'Create Customer', description: 'Create a Stripe customer' },
683
+ { id: 'stripe_create_invoice', name: 'Create Invoice', description: 'Generate an invoice' },
684
+ { id: 'stripe_list_subscriptions', name: 'List Subscriptions', description: 'List active subscriptions' },
685
+ ],
686
+ },
687
+ {
688
+ id: 'notion-sync',
689
+ name: 'Notion Sync',
690
+ description: 'Read, create, and update Notion pages and databases. Supports rich content blocks.',
691
+ version: '1.1.0',
692
+ author: 'community',
693
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/notion',
694
+ license: 'Apache-2.0',
695
+ category: 'productivity',
696
+ risk: 'low',
697
+ icon: 'https://cdn.simpleicons.org/notion/white',
698
+ tags: ['notion', 'wiki', 'documentation'],
699
+ tools: [
700
+ { id: 'notion_read_page', name: 'Read Page', description: 'Read a Notion page' },
701
+ { id: 'notion_create_page', name: 'Create Page', description: 'Create a new page' },
702
+ { id: 'notion_update_page', name: 'Update Page', description: 'Update page content' },
703
+ { id: 'notion_query_database', name: 'Query Database', description: 'Query a Notion database' },
704
+ ],
705
+ },
706
+ {
707
+ id: 'salesforce-crm',
708
+ name: 'Salesforce CRM',
709
+ description: 'Manage Salesforce records, opportunities, contacts, and run SOQL queries.',
710
+ version: '1.3.0',
711
+ author: 'community',
712
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/salesforce',
713
+ license: 'MIT',
714
+ category: 'sales',
715
+ risk: 'high',
716
+ icon: "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ccircle cx='16' cy='16' r='16' fill='%2300A1E0'/%3E%3Ctext x='16' y='21' text-anchor='middle' fill='white' font-family='system-ui,sans-serif' font-weight='700' font-size='12'%3ESF%3C/text%3E%3C/svg%3E",
717
+ tags: ['salesforce', 'crm', 'sales'],
718
+ tools: [
719
+ { id: 'sf_create_record', name: 'Create Record', description: 'Create a Salesforce record' },
720
+ { id: 'sf_update_record', name: 'Update Record', description: 'Update a Salesforce record' },
721
+ { id: 'sf_query', name: 'SOQL Query', description: 'Run a SOQL query' },
722
+ { id: 'sf_list_opportunities', name: 'List Opportunities', description: 'List open opportunities' },
723
+ ],
724
+ },
725
+
726
+ // ── Communication ─────────────────────────────────────
727
+ {
728
+ id: 'microsoft-teams',
729
+ name: 'Microsoft Teams',
730
+ description: 'Send messages, manage channels, and schedule meetings in Microsoft Teams.',
731
+ version: '1.1.0',
732
+ author: 'agenticmail',
733
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/microsoft-teams',
734
+ license: 'MIT',
735
+ category: 'communication',
736
+ risk: 'medium',
737
+ icon: "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ccircle cx='16' cy='16' r='16' fill='%236264A7'/%3E%3Ctext x='16' y='22' text-anchor='middle' fill='white' font-family='system-ui,sans-serif' font-weight='700' font-size='16'%3ET%3C/text%3E%3C/svg%3E",
738
+ tags: ['teams', 'microsoft', 'messaging', 'meetings'],
739
+ tools: [
740
+ { id: 'teams_send_message', name: 'Send Message', description: 'Send a message to a Teams channel or chat' },
741
+ { id: 'teams_create_channel', name: 'Create Channel', description: 'Create a new channel in a team' },
742
+ { id: 'teams_schedule_meeting', name: 'Schedule Meeting', description: 'Schedule a Teams meeting with attendees' },
743
+ { id: 'teams_list_channels', name: 'List Channels', description: 'List channels in a team' },
744
+ ],
745
+ },
746
+ {
747
+ id: 'discord-bot',
748
+ name: 'Discord Bot',
749
+ description: 'Send messages, manage servers, and moderate channels in Discord.',
750
+ version: '1.0.0',
751
+ author: 'community',
752
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/discord',
753
+ license: 'MIT',
754
+ category: 'communication',
755
+ risk: 'medium',
756
+ icon: 'https://cdn.simpleicons.org/discord/5865F2',
757
+ tags: ['discord', 'chat', 'community', 'moderation'],
758
+ tools: [
759
+ { id: 'discord_send_message', name: 'Send Message', description: 'Send a message to a Discord channel' },
760
+ { id: 'discord_create_channel', name: 'Create Channel', description: 'Create a new channel in a server' },
761
+ { id: 'discord_manage_roles', name: 'Manage Roles', description: 'Assign or remove roles from members' },
762
+ ],
763
+ },
764
+ {
765
+ id: 'zoom-meetings',
766
+ name: 'Zoom Meetings',
767
+ description: 'Create, update, and manage Zoom meetings and webinars. Retrieve recordings and participant lists.',
768
+ version: '1.2.0',
769
+ author: 'agenticmail',
770
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/zoom',
771
+ license: 'MIT',
772
+ category: 'communication',
773
+ risk: 'low',
774
+ icon: 'https://cdn.simpleicons.org/zoom/0B5CFF',
775
+ tags: ['zoom', 'meetings', 'video', 'webinar'],
776
+ tools: [
777
+ { id: 'zoom_create_meeting', name: 'Create Meeting', description: 'Create a new Zoom meeting' },
778
+ { id: 'zoom_list_meetings', name: 'List Meetings', description: 'List upcoming meetings' },
779
+ { id: 'zoom_get_recording', name: 'Get Recording', description: 'Retrieve a meeting recording' },
780
+ { id: 'zoom_list_participants', name: 'List Participants', description: 'List participants of a meeting' },
781
+ ],
782
+ },
783
+ {
784
+ id: 'twilio-sms',
785
+ name: 'Twilio SMS & Voice',
786
+ description: 'Send SMS messages, make voice calls, and manage phone numbers with Twilio.',
787
+ version: '1.0.0',
788
+ author: 'agenticmail',
789
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/twilio',
790
+ license: 'MIT',
791
+ category: 'communication',
792
+ risk: 'high',
793
+ icon: "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ccircle cx='16' cy='16' r='16' fill='%23F22F46'/%3E%3Ctext x='16' y='22' text-anchor='middle' fill='white' font-family='system-ui,sans-serif' font-weight='700' font-size='16'%3ET%3C/text%3E%3C/svg%3E",
794
+ tags: ['twilio', 'sms', 'voice', 'phone'],
795
+ tools: [
796
+ { id: 'twilio_send_sms', name: 'Send SMS', description: 'Send an SMS message to a phone number' },
797
+ { id: 'twilio_make_call', name: 'Make Call', description: 'Initiate an outbound voice call' },
798
+ { id: 'twilio_list_messages', name: 'List Messages', description: 'List recent SMS messages' },
799
+ ],
800
+ },
801
+ {
802
+ id: 'sendgrid-email',
803
+ name: 'SendGrid Email',
804
+ description: 'Send transactional and marketing emails via SendGrid. Manage contacts and templates.',
805
+ version: '1.1.0',
806
+ author: 'community',
807
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/sendgrid',
808
+ license: 'MIT',
809
+ category: 'communication',
810
+ risk: 'medium',
811
+ icon: "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ccircle cx='16' cy='16' r='16' fill='%231A82E2'/%3E%3Ctext x='16' y='21' text-anchor='middle' fill='white' font-family='system-ui,sans-serif' font-weight='700' font-size='12'%3ESG%3C/text%3E%3C/svg%3E",
812
+ tags: ['sendgrid', 'email', 'transactional', 'marketing'],
813
+ tools: [
814
+ { id: 'sendgrid_send_email', name: 'Send Email', description: 'Send an email via SendGrid' },
815
+ { id: 'sendgrid_create_template', name: 'Create Template', description: 'Create a dynamic email template' },
816
+ { id: 'sendgrid_add_contact', name: 'Add Contact', description: 'Add a contact to a mailing list' },
817
+ { id: 'sendgrid_get_stats', name: 'Get Stats', description: 'Retrieve email delivery statistics' },
818
+ ],
819
+ },
820
+
821
+ // ── Development ───────────────────────────────────────
822
+ {
823
+ id: 'gitlab-ci',
824
+ name: 'GitLab CI/CD',
825
+ description: 'Manage GitLab merge requests, pipelines, and issues. Trigger CI/CD jobs and view logs.',
826
+ version: '1.3.0',
827
+ author: 'agenticmail',
828
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/gitlab',
829
+ license: 'MIT',
830
+ category: 'development',
831
+ risk: 'medium',
832
+ icon: 'https://cdn.simpleicons.org/gitlab/FC6D26',
833
+ tags: ['gitlab', 'ci-cd', 'merge-requests', 'pipelines'],
834
+ tools: [
835
+ { id: 'gitlab_create_mr', name: 'Create Merge Request', description: 'Create a new merge request' },
836
+ { id: 'gitlab_trigger_pipeline', name: 'Trigger Pipeline', description: 'Trigger a CI/CD pipeline' },
837
+ { id: 'gitlab_list_issues', name: 'List Issues', description: 'List project issues with filters' },
838
+ { id: 'gitlab_get_pipeline_status', name: 'Pipeline Status', description: 'Get status of a pipeline run' },
839
+ ],
840
+ },
841
+ {
842
+ id: 'bitbucket-repos',
843
+ name: 'Bitbucket Repos',
844
+ description: 'Manage Bitbucket repositories, pull requests, and branch permissions.',
845
+ version: '1.0.0',
846
+ author: 'community',
847
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/bitbucket',
848
+ license: 'Apache-2.0',
849
+ category: 'development',
850
+ risk: 'medium',
851
+ icon: 'https://cdn.simpleicons.org/bitbucket/0052CC',
852
+ tags: ['bitbucket', 'git', 'pull-requests', 'code-review'],
853
+ tools: [
854
+ { id: 'bitbucket_create_pr', name: 'Create Pull Request', description: 'Create a new pull request' },
855
+ { id: 'bitbucket_list_repos', name: 'List Repositories', description: 'List repositories in a workspace' },
856
+ { id: 'bitbucket_merge_pr', name: 'Merge Pull Request', description: 'Merge an approved pull request' },
857
+ ],
858
+ },
859
+ {
860
+ id: 'linear-tracker',
861
+ name: 'Linear Issue Tracker',
862
+ description: 'Create and manage Linear issues, projects, and cycles. Streamline engineering workflows.',
863
+ version: '1.1.0',
864
+ author: 'agenticmail',
865
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/linear',
866
+ license: 'MIT',
867
+ category: 'development',
868
+ risk: 'low',
869
+ icon: 'https://cdn.simpleicons.org/linear/5E6AD2',
870
+ tags: ['linear', 'issues', 'project-management', 'engineering'],
871
+ tools: [
872
+ { id: 'linear_create_issue', name: 'Create Issue', description: 'Create a new Linear issue' },
873
+ { id: 'linear_update_issue', name: 'Update Issue', description: 'Update issue status, assignee, or priority' },
874
+ { id: 'linear_list_projects', name: 'List Projects', description: 'List all projects in a team' },
875
+ { id: 'linear_search_issues', name: 'Search Issues', description: 'Search issues with filters' },
876
+ ],
877
+ },
878
+ {
879
+ id: 'circleci-pipelines',
880
+ name: 'CircleCI Pipelines',
881
+ description: 'Trigger builds, view pipeline status, and manage CircleCI workflows.',
882
+ version: '1.0.0',
883
+ author: 'community',
884
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/circleci',
885
+ license: 'MIT',
886
+ category: 'development',
887
+ risk: 'medium',
888
+ icon: 'https://cdn.simpleicons.org/circleci/343434',
889
+ tags: ['circleci', 'ci-cd', 'builds', 'automation'],
890
+ tools: [
891
+ { id: 'circleci_trigger_pipeline', name: 'Trigger Pipeline', description: 'Trigger a new pipeline run' },
892
+ { id: 'circleci_get_status', name: 'Get Pipeline Status', description: 'Check status of a pipeline' },
893
+ { id: 'circleci_list_artifacts', name: 'List Artifacts', description: 'List build artifacts' },
894
+ ],
895
+ },
896
+ {
897
+ id: 'vercel-deployments',
898
+ name: 'Vercel Deployments',
899
+ description: 'Deploy projects, manage domains, and monitor deployments on Vercel.',
900
+ version: '1.2.0',
901
+ author: 'agenticmail',
902
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/vercel',
903
+ license: 'MIT',
904
+ category: 'development',
905
+ risk: 'high',
906
+ icon: 'https://cdn.simpleicons.org/vercel/white',
907
+ tags: ['vercel', 'deployments', 'hosting', 'serverless'],
908
+ tools: [
909
+ { id: 'vercel_create_deployment', name: 'Create Deployment', description: 'Deploy a project to Vercel' },
910
+ { id: 'vercel_list_deployments', name: 'List Deployments', description: 'List recent deployments' },
911
+ { id: 'vercel_manage_domains', name: 'Manage Domains', description: 'Add or remove custom domains' },
912
+ { id: 'vercel_get_logs', name: 'Get Logs', description: 'Retrieve deployment and function logs' },
913
+ ],
914
+ },
915
+ {
916
+ id: 'github-actions',
917
+ name: 'GitHub Actions',
918
+ description: 'Trigger workflows, view run status, and manage GitHub Actions across repositories.',
919
+ version: '1.0.0',
920
+ author: 'agenticmail',
921
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/github-actions',
922
+ license: 'MIT',
923
+ category: 'development',
924
+ risk: 'medium',
925
+ icon: 'https://cdn.simpleicons.org/githubactions/2088FF',
926
+ tags: ['github', 'actions', 'ci-cd', 'workflows'],
927
+ tools: [
928
+ { id: 'gha_trigger_workflow', name: 'Trigger Workflow', description: 'Trigger a GitHub Actions workflow' },
929
+ { id: 'gha_list_runs', name: 'List Runs', description: 'List recent workflow runs' },
930
+ { id: 'gha_get_run_status', name: 'Get Run Status', description: 'Get status of a specific run' },
931
+ { id: 'gha_download_artifacts', name: 'Download Artifacts', description: 'Download artifacts from a run' },
932
+ ],
933
+ },
934
+
935
+ // ── Productivity ──────────────────────────────────────
936
+ {
937
+ id: 'asana-tasks',
938
+ name: 'Asana Tasks',
939
+ description: 'Create, assign, and track tasks in Asana. Manage projects, sections, and due dates.',
940
+ version: '1.4.0',
941
+ author: 'agenticmail',
942
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/asana',
943
+ license: 'MIT',
944
+ category: 'productivity',
945
+ risk: 'low',
946
+ icon: 'https://cdn.simpleicons.org/asana/F06A6A',
947
+ tags: ['asana', 'tasks', 'project-management', 'collaboration'],
948
+ tools: [
949
+ { id: 'asana_create_task', name: 'Create Task', description: 'Create a new task in a project' },
950
+ { id: 'asana_update_task', name: 'Update Task', description: 'Update task details, assignee, or due date' },
951
+ { id: 'asana_list_tasks', name: 'List Tasks', description: 'List tasks in a project or section' },
952
+ { id: 'asana_complete_task', name: 'Complete Task', description: 'Mark a task as completed' },
953
+ ],
954
+ },
955
+ {
956
+ id: 'monday-boards',
957
+ name: 'Monday.com Boards',
958
+ description: 'Manage boards, items, and columns in Monday.com. Automate status updates and notifications.',
959
+ version: '1.0.0',
960
+ author: 'community',
961
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/monday',
962
+ license: 'MIT',
963
+ category: 'productivity',
964
+ risk: 'low',
965
+ icon: "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ccircle cx='16' cy='16' r='16' fill='%236C5CE7'/%3E%3Ctext x='16' y='22' text-anchor='middle' fill='white' font-family='system-ui,sans-serif' font-weight='700' font-size='16'%3EM%3C/text%3E%3C/svg%3E",
966
+ tags: ['monday', 'boards', 'project-management', 'workflow'],
967
+ tools: [
968
+ { id: 'monday_create_item', name: 'Create Item', description: 'Create a new item on a board' },
969
+ { id: 'monday_update_item', name: 'Update Item', description: 'Update column values of an item' },
970
+ { id: 'monday_list_boards', name: 'List Boards', description: 'List all boards in the workspace' },
971
+ ],
972
+ },
973
+ {
974
+ id: 'trello-cards',
975
+ name: 'Trello Cards',
976
+ description: 'Create and manage Trello cards, lists, and boards. Move cards across lists and add labels.',
977
+ version: '1.2.0',
978
+ author: 'agenticmail',
979
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/trello',
980
+ license: 'MIT',
981
+ category: 'productivity',
982
+ risk: 'low',
983
+ icon: 'https://cdn.simpleicons.org/trello/0052CC',
984
+ tags: ['trello', 'kanban', 'cards', 'project-management'],
985
+ tools: [
986
+ { id: 'trello_create_card', name: 'Create Card', description: 'Create a new card on a list' },
987
+ { id: 'trello_move_card', name: 'Move Card', description: 'Move a card to another list' },
988
+ { id: 'trello_add_label', name: 'Add Label', description: 'Add a label to a card' },
989
+ { id: 'trello_list_boards', name: 'List Boards', description: 'List all boards for a member' },
990
+ ],
991
+ },
992
+ {
993
+ id: 'confluence-wiki',
994
+ name: 'Confluence Wiki',
995
+ description: 'Create, edit, and search Confluence pages and spaces. Manage documentation and knowledge bases.',
996
+ version: '1.1.0',
997
+ author: 'agenticmail',
998
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/confluence',
999
+ license: 'MIT',
1000
+ category: 'productivity',
1001
+ risk: 'low',
1002
+ icon: 'https://cdn.simpleicons.org/confluence/172B4D',
1003
+ tags: ['confluence', 'wiki', 'documentation', 'knowledge-base'],
1004
+ tools: [
1005
+ { id: 'confluence_create_page', name: 'Create Page', description: 'Create a new Confluence page' },
1006
+ { id: 'confluence_update_page', name: 'Update Page', description: 'Update an existing page' },
1007
+ { id: 'confluence_search', name: 'Search Pages', description: 'Search pages using CQL' },
1008
+ { id: 'confluence_list_spaces', name: 'List Spaces', description: 'List all Confluence spaces' },
1009
+ ],
1010
+ },
1011
+ {
1012
+ id: 'airtable-bases',
1013
+ name: 'Airtable Bases',
1014
+ description: 'Read, create, and update records in Airtable bases. Query views and manage field configurations.',
1015
+ version: '1.0.0',
1016
+ author: 'community',
1017
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/airtable',
1018
+ license: 'MIT',
1019
+ category: 'productivity',
1020
+ risk: 'low',
1021
+ icon: 'https://cdn.simpleicons.org/airtable/18BFFF',
1022
+ tags: ['airtable', 'database', 'spreadsheet', 'no-code'],
1023
+ tools: [
1024
+ { id: 'airtable_list_records', name: 'List Records', description: 'List records from a table with optional filters' },
1025
+ { id: 'airtable_create_record', name: 'Create Record', description: 'Create a new record in a table' },
1026
+ { id: 'airtable_update_record', name: 'Update Record', description: 'Update fields on an existing record' },
1027
+ ],
1028
+ },
1029
+ {
1030
+ id: 'todoist-tasks',
1031
+ name: 'Todoist Tasks',
1032
+ description: 'Create, complete, and organize tasks in Todoist. Manage projects, labels, and due dates.',
1033
+ version: '1.0.0',
1034
+ author: 'community',
1035
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/todoist',
1036
+ license: 'MIT',
1037
+ category: 'productivity',
1038
+ risk: 'low',
1039
+ icon: 'https://cdn.simpleicons.org/todoist/E44332',
1040
+ tags: ['todoist', 'tasks', 'to-do', 'personal-productivity'],
1041
+ tools: [
1042
+ { id: 'todoist_create_task', name: 'Create Task', description: 'Create a new task in Todoist' },
1043
+ { id: 'todoist_complete_task', name: 'Complete Task', description: 'Mark a task as completed' },
1044
+ { id: 'todoist_list_tasks', name: 'List Tasks', description: 'List tasks with filters' },
1045
+ { id: 'todoist_list_projects', name: 'List Projects', description: 'List all projects' },
1046
+ ],
1047
+ },
1048
+
1049
+ // ── Analytics & Data ──────────────────────────────────
1050
+ {
1051
+ id: 'google-analytics',
1052
+ name: 'Google Analytics',
1053
+ description: 'Retrieve website analytics data from Google Analytics 4. Query reports, metrics, and dimensions.',
1054
+ version: '1.1.0',
1055
+ author: 'agenticmail',
1056
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/google-analytics',
1057
+ license: 'MIT',
1058
+ category: 'analytics',
1059
+ risk: 'low',
1060
+ icon: 'https://cdn.simpleicons.org/googleanalytics/E37400',
1061
+ tags: ['google', 'analytics', 'web-analytics', 'reporting'],
1062
+ tools: [
1063
+ { id: 'ga_run_report', name: 'Run Report', description: 'Run an analytics report with metrics and dimensions' },
1064
+ { id: 'ga_get_realtime', name: 'Get Realtime Data', description: 'Get real-time active users and events' },
1065
+ { id: 'ga_list_properties', name: 'List Properties', description: 'List all GA4 properties' },
1066
+ ],
1067
+ },
1068
+ {
1069
+ id: 'mixpanel-analytics',
1070
+ name: 'Mixpanel Analytics',
1071
+ description: 'Query Mixpanel events, funnels, and user cohorts. Track product analytics and retention.',
1072
+ version: '1.0.0',
1073
+ author: 'community',
1074
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/mixpanel',
1075
+ license: 'MIT',
1076
+ category: 'analytics',
1077
+ risk: 'low',
1078
+ icon: 'https://cdn.simpleicons.org/mixpanel/7856FF',
1079
+ tags: ['mixpanel', 'analytics', 'product-analytics', 'events'],
1080
+ tools: [
1081
+ { id: 'mixpanel_query_events', name: 'Query Events', description: 'Query event data with filters and breakdowns' },
1082
+ { id: 'mixpanel_get_funnel', name: 'Get Funnel', description: 'Retrieve funnel conversion data' },
1083
+ { id: 'mixpanel_get_retention', name: 'Get Retention', description: 'Get user retention cohort data' },
1084
+ ],
1085
+ },
1086
+ {
1087
+ id: 'segment-cdp',
1088
+ name: 'Segment CDP',
1089
+ description: 'Manage Segment sources, destinations, and tracking plans. Send events and manage user profiles.',
1090
+ version: '1.0.0',
1091
+ author: 'agenticmail',
1092
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/segment',
1093
+ license: 'MIT',
1094
+ category: 'data',
1095
+ risk: 'medium',
1096
+ icon: "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ccircle cx='16' cy='16' r='16' fill='%2352BD94'/%3E%3Ctext x='16' y='22' text-anchor='middle' fill='white' font-family='system-ui,sans-serif' font-weight='700' font-size='16'%3ES%3C/text%3E%3C/svg%3E",
1097
+ tags: ['segment', 'cdp', 'data-pipeline', 'tracking'],
1098
+ tools: [
1099
+ { id: 'segment_track_event', name: 'Track Event', description: 'Send a track event to Segment' },
1100
+ { id: 'segment_identify_user', name: 'Identify User', description: 'Identify a user with traits' },
1101
+ { id: 'segment_list_sources', name: 'List Sources', description: 'List all configured sources' },
1102
+ { id: 'segment_list_destinations', name: 'List Destinations', description: 'List all configured destinations' },
1103
+ ],
1104
+ },
1105
+ {
1106
+ id: 'datadog-monitoring',
1107
+ name: 'Datadog Monitoring',
1108
+ description: 'Query metrics, create monitors, and manage alerts in Datadog. Search logs and APM traces.',
1109
+ version: '1.2.0',
1110
+ author: 'agenticmail',
1111
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/datadog',
1112
+ license: 'MIT',
1113
+ category: 'analytics',
1114
+ risk: 'medium',
1115
+ icon: 'https://cdn.simpleicons.org/datadog/632CA6',
1116
+ tags: ['datadog', 'monitoring', 'observability', 'alerts'],
1117
+ tools: [
1118
+ { id: 'datadog_get_metrics', name: 'Get Metrics', description: 'Query time-series metrics data' },
1119
+ { id: 'datadog_create_monitor', name: 'Create Monitor', description: 'Create a new alerting monitor' },
1120
+ { id: 'datadog_list_alerts', name: 'List Alerts', description: 'List currently triggered alerts' },
1121
+ { id: 'datadog_search_logs', name: 'Search Logs', description: 'Search logs with query filters' },
1122
+ ],
1123
+ },
1124
+ {
1125
+ id: 'snowflake-warehouse',
1126
+ name: 'Snowflake Data Warehouse',
1127
+ description: 'Run SQL queries, manage warehouses, and list databases in Snowflake.',
1128
+ version: '1.0.0',
1129
+ author: 'community',
1130
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/snowflake',
1131
+ license: 'Apache-2.0',
1132
+ category: 'data',
1133
+ risk: 'high',
1134
+ icon: 'https://cdn.simpleicons.org/snowflake/29B5E8',
1135
+ tags: ['snowflake', 'data-warehouse', 'sql', 'analytics'],
1136
+ tools: [
1137
+ { id: 'snowflake_run_query', name: 'Run Query', description: 'Execute a SQL query on Snowflake' },
1138
+ { id: 'snowflake_list_databases', name: 'List Databases', description: 'List available databases and schemas' },
1139
+ { id: 'snowflake_get_query_history', name: 'Query History', description: 'View recent query execution history' },
1140
+ ],
1141
+ },
1142
+
1143
+ // ── Cloud & Infrastructure ────────────────────────────
1144
+ {
1145
+ id: 'aws-services',
1146
+ name: 'AWS Services',
1147
+ description: 'Manage AWS resources including S3 buckets, Lambda functions, and EC2 instances.',
1148
+ version: '1.3.0',
1149
+ author: 'agenticmail',
1150
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/aws',
1151
+ license: 'Apache-2.0',
1152
+ category: 'cloud',
1153
+ risk: 'critical',
1154
+ icon: "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ccircle cx='16' cy='16' r='16' fill='%23FF9900'/%3E%3Ctext x='16' y='22' text-anchor='middle' fill='white' font-family='system-ui,sans-serif' font-weight='700' font-size='16'%3EA%3C/text%3E%3C/svg%3E",
1155
+ tags: ['aws', 'cloud', 's3', 'lambda'],
1156
+ tools: [
1157
+ { id: 'aws_list_s3_buckets', name: 'List S3 Buckets', description: 'List all S3 buckets in the account' },
1158
+ { id: 'aws_invoke_lambda', name: 'Invoke Lambda', description: 'Invoke a Lambda function' },
1159
+ { id: 'aws_list_ec2', name: 'List EC2 Instances', description: 'List running EC2 instances' },
1160
+ { id: 'aws_get_cloudwatch_metrics', name: 'CloudWatch Metrics', description: 'Retrieve CloudWatch metrics' },
1161
+ ],
1162
+ },
1163
+ {
1164
+ id: 'google-cloud',
1165
+ name: 'Google Cloud Platform',
1166
+ description: 'Manage GCP resources including Cloud Storage, Compute Engine, and BigQuery.',
1167
+ version: '1.1.0',
1168
+ author: 'agenticmail',
1169
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/gcp',
1170
+ license: 'Apache-2.0',
1171
+ category: 'cloud',
1172
+ risk: 'critical',
1173
+ icon: 'https://cdn.simpleicons.org/googlecloud/4285F4',
1174
+ tags: ['gcp', 'cloud', 'bigquery', 'compute'],
1175
+ tools: [
1176
+ { id: 'gcp_list_buckets', name: 'List Buckets', description: 'List Cloud Storage buckets' },
1177
+ { id: 'gcp_run_bigquery', name: 'Run BigQuery', description: 'Execute a BigQuery SQL query' },
1178
+ { id: 'gcp_list_instances', name: 'List Instances', description: 'List Compute Engine instances' },
1179
+ ],
1180
+ },
1181
+ {
1182
+ id: 'cloudflare-cdn',
1183
+ name: 'Cloudflare',
1184
+ description: 'Manage Cloudflare DNS records, firewall rules, and Workers. Purge cache and view analytics.',
1185
+ version: '1.0.0',
1186
+ author: 'community',
1187
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/cloudflare',
1188
+ license: 'MIT',
1189
+ category: 'cloud',
1190
+ risk: 'high',
1191
+ icon: 'https://cdn.simpleicons.org/cloudflare/F38020',
1192
+ tags: ['cloudflare', 'cdn', 'dns', 'workers'],
1193
+ tools: [
1194
+ { id: 'cf_list_dns_records', name: 'List DNS Records', description: 'List DNS records for a zone' },
1195
+ { id: 'cf_create_dns_record', name: 'Create DNS Record', description: 'Create a new DNS record' },
1196
+ { id: 'cf_purge_cache', name: 'Purge Cache', description: 'Purge cached content for a zone' },
1197
+ { id: 'cf_list_workers', name: 'List Workers', description: 'List deployed Cloudflare Workers' },
1198
+ ],
1199
+ },
1200
+ {
1201
+ id: 'docker-containers',
1202
+ name: 'Docker Containers',
1203
+ description: 'Manage Docker containers, images, and volumes. Start, stop, and inspect running containers.',
1204
+ version: '1.0.0',
1205
+ author: 'community',
1206
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/docker',
1207
+ license: 'Apache-2.0',
1208
+ category: 'cloud',
1209
+ risk: 'high',
1210
+ icon: 'https://cdn.simpleicons.org/docker/2496ED',
1211
+ tags: ['docker', 'containers', 'devops', 'images'],
1212
+ tools: [
1213
+ { id: 'docker_list_containers', name: 'List Containers', description: 'List running and stopped containers' },
1214
+ { id: 'docker_start_container', name: 'Start Container', description: 'Start a stopped container' },
1215
+ { id: 'docker_stop_container', name: 'Stop Container', description: 'Stop a running container' },
1216
+ { id: 'docker_inspect', name: 'Inspect Container', description: 'Get detailed container information' },
1217
+ ],
1218
+ },
1219
+ {
1220
+ id: 'kubernetes-cluster',
1221
+ name: 'Kubernetes Cluster',
1222
+ description: 'Manage Kubernetes pods, deployments, and services. Scale workloads and view cluster status.',
1223
+ version: '1.1.0',
1224
+ author: 'agenticmail',
1225
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/kubernetes',
1226
+ license: 'Apache-2.0',
1227
+ category: 'cloud',
1228
+ risk: 'critical',
1229
+ icon: 'https://cdn.simpleicons.org/kubernetes/326CE5',
1230
+ tags: ['kubernetes', 'k8s', 'orchestration', 'containers'],
1231
+ tools: [
1232
+ { id: 'k8s_list_pods', name: 'List Pods', description: 'List pods in a namespace' },
1233
+ { id: 'k8s_scale_deployment', name: 'Scale Deployment', description: 'Scale a deployment up or down' },
1234
+ { id: 'k8s_get_logs', name: 'Get Pod Logs', description: 'Retrieve logs from a pod' },
1235
+ { id: 'k8s_list_services', name: 'List Services', description: 'List services in a namespace' },
1236
+ ],
1237
+ },
1238
+ {
1239
+ id: 'terraform-iac',
1240
+ name: 'Terraform IaC',
1241
+ description: 'Plan, apply, and manage Terraform infrastructure. View state and manage workspaces.',
1242
+ version: '1.0.0',
1243
+ author: 'community',
1244
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/terraform',
1245
+ license: 'Apache-2.0',
1246
+ category: 'cloud',
1247
+ risk: 'critical',
1248
+ icon: 'https://cdn.simpleicons.org/terraform/844FBA',
1249
+ tags: ['terraform', 'iac', 'infrastructure', 'devops'],
1250
+ tools: [
1251
+ { id: 'tf_plan', name: 'Terraform Plan', description: 'Generate and show an execution plan' },
1252
+ { id: 'tf_apply', name: 'Terraform Apply', description: 'Apply the planned changes to infrastructure' },
1253
+ { id: 'tf_list_state', name: 'List State', description: 'List resources in the current state' },
1254
+ ],
1255
+ },
1256
+
1257
+ // ── CRM & Sales ───────────────────────────────────────
1258
+ {
1259
+ id: 'hubspot-crm',
1260
+ name: 'HubSpot CRM',
1261
+ description: 'Manage HubSpot contacts, deals, companies, and tickets. Automate sales and marketing workflows.',
1262
+ version: '1.2.0',
1263
+ author: 'agenticmail',
1264
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/hubspot',
1265
+ license: 'MIT',
1266
+ category: 'sales',
1267
+ risk: 'medium',
1268
+ icon: 'https://cdn.simpleicons.org/hubspot/FF7A59',
1269
+ tags: ['hubspot', 'crm', 'sales', 'marketing'],
1270
+ tools: [
1271
+ { id: 'hubspot_create_contact', name: 'Create Contact', description: 'Create a new contact in HubSpot' },
1272
+ { id: 'hubspot_update_deal', name: 'Update Deal', description: 'Update a deal stage or properties' },
1273
+ { id: 'hubspot_list_companies', name: 'List Companies', description: 'List companies with filters' },
1274
+ { id: 'hubspot_search_contacts', name: 'Search Contacts', description: 'Search contacts by name, email, or properties' },
1275
+ ],
1276
+ },
1277
+ {
1278
+ id: 'pipedrive-deals',
1279
+ name: 'Pipedrive Deals',
1280
+ description: 'Manage Pipedrive deals, contacts, and organizations. Track sales pipeline and activities.',
1281
+ version: '1.0.0',
1282
+ author: 'community',
1283
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/pipedrive',
1284
+ license: 'MIT',
1285
+ category: 'sales',
1286
+ risk: 'medium',
1287
+ icon: "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ccircle cx='16' cy='16' r='16' fill='%23017737'/%3E%3Ctext x='16' y='22' text-anchor='middle' fill='white' font-family='system-ui,sans-serif' font-weight='700' font-size='16'%3EP%3C/text%3E%3C/svg%3E",
1288
+ tags: ['pipedrive', 'crm', 'sales', 'pipeline'],
1289
+ tools: [
1290
+ { id: 'pipedrive_create_deal', name: 'Create Deal', description: 'Create a new deal in Pipedrive' },
1291
+ { id: 'pipedrive_update_deal', name: 'Update Deal', description: 'Update deal stage or value' },
1292
+ { id: 'pipedrive_list_activities', name: 'List Activities', description: 'List scheduled and completed activities' },
1293
+ ],
1294
+ },
1295
+ {
1296
+ id: 'intercom-support',
1297
+ name: 'Intercom Messenger',
1298
+ description: 'Manage Intercom conversations, contacts, and articles. Automate customer communication.',
1299
+ version: '1.1.0',
1300
+ author: 'agenticmail',
1301
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/intercom',
1302
+ license: 'MIT',
1303
+ category: 'customer-support',
1304
+ risk: 'medium',
1305
+ icon: 'https://cdn.simpleicons.org/intercom/6AFDEF',
1306
+ tags: ['intercom', 'support', 'messaging', 'customer-success'],
1307
+ tools: [
1308
+ { id: 'intercom_reply_conversation', name: 'Reply to Conversation', description: 'Send a reply in an Intercom conversation' },
1309
+ { id: 'intercom_create_contact', name: 'Create Contact', description: 'Create a new lead or user contact' },
1310
+ { id: 'intercom_search_articles', name: 'Search Articles', description: 'Search help center articles' },
1311
+ { id: 'intercom_list_conversations', name: 'List Conversations', description: 'List open conversations' },
1312
+ ],
1313
+ },
1314
+ {
1315
+ id: 'zendesk-tickets',
1316
+ name: 'Zendesk Tickets',
1317
+ description: 'Create, update, and resolve Zendesk support tickets. Manage users, organizations, and macros.',
1318
+ version: '1.3.0',
1319
+ author: 'agenticmail',
1320
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/zendesk',
1321
+ license: 'MIT',
1322
+ category: 'customer-support',
1323
+ risk: 'medium',
1324
+ icon: 'https://cdn.simpleicons.org/zendesk/03363D',
1325
+ tags: ['zendesk', 'support', 'tickets', 'helpdesk'],
1326
+ tools: [
1327
+ { id: 'zendesk_create_ticket', name: 'Create Ticket', description: 'Create a new support ticket' },
1328
+ { id: 'zendesk_update_ticket', name: 'Update Ticket', description: 'Update ticket status, priority, or assignee' },
1329
+ { id: 'zendesk_search_tickets', name: 'Search Tickets', description: 'Search tickets with filters' },
1330
+ { id: 'zendesk_list_users', name: 'List Users', description: 'List end users and agents' },
1331
+ ],
1332
+ },
1333
+
1334
+ // ── Marketing ─────────────────────────────────────────
1335
+ {
1336
+ id: 'mailchimp-campaigns',
1337
+ name: 'Mailchimp Campaigns',
1338
+ description: 'Create and send Mailchimp email campaigns. Manage audiences, segments, and templates.',
1339
+ version: '1.0.0',
1340
+ author: 'community',
1341
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/mailchimp',
1342
+ license: 'MIT',
1343
+ category: 'marketing',
1344
+ risk: 'medium',
1345
+ icon: 'https://cdn.simpleicons.org/mailchimp/FFE01B',
1346
+ tags: ['mailchimp', 'email-marketing', 'campaigns', 'newsletters'],
1347
+ tools: [
1348
+ { id: 'mailchimp_create_campaign', name: 'Create Campaign', description: 'Create a new email campaign' },
1349
+ { id: 'mailchimp_send_campaign', name: 'Send Campaign', description: 'Send a campaign to an audience' },
1350
+ { id: 'mailchimp_add_subscriber', name: 'Add Subscriber', description: 'Add a subscriber to an audience' },
1351
+ { id: 'mailchimp_get_report', name: 'Get Report', description: 'Get campaign performance report' },
1352
+ ],
1353
+ },
1354
+ {
1355
+ id: 'google-ads',
1356
+ name: 'Google Ads',
1357
+ description: 'Manage Google Ads campaigns, ad groups, and keywords. Retrieve performance reports and metrics.',
1358
+ version: '1.0.0',
1359
+ author: 'agenticmail',
1360
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/google-ads',
1361
+ license: 'MIT',
1362
+ category: 'marketing',
1363
+ risk: 'high',
1364
+ icon: 'https://cdn.simpleicons.org/googleads/4285F4',
1365
+ tags: ['google-ads', 'advertising', 'ppc', 'sem'],
1366
+ tools: [
1367
+ { id: 'gads_list_campaigns', name: 'List Campaigns', description: 'List all campaigns in the account' },
1368
+ { id: 'gads_get_performance', name: 'Get Performance', description: 'Get campaign performance metrics' },
1369
+ { id: 'gads_update_budget', name: 'Update Budget', description: 'Update a campaign budget' },
1370
+ ],
1371
+ },
1372
+
1373
+ // ── Finance ───────────────────────────────────────────
1374
+ {
1375
+ id: 'quickbooks-accounting',
1376
+ name: 'QuickBooks Accounting',
1377
+ description: 'Manage QuickBooks invoices, expenses, and customers. Generate financial reports and summaries.',
1378
+ version: '1.0.0',
1379
+ author: 'community',
1380
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/quickbooks',
1381
+ license: 'MIT',
1382
+ category: 'finance',
1383
+ risk: 'high',
1384
+ icon: 'https://cdn.simpleicons.org/quickbooks/2CA01C',
1385
+ tags: ['quickbooks', 'accounting', 'invoices', 'finance'],
1386
+ tools: [
1387
+ { id: 'qb_create_invoice', name: 'Create Invoice', description: 'Create a new invoice for a customer' },
1388
+ { id: 'qb_list_expenses', name: 'List Expenses', description: 'List recent expenses and purchases' },
1389
+ { id: 'qb_get_report', name: 'Get Report', description: 'Generate a financial report (P&L, balance sheet)' },
1390
+ { id: 'qb_list_customers', name: 'List Customers', description: 'List all customers' },
1391
+ ],
1392
+ },
1393
+
1394
+ // ── Design ────────────────────────────────────────────
1395
+ {
1396
+ id: 'figma-design',
1397
+ name: 'Figma Design',
1398
+ description: 'Export assets, list files, and retrieve comments from Figma projects. Manage design components.',
1399
+ version: '1.1.0',
1400
+ author: 'agenticmail',
1401
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/figma',
1402
+ license: 'MIT',
1403
+ category: 'design',
1404
+ risk: 'low',
1405
+ icon: 'https://cdn.simpleicons.org/figma/F24E1E',
1406
+ tags: ['figma', 'design', 'assets', 'components'],
1407
+ tools: [
1408
+ { id: 'figma_export_assets', name: 'Export Assets', description: 'Export images and assets from a Figma file' },
1409
+ { id: 'figma_list_files', name: 'List Files', description: 'List files in a Figma project' },
1410
+ { id: 'figma_get_comments', name: 'Get Comments', description: 'Retrieve comments on a Figma file' },
1411
+ { id: 'figma_create_component', name: 'Create Component', description: 'Create a reusable design component' },
1412
+ ],
1413
+ },
1414
+ {
1415
+ id: 'canva-design',
1416
+ name: 'Canva Design',
1417
+ description: 'Create designs, manage templates, and export assets from Canva. Automate social media graphics.',
1418
+ version: '1.0.0',
1419
+ author: 'community',
1420
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/canva',
1421
+ license: 'MIT',
1422
+ category: 'design',
1423
+ risk: 'low',
1424
+ icon: "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ccircle cx='16' cy='16' r='16' fill='%2300C4CC'/%3E%3Ctext x='16' y='22' text-anchor='middle' fill='white' font-family='system-ui,sans-serif' font-weight='700' font-size='16'%3EC%3C/text%3E%3C/svg%3E",
1425
+ tags: ['canva', 'design', 'graphics', 'templates'],
1426
+ tools: [
1427
+ { id: 'canva_create_design', name: 'Create Design', description: 'Create a new design from a template' },
1428
+ { id: 'canva_export_design', name: 'Export Design', description: 'Export a design as PNG, PDF, or SVG' },
1429
+ { id: 'canva_list_templates', name: 'List Templates', description: 'List available design templates' },
1430
+ ],
1431
+ },
1432
+
1433
+ // ── Storage & Docs ────────────────────────────────────
1434
+ {
1435
+ id: 'dropbox-storage',
1436
+ name: 'Dropbox Storage',
1437
+ description: 'Upload, download, and manage files in Dropbox. Share folders and create file requests.',
1438
+ version: '1.0.0',
1439
+ author: 'community',
1440
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/dropbox',
1441
+ license: 'MIT',
1442
+ category: 'productivity',
1443
+ risk: 'medium',
1444
+ icon: 'https://cdn.simpleicons.org/dropbox/0061FF',
1445
+ tags: ['dropbox', 'storage', 'files', 'sharing'],
1446
+ tools: [
1447
+ { id: 'dropbox_upload_file', name: 'Upload File', description: 'Upload a file to Dropbox' },
1448
+ { id: 'dropbox_download_file', name: 'Download File', description: 'Download a file from Dropbox' },
1449
+ { id: 'dropbox_list_files', name: 'List Files', description: 'List files in a folder' },
1450
+ { id: 'dropbox_share_folder', name: 'Share Folder', description: 'Share a folder with collaborators' },
1451
+ ],
1452
+ },
1453
+ {
1454
+ id: 'google-drive',
1455
+ name: 'Google Drive',
1456
+ description: 'Upload, download, and organize files in Google Drive. Manage sharing permissions and folders.',
1457
+ version: '1.2.0',
1458
+ author: 'agenticmail',
1459
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/google-drive',
1460
+ license: 'MIT',
1461
+ category: 'productivity',
1462
+ risk: 'medium',
1463
+ icon: 'https://cdn.simpleicons.org/googledrive/4285F4',
1464
+ tags: ['google-drive', 'storage', 'files', 'collaboration'],
1465
+ tools: [
1466
+ { id: 'gdrive_upload_file', name: 'Upload File', description: 'Upload a file to Google Drive' },
1467
+ { id: 'gdrive_list_files', name: 'List Files', description: 'List files and folders' },
1468
+ { id: 'gdrive_share_file', name: 'Share File', description: 'Share a file or folder with users' },
1469
+ { id: 'gdrive_search_files', name: 'Search Files', description: 'Search files by name or content' },
1470
+ ],
1471
+ },
1472
+ {
1473
+ id: 'docusign-esign',
1474
+ name: 'DocuSign eSignature',
1475
+ description: 'Send documents for electronic signature, track envelope status, and manage templates.',
1476
+ version: '1.0.0',
1477
+ author: 'agenticmail',
1478
+ repository: 'https://github.com/agenticmail/enterprise/tree/main/community-skills/docusign',
1479
+ license: 'MIT',
1480
+ category: 'legal',
1481
+ risk: 'high',
1482
+ icon: "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ccircle cx='16' cy='16' r='16' fill='%23FFCD00'/%3E%3Ctext x='16' y='22' text-anchor='middle' fill='white' font-family='system-ui,sans-serif' font-weight='700' font-size='16'%3ED%3C/text%3E%3C/svg%3E",
1483
+ tags: ['docusign', 'esignature', 'contracts', 'legal'],
1484
+ tools: [
1485
+ { id: 'docusign_send_envelope', name: 'Send Envelope', description: 'Send a document for electronic signature' },
1486
+ { id: 'docusign_get_status', name: 'Get Envelope Status', description: 'Check the status of a sent envelope' },
1487
+ { id: 'docusign_list_templates', name: 'List Templates', description: 'List available signing templates' },
1488
+ ],
1489
+ },
1490
+ ];
1491
+
1492
+ for (const seed of seeds) {
1493
+ const existing = this.index.get(seed.id);
1494
+ const skill: IndexedCommunitySkill = {
1495
+ ...(existing || {}),
1496
+ ...seed,
1497
+ downloads: existing?.downloads ?? (Math.floor(Math.random() * 500) + 50),
1498
+ rating: existing?.rating ?? (Math.round((3.5 + Math.random() * 1.5) * 10) / 10),
1499
+ ratingCount: existing?.ratingCount ?? (Math.floor(Math.random() * 30) + 5),
1500
+ verified: seed.author === 'agenticmail',
1501
+ featured: ['github-issues', 'slack-notifications', 'hubspot-crm', 'datadog-monitoring', 'asana-tasks'].includes(seed.id),
1502
+ createdAt: existing?.createdAt || new Date().toISOString(),
1503
+ updatedAt: new Date().toISOString(),
1504
+ };
1505
+ this.index.set(skill.id, skill);
1506
+ if (this.engineDb) await this.engineDb.upsertCommunitySkill(skill);
1507
+ }
1508
+ }
1509
+ }