@agenticmail/enterprise 0.3.2 → 0.4.1
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/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/node_modules/.package-lock.json +913 -0
- package/dashboards/express/node_modules/accepts/HISTORY.md +250 -0
- package/dashboards/express/node_modules/accepts/LICENSE +23 -0
- package/dashboards/express/node_modules/accepts/README.md +140 -0
- package/dashboards/express/node_modules/accepts/index.js +238 -0
- package/dashboards/express/node_modules/accepts/package.json +47 -0
- package/dashboards/express/node_modules/body-parser/LICENSE +23 -0
- package/dashboards/express/node_modules/body-parser/README.md +494 -0
- package/dashboards/express/node_modules/body-parser/index.js +71 -0
- package/dashboards/express/node_modules/body-parser/lib/read.js +247 -0
- package/dashboards/express/node_modules/body-parser/lib/types/json.js +158 -0
- package/dashboards/express/node_modules/body-parser/lib/types/raw.js +42 -0
- package/dashboards/express/node_modules/body-parser/lib/types/text.js +36 -0
- package/dashboards/express/node_modules/body-parser/lib/types/urlencoded.js +142 -0
- package/dashboards/express/node_modules/body-parser/lib/utils.js +98 -0
- package/dashboards/express/node_modules/body-parser/package.json +52 -0
- package/dashboards/express/node_modules/bytes/History.md +97 -0
- package/dashboards/express/node_modules/bytes/LICENSE +23 -0
- package/dashboards/express/node_modules/bytes/Readme.md +152 -0
- package/dashboards/express/node_modules/bytes/index.js +170 -0
- package/dashboards/express/node_modules/bytes/package.json +42 -0
- package/dashboards/express/node_modules/call-bind-apply-helpers/.eslintrc +17 -0
- package/dashboards/express/node_modules/call-bind-apply-helpers/.github/FUNDING.yml +12 -0
- package/dashboards/express/node_modules/call-bind-apply-helpers/.nycrc +9 -0
- package/dashboards/express/node_modules/call-bind-apply-helpers/CHANGELOG.md +30 -0
- package/dashboards/express/node_modules/call-bind-apply-helpers/LICENSE +21 -0
- package/dashboards/express/node_modules/call-bind-apply-helpers/README.md +62 -0
- package/dashboards/express/node_modules/call-bind-apply-helpers/actualApply.d.ts +1 -0
- package/dashboards/express/node_modules/call-bind-apply-helpers/actualApply.js +10 -0
- package/dashboards/express/node_modules/call-bind-apply-helpers/applyBind.d.ts +19 -0
- package/dashboards/express/node_modules/call-bind-apply-helpers/applyBind.js +10 -0
- package/dashboards/express/node_modules/call-bind-apply-helpers/functionApply.d.ts +1 -0
- package/dashboards/express/node_modules/call-bind-apply-helpers/functionApply.js +4 -0
- package/dashboards/express/node_modules/call-bind-apply-helpers/functionCall.d.ts +1 -0
- package/dashboards/express/node_modules/call-bind-apply-helpers/functionCall.js +4 -0
- package/dashboards/express/node_modules/call-bind-apply-helpers/index.d.ts +64 -0
- package/dashboards/express/node_modules/call-bind-apply-helpers/index.js +15 -0
- package/dashboards/express/node_modules/call-bind-apply-helpers/package.json +85 -0
- package/dashboards/express/node_modules/call-bind-apply-helpers/reflectApply.d.ts +3 -0
- package/dashboards/express/node_modules/call-bind-apply-helpers/reflectApply.js +4 -0
- package/dashboards/express/node_modules/call-bind-apply-helpers/test/index.js +63 -0
- package/dashboards/express/node_modules/call-bind-apply-helpers/tsconfig.json +9 -0
- package/dashboards/express/node_modules/call-bound/.eslintrc +13 -0
- package/dashboards/express/node_modules/call-bound/.github/FUNDING.yml +12 -0
- package/dashboards/express/node_modules/call-bound/.nycrc +9 -0
- package/dashboards/express/node_modules/call-bound/CHANGELOG.md +42 -0
- package/dashboards/express/node_modules/call-bound/LICENSE +21 -0
- package/dashboards/express/node_modules/call-bound/README.md +53 -0
- package/dashboards/express/node_modules/call-bound/index.d.ts +94 -0
- package/dashboards/express/node_modules/call-bound/index.js +19 -0
- package/dashboards/express/node_modules/call-bound/package.json +99 -0
- package/dashboards/express/node_modules/call-bound/test/index.js +61 -0
- package/dashboards/express/node_modules/call-bound/tsconfig.json +10 -0
- package/dashboards/express/node_modules/content-disposition/HISTORY.md +72 -0
- package/dashboards/express/node_modules/content-disposition/LICENSE +22 -0
- package/dashboards/express/node_modules/content-disposition/README.md +142 -0
- package/dashboards/express/node_modules/content-disposition/index.js +458 -0
- package/dashboards/express/node_modules/content-disposition/package.json +43 -0
- package/dashboards/express/node_modules/content-type/HISTORY.md +29 -0
- package/dashboards/express/node_modules/content-type/LICENSE +22 -0
- package/dashboards/express/node_modules/content-type/README.md +94 -0
- package/dashboards/express/node_modules/content-type/index.js +225 -0
- package/dashboards/express/node_modules/content-type/package.json +42 -0
- package/dashboards/express/node_modules/cookie/LICENSE +24 -0
- package/dashboards/express/node_modules/cookie/README.md +317 -0
- package/dashboards/express/node_modules/cookie/SECURITY.md +25 -0
- package/dashboards/express/node_modules/cookie/index.js +335 -0
- package/dashboards/express/node_modules/cookie/package.json +44 -0
- package/dashboards/express/node_modules/cookie-signature/History.md +70 -0
- package/dashboards/express/node_modules/cookie-signature/LICENSE +22 -0
- package/dashboards/express/node_modules/cookie-signature/Readme.md +23 -0
- package/dashboards/express/node_modules/cookie-signature/index.js +47 -0
- package/dashboards/express/node_modules/cookie-signature/package.json +24 -0
- package/dashboards/express/node_modules/debug/LICENSE +20 -0
- package/dashboards/express/node_modules/debug/README.md +481 -0
- package/dashboards/express/node_modules/debug/package.json +64 -0
- package/dashboards/express/node_modules/debug/src/browser.js +272 -0
- package/dashboards/express/node_modules/debug/src/common.js +292 -0
- package/dashboards/express/node_modules/debug/src/index.js +10 -0
- package/dashboards/express/node_modules/debug/src/node.js +263 -0
- package/dashboards/express/node_modules/depd/History.md +103 -0
- package/dashboards/express/node_modules/depd/LICENSE +22 -0
- package/dashboards/express/node_modules/depd/Readme.md +280 -0
- package/dashboards/express/node_modules/depd/index.js +538 -0
- package/dashboards/express/node_modules/depd/lib/browser/index.js +77 -0
- package/dashboards/express/node_modules/depd/package.json +45 -0
- package/dashboards/express/node_modules/dunder-proto/.eslintrc +5 -0
- package/dashboards/express/node_modules/dunder-proto/.github/FUNDING.yml +12 -0
- package/dashboards/express/node_modules/dunder-proto/.nycrc +13 -0
- package/dashboards/express/node_modules/dunder-proto/CHANGELOG.md +24 -0
- package/dashboards/express/node_modules/dunder-proto/LICENSE +21 -0
- package/dashboards/express/node_modules/dunder-proto/README.md +54 -0
- package/dashboards/express/node_modules/dunder-proto/get.d.ts +5 -0
- package/dashboards/express/node_modules/dunder-proto/get.js +30 -0
- package/dashboards/express/node_modules/dunder-proto/package.json +76 -0
- package/dashboards/express/node_modules/dunder-proto/set.d.ts +5 -0
- package/dashboards/express/node_modules/dunder-proto/set.js +35 -0
- package/dashboards/express/node_modules/dunder-proto/test/get.js +34 -0
- package/dashboards/express/node_modules/dunder-proto/test/index.js +4 -0
- package/dashboards/express/node_modules/dunder-proto/test/set.js +50 -0
- package/dashboards/express/node_modules/dunder-proto/tsconfig.json +9 -0
- package/dashboards/express/node_modules/ee-first/LICENSE +22 -0
- package/dashboards/express/node_modules/ee-first/README.md +80 -0
- package/dashboards/express/node_modules/ee-first/index.js +95 -0
- package/dashboards/express/node_modules/ee-first/package.json +29 -0
- package/dashboards/express/node_modules/encodeurl/LICENSE +22 -0
- package/dashboards/express/node_modules/encodeurl/README.md +109 -0
- package/dashboards/express/node_modules/encodeurl/index.js +60 -0
- package/dashboards/express/node_modules/encodeurl/package.json +40 -0
- package/dashboards/express/node_modules/es-define-property/.eslintrc +13 -0
- package/dashboards/express/node_modules/es-define-property/.github/FUNDING.yml +12 -0
- package/dashboards/express/node_modules/es-define-property/.nycrc +9 -0
- package/dashboards/express/node_modules/es-define-property/CHANGELOG.md +29 -0
- package/dashboards/express/node_modules/es-define-property/LICENSE +21 -0
- package/dashboards/express/node_modules/es-define-property/README.md +49 -0
- package/dashboards/express/node_modules/es-define-property/index.d.ts +3 -0
- package/dashboards/express/node_modules/es-define-property/index.js +14 -0
- package/dashboards/express/node_modules/es-define-property/package.json +81 -0
- package/dashboards/express/node_modules/es-define-property/test/index.js +56 -0
- package/dashboards/express/node_modules/es-define-property/tsconfig.json +10 -0
- package/dashboards/express/node_modules/es-errors/.eslintrc +5 -0
- package/dashboards/express/node_modules/es-errors/.github/FUNDING.yml +12 -0
- package/dashboards/express/node_modules/es-errors/CHANGELOG.md +40 -0
- package/dashboards/express/node_modules/es-errors/LICENSE +21 -0
- package/dashboards/express/node_modules/es-errors/README.md +55 -0
- package/dashboards/express/node_modules/es-errors/eval.d.ts +3 -0
- package/dashboards/express/node_modules/es-errors/eval.js +4 -0
- package/dashboards/express/node_modules/es-errors/index.d.ts +3 -0
- package/dashboards/express/node_modules/es-errors/index.js +4 -0
- package/dashboards/express/node_modules/es-errors/package.json +80 -0
- package/dashboards/express/node_modules/es-errors/range.d.ts +3 -0
- package/dashboards/express/node_modules/es-errors/range.js +4 -0
- package/dashboards/express/node_modules/es-errors/ref.d.ts +3 -0
- package/dashboards/express/node_modules/es-errors/ref.js +4 -0
- package/dashboards/express/node_modules/es-errors/syntax.d.ts +3 -0
- package/dashboards/express/node_modules/es-errors/syntax.js +4 -0
- package/dashboards/express/node_modules/es-errors/test/index.js +19 -0
- package/dashboards/express/node_modules/es-errors/tsconfig.json +49 -0
- package/dashboards/express/node_modules/es-errors/type.d.ts +3 -0
- package/dashboards/express/node_modules/es-errors/type.js +4 -0
- package/dashboards/express/node_modules/es-errors/uri.d.ts +3 -0
- package/dashboards/express/node_modules/es-errors/uri.js +4 -0
- package/dashboards/express/node_modules/es-object-atoms/.eslintrc +16 -0
- package/dashboards/express/node_modules/es-object-atoms/.github/FUNDING.yml +12 -0
- package/dashboards/express/node_modules/es-object-atoms/CHANGELOG.md +37 -0
- package/dashboards/express/node_modules/es-object-atoms/LICENSE +21 -0
- package/dashboards/express/node_modules/es-object-atoms/README.md +63 -0
- package/dashboards/express/node_modules/es-object-atoms/RequireObjectCoercible.d.ts +3 -0
- package/dashboards/express/node_modules/es-object-atoms/RequireObjectCoercible.js +11 -0
- package/dashboards/express/node_modules/es-object-atoms/ToObject.d.ts +7 -0
- package/dashboards/express/node_modules/es-object-atoms/ToObject.js +10 -0
- package/dashboards/express/node_modules/es-object-atoms/index.d.ts +3 -0
- package/dashboards/express/node_modules/es-object-atoms/index.js +4 -0
- package/dashboards/express/node_modules/es-object-atoms/isObject.d.ts +3 -0
- package/dashboards/express/node_modules/es-object-atoms/isObject.js +6 -0
- package/dashboards/express/node_modules/es-object-atoms/package.json +80 -0
- package/dashboards/express/node_modules/es-object-atoms/test/index.js +38 -0
- package/dashboards/express/node_modules/es-object-atoms/tsconfig.json +6 -0
- package/dashboards/express/node_modules/escape-html/LICENSE +24 -0
- package/dashboards/express/node_modules/escape-html/Readme.md +43 -0
- package/dashboards/express/node_modules/escape-html/index.js +78 -0
- package/dashboards/express/node_modules/escape-html/package.json +24 -0
- package/dashboards/express/node_modules/etag/HISTORY.md +83 -0
- package/dashboards/express/node_modules/etag/LICENSE +22 -0
- package/dashboards/express/node_modules/etag/README.md +159 -0
- package/dashboards/express/node_modules/etag/index.js +131 -0
- package/dashboards/express/node_modules/etag/package.json +47 -0
- package/dashboards/express/node_modules/express/LICENSE +24 -0
- package/dashboards/express/node_modules/express/Readme.md +276 -0
- package/dashboards/express/node_modules/express/index.js +11 -0
- package/dashboards/express/node_modules/express/lib/application.js +631 -0
- package/dashboards/express/node_modules/express/lib/express.js +81 -0
- package/dashboards/express/node_modules/express/lib/request.js +514 -0
- package/dashboards/express/node_modules/express/lib/response.js +1053 -0
- package/dashboards/express/node_modules/express/lib/utils.js +271 -0
- package/dashboards/express/node_modules/express/lib/view.js +205 -0
- package/dashboards/express/node_modules/express/package.json +99 -0
- package/dashboards/express/node_modules/express-session/LICENSE +24 -0
- package/dashboards/express/node_modules/express-session/README.md +1061 -0
- package/dashboards/express/node_modules/express-session/index.js +700 -0
- package/dashboards/express/node_modules/express-session/node_modules/cookie-signature/History.md +42 -0
- package/dashboards/express/node_modules/express-session/node_modules/cookie-signature/Readme.md +42 -0
- package/dashboards/express/node_modules/express-session/node_modules/cookie-signature/index.js +51 -0
- package/dashboards/express/node_modules/express-session/node_modules/cookie-signature/package.json +18 -0
- package/dashboards/express/node_modules/express-session/node_modules/debug/.coveralls.yml +1 -0
- package/dashboards/express/node_modules/express-session/node_modules/debug/.eslintrc +11 -0
- package/dashboards/express/node_modules/express-session/node_modules/debug/.travis.yml +14 -0
- package/dashboards/express/node_modules/express-session/node_modules/debug/CHANGELOG.md +362 -0
- package/dashboards/express/node_modules/express-session/node_modules/debug/LICENSE +19 -0
- package/dashboards/express/node_modules/express-session/node_modules/debug/Makefile +50 -0
- package/dashboards/express/node_modules/express-session/node_modules/debug/README.md +312 -0
- package/dashboards/express/node_modules/express-session/node_modules/debug/component.json +19 -0
- package/dashboards/express/node_modules/express-session/node_modules/debug/karma.conf.js +70 -0
- package/dashboards/express/node_modules/express-session/node_modules/debug/node.js +1 -0
- package/dashboards/express/node_modules/express-session/node_modules/debug/package.json +49 -0
- package/dashboards/express/node_modules/express-session/node_modules/debug/src/browser.js +185 -0
- package/dashboards/express/node_modules/express-session/node_modules/debug/src/debug.js +202 -0
- package/dashboards/express/node_modules/express-session/node_modules/debug/src/index.js +10 -0
- package/dashboards/express/node_modules/express-session/node_modules/debug/src/inspector-log.js +15 -0
- package/dashboards/express/node_modules/express-session/node_modules/debug/src/node.js +248 -0
- package/dashboards/express/node_modules/express-session/node_modules/ms/index.js +152 -0
- package/dashboards/express/node_modules/express-session/node_modules/ms/license.md +21 -0
- package/dashboards/express/node_modules/express-session/node_modules/ms/package.json +37 -0
- package/dashboards/express/node_modules/express-session/node_modules/ms/readme.md +51 -0
- package/dashboards/express/node_modules/express-session/package.json +50 -0
- package/dashboards/express/node_modules/express-session/session/cookie.js +152 -0
- package/dashboards/express/node_modules/express-session/session/memory.js +187 -0
- package/dashboards/express/node_modules/express-session/session/session.js +143 -0
- package/dashboards/express/node_modules/express-session/session/store.js +102 -0
- package/dashboards/express/node_modules/finalhandler/HISTORY.md +239 -0
- package/dashboards/express/node_modules/finalhandler/LICENSE +22 -0
- package/dashboards/express/node_modules/finalhandler/README.md +150 -0
- package/dashboards/express/node_modules/finalhandler/index.js +293 -0
- package/dashboards/express/node_modules/finalhandler/package.json +47 -0
- package/dashboards/express/node_modules/forwarded/HISTORY.md +21 -0
- package/dashboards/express/node_modules/forwarded/LICENSE +22 -0
- package/dashboards/express/node_modules/forwarded/README.md +57 -0
- package/dashboards/express/node_modules/forwarded/index.js +90 -0
- package/dashboards/express/node_modules/forwarded/package.json +45 -0
- package/dashboards/express/node_modules/fresh/HISTORY.md +80 -0
- package/dashboards/express/node_modules/fresh/LICENSE +23 -0
- package/dashboards/express/node_modules/fresh/README.md +117 -0
- package/dashboards/express/node_modules/fresh/index.js +136 -0
- package/dashboards/express/node_modules/fresh/package.json +46 -0
- package/dashboards/express/node_modules/function-bind/.eslintrc +21 -0
- package/dashboards/express/node_modules/function-bind/.github/FUNDING.yml +12 -0
- package/dashboards/express/node_modules/function-bind/.github/SECURITY.md +3 -0
- package/dashboards/express/node_modules/function-bind/.nycrc +13 -0
- package/dashboards/express/node_modules/function-bind/CHANGELOG.md +136 -0
- package/dashboards/express/node_modules/function-bind/LICENSE +20 -0
- package/dashboards/express/node_modules/function-bind/README.md +46 -0
- package/dashboards/express/node_modules/function-bind/implementation.js +84 -0
- package/dashboards/express/node_modules/function-bind/index.js +5 -0
- package/dashboards/express/node_modules/function-bind/package.json +87 -0
- package/dashboards/express/node_modules/function-bind/test/.eslintrc +9 -0
- package/dashboards/express/node_modules/function-bind/test/index.js +252 -0
- package/dashboards/express/node_modules/get-intrinsic/.eslintrc +42 -0
- package/dashboards/express/node_modules/get-intrinsic/.github/FUNDING.yml +12 -0
- package/dashboards/express/node_modules/get-intrinsic/.nycrc +9 -0
- package/dashboards/express/node_modules/get-intrinsic/CHANGELOG.md +186 -0
- package/dashboards/express/node_modules/get-intrinsic/LICENSE +21 -0
- package/dashboards/express/node_modules/get-intrinsic/README.md +71 -0
- package/dashboards/express/node_modules/get-intrinsic/index.js +378 -0
- package/dashboards/express/node_modules/get-intrinsic/package.json +97 -0
- package/dashboards/express/node_modules/get-intrinsic/test/GetIntrinsic.js +274 -0
- package/dashboards/express/node_modules/get-proto/.eslintrc +10 -0
- package/dashboards/express/node_modules/get-proto/.github/FUNDING.yml +12 -0
- package/dashboards/express/node_modules/get-proto/.nycrc +9 -0
- package/dashboards/express/node_modules/get-proto/CHANGELOG.md +21 -0
- package/dashboards/express/node_modules/get-proto/LICENSE +21 -0
- package/dashboards/express/node_modules/get-proto/Object.getPrototypeOf.d.ts +5 -0
- package/dashboards/express/node_modules/get-proto/Object.getPrototypeOf.js +6 -0
- package/dashboards/express/node_modules/get-proto/README.md +50 -0
- package/dashboards/express/node_modules/get-proto/Reflect.getPrototypeOf.d.ts +3 -0
- package/dashboards/express/node_modules/get-proto/Reflect.getPrototypeOf.js +4 -0
- package/dashboards/express/node_modules/get-proto/index.d.ts +5 -0
- package/dashboards/express/node_modules/get-proto/index.js +27 -0
- package/dashboards/express/node_modules/get-proto/package.json +81 -0
- package/dashboards/express/node_modules/get-proto/test/index.js +68 -0
- package/dashboards/express/node_modules/get-proto/tsconfig.json +9 -0
- package/dashboards/express/node_modules/gopd/.eslintrc +16 -0
- package/dashboards/express/node_modules/gopd/.github/FUNDING.yml +12 -0
- package/dashboards/express/node_modules/gopd/CHANGELOG.md +45 -0
- package/dashboards/express/node_modules/gopd/LICENSE +21 -0
- package/dashboards/express/node_modules/gopd/README.md +40 -0
- package/dashboards/express/node_modules/gopd/gOPD.d.ts +1 -0
- package/dashboards/express/node_modules/gopd/gOPD.js +4 -0
- package/dashboards/express/node_modules/gopd/index.d.ts +5 -0
- package/dashboards/express/node_modules/gopd/index.js +15 -0
- package/dashboards/express/node_modules/gopd/package.json +77 -0
- package/dashboards/express/node_modules/gopd/test/index.js +36 -0
- package/dashboards/express/node_modules/gopd/tsconfig.json +9 -0
- package/dashboards/express/node_modules/has-symbols/.eslintrc +11 -0
- package/dashboards/express/node_modules/has-symbols/.github/FUNDING.yml +12 -0
- package/dashboards/express/node_modules/has-symbols/.nycrc +9 -0
- package/dashboards/express/node_modules/has-symbols/CHANGELOG.md +91 -0
- package/dashboards/express/node_modules/has-symbols/LICENSE +21 -0
- package/dashboards/express/node_modules/has-symbols/README.md +46 -0
- package/dashboards/express/node_modules/has-symbols/index.d.ts +3 -0
- package/dashboards/express/node_modules/has-symbols/index.js +14 -0
- package/dashboards/express/node_modules/has-symbols/package.json +111 -0
- package/dashboards/express/node_modules/has-symbols/shams.d.ts +3 -0
- package/dashboards/express/node_modules/has-symbols/shams.js +45 -0
- package/dashboards/express/node_modules/has-symbols/test/index.js +22 -0
- package/dashboards/express/node_modules/has-symbols/test/shams/core-js.js +29 -0
- package/dashboards/express/node_modules/has-symbols/test/shams/get-own-property-symbols.js +29 -0
- package/dashboards/express/node_modules/has-symbols/test/tests.js +58 -0
- package/dashboards/express/node_modules/has-symbols/tsconfig.json +10 -0
- package/dashboards/express/node_modules/hasown/.eslintrc +5 -0
- package/dashboards/express/node_modules/hasown/.github/FUNDING.yml +12 -0
- package/dashboards/express/node_modules/hasown/.nycrc +13 -0
- package/dashboards/express/node_modules/hasown/CHANGELOG.md +40 -0
- package/dashboards/express/node_modules/hasown/LICENSE +21 -0
- package/dashboards/express/node_modules/hasown/README.md +40 -0
- package/dashboards/express/node_modules/hasown/index.d.ts +3 -0
- package/dashboards/express/node_modules/hasown/index.js +8 -0
- package/dashboards/express/node_modules/hasown/package.json +92 -0
- package/dashboards/express/node_modules/hasown/tsconfig.json +6 -0
- package/dashboards/express/node_modules/http-errors/HISTORY.md +186 -0
- package/dashboards/express/node_modules/http-errors/LICENSE +23 -0
- package/dashboards/express/node_modules/http-errors/README.md +169 -0
- package/dashboards/express/node_modules/http-errors/index.js +290 -0
- package/dashboards/express/node_modules/http-errors/package.json +54 -0
- package/dashboards/express/node_modules/iconv-lite/LICENSE +21 -0
- package/dashboards/express/node_modules/iconv-lite/README.md +138 -0
- package/dashboards/express/node_modules/iconv-lite/encodings/dbcs-codec.js +532 -0
- package/dashboards/express/node_modules/iconv-lite/encodings/dbcs-data.js +185 -0
- package/dashboards/express/node_modules/iconv-lite/encodings/index.js +23 -0
- package/dashboards/express/node_modules/iconv-lite/encodings/internal.js +218 -0
- package/dashboards/express/node_modules/iconv-lite/encodings/sbcs-codec.js +75 -0
- package/dashboards/express/node_modules/iconv-lite/encodings/sbcs-data-generated.js +451 -0
- package/dashboards/express/node_modules/iconv-lite/encodings/sbcs-data.js +178 -0
- package/dashboards/express/node_modules/iconv-lite/encodings/tables/big5-added.json +122 -0
- package/dashboards/express/node_modules/iconv-lite/encodings/tables/cp936.json +264 -0
- package/dashboards/express/node_modules/iconv-lite/encodings/tables/cp949.json +273 -0
- package/dashboards/express/node_modules/iconv-lite/encodings/tables/cp950.json +177 -0
- package/dashboards/express/node_modules/iconv-lite/encodings/tables/eucjp.json +182 -0
- package/dashboards/express/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +1 -0
- package/dashboards/express/node_modules/iconv-lite/encodings/tables/gbk-added.json +56 -0
- package/dashboards/express/node_modules/iconv-lite/encodings/tables/shiftjis.json +125 -0
- package/dashboards/express/node_modules/iconv-lite/encodings/utf16.js +187 -0
- package/dashboards/express/node_modules/iconv-lite/encodings/utf32.js +307 -0
- package/dashboards/express/node_modules/iconv-lite/encodings/utf7.js +283 -0
- package/dashboards/express/node_modules/iconv-lite/lib/bom-handling.js +48 -0
- package/dashboards/express/node_modules/iconv-lite/lib/helpers/merge-exports.js +13 -0
- package/dashboards/express/node_modules/iconv-lite/lib/index.d.ts +129 -0
- package/dashboards/express/node_modules/iconv-lite/lib/index.js +182 -0
- package/dashboards/express/node_modules/iconv-lite/lib/streams.js +105 -0
- package/dashboards/express/node_modules/iconv-lite/package.json +70 -0
- package/dashboards/express/node_modules/iconv-lite/types/encodings.d.ts +423 -0
- package/dashboards/express/node_modules/inherits/LICENSE +16 -0
- package/dashboards/express/node_modules/inherits/README.md +42 -0
- package/dashboards/express/node_modules/inherits/inherits.js +9 -0
- package/dashboards/express/node_modules/inherits/inherits_browser.js +27 -0
- package/dashboards/express/node_modules/inherits/package.json +29 -0
- package/dashboards/express/node_modules/ipaddr.js/LICENSE +19 -0
- package/dashboards/express/node_modules/ipaddr.js/README.md +233 -0
- package/dashboards/express/node_modules/ipaddr.js/ipaddr.min.js +1 -0
- package/dashboards/express/node_modules/ipaddr.js/lib/ipaddr.js +673 -0
- package/dashboards/express/node_modules/ipaddr.js/lib/ipaddr.js.d.ts +68 -0
- package/dashboards/express/node_modules/ipaddr.js/package.json +35 -0
- package/dashboards/express/node_modules/is-promise/LICENSE +19 -0
- package/dashboards/express/node_modules/is-promise/index.d.ts +2 -0
- package/dashboards/express/node_modules/is-promise/index.js +6 -0
- package/dashboards/express/node_modules/is-promise/index.mjs +3 -0
- package/dashboards/express/node_modules/is-promise/package.json +30 -0
- package/dashboards/express/node_modules/is-promise/readme.md +33 -0
- package/dashboards/express/node_modules/math-intrinsics/.eslintrc +16 -0
- package/dashboards/express/node_modules/math-intrinsics/.github/FUNDING.yml +12 -0
- package/dashboards/express/node_modules/math-intrinsics/CHANGELOG.md +24 -0
- package/dashboards/express/node_modules/math-intrinsics/LICENSE +21 -0
- package/dashboards/express/node_modules/math-intrinsics/README.md +50 -0
- package/dashboards/express/node_modules/math-intrinsics/abs.d.ts +1 -0
- package/dashboards/express/node_modules/math-intrinsics/abs.js +4 -0
- package/dashboards/express/node_modules/math-intrinsics/constants/maxArrayLength.d.ts +3 -0
- package/dashboards/express/node_modules/math-intrinsics/constants/maxArrayLength.js +4 -0
- package/dashboards/express/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts +3 -0
- package/dashboards/express/node_modules/math-intrinsics/constants/maxSafeInteger.js +5 -0
- package/dashboards/express/node_modules/math-intrinsics/constants/maxValue.d.ts +3 -0
- package/dashboards/express/node_modules/math-intrinsics/constants/maxValue.js +5 -0
- package/dashboards/express/node_modules/math-intrinsics/floor.d.ts +1 -0
- package/dashboards/express/node_modules/math-intrinsics/floor.js +4 -0
- package/dashboards/express/node_modules/math-intrinsics/isFinite.d.ts +3 -0
- package/dashboards/express/node_modules/math-intrinsics/isFinite.js +12 -0
- package/dashboards/express/node_modules/math-intrinsics/isInteger.d.ts +3 -0
- package/dashboards/express/node_modules/math-intrinsics/isInteger.js +16 -0
- package/dashboards/express/node_modules/math-intrinsics/isNaN.d.ts +1 -0
- package/dashboards/express/node_modules/math-intrinsics/isNaN.js +6 -0
- package/dashboards/express/node_modules/math-intrinsics/isNegativeZero.d.ts +3 -0
- package/dashboards/express/node_modules/math-intrinsics/isNegativeZero.js +6 -0
- package/dashboards/express/node_modules/math-intrinsics/max.d.ts +1 -0
- package/dashboards/express/node_modules/math-intrinsics/max.js +4 -0
- package/dashboards/express/node_modules/math-intrinsics/min.d.ts +1 -0
- package/dashboards/express/node_modules/math-intrinsics/min.js +4 -0
- package/dashboards/express/node_modules/math-intrinsics/mod.d.ts +3 -0
- package/dashboards/express/node_modules/math-intrinsics/mod.js +9 -0
- package/dashboards/express/node_modules/math-intrinsics/package.json +86 -0
- package/dashboards/express/node_modules/math-intrinsics/pow.d.ts +1 -0
- package/dashboards/express/node_modules/math-intrinsics/pow.js +4 -0
- package/dashboards/express/node_modules/math-intrinsics/round.d.ts +1 -0
- package/dashboards/express/node_modules/math-intrinsics/round.js +4 -0
- package/dashboards/express/node_modules/math-intrinsics/sign.d.ts +3 -0
- package/dashboards/express/node_modules/math-intrinsics/sign.js +11 -0
- package/dashboards/express/node_modules/math-intrinsics/test/index.js +192 -0
- package/dashboards/express/node_modules/math-intrinsics/tsconfig.json +3 -0
- package/dashboards/express/node_modules/media-typer/HISTORY.md +50 -0
- package/dashboards/express/node_modules/media-typer/LICENSE +22 -0
- package/dashboards/express/node_modules/media-typer/README.md +93 -0
- package/dashboards/express/node_modules/media-typer/index.js +143 -0
- package/dashboards/express/node_modules/media-typer/package.json +33 -0
- package/dashboards/express/node_modules/merge-descriptors/index.d.ts +11 -0
- package/dashboards/express/node_modules/merge-descriptors/index.js +26 -0
- package/dashboards/express/node_modules/merge-descriptors/license +11 -0
- package/dashboards/express/node_modules/merge-descriptors/package.json +50 -0
- package/dashboards/express/node_modules/merge-descriptors/readme.md +55 -0
- package/dashboards/express/node_modules/mime-db/HISTORY.md +541 -0
- package/dashboards/express/node_modules/mime-db/LICENSE +23 -0
- package/dashboards/express/node_modules/mime-db/README.md +109 -0
- package/dashboards/express/node_modules/mime-db/db.json +9342 -0
- package/dashboards/express/node_modules/mime-db/index.js +12 -0
- package/dashboards/express/node_modules/mime-db/package.json +56 -0
- package/dashboards/express/node_modules/mime-types/HISTORY.md +428 -0
- package/dashboards/express/node_modules/mime-types/LICENSE +23 -0
- package/dashboards/express/node_modules/mime-types/README.md +126 -0
- package/dashboards/express/node_modules/mime-types/index.js +211 -0
- package/dashboards/express/node_modules/mime-types/mimeScore.js +57 -0
- package/dashboards/express/node_modules/mime-types/package.json +49 -0
- package/dashboards/express/node_modules/ms/index.js +162 -0
- package/dashboards/express/node_modules/ms/license.md +21 -0
- package/dashboards/express/node_modules/ms/package.json +38 -0
- package/dashboards/express/node_modules/ms/readme.md +59 -0
- package/dashboards/express/node_modules/negotiator/HISTORY.md +114 -0
- package/dashboards/express/node_modules/negotiator/LICENSE +24 -0
- package/dashboards/express/node_modules/negotiator/README.md +212 -0
- package/dashboards/express/node_modules/negotiator/index.js +83 -0
- package/dashboards/express/node_modules/negotiator/lib/charset.js +169 -0
- package/dashboards/express/node_modules/negotiator/lib/encoding.js +205 -0
- package/dashboards/express/node_modules/negotiator/lib/language.js +179 -0
- package/dashboards/express/node_modules/negotiator/lib/mediaType.js +294 -0
- package/dashboards/express/node_modules/negotiator/package.json +43 -0
- package/dashboards/express/node_modules/object-inspect/.eslintrc +53 -0
- package/dashboards/express/node_modules/object-inspect/.github/FUNDING.yml +12 -0
- package/dashboards/express/node_modules/object-inspect/.nycrc +13 -0
- package/dashboards/express/node_modules/object-inspect/CHANGELOG.md +424 -0
- package/dashboards/express/node_modules/object-inspect/LICENSE +21 -0
- package/dashboards/express/node_modules/object-inspect/example/all.js +23 -0
- package/dashboards/express/node_modules/object-inspect/example/circular.js +6 -0
- package/dashboards/express/node_modules/object-inspect/example/fn.js +5 -0
- package/dashboards/express/node_modules/object-inspect/example/inspect.js +10 -0
- package/dashboards/express/node_modules/object-inspect/index.js +544 -0
- package/dashboards/express/node_modules/object-inspect/package-support.json +20 -0
- package/dashboards/express/node_modules/object-inspect/package.json +105 -0
- package/dashboards/express/node_modules/object-inspect/readme.markdown +84 -0
- package/dashboards/express/node_modules/object-inspect/test/bigint.js +58 -0
- package/dashboards/express/node_modules/object-inspect/test/browser/dom.js +15 -0
- package/dashboards/express/node_modules/object-inspect/test/circular.js +16 -0
- package/dashboards/express/node_modules/object-inspect/test/deep.js +12 -0
- package/dashboards/express/node_modules/object-inspect/test/element.js +53 -0
- package/dashboards/express/node_modules/object-inspect/test/err.js +48 -0
- package/dashboards/express/node_modules/object-inspect/test/fakes.js +29 -0
- package/dashboards/express/node_modules/object-inspect/test/fn.js +76 -0
- package/dashboards/express/node_modules/object-inspect/test/global.js +17 -0
- package/dashboards/express/node_modules/object-inspect/test/has.js +15 -0
- package/dashboards/express/node_modules/object-inspect/test/holes.js +15 -0
- package/dashboards/express/node_modules/object-inspect/test/indent-option.js +271 -0
- package/dashboards/express/node_modules/object-inspect/test/inspect.js +139 -0
- package/dashboards/express/node_modules/object-inspect/test/lowbyte.js +12 -0
- package/dashboards/express/node_modules/object-inspect/test/number.js +58 -0
- package/dashboards/express/node_modules/object-inspect/test/quoteStyle.js +26 -0
- package/dashboards/express/node_modules/object-inspect/test/toStringTag.js +40 -0
- package/dashboards/express/node_modules/object-inspect/test/undef.js +12 -0
- package/dashboards/express/node_modules/object-inspect/test/values.js +261 -0
- package/dashboards/express/node_modules/object-inspect/test-core-js.js +26 -0
- package/dashboards/express/node_modules/object-inspect/util.inspect.js +1 -0
- package/dashboards/express/node_modules/on-finished/HISTORY.md +98 -0
- package/dashboards/express/node_modules/on-finished/LICENSE +23 -0
- package/dashboards/express/node_modules/on-finished/README.md +162 -0
- package/dashboards/express/node_modules/on-finished/index.js +234 -0
- package/dashboards/express/node_modules/on-finished/package.json +39 -0
- package/dashboards/express/node_modules/on-headers/HISTORY.md +26 -0
- package/dashboards/express/node_modules/on-headers/LICENSE +22 -0
- package/dashboards/express/node_modules/on-headers/README.md +81 -0
- package/dashboards/express/node_modules/on-headers/index.js +180 -0
- package/dashboards/express/node_modules/on-headers/package.json +44 -0
- package/dashboards/express/node_modules/once/LICENSE +15 -0
- package/dashboards/express/node_modules/once/README.md +79 -0
- package/dashboards/express/node_modules/once/once.js +42 -0
- package/dashboards/express/node_modules/once/package.json +33 -0
- package/dashboards/express/node_modules/parseurl/HISTORY.md +58 -0
- package/dashboards/express/node_modules/parseurl/LICENSE +24 -0
- package/dashboards/express/node_modules/parseurl/README.md +133 -0
- package/dashboards/express/node_modules/parseurl/index.js +158 -0
- package/dashboards/express/node_modules/parseurl/package.json +40 -0
- package/dashboards/express/node_modules/path-to-regexp/LICENSE +21 -0
- package/dashboards/express/node_modules/path-to-regexp/Readme.md +224 -0
- package/dashboards/express/node_modules/path-to-regexp/dist/index.d.ts +144 -0
- package/dashboards/express/node_modules/path-to-regexp/dist/index.js +409 -0
- package/dashboards/express/node_modules/path-to-regexp/dist/index.js.map +1 -0
- package/dashboards/express/node_modules/path-to-regexp/package.json +64 -0
- package/dashboards/express/node_modules/proxy-addr/HISTORY.md +161 -0
- package/dashboards/express/node_modules/proxy-addr/LICENSE +22 -0
- package/dashboards/express/node_modules/proxy-addr/README.md +139 -0
- package/dashboards/express/node_modules/proxy-addr/index.js +327 -0
- package/dashboards/express/node_modules/proxy-addr/package.json +47 -0
- package/dashboards/express/node_modules/qs/.editorconfig +46 -0
- package/dashboards/express/node_modules/qs/.github/FUNDING.yml +12 -0
- package/dashboards/express/node_modules/qs/.github/SECURITY.md +11 -0
- package/dashboards/express/node_modules/qs/.github/THREAT_MODEL.md +78 -0
- package/dashboards/express/node_modules/qs/.nycrc +13 -0
- package/dashboards/express/node_modules/qs/CHANGELOG.md +806 -0
- package/dashboards/express/node_modules/qs/LICENSE.md +29 -0
- package/dashboards/express/node_modules/qs/README.md +758 -0
- package/dashboards/express/node_modules/qs/dist/qs.js +141 -0
- package/dashboards/express/node_modules/qs/eslint.config.mjs +56 -0
- package/dashboards/express/node_modules/qs/lib/formats.js +23 -0
- package/dashboards/express/node_modules/qs/lib/index.js +11 -0
- package/dashboards/express/node_modules/qs/lib/parse.js +373 -0
- package/dashboards/express/node_modules/qs/lib/stringify.js +356 -0
- package/dashboards/express/node_modules/qs/lib/utils.js +342 -0
- package/dashboards/express/node_modules/qs/package.json +94 -0
- package/dashboards/express/node_modules/qs/test/empty-keys-cases.js +267 -0
- package/dashboards/express/node_modules/qs/test/parse.js +1568 -0
- package/dashboards/express/node_modules/qs/test/stringify.js +1310 -0
- package/dashboards/express/node_modules/qs/test/utils.js +404 -0
- package/dashboards/express/node_modules/random-bytes/HISTORY.md +4 -0
- package/dashboards/express/node_modules/random-bytes/LICENSE +21 -0
- package/dashboards/express/node_modules/random-bytes/README.md +77 -0
- package/dashboards/express/node_modules/random-bytes/index.js +101 -0
- package/dashboards/express/node_modules/random-bytes/package.json +36 -0
- package/dashboards/express/node_modules/range-parser/HISTORY.md +56 -0
- package/dashboards/express/node_modules/range-parser/LICENSE +23 -0
- package/dashboards/express/node_modules/range-parser/README.md +84 -0
- package/dashboards/express/node_modules/range-parser/index.js +162 -0
- package/dashboards/express/node_modules/range-parser/package.json +44 -0
- package/dashboards/express/node_modules/raw-body/LICENSE +22 -0
- package/dashboards/express/node_modules/raw-body/README.md +223 -0
- package/dashboards/express/node_modules/raw-body/index.d.ts +85 -0
- package/dashboards/express/node_modules/raw-body/index.js +336 -0
- package/dashboards/express/node_modules/raw-body/package.json +46 -0
- package/dashboards/express/node_modules/router/HISTORY.md +228 -0
- package/dashboards/express/node_modules/router/LICENSE +23 -0
- package/dashboards/express/node_modules/router/README.md +416 -0
- package/dashboards/express/node_modules/router/index.js +748 -0
- package/dashboards/express/node_modules/router/lib/layer.js +247 -0
- package/dashboards/express/node_modules/router/lib/route.js +242 -0
- package/dashboards/express/node_modules/router/package.json +44 -0
- package/dashboards/express/node_modules/safe-buffer/LICENSE +21 -0
- package/dashboards/express/node_modules/safe-buffer/README.md +584 -0
- package/dashboards/express/node_modules/safe-buffer/index.d.ts +187 -0
- package/dashboards/express/node_modules/safe-buffer/index.js +65 -0
- package/dashboards/express/node_modules/safe-buffer/package.json +51 -0
- package/dashboards/express/node_modules/safer-buffer/LICENSE +21 -0
- package/dashboards/express/node_modules/safer-buffer/Porting-Buffer.md +268 -0
- package/dashboards/express/node_modules/safer-buffer/Readme.md +156 -0
- package/dashboards/express/node_modules/safer-buffer/dangerous.js +58 -0
- package/dashboards/express/node_modules/safer-buffer/package.json +34 -0
- package/dashboards/express/node_modules/safer-buffer/safer.js +77 -0
- package/dashboards/express/node_modules/safer-buffer/tests.js +406 -0
- package/dashboards/express/node_modules/send/LICENSE +23 -0
- package/dashboards/express/node_modules/send/README.md +317 -0
- package/dashboards/express/node_modules/send/index.js +997 -0
- package/dashboards/express/node_modules/send/package.json +63 -0
- package/dashboards/express/node_modules/serve-static/LICENSE +25 -0
- package/dashboards/express/node_modules/serve-static/README.md +253 -0
- package/dashboards/express/node_modules/serve-static/index.js +208 -0
- package/dashboards/express/node_modules/serve-static/package.json +44 -0
- package/dashboards/express/node_modules/setprototypeof/LICENSE +13 -0
- package/dashboards/express/node_modules/setprototypeof/README.md +31 -0
- package/dashboards/express/node_modules/setprototypeof/index.d.ts +2 -0
- package/dashboards/express/node_modules/setprototypeof/index.js +17 -0
- package/dashboards/express/node_modules/setprototypeof/package.json +38 -0
- package/dashboards/express/node_modules/setprototypeof/test/index.js +24 -0
- package/dashboards/express/node_modules/side-channel/.editorconfig +9 -0
- package/dashboards/express/node_modules/side-channel/.eslintrc +12 -0
- package/dashboards/express/node_modules/side-channel/.github/FUNDING.yml +12 -0
- package/dashboards/express/node_modules/side-channel/.nycrc +13 -0
- package/dashboards/express/node_modules/side-channel/CHANGELOG.md +110 -0
- package/dashboards/express/node_modules/side-channel/LICENSE +21 -0
- package/dashboards/express/node_modules/side-channel/README.md +61 -0
- package/dashboards/express/node_modules/side-channel/index.d.ts +14 -0
- package/dashboards/express/node_modules/side-channel/index.js +43 -0
- package/dashboards/express/node_modules/side-channel/package.json +85 -0
- package/dashboards/express/node_modules/side-channel/test/index.js +104 -0
- package/dashboards/express/node_modules/side-channel/tsconfig.json +9 -0
- package/dashboards/express/node_modules/side-channel-list/.editorconfig +9 -0
- package/dashboards/express/node_modules/side-channel-list/.eslintrc +11 -0
- package/dashboards/express/node_modules/side-channel-list/.github/FUNDING.yml +12 -0
- package/dashboards/express/node_modules/side-channel-list/.nycrc +13 -0
- package/dashboards/express/node_modules/side-channel-list/CHANGELOG.md +15 -0
- package/dashboards/express/node_modules/side-channel-list/LICENSE +21 -0
- package/dashboards/express/node_modules/side-channel-list/README.md +62 -0
- package/dashboards/express/node_modules/side-channel-list/index.d.ts +13 -0
- package/dashboards/express/node_modules/side-channel-list/index.js +113 -0
- package/dashboards/express/node_modules/side-channel-list/list.d.ts +14 -0
- package/dashboards/express/node_modules/side-channel-list/package.json +77 -0
- package/dashboards/express/node_modules/side-channel-list/test/index.js +104 -0
- package/dashboards/express/node_modules/side-channel-list/tsconfig.json +9 -0
- package/dashboards/express/node_modules/side-channel-map/.editorconfig +9 -0
- package/dashboards/express/node_modules/side-channel-map/.eslintrc +11 -0
- package/dashboards/express/node_modules/side-channel-map/.github/FUNDING.yml +12 -0
- package/dashboards/express/node_modules/side-channel-map/.nycrc +13 -0
- package/dashboards/express/node_modules/side-channel-map/CHANGELOG.md +22 -0
- package/dashboards/express/node_modules/side-channel-map/LICENSE +21 -0
- package/dashboards/express/node_modules/side-channel-map/README.md +62 -0
- package/dashboards/express/node_modules/side-channel-map/index.d.ts +15 -0
- package/dashboards/express/node_modules/side-channel-map/index.js +68 -0
- package/dashboards/express/node_modules/side-channel-map/package.json +80 -0
- package/dashboards/express/node_modules/side-channel-map/test/index.js +114 -0
- package/dashboards/express/node_modules/side-channel-map/tsconfig.json +9 -0
- package/dashboards/express/node_modules/side-channel-weakmap/.editorconfig +9 -0
- package/dashboards/express/node_modules/side-channel-weakmap/.eslintrc +12 -0
- package/dashboards/express/node_modules/side-channel-weakmap/.github/FUNDING.yml +12 -0
- package/dashboards/express/node_modules/side-channel-weakmap/.nycrc +13 -0
- package/dashboards/express/node_modules/side-channel-weakmap/CHANGELOG.md +28 -0
- package/dashboards/express/node_modules/side-channel-weakmap/LICENSE +21 -0
- package/dashboards/express/node_modules/side-channel-weakmap/README.md +62 -0
- package/dashboards/express/node_modules/side-channel-weakmap/index.d.ts +15 -0
- package/dashboards/express/node_modules/side-channel-weakmap/index.js +84 -0
- package/dashboards/express/node_modules/side-channel-weakmap/package.json +87 -0
- package/dashboards/express/node_modules/side-channel-weakmap/test/index.js +114 -0
- package/dashboards/express/node_modules/side-channel-weakmap/tsconfig.json +9 -0
- package/dashboards/express/node_modules/statuses/HISTORY.md +87 -0
- package/dashboards/express/node_modules/statuses/LICENSE +23 -0
- package/dashboards/express/node_modules/statuses/README.md +139 -0
- package/dashboards/express/node_modules/statuses/codes.json +65 -0
- package/dashboards/express/node_modules/statuses/index.js +146 -0
- package/dashboards/express/node_modules/statuses/package.json +49 -0
- package/dashboards/express/node_modules/toidentifier/HISTORY.md +9 -0
- package/dashboards/express/node_modules/toidentifier/LICENSE +21 -0
- package/dashboards/express/node_modules/toidentifier/README.md +61 -0
- package/dashboards/express/node_modules/toidentifier/index.js +32 -0
- package/dashboards/express/node_modules/toidentifier/package.json +38 -0
- package/dashboards/express/node_modules/type-is/HISTORY.md +292 -0
- package/dashboards/express/node_modules/type-is/LICENSE +23 -0
- package/dashboards/express/node_modules/type-is/README.md +198 -0
- package/dashboards/express/node_modules/type-is/index.js +250 -0
- package/dashboards/express/node_modules/type-is/package.json +47 -0
- package/dashboards/express/node_modules/uid-safe/HISTORY.md +61 -0
- package/dashboards/express/node_modules/uid-safe/LICENSE +22 -0
- package/dashboards/express/node_modules/uid-safe/README.md +77 -0
- package/dashboards/express/node_modules/uid-safe/index.js +107 -0
- package/dashboards/express/node_modules/uid-safe/package.json +46 -0
- package/dashboards/express/node_modules/unpipe/HISTORY.md +4 -0
- package/dashboards/express/node_modules/unpipe/LICENSE +22 -0
- package/dashboards/express/node_modules/unpipe/README.md +43 -0
- package/dashboards/express/node_modules/unpipe/index.js +69 -0
- package/dashboards/express/node_modules/unpipe/package.json +27 -0
- package/dashboards/express/node_modules/vary/HISTORY.md +39 -0
- package/dashboards/express/node_modules/vary/LICENSE +22 -0
- package/dashboards/express/node_modules/vary/README.md +101 -0
- package/dashboards/express/node_modules/vary/index.js +149 -0
- package/dashboards/express/node_modules/vary/package.json +43 -0
- package/dashboards/express/node_modules/wrappy/LICENSE +15 -0
- package/dashboards/express/node_modules/wrappy/README.md +36 -0
- package/dashboards/express/node_modules/wrappy/package.json +29 -0
- package/dashboards/express/node_modules/wrappy/wrappy.js +33 -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/package.json +11 -10
- package/schemas/agenticmail-skill.v1.schema.json +180 -0
- 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/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/live-test.mjs +0 -165
- package/serve.mjs +0 -19
- package/src/engine/agenticmail-bridge.ts +0 -296
- package/src/engine/openclaw-hook.ts +0 -371
- package/start-live.mjs +0 -39
- package/test-integration.mjs +0 -383
|
@@ -0,0 +1,1186 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bulk Policy Import Engine
|
|
3
|
+
*
|
|
4
|
+
* Supports batch import of organization policies from multiple formats:
|
|
5
|
+
* JSON arrays, CSV, Markdown documents, HTML, plain text, remote URLs,
|
|
6
|
+
* and pre-built industry template packs.
|
|
7
|
+
*
|
|
8
|
+
* Reuses text extraction patterns from knowledge.ts.
|
|
9
|
+
* Each import creates a tracked job with progress reporting.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { createHash } from 'crypto';
|
|
13
|
+
import type { EngineDatabase } from './db-adapter.js';
|
|
14
|
+
import type { OrgPolicyEngine, OrgPolicy, CreatePolicyInput, PolicyCategory, PolicyEnforcement } from './org-policies.js';
|
|
15
|
+
import type { StorageManager } from './storage-manager.js';
|
|
16
|
+
|
|
17
|
+
// ─── Types ──────────────────────────────────────────────
|
|
18
|
+
|
|
19
|
+
export type ImportFormat = 'json' | 'csv' | 'markdown' | 'text' | 'html' | 'url';
|
|
20
|
+
export type ImportStatus = 'pending' | 'processing' | 'completed' | 'failed' | 'partial';
|
|
21
|
+
export type DeduplicationMode = 'skip' | 'replace' | 'version';
|
|
22
|
+
|
|
23
|
+
export interface ImportJob {
|
|
24
|
+
id: string;
|
|
25
|
+
orgId: string;
|
|
26
|
+
format: ImportFormat;
|
|
27
|
+
status: ImportStatus;
|
|
28
|
+
progress: {
|
|
29
|
+
total: number;
|
|
30
|
+
processed: number;
|
|
31
|
+
succeeded: number;
|
|
32
|
+
failed: number;
|
|
33
|
+
duplicates: number;
|
|
34
|
+
};
|
|
35
|
+
errors: ImportError[];
|
|
36
|
+
policyIds: string[];
|
|
37
|
+
createdBy: string;
|
|
38
|
+
createdAt: string;
|
|
39
|
+
completedAt?: string;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export interface ImportError {
|
|
43
|
+
index: number;
|
|
44
|
+
name?: string;
|
|
45
|
+
error: string;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export interface PolicyImportInput {
|
|
49
|
+
orgId: string;
|
|
50
|
+
createdBy?: string;
|
|
51
|
+
deduplication?: DeduplicationMode;
|
|
52
|
+
defaultCategory?: PolicyCategory;
|
|
53
|
+
defaultEnforcement?: PolicyEnforcement;
|
|
54
|
+
dryRun?: boolean;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export interface JsonImportInput extends PolicyImportInput {
|
|
58
|
+
policies: Array<{
|
|
59
|
+
name: string;
|
|
60
|
+
category?: PolicyCategory;
|
|
61
|
+
content: string;
|
|
62
|
+
enforcement?: PolicyEnforcement;
|
|
63
|
+
description?: string;
|
|
64
|
+
priority?: number;
|
|
65
|
+
tags?: string[];
|
|
66
|
+
appliesTo?: string[];
|
|
67
|
+
}>;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export interface DocumentImportInput extends PolicyImportInput {
|
|
71
|
+
documents: Array<{
|
|
72
|
+
name: string;
|
|
73
|
+
content: string; // base64 or utf-8
|
|
74
|
+
format: 'markdown' | 'text' | 'html' | 'csv';
|
|
75
|
+
encoding?: 'base64' | 'utf-8';
|
|
76
|
+
metadata?: Record<string, any>;
|
|
77
|
+
}>;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export interface UrlImportInput extends PolicyImportInput {
|
|
81
|
+
urls: Array<{
|
|
82
|
+
url: string;
|
|
83
|
+
name?: string;
|
|
84
|
+
format?: ImportFormat;
|
|
85
|
+
}>;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
interface ParsedPolicy {
|
|
89
|
+
name: string;
|
|
90
|
+
category: PolicyCategory;
|
|
91
|
+
content: string;
|
|
92
|
+
enforcement: PolicyEnforcement;
|
|
93
|
+
description?: string;
|
|
94
|
+
priority: number;
|
|
95
|
+
tags: string[];
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// ─── Template Packs ─────────────────────────────────────
|
|
99
|
+
|
|
100
|
+
export interface TemplatePack {
|
|
101
|
+
id: string;
|
|
102
|
+
name: string;
|
|
103
|
+
description: string;
|
|
104
|
+
industry: string;
|
|
105
|
+
policies: Array<{
|
|
106
|
+
name: string;
|
|
107
|
+
category: PolicyCategory;
|
|
108
|
+
content: string;
|
|
109
|
+
enforcement: PolicyEnforcement;
|
|
110
|
+
description: string;
|
|
111
|
+
priority: number;
|
|
112
|
+
tags: string[];
|
|
113
|
+
}>;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// Define 4 template packs with 5-8 comprehensive policies each:
|
|
117
|
+
|
|
118
|
+
const TEMPLATE_PACKS: Record<string, TemplatePack> = {
|
|
119
|
+
healthcare: {
|
|
120
|
+
id: 'healthcare',
|
|
121
|
+
name: 'Healthcare Compliance Pack',
|
|
122
|
+
description: 'HIPAA-compliant policies for healthcare organizations',
|
|
123
|
+
industry: 'healthcare',
|
|
124
|
+
policies: [
|
|
125
|
+
{
|
|
126
|
+
name: 'HIPAA Compliance & PHI Protection',
|
|
127
|
+
category: 'data_handling',
|
|
128
|
+
enforcement: 'mandatory',
|
|
129
|
+
description: 'Protected Health Information handling requirements under HIPAA',
|
|
130
|
+
priority: 100,
|
|
131
|
+
tags: ['hipaa', 'phi', 'compliance'],
|
|
132
|
+
content: `# HIPAA Compliance & PHI Protection
|
|
133
|
+
|
|
134
|
+
## Protected Health Information (PHI)
|
|
135
|
+
You must NEVER disclose, share, or process Protected Health Information without proper authorization. PHI includes:
|
|
136
|
+
- Patient names, addresses, dates of birth, Social Security numbers
|
|
137
|
+
- Medical record numbers, health plan beneficiary numbers
|
|
138
|
+
- Any information that could identify a patient
|
|
139
|
+
|
|
140
|
+
## Minimum Necessary Standard
|
|
141
|
+
Only access, use, or disclose the minimum amount of PHI necessary to accomplish the task at hand.
|
|
142
|
+
|
|
143
|
+
## De-identification
|
|
144
|
+
When discussing patient cases or generating reports, always de-identify information by removing all 18 HIPAA identifiers.
|
|
145
|
+
|
|
146
|
+
## Breach Notification
|
|
147
|
+
If you detect or suspect a PHI breach, immediately flag it for human review and halt any further processing of the affected data.
|
|
148
|
+
|
|
149
|
+
## Business Associate Requirements
|
|
150
|
+
When interacting with third-party systems, ensure all data transfers comply with Business Associate Agreement (BAA) requirements.
|
|
151
|
+
|
|
152
|
+
## Penalties
|
|
153
|
+
Violations of HIPAA can result in fines from $100 to $50,000 per violation, with annual maximums of $1.5 million. Take this seriously.`,
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
name: 'Patient Communication Standards',
|
|
157
|
+
category: 'communication',
|
|
158
|
+
enforcement: 'mandatory',
|
|
159
|
+
description: 'Guidelines for communicating with patients and caregivers',
|
|
160
|
+
priority: 90,
|
|
161
|
+
tags: ['patient', 'communication', 'empathy'],
|
|
162
|
+
content: `# Patient Communication Standards
|
|
163
|
+
|
|
164
|
+
## Tone & Empathy
|
|
165
|
+
Always communicate with empathy, patience, and clarity. Patients may be anxious, confused, or in distress. Use plain language and avoid medical jargon unless the patient demonstrates medical literacy.
|
|
166
|
+
|
|
167
|
+
## Consent & Authorization
|
|
168
|
+
Never provide medical advice, diagnoses, or treatment recommendations. Always direct patients to their healthcare provider for clinical decisions. You may share general health information and help schedule appointments.
|
|
169
|
+
|
|
170
|
+
## Emergency Protocols
|
|
171
|
+
If a patient describes symptoms of a medical emergency (chest pain, difficulty breathing, severe bleeding, suicidal ideation), immediately provide emergency contact information (911) and escalate to a human operator.
|
|
172
|
+
|
|
173
|
+
## Sensitive Topics
|
|
174
|
+
Handle mental health, substance abuse, reproductive health, and terminal illness discussions with extra sensitivity. Never be judgmental. Always offer to connect with specialized support resources.
|
|
175
|
+
|
|
176
|
+
## Minors & Guardians
|
|
177
|
+
When communicating about minors, verify that the requester has appropriate parental or guardian authority before sharing any information.`,
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
name: 'Clinical Data Handling',
|
|
181
|
+
category: 'data_handling',
|
|
182
|
+
enforcement: 'mandatory',
|
|
183
|
+
description: 'Rules for handling clinical data, lab results, and medical records',
|
|
184
|
+
priority: 95,
|
|
185
|
+
tags: ['clinical', 'data', 'records'],
|
|
186
|
+
content: `# Clinical Data Handling
|
|
187
|
+
|
|
188
|
+
## Data Classification
|
|
189
|
+
- **Critical**: Lab results, diagnoses, prescriptions, surgical records — require explicit authorization for access
|
|
190
|
+
- **Sensitive**: Appointment history, billing records, insurance information — standard access controls
|
|
191
|
+
- **General**: Facility hours, general health information, provider directories — publicly available
|
|
192
|
+
|
|
193
|
+
## Data Retention
|
|
194
|
+
Follow your organization's data retention policy. Default: retain clinical records for 7 years from last encounter, or as required by state law (whichever is longer).
|
|
195
|
+
|
|
196
|
+
## Audit Trail
|
|
197
|
+
All access to clinical data must be logged with: who accessed it, when, why, and what was viewed or modified.
|
|
198
|
+
|
|
199
|
+
## Data Transmission
|
|
200
|
+
Clinical data must only be transmitted through encrypted channels. Never send PHI via unencrypted email, chat, or SMS.
|
|
201
|
+
|
|
202
|
+
## Research & Analytics
|
|
203
|
+
De-identify all data before use in research or analytics. Obtain IRB approval when required.`,
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
name: 'Emergency Response Protocol',
|
|
207
|
+
category: 'escalation',
|
|
208
|
+
enforcement: 'mandatory',
|
|
209
|
+
description: 'Procedures for handling medical emergencies and urgent situations',
|
|
210
|
+
priority: 100,
|
|
211
|
+
tags: ['emergency', 'escalation', 'urgent'],
|
|
212
|
+
content: `# Emergency Response Protocol
|
|
213
|
+
|
|
214
|
+
## Immediate Escalation Triggers
|
|
215
|
+
Escalate IMMEDIATELY to a human operator when any of these are detected:
|
|
216
|
+
- Life-threatening symptoms described by patient
|
|
217
|
+
- Suicidal or homicidal ideation
|
|
218
|
+
- Child abuse or elder abuse disclosures
|
|
219
|
+
- Adverse drug reactions
|
|
220
|
+
- Post-surgical complications
|
|
221
|
+
|
|
222
|
+
## Response Steps
|
|
223
|
+
1. Acknowledge the urgency calmly
|
|
224
|
+
2. If life-threatening: provide 911 and local emergency numbers immediately
|
|
225
|
+
3. Do NOT attempt to diagnose or provide medical advice
|
|
226
|
+
4. Flag the conversation for urgent human review
|
|
227
|
+
5. Stay with the patient (keep conversation open) until human takes over
|
|
228
|
+
|
|
229
|
+
## Documentation
|
|
230
|
+
After any emergency escalation, generate a summary including: time of escalation, nature of emergency, actions taken, and outcome.`,
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
name: 'Healthcare Security Standards',
|
|
234
|
+
category: 'security',
|
|
235
|
+
enforcement: 'mandatory',
|
|
236
|
+
description: 'Security protocols specific to healthcare environments',
|
|
237
|
+
priority: 90,
|
|
238
|
+
tags: ['security', 'healthcare', 'access-control'],
|
|
239
|
+
content: `# Healthcare Security Standards
|
|
240
|
+
|
|
241
|
+
## Authentication
|
|
242
|
+
All clinical system access requires multi-factor authentication. Never bypass or work around authentication controls.
|
|
243
|
+
|
|
244
|
+
## Access Control
|
|
245
|
+
Follow role-based access control (RBAC). Only access systems and data that your assigned role permits. Report any unauthorized access attempts.
|
|
246
|
+
|
|
247
|
+
## Audit Logging
|
|
248
|
+
All actions involving patient data must generate audit log entries. Audit logs are immutable and retained for 6 years minimum.
|
|
249
|
+
|
|
250
|
+
## Incident Response
|
|
251
|
+
Report any suspected security incidents immediately. Do not attempt to investigate or remediate without authorization. Preserve all evidence.
|
|
252
|
+
|
|
253
|
+
## Device Security
|
|
254
|
+
When operating in clinical environments, ensure all connections are encrypted (TLS 1.2+). Never store credentials in plaintext. Rotate API keys every 90 days.`,
|
|
255
|
+
},
|
|
256
|
+
],
|
|
257
|
+
},
|
|
258
|
+
finance: {
|
|
259
|
+
id: 'finance',
|
|
260
|
+
name: 'Financial Services Compliance Pack',
|
|
261
|
+
description: 'SOX, KYC/AML, and financial regulation policies',
|
|
262
|
+
industry: 'finance',
|
|
263
|
+
policies: [
|
|
264
|
+
{
|
|
265
|
+
name: 'SOX Compliance & Financial Controls',
|
|
266
|
+
category: 'code_of_conduct',
|
|
267
|
+
enforcement: 'mandatory',
|
|
268
|
+
description: 'Sarbanes-Oxley compliance requirements for financial reporting',
|
|
269
|
+
priority: 100,
|
|
270
|
+
tags: ['sox', 'compliance', 'financial'],
|
|
271
|
+
content: `# SOX Compliance & Financial Controls
|
|
272
|
+
|
|
273
|
+
## Internal Controls
|
|
274
|
+
All financial data processing must maintain proper internal controls. Never modify financial records without proper authorization and an audit trail.
|
|
275
|
+
|
|
276
|
+
## Segregation of Duties
|
|
277
|
+
No single agent should have the ability to both initiate and approve financial transactions. Always require human approval for transactions above configured thresholds.
|
|
278
|
+
|
|
279
|
+
## Financial Reporting Accuracy
|
|
280
|
+
All financial summaries, reports, and calculations must be accurate and verifiable. Double-check all numerical computations. Flag any discrepancies immediately.
|
|
281
|
+
|
|
282
|
+
## Record Retention
|
|
283
|
+
Financial records must be retained for 7 years minimum. Never delete, modify, or overwrite financial records without explicit authorization from compliance officers.
|
|
284
|
+
|
|
285
|
+
## Whistleblower Protection
|
|
286
|
+
If you detect potential fraud, accounting irregularities, or compliance violations, report them through the designated compliance channel. Never suppress or ignore such findings.`,
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
name: 'KYC/AML Protocols',
|
|
290
|
+
category: 'security',
|
|
291
|
+
enforcement: 'mandatory',
|
|
292
|
+
description: 'Know Your Customer and Anti-Money Laundering procedures',
|
|
293
|
+
priority: 100,
|
|
294
|
+
tags: ['kyc', 'aml', 'compliance'],
|
|
295
|
+
content: `# KYC/AML Protocols
|
|
296
|
+
|
|
297
|
+
## Customer Identification
|
|
298
|
+
Verify customer identity before processing any financial transaction. Required identification includes government-issued ID, proof of address, and tax identification number.
|
|
299
|
+
|
|
300
|
+
## Suspicious Activity Detection
|
|
301
|
+
Flag transactions that exhibit these patterns:
|
|
302
|
+
- Unusual transaction amounts or frequency
|
|
303
|
+
- Transactions just below reporting thresholds (structuring)
|
|
304
|
+
- Transfers to/from high-risk jurisdictions
|
|
305
|
+
- Rapid movement of funds between accounts
|
|
306
|
+
- Inconsistency between transaction patterns and customer profile
|
|
307
|
+
|
|
308
|
+
## Reporting Requirements
|
|
309
|
+
File Suspicious Activity Reports (SARs) for any flagged transactions. Do not inform the customer that a SAR has been filed (tipping-off is illegal).
|
|
310
|
+
|
|
311
|
+
## Sanctions Screening
|
|
312
|
+
Screen all parties against OFAC, EU, and UN sanctions lists before processing transactions. Block any transactions involving sanctioned entities.
|
|
313
|
+
|
|
314
|
+
## Enhanced Due Diligence
|
|
315
|
+
Apply enhanced scrutiny for: politically exposed persons (PEPs), high-risk countries, unusual business structures, and transactions over $10,000.`,
|
|
316
|
+
},
|
|
317
|
+
{
|
|
318
|
+
name: 'Transaction Limits & Approvals',
|
|
319
|
+
category: 'escalation',
|
|
320
|
+
enforcement: 'mandatory',
|
|
321
|
+
description: 'Transaction thresholds and approval chains',
|
|
322
|
+
priority: 95,
|
|
323
|
+
tags: ['transactions', 'limits', 'approvals'],
|
|
324
|
+
content: `# Transaction Limits & Approvals
|
|
325
|
+
|
|
326
|
+
## Automated Processing Limits
|
|
327
|
+
- Under $1,000: May process automatically with standard verification
|
|
328
|
+
- $1,000 - $10,000: Requires single human approval
|
|
329
|
+
- $10,000 - $100,000: Requires dual human approval
|
|
330
|
+
- Over $100,000: Requires compliance officer review plus dual approval
|
|
331
|
+
|
|
332
|
+
## Wire Transfers
|
|
333
|
+
All international wire transfers require human verification regardless of amount. Domestic wires over $5,000 require human approval.
|
|
334
|
+
|
|
335
|
+
## Recurring Transactions
|
|
336
|
+
Recurring transaction setup requires initial human approval. Any modification to recurring amounts above 20% triggers re-approval.
|
|
337
|
+
|
|
338
|
+
## Failed Transaction Handling
|
|
339
|
+
Never retry failed transactions automatically more than once. If a transaction fails twice, escalate to human review.
|
|
340
|
+
|
|
341
|
+
## Refund Processing
|
|
342
|
+
Refunds over $500 require human approval. All refunds must reference the original transaction and include a documented reason.`,
|
|
343
|
+
},
|
|
344
|
+
{
|
|
345
|
+
name: 'Financial Advice Disclaimers',
|
|
346
|
+
category: 'communication',
|
|
347
|
+
enforcement: 'mandatory',
|
|
348
|
+
description: 'Required disclaimers when discussing financial products',
|
|
349
|
+
priority: 85,
|
|
350
|
+
tags: ['disclaimer', 'advice', 'fiduciary'],
|
|
351
|
+
content: `# Financial Advice Disclaimers
|
|
352
|
+
|
|
353
|
+
## General Disclaimer
|
|
354
|
+
You are NOT a licensed financial advisor. Always include this disclaimer when discussing financial products or strategies: "This information is for educational purposes only and does not constitute financial advice. Please consult a licensed financial advisor for personalized recommendations."
|
|
355
|
+
|
|
356
|
+
## Investment Discussions
|
|
357
|
+
Never recommend specific investments, predict market performance, or guarantee returns. You may explain how financial products work in general terms.
|
|
358
|
+
|
|
359
|
+
## Insurance Products
|
|
360
|
+
Do not recommend specific insurance policies or coverage amounts. Provide general information and direct to licensed insurance agents.
|
|
361
|
+
|
|
362
|
+
## Tax Information
|
|
363
|
+
Provide general tax information only. Always recommend consulting a CPA or tax professional for specific tax situations. Include: "Tax laws vary by jurisdiction and change frequently."
|
|
364
|
+
|
|
365
|
+
## Suitability
|
|
366
|
+
Never make suitability determinations for financial products. This requires human assessment of the customer's complete financial situation.`,
|
|
367
|
+
},
|
|
368
|
+
{
|
|
369
|
+
name: 'Financial Data Security',
|
|
370
|
+
category: 'data_handling',
|
|
371
|
+
enforcement: 'mandatory',
|
|
372
|
+
description: 'PCI-DSS and financial data protection requirements',
|
|
373
|
+
priority: 95,
|
|
374
|
+
tags: ['pci', 'security', 'data'],
|
|
375
|
+
content: `# Financial Data Security
|
|
376
|
+
|
|
377
|
+
## PCI-DSS Compliance
|
|
378
|
+
Never store full credit card numbers, CVV codes, or PINs in any form. Display only the last 4 digits when referencing card numbers. All payment data must be processed through PCI-DSS compliant channels.
|
|
379
|
+
|
|
380
|
+
## Account Numbers
|
|
381
|
+
Mask all account numbers in responses and logs. Display only the last 4 digits. Full account numbers may only be used in encrypted API calls to verified financial systems.
|
|
382
|
+
|
|
383
|
+
## Data Encryption
|
|
384
|
+
All financial data must be encrypted in transit (TLS 1.2+) and at rest (AES-256). Never log financial data in plaintext.
|
|
385
|
+
|
|
386
|
+
## Access Logging
|
|
387
|
+
Log all access to financial data with: timestamp, accessor ID, data accessed, and business justification. Logs are immutable and retained for 7 years.
|
|
388
|
+
|
|
389
|
+
## Data Residency
|
|
390
|
+
Financial data must remain within the designated geographic regions as required by regulation. Do not transfer data across borders without compliance review.`,
|
|
391
|
+
},
|
|
392
|
+
],
|
|
393
|
+
},
|
|
394
|
+
tech: {
|
|
395
|
+
id: 'tech',
|
|
396
|
+
name: 'Technology Company Pack',
|
|
397
|
+
description: 'Policies for software companies and tech organizations',
|
|
398
|
+
industry: 'technology',
|
|
399
|
+
policies: [
|
|
400
|
+
{
|
|
401
|
+
name: 'Code Review & Quality Standards',
|
|
402
|
+
category: 'code_of_conduct',
|
|
403
|
+
enforcement: 'mandatory',
|
|
404
|
+
description: 'Standards for code generation, review, and quality assurance',
|
|
405
|
+
priority: 90,
|
|
406
|
+
tags: ['code', 'quality', 'review'],
|
|
407
|
+
content: `# Code Review & Quality Standards
|
|
408
|
+
|
|
409
|
+
## Code Generation
|
|
410
|
+
When generating or modifying code:
|
|
411
|
+
- Follow the project's existing coding style and conventions
|
|
412
|
+
- Include appropriate error handling for all operations
|
|
413
|
+
- Never introduce known security vulnerabilities (SQL injection, XSS, etc.)
|
|
414
|
+
- Write code that is readable and maintainable
|
|
415
|
+
- Add comments only where logic is non-obvious
|
|
416
|
+
|
|
417
|
+
## Security-First Coding
|
|
418
|
+
- Never hardcode credentials, API keys, or secrets in code
|
|
419
|
+
- Use parameterized queries for all database operations
|
|
420
|
+
- Validate and sanitize all user inputs
|
|
421
|
+
- Follow the principle of least privilege
|
|
422
|
+
|
|
423
|
+
## Testing
|
|
424
|
+
- Suggest tests for any new functionality
|
|
425
|
+
- Never bypass or skip existing tests
|
|
426
|
+
- Flag any code changes that break existing test coverage
|
|
427
|
+
|
|
428
|
+
## Dependencies
|
|
429
|
+
- Only recommend well-maintained, reputable packages
|
|
430
|
+
- Check for known vulnerabilities before suggesting dependencies
|
|
431
|
+
- Prefer packages with permissive licenses (MIT, Apache 2.0) unless specified otherwise`,
|
|
432
|
+
},
|
|
433
|
+
{
|
|
434
|
+
name: 'Incident Response Procedures',
|
|
435
|
+
category: 'escalation',
|
|
436
|
+
enforcement: 'mandatory',
|
|
437
|
+
description: 'Procedures for handling production incidents and outages',
|
|
438
|
+
priority: 100,
|
|
439
|
+
tags: ['incident', 'response', 'production'],
|
|
440
|
+
content: `# Incident Response Procedures
|
|
441
|
+
|
|
442
|
+
## Severity Levels
|
|
443
|
+
- **SEV1 (Critical)**: Complete service outage, data breach, security incident → Escalate immediately to on-call engineer AND engineering leadership
|
|
444
|
+
- **SEV2 (Major)**: Partial outage, significant degradation, data loss risk → Escalate to on-call engineer within 5 minutes
|
|
445
|
+
- **SEV3 (Minor)**: Non-critical feature failure, performance degradation → Create ticket, notify team channel
|
|
446
|
+
- **SEV4 (Low)**: Cosmetic issues, minor bugs → Create ticket for next sprint
|
|
447
|
+
|
|
448
|
+
## Response Actions
|
|
449
|
+
1. Acknowledge the incident and classify severity
|
|
450
|
+
2. Notify appropriate personnel based on severity
|
|
451
|
+
3. Begin gathering diagnostic information
|
|
452
|
+
4. DO NOT attempt automated remediation for SEV1/SEV2 without human approval
|
|
453
|
+
5. Document all actions taken during incident
|
|
454
|
+
|
|
455
|
+
## Post-Incident
|
|
456
|
+
- Generate incident summary within 1 hour of resolution
|
|
457
|
+
- Include: timeline, root cause, impact assessment, remediation steps
|
|
458
|
+
- Flag for post-mortem review`,
|
|
459
|
+
},
|
|
460
|
+
{
|
|
461
|
+
name: 'SLA Commitments & Communication',
|
|
462
|
+
category: 'communication',
|
|
463
|
+
enforcement: 'mandatory',
|
|
464
|
+
description: 'Service Level Agreement guidelines for customer communication',
|
|
465
|
+
priority: 85,
|
|
466
|
+
tags: ['sla', 'customer', 'support'],
|
|
467
|
+
content: `# SLA Commitments & Communication
|
|
468
|
+
|
|
469
|
+
## Response Times
|
|
470
|
+
- Critical issues: Acknowledge within 15 minutes, update every 30 minutes
|
|
471
|
+
- High priority: Acknowledge within 1 hour, update every 2 hours
|
|
472
|
+
- Normal priority: Acknowledge within 4 hours, update daily
|
|
473
|
+
- Low priority: Acknowledge within 24 hours, update weekly
|
|
474
|
+
|
|
475
|
+
## Status Communication
|
|
476
|
+
- Always be transparent about known issues
|
|
477
|
+
- Provide estimated time to resolution when possible (with appropriate caveats)
|
|
478
|
+
- Never make promises about specific resolution times unless authorized
|
|
479
|
+
- Use status page for broad communication about outages
|
|
480
|
+
|
|
481
|
+
## Escalation Paths
|
|
482
|
+
- If you cannot resolve within SLA timeframe, escalate before SLA breach
|
|
483
|
+
- Document all escalation decisions with reasoning
|
|
484
|
+
- Follow up on escalated issues until confirmed resolved
|
|
485
|
+
|
|
486
|
+
## Customer Communication
|
|
487
|
+
- Be professional, empathetic, and solution-focused
|
|
488
|
+
- Acknowledge the customer's frustration without making excuses
|
|
489
|
+
- Focus on what you CAN do, not what you can't`,
|
|
490
|
+
},
|
|
491
|
+
{
|
|
492
|
+
name: 'API & System Security',
|
|
493
|
+
category: 'security',
|
|
494
|
+
enforcement: 'mandatory',
|
|
495
|
+
description: 'Security standards for APIs, systems, and infrastructure',
|
|
496
|
+
priority: 95,
|
|
497
|
+
tags: ['api', 'security', 'infrastructure'],
|
|
498
|
+
content: `# API & System Security
|
|
499
|
+
|
|
500
|
+
## Authentication & Authorization
|
|
501
|
+
- All API calls must be authenticated (API keys, OAuth tokens, or JWT)
|
|
502
|
+
- Implement rate limiting on all public endpoints
|
|
503
|
+
- Use scoped permissions — never use admin credentials for routine operations
|
|
504
|
+
- Rotate all credentials every 90 days
|
|
505
|
+
|
|
506
|
+
## Data Protection
|
|
507
|
+
- Encrypt all data in transit (TLS 1.2+) and at rest
|
|
508
|
+
- Never log sensitive data (passwords, tokens, PII) in application logs
|
|
509
|
+
- Implement proper CORS policies for web-facing services
|
|
510
|
+
- Use Content Security Policy (CSP) headers
|
|
511
|
+
|
|
512
|
+
## Infrastructure
|
|
513
|
+
- Never expose internal services directly to the internet
|
|
514
|
+
- Use network segmentation and firewalls
|
|
515
|
+
- Keep all systems patched and updated
|
|
516
|
+
- Monitor for unusual access patterns
|
|
517
|
+
|
|
518
|
+
## Secret Management
|
|
519
|
+
- Use a secrets manager (vault) for all credentials
|
|
520
|
+
- Never store secrets in environment variables in production
|
|
521
|
+
- Never commit secrets to version control
|
|
522
|
+
- Implement secret rotation automation`,
|
|
523
|
+
},
|
|
524
|
+
{
|
|
525
|
+
name: 'Data Handling & Privacy',
|
|
526
|
+
category: 'data_handling',
|
|
527
|
+
enforcement: 'mandatory',
|
|
528
|
+
description: 'GDPR, CCPA, and general data privacy requirements',
|
|
529
|
+
priority: 90,
|
|
530
|
+
tags: ['privacy', 'gdpr', 'ccpa', 'data'],
|
|
531
|
+
content: `# Data Handling & Privacy
|
|
532
|
+
|
|
533
|
+
## User Consent
|
|
534
|
+
- Never process personal data without documented consent
|
|
535
|
+
- Honor opt-out requests within 30 days
|
|
536
|
+
- Maintain records of consent for all data processing activities
|
|
537
|
+
|
|
538
|
+
## Data Minimization
|
|
539
|
+
- Only collect data that is strictly necessary for the stated purpose
|
|
540
|
+
- Do not retain data longer than needed
|
|
541
|
+
- Anonymize or pseudonymize data when possible
|
|
542
|
+
|
|
543
|
+
## Right to Erasure (GDPR/CCPA)
|
|
544
|
+
- Support "right to be forgotten" requests
|
|
545
|
+
- Ensure deletion propagates to all systems including backups
|
|
546
|
+
- Document all deletion requests and actions taken
|
|
547
|
+
|
|
548
|
+
## Cross-Border Transfer
|
|
549
|
+
- Verify data transfer agreements before moving data between regions
|
|
550
|
+
- Use Standard Contractual Clauses (SCCs) for EU data transfers
|
|
551
|
+
- Maintain data residency compliance per customer agreements
|
|
552
|
+
|
|
553
|
+
## Breach Notification
|
|
554
|
+
- Report data breaches within 72 hours (GDPR) or as required by applicable law
|
|
555
|
+
- Document: what data was affected, how many records, remediation steps`,
|
|
556
|
+
},
|
|
557
|
+
],
|
|
558
|
+
},
|
|
559
|
+
retail: {
|
|
560
|
+
id: 'retail',
|
|
561
|
+
name: 'Retail & E-Commerce Pack',
|
|
562
|
+
description: 'Policies for retail businesses and e-commerce platforms',
|
|
563
|
+
industry: 'retail',
|
|
564
|
+
policies: [
|
|
565
|
+
{
|
|
566
|
+
name: 'Customer Return & Refund Policy',
|
|
567
|
+
category: 'code_of_conduct',
|
|
568
|
+
enforcement: 'mandatory',
|
|
569
|
+
description: 'Rules for handling returns, refunds, and exchanges',
|
|
570
|
+
priority: 90,
|
|
571
|
+
tags: ['returns', 'refunds', 'customer'],
|
|
572
|
+
content: `# Customer Return & Refund Policy
|
|
573
|
+
|
|
574
|
+
## Standard Returns
|
|
575
|
+
- Accept returns within 30 days of purchase with valid receipt/order number
|
|
576
|
+
- Items must be in original condition with tags attached
|
|
577
|
+
- Process refund to original payment method within 5-7 business days
|
|
578
|
+
|
|
579
|
+
## Exceptions
|
|
580
|
+
- Final sale items are non-returnable — inform customer politely
|
|
581
|
+
- Electronics: 15-day return window, must include all accessories
|
|
582
|
+
- Perishable goods: non-returnable unless defective
|
|
583
|
+
- Custom/personalized items: non-returnable unless manufacturing defect
|
|
584
|
+
|
|
585
|
+
## Refund Processing
|
|
586
|
+
- Under $50: Process automatically
|
|
587
|
+
- $50-$500: Process with single verification
|
|
588
|
+
- Over $500: Escalate to supervisor for approval
|
|
589
|
+
- Store credit: Can be offered as alternative at any amount
|
|
590
|
+
|
|
591
|
+
## Escalation
|
|
592
|
+
- If customer disputes the policy, offer to escalate to customer service manager
|
|
593
|
+
- Never argue with a customer about policy — explain once, then escalate
|
|
594
|
+
- Document all escalated return requests`,
|
|
595
|
+
},
|
|
596
|
+
{
|
|
597
|
+
name: 'Pricing & Promotions Accuracy',
|
|
598
|
+
category: 'communication',
|
|
599
|
+
enforcement: 'mandatory',
|
|
600
|
+
description: 'Guidelines for communicating prices, discounts, and promotions',
|
|
601
|
+
priority: 95,
|
|
602
|
+
tags: ['pricing', 'promotions', 'accuracy'],
|
|
603
|
+
content: `# Pricing & Promotions Accuracy
|
|
604
|
+
|
|
605
|
+
## Price Accuracy
|
|
606
|
+
- Always quote the current listed price from the product database
|
|
607
|
+
- If a price discrepancy is reported, escalate — do not adjust manually
|
|
608
|
+
- Include all applicable taxes and fees in price quotes when possible
|
|
609
|
+
- Never promise a price match without verifying the competitor's current price
|
|
610
|
+
|
|
611
|
+
## Promotions & Discounts
|
|
612
|
+
- Only apply promotions that are currently active and valid
|
|
613
|
+
- Verify coupon codes against the promotion database before confirming discounts
|
|
614
|
+
- Do not stack promotions unless the promotion rules explicitly allow it
|
|
615
|
+
- Clearly communicate promotion terms (expiry date, exclusions, minimum purchase)
|
|
616
|
+
|
|
617
|
+
## Price Changes
|
|
618
|
+
- Do not honor expired promotions without supervisor approval
|
|
619
|
+
- If a price drops within 14 days of purchase, the customer may request a price adjustment
|
|
620
|
+
- Communicate any upcoming price changes only if authorized to do so
|
|
621
|
+
|
|
622
|
+
## Transparency
|
|
623
|
+
- Always disclose shipping costs before checkout
|
|
624
|
+
- Clearly explain any recurring charges or subscription terms
|
|
625
|
+
- Be upfront about out-of-stock items and estimated restock dates`,
|
|
626
|
+
},
|
|
627
|
+
{
|
|
628
|
+
name: 'Inventory & Order Communication',
|
|
629
|
+
category: 'communication',
|
|
630
|
+
enforcement: 'recommended',
|
|
631
|
+
description: 'How to communicate about inventory, orders, and shipping',
|
|
632
|
+
priority: 80,
|
|
633
|
+
tags: ['inventory', 'orders', 'shipping'],
|
|
634
|
+
content: `# Inventory & Order Communication
|
|
635
|
+
|
|
636
|
+
## Stock Status
|
|
637
|
+
- Always check real-time inventory before confirming availability
|
|
638
|
+
- If an item is out of stock, offer: waitlist signup, similar alternatives, or estimated restock date
|
|
639
|
+
- Never guarantee availability without checking inventory systems
|
|
640
|
+
|
|
641
|
+
## Order Status
|
|
642
|
+
- Provide tracking information as soon as available
|
|
643
|
+
- Proactively communicate delays — don't wait for the customer to ask
|
|
644
|
+
- For delayed orders, offer: expedited shipping upgrade, partial refund, or store credit
|
|
645
|
+
|
|
646
|
+
## Shipping Information
|
|
647
|
+
- Quote delivery estimates based on actual carrier data, not optimistic guesses
|
|
648
|
+
- Clearly communicate which shipping options are available
|
|
649
|
+
- Inform customers about international shipping restrictions and customs duties
|
|
650
|
+
|
|
651
|
+
## Order Modifications
|
|
652
|
+
- Allow cancellations only if order hasn't shipped
|
|
653
|
+
- Address changes: possible before shipping label is created
|
|
654
|
+
- Item modifications: process as cancel + reorder if already in fulfillment`,
|
|
655
|
+
},
|
|
656
|
+
{
|
|
657
|
+
name: 'Loyalty Program Management',
|
|
658
|
+
category: 'code_of_conduct',
|
|
659
|
+
enforcement: 'recommended',
|
|
660
|
+
description: 'Rules for managing loyalty programs and reward points',
|
|
661
|
+
priority: 75,
|
|
662
|
+
tags: ['loyalty', 'rewards', 'points'],
|
|
663
|
+
content: `# Loyalty Program Management
|
|
664
|
+
|
|
665
|
+
## Points & Rewards
|
|
666
|
+
- Calculate points accurately based on the current program rules
|
|
667
|
+
- Points are earned on the post-discount, pre-tax amount
|
|
668
|
+
- Points cannot be earned on gift card purchases
|
|
669
|
+
- Display current point balance when relevant to the conversation
|
|
670
|
+
|
|
671
|
+
## Redemption
|
|
672
|
+
- Verify point balance before confirming redemption
|
|
673
|
+
- Points cannot be combined with certain promotions (check exclusion rules)
|
|
674
|
+
- Redeemed points are non-refundable — warn customers before redemption
|
|
675
|
+
- Allow partial point redemption
|
|
676
|
+
|
|
677
|
+
## Account Management
|
|
678
|
+
- Verify account ownership before making any changes
|
|
679
|
+
- Points transfers between accounts require supervisor approval
|
|
680
|
+
- Expired points cannot be reinstated without supervisor approval
|
|
681
|
+
- Merge requests for duplicate accounts: escalate to customer service
|
|
682
|
+
|
|
683
|
+
## Communication
|
|
684
|
+
- Inform customers about points expiration 30 days in advance
|
|
685
|
+
- Proactively suggest point redemption opportunities when relevant
|
|
686
|
+
- Never encourage unnecessary purchases just to earn points`,
|
|
687
|
+
},
|
|
688
|
+
{
|
|
689
|
+
name: 'Retail Data Protection',
|
|
690
|
+
category: 'data_handling',
|
|
691
|
+
enforcement: 'mandatory',
|
|
692
|
+
description: 'Data protection policies specific to retail operations',
|
|
693
|
+
priority: 90,
|
|
694
|
+
tags: ['data', 'privacy', 'pci', 'retail'],
|
|
695
|
+
content: `# Retail Data Protection
|
|
696
|
+
|
|
697
|
+
## Payment Card Data (PCI-DSS)
|
|
698
|
+
- NEVER store, log, or display full credit card numbers
|
|
699
|
+
- Only reference the last 4 digits of card numbers
|
|
700
|
+
- All payment processing must go through PCI-compliant channels
|
|
701
|
+
- Never ask customers to provide full card numbers via chat or email
|
|
702
|
+
|
|
703
|
+
## Customer Personal Data
|
|
704
|
+
- Collect only necessary information for order fulfillment
|
|
705
|
+
- Do not share customer data with third parties without consent
|
|
706
|
+
- Honor data deletion requests within 30 days
|
|
707
|
+
- Mask email addresses and phone numbers in internal communications
|
|
708
|
+
|
|
709
|
+
## Purchase History
|
|
710
|
+
- Purchase history is private — only share with the verified account holder
|
|
711
|
+
- Do not reference purchase history in marketing without opt-in consent
|
|
712
|
+
- Anonymize purchase data before use in analytics
|
|
713
|
+
|
|
714
|
+
## Employee Data
|
|
715
|
+
- Do not disclose employee schedules, personal information, or performance data
|
|
716
|
+
- Store access credentials are for authorized personnel only
|
|
717
|
+
- Report any unauthorized access to customer or employee data immediately`,
|
|
718
|
+
},
|
|
719
|
+
],
|
|
720
|
+
},
|
|
721
|
+
};
|
|
722
|
+
|
|
723
|
+
// ─── Policy Importer ────────────────────────────────────
|
|
724
|
+
|
|
725
|
+
export class PolicyImporter {
|
|
726
|
+
private policyEngine: OrgPolicyEngine;
|
|
727
|
+
private storageManager?: StorageManager;
|
|
728
|
+
private jobs = new Map<string, ImportJob>();
|
|
729
|
+
private engineDb?: EngineDatabase;
|
|
730
|
+
|
|
731
|
+
constructor(opts: { policyEngine: OrgPolicyEngine; storageManager?: StorageManager }) {
|
|
732
|
+
this.policyEngine = opts.policyEngine;
|
|
733
|
+
this.storageManager = opts.storageManager;
|
|
734
|
+
}
|
|
735
|
+
|
|
736
|
+
async setDb(db: EngineDatabase): Promise<void> {
|
|
737
|
+
this.engineDb = db;
|
|
738
|
+
await this.loadJobsFromDb();
|
|
739
|
+
}
|
|
740
|
+
|
|
741
|
+
private async loadJobsFromDb(): Promise<void> {
|
|
742
|
+
if (!this.engineDb) return;
|
|
743
|
+
try {
|
|
744
|
+
const rows = await this.engineDb.query<any>('SELECT * FROM policy_import_jobs ORDER BY created_at DESC LIMIT 100');
|
|
745
|
+
for (const r of rows) {
|
|
746
|
+
this.jobs.set(r.id, {
|
|
747
|
+
id: r.id, orgId: r.org_id, format: r.format, status: r.status,
|
|
748
|
+
progress: JSON.parse(r.progress || '{}'),
|
|
749
|
+
errors: JSON.parse(r.errors || '[]'),
|
|
750
|
+
policyIds: JSON.parse(r.policy_ids || '[]'),
|
|
751
|
+
createdBy: r.created_by, createdAt: r.created_at,
|
|
752
|
+
completedAt: r.completed_at || undefined,
|
|
753
|
+
});
|
|
754
|
+
}
|
|
755
|
+
} catch { /* table may not exist yet */ }
|
|
756
|
+
}
|
|
757
|
+
|
|
758
|
+
// ─── Job Management ──────────────────────────────────
|
|
759
|
+
|
|
760
|
+
private createJob(orgId: string, format: ImportFormat, total: number, createdBy: string): ImportJob {
|
|
761
|
+
const job: ImportJob = {
|
|
762
|
+
id: crypto.randomUUID(), orgId, format, status: 'processing',
|
|
763
|
+
progress: { total, processed: 0, succeeded: 0, failed: 0, duplicates: 0 },
|
|
764
|
+
errors: [], policyIds: [], createdBy, createdAt: new Date().toISOString(),
|
|
765
|
+
};
|
|
766
|
+
this.jobs.set(job.id, job);
|
|
767
|
+
this.persistJob(job);
|
|
768
|
+
return job;
|
|
769
|
+
}
|
|
770
|
+
|
|
771
|
+
private completeJob(job: ImportJob): void {
|
|
772
|
+
job.completedAt = new Date().toISOString();
|
|
773
|
+
job.status = job.errors.length > 0 ? (job.progress.succeeded > 0 ? 'partial' : 'failed') : 'completed';
|
|
774
|
+
this.persistJob(job);
|
|
775
|
+
}
|
|
776
|
+
|
|
777
|
+
private async persistJob(job: ImportJob): Promise<void> {
|
|
778
|
+
if (!this.engineDb) return;
|
|
779
|
+
try {
|
|
780
|
+
// Upsert via DELETE + INSERT (works across all SQL dialects)
|
|
781
|
+
await this.engineDb.execute('DELETE FROM policy_import_jobs WHERE id = ?', [job.id]);
|
|
782
|
+
await this.engineDb.execute(
|
|
783
|
+
'INSERT INTO policy_import_jobs (id, org_id, format, status, progress, errors, policy_ids, created_by, created_at, completed_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)',
|
|
784
|
+
[job.id, job.orgId, job.format, job.status, JSON.stringify(job.progress), JSON.stringify(job.errors), JSON.stringify(job.policyIds), job.createdBy, job.createdAt, job.completedAt || null]
|
|
785
|
+
);
|
|
786
|
+
} catch { /* ignore persistence errors */ }
|
|
787
|
+
}
|
|
788
|
+
|
|
789
|
+
getJob(id: string): ImportJob | undefined { return this.jobs.get(id); }
|
|
790
|
+
|
|
791
|
+
getJobsByOrg(orgId: string): ImportJob[] {
|
|
792
|
+
return Array.from(this.jobs.values()).filter(j => j.orgId === orgId).sort((a, b) => b.createdAt.localeCompare(a.createdAt));
|
|
793
|
+
}
|
|
794
|
+
|
|
795
|
+
// ─── Import Methods ──────────────────────────────────
|
|
796
|
+
|
|
797
|
+
async importJson(input: JsonImportInput): Promise<ImportJob> {
|
|
798
|
+
const createdBy = input.createdBy || 'admin';
|
|
799
|
+
const job = this.createJob(input.orgId, 'json', input.policies.length, createdBy);
|
|
800
|
+
|
|
801
|
+
for (let i = 0; i < input.policies.length; i++) {
|
|
802
|
+
const p = input.policies[i];
|
|
803
|
+
try {
|
|
804
|
+
const contentHash = this.hashContent(p.content);
|
|
805
|
+
const dedup = await this.checkDuplicate(input.orgId, contentHash, input.deduplication || 'skip');
|
|
806
|
+
|
|
807
|
+
if (dedup === 'skip') {
|
|
808
|
+
job.progress.duplicates++;
|
|
809
|
+
} else {
|
|
810
|
+
if (!input.dryRun) {
|
|
811
|
+
const policy = await this.policyEngine.createPolicy({
|
|
812
|
+
orgId: input.orgId,
|
|
813
|
+
name: p.name,
|
|
814
|
+
category: p.category || input.defaultCategory || 'custom',
|
|
815
|
+
content: p.content,
|
|
816
|
+
enforcement: p.enforcement || input.defaultEnforcement || 'mandatory',
|
|
817
|
+
description: p.description,
|
|
818
|
+
priority: p.priority || 0,
|
|
819
|
+
tags: p.tags || [],
|
|
820
|
+
appliesTo: p.appliesTo || ['*'],
|
|
821
|
+
enabled: true,
|
|
822
|
+
createdBy,
|
|
823
|
+
});
|
|
824
|
+
job.policyIds.push(policy.id);
|
|
825
|
+
}
|
|
826
|
+
job.progress.succeeded++;
|
|
827
|
+
}
|
|
828
|
+
} catch (e: any) {
|
|
829
|
+
job.errors.push({ index: i, name: p.name, error: e.message });
|
|
830
|
+
job.progress.failed++;
|
|
831
|
+
}
|
|
832
|
+
job.progress.processed++;
|
|
833
|
+
}
|
|
834
|
+
|
|
835
|
+
this.completeJob(job);
|
|
836
|
+
return job;
|
|
837
|
+
}
|
|
838
|
+
|
|
839
|
+
async importDocuments(input: DocumentImportInput): Promise<ImportJob> {
|
|
840
|
+
const createdBy = input.createdBy || 'admin';
|
|
841
|
+
// First, parse all documents into policies
|
|
842
|
+
const allParsed: { docName: string; policies: ParsedPolicy[] }[] = [];
|
|
843
|
+
|
|
844
|
+
for (const doc of input.documents) {
|
|
845
|
+
const content = doc.encoding === 'base64' ? Buffer.from(doc.content, 'base64').toString('utf-8') : doc.content;
|
|
846
|
+
let parsed: ParsedPolicy[];
|
|
847
|
+
|
|
848
|
+
switch (doc.format) {
|
|
849
|
+
case 'markdown': parsed = this.parseMarkdown(content, input.defaultCategory, input.defaultEnforcement); break;
|
|
850
|
+
case 'csv': parsed = this.parseCsv(content, input.defaultCategory, input.defaultEnforcement); break;
|
|
851
|
+
case 'html': parsed = this.parseHtml(content, input.defaultCategory, input.defaultEnforcement); break;
|
|
852
|
+
case 'text':
|
|
853
|
+
default: parsed = this.parsePlainText(content, doc.name, input.defaultCategory, input.defaultEnforcement); break;
|
|
854
|
+
}
|
|
855
|
+
allParsed.push({ docName: doc.name, policies: parsed });
|
|
856
|
+
}
|
|
857
|
+
|
|
858
|
+
const totalPolicies = allParsed.reduce((sum, d) => sum + d.policies.length, 0);
|
|
859
|
+
const job = this.createJob(input.orgId, input.documents[0]?.format as ImportFormat || 'text', totalPolicies, createdBy);
|
|
860
|
+
|
|
861
|
+
let idx = 0;
|
|
862
|
+
for (const { policies } of allParsed) {
|
|
863
|
+
for (const p of policies) {
|
|
864
|
+
try {
|
|
865
|
+
const contentHash = this.hashContent(p.content);
|
|
866
|
+
const dedup = await this.checkDuplicate(input.orgId, contentHash, input.deduplication || 'skip');
|
|
867
|
+
|
|
868
|
+
if (dedup === 'skip') {
|
|
869
|
+
job.progress.duplicates++;
|
|
870
|
+
} else {
|
|
871
|
+
if (!input.dryRun) {
|
|
872
|
+
const policy = await this.policyEngine.createPolicy({
|
|
873
|
+
orgId: input.orgId, name: p.name, category: p.category,
|
|
874
|
+
content: p.content, enforcement: p.enforcement,
|
|
875
|
+
description: p.description, priority: p.priority,
|
|
876
|
+
tags: p.tags, appliesTo: ['*'], enabled: true, createdBy,
|
|
877
|
+
});
|
|
878
|
+
job.policyIds.push(policy.id);
|
|
879
|
+
}
|
|
880
|
+
job.progress.succeeded++;
|
|
881
|
+
}
|
|
882
|
+
} catch (e: any) {
|
|
883
|
+
job.errors.push({ index: idx, name: p.name, error: e.message });
|
|
884
|
+
job.progress.failed++;
|
|
885
|
+
}
|
|
886
|
+
job.progress.processed++;
|
|
887
|
+
idx++;
|
|
888
|
+
}
|
|
889
|
+
}
|
|
890
|
+
|
|
891
|
+
this.completeJob(job);
|
|
892
|
+
return job;
|
|
893
|
+
}
|
|
894
|
+
|
|
895
|
+
async importFromUrls(input: UrlImportInput): Promise<ImportJob> {
|
|
896
|
+
const createdBy = input.createdBy || 'admin';
|
|
897
|
+
const job = this.createJob(input.orgId, 'url', input.urls.length, createdBy);
|
|
898
|
+
|
|
899
|
+
for (let i = 0; i < input.urls.length; i++) {
|
|
900
|
+
const u = input.urls[i];
|
|
901
|
+
try {
|
|
902
|
+
const response = await fetch(u.url);
|
|
903
|
+
if (!response.ok) throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
904
|
+
const content = await response.text();
|
|
905
|
+
const contentType = response.headers.get('content-type') || '';
|
|
906
|
+
|
|
907
|
+
// Auto-detect format
|
|
908
|
+
let format: 'markdown' | 'html' | 'csv' | 'text' = 'text';
|
|
909
|
+
if (u.format === 'markdown' || u.url.endsWith('.md')) format = 'markdown';
|
|
910
|
+
else if (u.format === 'html' || contentType.includes('html')) format = 'html';
|
|
911
|
+
else if (u.format === 'csv' || u.url.endsWith('.csv')) format = 'csv';
|
|
912
|
+
else if (contentType.includes('markdown')) format = 'markdown';
|
|
913
|
+
|
|
914
|
+
let parsed: ParsedPolicy[];
|
|
915
|
+
switch (format) {
|
|
916
|
+
case 'markdown': parsed = this.parseMarkdown(content, input.defaultCategory, input.defaultEnforcement); break;
|
|
917
|
+
case 'csv': parsed = this.parseCsv(content, input.defaultCategory, input.defaultEnforcement); break;
|
|
918
|
+
case 'html': parsed = this.parseHtml(content, input.defaultCategory, input.defaultEnforcement); break;
|
|
919
|
+
default: parsed = this.parsePlainText(content, u.name || u.url, input.defaultCategory, input.defaultEnforcement); break;
|
|
920
|
+
}
|
|
921
|
+
|
|
922
|
+
for (const p of parsed) {
|
|
923
|
+
if (!input.dryRun) {
|
|
924
|
+
const policy = await this.policyEngine.createPolicy({
|
|
925
|
+
orgId: input.orgId, name: p.name, category: p.category,
|
|
926
|
+
content: p.content, enforcement: p.enforcement,
|
|
927
|
+
description: p.description, priority: p.priority,
|
|
928
|
+
tags: p.tags, appliesTo: ['*'], enabled: true, createdBy,
|
|
929
|
+
});
|
|
930
|
+
job.policyIds.push(policy.id);
|
|
931
|
+
}
|
|
932
|
+
job.progress.succeeded++;
|
|
933
|
+
}
|
|
934
|
+
} catch (e: any) {
|
|
935
|
+
job.errors.push({ index: i, name: u.name || u.url, error: e.message });
|
|
936
|
+
job.progress.failed++;
|
|
937
|
+
}
|
|
938
|
+
job.progress.processed++;
|
|
939
|
+
}
|
|
940
|
+
|
|
941
|
+
this.completeJob(job);
|
|
942
|
+
return job;
|
|
943
|
+
}
|
|
944
|
+
|
|
945
|
+
async importTemplatePack(orgId: string, packId: string, createdBy: string): Promise<ImportJob> {
|
|
946
|
+
const pack = TEMPLATE_PACKS[packId];
|
|
947
|
+
if (!pack) throw new Error(`Template pack '${packId}' not found. Available: ${Object.keys(TEMPLATE_PACKS).join(', ')}`);
|
|
948
|
+
|
|
949
|
+
const job = this.createJob(orgId, 'json', pack.policies.length, createdBy);
|
|
950
|
+
|
|
951
|
+
for (let i = 0; i < pack.policies.length; i++) {
|
|
952
|
+
const p = pack.policies[i];
|
|
953
|
+
try {
|
|
954
|
+
const policy = await this.policyEngine.createPolicy({
|
|
955
|
+
orgId, name: p.name, category: p.category, content: p.content,
|
|
956
|
+
enforcement: p.enforcement, description: p.description,
|
|
957
|
+
priority: p.priority, tags: [...p.tags, `template:${packId}`],
|
|
958
|
+
appliesTo: ['*'], enabled: true, createdBy,
|
|
959
|
+
});
|
|
960
|
+
job.policyIds.push(policy.id);
|
|
961
|
+
job.progress.succeeded++;
|
|
962
|
+
} catch (e: any) {
|
|
963
|
+
job.errors.push({ index: i, name: p.name, error: e.message });
|
|
964
|
+
job.progress.failed++;
|
|
965
|
+
}
|
|
966
|
+
job.progress.processed++;
|
|
967
|
+
}
|
|
968
|
+
|
|
969
|
+
this.completeJob(job);
|
|
970
|
+
return job;
|
|
971
|
+
}
|
|
972
|
+
|
|
973
|
+
// ─── Template Packs ──────────────────────────────────
|
|
974
|
+
|
|
975
|
+
static getTemplatePacks(): Record<string, { id: string; name: string; description: string; industry: string; policyCount: number }> {
|
|
976
|
+
const result: Record<string, any> = {};
|
|
977
|
+
for (const [id, pack] of Object.entries(TEMPLATE_PACKS)) {
|
|
978
|
+
result[id] = { id, name: pack.name, description: pack.description, industry: pack.industry, policyCount: pack.policies.length };
|
|
979
|
+
}
|
|
980
|
+
return result;
|
|
981
|
+
}
|
|
982
|
+
|
|
983
|
+
static getTemplatePack(packId: string): TemplatePack | undefined {
|
|
984
|
+
return TEMPLATE_PACKS[packId];
|
|
985
|
+
}
|
|
986
|
+
|
|
987
|
+
// ─── Document Parsing ────────────────────────────────
|
|
988
|
+
|
|
989
|
+
private parseMarkdown(content: string, defaultCategory?: PolicyCategory, defaultEnforcement?: PolicyEnforcement): ParsedPolicy[] {
|
|
990
|
+
const policies: ParsedPolicy[] = [];
|
|
991
|
+
|
|
992
|
+
// Check for YAML frontmatter
|
|
993
|
+
let frontmatter: Record<string, any> = {};
|
|
994
|
+
const fmMatch = content.match(/^---\n([\s\S]*?)\n---\n([\s\S]*)$/);
|
|
995
|
+
if (fmMatch) {
|
|
996
|
+
// Simple YAML-like parsing (key: value pairs)
|
|
997
|
+
for (const line of fmMatch[1].split('\n')) {
|
|
998
|
+
const [k, ...vParts] = line.split(':');
|
|
999
|
+
if (k && vParts.length) frontmatter[k.trim()] = vParts.join(':').trim();
|
|
1000
|
+
}
|
|
1001
|
+
content = fmMatch[2];
|
|
1002
|
+
}
|
|
1003
|
+
|
|
1004
|
+
// Split on top-level headings (# or ##)
|
|
1005
|
+
const sections = content.split(/^(?=#{1,2}\s)/m).filter(s => s.trim());
|
|
1006
|
+
|
|
1007
|
+
if (sections.length <= 1) {
|
|
1008
|
+
// No headings — treat as single policy
|
|
1009
|
+
const name = frontmatter.name || frontmatter.title || 'Imported Policy';
|
|
1010
|
+
policies.push({
|
|
1011
|
+
name,
|
|
1012
|
+
category: (frontmatter.category as PolicyCategory) || defaultCategory || 'custom',
|
|
1013
|
+
content: content.trim(),
|
|
1014
|
+
enforcement: (frontmatter.enforcement as PolicyEnforcement) || defaultEnforcement || 'mandatory',
|
|
1015
|
+
description: frontmatter.description,
|
|
1016
|
+
priority: parseInt(frontmatter.priority) || 0,
|
|
1017
|
+
tags: frontmatter.tags ? frontmatter.tags.split(',').map((t: string) => t.trim()) : [],
|
|
1018
|
+
});
|
|
1019
|
+
} else {
|
|
1020
|
+
for (const section of sections) {
|
|
1021
|
+
const headingMatch = section.match(/^#{1,2}\s+(.+)\n([\s\S]*)/);
|
|
1022
|
+
if (!headingMatch) continue;
|
|
1023
|
+
const name = headingMatch[1].trim();
|
|
1024
|
+
const body = headingMatch[2].trim();
|
|
1025
|
+
if (body.length < 10) continue; // Skip very short sections
|
|
1026
|
+
|
|
1027
|
+
policies.push({
|
|
1028
|
+
name,
|
|
1029
|
+
category: defaultCategory || this.inferCategory(name, body),
|
|
1030
|
+
content: section.trim(),
|
|
1031
|
+
enforcement: defaultEnforcement || 'mandatory',
|
|
1032
|
+
priority: 0,
|
|
1033
|
+
tags: [],
|
|
1034
|
+
});
|
|
1035
|
+
}
|
|
1036
|
+
}
|
|
1037
|
+
|
|
1038
|
+
return policies;
|
|
1039
|
+
}
|
|
1040
|
+
|
|
1041
|
+
private parseCsv(content: string, defaultCategory?: PolicyCategory, defaultEnforcement?: PolicyEnforcement): ParsedPolicy[] {
|
|
1042
|
+
const policies: ParsedPolicy[] = [];
|
|
1043
|
+
const lines = content.split('\n').filter(l => l.trim());
|
|
1044
|
+
if (lines.length < 2) return policies;
|
|
1045
|
+
|
|
1046
|
+
// Detect delimiter (comma, tab, semicolon, pipe)
|
|
1047
|
+
const firstLine = lines[0];
|
|
1048
|
+
const delimiter = [',', '\t', ';', '|'].reduce((best, d) =>
|
|
1049
|
+
firstLine.split(d).length > firstLine.split(best).length ? d : best, ',');
|
|
1050
|
+
|
|
1051
|
+
// Parse header row
|
|
1052
|
+
const headers = this.parseCsvLine(lines[0], delimiter).map(h => h.toLowerCase().trim());
|
|
1053
|
+
const nameIdx = headers.findIndex(h => ['name', 'title', 'policy_name', 'policy'].includes(h));
|
|
1054
|
+
const contentIdx = headers.findIndex(h => ['content', 'body', 'text', 'description', 'policy_content'].includes(h));
|
|
1055
|
+
const categoryIdx = headers.findIndex(h => ['category', 'type', 'group'].includes(h));
|
|
1056
|
+
const enforcementIdx = headers.findIndex(h => ['enforcement', 'level', 'severity'].includes(h));
|
|
1057
|
+
const tagsIdx = headers.findIndex(h => ['tags', 'labels', 'keywords'].includes(h));
|
|
1058
|
+
const priorityIdx = headers.findIndex(h => ['priority', 'order', 'weight'].includes(h));
|
|
1059
|
+
const descIdx = headers.findIndex(h => ['desc', 'summary', 'note'].includes(h));
|
|
1060
|
+
|
|
1061
|
+
if (nameIdx === -1 || contentIdx === -1) {
|
|
1062
|
+
// Fallback: first column = name, second = content
|
|
1063
|
+
for (let i = 1; i < lines.length; i++) {
|
|
1064
|
+
const cols = this.parseCsvLine(lines[i], delimiter);
|
|
1065
|
+
if (cols.length >= 2) {
|
|
1066
|
+
policies.push({
|
|
1067
|
+
name: cols[0], category: defaultCategory || 'custom',
|
|
1068
|
+
content: cols[1], enforcement: defaultEnforcement || 'mandatory',
|
|
1069
|
+
priority: 0, tags: [],
|
|
1070
|
+
});
|
|
1071
|
+
}
|
|
1072
|
+
}
|
|
1073
|
+
return policies;
|
|
1074
|
+
}
|
|
1075
|
+
|
|
1076
|
+
for (let i = 1; i < lines.length; i++) {
|
|
1077
|
+
const cols = this.parseCsvLine(lines[i], delimiter);
|
|
1078
|
+
const name = cols[nameIdx]?.trim();
|
|
1079
|
+
const pContent = cols[contentIdx]?.trim();
|
|
1080
|
+
if (!name || !pContent) continue;
|
|
1081
|
+
|
|
1082
|
+
policies.push({
|
|
1083
|
+
name,
|
|
1084
|
+
content: pContent,
|
|
1085
|
+
category: (categoryIdx >= 0 ? cols[categoryIdx]?.trim() as PolicyCategory : undefined) || defaultCategory || 'custom',
|
|
1086
|
+
enforcement: (enforcementIdx >= 0 ? cols[enforcementIdx]?.trim() as PolicyEnforcement : undefined) || defaultEnforcement || 'mandatory',
|
|
1087
|
+
tags: tagsIdx >= 0 ? (cols[tagsIdx] || '').split(/[,;]/).map(t => t.trim()).filter(Boolean) : [],
|
|
1088
|
+
priority: priorityIdx >= 0 ? parseInt(cols[priorityIdx]) || 0 : 0,
|
|
1089
|
+
description: descIdx >= 0 ? cols[descIdx]?.trim() : undefined,
|
|
1090
|
+
});
|
|
1091
|
+
}
|
|
1092
|
+
|
|
1093
|
+
return policies;
|
|
1094
|
+
}
|
|
1095
|
+
|
|
1096
|
+
private parseCsvLine(line: string, delimiter: string): string[] {
|
|
1097
|
+
const result: string[] = [];
|
|
1098
|
+
let current = '';
|
|
1099
|
+
let inQuotes = false;
|
|
1100
|
+
for (let i = 0; i < line.length; i++) {
|
|
1101
|
+
const ch = line[i];
|
|
1102
|
+
if (ch === '"') {
|
|
1103
|
+
if (inQuotes && line[i + 1] === '"') { current += '"'; i++; }
|
|
1104
|
+
else inQuotes = !inQuotes;
|
|
1105
|
+
} else if (ch === delimiter && !inQuotes) {
|
|
1106
|
+
result.push(current); current = '';
|
|
1107
|
+
} else {
|
|
1108
|
+
current += ch;
|
|
1109
|
+
}
|
|
1110
|
+
}
|
|
1111
|
+
result.push(current);
|
|
1112
|
+
return result;
|
|
1113
|
+
}
|
|
1114
|
+
|
|
1115
|
+
private parseHtml(content: string, defaultCategory?: PolicyCategory, defaultEnforcement?: PolicyEnforcement): ParsedPolicy[] {
|
|
1116
|
+
// Strip HTML tags, then parse as markdown
|
|
1117
|
+
const text = content
|
|
1118
|
+
.replace(/<script[^>]*>[\s\S]*?<\/script>/gi, '')
|
|
1119
|
+
.replace(/<style[^>]*>[\s\S]*?<\/style>/gi, '')
|
|
1120
|
+
.replace(/<br\s*\/?>/gi, '\n')
|
|
1121
|
+
.replace(/<\/?(p|div|li|tr|td|th|h[1-6])[^>]*>/gi, '\n')
|
|
1122
|
+
.replace(/<[^>]*>/g, '')
|
|
1123
|
+
.replace(/ /g, ' ')
|
|
1124
|
+
.replace(/&/g, '&')
|
|
1125
|
+
.replace(/</g, '<')
|
|
1126
|
+
.replace(/>/g, '>')
|
|
1127
|
+
.replace(/"/g, '"')
|
|
1128
|
+
.replace(/\n{3,}/g, '\n\n')
|
|
1129
|
+
.trim();
|
|
1130
|
+
return this.parseMarkdown(text, defaultCategory, defaultEnforcement);
|
|
1131
|
+
}
|
|
1132
|
+
|
|
1133
|
+
private parsePlainText(content: string, name: string, defaultCategory?: PolicyCategory, defaultEnforcement?: PolicyEnforcement): ParsedPolicy[] {
|
|
1134
|
+
// If content has clear paragraph breaks, split into multiple policies
|
|
1135
|
+
const sections = content.split(/\n{3,}/).filter(s => s.trim().length > 50);
|
|
1136
|
+
|
|
1137
|
+
if (sections.length > 1) {
|
|
1138
|
+
return sections.map((section, i) => {
|
|
1139
|
+
const firstLine = section.trim().split('\n')[0].substring(0, 80);
|
|
1140
|
+
return {
|
|
1141
|
+
name: `${name} - Section ${i + 1}: ${firstLine}`,
|
|
1142
|
+
category: defaultCategory || 'custom',
|
|
1143
|
+
content: section.trim(),
|
|
1144
|
+
enforcement: defaultEnforcement || 'mandatory',
|
|
1145
|
+
priority: 0,
|
|
1146
|
+
tags: [],
|
|
1147
|
+
};
|
|
1148
|
+
});
|
|
1149
|
+
}
|
|
1150
|
+
|
|
1151
|
+
return [{
|
|
1152
|
+
name: name.replace(/\.(txt|md|html|csv)$/i, ''),
|
|
1153
|
+
category: defaultCategory || 'custom',
|
|
1154
|
+
content: content.trim(),
|
|
1155
|
+
enforcement: defaultEnforcement || 'mandatory',
|
|
1156
|
+
priority: 0,
|
|
1157
|
+
tags: [],
|
|
1158
|
+
}];
|
|
1159
|
+
}
|
|
1160
|
+
|
|
1161
|
+
// ─── Helpers ─────────────────────────────────────────
|
|
1162
|
+
|
|
1163
|
+
private hashContent(content: string): string {
|
|
1164
|
+
return createHash('sha256').update(content.trim()).digest('hex');
|
|
1165
|
+
}
|
|
1166
|
+
|
|
1167
|
+
private async checkDuplicate(orgId: string, contentHash: string, mode: DeduplicationMode): Promise<'skip' | 'create'> {
|
|
1168
|
+
if (mode === 'skip') {
|
|
1169
|
+
// Check if a policy with this content hash already exists
|
|
1170
|
+
const existing = this.policyEngine.findByContentHash?.(orgId, contentHash);
|
|
1171
|
+
if (existing) return 'skip';
|
|
1172
|
+
}
|
|
1173
|
+
return 'create';
|
|
1174
|
+
}
|
|
1175
|
+
|
|
1176
|
+
private inferCategory(name: string, content: string): PolicyCategory {
|
|
1177
|
+
const text = (name + ' ' + content).toLowerCase();
|
|
1178
|
+
if (/\b(conduct|ethic|behavior|professional|integrity)\b/.test(text)) return 'code_of_conduct';
|
|
1179
|
+
if (/\b(communicat|tone|voice|messag|email|chat)\b/.test(text)) return 'communication';
|
|
1180
|
+
if (/\b(data|privacy|pii|gdpr|ccpa|hipaa|encrypt|confidential)\b/.test(text)) return 'data_handling';
|
|
1181
|
+
if (/\b(brand|style|logo|trademark|marketing)\b/.test(text)) return 'brand_voice';
|
|
1182
|
+
if (/\b(security|auth|password|credential|access|firewall|threat)\b/.test(text)) return 'security';
|
|
1183
|
+
if (/\b(escalat|emergency|urgent|incident|crisis)\b/.test(text)) return 'escalation';
|
|
1184
|
+
return 'custom';
|
|
1185
|
+
}
|
|
1186
|
+
}
|