@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.
- package/.github/CODEOWNERS +23 -0
- package/.github/workflows/publish-community-skills.yml +121 -0
- package/.github/workflows/validate-community-skills.yml +172 -0
- package/ARCHITECTURE.md +184 -167
- package/CLAUDE.md +40 -0
- package/CONTRIBUTING.md +254 -0
- package/DEPLOYMENT.md +1031 -0
- package/README.md +355 -174
- package/community-skills/_template/README.md +31 -0
- package/community-skills/_template/agenticmail-skill.json +48 -0
- package/community-skills/activecampaign/README.md +21 -0
- package/community-skills/activecampaign/agenticmail-skill.json +56 -0
- package/community-skills/adobe-sign/README.md +21 -0
- package/community-skills/adobe-sign/agenticmail-skill.json +72 -0
- package/community-skills/adp/README.md +21 -0
- package/community-skills/adp/agenticmail-skill.json +65 -0
- package/community-skills/airtable-bases/README.md +29 -0
- package/community-skills/airtable-bases/agenticmail-skill.json +69 -0
- package/community-skills/apollo-io/README.md +21 -0
- package/community-skills/apollo-io/agenticmail-skill.json +50 -0
- package/community-skills/asana-tasks/README.md +30 -0
- package/community-skills/asana-tasks/agenticmail-skill.json +70 -0
- package/community-skills/auth0/README.md +21 -0
- package/community-skills/auth0/agenticmail-skill.json +56 -0
- package/community-skills/aws-services/README.md +38 -0
- package/community-skills/aws-services/agenticmail-skill.json +70 -0
- package/community-skills/azure-devops/README.md +21 -0
- package/community-skills/azure-devops/agenticmail-skill.json +57 -0
- package/community-skills/bamboohr/README.md +21 -0
- package/community-skills/bamboohr/agenticmail-skill.json +56 -0
- package/community-skills/basecamp/README.md +21 -0
- package/community-skills/basecamp/agenticmail-skill.json +56 -0
- package/community-skills/bigcommerce/README.md +21 -0
- package/community-skills/bigcommerce/agenticmail-skill.json +55 -0
- package/community-skills/bitbucket-repos/README.md +29 -0
- package/community-skills/bitbucket-repos/agenticmail-skill.json +70 -0
- package/community-skills/box/README.md +21 -0
- package/community-skills/box/agenticmail-skill.json +48 -0
- package/community-skills/brex/README.md +21 -0
- package/community-skills/brex/agenticmail-skill.json +48 -0
- package/community-skills/buffer/README.md +21 -0
- package/community-skills/buffer/agenticmail-skill.json +50 -0
- package/community-skills/calendly/README.md +20 -0
- package/community-skills/calendly/agenticmail-skill.json +43 -0
- package/community-skills/canva-design/README.md +33 -0
- package/community-skills/canva-design/agenticmail-skill.json +60 -0
- package/community-skills/chargebee/README.md +21 -0
- package/community-skills/chargebee/agenticmail-skill.json +55 -0
- package/community-skills/circleci-pipelines/README.md +28 -0
- package/community-skills/circleci-pipelines/agenticmail-skill.json +66 -0
- package/community-skills/clickup/README.md +21 -0
- package/community-skills/clickup/agenticmail-skill.json +48 -0
- package/community-skills/close-crm/README.md +21 -0
- package/community-skills/close-crm/agenticmail-skill.json +49 -0
- package/community-skills/cloudflare-cdn/README.md +37 -0
- package/community-skills/cloudflare-cdn/agenticmail-skill.json +67 -0
- package/community-skills/confluence-wiki/README.md +31 -0
- package/community-skills/confluence-wiki/agenticmail-skill.json +74 -0
- package/community-skills/contentful/README.md +21 -0
- package/community-skills/contentful/agenticmail-skill.json +62 -0
- package/community-skills/copper-crm/README.md +21 -0
- package/community-skills/copper-crm/agenticmail-skill.json +56 -0
- package/community-skills/crisp/README.md +21 -0
- package/community-skills/crisp/agenticmail-skill.json +56 -0
- package/community-skills/crowdstrike/README.md +21 -0
- package/community-skills/crowdstrike/agenticmail-skill.json +69 -0
- package/community-skills/datadog-monitoring/README.md +37 -0
- package/community-skills/datadog-monitoring/agenticmail-skill.json +73 -0
- package/community-skills/digitalocean/README.md +21 -0
- package/community-skills/digitalocean/agenticmail-skill.json +48 -0
- package/community-skills/discord/README.md +45 -0
- package/community-skills/discord/agenticmail-skill.json +65 -0
- package/community-skills/docker-containers/README.md +38 -0
- package/community-skills/docker-containers/agenticmail-skill.json +70 -0
- package/community-skills/docusign-esign/README.md +35 -0
- package/community-skills/docusign-esign/agenticmail-skill.json +66 -0
- package/community-skills/drift/README.md +21 -0
- package/community-skills/drift/agenticmail-skill.json +50 -0
- package/community-skills/dropbox-storage/README.md +36 -0
- package/community-skills/dropbox-storage/agenticmail-skill.json +67 -0
- package/community-skills/figma-design/README.md +36 -0
- package/community-skills/figma-design/agenticmail-skill.json +66 -0
- package/community-skills/firebase/README.md +21 -0
- package/community-skills/firebase/agenticmail-skill.json +56 -0
- package/community-skills/flyio/README.md +21 -0
- package/community-skills/flyio/agenticmail-skill.json +56 -0
- package/community-skills/freshbooks/README.md +21 -0
- package/community-skills/freshbooks/agenticmail-skill.json +55 -0
- package/community-skills/freshdesk/README.md +21 -0
- package/community-skills/freshdesk/agenticmail-skill.json +57 -0
- package/community-skills/freshsales/README.md +21 -0
- package/community-skills/freshsales/agenticmail-skill.json +55 -0
- package/community-skills/freshservice/README.md +21 -0
- package/community-skills/freshservice/agenticmail-skill.json +56 -0
- package/community-skills/front/README.md +21 -0
- package/community-skills/front/agenticmail-skill.json +48 -0
- package/community-skills/github/README.md +49 -0
- package/community-skills/github/agenticmail-skill.json +73 -0
- package/community-skills/github-actions/README.md +29 -0
- package/community-skills/github-actions/agenticmail-skill.json +72 -0
- package/community-skills/gitlab-ci/README.md +51 -0
- package/community-skills/gitlab-ci/agenticmail-skill.json +66 -0
- package/community-skills/gong/README.md +21 -0
- package/community-skills/gong/agenticmail-skill.json +50 -0
- package/community-skills/google-ads/README.md +36 -0
- package/community-skills/google-ads/agenticmail-skill.json +58 -0
- package/community-skills/google-analytics/README.md +28 -0
- package/community-skills/google-analytics/agenticmail-skill.json +69 -0
- package/community-skills/google-cloud/README.md +33 -0
- package/community-skills/google-cloud/agenticmail-skill.json +59 -0
- package/community-skills/google-drive/README.md +36 -0
- package/community-skills/google-drive/agenticmail-skill.json +65 -0
- package/community-skills/gotomeeting/README.md +20 -0
- package/community-skills/gotomeeting/agenticmail-skill.json +45 -0
- package/community-skills/grafana/README.md +21 -0
- package/community-skills/grafana/agenticmail-skill.json +56 -0
- package/community-skills/greenhouse/README.md +21 -0
- package/community-skills/greenhouse/agenticmail-skill.json +49 -0
- package/community-skills/gusto/README.md +21 -0
- package/community-skills/gusto/agenticmail-skill.json +49 -0
- package/community-skills/hashicorp-vault/README.md +21 -0
- package/community-skills/hashicorp-vault/agenticmail-skill.json +58 -0
- package/community-skills/heroku/README.md +21 -0
- package/community-skills/heroku/agenticmail-skill.json +48 -0
- package/community-skills/hibob/README.md +21 -0
- package/community-skills/hibob/agenticmail-skill.json +48 -0
- package/community-skills/hootsuite/README.md +21 -0
- package/community-skills/hootsuite/agenticmail-skill.json +48 -0
- package/community-skills/hubspot-crm/README.md +36 -0
- package/community-skills/hubspot-crm/agenticmail-skill.json +70 -0
- package/community-skills/huggingface/README.md +21 -0
- package/community-skills/huggingface/agenticmail-skill.json +48 -0
- package/community-skills/index.json +1320 -0
- package/community-skills/intercom-support/README.md +36 -0
- package/community-skills/intercom-support/agenticmail-skill.json +64 -0
- package/community-skills/jira/README.md +53 -0
- package/community-skills/jira/agenticmail-skill.json +72 -0
- package/community-skills/klaviyo/README.md +21 -0
- package/community-skills/klaviyo/agenticmail-skill.json +48 -0
- package/community-skills/kubernetes-cluster/README.md +36 -0
- package/community-skills/kubernetes-cluster/agenticmail-skill.json +72 -0
- package/community-skills/lattice/README.md +21 -0
- package/community-skills/lattice/agenticmail-skill.json +49 -0
- package/community-skills/launchdarkly/README.md +21 -0
- package/community-skills/launchdarkly/agenticmail-skill.json +48 -0
- package/community-skills/lever/README.md +21 -0
- package/community-skills/lever/agenticmail-skill.json +49 -0
- package/community-skills/linear/README.md +29 -0
- package/community-skills/linear/agenticmail-skill.json +81 -0
- package/community-skills/linkedin/README.md +21 -0
- package/community-skills/linkedin/agenticmail-skill.json +48 -0
- package/community-skills/livechat/README.md +20 -0
- package/community-skills/livechat/agenticmail-skill.json +43 -0
- package/community-skills/loom-video/README.md +20 -0
- package/community-skills/loom-video/agenticmail-skill.json +44 -0
- package/community-skills/mailchimp-campaigns/README.md +37 -0
- package/community-skills/mailchimp-campaigns/agenticmail-skill.json +69 -0
- package/community-skills/mailgun/README.md +21 -0
- package/community-skills/mailgun/agenticmail-skill.json +71 -0
- package/community-skills/microsoft-teams/README.md +51 -0
- package/community-skills/microsoft-teams/agenticmail-skill.json +66 -0
- package/community-skills/miro-boards/README.md +20 -0
- package/community-skills/miro-boards/agenticmail-skill.json +44 -0
- package/community-skills/mixpanel-analytics/README.md +34 -0
- package/community-skills/mixpanel-analytics/agenticmail-skill.json +64 -0
- package/community-skills/monday-boards/README.md +28 -0
- package/community-skills/monday-boards/agenticmail-skill.json +68 -0
- package/community-skills/mongodb-atlas/README.md +21 -0
- package/community-skills/mongodb-atlas/agenticmail-skill.json +58 -0
- package/community-skills/neon/README.md +21 -0
- package/community-skills/neon/agenticmail-skill.json +50 -0
- package/community-skills/netlify/README.md +21 -0
- package/community-skills/netlify/agenticmail-skill.json +48 -0
- package/community-skills/netsuite/README.md +21 -0
- package/community-skills/netsuite/agenticmail-skill.json +57 -0
- package/community-skills/newrelic/README.md +21 -0
- package/community-skills/newrelic/agenticmail-skill.json +58 -0
- package/community-skills/notion/README.md +49 -0
- package/community-skills/notion/agenticmail-skill.json +72 -0
- package/community-skills/okta/README.md +21 -0
- package/community-skills/okta/agenticmail-skill.json +57 -0
- package/community-skills/openai/README.md +21 -0
- package/community-skills/openai/agenticmail-skill.json +48 -0
- package/community-skills/opsgenie/README.md +21 -0
- package/community-skills/opsgenie/agenticmail-skill.json +48 -0
- package/community-skills/outreach/README.md +21 -0
- package/community-skills/outreach/agenticmail-skill.json +50 -0
- package/community-skills/paddle/README.md +21 -0
- package/community-skills/paddle/agenticmail-skill.json +55 -0
- package/community-skills/pagerduty/README.md +21 -0
- package/community-skills/pagerduty/agenticmail-skill.json +48 -0
- package/community-skills/pandadoc/README.md +21 -0
- package/community-skills/pandadoc/agenticmail-skill.json +48 -0
- package/community-skills/paypal/README.md +21 -0
- package/community-skills/paypal/agenticmail-skill.json +55 -0
- package/community-skills/personio/README.md +21 -0
- package/community-skills/personio/agenticmail-skill.json +48 -0
- package/community-skills/pinecone/README.md +21 -0
- package/community-skills/pinecone/agenticmail-skill.json +48 -0
- package/community-skills/pipedrive-deals/README.md +33 -0
- package/community-skills/pipedrive-deals/agenticmail-skill.json +60 -0
- package/community-skills/plaid/README.md +21 -0
- package/community-skills/plaid/agenticmail-skill.json +65 -0
- package/community-skills/postmark/README.md +21 -0
- package/community-skills/postmark/agenticmail-skill.json +48 -0
- package/community-skills/power-automate/README.md +21 -0
- package/community-skills/power-automate/agenticmail-skill.json +59 -0
- package/community-skills/quickbooks-accounting/README.md +38 -0
- package/community-skills/quickbooks-accounting/agenticmail-skill.json +70 -0
- package/community-skills/recurly/README.md +21 -0
- package/community-skills/recurly/agenticmail-skill.json +48 -0
- package/community-skills/reddit/README.md +21 -0
- package/community-skills/reddit/agenticmail-skill.json +48 -0
- package/community-skills/render/README.md +21 -0
- package/community-skills/render/agenticmail-skill.json +48 -0
- package/community-skills/ringcentral/README.md +20 -0
- package/community-skills/ringcentral/agenticmail-skill.json +43 -0
- package/community-skills/rippling/README.md +21 -0
- package/community-skills/rippling/agenticmail-skill.json +48 -0
- package/community-skills/salesforce/README.md +53 -0
- package/community-skills/salesforce/agenticmail-skill.json +73 -0
- package/community-skills/salesloft/README.md +21 -0
- package/community-skills/salesloft/agenticmail-skill.json +48 -0
- package/community-skills/sanity/README.md +21 -0
- package/community-skills/sanity/agenticmail-skill.json +62 -0
- package/community-skills/sap/README.md +21 -0
- package/community-skills/sap/agenticmail-skill.json +63 -0
- package/community-skills/segment-cdp/README.md +37 -0
- package/community-skills/segment-cdp/agenticmail-skill.json +66 -0
- package/community-skills/sendgrid-email/README.md +51 -0
- package/community-skills/sendgrid-email/agenticmail-skill.json +71 -0
- package/community-skills/sentry/README.md +21 -0
- package/community-skills/sentry/agenticmail-skill.json +58 -0
- package/community-skills/servicenow/README.md +21 -0
- package/community-skills/servicenow/agenticmail-skill.json +56 -0
- package/community-skills/shopify/README.md +21 -0
- package/community-skills/shopify/agenticmail-skill.json +56 -0
- package/community-skills/shortcut/README.md +21 -0
- package/community-skills/shortcut/agenticmail-skill.json +48 -0
- package/community-skills/slack/README.md +45 -0
- package/community-skills/slack/agenticmail-skill.json +73 -0
- package/community-skills/smartsheet/README.md +21 -0
- package/community-skills/smartsheet/agenticmail-skill.json +48 -0
- package/community-skills/snowflake-warehouse/README.md +37 -0
- package/community-skills/snowflake-warehouse/agenticmail-skill.json +71 -0
- package/community-skills/snyk/README.md +21 -0
- package/community-skills/snyk/agenticmail-skill.json +48 -0
- package/community-skills/splunk/README.md +21 -0
- package/community-skills/splunk/agenticmail-skill.json +56 -0
- package/community-skills/square/README.md +21 -0
- package/community-skills/square/agenticmail-skill.json +55 -0
- package/community-skills/statuspage/README.md +21 -0
- package/community-skills/statuspage/agenticmail-skill.json +56 -0
- package/community-skills/stripe/README.md +45 -0
- package/community-skills/stripe/agenticmail-skill.json +66 -0
- package/community-skills/supabase/README.md +21 -0
- package/community-skills/supabase/agenticmail-skill.json +56 -0
- package/community-skills/teamwork/README.md +21 -0
- package/community-skills/teamwork/agenticmail-skill.json +56 -0
- package/community-skills/telegram-bot/README.md +20 -0
- package/community-skills/telegram-bot/agenticmail-skill.json +52 -0
- package/community-skills/terraform-iac/README.md +34 -0
- package/community-skills/terraform-iac/agenticmail-skill.json +66 -0
- package/community-skills/todoist-tasks/README.md +29 -0
- package/community-skills/todoist-tasks/agenticmail-skill.json +72 -0
- package/community-skills/trello-cards/README.md +30 -0
- package/community-skills/trello-cards/agenticmail-skill.json +72 -0
- package/community-skills/twilio-sms/README.md +47 -0
- package/community-skills/twilio-sms/agenticmail-skill.json +63 -0
- package/community-skills/twitter/README.md +21 -0
- package/community-skills/twitter/agenticmail-skill.json +48 -0
- package/community-skills/vercel-deployments/README.md +29 -0
- package/community-skills/vercel-deployments/agenticmail-skill.json +70 -0
- package/community-skills/weaviate/README.md +21 -0
- package/community-skills/weaviate/agenticmail-skill.json +56 -0
- package/community-skills/webex/README.md +20 -0
- package/community-skills/webex/agenticmail-skill.json +43 -0
- package/community-skills/webflow/README.md +21 -0
- package/community-skills/webflow/agenticmail-skill.json +48 -0
- package/community-skills/whatsapp-business/README.md +20 -0
- package/community-skills/whatsapp-business/agenticmail-skill.json +52 -0
- package/community-skills/whereby/README.md +20 -0
- package/community-skills/whereby/agenticmail-skill.json +43 -0
- package/community-skills/woocommerce/README.md +21 -0
- package/community-skills/woocommerce/agenticmail-skill.json +55 -0
- package/community-skills/wordpress/README.md +21 -0
- package/community-skills/wordpress/agenticmail-skill.json +56 -0
- package/community-skills/workday/README.md +21 -0
- package/community-skills/workday/agenticmail-skill.json +56 -0
- package/community-skills/wrike/README.md +21 -0
- package/community-skills/wrike/agenticmail-skill.json +48 -0
- package/community-skills/xero/README.md +21 -0
- package/community-skills/xero/agenticmail-skill.json +56 -0
- package/community-skills/youtube/README.md +21 -0
- package/community-skills/youtube/agenticmail-skill.json +52 -0
- package/community-skills/zendesk-tickets/README.md +37 -0
- package/community-skills/zendesk-tickets/agenticmail-skill.json +65 -0
- package/community-skills/zoho-crm/README.md +21 -0
- package/community-skills/zoho-crm/agenticmail-skill.json +74 -0
- package/community-skills/zoom-meetings/README.md +51 -0
- package/community-skills/zoom-meetings/agenticmail-skill.json +66 -0
- package/community-skills/zuora/README.md +21 -0
- package/community-skills/zuora/agenticmail-skill.json +55 -0
- package/dashboards/README.md +81 -70
- package/dashboards/django/app.py +117 -0
- package/dashboards/django/static/styles.css +284 -0
- package/dashboards/django/templates/agent_detail.html +501 -0
- package/dashboards/django/templates/agents.html +217 -0
- package/dashboards/django/templates/api_keys.html +41 -0
- package/dashboards/django/templates/audit.html +26 -0
- package/dashboards/django/templates/compliance.html +33 -0
- package/dashboards/django/templates/components/modal.html +6 -0
- package/dashboards/django/templates/components/pagination.html +9 -0
- package/dashboards/django/templates/components/stats.html +8 -0
- package/dashboards/django/templates/dashboard.html +24 -0
- package/dashboards/django/templates/dlp.html +70 -0
- package/dashboards/django/templates/guardrails.html +78 -0
- package/dashboards/django/templates/journal.html +39 -0
- package/dashboards/django/templates/layout.html +52 -0
- package/dashboards/django/templates/login.html +30 -0
- package/dashboards/django/templates/messages.html +38 -0
- package/dashboards/django/templates/settings.html +472 -0
- package/dashboards/django/templates/skills.html +66 -0
- package/dashboards/django/templates/users.html +34 -0
- package/dashboards/django/templates/vault.html +46 -0
- package/dashboards/django/utils/__init__.py +0 -0
- package/dashboards/django/utils/api.py +20 -0
- package/dashboards/django/utils/helpers.py +39 -0
- package/dashboards/django/views/__init__.py +38 -0
- package/dashboards/django/views/agents.py +343 -0
- package/dashboards/django/views/api_keys.py +47 -0
- package/dashboards/django/views/audit.py +35 -0
- package/dashboards/django/views/auth.py +34 -0
- package/dashboards/django/views/compliance.py +37 -0
- package/dashboards/django/views/dashboard.py +27 -0
- package/dashboards/django/views/dlp.py +53 -0
- package/dashboards/django/views/guardrails.py +61 -0
- package/dashboards/django/views/journal.py +41 -0
- package/dashboards/django/views/messages.py +65 -0
- package/dashboards/django/views/settings_view.py +335 -0
- package/dashboards/django/views/skills.py +50 -0
- package/dashboards/django/views/users.py +42 -0
- package/dashboards/django/views/vault.py +50 -0
- package/dashboards/dotnet/AgenticMailDashboard.csproj +10 -0
- package/dashboards/dotnet/Program.cs +53 -233
- package/dashboards/dotnet/Routes/AgentRoutes.cs +771 -0
- package/dashboards/dotnet/Routes/ApiKeyRoutes.cs +185 -0
- package/dashboards/dotnet/Routes/AuditRoutes.cs +86 -0
- package/dashboards/dotnet/Routes/AuthRoutes.cs +50 -0
- package/dashboards/dotnet/Routes/ComplianceRoutes.cs +143 -0
- package/dashboards/dotnet/Routes/DashboardRoutes.cs +81 -0
- package/dashboards/dotnet/Routes/DlpRoutes.cs +230 -0
- package/dashboards/dotnet/Routes/GuardrailRoutes.cs +285 -0
- package/dashboards/dotnet/Routes/JournalRoutes.cs +118 -0
- package/dashboards/dotnet/Routes/MessageRoutes.cs +167 -0
- package/dashboards/dotnet/Routes/SettingRoutes.cs +907 -0
- package/dashboards/dotnet/Routes/SkillRoutes.cs +198 -0
- package/dashboards/dotnet/Routes/UserRoutes.cs +111 -0
- package/dashboards/dotnet/Routes/VaultRoutes.cs +162 -0
- package/dashboards/dotnet/Services/ApiClient.cs +103 -0
- package/dashboards/dotnet/Services/HtmlBuilder.cs +249 -0
- package/dashboards/dotnet/wwwroot/styles.css +284 -0
- package/dashboards/express/app.js +37 -126
- package/dashboards/express/middleware/auth.js +10 -0
- package/dashboards/express/package-lock.json +922 -0
- package/dashboards/express/package.json +17 -0
- package/dashboards/express/public/styles.css +284 -0
- package/dashboards/express/routes/agents.js +771 -0
- package/dashboards/express/routes/apiKeys.js +107 -0
- package/dashboards/express/routes/audit.js +75 -0
- package/dashboards/express/routes/auth.js +38 -0
- package/dashboards/express/routes/compliance.js +93 -0
- package/dashboards/express/routes/dashboard.js +65 -0
- package/dashboards/express/routes/dlp.js +165 -0
- package/dashboards/express/routes/guardrails.js +195 -0
- package/dashboards/express/routes/journal.js +95 -0
- package/dashboards/express/routes/messages.js +97 -0
- package/dashboards/express/routes/settings.js +830 -0
- package/dashboards/express/routes/skills.js +141 -0
- package/dashboards/express/routes/users.js +69 -0
- package/dashboards/express/routes/vault.js +141 -0
- package/dashboards/express/utils/api.js +44 -0
- package/dashboards/express/utils/helpers.js +46 -0
- package/dashboards/express/views/components/modal.js +255 -0
- package/dashboards/express/views/components/stats.js +22 -0
- package/dashboards/express/views/components/table.js +31 -0
- package/dashboards/express/views/layout.js +73 -0
- package/dashboards/express/views/login.js +45 -0
- package/dashboards/go/go.mod +3 -0
- package/dashboards/go/handlers/agents.go +790 -0
- package/dashboards/go/handlers/apikeys.go +38 -0
- package/dashboards/go/handlers/audit.go +52 -0
- package/dashboards/go/handlers/auth.go +39 -0
- package/dashboards/go/handlers/compliance.go +58 -0
- package/dashboards/go/handlers/dashboard.go +43 -0
- package/dashboards/go/handlers/dlp.go +78 -0
- package/dashboards/go/handlers/guardrails.go +89 -0
- package/dashboards/go/handlers/journal.go +60 -0
- package/dashboards/go/handlers/messages.go +59 -0
- package/dashboards/go/handlers/settings.go +951 -0
- package/dashboards/go/handlers/skills.go +129 -0
- package/dashboards/go/handlers/users.go +54 -0
- package/dashboards/go/handlers/vault.go +85 -0
- package/dashboards/go/main.go +35 -485
- package/dashboards/go/middleware/auth.go +17 -0
- package/dashboards/go/services/api.go +38 -0
- package/dashboards/go/services/session.go +52 -0
- package/dashboards/go/static/styles.css +284 -0
- package/dashboards/go/templates/components.go +45 -0
- package/dashboards/go/templates/helpers.go +35 -0
- package/dashboards/go/templates/layout.go +59 -0
- package/dashboards/html/index.html +203 -450
- package/dashboards/html/package.json +11 -0
- package/dashboards/html/public/styles.css +149 -0
- package/dashboards/html/src/api.js +36 -0
- package/dashboards/html/src/components/badge.js +13 -0
- package/dashboards/html/src/components/layout.js +11 -0
- package/dashboards/html/src/components/modal.js +9 -0
- package/dashboards/html/src/components/pagination.js +12 -0
- package/dashboards/html/src/components/stat-card.js +14 -0
- package/dashboards/html/src/components/table.js +6 -0
- package/dashboards/html/src/main.js +83 -0
- package/dashboards/html/src/pages/agents.js +831 -0
- package/dashboards/html/src/pages/api-keys.js +80 -0
- package/dashboards/html/src/pages/audit.js +50 -0
- package/dashboards/html/src/pages/compliance.js +69 -0
- package/dashboards/html/src/pages/dashboard.js +25 -0
- package/dashboards/html/src/pages/dlp.js +112 -0
- package/dashboards/html/src/pages/guardrails.js +127 -0
- package/dashboards/html/src/pages/journal.js +54 -0
- package/dashboards/html/src/pages/login.js +84 -0
- package/dashboards/html/src/pages/messages.js +90 -0
- package/dashboards/html/src/pages/settings.js +656 -0
- package/dashboards/html/src/pages/skills.js +114 -0
- package/dashboards/html/src/pages/users.js +62 -0
- package/dashboards/html/src/pages/vault.js +105 -0
- package/dashboards/html/src/router.js +40 -0
- package/dashboards/html/src/utils/escape.js +7 -0
- package/dashboards/html/src/utils/time.js +16 -0
- package/dashboards/html/src/utils/toast.js +10 -0
- package/dashboards/java/AgenticMailDashboard.java +123 -346
- package/dashboards/java/handlers/AgentsHandler.java +807 -0
- package/dashboards/java/handlers/ApiKeysHandler.java +201 -0
- package/dashboards/java/handlers/AuditHandler.java +95 -0
- package/dashboards/java/handlers/AuthHandler.java +71 -0
- package/dashboards/java/handlers/ComplianceHandler.java +192 -0
- package/dashboards/java/handlers/DashboardHandler.java +98 -0
- package/dashboards/java/handlers/DlpHandler.java +230 -0
- package/dashboards/java/handlers/GuardrailsHandler.java +272 -0
- package/dashboards/java/handlers/JournalHandler.java +130 -0
- package/dashboards/java/handlers/MessagesHandler.java +168 -0
- package/dashboards/java/handlers/SettingsHandler.java +1017 -0
- package/dashboards/java/handlers/SkillsHandler.java +198 -0
- package/dashboards/java/handlers/UsersHandler.java +118 -0
- package/dashboards/java/handlers/VaultHandler.java +168 -0
- package/dashboards/java/services/ApiClient.java +233 -0
- package/dashboards/java/services/SessionManager.java +138 -0
- package/dashboards/java/static/styles.css +288 -0
- package/dashboards/java/templates/Components.java +142 -0
- package/dashboards/java/templates/Helpers.java +106 -0
- package/dashboards/java/templates/Layout.java +98 -0
- package/dashboards/laravel/controllers/AgentController.php +250 -0
- package/dashboards/laravel/controllers/ApiKeyController.php +73 -0
- package/dashboards/laravel/controllers/AuditController.php +31 -0
- package/dashboards/laravel/controllers/AuthController.php +44 -0
- package/dashboards/laravel/controllers/ComplianceController.php +55 -0
- package/dashboards/laravel/controllers/DashboardController.php +28 -0
- package/dashboards/laravel/controllers/DlpController.php +88 -0
- package/dashboards/laravel/controllers/GuardrailController.php +110 -0
- package/dashboards/laravel/controllers/JournalController.php +44 -0
- package/dashboards/laravel/controllers/MessageController.php +47 -0
- package/dashboards/laravel/controllers/SettingController.php +258 -0
- package/dashboards/laravel/controllers/SkillController.php +74 -0
- package/dashboards/laravel/controllers/UserController.php +47 -0
- package/dashboards/laravel/controllers/VaultController.php +94 -0
- package/dashboards/laravel/index.php +319 -0
- package/dashboards/laravel/lib/Api.php +73 -0
- package/dashboards/laravel/lib/Helpers.php +123 -0
- package/dashboards/laravel/public/styles.css +291 -0
- package/dashboards/laravel/views/agent-detail.php +534 -0
- package/dashboards/laravel/views/agents.php +204 -0
- package/dashboards/laravel/views/api-keys.php +55 -0
- package/dashboards/laravel/views/audit.php +30 -0
- package/dashboards/laravel/views/compliance.php +48 -0
- package/dashboards/laravel/views/components/modal.php +59 -0
- package/dashboards/laravel/views/components/stats.php +21 -0
- package/dashboards/laravel/views/components/table.php +35 -0
- package/dashboards/laravel/views/dashboard.php +31 -0
- package/dashboards/laravel/views/dlp.php +87 -0
- package/dashboards/laravel/views/guardrails.php +95 -0
- package/dashboards/laravel/views/journal.php +50 -0
- package/dashboards/laravel/views/layout.php +82 -0
- package/dashboards/laravel/views/login.php +45 -0
- package/dashboards/laravel/views/messages.php +60 -0
- package/dashboards/laravel/views/settings.php +622 -0
- package/dashboards/laravel/views/skills.php +74 -0
- package/dashboards/laravel/views/users.php +42 -0
- package/dashboards/laravel/views/vault.php +80 -0
- package/dashboards/php/components/layout.php +80 -0
- package/dashboards/php/components/modal.php +22 -0
- package/dashboards/php/components/stats.php +20 -0
- package/dashboards/php/components/table.php +33 -0
- package/dashboards/php/index.php +663 -381
- package/dashboards/php/lib/api.php +37 -0
- package/dashboards/php/lib/auth.php +47 -0
- package/dashboards/php/lib/helpers.php +69 -0
- package/dashboards/php/pages/agent-detail.php +552 -0
- package/dashboards/php/pages/agents.php +185 -0
- package/dashboards/php/pages/api-keys.php +34 -0
- package/dashboards/php/pages/audit.php +31 -0
- package/dashboards/php/pages/compliance.php +38 -0
- package/dashboards/php/pages/dashboard.php +29 -0
- package/dashboards/php/pages/dlp.php +65 -0
- package/dashboards/php/pages/guardrails.php +70 -0
- package/dashboards/php/pages/journal.php +53 -0
- package/dashboards/php/pages/login.php +34 -0
- package/dashboards/php/pages/messages.php +53 -0
- package/dashboards/php/pages/settings.php +687 -0
- package/dashboards/php/pages/skills.php +70 -0
- package/dashboards/php/pages/users.php +37 -0
- package/dashboards/php/pages/vault.php +70 -0
- package/dashboards/php/public/styles.css +81 -0
- package/dashboards/python/app.py +61 -259
- package/dashboards/python/routes/__init__.py +0 -0
- package/dashboards/python/routes/agents.py +296 -0
- package/dashboards/python/routes/api_keys.py +49 -0
- package/dashboards/python/routes/audit.py +33 -0
- package/dashboards/python/routes/auth.py +30 -0
- package/dashboards/python/routes/compliance.py +50 -0
- package/dashboards/python/routes/dashboard.py +32 -0
- package/dashboards/python/routes/dlp.py +64 -0
- package/dashboards/python/routes/guardrails.py +79 -0
- package/dashboards/python/routes/journal.py +40 -0
- package/dashboards/python/routes/messages.py +46 -0
- package/dashboards/python/routes/settings.py +260 -0
- package/dashboards/python/routes/skills.py +59 -0
- package/dashboards/python/routes/users.py +43 -0
- package/dashboards/python/routes/vault.py +59 -0
- package/dashboards/python/static/styles.css +288 -0
- package/dashboards/python/templates/agent_detail.html +552 -0
- package/dashboards/python/templates/agents.html +246 -0
- package/dashboards/python/templates/api_keys.html +64 -0
- package/dashboards/python/templates/audit.html +50 -0
- package/dashboards/python/templates/compliance.html +74 -0
- package/dashboards/python/templates/components/modal.html +43 -0
- package/dashboards/python/templates/components/stats.html +26 -0
- package/dashboards/python/templates/components/table.html +43 -0
- package/dashboards/python/templates/dashboard.html +34 -0
- package/dashboards/python/templates/dlp.html +159 -0
- package/dashboards/python/templates/guardrails.html +131 -0
- package/dashboards/python/templates/journal.html +66 -0
- package/dashboards/python/templates/layout.html +86 -0
- package/dashboards/python/templates/login.html +36 -0
- package/dashboards/python/templates/messages.html +90 -0
- package/dashboards/python/templates/settings.html +624 -0
- package/dashboards/python/templates/skills.html +89 -0
- package/dashboards/python/templates/users.html +70 -0
- package/dashboards/python/templates/vault.html +73 -0
- package/dashboards/python/utils/__init__.py +0 -0
- package/dashboards/python/utils/api.py +35 -0
- package/dashboards/python/utils/helpers.py +90 -0
- package/dashboards/rails/app.rb +56 -0
- package/dashboards/rails/helpers/api.rb +39 -0
- package/dashboards/rails/helpers/auth.rb +11 -0
- package/dashboards/rails/helpers/view.rb +95 -0
- package/dashboards/rails/public/styles.css +299 -0
- package/dashboards/rails/routes/agents.rb +173 -0
- package/dashboards/rails/routes/api_keys.rb +30 -0
- package/dashboards/rails/routes/audit.rb +15 -0
- package/dashboards/rails/routes/auth.rb +29 -0
- package/dashboards/rails/routes/compliance.rb +25 -0
- package/dashboards/rails/routes/dashboard.rb +13 -0
- package/dashboards/rails/routes/dlp.rb +40 -0
- package/dashboards/rails/routes/guardrails.rb +51 -0
- package/dashboards/rails/routes/journal.rb +24 -0
- package/dashboards/rails/routes/messages.rb +22 -0
- package/dashboards/rails/routes/settings.rb +196 -0
- package/dashboards/rails/routes/skills.rb +38 -0
- package/dashboards/rails/routes/users.rb +18 -0
- package/dashboards/rails/routes/vault.rb +37 -0
- package/dashboards/rails/views/agent_detail.erb +550 -0
- package/dashboards/rails/views/agents.erb +214 -0
- package/dashboards/rails/views/api_keys.erb +52 -0
- package/dashboards/rails/views/audit.erb +38 -0
- package/dashboards/rails/views/compliance.erb +69 -0
- package/dashboards/rails/views/dashboard.erb +46 -0
- package/dashboards/rails/views/dlp.erb +104 -0
- package/dashboards/rails/views/guardrails.erb +107 -0
- package/dashboards/rails/views/journal.erb +65 -0
- package/dashboards/rails/views/layout.erb +53 -0
- package/dashboards/rails/views/login.erb +47 -0
- package/dashboards/rails/views/messages.erb +62 -0
- package/dashboards/rails/views/settings.erb +578 -0
- package/dashboards/rails/views/skills.erb +66 -0
- package/dashboards/rails/views/users.erb +53 -0
- package/dashboards/rails/views/vault.erb +66 -0
- package/dashboards/ruby/app.rb +53 -182
- package/dashboards/ruby/helpers/api.rb +63 -0
- package/dashboards/ruby/helpers/auth.rb +20 -0
- package/dashboards/ruby/helpers/view.rb +91 -0
- package/dashboards/ruby/public/styles.css +294 -0
- package/dashboards/ruby/routes/agents.rb +197 -0
- package/dashboards/ruby/routes/api_keys.rb +43 -0
- package/dashboards/ruby/routes/audit.rb +15 -0
- package/dashboards/ruby/routes/auth.rb +29 -0
- package/dashboards/ruby/routes/compliance.rb +28 -0
- package/dashboards/ruby/routes/dashboard.rb +13 -0
- package/dashboards/ruby/routes/dlp.rb +55 -0
- package/dashboards/ruby/routes/guardrails.rb +77 -0
- package/dashboards/ruby/routes/journal.rb +24 -0
- package/dashboards/ruby/routes/messages.rb +27 -0
- package/dashboards/ruby/routes/settings.rb +214 -0
- package/dashboards/ruby/routes/skills.rb +50 -0
- package/dashboards/ruby/routes/users.rb +26 -0
- package/dashboards/ruby/routes/vault.rb +49 -0
- package/dashboards/ruby/views/agent_detail.erb +550 -0
- package/dashboards/ruby/views/agents.erb +214 -0
- package/dashboards/ruby/views/api_keys.erb +59 -0
- package/dashboards/ruby/views/audit.erb +38 -0
- package/dashboards/ruby/views/compliance.erb +45 -0
- package/dashboards/ruby/views/dashboard.erb +46 -0
- package/dashboards/ruby/views/dlp.erb +88 -0
- package/dashboards/ruby/views/guardrails.erb +103 -0
- package/dashboards/ruby/views/journal.erb +53 -0
- package/dashboards/ruby/views/layout.erb +52 -0
- package/dashboards/ruby/views/login.erb +31 -0
- package/dashboards/ruby/views/messages.erb +51 -0
- package/dashboards/ruby/views/settings.erb +579 -0
- package/dashboards/ruby/views/skills.erb +66 -0
- package/dashboards/ruby/views/users.erb +53 -0
- package/dashboards/ruby/views/vault.erb +66 -0
- package/dashboards/shared/styles.css +322 -0
- package/dist/{chunk-TVF23PUW.js → chunk-7FVRYOP4.js} +22 -7
- package/dist/chunk-DRXMYYKN.js +79 -0
- package/dist/chunk-E23VJ3QX.js +9427 -0
- package/dist/chunk-EOBN6RCA.js +12652 -0
- package/dist/chunk-FLRYMSKY.js +23 -0
- package/dist/chunk-HAUHDCUB.js +764 -0
- package/dist/chunk-HSF6OJ5Z.js +154 -0
- package/dist/{chunk-PNKVD2UK.js → chunk-KFQGP6VL.js} +7 -0
- package/dist/chunk-LKAFZ343.js +591 -0
- package/dist/{chunk-GXIEEA2T.js → chunk-NTVN3JHS.js} +10 -10
- package/dist/chunk-RO537U6H.js +70 -0
- package/dist/chunk-SGBTJHEF.js +2287 -0
- package/dist/chunk-SMUXH6FM.js +1943 -0
- package/dist/chunk-TY7NVD4U.js +275 -0
- package/dist/chunk-X6UVWFHW.js +3455 -0
- package/dist/{chunk-7RGCCHIT.js → chunk-XMDE2NGH.js} +2 -1
- package/dist/chunk-ZNR5DDTA.js +239 -0
- package/dist/cidr-LISVZSM2.js +17 -0
- package/dist/cli-build-skill-XOYECCLE.js +235 -0
- package/dist/cli-recover-SSGGSKZJ.js +97 -0
- package/dist/cli-submit-skill-RSBLF5XN.js +162 -0
- package/dist/cli-validate-WJBUOEGW.js +148 -0
- package/dist/cli-verify-V3GPFMWU.js +98 -0
- package/dist/cli.js +50 -376
- package/dist/config-store-CRMKWBON.js +58 -0
- package/dist/dashboard/app.js +246 -0
- package/dist/dashboard/assets/logo.png +0 -0
- package/dist/dashboard/components/error-boundary.js +21 -0
- package/dist/dashboard/components/help-button.js +34 -0
- package/dist/dashboard/components/icons.js +53 -0
- package/dist/dashboard/components/modal.js +124 -0
- package/dist/dashboard/components/persona-fields.js +271 -0
- package/dist/dashboard/components/settings-help.js +191 -0
- package/dist/dashboard/components/tag-input.js +96 -0
- package/dist/dashboard/components/utils.js +148 -0
- package/dist/dashboard/index.html +407 -874
- package/dist/dashboard/pages/activity.js +62 -0
- package/dist/dashboard/pages/agent-detail.js +3577 -0
- package/dist/dashboard/pages/agents.js +1072 -0
- package/dist/dashboard/pages/approvals.js +81 -0
- package/dist/dashboard/pages/audit.js +133 -0
- package/dist/dashboard/pages/community-skills.js +665 -0
- package/dist/dashboard/pages/compliance.js +81 -0
- package/dist/dashboard/pages/dashboard.js +150 -0
- package/dist/dashboard/pages/dlp.js +107 -0
- package/dist/dashboard/pages/domain-status.js +123 -0
- package/dist/dashboard/pages/guardrails.js +995 -0
- package/dist/dashboard/pages/journal.js +51 -0
- package/dist/dashboard/pages/knowledge-contributions.js +763 -0
- package/dist/dashboard/pages/knowledge.js +46 -0
- package/dist/dashboard/pages/login.js +491 -0
- package/dist/dashboard/pages/messages.js +274 -0
- package/dist/dashboard/pages/settings.js +1554 -0
- package/dist/dashboard/pages/skill-connections.js +452 -0
- package/dist/dashboard/pages/skills.js +433 -0
- package/dist/dashboard/pages/users.js +49 -0
- package/dist/dashboard/pages/vault.js +538 -0
- package/dist/dashboard/pages/workforce.js +569 -0
- package/dist/dashboard/vendor/react-dom.production.min.js +267 -0
- package/dist/dashboard/vendor/react.production.min.js +31 -0
- package/dist/db-adapter-5PWMLY67.js +7 -0
- package/dist/domain-lock-URIFILHB.js +7 -0
- package/dist/{dynamodb-CCGL2E77.js → dynamodb-CD3LREWD.js} +4 -4
- package/dist/{factory-HINWFYZ3.js → factory-FVJH5RRY.js} +2 -2
- package/dist/firewall-AHIRE6UB.js +10 -0
- package/dist/index.js +133 -448
- package/dist/{managed-RZITNPXG.js → managed-QVTONZ7E.js} +4 -2
- package/dist/{mongodb-ODTXIVPV.js → mongodb-73MGW7LD.js} +4 -4
- package/dist/{mysql-RM3S2FV5.js → mysql-A2RYNBQG.js} +59 -6
- package/dist/{postgres-LN7A6MGQ.js → postgres-OE23X46P.js} +63 -6
- package/dist/registry/cli.js +411 -0
- package/dist/routes-NJK5OI5N.js +5673 -0
- package/dist/runtime-SMA6JUMP.js +46 -0
- package/dist/server-ZT5NWHT4.js +11 -0
- package/dist/setup-RCYNX5NA.js +20 -0
- package/dist/skills-QNR3CCHA.js +14 -0
- package/dist/soul-templates.json +1525 -0
- package/dist/{sqlite-VLKVAJA4.js → sqlite-SFVNZPHX.js} +56 -8
- package/dist/{turso-LDWODSDI.js → turso-L6WQAY7U.js} +59 -6
- package/live-test.mjs +1 -1
- package/package.json +11 -10
- package/schemas/agenticmail-skill.v1.schema.json +180 -0
- package/serve.mjs +12 -2
- package/src/admin/routes.ts +536 -5
- package/src/agent-tools/common.ts +232 -0
- package/src/agent-tools/index.ts +246 -0
- package/src/agent-tools/merge.ts +62 -0
- package/src/agent-tools/middleware.ts +436 -0
- package/src/agent-tools/security.ts +352 -0
- package/src/agent-tools/tools/bash.ts +154 -0
- package/src/agent-tools/tools/browser.ts +236 -0
- package/src/agent-tools/tools/edit.ts +100 -0
- package/src/agent-tools/tools/enterprise-calendar.ts +561 -0
- package/src/agent-tools/tools/enterprise-code-sandbox.ts +395 -0
- package/src/agent-tools/tools/enterprise-database.ts +377 -0
- package/src/agent-tools/tools/enterprise-diff.ts +580 -0
- package/src/agent-tools/tools/enterprise-documents.ts +896 -0
- package/src/agent-tools/tools/enterprise-finance.ts +484 -0
- package/src/agent-tools/tools/enterprise-http.ts +477 -0
- package/src/agent-tools/tools/enterprise-knowledge-search.ts +369 -0
- package/src/agent-tools/tools/enterprise-logs.ts +479 -0
- package/src/agent-tools/tools/enterprise-notifications.ts +532 -0
- package/src/agent-tools/tools/enterprise-security-scan.ts +528 -0
- package/src/agent-tools/tools/enterprise-spreadsheet.ts +825 -0
- package/src/agent-tools/tools/enterprise-translation.ts +530 -0
- package/src/agent-tools/tools/enterprise-vision.ts +348 -0
- package/src/agent-tools/tools/enterprise-web-research.ts +422 -0
- package/src/agent-tools/tools/enterprise-workflow.ts +308 -0
- package/src/agent-tools/tools/glob.ts +129 -0
- package/src/agent-tools/tools/grep.ts +178 -0
- package/src/agent-tools/tools/memory.ts +194 -0
- package/src/agent-tools/tools/read.ts +160 -0
- package/src/agent-tools/tools/web-fetch-utils.ts +202 -0
- package/src/agent-tools/tools/web-fetch.ts +456 -0
- package/src/agent-tools/tools/web-search.ts +480 -0
- package/src/agent-tools/tools/web-shared.ts +232 -0
- package/src/agent-tools/tools/write.ts +68 -0
- package/src/agent-tools/types.ts +193 -0
- package/src/auth/routes.ts +916 -51
- package/src/cli.ts +74 -14
- package/src/dashboard/app.js +246 -0
- package/src/dashboard/assets/logo.png +0 -0
- package/src/dashboard/components/error-boundary.js +21 -0
- package/src/dashboard/components/help-button.js +34 -0
- package/src/dashboard/components/icons.js +53 -0
- package/src/dashboard/components/modal.js +124 -0
- package/src/dashboard/components/persona-fields.js +271 -0
- package/src/dashboard/components/settings-help.js +191 -0
- package/src/dashboard/components/tag-input.js +96 -0
- package/src/dashboard/components/utils.js +148 -0
- package/src/dashboard/index.html +407 -874
- package/src/dashboard/pages/activity.js +62 -0
- package/src/dashboard/pages/agent-detail.js +3577 -0
- package/src/dashboard/pages/agents.js +1072 -0
- package/src/dashboard/pages/approvals.js +81 -0
- package/src/dashboard/pages/audit.js +133 -0
- package/src/dashboard/pages/community-skills.js +665 -0
- package/src/dashboard/pages/compliance.js +81 -0
- package/src/dashboard/pages/dashboard.js +150 -0
- package/src/dashboard/pages/dlp.js +107 -0
- package/src/dashboard/pages/domain-status.js +123 -0
- package/src/dashboard/pages/guardrails.js +995 -0
- package/src/dashboard/pages/journal.js +51 -0
- package/src/dashboard/pages/knowledge-contributions.js +763 -0
- package/src/dashboard/pages/knowledge.js +46 -0
- package/src/dashboard/pages/login.js +491 -0
- package/src/dashboard/pages/messages.js +274 -0
- package/src/dashboard/pages/settings.js +1554 -0
- package/src/dashboard/pages/skill-connections.js +452 -0
- package/src/dashboard/pages/skills.js +433 -0
- package/src/dashboard/pages/users.js +49 -0
- package/src/dashboard/pages/vault.js +538 -0
- package/src/dashboard/pages/workforce.js +569 -0
- package/src/dashboard/vendor/react-dom.production.min.js +267 -0
- package/src/dashboard/vendor/react.production.min.js +31 -0
- package/src/db/adapter.ts +134 -1
- package/src/db/dynamodb.ts +2 -2
- package/src/db/mongodb.ts +2 -2
- package/src/db/mysql.ts +55 -1
- package/src/db/postgres.ts +59 -1
- package/src/db/proxy.ts +39 -0
- package/src/db/sql-schema.ts +2 -1
- package/src/db/sqlite.ts +51 -3
- package/src/db/turso.ts +55 -1
- package/src/deploy/fly.ts +2 -2
- package/src/deploy/managed.ts +32 -11
- package/src/domain-lock/cli-recover.ts +124 -0
- package/src/domain-lock/cli-verify.ts +122 -0
- package/src/domain-lock/index.ts +220 -0
- package/src/engine/activity-routes.ts +116 -0
- package/src/engine/activity.ts +62 -2
- package/src/engine/agent-config.ts +190 -24
- package/src/engine/agent-memory.ts +1062 -0
- package/src/engine/agent-routes.ts +379 -0
- package/src/engine/approvals.ts +309 -2
- package/src/engine/catalog-routes.ts +155 -0
- package/src/engine/cli-build-skill.ts +285 -0
- package/src/engine/cli-submit-skill.ts +200 -0
- package/src/engine/cli-validate.ts +188 -0
- package/src/engine/communication-routes.ts +139 -0
- package/src/engine/communication.ts +759 -0
- package/src/engine/community-registry.ts +1509 -0
- package/src/engine/community-routes.ts +233 -0
- package/src/engine/compliance-routes.ts +93 -0
- package/src/engine/compliance.ts +325 -0
- package/src/engine/db-adapter.ts +349 -1
- package/src/engine/db-schema.ts +971 -23
- package/src/engine/deploy-schema-routes.ts +176 -0
- package/src/engine/deployer.ts +6 -6
- package/src/engine/dlp-routes.ts +59 -0
- package/src/engine/dlp.ts +231 -0
- package/src/engine/guardrail-routes.ts +125 -0
- package/src/engine/guardrails.ts +403 -0
- package/src/engine/index.ts +131 -10
- package/src/engine/journal-routes.ts +56 -0
- package/src/engine/journal.ts +249 -0
- package/src/engine/knowledge-contribution-routes.ts +385 -0
- package/src/engine/knowledge-contribution.ts +1319 -0
- package/src/engine/knowledge-routes.ts +68 -0
- package/src/engine/knowledge.ts +73 -1
- package/src/engine/lifecycle.ts +487 -31
- package/src/engine/memory-routes.ts +142 -0
- package/src/engine/oauth-connect-routes.ts +366 -0
- package/src/engine/oauth-connect.ts +304 -0
- package/src/engine/onboarding-routes.ts +140 -0
- package/src/engine/onboarding.ts +574 -0
- package/src/engine/org-approval-routes.ts +146 -0
- package/src/engine/org-policies.ts +497 -0
- package/src/engine/policy-import-routes.ts +125 -0
- package/src/engine/policy-import.ts +1186 -0
- package/src/engine/policy-routes.ts +163 -0
- package/src/engine/routes.ts +239 -482
- package/src/engine/skill-updater-routes.ts +132 -0
- package/src/engine/skill-updater.ts +480 -0
- package/src/engine/skill-validator.ts +331 -0
- package/src/engine/skills/enterprise-calendar.ts +142 -0
- package/src/engine/skills/enterprise-code-sandbox.ts +112 -0
- package/src/engine/skills/enterprise-database.ts +122 -0
- package/src/engine/skills/enterprise-diff.ts +94 -0
- package/src/engine/skills/enterprise-documents.ts +161 -0
- package/src/engine/skills/enterprise-finance.ts +109 -0
- package/src/engine/skills/enterprise-http.ts +98 -0
- package/src/engine/skills/enterprise-knowledge-search.ts +106 -0
- package/src/engine/skills/enterprise-logs.ts +115 -0
- package/src/engine/skills/enterprise-notifications.ts +119 -0
- package/src/engine/skills/enterprise-security-scan.ts +124 -0
- package/src/engine/skills/enterprise-spreadsheet.ts +170 -0
- package/src/engine/skills/enterprise-translation.ts +111 -0
- package/src/engine/skills/enterprise-vision.ts +107 -0
- package/src/engine/skills/enterprise-web-research.ts +114 -0
- package/src/engine/skills/enterprise-workflow.ts +109 -0
- package/src/engine/skills/gws-admin.ts +17 -0
- package/src/engine/skills/gws-calendar.ts +19 -0
- package/src/engine/skills/gws-chat.ts +16 -0
- package/src/engine/skills/gws-docs.ts +17 -0
- package/src/engine/skills/gws-drive.ts +20 -0
- package/src/engine/skills/gws-forms.ts +16 -0
- package/src/engine/skills/gws-gmail.ts +20 -0
- package/src/engine/skills/gws-groups.ts +16 -0
- package/src/engine/skills/gws-keep.ts +16 -0
- package/src/engine/skills/gws-meet.ts +16 -0
- package/src/engine/skills/gws-sheets.ts +18 -0
- package/src/engine/skills/gws-sites.ts +15 -0
- package/src/engine/skills/gws-slides.ts +16 -0
- package/src/engine/skills/gws-vault.ts +16 -0
- package/src/engine/skills/index.ts +121 -0
- package/src/engine/skills/m365-admin.ts +17 -0
- package/src/engine/skills/m365-bookings.ts +16 -0
- package/src/engine/skills/m365-copilot.ts +16 -0
- package/src/engine/skills/m365-excel.ts +59 -0
- package/src/engine/skills/m365-forms.ts +16 -0
- package/src/engine/skills/m365-onedrive.ts +59 -0
- package/src/engine/skills/m365-onenote.ts +16 -0
- package/src/engine/skills/m365-outlook.ts +26 -0
- package/src/engine/skills/m365-planner.ts +17 -0
- package/src/engine/skills/m365-power-automate.ts +17 -0
- package/src/engine/skills/m365-power-bi.ts +18 -0
- package/src/engine/skills/m365-powerpoint.ts +32 -0
- package/src/engine/skills/m365-sharepoint.ts +19 -0
- package/src/engine/skills/m365-teams.ts +20 -0
- package/src/engine/skills/m365-todo.ts +16 -0
- package/src/engine/skills/m365-whiteboard.ts +15 -0
- package/src/engine/skills/m365-word.ts +41 -0
- package/src/engine/skills.ts +353 -17
- package/src/engine/soul-library.ts +142 -0
- package/src/engine/soul-templates.json +1525 -0
- package/src/engine/storage-manager.ts +252 -0
- package/src/engine/storage-routes.ts +113 -0
- package/src/engine/storage.ts +528 -0
- package/src/engine/tenant.ts +69 -5
- package/src/engine/tool-catalog.ts +177 -13
- package/src/engine/vault-routes.ts +130 -0
- package/src/engine/vault.ts +544 -0
- package/src/engine/workforce-routes.ts +282 -0
- package/src/engine/workforce.ts +957 -0
- package/src/index.ts +9 -1
- package/src/lib/cidr.ts +122 -0
- package/src/lib/config-store.ts +86 -0
- package/src/mcp/adapters/activecampaign.adapter.ts +391 -0
- package/src/mcp/adapters/adobe-sign.adapter.ts +469 -0
- package/src/mcp/adapters/adp.adapter.ts +358 -0
- package/src/mcp/adapters/airtable.adapter.ts +273 -0
- package/src/mcp/adapters/apollo.adapter.ts +420 -0
- package/src/mcp/adapters/asana.adapter.ts +315 -0
- package/src/mcp/adapters/auth0.adapter.ts +386 -0
- package/src/mcp/adapters/aws.adapter.ts +345 -0
- package/src/mcp/adapters/azure-devops.adapter.ts +389 -0
- package/src/mcp/adapters/bamboohr.adapter.ts +376 -0
- package/src/mcp/adapters/basecamp.adapter.ts +366 -0
- package/src/mcp/adapters/bigcommerce.adapter.ts +429 -0
- package/src/mcp/adapters/bitbucket.adapter.ts +260 -0
- package/src/mcp/adapters/box.adapter.ts +350 -0
- package/src/mcp/adapters/brex.adapter.ts +367 -0
- package/src/mcp/adapters/buffer.adapter.ts +303 -0
- package/src/mcp/adapters/calendly.adapter.ts +262 -0
- package/src/mcp/adapters/canva.adapter.ts +256 -0
- package/src/mcp/adapters/chargebee.adapter.ts +448 -0
- package/src/mcp/adapters/circleci.adapter.ts +216 -0
- package/src/mcp/adapters/clickup.adapter.ts +335 -0
- package/src/mcp/adapters/close.adapter.ts +390 -0
- package/src/mcp/adapters/cloudflare.adapter.ts +377 -0
- package/src/mcp/adapters/confluence.adapter.ts +301 -0
- package/src/mcp/adapters/contentful.adapter.ts +355 -0
- package/src/mcp/adapters/copper.adapter.ts +468 -0
- package/src/mcp/adapters/crisp.adapter.ts +415 -0
- package/src/mcp/adapters/crowdstrike.adapter.ts +413 -0
- package/src/mcp/adapters/datadog.adapter.ts +373 -0
- package/src/mcp/adapters/digitalocean.adapter.ts +336 -0
- package/src/mcp/adapters/discord.adapter.ts +248 -0
- package/src/mcp/adapters/docker.adapter.ts +238 -0
- package/src/mcp/adapters/docusign.adapter.ts +431 -0
- package/src/mcp/adapters/drift.adapter.ts +386 -0
- package/src/mcp/adapters/dropbox.adapter.ts +315 -0
- package/src/mcp/adapters/figma.adapter.ts +302 -0
- package/src/mcp/adapters/firebase.adapter.ts +446 -0
- package/src/mcp/adapters/flyio.adapter.ts +302 -0
- package/src/mcp/adapters/freshbooks.adapter.ts +474 -0
- package/src/mcp/adapters/freshdesk.adapter.ts +441 -0
- package/src/mcp/adapters/freshsales.adapter.ts +457 -0
- package/src/mcp/adapters/freshservice.adapter.ts +481 -0
- package/src/mcp/adapters/front.adapter.ts +357 -0
- package/src/mcp/adapters/github-actions.adapter.ts +329 -0
- package/src/mcp/adapters/github.adapter.ts +387 -0
- package/src/mcp/adapters/gitlab.adapter.ts +368 -0
- package/src/mcp/adapters/gong.adapter.ts +386 -0
- package/src/mcp/adapters/google-ads.adapter.ts +363 -0
- package/src/mcp/adapters/google-analytics.adapter.ts +316 -0
- package/src/mcp/adapters/google-cloud.adapter.ts +312 -0
- package/src/mcp/adapters/google-drive.adapter.ts +387 -0
- package/src/mcp/adapters/gotomeeting.adapter.ts +255 -0
- package/src/mcp/adapters/grafana.adapter.ts +361 -0
- package/src/mcp/adapters/greenhouse.adapter.ts +354 -0
- package/src/mcp/adapters/gusto.adapter.ts +329 -0
- package/src/mcp/adapters/hashicorp-vault.adapter.ts +355 -0
- package/src/mcp/adapters/heroku.adapter.ts +291 -0
- package/src/mcp/adapters/hibob.adapter.ts +334 -0
- package/src/mcp/adapters/hootsuite.adapter.ts +322 -0
- package/src/mcp/adapters/hubspot.adapter.ts +400 -0
- package/src/mcp/adapters/huggingface.adapter.ts +349 -0
- package/src/mcp/adapters/index.ts +530 -0
- package/src/mcp/adapters/intercom.adapter.ts +269 -0
- package/src/mcp/adapters/jira.adapter.ts +482 -0
- package/src/mcp/adapters/klaviyo.adapter.ts +353 -0
- package/src/mcp/adapters/kubernetes.adapter.ts +431 -0
- package/src/mcp/adapters/lattice.adapter.ts +339 -0
- package/src/mcp/adapters/launchdarkly.adapter.ts +368 -0
- package/src/mcp/adapters/lever.adapter.ts +347 -0
- package/src/mcp/adapters/linear.adapter.ts +300 -0
- package/src/mcp/adapters/linkedin.adapter.ts +331 -0
- package/src/mcp/adapters/livechat.adapter.ts +259 -0
- package/src/mcp/adapters/loom.adapter.ts +230 -0
- package/src/mcp/adapters/mailchimp.adapter.ts +394 -0
- package/src/mcp/adapters/mailgun.adapter.ts +425 -0
- package/src/mcp/adapters/microsoft-teams.adapter.ts +251 -0
- package/src/mcp/adapters/miro.adapter.ts +274 -0
- package/src/mcp/adapters/mixpanel.adapter.ts +324 -0
- package/src/mcp/adapters/monday.adapter.ts +308 -0
- package/src/mcp/adapters/mongodb-atlas.adapter.ts +345 -0
- package/src/mcp/adapters/neon.adapter.ts +312 -0
- package/src/mcp/adapters/netlify.adapter.ts +324 -0
- package/src/mcp/adapters/netsuite.adapter.ts +411 -0
- package/src/mcp/adapters/newrelic.adapter.ts +339 -0
- package/src/mcp/adapters/notion.adapter.ts +338 -0
- package/src/mcp/adapters/okta.adapter.ts +394 -0
- package/src/mcp/adapters/openai.adapter.ts +315 -0
- package/src/mcp/adapters/opsgenie.adapter.ts +375 -0
- package/src/mcp/adapters/outreach.adapter.ts +372 -0
- package/src/mcp/adapters/paddle.adapter.ts +467 -0
- package/src/mcp/adapters/pagerduty.adapter.ts +412 -0
- package/src/mcp/adapters/pandadoc.adapter.ts +389 -0
- package/src/mcp/adapters/paypal.adapter.ts +465 -0
- package/src/mcp/adapters/personio.adapter.ts +401 -0
- package/src/mcp/adapters/pinecone.adapter.ts +340 -0
- package/src/mcp/adapters/pipedrive.adapter.ts +324 -0
- package/src/mcp/adapters/plaid.adapter.ts +444 -0
- package/src/mcp/adapters/postmark.adapter.ts +387 -0
- package/src/mcp/adapters/power-automate.adapter.ts +388 -0
- package/src/mcp/adapters/quickbooks.adapter.ts +431 -0
- package/src/mcp/adapters/recurly.adapter.ts +433 -0
- package/src/mcp/adapters/reddit.adapter.ts +371 -0
- package/src/mcp/adapters/render.adapter.ts +332 -0
- package/src/mcp/adapters/ringcentral.adapter.ts +281 -0
- package/src/mcp/adapters/rippling.adapter.ts +287 -0
- package/src/mcp/adapters/salesforce.adapter.ts +321 -0
- package/src/mcp/adapters/salesloft.adapter.ts +413 -0
- package/src/mcp/adapters/sanity.adapter.ts +363 -0
- package/src/mcp/adapters/sap.adapter.ts +483 -0
- package/src/mcp/adapters/segment.adapter.ts +260 -0
- package/src/mcp/adapters/sendgrid.adapter.ts +265 -0
- package/src/mcp/adapters/sentry.adapter.ts +331 -0
- package/src/mcp/adapters/servicenow.adapter.ts +468 -0
- package/src/mcp/adapters/shopify.adapter.ts +451 -0
- package/src/mcp/adapters/shortcut.adapter.ts +290 -0
- package/src/mcp/adapters/slack.adapter.ts +380 -0
- package/src/mcp/adapters/smartsheet.adapter.ts +326 -0
- package/src/mcp/adapters/snowflake.adapter.ts +347 -0
- package/src/mcp/adapters/snyk.adapter.ts +394 -0
- package/src/mcp/adapters/splunk.adapter.ts +403 -0
- package/src/mcp/adapters/square.adapter.ts +467 -0
- package/src/mcp/adapters/statuspage.adapter.ts +401 -0
- package/src/mcp/adapters/stripe.adapter.ts +380 -0
- package/src/mcp/adapters/supabase.adapter.ts +334 -0
- package/src/mcp/adapters/teamwork.adapter.ts +404 -0
- package/src/mcp/adapters/telegram.adapter.ts +299 -0
- package/src/mcp/adapters/terraform.adapter.ts +300 -0
- package/src/mcp/adapters/todoist.adapter.ts +239 -0
- package/src/mcp/adapters/trello.adapter.ts +316 -0
- package/src/mcp/adapters/twilio.adapter.ts +233 -0
- package/src/mcp/adapters/twitter.adapter.ts +348 -0
- package/src/mcp/adapters/vercel.adapter.ts +219 -0
- package/src/mcp/adapters/weaviate.adapter.ts +371 -0
- package/src/mcp/adapters/webex.adapter.ts +237 -0
- package/src/mcp/adapters/webflow.adapter.ts +287 -0
- package/src/mcp/adapters/whatsapp.adapter.ts +273 -0
- package/src/mcp/adapters/whereby.adapter.ts +240 -0
- package/src/mcp/adapters/woocommerce.adapter.ts +454 -0
- package/src/mcp/adapters/wordpress.adapter.ts +455 -0
- package/src/mcp/adapters/workday.adapter.ts +354 -0
- package/src/mcp/adapters/wrike.adapter.ts +349 -0
- package/src/mcp/adapters/xero.adapter.ts +472 -0
- package/src/mcp/adapters/youtube.adapter.ts +401 -0
- package/src/mcp/adapters/zendesk.adapter.ts +399 -0
- package/src/mcp/adapters/zoho-crm.adapter.ts +410 -0
- package/src/mcp/adapters/zoom.adapter.ts +241 -0
- package/src/mcp/adapters/zuora.adapter.ts +476 -0
- package/src/mcp/framework/api-executor.ts +192 -0
- package/src/mcp/framework/aws-sigv4.ts +216 -0
- package/src/mcp/framework/credential-resolver.ts +128 -0
- package/src/mcp/framework/skill-mcp-framework.ts +226 -0
- package/src/mcp/framework/types.ts +130 -0
- package/src/mcp/index.ts +124 -0
- package/src/middleware/egress-filter.ts +81 -0
- package/src/middleware/firewall.ts +121 -0
- package/src/middleware/index.ts +33 -0
- package/src/registry/cli.ts +63 -0
- package/src/registry/server.ts +504 -0
- package/src/runtime/agent-loop.ts +504 -0
- package/src/runtime/email-channel.ts +120 -0
- package/src/runtime/followup.ts +211 -0
- package/src/runtime/gateway.ts +260 -0
- package/src/runtime/hooks.ts +472 -0
- package/src/runtime/index.ts +679 -0
- package/src/runtime/llm-client.ts +1019 -0
- package/src/runtime/providers.ts +231 -0
- package/src/runtime/session-manager.ts +340 -0
- package/src/runtime/subagent.ts +154 -0
- package/src/runtime/tool-executor.ts +202 -0
- package/src/runtime/types.ts +215 -0
- package/src/server.ts +157 -45
- package/src/setup/company.ts +127 -8
- package/src/setup/database.ts +2 -1
- package/src/setup/domain.ts +33 -4
- package/src/setup/index.ts +19 -7
- package/src/setup/provision.ts +128 -8
- package/src/setup/registration.ts +227 -0
- package/src/types/hono-env.ts +14 -0
- package/src/types/optional-deps.d.ts +10 -0
- package/start-live.mjs +12 -3
- package/test-integration.mjs +628 -257
- package/dist/chunk-77IDQJL3.js +0 -7
- package/dist/chunk-BE7MXVLA.js +0 -757
- package/dist/chunk-BS2WCSHO.js +0 -48
- package/dist/chunk-FL3VQBGL.js +0 -757
- package/dist/chunk-IQWA44WT.js +0 -970
- package/dist/chunk-N2JVTNNJ.js +0 -2553
- package/dist/chunk-YFDSE4BW.js +0 -1355
- package/dist/db-adapter-DEWEFNIV.js +0 -7
- package/dist/factory-V37IG5AT.js +0 -9
- package/dist/routes-2JEPIIKC.js +0 -441
- package/dist/server-32YYCI3A.js +0 -8
- package/dist/server-H3C6WUOS.js +0 -8
- package/dist/sqlite-3K5YOZ4K.js +0 -439
- package/src/engine/agenticmail-bridge.ts +0 -296
- package/src/engine/openclaw-hook.ts +0 -371
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Persona / Identity fields
|
|
3
|
+
*
|
|
4
|
+
* Reusable constants, avatar-upload handler, and PersonaForm component
|
|
5
|
+
* used by both the Create-Agent wizard and the Agent-Detail "Personal" tab.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { h, useState, useRef, Fragment } from './utils.js';
|
|
9
|
+
|
|
10
|
+
// ─── Constants ───────────────────────────────────────────
|
|
11
|
+
|
|
12
|
+
export var CULTURES = [
|
|
13
|
+
{ id: 'north-american', name: 'North American', desc: 'Direct communication, informal greetings, action-oriented' },
|
|
14
|
+
{ id: 'british-european', name: 'British / European', desc: 'Polite understatement, structured formality, measured tone' },
|
|
15
|
+
{ id: 'latin-american', name: 'Latin American', desc: 'Warm, relationship-first, expressive and personable' },
|
|
16
|
+
{ id: 'middle-eastern', name: 'Middle Eastern', desc: 'Respectful, hospitable, context-aware formality' },
|
|
17
|
+
{ id: 'east-asian', name: 'East Asian', desc: 'Indirect harmony, respectful hierarchy, thoughtful precision' },
|
|
18
|
+
{ id: 'south-asian', name: 'South Asian', desc: 'Respectful, adaptable formality, relationship-aware' },
|
|
19
|
+
{ id: 'southeast-asian', name: 'Southeast Asian', desc: 'Gentle, diplomatic, consensus-seeking' },
|
|
20
|
+
{ id: 'african', name: 'African', desc: 'Community-oriented, warm, storytelling-rich' },
|
|
21
|
+
{ id: 'caribbean', name: 'Caribbean', desc: 'Friendly, vibrant, approachable warmth' },
|
|
22
|
+
{ id: 'australian-pacific', name: 'Australian / Pacific', desc: 'Casual, straightforward, egalitarian humor' },
|
|
23
|
+
];
|
|
24
|
+
|
|
25
|
+
export var LANGUAGES = [
|
|
26
|
+
{ id: 'en-us', name: 'English (American)' },
|
|
27
|
+
{ id: 'en-gb', name: 'English (British)' },
|
|
28
|
+
{ id: 'en-au', name: 'English (Australian)' },
|
|
29
|
+
{ id: 'es', name: 'Spanish' },
|
|
30
|
+
{ id: 'pt', name: 'Portuguese' },
|
|
31
|
+
{ id: 'fr', name: 'French' },
|
|
32
|
+
{ id: 'de', name: 'German' },
|
|
33
|
+
{ id: 'ja', name: 'Japanese' },
|
|
34
|
+
{ id: 'ko', name: 'Korean' },
|
|
35
|
+
{ id: 'zh', name: 'Mandarin' },
|
|
36
|
+
{ id: 'hi', name: 'Hindi' },
|
|
37
|
+
{ id: 'ar', name: 'Arabic' },
|
|
38
|
+
{ id: 'yo', name: 'Yoruba' },
|
|
39
|
+
{ id: 'ig', name: 'Igbo' },
|
|
40
|
+
{ id: 'sw', name: 'Swahili' },
|
|
41
|
+
{ id: 'it', name: 'Italian' },
|
|
42
|
+
{ id: 'nl', name: 'Dutch' },
|
|
43
|
+
{ id: 'ru', name: 'Russian' },
|
|
44
|
+
{ id: 'tr', name: 'Turkish' },
|
|
45
|
+
{ id: 'pl', name: 'Polish' },
|
|
46
|
+
{ id: 'th', name: 'Thai' },
|
|
47
|
+
{ id: 'vi', name: 'Vietnamese' },
|
|
48
|
+
{ id: 'id', name: 'Indonesian' },
|
|
49
|
+
{ id: 'ms', name: 'Malay' },
|
|
50
|
+
{ id: 'tl', name: 'Filipino (Tagalog)' },
|
|
51
|
+
];
|
|
52
|
+
|
|
53
|
+
export var GENDER_OPTIONS = [
|
|
54
|
+
{ id: 'male', label: 'Male' },
|
|
55
|
+
{ id: 'female', label: 'Female' },
|
|
56
|
+
{ id: 'non-binary', label: 'Non-binary' },
|
|
57
|
+
{ id: '', label: 'Not specified' },
|
|
58
|
+
];
|
|
59
|
+
|
|
60
|
+
export var MARITAL_OPTIONS = [
|
|
61
|
+
{ id: 'single', label: 'Single' },
|
|
62
|
+
{ id: 'married', label: 'Married' },
|
|
63
|
+
{ id: 'divorced', label: 'Divorced' },
|
|
64
|
+
{ id: '', label: 'Not specified' },
|
|
65
|
+
];
|
|
66
|
+
|
|
67
|
+
export var DEFAULT_TRAITS = {
|
|
68
|
+
communication: 'direct',
|
|
69
|
+
detail: 'detail-oriented',
|
|
70
|
+
energy: 'calm',
|
|
71
|
+
humor: 'warm',
|
|
72
|
+
formality: 'adaptive',
|
|
73
|
+
empathy: 'moderate',
|
|
74
|
+
patience: 'patient',
|
|
75
|
+
creativity: 'creative',
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
export var TRAIT_DEFINITIONS = [
|
|
79
|
+
{ key: 'communication', label: 'Style', options: [{ id: 'direct', label: 'Direct' }, { id: 'diplomatic', label: 'Diplomatic' }] },
|
|
80
|
+
{ key: 'detail', label: 'Focus', options: [{ id: 'big-picture', label: 'Big-picture' }, { id: 'detail-oriented', label: 'Detail-oriented' }] },
|
|
81
|
+
{ key: 'energy', label: 'Energy', options: [{ id: 'enthusiastic', label: 'Enthusiastic' }, { id: 'calm', label: 'Calm & measured' }] },
|
|
82
|
+
{ key: 'humor', label: 'Humor', options: [{ id: 'witty', label: 'Witty' }, { id: 'dry', label: 'Dry' }, { id: 'warm', label: 'Warm' }, { id: 'none', label: 'None' }] },
|
|
83
|
+
{ key: 'formality', label: 'Formality', options: [{ id: 'formal', label: 'Formal' }, { id: 'casual', label: 'Casual' }, { id: 'adaptive', label: 'Adaptive' }] },
|
|
84
|
+
{ key: 'empathy', label: 'Empathy', options: [{ id: 'high', label: 'High' }, { id: 'moderate', label: 'Moderate' }, { id: 'reserved', label: 'Reserved' }] },
|
|
85
|
+
{ key: 'patience', label: 'Patience', options: [{ id: 'patient', label: 'Patient' }, { id: 'efficient', label: 'Efficient' }] },
|
|
86
|
+
{ key: 'creativity', label: 'Creativity', options: [{ id: 'creative', label: 'Creative' }, { id: 'conventional', label: 'Conventional' }] },
|
|
87
|
+
];
|
|
88
|
+
|
|
89
|
+
// ─── Avatar Upload Helper ────────────────────────────────
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Reads an image File, auto-resizes if too large, and calls onResult(dataUrl).
|
|
93
|
+
* @param {File} file
|
|
94
|
+
* @param {(dataUrl: string) => void} onResult
|
|
95
|
+
* @param {(msg: string, level: string) => void} toast
|
|
96
|
+
*/
|
|
97
|
+
export function handleAvatarFile(file, onResult, toast) {
|
|
98
|
+
if (!file) return;
|
|
99
|
+
if (!file.type.match(/^image\/(jpeg|png|webp)$/)) {
|
|
100
|
+
toast('Please upload a JPG, PNG, or WebP image', 'error');
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
var reader = new FileReader();
|
|
104
|
+
reader.onload = function(e) {
|
|
105
|
+
var dataUrl = e.target.result;
|
|
106
|
+
if (dataUrl.length <= 512000) {
|
|
107
|
+
onResult(dataUrl);
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
var img = new Image();
|
|
111
|
+
img.onload = function() {
|
|
112
|
+
var canvas = document.createElement('canvas');
|
|
113
|
+
var maxDim = 256;
|
|
114
|
+
var w = img.width; var ht = img.height;
|
|
115
|
+
if (w > ht) { ht = Math.round(ht * maxDim / w); w = maxDim; }
|
|
116
|
+
else { w = Math.round(w * maxDim / ht); ht = maxDim; }
|
|
117
|
+
canvas.width = w; canvas.height = ht;
|
|
118
|
+
canvas.getContext('2d').drawImage(img, 0, 0, w, ht);
|
|
119
|
+
var quality = 0.8;
|
|
120
|
+
var result = canvas.toDataURL('image/jpeg', quality);
|
|
121
|
+
while (result.length > 512000 && quality > 0.1) {
|
|
122
|
+
quality -= 0.1;
|
|
123
|
+
result = canvas.toDataURL('image/jpeg', quality);
|
|
124
|
+
}
|
|
125
|
+
onResult(result);
|
|
126
|
+
toast('Image auto-resized to fit', 'info');
|
|
127
|
+
};
|
|
128
|
+
img.src = dataUrl;
|
|
129
|
+
};
|
|
130
|
+
reader.readAsDataURL(file);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// ─── Computed Age ────────────────────────────────────────
|
|
134
|
+
|
|
135
|
+
export function computeAge(dateOfBirth) {
|
|
136
|
+
if (!dateOfBirth) return null;
|
|
137
|
+
var dob = new Date(dateOfBirth);
|
|
138
|
+
var today = new Date();
|
|
139
|
+
var age = today.getFullYear() - dob.getFullYear();
|
|
140
|
+
var m = today.getMonth() - dob.getMonth();
|
|
141
|
+
if (m < 0 || (m === 0 && today.getDate() < dob.getDate())) age--;
|
|
142
|
+
return age;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// ─── PersonaForm Component ──────────────────────────────
|
|
146
|
+
//
|
|
147
|
+
// Renders the full persona editing UI — avatar upload, DOB,
|
|
148
|
+
// gender, marital status, cultural background, language, and
|
|
149
|
+
// personality trait toggles.
|
|
150
|
+
//
|
|
151
|
+
// Props:
|
|
152
|
+
// form — object with { avatar, dateOfBirth, gender, maritalStatus,
|
|
153
|
+
// culturalBackground, language, traits }
|
|
154
|
+
// set — (key, value) => void — updates a single form field
|
|
155
|
+
// toast — (msg, level) => void
|
|
156
|
+
// compact — (optional) if true, uses a slightly tighter layout
|
|
157
|
+
|
|
158
|
+
export function PersonaForm(props) {
|
|
159
|
+
var form = props.form;
|
|
160
|
+
var set = props.set;
|
|
161
|
+
var toast = props.toast;
|
|
162
|
+
var fileInputRef = useRef(null);
|
|
163
|
+
|
|
164
|
+
var onAvatarFile = function(file) {
|
|
165
|
+
handleAvatarFile(file, function(dataUrl) { set('avatar', dataUrl); }, toast);
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
var traits = form.traits || DEFAULT_TRAITS;
|
|
169
|
+
|
|
170
|
+
var setTrait = function(key, value) {
|
|
171
|
+
set('traits', Object.assign({}, traits, (function() { var o = {}; o[key] = value; return o; })()));
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
var maxDob = new Date(new Date().getFullYear() - 18, new Date().getMonth(), new Date().getDate()).toISOString().split('T')[0];
|
|
175
|
+
var age = computeAge(form.dateOfBirth);
|
|
176
|
+
|
|
177
|
+
return h(Fragment, null,
|
|
178
|
+
// ─── Avatar + DOB + Gender + Marital ─────────────
|
|
179
|
+
h('div', { style: { display: 'flex', gap: 24, marginBottom: 24, alignItems: 'flex-start' } },
|
|
180
|
+
|
|
181
|
+
// Avatar upload
|
|
182
|
+
h('div', { style: { textAlign: 'center' } },
|
|
183
|
+
h('div', {
|
|
184
|
+
className: 'avatar-upload',
|
|
185
|
+
onClick: function() { fileInputRef.current && fileInputRef.current.click(); },
|
|
186
|
+
onDragOver: function(e) { e.preventDefault(); e.stopPropagation(); },
|
|
187
|
+
onDrop: function(e) { e.preventDefault(); e.stopPropagation(); onAvatarFile(e.dataTransfer.files[0]); }
|
|
188
|
+
},
|
|
189
|
+
form.avatar
|
|
190
|
+
? h('img', { src: form.avatar, alt: 'Avatar' })
|
|
191
|
+
: h('div', { className: 'avatar-upload-hint' }, h('div', { style: { fontSize: 24, marginBottom: 2 } }, '+'), 'Upload', h('br'), 'photo'),
|
|
192
|
+
h('input', { ref: fileInputRef, type: 'file', accept: 'image/jpeg,image/png,image/webp', style: { display: 'none' }, onChange: function(e) { onAvatarFile(e.target.files[0]); } })
|
|
193
|
+
),
|
|
194
|
+
form.avatar && h('button', { className: 'btn btn-ghost btn-sm', style: { marginTop: 6, fontSize: 11 }, onClick: function() { set('avatar', null); } }, 'Remove'),
|
|
195
|
+
h('p', { className: 'form-help', style: { marginTop: 4 } }, 'JPG, PNG, WebP. Large images auto-resized.')
|
|
196
|
+
),
|
|
197
|
+
|
|
198
|
+
// DOB + Gender + Marital
|
|
199
|
+
h('div', { style: { flex: 1 } },
|
|
200
|
+
|
|
201
|
+
// Date of birth + computed age
|
|
202
|
+
h('div', { style: { display: 'grid', gridTemplateColumns: '1fr auto', gap: 12, alignItems: 'end' } },
|
|
203
|
+
h('div', { className: 'form-group' },
|
|
204
|
+
h('label', { className: 'form-label' }, 'Date of Birth'),
|
|
205
|
+
h('input', { className: 'input', type: 'date', value: form.dateOfBirth || '', onChange: function(e) { set('dateOfBirth', e.target.value); }, max: maxDob }),
|
|
206
|
+
h('p', { className: 'form-help' }, 'They\'ll age naturally — and get a birthday email each year')
|
|
207
|
+
),
|
|
208
|
+
age !== null && h('div', { style: { padding: '8px 14px', background: 'var(--accent-soft)', borderRadius: 'var(--radius)', fontSize: 13, fontWeight: 600, color: 'var(--accent-text)', whiteSpace: 'nowrap', marginBottom: 24 } }, age + ' years old')
|
|
209
|
+
),
|
|
210
|
+
|
|
211
|
+
// Gender
|
|
212
|
+
h('div', { className: 'form-group' },
|
|
213
|
+
h('label', { className: 'form-label' }, 'Gender'),
|
|
214
|
+
h('div', { className: 'persona-cards' },
|
|
215
|
+
GENDER_OPTIONS.map(function(g) {
|
|
216
|
+
return h('div', { key: g.id, className: 'persona-card' + (form.gender === g.id ? ' selected' : ''), onClick: function() { set('gender', g.id); } }, g.label);
|
|
217
|
+
})
|
|
218
|
+
)
|
|
219
|
+
),
|
|
220
|
+
|
|
221
|
+
// Marital status
|
|
222
|
+
h('div', { className: 'form-group' },
|
|
223
|
+
h('label', { className: 'form-label' }, 'Marital Status'),
|
|
224
|
+
h('div', { className: 'persona-cards' },
|
|
225
|
+
MARITAL_OPTIONS.map(function(m) {
|
|
226
|
+
return h('div', { key: m.id, className: 'persona-card' + (form.maritalStatus === m.id ? ' selected' : ''), onClick: function() { set('maritalStatus', m.id); } }, m.label);
|
|
227
|
+
})
|
|
228
|
+
)
|
|
229
|
+
)
|
|
230
|
+
)
|
|
231
|
+
),
|
|
232
|
+
|
|
233
|
+
// ─── Cultural Background ─────────────────────────
|
|
234
|
+
h('div', { className: 'form-group', style: { marginBottom: 20 } },
|
|
235
|
+
h('label', { className: 'form-label' }, 'Cultural Background'),
|
|
236
|
+
h('p', { className: 'form-help', style: { marginTop: -2, marginBottom: 8 } }, 'Shapes communication style, formality, greetings, and cultural references.'),
|
|
237
|
+
h('div', { className: 'culture-grid' },
|
|
238
|
+
CULTURES.map(function(c) {
|
|
239
|
+
return h('div', { key: c.id, className: 'culture-card' + (form.culturalBackground === c.id ? ' selected' : ''), onClick: function() { set('culturalBackground', form.culturalBackground === c.id ? '' : c.id); } },
|
|
240
|
+
h('h4', null, c.name),
|
|
241
|
+
h('p', null, c.desc)
|
|
242
|
+
);
|
|
243
|
+
})
|
|
244
|
+
)
|
|
245
|
+
),
|
|
246
|
+
|
|
247
|
+
// ─── Language ────────────────────────────────────
|
|
248
|
+
h('div', { className: 'form-group', style: { marginBottom: 20 } },
|
|
249
|
+
h('label', { className: 'form-label' }, 'Language & Dialect'),
|
|
250
|
+
h('select', { className: 'input', value: form.language || 'en-us', onChange: function(e) { set('language', e.target.value); }, style: { maxWidth: 300 } },
|
|
251
|
+
LANGUAGES.map(function(l) { return h('option', { key: l.id, value: l.id }, l.name); })
|
|
252
|
+
)
|
|
253
|
+
),
|
|
254
|
+
|
|
255
|
+
// ─── Personality Traits ──────────────────────────
|
|
256
|
+
h('div', { className: 'form-group' },
|
|
257
|
+
h('label', { className: 'form-label' }, 'Personality Traits'),
|
|
258
|
+
h('p', { className: 'form-help', style: { marginTop: -2, marginBottom: 10 } }, 'Fine-tune how this agent expresses itself.'),
|
|
259
|
+
TRAIT_DEFINITIONS.map(function(td) {
|
|
260
|
+
return h('div', { key: td.key, className: 'trait-row' },
|
|
261
|
+
h('span', { className: 'trait-label' }, td.label),
|
|
262
|
+
h('div', { className: 'trait-toggle' },
|
|
263
|
+
td.options.map(function(opt) {
|
|
264
|
+
return h('div', { key: opt.id, className: 'trait-option' + (traits[td.key] === opt.id ? ' active' : ''), onClick: function() { setTrait(td.key, opt.id); } }, opt.label);
|
|
265
|
+
})
|
|
266
|
+
)
|
|
267
|
+
);
|
|
268
|
+
})
|
|
269
|
+
)
|
|
270
|
+
);
|
|
271
|
+
}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import { h } from './utils.js';
|
|
2
|
+
|
|
3
|
+
var _h4 = { marginTop: 16, marginBottom: 8, fontSize: 14 };
|
|
4
|
+
var _ul = { paddingLeft: 20, margin: '4px 0 8px' };
|
|
5
|
+
var _tip = { marginTop: 12, padding: 12, background: 'var(--bg-secondary, #1e293b)', borderRadius: 'var(--radius, 8px)', fontSize: 13 };
|
|
6
|
+
|
|
7
|
+
export var SETTINGS_HELP = {
|
|
8
|
+
|
|
9
|
+
general: {
|
|
10
|
+
label: 'General Settings',
|
|
11
|
+
content: function() {
|
|
12
|
+
return h('div', null,
|
|
13
|
+
h('p', null, 'The General tab is where you configure your organization\'s basic identity and email delivery. These are the foundational settings that affect how your AgenticMail instance looks and operates.'),
|
|
14
|
+
h('h4', { style: _h4 }, 'Organization'),
|
|
15
|
+
h('ul', { style: _ul },
|
|
16
|
+
h('li', null, h('strong', null, 'Company Name'), ' \u2014 The name that appears throughout the dashboard and in email headers sent by your agents.'),
|
|
17
|
+
h('li', null, h('strong', null, 'Domain'), ' \u2014 Your company\'s primary domain (e.g., agenticmail.io). Used for agent email addresses and identifying your organization.'),
|
|
18
|
+
h('li', null, h('strong', null, 'Subdomain'), ' \u2014 Your unique identifier on the AgenticMail cloud platform. Your dashboard is accessible at <subdomain>.agenticmail.io.'),
|
|
19
|
+
h('li', null, h('strong', null, 'Plan'), ' \u2014 Controls how many agents you can create and which features are available. Self-hosted installations have no restrictions.'),
|
|
20
|
+
h('li', null, h('strong', null, 'Logo URL'), ' \u2014 A link to your company logo. It appears in the top-left of the dashboard and in agent-sent emails.'),
|
|
21
|
+
h('li', null, h('strong', null, 'Primary Brand Color'), ' \u2014 Customizes the accent color across the entire dashboard to match your brand identity.')
|
|
22
|
+
),
|
|
23
|
+
h('h4', { style: _h4 }, 'SMTP Configuration'),
|
|
24
|
+
h('p', null, 'Controls how outgoing emails are delivered. Leave these blank to use the default AgenticMail relay. Configure a custom SMTP server if you want emails to come from your own mail infrastructure.'),
|
|
25
|
+
h('ul', { style: _ul },
|
|
26
|
+
h('li', null, h('strong', null, 'SMTP Host / Port'), ' \u2014 The address and port of your email server (e.g., smtp.gmail.com on port 587).'),
|
|
27
|
+
h('li', null, h('strong', null, 'SMTP Username / Password'), ' \u2014 Credentials for authenticating with your email server. For Gmail, use an App Password (not your regular password).'),
|
|
28
|
+
h('li', null, h('strong', null, 'DKIM Private Key'), ' \u2014 Optional. If provided, outgoing emails are cryptographically signed, improving deliverability and preventing spoofing.')
|
|
29
|
+
)
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
|
|
34
|
+
'api-keys': {
|
|
35
|
+
label: 'API Keys',
|
|
36
|
+
content: function() {
|
|
37
|
+
return h('div', null,
|
|
38
|
+
h('p', null, 'API keys let external applications and scripts interact with your AgenticMail instance programmatically. Use them to integrate AgenticMail with your existing tools, CI/CD pipelines, or custom applications.'),
|
|
39
|
+
h('h4', { style: _h4 }, 'When to use API keys'),
|
|
40
|
+
h('ul', { style: _ul },
|
|
41
|
+
h('li', null, 'Connecting a custom application that needs to create, manage, or monitor agents.'),
|
|
42
|
+
h('li', null, 'Building automated workflows that trigger agent actions from external systems.'),
|
|
43
|
+
h('li', null, 'Integrating with third-party platforms that need to read or write data through AgenticMail.')
|
|
44
|
+
),
|
|
45
|
+
h('h4', { style: _h4 }, 'Key concepts'),
|
|
46
|
+
h('ul', { style: _ul },
|
|
47
|
+
h('li', null, h('strong', null, 'Key Name'), ' \u2014 A label to help you remember what each key is used for (e.g., "Production Backend" or "CI/CD Pipeline").'),
|
|
48
|
+
h('li', null, h('strong', null, 'Key Prefix'), ' \u2014 The visible portion of the key shown in the table for identification. The full key is only shown once when created.'),
|
|
49
|
+
h('li', null, h('strong', null, 'Scopes'), ' \u2014 What the key can do: read (view data), write (create and update), or admin (full access including deleting resources).'),
|
|
50
|
+
h('li', null, h('strong', null, 'Revoke'), ' \u2014 Permanently disables a key. Any application using that key will immediately lose access. This cannot be undone.')
|
|
51
|
+
),
|
|
52
|
+
h('div', { style: _tip }, 'Important: Copy your API key immediately after creation. For security, the full key is never shown again.')
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
|
|
57
|
+
authentication: {
|
|
58
|
+
label: 'Authentication',
|
|
59
|
+
content: function() {
|
|
60
|
+
return h('div', null,
|
|
61
|
+
h('p', null, 'Authentication settings control how team members sign in to the dashboard. By default, users sign in with a username and password. You can add Single Sign-On (SSO) so team members use their existing corporate login instead.'),
|
|
62
|
+
h('h4', { style: _h4 }, 'What is Single Sign-On (SSO)?'),
|
|
63
|
+
h('p', null, 'SSO lets team members sign in using their existing company credentials (such as Google Workspace, Microsoft 365, or Okta). This is more secure and convenient because users don\'t need a separate password for AgenticMail.'),
|
|
64
|
+
h('h4', { style: _h4 }, 'SAML 2.0'),
|
|
65
|
+
h('p', null, 'Best for large organizations using Okta, OneLogin, or Azure Active Directory.'),
|
|
66
|
+
h('ul', { style: _ul },
|
|
67
|
+
h('li', null, h('strong', null, 'Entity ID'), ' \u2014 A unique identifier your identity provider uses to recognize AgenticMail.'),
|
|
68
|
+
h('li', null, h('strong', null, 'SSO URL'), ' \u2014 The web address where users are redirected to sign in.'),
|
|
69
|
+
h('li', null, h('strong', null, 'Certificate'), ' \u2014 A security certificate from your identity provider that verifies sign-in responses are genuine.')
|
|
70
|
+
),
|
|
71
|
+
h('h4', { style: _h4 }, 'OpenID Connect (OIDC)'),
|
|
72
|
+
h('p', null, 'Best for organizations using Google Workspace, Microsoft 365, Auth0, or any modern OAuth provider.'),
|
|
73
|
+
h('ul', { style: _ul },
|
|
74
|
+
h('li', null, h('strong', null, 'Client ID & Secret'), ' \u2014 Credentials you receive when you register AgenticMail as an application in your identity provider.'),
|
|
75
|
+
h('li', null, h('strong', null, 'Discovery URL'), ' \u2014 A URL that automatically configures the connection. The Quick Setup buttons pre-fill this for popular providers.')
|
|
76
|
+
),
|
|
77
|
+
h('div', { style: _tip }, 'Tip: The provider buttons below the SSO forms pre-fill the Discovery URL. You still need to create an OAuth application in that provider\'s admin console and enter the Client ID and Secret it gives you.')
|
|
78
|
+
);
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
|
|
82
|
+
email: {
|
|
83
|
+
label: 'Email & Domain',
|
|
84
|
+
content: function() {
|
|
85
|
+
return h('div', null,
|
|
86
|
+
h('p', null, 'This tab controls how your AI agents send and receive email. There are two approaches depending on your needs.'),
|
|
87
|
+
h('h4', { style: _h4 }, 'Gmail / Outlook Relay'),
|
|
88
|
+
h('p', null, 'The quickest way to get started. Agents send email through your existing Gmail or Outlook account using "plus addressing" (e.g., yourname+agent@gmail.com). Good for testing and small teams.'),
|
|
89
|
+
h('ul', { style: _ul },
|
|
90
|
+
h('li', null, h('strong', null, 'Email Address'), ' \u2014 Your Gmail or Outlook address that agents will send from.'),
|
|
91
|
+
h('li', null, h('strong', null, 'App Password'), ' \u2014 A special password generated by Google or Microsoft specifically for third-party apps. This is NOT your regular account password.')
|
|
92
|
+
),
|
|
93
|
+
h('h4', { style: _h4 }, 'Custom Domain'),
|
|
94
|
+
h('p', null, 'The professional setup for production. Agents send from addresses like agent@yourdomain.com with full email authentication (DKIM, SPF, DMARC).'),
|
|
95
|
+
h('ul', { style: _ul },
|
|
96
|
+
h('li', null, h('strong', null, 'Domain'), ' \u2014 The domain you want agents to send email from.'),
|
|
97
|
+
h('li', null, h('strong', null, 'Cloudflare API Token'), ' \u2014 Used to automatically configure DNS records for email authentication. You can generate this from your Cloudflare dashboard under API Tokens.'),
|
|
98
|
+
h('li', null, h('strong', null, 'Cloudflare Account ID'), ' \u2014 Found in the Cloudflare dashboard sidebar. Identifies which account manages your domain\'s DNS.')
|
|
99
|
+
),
|
|
100
|
+
h('div', { style: _tip }, 'Tip: Start with relay mode for testing and switch to a custom domain when you\'re ready for production.')
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
|
|
105
|
+
deployments: {
|
|
106
|
+
label: 'Deployments',
|
|
107
|
+
content: function() {
|
|
108
|
+
return h('div', null,
|
|
109
|
+
h('p', null, 'Deploy credentials let AgenticMail deploy your AI agents to various hosting platforms. Think of these as saved login information for your deployment targets, so agents can be published with one click.'),
|
|
110
|
+
h('h4', { style: _h4 }, 'When to use this'),
|
|
111
|
+
h('p', null, 'If you want agents to run as standalone services (not just within the main AgenticMail server), you need deploy credentials for where they will be hosted.'),
|
|
112
|
+
h('h4', { style: _h4 }, 'Supported targets'),
|
|
113
|
+
h('ul', { style: _ul },
|
|
114
|
+
h('li', null, h('strong', null, 'Docker Registry'), ' \u2014 Push agent containers to a Docker registry (Docker Hub, GitHub Container Registry, AWS ECR, etc.). Enter the registry URL and login credentials.'),
|
|
115
|
+
h('li', null, h('strong', null, 'SSH / VPS'), ' \u2014 Deploy agents directly to a virtual private server. Provide the host address, SSH port, username, and private key.'),
|
|
116
|
+
h('li', null, h('strong', null, 'Fly.io'), ' \u2014 Deploy to Fly.io\'s global edge network. Enter your Fly.io API token from the Fly.io dashboard.'),
|
|
117
|
+
h('li', null, h('strong', null, 'Railway'), ' \u2014 Deploy to Railway\'s managed platform. Enter your Railway API token and project ID.')
|
|
118
|
+
),
|
|
119
|
+
h('div', { style: _tip }, 'Credentials are stored securely and encrypted at rest. Deleting a credential will cause any active deployments using it to fail on their next update.')
|
|
120
|
+
);
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
|
|
124
|
+
security: {
|
|
125
|
+
label: 'Tool Security',
|
|
126
|
+
content: function() {
|
|
127
|
+
return h('div', null,
|
|
128
|
+
h('p', null, 'Tool Security controls what your AI agents are allowed to do at the system level. These are safety guardrails that prevent agents from accidentally or maliciously accessing sensitive resources. These are organization-wide defaults \u2014 individual agents can have stricter (but not looser) overrides.'),
|
|
129
|
+
h('h4', { style: _h4 }, 'Security Sandboxes'),
|
|
130
|
+
h('ul', { style: _ul },
|
|
131
|
+
h('li', null, h('strong', null, 'Path Sandbox'), ' \u2014 Restricts which folders agents can read from or write to. Prevents access to sensitive files like configuration, passwords, or encryption keys. Add directories to "Allowed" to grant access; add patterns to "Blocked" to deny access.'),
|
|
132
|
+
h('li', null, h('strong', null, 'SSRF Protection'), ' \u2014 Prevents agents from making network requests to internal services, cloud metadata endpoints (like AWS 169.254.x.x), or private IP ranges. This stops a misbehaving agent from probing your internal network.'),
|
|
133
|
+
h('li', null, h('strong', null, 'Command Sanitizer'), ' \u2014 Controls which shell commands agents can execute. In Blocklist mode, known dangerous patterns are blocked. In Allowlist mode, agents can only run commands you explicitly permit.')
|
|
134
|
+
),
|
|
135
|
+
h('h4', { style: _h4 }, 'Middleware & Observability'),
|
|
136
|
+
h('ul', { style: _ul },
|
|
137
|
+
h('li', null, h('strong', null, 'Audit Logging'), ' \u2014 Records every tool action an agent takes: what it did, when, success/failure, and duration. Sensitive fields like passwords are automatically redacted.'),
|
|
138
|
+
h('li', null, h('strong', null, 'Rate Limiting'), ' \u2014 Limits how many times each tool can be called per minute per agent. Prevents any single agent from overwhelming the system. Adjust limits per tool type in the table.'),
|
|
139
|
+
h('li', null, h('strong', null, 'Circuit Breaker'), ' \u2014 Automatically pauses a tool that keeps failing (after 5 consecutive errors). Waits 30 seconds before retrying. Prevents error cascading when an external service is down.'),
|
|
140
|
+
h('li', null, h('strong', null, 'Telemetry'), ' \u2014 Collects performance metrics: call duration, success rates, and output sizes. Useful for identifying slow tools or agents using resources inefficiently.')
|
|
141
|
+
)
|
|
142
|
+
);
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
|
|
146
|
+
network: {
|
|
147
|
+
label: 'Network & Firewall',
|
|
148
|
+
content: function() {
|
|
149
|
+
return h('div', null,
|
|
150
|
+
h('p', null, 'Network & Firewall controls who can access your AgenticMail instance and what your agents can reach on the internet. Use these settings to lock down your deployment for production security.'),
|
|
151
|
+
h('h4', { style: _h4 }, 'IP Access Control'),
|
|
152
|
+
h('p', null, 'Restricts which IP addresses can reach the dashboard, APIs, and engine. In Allowlist mode, only listed IPs can connect. In Blocklist mode, all IPs are allowed except those you block. Use "Test an IP" to verify rules before saving.'),
|
|
153
|
+
h('h4', { style: _h4 }, 'Outbound Egress Rules'),
|
|
154
|
+
h('p', null, 'Controls which external websites and services your agents can reach. Allowlist mode means agents can only connect to hosts you approve. Blocklist mode lets agents reach everything except blocked hosts.'),
|
|
155
|
+
h('h4', { style: _h4 }, 'Proxy & Trusted Proxies'),
|
|
156
|
+
h('ul', { style: _ul },
|
|
157
|
+
h('li', null, h('strong', null, 'Proxy Configuration'), ' \u2014 If your network requires a proxy for outbound internet access (common in corporate environments), configure the HTTP/HTTPS proxy URLs here. "No-Proxy Hosts" bypass the proxy.'),
|
|
158
|
+
h('li', null, h('strong', null, 'Trusted Proxies'), ' \u2014 If AgenticMail is behind a load balancer or reverse proxy (Nginx, Traefik, AWS ALB), list those proxy IPs here so IP-based access control uses the real client IP.')
|
|
159
|
+
),
|
|
160
|
+
h('h4', { style: _h4 }, 'Network & Deployment Settings'),
|
|
161
|
+
h('ul', { style: _ul },
|
|
162
|
+
h('li', null, h('strong', null, 'CORS Origins'), ' \u2014 If you embed AgenticMail in another website, list that website\'s address here. Leave empty to allow all origins.'),
|
|
163
|
+
h('li', null, h('strong', null, 'Rate Limiting'), ' \u2014 Limits API requests per IP per minute. Protects against abuse and denial-of-service. "Skip Paths" excludes health-check endpoints.'),
|
|
164
|
+
h('li', null, h('strong', null, 'HTTPS Enforcement'), ' \u2014 Forces all connections to use encrypted HTTPS. Highly recommended for production.'),
|
|
165
|
+
h('li', null, h('strong', null, 'Security Headers'), ' \u2014 Browser security policies: HSTS forces HTTPS, X-Frame-Options prevents clickjacking, Content-Type-Options prevents MIME sniffing. The defaults are recommended for most deployments.')
|
|
166
|
+
)
|
|
167
|
+
);
|
|
168
|
+
}
|
|
169
|
+
},
|
|
170
|
+
|
|
171
|
+
integrations: {
|
|
172
|
+
label: 'Integrations',
|
|
173
|
+
content: function() {
|
|
174
|
+
return h('div', null,
|
|
175
|
+
h('p', null, 'Integrations connect your AI agents to external services and platforms. Once connected, agents can read from and write to these services as part of their workflows \u2014 for example, reading Jira tickets, posting Slack messages, or creating GitHub pull requests.'),
|
|
176
|
+
h('h4', { style: _h4 }, 'How integrations work'),
|
|
177
|
+
h('ul', { style: _ul },
|
|
178
|
+
h('li', null, h('strong', null, 'OAuth integrations'), ' \u2014 Services like Slack, GitHub, and Salesforce use OAuth. Clicking "Connect" opens a popup where you sign in and grant AgenticMail permission. Credentials are stored securely.'),
|
|
179
|
+
h('li', null, h('strong', null, 'Token-based integrations'), ' \u2014 Services like Discord and Linear require you to paste an API key or bot token that you generate in that service\'s admin panel.')
|
|
180
|
+
),
|
|
181
|
+
h('h4', { style: _h4 }, 'Managing integrations'),
|
|
182
|
+
h('ul', { style: _ul },
|
|
183
|
+
h('li', null, h('strong', null, 'Connected (green border)'), ' \u2014 The integration is active and agents can use it.'),
|
|
184
|
+
h('li', null, h('strong', null, 'Disconnect'), ' \u2014 Removes stored credentials. Agents using this integration will immediately lose access.'),
|
|
185
|
+
h('li', null, 'You can reconnect at any time by clicking "Connect" again.')
|
|
186
|
+
),
|
|
187
|
+
h('div', { style: _tip }, 'Tip: Only connect integrations your agents actually need. Each connection is a potential access point that should be reviewed periodically.')
|
|
188
|
+
);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
};
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TagInput — Reusable tag/list input component
|
|
3
|
+
*
|
|
4
|
+
* For managing string arrays (allowedDirs, blockedPatterns, allowedHosts, etc.)
|
|
5
|
+
* Renders list of badges with X remove buttons + an input field + Enter to add.
|
|
6
|
+
*
|
|
7
|
+
* Props:
|
|
8
|
+
* value: string[] — current array of tags
|
|
9
|
+
* onChange: fn(string[]) — called when array changes
|
|
10
|
+
* placeholder: string — input placeholder text
|
|
11
|
+
* label: string — form label (optional)
|
|
12
|
+
* mono: boolean — use monospace font for tags
|
|
13
|
+
* disabled: boolean — disable input and remove buttons
|
|
14
|
+
*/
|
|
15
|
+
import { h, useState } from './utils.js';
|
|
16
|
+
|
|
17
|
+
var badgeStyle = {
|
|
18
|
+
display: 'inline-flex', alignItems: 'center', gap: 4,
|
|
19
|
+
padding: '3px 8px', borderRadius: 4,
|
|
20
|
+
background: 'var(--bg-secondary)', border: '1px solid var(--border)',
|
|
21
|
+
fontSize: 12, lineHeight: 1.4, maxWidth: '100%', wordBreak: 'break-all'
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
var removeBtnStyle = {
|
|
25
|
+
background: 'none', border: 'none', cursor: 'pointer', padding: 0,
|
|
26
|
+
fontSize: 14, lineHeight: 1, color: 'var(--text-muted)', fontWeight: 700,
|
|
27
|
+
marginLeft: 2, flexShrink: 0
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export function TagInput(props) {
|
|
31
|
+
var value = props.value || [];
|
|
32
|
+
var onChange = props.onChange || function() {};
|
|
33
|
+
var disabled = props.disabled || false;
|
|
34
|
+
|
|
35
|
+
var _input = useState('');
|
|
36
|
+
var input = _input[0]; var setInput = _input[1];
|
|
37
|
+
|
|
38
|
+
var addTag = function() {
|
|
39
|
+
var trimmed = input.trim();
|
|
40
|
+
if (!trimmed || value.indexOf(trimmed) !== -1) return;
|
|
41
|
+
onChange(value.concat([trimmed]));
|
|
42
|
+
setInput('');
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
var removeTag = function(idx) {
|
|
46
|
+
var next = value.slice();
|
|
47
|
+
next.splice(idx, 1);
|
|
48
|
+
onChange(next);
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
var tagStyle = props.mono
|
|
52
|
+
? Object.assign({}, badgeStyle, { fontFamily: 'var(--font-mono, monospace)', fontSize: 11 })
|
|
53
|
+
: badgeStyle;
|
|
54
|
+
|
|
55
|
+
return h('div', { style: { marginBottom: 12 } },
|
|
56
|
+
props.label && h('label', {
|
|
57
|
+
style: { display: 'block', fontSize: 12, fontWeight: 600, color: 'var(--text-secondary)', marginBottom: 4 }
|
|
58
|
+
}, props.label),
|
|
59
|
+
|
|
60
|
+
// Tags list
|
|
61
|
+
value.length > 0 && h('div', {
|
|
62
|
+
style: { display: 'flex', flexWrap: 'wrap', gap: 4, marginBottom: 8 }
|
|
63
|
+
},
|
|
64
|
+
value.map(function(tag, i) {
|
|
65
|
+
return h('span', { key: i, style: tagStyle },
|
|
66
|
+
h('span', null, tag),
|
|
67
|
+
!disabled && h('button', {
|
|
68
|
+
style: removeBtnStyle,
|
|
69
|
+
onClick: function() { removeTag(i); },
|
|
70
|
+
title: 'Remove'
|
|
71
|
+
}, '\u00D7')
|
|
72
|
+
);
|
|
73
|
+
})
|
|
74
|
+
),
|
|
75
|
+
|
|
76
|
+
// Input row
|
|
77
|
+
!disabled && h('div', { style: { display: 'flex', gap: 6 } },
|
|
78
|
+
h('input', {
|
|
79
|
+
className: 'input',
|
|
80
|
+
style: { flex: 1, fontSize: 13 },
|
|
81
|
+
value: input,
|
|
82
|
+
onChange: function(e) { setInput(e.target.value); },
|
|
83
|
+
onKeyDown: function(e) {
|
|
84
|
+
if (e.key === 'Enter') { e.preventDefault(); addTag(); }
|
|
85
|
+
},
|
|
86
|
+
placeholder: props.placeholder || 'Type and press Enter'
|
|
87
|
+
}),
|
|
88
|
+
h('button', {
|
|
89
|
+
className: 'btn btn-secondary btn-sm',
|
|
90
|
+
onClick: addTag,
|
|
91
|
+
disabled: !input.trim(),
|
|
92
|
+
style: { whiteSpace: 'nowrap' }
|
|
93
|
+
}, '+ Add')
|
|
94
|
+
)
|
|
95
|
+
);
|
|
96
|
+
}
|