@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
package/src/engine/activity.ts
CHANGED
|
@@ -114,18 +114,47 @@ export interface TimelineEntry {
|
|
|
114
114
|
|
|
115
115
|
// ─── Activity Tracker ───────────────────────────────────
|
|
116
116
|
|
|
117
|
+
import type { EngineDatabase } from './db-adapter.js';
|
|
118
|
+
|
|
117
119
|
export class ActivityTracker {
|
|
118
120
|
private events: ActivityEvent[] = [];
|
|
119
121
|
private toolCalls = new Map<string, ToolCallRecord>();
|
|
120
122
|
private conversations: ConversationEntry[] = [];
|
|
121
123
|
private listeners: ((event: ActivityEvent) => void)[] = [];
|
|
122
124
|
private sseClients = new Set<(event: ActivityEvent) => void>();
|
|
125
|
+
private engineDb?: EngineDatabase;
|
|
123
126
|
|
|
124
127
|
// Buffer settings
|
|
125
128
|
private maxEvents = 10_000; // Keep last N events in memory
|
|
126
129
|
private maxToolCalls = 5_000;
|
|
127
130
|
private maxConversations = 5_000;
|
|
128
131
|
|
|
132
|
+
/**
|
|
133
|
+
* Set the database adapter for persistent activity storage
|
|
134
|
+
*/
|
|
135
|
+
async setDb(db: EngineDatabase): Promise<void> {
|
|
136
|
+
this.engineDb = db;
|
|
137
|
+
await this.loadFromDb();
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
private async loadFromDb(): Promise<void> {
|
|
141
|
+
if (!this.engineDb) return;
|
|
142
|
+
try {
|
|
143
|
+
// Load recent events (last 24h) to warm the cache
|
|
144
|
+
const since = new Date(Date.now() - 24 * 60 * 60 * 1000).toISOString();
|
|
145
|
+
const events = await this.engineDb.getActivityEvents({ since, limit: this.maxEvents });
|
|
146
|
+
this.events = events.reverse(); // DB returns DESC, we want ASC for our buffer
|
|
147
|
+
|
|
148
|
+
// Load recent tool calls (last 24h)
|
|
149
|
+
const toolCalls = await this.engineDb.getToolCalls({ since, limit: this.maxToolCalls });
|
|
150
|
+
for (const tc of toolCalls) {
|
|
151
|
+
this.toolCalls.set(tc.id, tc);
|
|
152
|
+
}
|
|
153
|
+
} catch {
|
|
154
|
+
// Table may not exist yet if migrations haven't run
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
129
158
|
// ─── Record Events ───────────────────────────────────
|
|
130
159
|
|
|
131
160
|
/**
|
|
@@ -143,6 +172,11 @@ export class ActivityTracker {
|
|
|
143
172
|
this.events = this.events.slice(-this.maxEvents);
|
|
144
173
|
}
|
|
145
174
|
|
|
175
|
+
// Persist to DB (fire-and-forget — high-volume telemetry)
|
|
176
|
+
this.engineDb?.insertActivityEvent(full).catch((err) => {
|
|
177
|
+
console.error('[activity] Failed to persist event:', err);
|
|
178
|
+
});
|
|
179
|
+
|
|
146
180
|
// Notify listeners
|
|
147
181
|
for (const listener of this.listeners) {
|
|
148
182
|
try { listener(full); } catch { /* ignore */ }
|
|
@@ -185,6 +219,11 @@ export class ActivityTracker {
|
|
|
185
219
|
for (let i = 0; i < 1000; i++) this.toolCalls.delete(keys[i]);
|
|
186
220
|
}
|
|
187
221
|
|
|
222
|
+
// Persist to DB (fire-and-forget — high-volume telemetry)
|
|
223
|
+
this.engineDb?.insertToolCall(record).catch((err) => {
|
|
224
|
+
console.error('[activity] Failed to persist tool call:', err);
|
|
225
|
+
});
|
|
226
|
+
|
|
188
227
|
this.record({
|
|
189
228
|
agentId: opts.agentId,
|
|
190
229
|
orgId: opts.orgId,
|
|
@@ -228,6 +267,11 @@ export class ActivityTracker {
|
|
|
228
267
|
};
|
|
229
268
|
}
|
|
230
269
|
|
|
270
|
+
// Persist to DB (fire-and-forget — high-volume telemetry)
|
|
271
|
+
this.engineDb?.updateToolCallResult(record.id, record.result, record.timing, record.cost).catch((err) => {
|
|
272
|
+
console.error('[activity] Failed to update tool call result:', err);
|
|
273
|
+
});
|
|
274
|
+
|
|
231
275
|
this.record({
|
|
232
276
|
agentId: record.agentId,
|
|
233
277
|
orgId: record.orgId,
|
|
@@ -258,6 +302,11 @@ export class ActivityTracker {
|
|
|
258
302
|
this.conversations = this.conversations.slice(-this.maxConversations);
|
|
259
303
|
}
|
|
260
304
|
|
|
305
|
+
// Persist to DB (fire-and-forget — high-volume telemetry)
|
|
306
|
+
this.engineDb?.insertConversation(full).catch((err) => {
|
|
307
|
+
console.error('[activity] Failed to persist conversation:', err);
|
|
308
|
+
});
|
|
309
|
+
|
|
261
310
|
this.record({
|
|
262
311
|
agentId: entry.agentId,
|
|
263
312
|
orgId: '',
|
|
@@ -315,11 +364,22 @@ export class ActivityTracker {
|
|
|
315
364
|
/**
|
|
316
365
|
* Get conversation history for a session
|
|
317
366
|
*/
|
|
318
|
-
getConversation(sessionId: string, limit: number = 50): ConversationEntry[] {
|
|
319
|
-
|
|
367
|
+
async getConversation(sessionId: string, limit: number = 50): Promise<ConversationEntry[]> {
|
|
368
|
+
// Check memory first
|
|
369
|
+
const memResults = this.conversations
|
|
320
370
|
.filter(c => c.sessionId === sessionId)
|
|
321
371
|
.sort((a, b) => new Date(a.timestamp).getTime() - new Date(b.timestamp).getTime())
|
|
322
372
|
.slice(-limit);
|
|
373
|
+
|
|
374
|
+
if (memResults.length > 0) return memResults;
|
|
375
|
+
|
|
376
|
+
// Fall back to DB for sessions not in memory buffer
|
|
377
|
+
if (this.engineDb) {
|
|
378
|
+
try {
|
|
379
|
+
return await this.engineDb.getConversation(sessionId, limit);
|
|
380
|
+
} catch { /* fall through */ }
|
|
381
|
+
}
|
|
382
|
+
return [];
|
|
323
383
|
}
|
|
324
384
|
|
|
325
385
|
/**
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Agent Configuration Builder
|
|
3
3
|
*
|
|
4
|
-
* Generates the full
|
|
4
|
+
* Generates the full workspace config for a deployed agent:
|
|
5
5
|
* SOUL.md, USER.md, AGENTS.md, HEARTBEAT.md, gateway config, etc.
|
|
6
6
|
* Everything needed to spin up a fully configured agent from the admin dashboard.
|
|
7
7
|
*/
|
|
@@ -21,16 +21,34 @@ export interface AgentConfig {
|
|
|
21
21
|
customTone?: string;
|
|
22
22
|
language: string; // Primary language (e.g. "en", "es", "fr")
|
|
23
23
|
avatar?: string; // URL or base64
|
|
24
|
+
gender?: string; // e.g. "male", "female", "non-binary"
|
|
25
|
+
dateOfBirth?: string; // ISO date string (e.g. "1994-03-15")
|
|
26
|
+
age?: number; // Derived from dateOfBirth at runtime
|
|
27
|
+
ageRange?: string; // e.g. "young", "mid-career", "senior" (auto-derived if age given)
|
|
28
|
+
maritalStatus?: string; // e.g. "single", "married", "prefer-not-to-say"
|
|
29
|
+
culturalBackground?: string; // e.g. "north-american", "east-asian"
|
|
30
|
+
traits?: { // Personality trait axes
|
|
31
|
+
communication?: 'direct' | 'diplomatic';
|
|
32
|
+
detail?: 'big-picture' | 'detail-oriented';
|
|
33
|
+
energy?: 'enthusiastic' | 'calm';
|
|
34
|
+
humor?: 'witty' | 'dry' | 'warm' | 'none';
|
|
35
|
+
formality?: 'formal' | 'casual' | 'adaptive';
|
|
36
|
+
empathy?: 'high' | 'moderate' | 'reserved';
|
|
37
|
+
patience?: 'patient' | 'efficient';
|
|
38
|
+
creativity?: 'creative' | 'conventional';
|
|
39
|
+
};
|
|
24
40
|
};
|
|
25
41
|
|
|
26
42
|
// Model
|
|
27
43
|
model: {
|
|
28
|
-
provider:
|
|
44
|
+
provider: string; // Any registered or custom provider (see runtime/providers.ts)
|
|
29
45
|
modelId: string; // e.g. "claude-sonnet-4-20250514", "gpt-4o"
|
|
30
46
|
thinkingLevel: 'off' | 'low' | 'medium' | 'high';
|
|
31
47
|
temperature?: number;
|
|
32
48
|
maxTokens?: number;
|
|
33
49
|
fallbackModelId?: string; // Fallback if primary is down
|
|
50
|
+
baseUrl?: string; // Custom endpoint override
|
|
51
|
+
headers?: Record<string, string>; // Custom headers
|
|
34
52
|
};
|
|
35
53
|
|
|
36
54
|
// Communication channels
|
|
@@ -43,7 +61,7 @@ export interface AgentConfig {
|
|
|
43
61
|
email: {
|
|
44
62
|
enabled: boolean;
|
|
45
63
|
provider: 'relay' | 'domain' | 'none';
|
|
46
|
-
address?: string; // e.g. "support@
|
|
64
|
+
address?: string; // e.g. "support@agenticmail.io"
|
|
47
65
|
relayConfig?: { email: string; appPassword: string; provider: 'gmail' | 'outlook' };
|
|
48
66
|
domainConfig?: { domain: string; cloudflareToken: string };
|
|
49
67
|
signature?: string;
|
|
@@ -73,6 +91,21 @@ export interface AgentConfig {
|
|
|
73
91
|
knowledgeBase?: string[]; // Paths or URLs to reference docs
|
|
74
92
|
};
|
|
75
93
|
|
|
94
|
+
// Tool security overrides (merged with org defaults at runtime)
|
|
95
|
+
toolSecurity?: {
|
|
96
|
+
security?: {
|
|
97
|
+
pathSandbox?: { enabled?: boolean; allowedDirs?: string[]; blockedPatterns?: string[] };
|
|
98
|
+
ssrf?: { enabled?: boolean; allowedHosts?: string[]; blockedCidrs?: string[] };
|
|
99
|
+
commandSanitizer?: { enabled?: boolean; mode?: 'blocklist' | 'allowlist'; allowedCommands?: string[]; blockedPatterns?: string[] };
|
|
100
|
+
};
|
|
101
|
+
middleware?: {
|
|
102
|
+
audit?: { enabled?: boolean; redactKeys?: string[] };
|
|
103
|
+
rateLimit?: { enabled?: boolean; overrides?: Record<string, { maxTokens: number; refillRate: number }> };
|
|
104
|
+
circuitBreaker?: { enabled?: boolean };
|
|
105
|
+
telemetry?: { enabled?: boolean };
|
|
106
|
+
};
|
|
107
|
+
};
|
|
108
|
+
|
|
76
109
|
// Permission profile
|
|
77
110
|
permissionProfileId: string;
|
|
78
111
|
|
|
@@ -160,7 +193,7 @@ export class AgentConfigGenerator {
|
|
|
160
193
|
}
|
|
161
194
|
|
|
162
195
|
/**
|
|
163
|
-
* Generate the
|
|
196
|
+
* Generate the gateway config for this agent
|
|
164
197
|
*/
|
|
165
198
|
generateGatewayConfig(config: AgentConfig): GatewayConfig {
|
|
166
199
|
const channels: Record<string, any> = {};
|
|
@@ -192,8 +225,8 @@ export class AgentConfigGenerator {
|
|
|
192
225
|
|
|
193
226
|
const env = { ...dc.env };
|
|
194
227
|
// Inject standard vars
|
|
195
|
-
env['
|
|
196
|
-
env['
|
|
228
|
+
env['AGENTICMAIL_MODEL'] = `${config.model.provider}/${config.model.modelId}`;
|
|
229
|
+
env['AGENTICMAIL_THINKING'] = config.model.thinkingLevel;
|
|
197
230
|
if (config.email.enabled && config.email.address) {
|
|
198
231
|
env['AGENTICMAIL_EMAIL'] = config.email.address;
|
|
199
232
|
}
|
|
@@ -239,12 +272,12 @@ After=network.target
|
|
|
239
272
|
Type=simple
|
|
240
273
|
User=${vps.user}
|
|
241
274
|
WorkingDirectory=${vps.installPath}
|
|
242
|
-
ExecStart=/usr/bin/env node ${vps.installPath}/node_modules/.bin/
|
|
275
|
+
ExecStart=/usr/bin/env node ${vps.installPath}/node_modules/.bin/agenticmail-enterprise start
|
|
243
276
|
Restart=always
|
|
244
277
|
RestartSec=10
|
|
245
278
|
Environment=NODE_ENV=production
|
|
246
|
-
Environment=
|
|
247
|
-
Environment=
|
|
279
|
+
Environment=AGENTICMAIL_MODEL=${config.model.provider}/${config.model.modelId}
|
|
280
|
+
Environment=AGENTICMAIL_THINKING=${config.model.thinkingLevel}
|
|
248
281
|
|
|
249
282
|
# Security hardening
|
|
250
283
|
NoNewPrivileges=true
|
|
@@ -288,10 +321,10 @@ fi
|
|
|
288
321
|
mkdir -p "$INSTALL_PATH/workspace"
|
|
289
322
|
cd "$INSTALL_PATH"
|
|
290
323
|
|
|
291
|
-
# 3. Install
|
|
324
|
+
# 3. Install AgenticMail Enterprise
|
|
292
325
|
echo "📦 Installing packages..."
|
|
293
326
|
npm init -y 2>/dev/null || true
|
|
294
|
-
npm install
|
|
327
|
+
npm install @agenticmail/enterprise @agenticmail/core agenticmail
|
|
295
328
|
|
|
296
329
|
# 4. Write workspace files
|
|
297
330
|
echo "📝 Writing agent configuration..."
|
|
@@ -323,27 +356,35 @@ echo " Logs: journalctl -u agenticmail-${config.name} -f"
|
|
|
323
356
|
// ─── Private Generators ─────────────────────────────
|
|
324
357
|
|
|
325
358
|
private generateSoul(config: AgentConfig): string {
|
|
326
|
-
|
|
359
|
+
const id = config.identity;
|
|
360
|
+
|
|
361
|
+
// If a full personality was provided (from soul template), append persona context to it
|
|
362
|
+
if (id.personality && id.personality.length > 200) {
|
|
363
|
+
const personaBlock = this.buildPersonaBlock(config);
|
|
364
|
+
return personaBlock ? id.personality + '\n\n' + personaBlock : id.personality;
|
|
365
|
+
}
|
|
327
366
|
|
|
328
|
-
const toneMap = {
|
|
367
|
+
const toneMap: Record<string, string> = {
|
|
329
368
|
formal: 'Be professional and precise. Use proper grammar. Avoid slang or casual language.',
|
|
330
369
|
casual: 'Be relaxed and conversational. Use contractions. Feel free to be informal.',
|
|
331
370
|
professional: 'Be competent and clear. Direct communication without being stiff.',
|
|
332
371
|
friendly: 'Be warm and approachable. Show genuine interest. Use a positive tone.',
|
|
333
|
-
custom:
|
|
372
|
+
custom: id.customTone || '',
|
|
334
373
|
};
|
|
335
374
|
|
|
375
|
+
const personaSection = this.buildPersonaBlock(config);
|
|
376
|
+
|
|
336
377
|
return `# SOUL.md — Who You Are
|
|
337
378
|
|
|
338
379
|
## Role
|
|
339
|
-
You are **${config.displayName}**, a ${
|
|
380
|
+
You are **${config.displayName}**, a ${id.role}.
|
|
340
381
|
|
|
341
382
|
## Communication Style
|
|
342
|
-
${toneMap[
|
|
383
|
+
${toneMap[id.tone] || toneMap['professional']}
|
|
343
384
|
|
|
344
385
|
## Language
|
|
345
|
-
Primary language: ${
|
|
346
|
-
|
|
386
|
+
Primary language: ${id.language}
|
|
387
|
+
${personaSection ? '\n' + personaSection + '\n' : ''}
|
|
347
388
|
## Core Principles
|
|
348
389
|
- Be genuinely helpful, not performatively helpful
|
|
349
390
|
- Be resourceful — try to figure things out before asking
|
|
@@ -357,6 +398,107 @@ Primary language: ${config.identity.language}
|
|
|
357
398
|
`;
|
|
358
399
|
}
|
|
359
400
|
|
|
401
|
+
/** Calculate current age from a date-of-birth string */
|
|
402
|
+
static deriveAge(dateOfBirth: string): number {
|
|
403
|
+
const dob = new Date(dateOfBirth);
|
|
404
|
+
const today = new Date();
|
|
405
|
+
let age = today.getFullYear() - dob.getFullYear();
|
|
406
|
+
const monthDiff = today.getMonth() - dob.getMonth();
|
|
407
|
+
if (monthDiff < 0 || (monthDiff === 0 && today.getDate() < dob.getDate())) age--;
|
|
408
|
+
return age;
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
private buildPersonaBlock(config: AgentConfig): string {
|
|
412
|
+
const id = config.identity;
|
|
413
|
+
const lines: string[] = [];
|
|
414
|
+
|
|
415
|
+
// Derive live age from DOB
|
|
416
|
+
const liveAge = id.dateOfBirth ? AgentConfigGenerator.deriveAge(id.dateOfBirth) : id.age;
|
|
417
|
+
|
|
418
|
+
if (id.gender || liveAge || id.ageRange || id.maritalStatus || id.culturalBackground || id.traits) {
|
|
419
|
+
lines.push('## Persona');
|
|
420
|
+
lines.push(`Your name is **${config.displayName}**. This is your real identity — introduce yourself by this name and respond to it naturally. You embody the following personal characteristics. These are core to who you are — reflect them naturally in your communication style, references, perspectives, and behavior.\n`);
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
if (id.gender) {
|
|
424
|
+
const genderMap: Record<string, string> = {
|
|
425
|
+
male: 'You present as male. Use he/him pronouns when referring to yourself in the third person.',
|
|
426
|
+
female: 'You present as female. Use she/her pronouns when referring to yourself in the third person.',
|
|
427
|
+
'non-binary': 'You present as non-binary. Use they/them pronouns when referring to yourself in the third person.',
|
|
428
|
+
};
|
|
429
|
+
if (genderMap[id.gender]) lines.push(genderMap[id.gender]);
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
if (id.dateOfBirth) {
|
|
433
|
+
const dob = new Date(id.dateOfBirth);
|
|
434
|
+
const monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
|
|
435
|
+
lines.push(`You were born on ${monthNames[dob.getMonth()]} ${dob.getDate()}, ${dob.getFullYear()}. You are currently ${liveAge} years old. This is your real birthday and age — let it naturally inform your frame of reference, cultural touchstones, energy level, and life experience.`);
|
|
436
|
+
} else if (liveAge) {
|
|
437
|
+
lines.push(`You are ${liveAge} years old. This is your actual age — let it naturally inform your frame of reference, cultural touchstones, energy level, and life experience that you draw from.`);
|
|
438
|
+
} else if (id.ageRange) {
|
|
439
|
+
const ageMap: Record<string, string> = {
|
|
440
|
+
young: 'You are a young professional in your 20s-30s. You bring fresh perspectives, are comfortable with modern technology and trends, and communicate with energy and adaptability. Your references and examples tend to be contemporary.',
|
|
441
|
+
'mid-career': 'You are a mid-career professional in your 30s-40s. You balance youthful energy with substantial experience. You have seen enough to know what works, and you bring both confidence and openness to your interactions.',
|
|
442
|
+
senior: 'You are a senior veteran professional in your 50s+. You draw on decades of experience and wisdom. You communicate with gravitas, patience, and deep institutional knowledge. You mentor naturally and reference time-tested principles.',
|
|
443
|
+
};
|
|
444
|
+
if (ageMap[id.ageRange]) lines.push(ageMap[id.ageRange]);
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
if (id.maritalStatus) {
|
|
448
|
+
const maritalMap: Record<string, string> = {
|
|
449
|
+
single: 'You are single. This shapes your availability mindset — you are flexible with your time and can relate to independent lifestyles.',
|
|
450
|
+
married: 'You are married. You understand partnership, compromise, and family-oriented priorities. You naturally reference teamwork and shared responsibility.',
|
|
451
|
+
divorced: 'You have been through a divorce. This gives you resilience, empathy for difficult transitions, and a pragmatic outlook on change.',
|
|
452
|
+
widowed: 'You are widowed. You carry deep empathy, emotional maturity, and an appreciation for what matters most.',
|
|
453
|
+
'in-a-relationship': 'You are in a relationship. You bring warmth and relational awareness to your interactions.',
|
|
454
|
+
};
|
|
455
|
+
if (maritalMap[id.maritalStatus]) lines.push(maritalMap[id.maritalStatus]);
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
if (id.culturalBackground) {
|
|
459
|
+
const cultureMap: Record<string, string> = {
|
|
460
|
+
'north-american': 'Your cultural background is North American. You communicate directly, value efficiency and individual initiative, use informal greetings, and are comfortable with straightforward feedback.',
|
|
461
|
+
'british-european': 'Your cultural background is British/European. You communicate with polite understatement, appreciate structured formality, use measured and precise language, and value diplomatic phrasing.',
|
|
462
|
+
'latin-american': 'Your cultural background is Latin American. You communicate with warmth, prioritize building personal relationships before business, are expressive and personable, and value hospitality in interactions.',
|
|
463
|
+
'middle-eastern': 'Your cultural background is Middle Eastern. You communicate with respect and hospitality, are context-aware in formality, value honor and trust-building, and show generous courtesy in your interactions.',
|
|
464
|
+
'east-asian': 'Your cultural background is East Asian. You communicate with indirect harmony, show respect for hierarchy and seniority, exercise thoughtful precision in your words, and value group consensus over individual assertion.',
|
|
465
|
+
'south-asian': 'Your cultural background is South Asian. You communicate with adaptable formality, are relationship-aware and respectful of elders and authority, blend traditional values with modern pragmatism, and show warmth through attentiveness.',
|
|
466
|
+
'southeast-asian': 'Your cultural background is Southeast Asian. You communicate gently and diplomatically, seek consensus in group settings, show deference and politeness, and value harmony over confrontation.',
|
|
467
|
+
'african': 'Your cultural background is African. You communicate with community orientation, warmth, and storytelling richness. You value collective wisdom, show respect for elders and tradition, and bring vibrant energy to interactions.',
|
|
468
|
+
'caribbean': 'Your cultural background is Caribbean. You communicate with friendly warmth, approachable energy, and resilient optimism. You value community, bring vibrant personality to interactions, and balance professionalism with genuine connection.',
|
|
469
|
+
'australian-pacific': 'Your cultural background is Australian/Pacific. You communicate casually and straightforwardly, value egalitarianism, use humor naturally, and keep interactions grounded and unpretentious.',
|
|
470
|
+
};
|
|
471
|
+
if (cultureMap[id.culturalBackground]) lines.push(cultureMap[id.culturalBackground]);
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
if (id.traits) {
|
|
475
|
+
const traitLines: string[] = [];
|
|
476
|
+
if (id.traits.communication === 'direct') traitLines.push('You are direct and straightforward — you say what you mean clearly without excessive hedging.');
|
|
477
|
+
if (id.traits.communication === 'diplomatic') traitLines.push('You are diplomatic — you frame feedback constructively, soften disagreements, and prioritize preserving relationships.');
|
|
478
|
+
if (id.traits.detail === 'big-picture') traitLines.push('You focus on the big picture — you lead with strategy, outcomes, and high-level thinking before diving into specifics.');
|
|
479
|
+
if (id.traits.detail === 'detail-oriented') traitLines.push('You are detail-oriented — you are thorough, precise, and ensure nothing falls through the cracks.');
|
|
480
|
+
if (id.traits.energy === 'enthusiastic') traitLines.push('You are enthusiastic — you bring visible energy, optimism, and momentum to every interaction.');
|
|
481
|
+
if (id.traits.energy === 'calm') traitLines.push('You are calm and measured — you project steadiness, think before responding, and bring a grounding presence.');
|
|
482
|
+
if (id.traits.humor === 'witty') traitLines.push('You have a witty sense of humor — you use clever wordplay, quick observations, and well-timed remarks to keep interactions engaging.');
|
|
483
|
+
if (id.traits.humor === 'dry') traitLines.push('You have a dry sense of humor — you deliver deadpan observations and understated irony that reward attentive listeners.');
|
|
484
|
+
if (id.traits.humor === 'warm') traitLines.push('You have a warm sense of humor — you use gentle, inclusive humor that puts people at ease and builds rapport.');
|
|
485
|
+
if (id.traits.humor === 'none') traitLines.push('You keep things strictly professional — you avoid humor and focus entirely on substance and clarity.');
|
|
486
|
+
if (id.traits.formality === 'formal') traitLines.push('You maintain a formal communication style — you use proper titles, structured language, and professional conventions.');
|
|
487
|
+
if (id.traits.formality === 'casual') traitLines.push('You are casual and approachable — you use conversational language, contractions, and a friendly, relaxed tone.');
|
|
488
|
+
if (id.traits.formality === 'adaptive') traitLines.push('You adapt your formality to context — you match the tone of whoever you are speaking with, formal when needed, relaxed when appropriate.');
|
|
489
|
+
if (id.traits.empathy === 'high') traitLines.push('You are highly empathetic — you actively acknowledge emotions, validate feelings, and prioritize emotional connection alongside the task at hand.');
|
|
490
|
+
if (id.traits.empathy === 'moderate') traitLines.push('You show moderate empathy — you are aware of and responsive to emotions without letting them overshadow practical outcomes.');
|
|
491
|
+
if (id.traits.empathy === 'reserved') traitLines.push('You are emotionally reserved — you focus on facts and logic, offering support through competence rather than emotional expression.');
|
|
492
|
+
if (id.traits.patience === 'patient') traitLines.push('You are exceptionally patient — you take time to explain, repeat when needed, and never rush or show frustration.');
|
|
493
|
+
if (id.traits.patience === 'efficient') traitLines.push('You prioritize efficiency — you get to the point quickly, value brevity, and keep interactions focused and productive.');
|
|
494
|
+
if (id.traits.creativity === 'creative') traitLines.push('You are creative and inventive — you suggest novel approaches, think outside the box, and bring fresh perspectives to problems.');
|
|
495
|
+
if (id.traits.creativity === 'conventional') traitLines.push('You favor proven approaches — you rely on established best practices, standard methods, and time-tested solutions.');
|
|
496
|
+
if (traitLines.length) lines.push(traitLines.join(' '));
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
return lines.length > 1 ? lines.join('\n') : '';
|
|
500
|
+
}
|
|
501
|
+
|
|
360
502
|
private generateUser(config: AgentConfig): string {
|
|
361
503
|
return config.context?.userInfo || `# USER.md — About Your Organization\n\n_Configure this from the admin dashboard._\n`;
|
|
362
504
|
}
|
|
@@ -384,12 +526,36 @@ ${customInstructions}
|
|
|
384
526
|
}
|
|
385
527
|
|
|
386
528
|
private generateIdentity(config: AgentConfig): string {
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
529
|
+
const id = config.identity;
|
|
530
|
+
const lines = [
|
|
531
|
+
'# IDENTITY.md\n',
|
|
532
|
+
`- **Name:** ${config.displayName}`,
|
|
533
|
+
`- **Role:** ${id.role}`,
|
|
534
|
+
`- **Tone:** ${id.tone}`,
|
|
535
|
+
`- **Language:** ${id.language || 'en'}`,
|
|
536
|
+
];
|
|
537
|
+
if (id.gender) lines.push(`- **Gender:** ${id.gender}`);
|
|
538
|
+
if (id.dateOfBirth) {
|
|
539
|
+
const age = AgentConfigGenerator.deriveAge(id.dateOfBirth);
|
|
540
|
+
lines.push(`- **Date of Birth:** ${id.dateOfBirth}`);
|
|
541
|
+
lines.push(`- **Age:** ${age}`);
|
|
542
|
+
} else if (id.age) {
|
|
543
|
+
lines.push(`- **Age:** ${id.age}`);
|
|
544
|
+
}
|
|
545
|
+
if (id.ageRange) lines.push(`- **Age Range:** ${{ young: 'Young Professional (20s-30s)', 'mid-career': 'Mid-Career (30s-40s)', senior: 'Senior / Veteran (50s+)' }[id.ageRange] || id.ageRange}`);
|
|
546
|
+
if (id.maritalStatus) lines.push(`- **Marital Status:** ${id.maritalStatus.replace(/-/g, ' ')}`);
|
|
547
|
+
if (id.culturalBackground) lines.push(`- **Cultural Background:** ${id.culturalBackground.replace(/-/g, ' ')}`);
|
|
548
|
+
if (id.traits) {
|
|
549
|
+
if (id.traits.communication) lines.push(`- **Communication Style:** ${id.traits.communication}`);
|
|
550
|
+
if (id.traits.detail) lines.push(`- **Focus:** ${id.traits.detail}`);
|
|
551
|
+
if (id.traits.energy) lines.push(`- **Energy:** ${id.traits.energy}`);
|
|
552
|
+
if (id.traits.humor) lines.push(`- **Humor:** ${id.traits.humor}`);
|
|
553
|
+
if (id.traits.formality) lines.push(`- **Formality:** ${id.traits.formality}`);
|
|
554
|
+
if (id.traits.empathy) lines.push(`- **Empathy:** ${id.traits.empathy}`);
|
|
555
|
+
if (id.traits.patience) lines.push(`- **Patience:** ${id.traits.patience}`);
|
|
556
|
+
if (id.traits.creativity) lines.push(`- **Creativity:** ${id.traits.creativity}`);
|
|
557
|
+
}
|
|
558
|
+
return lines.join('\n') + '\n';
|
|
393
559
|
}
|
|
394
560
|
|
|
395
561
|
private generateHeartbeat(config: AgentConfig): string {
|