@agenticmail/enterprise 0.5.326 → 0.5.328
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/dist/dashboard/app.js +1 -1
- package/dist/dashboard/pages/cluster.js +1 -1
- package/logs/cloudflared-error.log +6 -0
- package/logs/enterprise-out.log +2 -0
- package/package.json +1 -1
- package/god_is_great.html +0 -35
- package/src/admin/page-registry.ts +0 -290
- package/src/admin/routes.ts +0 -2968
- package/src/agent-tools/common.ts +0 -260
- package/src/agent-tools/index.ts +0 -542
- package/src/agent-tools/merge.ts +0 -62
- package/src/agent-tools/middleware.ts +0 -436
- package/src/agent-tools/schema/typebox.ts +0 -25
- package/src/agent-tools/security.ts +0 -352
- package/src/agent-tools/tool-resolver.ts +0 -1018
- package/src/agent-tools/tools/agenticmail.ts +0 -1017
- package/src/agent-tools/tools/bash.ts +0 -179
- package/src/agent-tools/tools/browser-tool.schema.ts +0 -112
- package/src/agent-tools/tools/browser-tool.ts +0 -388
- package/src/agent-tools/tools/browser.ts +0 -764
- package/src/agent-tools/tools/edit.ts +0 -100
- package/src/agent-tools/tools/enterprise-code-sandbox.ts +0 -395
- package/src/agent-tools/tools/enterprise-database.ts +0 -377
- package/src/agent-tools/tools/enterprise-diff.ts +0 -580
- package/src/agent-tools/tools/enterprise-documents.ts +0 -896
- package/src/agent-tools/tools/enterprise-http.ts +0 -485
- package/src/agent-tools/tools/enterprise-security-scan.ts +0 -528
- package/src/agent-tools/tools/enterprise-spreadsheet.ts +0 -825
- package/src/agent-tools/tools/glob.ts +0 -129
- package/src/agent-tools/tools/google/calendar.ts +0 -230
- package/src/agent-tools/tools/google/chat.ts +0 -725
- package/src/agent-tools/tools/google/contacts.ts +0 -209
- package/src/agent-tools/tools/google/docs.ts +0 -162
- package/src/agent-tools/tools/google/drive.ts +0 -392
- package/src/agent-tools/tools/google/forms.ts +0 -367
- package/src/agent-tools/tools/google/gmail.ts +0 -897
- package/src/agent-tools/tools/google/index.ts +0 -86
- package/src/agent-tools/tools/google/maps.ts +0 -543
- package/src/agent-tools/tools/google/meeting-voice.ts +0 -885
- package/src/agent-tools/tools/google/meetings.ts +0 -1094
- package/src/agent-tools/tools/google/sheets.ts +0 -215
- package/src/agent-tools/tools/google/slides.ts +0 -559
- package/src/agent-tools/tools/google/tasks.ts +0 -200
- package/src/agent-tools/tools/grep.ts +0 -178
- package/src/agent-tools/tools/integrations/_factory.ts +0 -102
- package/src/agent-tools/tools/integrations/activecampaign.ts +0 -14
- package/src/agent-tools/tools/integrations/adobe-sign.ts +0 -14
- package/src/agent-tools/tools/integrations/adp.ts +0 -14
- package/src/agent-tools/tools/integrations/airtable.ts +0 -14
- package/src/agent-tools/tools/integrations/apollo.ts +0 -14
- package/src/agent-tools/tools/integrations/asana.ts +0 -14
- package/src/agent-tools/tools/integrations/auth0.ts +0 -14
- package/src/agent-tools/tools/integrations/aws.ts +0 -14
- package/src/agent-tools/tools/integrations/azure-devops.ts +0 -14
- package/src/agent-tools/tools/integrations/bamboohr.ts +0 -14
- package/src/agent-tools/tools/integrations/basecamp.ts +0 -14
- package/src/agent-tools/tools/integrations/bigcommerce.ts +0 -14
- package/src/agent-tools/tools/integrations/bitbucket.ts +0 -14
- package/src/agent-tools/tools/integrations/box.ts +0 -14
- package/src/agent-tools/tools/integrations/brex.ts +0 -14
- package/src/agent-tools/tools/integrations/buffer.ts +0 -14
- package/src/agent-tools/tools/integrations/calendly.ts +0 -14
- package/src/agent-tools/tools/integrations/canva.ts +0 -14
- package/src/agent-tools/tools/integrations/chargebee.ts +0 -14
- package/src/agent-tools/tools/integrations/circleci.ts +0 -14
- package/src/agent-tools/tools/integrations/clickup.ts +0 -14
- package/src/agent-tools/tools/integrations/close.ts +0 -14
- package/src/agent-tools/tools/integrations/cloudflare.ts +0 -14
- package/src/agent-tools/tools/integrations/confluence.ts +0 -14
- package/src/agent-tools/tools/integrations/contentful.ts +0 -14
- package/src/agent-tools/tools/integrations/copper.ts +0 -14
- package/src/agent-tools/tools/integrations/crisp.ts +0 -14
- package/src/agent-tools/tools/integrations/crowdstrike.ts +0 -14
- package/src/agent-tools/tools/integrations/datadog.ts +0 -14
- package/src/agent-tools/tools/integrations/digitalocean.ts +0 -14
- package/src/agent-tools/tools/integrations/discord.ts +0 -14
- package/src/agent-tools/tools/integrations/docker.ts +0 -14
- package/src/agent-tools/tools/integrations/docusign.ts +0 -14
- package/src/agent-tools/tools/integrations/drift.ts +0 -14
- package/src/agent-tools/tools/integrations/dropbox.ts +0 -14
- package/src/agent-tools/tools/integrations/figma.ts +0 -14
- package/src/agent-tools/tools/integrations/firebase.ts +0 -14
- package/src/agent-tools/tools/integrations/flyio.ts +0 -14
- package/src/agent-tools/tools/integrations/freshbooks.ts +0 -14
- package/src/agent-tools/tools/integrations/freshdesk.ts +0 -14
- package/src/agent-tools/tools/integrations/freshsales.ts +0 -14
- package/src/agent-tools/tools/integrations/freshservice.ts +0 -14
- package/src/agent-tools/tools/integrations/front.ts +0 -14
- package/src/agent-tools/tools/integrations/github-actions.ts +0 -14
- package/src/agent-tools/tools/integrations/github.ts +0 -14
- package/src/agent-tools/tools/integrations/gitlab.ts +0 -14
- package/src/agent-tools/tools/integrations/gong.ts +0 -14
- package/src/agent-tools/tools/integrations/google-ads.ts +0 -14
- package/src/agent-tools/tools/integrations/google-analytics.ts +0 -14
- package/src/agent-tools/tools/integrations/google-cloud.ts +0 -14
- package/src/agent-tools/tools/integrations/gotomeeting.ts +0 -14
- package/src/agent-tools/tools/integrations/grafana.ts +0 -14
- package/src/agent-tools/tools/integrations/greenhouse.ts +0 -14
- package/src/agent-tools/tools/integrations/gusto.ts +0 -14
- package/src/agent-tools/tools/integrations/hashicorp-vault.ts +0 -14
- package/src/agent-tools/tools/integrations/heroku.ts +0 -14
- package/src/agent-tools/tools/integrations/hibob.ts +0 -14
- package/src/agent-tools/tools/integrations/hootsuite.ts +0 -14
- package/src/agent-tools/tools/integrations/hubspot.ts +0 -14
- package/src/agent-tools/tools/integrations/huggingface.ts +0 -14
- package/src/agent-tools/tools/integrations/index.ts +0 -474
- package/src/agent-tools/tools/integrations/intercom.ts +0 -14
- package/src/agent-tools/tools/integrations/jira.ts +0 -14
- package/src/agent-tools/tools/integrations/klaviyo.ts +0 -14
- package/src/agent-tools/tools/integrations/kubernetes.ts +0 -14
- package/src/agent-tools/tools/integrations/lattice.ts +0 -14
- package/src/agent-tools/tools/integrations/launchdarkly.ts +0 -14
- package/src/agent-tools/tools/integrations/lever.ts +0 -14
- package/src/agent-tools/tools/integrations/linear.ts +0 -14
- package/src/agent-tools/tools/integrations/linkedin.ts +0 -14
- package/src/agent-tools/tools/integrations/livechat.ts +0 -14
- package/src/agent-tools/tools/integrations/loom.ts +0 -14
- package/src/agent-tools/tools/integrations/mailchimp.ts +0 -14
- package/src/agent-tools/tools/integrations/mailgun.ts +0 -14
- package/src/agent-tools/tools/integrations/miro.ts +0 -14
- package/src/agent-tools/tools/integrations/mixpanel.ts +0 -14
- package/src/agent-tools/tools/integrations/monday.ts +0 -14
- package/src/agent-tools/tools/integrations/mongodb-atlas.ts +0 -14
- package/src/agent-tools/tools/integrations/neon.ts +0 -14
- package/src/agent-tools/tools/integrations/netlify.ts +0 -14
- package/src/agent-tools/tools/integrations/netsuite.ts +0 -14
- package/src/agent-tools/tools/integrations/newrelic.ts +0 -14
- package/src/agent-tools/tools/integrations/notion.ts +0 -14
- package/src/agent-tools/tools/integrations/okta.ts +0 -14
- package/src/agent-tools/tools/integrations/openai.ts +0 -14
- package/src/agent-tools/tools/integrations/opsgenie.ts +0 -14
- package/src/agent-tools/tools/integrations/outreach.ts +0 -14
- package/src/agent-tools/tools/integrations/paddle.ts +0 -14
- package/src/agent-tools/tools/integrations/pagerduty.ts +0 -14
- package/src/agent-tools/tools/integrations/pandadoc.ts +0 -14
- package/src/agent-tools/tools/integrations/paypal.ts +0 -14
- package/src/agent-tools/tools/integrations/personio.ts +0 -14
- package/src/agent-tools/tools/integrations/pinecone.ts +0 -14
- package/src/agent-tools/tools/integrations/pipedrive.ts +0 -14
- package/src/agent-tools/tools/integrations/plaid.ts +0 -14
- package/src/agent-tools/tools/integrations/postmark.ts +0 -14
- package/src/agent-tools/tools/integrations/power-automate.ts +0 -14
- package/src/agent-tools/tools/integrations/quickbooks.ts +0 -14
- package/src/agent-tools/tools/integrations/recurly.ts +0 -14
- package/src/agent-tools/tools/integrations/reddit.ts +0 -14
- package/src/agent-tools/tools/integrations/render.ts +0 -14
- package/src/agent-tools/tools/integrations/ringcentral.ts +0 -14
- package/src/agent-tools/tools/integrations/rippling.ts +0 -14
- package/src/agent-tools/tools/integrations/salesforce.ts +0 -14
- package/src/agent-tools/tools/integrations/salesloft.ts +0 -14
- package/src/agent-tools/tools/integrations/sanity.ts +0 -14
- package/src/agent-tools/tools/integrations/sap.ts +0 -14
- package/src/agent-tools/tools/integrations/segment.ts +0 -14
- package/src/agent-tools/tools/integrations/sendgrid.ts +0 -14
- package/src/agent-tools/tools/integrations/sentry.ts +0 -14
- package/src/agent-tools/tools/integrations/servicenow.ts +0 -14
- package/src/agent-tools/tools/integrations/shopify.ts +0 -14
- package/src/agent-tools/tools/integrations/shortcut.ts +0 -14
- package/src/agent-tools/tools/integrations/slack.ts +0 -14
- package/src/agent-tools/tools/integrations/smartsheet.ts +0 -14
- package/src/agent-tools/tools/integrations/snowflake.ts +0 -14
- package/src/agent-tools/tools/integrations/snyk.ts +0 -14
- package/src/agent-tools/tools/integrations/splunk.ts +0 -14
- package/src/agent-tools/tools/integrations/square.ts +0 -14
- package/src/agent-tools/tools/integrations/statuspage.ts +0 -14
- package/src/agent-tools/tools/integrations/stripe.ts +0 -14
- package/src/agent-tools/tools/integrations/supabase.ts +0 -14
- package/src/agent-tools/tools/integrations/teamwork.ts +0 -14
- package/src/agent-tools/tools/integrations/telegram.ts +0 -14
- package/src/agent-tools/tools/integrations/terraform.ts +0 -14
- package/src/agent-tools/tools/integrations/todoist.ts +0 -14
- package/src/agent-tools/tools/integrations/trello.ts +0 -14
- package/src/agent-tools/tools/integrations/twilio.ts +0 -14
- package/src/agent-tools/tools/integrations/twitter.ts +0 -14
- package/src/agent-tools/tools/integrations/vercel.ts +0 -14
- package/src/agent-tools/tools/integrations/weaviate.ts +0 -14
- package/src/agent-tools/tools/integrations/webex.ts +0 -14
- package/src/agent-tools/tools/integrations/webflow.ts +0 -14
- package/src/agent-tools/tools/integrations/whatsapp.ts +0 -14
- package/src/agent-tools/tools/integrations/whereby.ts +0 -14
- package/src/agent-tools/tools/integrations/woocommerce.ts +0 -14
- package/src/agent-tools/tools/integrations/wordpress.ts +0 -14
- package/src/agent-tools/tools/integrations/workday.ts +0 -14
- package/src/agent-tools/tools/integrations/wrike.ts +0 -14
- package/src/agent-tools/tools/integrations/xero.ts +0 -14
- package/src/agent-tools/tools/integrations/youtube.ts +0 -14
- package/src/agent-tools/tools/integrations/zendesk.ts +0 -14
- package/src/agent-tools/tools/integrations/zoho-crm.ts +0 -14
- package/src/agent-tools/tools/integrations/zoom.ts +0 -14
- package/src/agent-tools/tools/integrations/zuora.ts +0 -14
- package/src/agent-tools/tools/knowledge-search.ts +0 -318
- package/src/agent-tools/tools/local/coding.ts +0 -626
- package/src/agent-tools/tools/local/dependency-manager.ts +0 -647
- package/src/agent-tools/tools/local/file-edit.ts +0 -31
- package/src/agent-tools/tools/local/file-list.ts +0 -39
- package/src/agent-tools/tools/local/file-ops.ts +0 -48
- package/src/agent-tools/tools/local/file-read.ts +0 -39
- package/src/agent-tools/tools/local/file-search.ts +0 -46
- package/src/agent-tools/tools/local/file-write.ts +0 -28
- package/src/agent-tools/tools/local/filesystem.ts +0 -5
- package/src/agent-tools/tools/local/index.ts +0 -55
- package/src/agent-tools/tools/local/resolve-path.ts +0 -18
- package/src/agent-tools/tools/local/shell.ts +0 -277
- package/src/agent-tools/tools/local/system-info.ts +0 -29
- package/src/agent-tools/tools/management.ts +0 -425
- package/src/agent-tools/tools/mcp-bridge.ts +0 -142
- package/src/agent-tools/tools/mcp-server-tools.ts +0 -91
- package/src/agent-tools/tools/meeting-lifecycle.ts +0 -438
- package/src/agent-tools/tools/memory.ts +0 -509
- package/src/agent-tools/tools/messaging/index.ts +0 -6
- package/src/agent-tools/tools/messaging/telegram.ts +0 -167
- package/src/agent-tools/tools/messaging/whatsapp.ts +0 -651
- package/src/agent-tools/tools/microsoft/contacts.ts +0 -176
- package/src/agent-tools/tools/microsoft/excel-vba.ts +0 -331
- package/src/agent-tools/tools/microsoft/excel.ts +0 -261
- package/src/agent-tools/tools/microsoft/graph-api.ts +0 -161
- package/src/agent-tools/tools/microsoft/index.ts +0 -95
- package/src/agent-tools/tools/microsoft/onedrive.ts +0 -429
- package/src/agent-tools/tools/microsoft/onenote.ts +0 -186
- package/src/agent-tools/tools/microsoft/outlook-calendar.ts +0 -286
- package/src/agent-tools/tools/microsoft/outlook-mail.ts +0 -723
- package/src/agent-tools/tools/microsoft/planner.ts +0 -200
- package/src/agent-tools/tools/microsoft/powerbi.ts +0 -266
- package/src/agent-tools/tools/microsoft/powerpoint.ts +0 -186
- package/src/agent-tools/tools/microsoft/sharepoint.ts +0 -328
- package/src/agent-tools/tools/microsoft/teams.ts +0 -463
- package/src/agent-tools/tools/microsoft/todo.ts +0 -181
- package/src/agent-tools/tools/oauth-token-provider.ts +0 -101
- package/src/agent-tools/tools/read.ts +0 -160
- package/src/agent-tools/tools/visual-memory/capture.ts +0 -217
- package/src/agent-tools/tools/visual-memory/diff.ts +0 -283
- package/src/agent-tools/tools/visual-memory/index.ts +0 -698
- package/src/agent-tools/tools/visual-memory/phash.ts +0 -120
- package/src/agent-tools/tools/visual-memory/similarity.ts +0 -354
- package/src/agent-tools/tools/visual-memory/storage.ts +0 -534
- package/src/agent-tools/tools/visual-memory/types.ts +0 -100
- package/src/agent-tools/tools/web-fetch-utils.ts +0 -202
- package/src/agent-tools/tools/web-fetch.ts +0 -464
- package/src/agent-tools/tools/web-search.ts +0 -480
- package/src/agent-tools/tools/web-shared.ts +0 -232
- package/src/agent-tools/tools/write.ts +0 -68
- package/src/agent-tools/types.ts +0 -214
- package/src/agenticmail/index.ts +0 -34
- package/src/agenticmail/manager.ts +0 -253
- package/src/agenticmail/providers/google.ts +0 -391
- package/src/agenticmail/providers/imap.ts +0 -454
- package/src/agenticmail/providers/index.ts +0 -28
- package/src/agenticmail/providers/microsoft.ts +0 -260
- package/src/agenticmail/types.ts +0 -173
- package/src/auth/routes.ts +0 -1589
- package/src/browser/bridge-auth-registry.ts +0 -34
- package/src/browser/bridge-server.ts +0 -93
- package/src/browser/cdp.helpers.ts +0 -180
- package/src/browser/cdp.ts +0 -466
- package/src/browser/chrome.executables.ts +0 -625
- package/src/browser/chrome.profile-decoration.ts +0 -198
- package/src/browser/chrome.ts +0 -349
- package/src/browser/client-actions-core.ts +0 -259
- package/src/browser/client-actions-observe.ts +0 -184
- package/src/browser/client-actions-state.ts +0 -284
- package/src/browser/client-actions-types.ts +0 -16
- package/src/browser/client-actions-url.ts +0 -11
- package/src/browser/client-actions.ts +0 -4
- package/src/browser/client-fetch.ts +0 -253
- package/src/browser/client.ts +0 -337
- package/src/browser/config.ts +0 -301
- package/src/browser/constants.ts +0 -8
- package/src/browser/control-auth.ts +0 -94
- package/src/browser/control-service.ts +0 -81
- package/src/browser/csrf.ts +0 -87
- package/src/browser/enterprise-compat.ts +0 -562
- package/src/browser/extension-relay.ts +0 -834
- package/src/browser/http-auth.ts +0 -63
- package/src/browser/navigation-guard.ts +0 -50
- package/src/browser/paths.ts +0 -49
- package/src/browser/playwright.d.ts +0 -12
- package/src/browser/profiles-service.ts +0 -187
- package/src/browser/profiles.ts +0 -114
- package/src/browser/proxy-files.ts +0 -41
- package/src/browser/pw-ai-module.ts +0 -52
- package/src/browser/pw-ai-state.ts +0 -9
- package/src/browser/pw-ai.ts +0 -65
- package/src/browser/pw-role-snapshot.ts +0 -434
- package/src/browser/pw-session.ts +0 -810
- package/src/browser/pw-tools-core.activity.ts +0 -68
- package/src/browser/pw-tools-core.downloads.ts +0 -281
- package/src/browser/pw-tools-core.interactions.ts +0 -646
- package/src/browser/pw-tools-core.responses.ts +0 -124
- package/src/browser/pw-tools-core.shared.ts +0 -70
- package/src/browser/pw-tools-core.snapshot.ts +0 -213
- package/src/browser/pw-tools-core.state.ts +0 -209
- package/src/browser/pw-tools-core.storage.ts +0 -128
- package/src/browser/pw-tools-core.trace.ts +0 -37
- package/src/browser/pw-tools-core.ts +0 -8
- package/src/browser/resolved-config-refresh.ts +0 -59
- package/src/browser/routes/agent.act.shared.ts +0 -52
- package/src/browser/routes/agent.act.ts +0 -575
- package/src/browser/routes/agent.debug.ts +0 -149
- package/src/browser/routes/agent.shared.ts +0 -143
- package/src/browser/routes/agent.snapshot.ts +0 -333
- package/src/browser/routes/agent.storage.ts +0 -451
- package/src/browser/routes/agent.ts +0 -13
- package/src/browser/routes/basic.ts +0 -202
- package/src/browser/routes/dispatcher.ts +0 -126
- package/src/browser/routes/index.ts +0 -11
- package/src/browser/routes/path-output.ts +0 -1
- package/src/browser/routes/tabs.ts +0 -217
- package/src/browser/routes/types.ts +0 -26
- package/src/browser/routes/utils.ts +0 -73
- package/src/browser/screenshot.ts +0 -54
- package/src/browser/server-context.ts +0 -688
- package/src/browser/server-context.types.ts +0 -65
- package/src/browser/server-lifecycle.ts +0 -48
- package/src/browser/server-middleware.ts +0 -37
- package/src/browser/server.ts +0 -110
- package/src/browser/target-id.ts +0 -30
- package/src/browser/trash.ts +0 -21
- package/src/cli-agent.ts +0 -2452
- package/src/cli-reset-password.ts +0 -138
- package/src/cli-serve.ts +0 -314
- package/src/cli.ts +0 -103
- package/src/dashboard/HELP-TOOLTIPS-GUIDE.md +0 -45
- package/src/dashboard/app.js +0 -579
- package/src/dashboard/assets/brand-logos.js +0 -350
- package/src/dashboard/assets/icons/emoji-icons.js +0 -893
- package/src/dashboard/assets/logo.png +0 -0
- package/src/dashboard/assets/provider-logos.js +0 -139
- package/src/dashboard/components/error-boundary.js +0 -21
- package/src/dashboard/components/help-button.js +0 -65
- package/src/dashboard/components/icons.js +0 -64
- package/src/dashboard/components/knowledge-link.js +0 -79
- package/src/dashboard/components/modal.js +0 -125
- package/src/dashboard/components/org-switcher.js +0 -156
- package/src/dashboard/components/persona-fields.js +0 -460
- package/src/dashboard/components/settings-help.js +0 -193
- package/src/dashboard/components/tag-input.js +0 -96
- package/src/dashboard/components/timezones.js +0 -352
- package/src/dashboard/components/transport-encryption.js +0 -288
- package/src/dashboard/components/utils.js +0 -205
- package/src/dashboard/data/countries.js +0 -255
- package/src/dashboard/docs/activity.html +0 -253
- package/src/dashboard/docs/agent-activity.html +0 -199
- package/src/dashboard/docs/agent-autonomy.html +0 -161
- package/src/dashboard/docs/agent-budget.html +0 -190
- package/src/dashboard/docs/agent-channels.html +0 -189
- package/src/dashboard/docs/agent-communication.html +0 -171
- package/src/dashboard/docs/agent-configuration.html +0 -194
- package/src/dashboard/docs/agent-deployment.html +0 -323
- package/src/dashboard/docs/agent-email.html +0 -184
- package/src/dashboard/docs/agent-guardrails.html +0 -206
- package/src/dashboard/docs/agent-manager.html +0 -226
- package/src/dashboard/docs/agent-memory.html +0 -215
- package/src/dashboard/docs/agent-overview.html +0 -226
- package/src/dashboard/docs/agent-permissions.html +0 -305
- package/src/dashboard/docs/agent-personal.html +0 -155
- package/src/dashboard/docs/agent-security.html +0 -188
- package/src/dashboard/docs/agent-skills.html +0 -224
- package/src/dashboard/docs/agent-tool-security.html +0 -205
- package/src/dashboard/docs/agent-tools.html +0 -238
- package/src/dashboard/docs/agent-whatsapp.html +0 -210
- package/src/dashboard/docs/agent-workforce.html +0 -199
- package/src/dashboard/docs/agents.html +0 -258
- package/src/dashboard/docs/approvals.html +0 -200
- package/src/dashboard/docs/audit.html +0 -206
- package/src/dashboard/docs/browser-providers.html +0 -313
- package/src/dashboard/docs/cluster.html +0 -285
- package/src/dashboard/docs/community-skills.html +0 -253
- package/src/dashboard/docs/compliance.html +0 -221
- package/src/dashboard/docs/dashboard.html +0 -84
- package/src/dashboard/docs/database-access.html +0 -322
- package/src/dashboard/docs/dlp.html +0 -268
- package/src/dashboard/docs/docs-style.css +0 -26
- package/src/dashboard/docs/domain-status.html +0 -294
- package/src/dashboard/docs/guardrails.html +0 -265
- package/src/dashboard/docs/journal.html +0 -197
- package/src/dashboard/docs/knowledge-contributions.html +0 -286
- package/src/dashboard/docs/knowledge.html +0 -268
- package/src/dashboard/docs/memory-transfer.html +0 -311
- package/src/dashboard/docs/messages.html +0 -217
- package/src/dashboard/docs/multi-tenant.html +0 -311
- package/src/dashboard/docs/org-chart.html +0 -239
- package/src/dashboard/docs/organizations.html +0 -182
- package/src/dashboard/docs/roles.html +0 -195
- package/src/dashboard/docs/settings-network.html +0 -321
- package/src/dashboard/docs/settings-security.html +0 -347
- package/src/dashboard/docs/settings-tool-security.html +0 -176
- package/src/dashboard/docs/settings.html +0 -280
- package/src/dashboard/docs/skill-connections.html +0 -270
- package/src/dashboard/docs/skills.html +0 -206
- package/src/dashboard/docs/task-pipeline.html +0 -261
- package/src/dashboard/docs/transport-encryption.html +0 -359
- package/src/dashboard/docs/users.html +0 -225
- package/src/dashboard/docs/vault.html +0 -260
- package/src/dashboard/docs/workforce.html +0 -245
- package/src/dashboard/index.html +0 -444
- package/src/dashboard/pages/activity.js +0 -379
- package/src/dashboard/pages/agent-detail/activity.js +0 -277
- package/src/dashboard/pages/agent-detail/autonomy.js +0 -244
- package/src/dashboard/pages/agent-detail/budget.js +0 -269
- package/src/dashboard/pages/agent-detail/channels.js +0 -494
- package/src/dashboard/pages/agent-detail/communication.js +0 -296
- package/src/dashboard/pages/agent-detail/configuration.js +0 -882
- package/src/dashboard/pages/agent-detail/deployment.js +0 -958
- package/src/dashboard/pages/agent-detail/email.js +0 -674
- package/src/dashboard/pages/agent-detail/guardrails.js +0 -521
- package/src/dashboard/pages/agent-detail/index.js +0 -261
- package/src/dashboard/pages/agent-detail/manager.js +0 -357
- package/src/dashboard/pages/agent-detail/meeting-browser.js +0 -933
- package/src/dashboard/pages/agent-detail/memory.js +0 -368
- package/src/dashboard/pages/agent-detail/overview.js +0 -844
- package/src/dashboard/pages/agent-detail/permissions.js +0 -1163
- package/src/dashboard/pages/agent-detail/personal-details.js +0 -404
- package/src/dashboard/pages/agent-detail/security.js +0 -409
- package/src/dashboard/pages/agent-detail/shared.js +0 -85
- package/src/dashboard/pages/agent-detail/skills-section.js +0 -183
- package/src/dashboard/pages/agent-detail/tool-security.js +0 -380
- package/src/dashboard/pages/agent-detail/tools.js +0 -322
- package/src/dashboard/pages/agent-detail/whatsapp.js +0 -824
- package/src/dashboard/pages/agent-detail/workforce.js +0 -683
- package/src/dashboard/pages/agents.js +0 -1242
- package/src/dashboard/pages/approvals.js +0 -100
- package/src/dashboard/pages/audit.js +0 -198
- package/src/dashboard/pages/cluster.js +0 -512
- package/src/dashboard/pages/community-skills.js +0 -1219
- package/src/dashboard/pages/compliance.js +0 -475
- package/src/dashboard/pages/dashboard.js +0 -180
- package/src/dashboard/pages/database-access.js +0 -812
- package/src/dashboard/pages/dlp.js +0 -293
- package/src/dashboard/pages/domain-status.js +0 -951
- package/src/dashboard/pages/guardrails.js +0 -1035
- package/src/dashboard/pages/journal.js +0 -172
- package/src/dashboard/pages/knowledge-contributions.js +0 -1682
- package/src/dashboard/pages/knowledge-import.js +0 -455
- package/src/dashboard/pages/knowledge.js +0 -582
- package/src/dashboard/pages/login.js +0 -1056
- package/src/dashboard/pages/memory-transfer.js +0 -631
- package/src/dashboard/pages/messages.js +0 -303
- package/src/dashboard/pages/org-chart.js +0 -349
- package/src/dashboard/pages/organizations.js +0 -1081
- package/src/dashboard/pages/roles.js +0 -780
- package/src/dashboard/pages/settings.js +0 -3790
- package/src/dashboard/pages/skill-connections.js +0 -982
- package/src/dashboard/pages/skills.js +0 -879
- package/src/dashboard/pages/task-pipeline.js +0 -684
- package/src/dashboard/pages/users.js +0 -867
- package/src/dashboard/pages/vault.js +0 -791
- package/src/dashboard/pages/workforce.js +0 -851
- package/src/dashboard/vendor/react-dom.development.js +0 -29924
- package/src/dashboard/vendor/react-dom.production.min.js +0 -267
- package/src/dashboard/vendor/react.development.js +0 -3343
- package/src/dashboard/vendor/react.production.min.js +0 -31
- package/src/database-access/agent-tools.ts +0 -193
- package/src/database-access/connection-manager.ts +0 -1341
- package/src/database-access/index.ts +0 -21
- package/src/database-access/query-sanitizer.ts +0 -220
- package/src/database-access/routes.ts +0 -226
- package/src/database-access/types.ts +0 -226
- package/src/db/adapter.ts +0 -510
- package/src/db/dynamodb.ts +0 -454
- package/src/db/factory.ts +0 -129
- package/src/db/mongodb.ts +0 -360
- package/src/db/mysql.ts +0 -531
- package/src/db/postgres.ts +0 -863
- package/src/db/proxy.ts +0 -39
- package/src/db/resolve-driver.ts +0 -29
- package/src/db/sql-schema.ts +0 -124
- package/src/db/sqlite.ts +0 -493
- package/src/db/turso.ts +0 -470
- package/src/deploy/fly.ts +0 -368
- package/src/deploy/managed.ts +0 -235
- package/src/domain-lock/cli-recover.ts +0 -591
- package/src/domain-lock/cli-verify.ts +0 -190
- package/src/domain-lock/index.ts +0 -220
- package/src/engine/activity-routes.ts +0 -154
- package/src/engine/activity.ts +0 -568
- package/src/engine/agent-autonomy.ts +0 -974
- package/src/engine/agent-config.ts +0 -646
- package/src/engine/agent-heartbeat.ts +0 -720
- package/src/engine/agent-hierarchy.ts +0 -1064
- package/src/engine/agent-memory.ts +0 -806
- package/src/engine/agent-notify.ts +0 -50
- package/src/engine/agent-routes.ts +0 -2583
- package/src/engine/agent-status.ts +0 -311
- package/src/engine/ambient-memory.ts +0 -401
- package/src/engine/approvals.ts +0 -615
- package/src/engine/assets/thinking-hum.mp3 +0 -0
- package/src/engine/catalog-routes.ts +0 -232
- package/src/engine/chat-poller.ts +0 -913
- package/src/engine/chat-webhook-routes.ts +0 -304
- package/src/engine/cli-build-skill.ts +0 -285
- package/src/engine/cli-submit-skill.ts +0 -200
- package/src/engine/cli-validate.ts +0 -188
- package/src/engine/cluster.ts +0 -278
- package/src/engine/communication-routes.ts +0 -139
- package/src/engine/communication.ts +0 -765
- package/src/engine/community-registry.ts +0 -1529
- package/src/engine/community-routes.ts +0 -260
- package/src/engine/compliance-routes.ts +0 -133
- package/src/engine/compliance.ts +0 -1679
- package/src/engine/config-bus.ts +0 -103
- package/src/engine/db-adapter.ts +0 -1156
- package/src/engine/db-schema.ts +0 -1945
- package/src/engine/deploy-schema-routes.ts +0 -176
- package/src/engine/deployer.ts +0 -957
- package/src/engine/dlp-routes.ts +0 -101
- package/src/engine/dlp.ts +0 -410
- package/src/engine/email-poller.ts +0 -855
- package/src/engine/emoji.ts +0 -106
- package/src/engine/guardrail-routes.ts +0 -125
- package/src/engine/guardrails.ts +0 -465
- package/src/engine/index.ts +0 -255
- package/src/engine/journal-routes.ts +0 -56
- package/src/engine/journal.ts +0 -249
- package/src/engine/knowledge-contribution-routes.ts +0 -633
- package/src/engine/knowledge-contribution.ts +0 -1386
- package/src/engine/knowledge-import/chunker.ts +0 -241
- package/src/engine/knowledge-import/import-manager.ts +0 -416
- package/src/engine/knowledge-import/index.ts +0 -27
- package/src/engine/knowledge-import/processors/clean.ts +0 -149
- package/src/engine/knowledge-import/processors/extract-gdrive.ts +0 -102
- package/src/engine/knowledge-import/processors/extract-github.ts +0 -74
- package/src/engine/knowledge-import/processors/extract-sharepoint.ts +0 -69
- package/src/engine/knowledge-import/processors/extract-web.ts +0 -275
- package/src/engine/knowledge-import/processors/index.ts +0 -18
- package/src/engine/knowledge-import/processors/pipeline.ts +0 -171
- package/src/engine/knowledge-import/processors/types.ts +0 -78
- package/src/engine/knowledge-import/processors/validate.ts +0 -150
- package/src/engine/knowledge-import/provider-file-upload.ts +0 -95
- package/src/engine/knowledge-import/provider-github.ts +0 -144
- package/src/engine/knowledge-import/provider-google-sites.ts +0 -323
- package/src/engine/knowledge-import/provider-sharepoint.ts +0 -276
- package/src/engine/knowledge-import/provider-url.ts +0 -218
- package/src/engine/knowledge-import/routes.ts +0 -94
- package/src/engine/knowledge-import/types.ts +0 -92
- package/src/engine/knowledge-routes.ts +0 -231
- package/src/engine/knowledge.ts +0 -587
- package/src/engine/lifecycle.ts +0 -1420
- package/src/engine/mcp-process-manager.ts +0 -573
- package/src/engine/meeting-monitor.ts +0 -483
- package/src/engine/meeting-voice-intelligence.ts +0 -340
- package/src/engine/memory-routes.ts +0 -142
- package/src/engine/memory-transfer-routes.ts +0 -339
- package/src/engine/messaging-history.ts +0 -177
- package/src/engine/messaging-poller.ts +0 -786
- package/src/engine/model-fallback.ts +0 -141
- package/src/engine/oauth-connect-routes.ts +0 -603
- package/src/engine/oauth-connect.ts +0 -304
- package/src/engine/onboarding-routes.ts +0 -148
- package/src/engine/onboarding.ts +0 -574
- package/src/engine/org-approval-routes.ts +0 -146
- package/src/engine/org-integration-routes.ts +0 -399
- package/src/engine/org-integrations.ts +0 -608
- package/src/engine/org-policies.ts +0 -502
- package/src/engine/policy-import-routes.ts +0 -125
- package/src/engine/policy-import.ts +0 -1186
- package/src/engine/policy-routes.ts +0 -163
- package/src/engine/routes.ts +0 -1236
- package/src/engine/screen-unlock.ts +0 -136
- package/src/engine/session-router.ts +0 -212
- package/src/engine/skill-updater-routes.ts +0 -132
- package/src/engine/skill-updater.ts +0 -480
- package/src/engine/skill-validator.ts +0 -331
- package/src/engine/skills/agent-management.ts +0 -119
- package/src/engine/skills/agent-memory.ts +0 -19
- package/src/engine/skills/agenticmail.ts +0 -116
- package/src/engine/skills/core-tools.ts +0 -25
- package/src/engine/skills/database-access.ts +0 -78
- package/src/engine/skills/enterprise-code-sandbox.ts +0 -113
- package/src/engine/skills/enterprise-database.ts +0 -123
- package/src/engine/skills/enterprise-diff.ts +0 -95
- package/src/engine/skills/enterprise-documents.ts +0 -162
- package/src/engine/skills/enterprise-http.ts +0 -99
- package/src/engine/skills/enterprise-security-scan.ts +0 -125
- package/src/engine/skills/enterprise-spreadsheet.ts +0 -171
- package/src/engine/skills/gws-admin.ts +0 -18
- package/src/engine/skills/gws-calendar.ts +0 -21
- package/src/engine/skills/gws-chat.ts +0 -29
- package/src/engine/skills/gws-contacts.ts +0 -20
- package/src/engine/skills/gws-docs.ts +0 -18
- package/src/engine/skills/gws-drive.ts +0 -23
- package/src/engine/skills/gws-forms.ts +0 -23
- package/src/engine/skills/gws-gmail.ts +0 -30
- package/src/engine/skills/gws-groups.ts +0 -17
- package/src/engine/skills/gws-keep.ts +0 -17
- package/src/engine/skills/gws-maps.ts +0 -25
- package/src/engine/skills/gws-meet.ts +0 -23
- package/src/engine/skills/gws-sheets.ts +0 -22
- package/src/engine/skills/gws-sites.ts +0 -16
- package/src/engine/skills/gws-slides.ts +0 -27
- package/src/engine/skills/gws-tasks.ts +0 -22
- package/src/engine/skills/gws-vault.ts +0 -17
- package/src/engine/skills/index.ts +0 -159
- package/src/engine/skills/knowledge-search.ts +0 -18
- package/src/engine/skills/local-system.ts +0 -61
- package/src/engine/skills/m365-admin.ts +0 -18
- package/src/engine/skills/m365-bookings.ts +0 -17
- package/src/engine/skills/m365-copilot.ts +0 -17
- package/src/engine/skills/m365-excel.ts +0 -60
- package/src/engine/skills/m365-forms.ts +0 -17
- package/src/engine/skills/m365-onedrive.ts +0 -60
- package/src/engine/skills/m365-onenote.ts +0 -17
- package/src/engine/skills/m365-outlook.ts +0 -27
- package/src/engine/skills/m365-planner.ts +0 -18
- package/src/engine/skills/m365-power-automate.ts +0 -18
- package/src/engine/skills/m365-power-bi.ts +0 -19
- package/src/engine/skills/m365-powerpoint.ts +0 -33
- package/src/engine/skills/m365-sharepoint.ts +0 -20
- package/src/engine/skills/m365-teams.ts +0 -21
- package/src/engine/skills/m365-todo.ts +0 -17
- package/src/engine/skills/m365-whiteboard.ts +0 -16
- package/src/engine/skills/m365-word.ts +0 -42
- package/src/engine/skills/mcp-bridge.ts +0 -45
- package/src/engine/skills/meeting-lifecycle.ts +0 -20
- package/src/engine/skills/messaging.ts +0 -46
- package/src/engine/skills/visual-memory.ts +0 -25
- package/src/engine/skills.ts +0 -688
- package/src/engine/soul-library.ts +0 -142
- package/src/engine/soul-templates.json +0 -1525
- package/src/engine/storage-manager.ts +0 -252
- package/src/engine/storage-routes.ts +0 -113
- package/src/engine/storage.ts +0 -528
- package/src/engine/task-poller.ts +0 -394
- package/src/engine/task-queue-after-spawn.ts +0 -66
- package/src/engine/task-queue-before-spawn.ts +0 -113
- package/src/engine/task-queue-routes.ts +0 -161
- package/src/engine/task-queue.ts +0 -664
- package/src/engine/tenant.ts +0 -409
- package/src/engine/tool-catalog.ts +0 -354
- package/src/engine/vault-routes.ts +0 -134
- package/src/engine/vault.ts +0 -601
- package/src/engine/workforce-routes.ts +0 -331
- package/src/engine/workforce.ts +0 -1161
- package/src/index.ts +0 -77
- package/src/lib/cidr.ts +0 -122
- package/src/lib/config-store.ts +0 -86
- package/src/lib/resilience.ts +0 -326
- package/src/lib/text-search.ts +0 -358
- package/src/mcp/adapters/activecampaign.adapter.ts +0 -391
- package/src/mcp/adapters/adobe-sign.adapter.ts +0 -469
- package/src/mcp/adapters/adp.adapter.ts +0 -358
- package/src/mcp/adapters/airtable.adapter.ts +0 -273
- package/src/mcp/adapters/apollo.adapter.ts +0 -420
- package/src/mcp/adapters/asana.adapter.ts +0 -315
- package/src/mcp/adapters/auth0.adapter.ts +0 -386
- package/src/mcp/adapters/aws.adapter.ts +0 -345
- package/src/mcp/adapters/azure-devops.adapter.ts +0 -389
- package/src/mcp/adapters/bamboohr.adapter.ts +0 -376
- package/src/mcp/adapters/basecamp.adapter.ts +0 -366
- package/src/mcp/adapters/bigcommerce.adapter.ts +0 -429
- package/src/mcp/adapters/bitbucket.adapter.ts +0 -260
- package/src/mcp/adapters/box.adapter.ts +0 -350
- package/src/mcp/adapters/brex.adapter.ts +0 -367
- package/src/mcp/adapters/buffer.adapter.ts +0 -303
- package/src/mcp/adapters/calendly.adapter.ts +0 -262
- package/src/mcp/adapters/canva.adapter.ts +0 -256
- package/src/mcp/adapters/chargebee.adapter.ts +0 -448
- package/src/mcp/adapters/circleci.adapter.ts +0 -216
- package/src/mcp/adapters/clickup.adapter.ts +0 -335
- package/src/mcp/adapters/close.adapter.ts +0 -390
- package/src/mcp/adapters/cloudflare.adapter.ts +0 -378
- package/src/mcp/adapters/confluence.adapter.ts +0 -301
- package/src/mcp/adapters/contentful.adapter.ts +0 -355
- package/src/mcp/adapters/copper.adapter.ts +0 -468
- package/src/mcp/adapters/crisp.adapter.ts +0 -415
- package/src/mcp/adapters/crowdstrike.adapter.ts +0 -413
- package/src/mcp/adapters/datadog.adapter.ts +0 -373
- package/src/mcp/adapters/digitalocean.adapter.ts +0 -336
- package/src/mcp/adapters/discord.adapter.ts +0 -248
- package/src/mcp/adapters/docker.adapter.ts +0 -238
- package/src/mcp/adapters/docusign.adapter.ts +0 -431
- package/src/mcp/adapters/drift.adapter.ts +0 -386
- package/src/mcp/adapters/dropbox.adapter.ts +0 -315
- package/src/mcp/adapters/figma.adapter.ts +0 -302
- package/src/mcp/adapters/firebase.adapter.ts +0 -446
- package/src/mcp/adapters/flyio.adapter.ts +0 -302
- package/src/mcp/adapters/freshbooks.adapter.ts +0 -474
- package/src/mcp/adapters/freshdesk.adapter.ts +0 -441
- package/src/mcp/adapters/freshsales.adapter.ts +0 -457
- package/src/mcp/adapters/freshservice.adapter.ts +0 -481
- package/src/mcp/adapters/front.adapter.ts +0 -357
- package/src/mcp/adapters/github-actions.adapter.ts +0 -329
- package/src/mcp/adapters/github.adapter.ts +0 -387
- package/src/mcp/adapters/gitlab.adapter.ts +0 -368
- package/src/mcp/adapters/gong.adapter.ts +0 -386
- package/src/mcp/adapters/google-ads.adapter.ts +0 -363
- package/src/mcp/adapters/google-analytics.adapter.ts +0 -316
- package/src/mcp/adapters/google-cloud.adapter.ts +0 -312
- package/src/mcp/adapters/gotomeeting.adapter.ts +0 -255
- package/src/mcp/adapters/grafana.adapter.ts +0 -361
- package/src/mcp/adapters/greenhouse.adapter.ts +0 -354
- package/src/mcp/adapters/gusto.adapter.ts +0 -329
- package/src/mcp/adapters/hashicorp-vault.adapter.ts +0 -355
- package/src/mcp/adapters/heroku.adapter.ts +0 -291
- package/src/mcp/adapters/hibob.adapter.ts +0 -334
- package/src/mcp/adapters/hootsuite.adapter.ts +0 -322
- package/src/mcp/adapters/hubspot.adapter.ts +0 -400
- package/src/mcp/adapters/huggingface.adapter.ts +0 -349
- package/src/mcp/adapters/index.ts +0 -524
- package/src/mcp/adapters/intercom.adapter.ts +0 -269
- package/src/mcp/adapters/jira.adapter.ts +0 -482
- package/src/mcp/adapters/klaviyo.adapter.ts +0 -353
- package/src/mcp/adapters/kubernetes.adapter.ts +0 -431
- package/src/mcp/adapters/lattice.adapter.ts +0 -339
- package/src/mcp/adapters/launchdarkly.adapter.ts +0 -368
- package/src/mcp/adapters/lever.adapter.ts +0 -347
- package/src/mcp/adapters/linear.adapter.ts +0 -300
- package/src/mcp/adapters/linkedin.adapter.ts +0 -331
- package/src/mcp/adapters/livechat.adapter.ts +0 -259
- package/src/mcp/adapters/loom.adapter.ts +0 -230
- package/src/mcp/adapters/mailchimp.adapter.ts +0 -394
- package/src/mcp/adapters/mailgun.adapter.ts +0 -425
- package/src/mcp/adapters/miro.adapter.ts +0 -274
- package/src/mcp/adapters/mixpanel.adapter.ts +0 -324
- package/src/mcp/adapters/monday.adapter.ts +0 -308
- package/src/mcp/adapters/mongodb-atlas.adapter.ts +0 -345
- package/src/mcp/adapters/neon.adapter.ts +0 -312
- package/src/mcp/adapters/netlify.adapter.ts +0 -324
- package/src/mcp/adapters/netsuite.adapter.ts +0 -411
- package/src/mcp/adapters/newrelic.adapter.ts +0 -339
- package/src/mcp/adapters/notion.adapter.ts +0 -338
- package/src/mcp/adapters/okta.adapter.ts +0 -394
- package/src/mcp/adapters/openai.adapter.ts +0 -315
- package/src/mcp/adapters/opsgenie.adapter.ts +0 -375
- package/src/mcp/adapters/outreach.adapter.ts +0 -372
- package/src/mcp/adapters/paddle.adapter.ts +0 -467
- package/src/mcp/adapters/pagerduty.adapter.ts +0 -412
- package/src/mcp/adapters/pandadoc.adapter.ts +0 -389
- package/src/mcp/adapters/paypal.adapter.ts +0 -465
- package/src/mcp/adapters/personio.adapter.ts +0 -401
- package/src/mcp/adapters/pinecone.adapter.ts +0 -340
- package/src/mcp/adapters/pipedrive.adapter.ts +0 -324
- package/src/mcp/adapters/plaid.adapter.ts +0 -444
- package/src/mcp/adapters/postmark.adapter.ts +0 -387
- package/src/mcp/adapters/power-automate.adapter.ts +0 -388
- package/src/mcp/adapters/quickbooks.adapter.ts +0 -431
- package/src/mcp/adapters/recurly.adapter.ts +0 -433
- package/src/mcp/adapters/reddit.adapter.ts +0 -371
- package/src/mcp/adapters/render.adapter.ts +0 -332
- package/src/mcp/adapters/ringcentral.adapter.ts +0 -281
- package/src/mcp/adapters/rippling.adapter.ts +0 -287
- package/src/mcp/adapters/salesforce.adapter.ts +0 -321
- package/src/mcp/adapters/salesloft.adapter.ts +0 -413
- package/src/mcp/adapters/sanity.adapter.ts +0 -363
- package/src/mcp/adapters/sap.adapter.ts +0 -483
- package/src/mcp/adapters/segment.adapter.ts +0 -260
- package/src/mcp/adapters/sendgrid.adapter.ts +0 -265
- package/src/mcp/adapters/sentry.adapter.ts +0 -331
- package/src/mcp/adapters/servicenow.adapter.ts +0 -468
- package/src/mcp/adapters/shopify.adapter.ts +0 -451
- package/src/mcp/adapters/shortcut.adapter.ts +0 -290
- package/src/mcp/adapters/slack.adapter.ts +0 -380
- package/src/mcp/adapters/smartsheet.adapter.ts +0 -326
- package/src/mcp/adapters/snowflake.adapter.ts +0 -347
- package/src/mcp/adapters/snyk.adapter.ts +0 -394
- package/src/mcp/adapters/splunk.adapter.ts +0 -403
- package/src/mcp/adapters/square.adapter.ts +0 -467
- package/src/mcp/adapters/statuspage.adapter.ts +0 -401
- package/src/mcp/adapters/stripe.adapter.ts +0 -380
- package/src/mcp/adapters/supabase.adapter.ts +0 -334
- package/src/mcp/adapters/teamwork.adapter.ts +0 -404
- package/src/mcp/adapters/telegram.adapter.ts +0 -299
- package/src/mcp/adapters/terraform.adapter.ts +0 -300
- package/src/mcp/adapters/todoist.adapter.ts +0 -239
- package/src/mcp/adapters/trello.adapter.ts +0 -316
- package/src/mcp/adapters/twilio.adapter.ts +0 -233
- package/src/mcp/adapters/twitter.adapter.ts +0 -348
- package/src/mcp/adapters/vercel.adapter.ts +0 -219
- package/src/mcp/adapters/weaviate.adapter.ts +0 -371
- package/src/mcp/adapters/webex.adapter.ts +0 -237
- package/src/mcp/adapters/webflow.adapter.ts +0 -287
- package/src/mcp/adapters/whatsapp.adapter.ts +0 -273
- package/src/mcp/adapters/whereby.adapter.ts +0 -240
- package/src/mcp/adapters/woocommerce.adapter.ts +0 -454
- package/src/mcp/adapters/wordpress.adapter.ts +0 -455
- package/src/mcp/adapters/workday.adapter.ts +0 -354
- package/src/mcp/adapters/wrike.adapter.ts +0 -349
- package/src/mcp/adapters/xero.adapter.ts +0 -472
- package/src/mcp/adapters/youtube.adapter.ts +0 -401
- package/src/mcp/adapters/zendesk.adapter.ts +0 -399
- package/src/mcp/adapters/zoho-crm.adapter.ts +0 -410
- package/src/mcp/adapters/zoom.adapter.ts +0 -241
- package/src/mcp/adapters/zuora.adapter.ts +0 -476
- package/src/mcp/framework/api-executor.ts +0 -192
- package/src/mcp/framework/aws-sigv4.ts +0 -216
- package/src/mcp/framework/credential-resolver.ts +0 -128
- package/src/mcp/framework/oauth-token-manager.ts +0 -22
- package/src/mcp/framework/skill-mcp-framework.ts +0 -226
- package/src/mcp/framework/types.ts +0 -130
- package/src/mcp/index.ts +0 -124
- package/src/mcp/integration-catalog.ts +0 -178
- package/src/middleware/dns-rebinding.ts +0 -44
- package/src/middleware/egress-filter.ts +0 -104
- package/src/middleware/firewall.ts +0 -192
- package/src/middleware/geo-ip.ts +0 -156
- package/src/middleware/index.ts +0 -390
- package/src/middleware/network-config.ts +0 -90
- package/src/middleware/proxy-config.ts +0 -71
- package/src/middleware/request-limits.ts +0 -59
- package/src/middleware/transport-encryption.ts +0 -398
- package/src/registry/cli.ts +0 -63
- package/src/registry/server.ts +0 -504
- package/src/runtime/agent-loop.ts +0 -779
- package/src/runtime/compaction.ts +0 -638
- package/src/runtime/email-channel.ts +0 -120
- package/src/runtime/environment.ts +0 -300
- package/src/runtime/followup.ts +0 -211
- package/src/runtime/gateway.ts +0 -260
- package/src/runtime/hooks.ts +0 -564
- package/src/runtime/index.ts +0 -1110
- package/src/runtime/llm-client.ts +0 -1056
- package/src/runtime/model-router.ts +0 -97
- package/src/runtime/providers.ts +0 -228
- package/src/runtime/session-manager.ts +0 -345
- package/src/runtime/subagent.ts +0 -153
- package/src/runtime/tool-executor.ts +0 -208
- package/src/runtime/types.ts +0 -255
- package/src/security/brute-force.ts +0 -423
- package/src/security/config.ts +0 -159
- package/src/security/csp.ts +0 -407
- package/src/security/external-content.ts +0 -299
- package/src/security/index.ts +0 -557
- package/src/security/input-sanitizer.ts +0 -452
- package/src/security/output-filter.ts +0 -575
- package/src/security/port-scanner.ts +0 -342
- package/src/security/prompt-guard.ts +0 -387
- package/src/security/sql-guard.ts +0 -338
- package/src/security/threat-logger.ts +0 -484
- package/src/server.ts +0 -828
- package/src/setup/company.ts +0 -183
- package/src/setup/database.ts +0 -153
- package/src/setup/deployment.ts +0 -561
- package/src/setup/domain.ts +0 -112
- package/src/setup/index.ts +0 -171
- package/src/setup/provision.ts +0 -532
- package/src/setup/registration.ts +0 -302
- package/src/system-prompts/catchup.ts +0 -48
- package/src/system-prompts/google/calendar.ts +0 -37
- package/src/system-prompts/google/chat.ts +0 -92
- package/src/system-prompts/google/contacts.ts +0 -25
- package/src/system-prompts/google/docs.ts +0 -29
- package/src/system-prompts/google/drive.ts +0 -34
- package/src/system-prompts/google/forms.ts +0 -25
- package/src/system-prompts/google/gmail.ts +0 -50
- package/src/system-prompts/google/index.ts +0 -23
- package/src/system-prompts/google/maps.ts +0 -20
- package/src/system-prompts/google/meet.ts +0 -130
- package/src/system-prompts/google/sheets.ts +0 -32
- package/src/system-prompts/google/slides.ts +0 -26
- package/src/system-prompts/google/tasks.ts +0 -27
- package/src/system-prompts/index.ts +0 -88
- package/src/system-prompts/microsoft/contacts.ts +0 -34
- package/src/system-prompts/microsoft/excel.ts +0 -52
- package/src/system-prompts/microsoft/index.ts +0 -31
- package/src/system-prompts/microsoft/onedrive.ts +0 -41
- package/src/system-prompts/microsoft/onenote.ts +0 -36
- package/src/system-prompts/microsoft/outlook-calendar.ts +0 -37
- package/src/system-prompts/microsoft/outlook-mail.ts +0 -46
- package/src/system-prompts/microsoft/planner.ts +0 -37
- package/src/system-prompts/microsoft/powerbi.ts +0 -38
- package/src/system-prompts/microsoft/powerpoint.ts +0 -35
- package/src/system-prompts/microsoft/sharepoint.ts +0 -44
- package/src/system-prompts/microsoft/teams.ts +0 -49
- package/src/system-prompts/microsoft/todo.ts +0 -37
- package/src/system-prompts/shared-blocks.ts +0 -87
- package/src/system-prompts/task.ts +0 -21
- package/src/system-prompts/triage.ts +0 -34
- package/src/types/hono-env.ts +0 -18
- package/src/types/optional-deps.d.ts +0 -10
|
@@ -1,720 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Enterprise Agent Heartbeat System
|
|
3
|
-
*
|
|
4
|
-
* A token-efficient proactive monitoring system that uses pure math and DB queries
|
|
5
|
-
* to determine when an agent should take action. LLM sessions are only spawned
|
|
6
|
-
* when there's genuinely something to act on.
|
|
7
|
-
*
|
|
8
|
-
* Design principles:
|
|
9
|
-
* 1. ZERO tokens on idle ticks — pure arithmetic/DB checks
|
|
10
|
-
* 2. Exponential backoff on repeated no-ops (Fibonacci spacing)
|
|
11
|
-
* 3. Work-hours gating — no checks outside schedule
|
|
12
|
-
* 4. Priority queue — urgent items checked more frequently
|
|
13
|
-
* 5. Configurable per-agent check types
|
|
14
|
-
* 6. Batching — multiple actionable items combined into one LLM session
|
|
15
|
-
*
|
|
16
|
-
* Tick frequency uses a damped oscillator model:
|
|
17
|
-
* interval = baseInterval * (1 + dampingFactor * consecutiveNoOps)
|
|
18
|
-
* Capped at maxInterval. Resets to baseInterval when action is taken.
|
|
19
|
-
* This naturally reduces polling when nothing is happening.
|
|
20
|
-
*/
|
|
21
|
-
|
|
22
|
-
import type { EngineDatabase } from './db-adapter.js';
|
|
23
|
-
|
|
24
|
-
// ─── Types ──────────────────────────────────────────────
|
|
25
|
-
|
|
26
|
-
export interface HeartbeatCheckResult {
|
|
27
|
-
needsAction: boolean;
|
|
28
|
-
summary?: string;
|
|
29
|
-
priority: 'low' | 'medium' | 'high' | 'urgent';
|
|
30
|
-
data?: Record<string, any>;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export type HeartbeatCheckFn = (ctx: HeartbeatContext) => Promise<HeartbeatCheckResult>;
|
|
34
|
-
|
|
35
|
-
export interface HeartbeatCheck {
|
|
36
|
-
id: string;
|
|
37
|
-
name: string;
|
|
38
|
-
/** How often to run this check (ms). Overrides global tick. */
|
|
39
|
-
intervalMs: number;
|
|
40
|
-
/** Priority determines check order and batching urgency */
|
|
41
|
-
priority: 'low' | 'medium' | 'high';
|
|
42
|
-
/** The check function — must be pure DB/math, NO LLM calls */
|
|
43
|
-
check: HeartbeatCheckFn;
|
|
44
|
-
/** Whether this check requires the agent to be clocked in */
|
|
45
|
-
requiresClockIn: boolean;
|
|
46
|
-
/** Last time this check ran */
|
|
47
|
-
lastRunAt?: number;
|
|
48
|
-
/** Last time this check found something actionable */
|
|
49
|
-
lastActionAt?: number;
|
|
50
|
-
/** Consecutive no-ops (for adaptive spacing) */
|
|
51
|
-
consecutiveNoOps: number;
|
|
52
|
-
/** Enabled flag */
|
|
53
|
-
enabled: boolean;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
export interface HeartbeatContext {
|
|
57
|
-
agentId: string;
|
|
58
|
-
orgId: string;
|
|
59
|
-
agentName: string;
|
|
60
|
-
role: string;
|
|
61
|
-
managerEmail?: string;
|
|
62
|
-
timezone: string;
|
|
63
|
-
db: EngineDatabase;
|
|
64
|
-
now: Date;
|
|
65
|
-
localTime: Date;
|
|
66
|
-
hour: number;
|
|
67
|
-
minute: number;
|
|
68
|
-
dayOfWeek: number;
|
|
69
|
-
isWorkHours: boolean;
|
|
70
|
-
isClockedIn: boolean;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
export interface HeartbeatConfig {
|
|
74
|
-
agentId: string;
|
|
75
|
-
orgId: string;
|
|
76
|
-
agentName: string;
|
|
77
|
-
role: string;
|
|
78
|
-
managerEmail?: string;
|
|
79
|
-
timezone: string;
|
|
80
|
-
schedule?: { start: string; end: string; days: number[] };
|
|
81
|
-
db: EngineDatabase;
|
|
82
|
-
runtime?: any;
|
|
83
|
-
/** Callback to check if agent is clocked in */
|
|
84
|
-
isClockedIn: () => boolean;
|
|
85
|
-
/** Enable/disable specific checks by ID */
|
|
86
|
-
enabledChecks?: Record<string, boolean>;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
export interface HeartbeatSettings {
|
|
90
|
-
enabled: boolean;
|
|
91
|
-
/** Base tick interval in ms (default: 5 minutes) */
|
|
92
|
-
baseIntervalMs: number;
|
|
93
|
-
/** Max tick interval in ms after backoff (default: 30 minutes) */
|
|
94
|
-
maxIntervalMs: number;
|
|
95
|
-
/** Damping factor for exponential backoff (default: 0.5) */
|
|
96
|
-
dampingFactor: number;
|
|
97
|
-
/** Max items to batch into one LLM session (default: 5) */
|
|
98
|
-
maxBatchSize: number;
|
|
99
|
-
/** Quiet hours override — suppress non-urgent during these hours */
|
|
100
|
-
quietHoursStart?: number; // e.g. 23
|
|
101
|
-
quietHoursEnd?: number; // e.g. 8
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
const DEFAULT_SETTINGS: HeartbeatSettings = {
|
|
105
|
-
enabled: true,
|
|
106
|
-
baseIntervalMs: 5 * 60_000, // 5 minutes
|
|
107
|
-
maxIntervalMs: 30 * 60_000, // 30 minutes
|
|
108
|
-
dampingFactor: 0.5,
|
|
109
|
-
maxBatchSize: 5,
|
|
110
|
-
quietHoursStart: 23,
|
|
111
|
-
quietHoursEnd: 8,
|
|
112
|
-
};
|
|
113
|
-
|
|
114
|
-
// ─── Built-in Checks (Zero-Token) ──────────────────────
|
|
115
|
-
|
|
116
|
-
/**
|
|
117
|
-
* Check for unread emails that haven't been processed.
|
|
118
|
-
* Pure DB query — counts emails received since last check without processing flag.
|
|
119
|
-
*/
|
|
120
|
-
function createUnreadEmailCheck(): HeartbeatCheck {
|
|
121
|
-
return {
|
|
122
|
-
id: 'unread_emails',
|
|
123
|
-
name: 'Unread Emails',
|
|
124
|
-
intervalMs: 10 * 60_000, // 10 minutes
|
|
125
|
-
priority: 'high',
|
|
126
|
-
requiresClockIn: false, // emails can be urgent outside hours
|
|
127
|
-
consecutiveNoOps: 0,
|
|
128
|
-
enabled: true,
|
|
129
|
-
check: async (ctx: HeartbeatContext): Promise<HeartbeatCheckResult> => {
|
|
130
|
-
try {
|
|
131
|
-
// Count emails received but not yet handled (no session created)
|
|
132
|
-
const rows = await ctx.db.query<any>(
|
|
133
|
-
`SELECT COUNT(*) as cnt FROM agent_memory
|
|
134
|
-
WHERE agent_id = $1
|
|
135
|
-
AND category = 'processed_email'
|
|
136
|
-
AND created_at > NOW() - INTERVAL '4 hours'`,
|
|
137
|
-
[ctx.agentId]
|
|
138
|
-
);
|
|
139
|
-
const processedRecently = parseInt(rows?.[0]?.cnt || '0');
|
|
140
|
-
|
|
141
|
-
// Check for emails that came in but have no corresponding session
|
|
142
|
-
// This is a heuristic — if we see emails in the inbox that are newer
|
|
143
|
-
// than our last processed email, flag them
|
|
144
|
-
const lastProcessed = await ctx.db.query<any>(
|
|
145
|
-
`SELECT MAX(created_at) as last_at FROM agent_memory
|
|
146
|
-
WHERE agent_id = $1 AND category = 'processed_email'`,
|
|
147
|
-
[ctx.agentId]
|
|
148
|
-
);
|
|
149
|
-
const lastAt = lastProcessed?.[0]?.last_at;
|
|
150
|
-
|
|
151
|
-
// If we've processed nothing in 4 hours during work hours, that's suspicious
|
|
152
|
-
if (ctx.isWorkHours && processedRecently === 0 && ctx.hour >= 10) {
|
|
153
|
-
return {
|
|
154
|
-
needsAction: true,
|
|
155
|
-
summary: 'No emails processed in the last 4 hours during work hours. Check inbox.',
|
|
156
|
-
priority: 'medium',
|
|
157
|
-
data: { lastProcessedAt: lastAt }
|
|
158
|
-
};
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
return { needsAction: false, priority: 'low' };
|
|
162
|
-
} catch {
|
|
163
|
-
return { needsAction: false, priority: 'low' };
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
};
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
/**
|
|
170
|
-
* Check for pending calendar events in the next 2 hours.
|
|
171
|
-
* Queries agent_memory for upcoming events from last calendar sync.
|
|
172
|
-
*/
|
|
173
|
-
function createUpcomingEventsCheck(): HeartbeatCheck {
|
|
174
|
-
return {
|
|
175
|
-
id: 'upcoming_events',
|
|
176
|
-
name: 'Upcoming Calendar Events',
|
|
177
|
-
intervalMs: 15 * 60_000, // 15 minutes
|
|
178
|
-
priority: 'high',
|
|
179
|
-
requiresClockIn: false,
|
|
180
|
-
consecutiveNoOps: 0,
|
|
181
|
-
enabled: true,
|
|
182
|
-
check: async (ctx: HeartbeatContext): Promise<HeartbeatCheckResult> => {
|
|
183
|
-
try {
|
|
184
|
-
// Check for calendar events in next 2 hours from agent_memory
|
|
185
|
-
const _twoHoursFromNow = new Date(ctx.now.getTime() + 2 * 60 * 60 * 1000).toISOString();
|
|
186
|
-
const rows = await ctx.db.query<any>(
|
|
187
|
-
`SELECT content FROM agent_memory
|
|
188
|
-
WHERE agent_id = $1
|
|
189
|
-
AND category = 'context'
|
|
190
|
-
AND content LIKE '%meeting%'
|
|
191
|
-
AND created_at > NOW() - INTERVAL '24 hours'
|
|
192
|
-
ORDER BY created_at DESC LIMIT 5`,
|
|
193
|
-
[ctx.agentId]
|
|
194
|
-
);
|
|
195
|
-
|
|
196
|
-
// Simple heuristic — if we see meeting-related memories, check them
|
|
197
|
-
const upcomingMeetings = (rows || []).filter((r: any) => {
|
|
198
|
-
const content = r.content || '';
|
|
199
|
-
// Look for time patterns in the content that are within 2 hours
|
|
200
|
-
return content.includes('meeting') || content.includes('event');
|
|
201
|
-
});
|
|
202
|
-
|
|
203
|
-
if (upcomingMeetings.length > 0) {
|
|
204
|
-
return {
|
|
205
|
-
needsAction: true,
|
|
206
|
-
summary: `${upcomingMeetings.length} potential upcoming event(s). Agent should check Google Calendar.`,
|
|
207
|
-
priority: 'high',
|
|
208
|
-
data: { count: upcomingMeetings.length }
|
|
209
|
-
};
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
return { needsAction: false, priority: 'low' };
|
|
213
|
-
} catch {
|
|
214
|
-
return { needsAction: false, priority: 'low' };
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
};
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
/**
|
|
221
|
-
* Check for stale sessions (started but never completed).
|
|
222
|
-
* Pure DB — counts sessions older than threshold that are still 'active'.
|
|
223
|
-
*/
|
|
224
|
-
function createStaleSessionsCheck(): HeartbeatCheck {
|
|
225
|
-
return {
|
|
226
|
-
id: 'stale_sessions',
|
|
227
|
-
name: 'Stale Sessions',
|
|
228
|
-
intervalMs: 30 * 60_000, // 30 minutes
|
|
229
|
-
priority: 'medium',
|
|
230
|
-
requiresClockIn: true,
|
|
231
|
-
consecutiveNoOps: 0,
|
|
232
|
-
enabled: true,
|
|
233
|
-
check: async (ctx: HeartbeatContext): Promise<HeartbeatCheckResult> => {
|
|
234
|
-
try {
|
|
235
|
-
const rows = await ctx.db.query<any>(
|
|
236
|
-
`SELECT COUNT(*) as cnt FROM agent_sessions
|
|
237
|
-
WHERE agent_id = $1
|
|
238
|
-
AND status = 'active'
|
|
239
|
-
AND updated_at < NOW() - INTERVAL '2 hours'`,
|
|
240
|
-
[ctx.agentId]
|
|
241
|
-
);
|
|
242
|
-
const staleCount = parseInt(rows?.[0]?.cnt || '0');
|
|
243
|
-
|
|
244
|
-
if (staleCount > 0) {
|
|
245
|
-
return {
|
|
246
|
-
needsAction: true,
|
|
247
|
-
summary: `${staleCount} stale session(s) detected (active > 2 hours with no updates). May need cleanup.`,
|
|
248
|
-
priority: 'medium',
|
|
249
|
-
data: { staleCount }
|
|
250
|
-
};
|
|
251
|
-
}
|
|
252
|
-
return { needsAction: false, priority: 'low' };
|
|
253
|
-
} catch {
|
|
254
|
-
return { needsAction: false, priority: 'low' };
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
};
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
/**
|
|
261
|
-
* Check agent memory health — detect if memory is growing too fast or
|
|
262
|
-
* if important memories are being lost.
|
|
263
|
-
*/
|
|
264
|
-
function createMemoryHealthCheck(): HeartbeatCheck {
|
|
265
|
-
return {
|
|
266
|
-
id: 'memory_health',
|
|
267
|
-
name: 'Memory Health',
|
|
268
|
-
intervalMs: 60 * 60_000, // 1 hour
|
|
269
|
-
priority: 'low',
|
|
270
|
-
requiresClockIn: true,
|
|
271
|
-
consecutiveNoOps: 0,
|
|
272
|
-
enabled: true,
|
|
273
|
-
check: async (ctx: HeartbeatContext): Promise<HeartbeatCheckResult> => {
|
|
274
|
-
try {
|
|
275
|
-
// Count memories in last 24h
|
|
276
|
-
const rows = await ctx.db.query<any>(
|
|
277
|
-
`SELECT COUNT(*) as cnt FROM agent_memory
|
|
278
|
-
WHERE agent_id = $1 AND created_at > NOW() - INTERVAL '24 hours'`,
|
|
279
|
-
[ctx.agentId]
|
|
280
|
-
);
|
|
281
|
-
const recentCount = parseInt(rows?.[0]?.cnt || '0');
|
|
282
|
-
|
|
283
|
-
// More than 200 memories in 24h = potential flooding
|
|
284
|
-
if (recentCount > 200) {
|
|
285
|
-
return {
|
|
286
|
-
needsAction: true,
|
|
287
|
-
summary: `Memory flood detected: ${recentCount} memories in 24h (threshold: 200). Consider pruning.`,
|
|
288
|
-
priority: 'medium',
|
|
289
|
-
data: { recentCount }
|
|
290
|
-
};
|
|
291
|
-
}
|
|
292
|
-
return { needsAction: false, priority: 'low' };
|
|
293
|
-
} catch {
|
|
294
|
-
return { needsAction: false, priority: 'low' };
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
};
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
/**
|
|
301
|
-
* Check for unanswered Google Chat messages.
|
|
302
|
-
* Looks at chat messages received with no corresponding reply.
|
|
303
|
-
*/
|
|
304
|
-
function createUnansweredChatCheck(): HeartbeatCheck {
|
|
305
|
-
return {
|
|
306
|
-
id: 'unanswered_chat',
|
|
307
|
-
name: 'Unanswered Chat Messages',
|
|
308
|
-
intervalMs: 5 * 60_000, // 5 minutes
|
|
309
|
-
priority: 'high',
|
|
310
|
-
requiresClockIn: false,
|
|
311
|
-
consecutiveNoOps: 0,
|
|
312
|
-
enabled: true,
|
|
313
|
-
check: async (ctx: HeartbeatContext): Promise<HeartbeatCheckResult> => {
|
|
314
|
-
try {
|
|
315
|
-
// Check for chat sessions that were created but may not have completed
|
|
316
|
-
const rows = await ctx.db.query<any>(
|
|
317
|
-
`SELECT COUNT(*) as cnt FROM agent_sessions
|
|
318
|
-
WHERE agent_id = $1
|
|
319
|
-
AND status = 'failed'
|
|
320
|
-
AND metadata::text LIKE '%chat%'
|
|
321
|
-
AND created_at > NOW() - INTERVAL '1 hour'`,
|
|
322
|
-
[ctx.agentId]
|
|
323
|
-
);
|
|
324
|
-
const failedChats = parseInt(rows?.[0]?.cnt || '0');
|
|
325
|
-
|
|
326
|
-
if (failedChats > 0) {
|
|
327
|
-
return {
|
|
328
|
-
needsAction: true,
|
|
329
|
-
summary: `${failedChats} failed chat session(s) in the last hour. Messages may be unanswered.`,
|
|
330
|
-
priority: 'urgent',
|
|
331
|
-
data: { failedChats }
|
|
332
|
-
};
|
|
333
|
-
}
|
|
334
|
-
return { needsAction: false, priority: 'low' };
|
|
335
|
-
} catch {
|
|
336
|
-
return { needsAction: false, priority: 'low' };
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
};
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
/**
|
|
343
|
-
* Check for tasks approaching deadlines.
|
|
344
|
-
* Queries agent_memory for tasks with due dates.
|
|
345
|
-
*/
|
|
346
|
-
function createTaskDeadlineCheck(): HeartbeatCheck {
|
|
347
|
-
return {
|
|
348
|
-
id: 'task_deadlines',
|
|
349
|
-
name: 'Task Deadlines',
|
|
350
|
-
intervalMs: 60 * 60_000, // 1 hour
|
|
351
|
-
priority: 'medium',
|
|
352
|
-
requiresClockIn: true,
|
|
353
|
-
consecutiveNoOps: 0,
|
|
354
|
-
enabled: true,
|
|
355
|
-
check: async (ctx: HeartbeatContext): Promise<HeartbeatCheckResult> => {
|
|
356
|
-
try {
|
|
357
|
-
// Check for task-related memories with urgency signals
|
|
358
|
-
const rows = await ctx.db.query<any>(
|
|
359
|
-
`SELECT COUNT(*) as cnt FROM agent_memory
|
|
360
|
-
WHERE agent_id = $1
|
|
361
|
-
AND category = 'context'
|
|
362
|
-
AND importance = 'high'
|
|
363
|
-
AND content LIKE '%deadline%'
|
|
364
|
-
AND created_at > NOW() - INTERVAL '48 hours'`,
|
|
365
|
-
[ctx.agentId]
|
|
366
|
-
);
|
|
367
|
-
const urgentTasks = parseInt(rows?.[0]?.cnt || '0');
|
|
368
|
-
|
|
369
|
-
if (urgentTasks > 0) {
|
|
370
|
-
return {
|
|
371
|
-
needsAction: true,
|
|
372
|
-
summary: `${urgentTasks} task(s) with approaching deadlines. Agent should review and prioritize.`,
|
|
373
|
-
priority: 'high',
|
|
374
|
-
data: { urgentTasks }
|
|
375
|
-
};
|
|
376
|
-
}
|
|
377
|
-
return { needsAction: false, priority: 'low' };
|
|
378
|
-
} catch {
|
|
379
|
-
return { needsAction: false, priority: 'low' };
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
};
|
|
383
|
-
}
|
|
384
|
-
|
|
385
|
-
/**
|
|
386
|
-
* Check error rate — if agent has had many failed sessions recently,
|
|
387
|
-
* something may be wrong (API keys expired, service down, etc.)
|
|
388
|
-
*/
|
|
389
|
-
function createErrorRateCheck(): HeartbeatCheck {
|
|
390
|
-
return {
|
|
391
|
-
id: 'error_rate',
|
|
392
|
-
name: 'Error Rate Monitor',
|
|
393
|
-
intervalMs: 15 * 60_000, // 15 minutes
|
|
394
|
-
priority: 'high',
|
|
395
|
-
requiresClockIn: false, // errors can happen anytime
|
|
396
|
-
consecutiveNoOps: 0,
|
|
397
|
-
enabled: true,
|
|
398
|
-
check: async (ctx: HeartbeatContext): Promise<HeartbeatCheckResult> => {
|
|
399
|
-
try {
|
|
400
|
-
const totalRows = await ctx.db.query<any>(
|
|
401
|
-
`SELECT COUNT(*) as cnt FROM agent_sessions
|
|
402
|
-
WHERE agent_id = $1 AND created_at > NOW() - INTERVAL '1 hour'`,
|
|
403
|
-
[ctx.agentId]
|
|
404
|
-
);
|
|
405
|
-
const failedRows = await ctx.db.query<any>(
|
|
406
|
-
`SELECT COUNT(*) as cnt FROM agent_sessions
|
|
407
|
-
WHERE agent_id = $1 AND status = 'failed' AND created_at > NOW() - INTERVAL '1 hour'`,
|
|
408
|
-
[ctx.agentId]
|
|
409
|
-
);
|
|
410
|
-
|
|
411
|
-
const total = parseInt(totalRows?.[0]?.cnt || '0');
|
|
412
|
-
const failed = parseInt(failedRows?.[0]?.cnt || '0');
|
|
413
|
-
|
|
414
|
-
// Error rate > 50% with at least 3 sessions = problem
|
|
415
|
-
if (total >= 3 && (failed / total) > 0.5) {
|
|
416
|
-
return {
|
|
417
|
-
needsAction: true,
|
|
418
|
-
summary: `High error rate: ${failed}/${total} sessions failed in the last hour (${Math.round(failed/total*100)}%). Possible infrastructure issue.`,
|
|
419
|
-
priority: 'urgent',
|
|
420
|
-
data: { total, failed, rate: failed / total }
|
|
421
|
-
};
|
|
422
|
-
}
|
|
423
|
-
return { needsAction: false, priority: 'low' };
|
|
424
|
-
} catch {
|
|
425
|
-
return { needsAction: false, priority: 'low' };
|
|
426
|
-
}
|
|
427
|
-
}
|
|
428
|
-
};
|
|
429
|
-
}
|
|
430
|
-
|
|
431
|
-
// ─── Heartbeat Manager ──────────────────────────────────
|
|
432
|
-
|
|
433
|
-
export class AgentHeartbeatManager {
|
|
434
|
-
private config: HeartbeatConfig;
|
|
435
|
-
private settings: HeartbeatSettings;
|
|
436
|
-
private checks: Map<string, HeartbeatCheck> = new Map();
|
|
437
|
-
private tickTimer: NodeJS.Timeout | null = null;
|
|
438
|
-
private globalConsecutiveNoOps: number = 0;
|
|
439
|
-
private lastActionTimestamp: number = 0;
|
|
440
|
-
private stats = {
|
|
441
|
-
totalTicks: 0,
|
|
442
|
-
totalChecksRun: 0,
|
|
443
|
-
totalActionsTriggered: 0,
|
|
444
|
-
totalTokensSaved: 0, // estimated tokens NOT spent due to no-op ticks
|
|
445
|
-
startedAt: Date.now(),
|
|
446
|
-
};
|
|
447
|
-
|
|
448
|
-
constructor(config: HeartbeatConfig, settings?: Partial<HeartbeatSettings>) {
|
|
449
|
-
this.config = config;
|
|
450
|
-
this.settings = { ...DEFAULT_SETTINGS, ...settings };
|
|
451
|
-
|
|
452
|
-
// Register built-in checks
|
|
453
|
-
this.registerCheck(createUnreadEmailCheck());
|
|
454
|
-
this.registerCheck(createUpcomingEventsCheck());
|
|
455
|
-
this.registerCheck(createStaleSessionsCheck());
|
|
456
|
-
this.registerCheck(createMemoryHealthCheck());
|
|
457
|
-
this.registerCheck(createUnansweredChatCheck());
|
|
458
|
-
this.registerCheck(createTaskDeadlineCheck());
|
|
459
|
-
this.registerCheck(createErrorRateCheck());
|
|
460
|
-
|
|
461
|
-
// Apply per-check enable/disable overrides
|
|
462
|
-
if (config.enabledChecks) {
|
|
463
|
-
for (const [id, enabled] of Object.entries(config.enabledChecks)) {
|
|
464
|
-
const check = this.checks.get(id);
|
|
465
|
-
if (check) check.enabled = enabled;
|
|
466
|
-
}
|
|
467
|
-
}
|
|
468
|
-
}
|
|
469
|
-
|
|
470
|
-
registerCheck(check: HeartbeatCheck): void {
|
|
471
|
-
this.checks.set(check.id, check);
|
|
472
|
-
}
|
|
473
|
-
|
|
474
|
-
async start(): Promise<void> {
|
|
475
|
-
if (!this.settings.enabled) {
|
|
476
|
-
console.log('[heartbeat] Disabled, skipping');
|
|
477
|
-
return;
|
|
478
|
-
}
|
|
479
|
-
|
|
480
|
-
console.log(`[heartbeat] Starting with ${this.checks.size} checks, base interval ${this.settings.baseIntervalMs / 1000}s`);
|
|
481
|
-
|
|
482
|
-
// Initial tick after 60s (let other systems boot first)
|
|
483
|
-
setTimeout(() => this.tick(), 60_000);
|
|
484
|
-
|
|
485
|
-
// Schedule adaptive ticking
|
|
486
|
-
this.scheduleNextTick();
|
|
487
|
-
}
|
|
488
|
-
|
|
489
|
-
stop(): void {
|
|
490
|
-
if (this.tickTimer) {
|
|
491
|
-
clearTimeout(this.tickTimer);
|
|
492
|
-
this.tickTimer = null;
|
|
493
|
-
}
|
|
494
|
-
console.log(`[heartbeat] Stopped. Stats: ${this.stats.totalTicks} ticks, ${this.stats.totalChecksRun} checks, ${this.stats.totalActionsTriggered} actions, ~${this.stats.totalTokensSaved} tokens saved`);
|
|
495
|
-
}
|
|
496
|
-
|
|
497
|
-
getStats() {
|
|
498
|
-
return {
|
|
499
|
-
...this.stats,
|
|
500
|
-
uptimeMs: Date.now() - this.stats.startedAt,
|
|
501
|
-
currentIntervalMs: this.calculateInterval(),
|
|
502
|
-
globalConsecutiveNoOps: this.globalConsecutiveNoOps,
|
|
503
|
-
checks: Array.from(this.checks.values()).map(c => ({
|
|
504
|
-
id: c.id,
|
|
505
|
-
name: c.name,
|
|
506
|
-
enabled: c.enabled,
|
|
507
|
-
lastRunAt: c.lastRunAt,
|
|
508
|
-
lastActionAt: c.lastActionAt,
|
|
509
|
-
consecutiveNoOps: c.consecutiveNoOps,
|
|
510
|
-
})),
|
|
511
|
-
};
|
|
512
|
-
}
|
|
513
|
-
|
|
514
|
-
// ─── Core Tick Logic ────────────────────────────────
|
|
515
|
-
|
|
516
|
-
private async tick(): Promise<void> {
|
|
517
|
-
this.stats.totalTicks++;
|
|
518
|
-
const now = new Date();
|
|
519
|
-
const tz = this.config.timezone || 'UTC';
|
|
520
|
-
const localTime = new Date(now.toLocaleString('en-US', { timeZone: tz }));
|
|
521
|
-
const hour = localTime.getHours();
|
|
522
|
-
const minute = localTime.getMinutes();
|
|
523
|
-
const dayOfWeek = localTime.getDay();
|
|
524
|
-
|
|
525
|
-
// Work hours check
|
|
526
|
-
const isWorkHours = this.isWithinWorkHours(hour, minute, dayOfWeek);
|
|
527
|
-
const isQuietHours = this.isQuietHours(hour);
|
|
528
|
-
const isClockedIn = this.config.isClockedIn();
|
|
529
|
-
|
|
530
|
-
// Build context (shared across all checks — avoids redundant computation)
|
|
531
|
-
const ctx: HeartbeatContext = {
|
|
532
|
-
agentId: this.config.agentId,
|
|
533
|
-
orgId: this.config.orgId,
|
|
534
|
-
agentName: this.config.agentName,
|
|
535
|
-
role: this.config.role,
|
|
536
|
-
managerEmail: this.config.managerEmail,
|
|
537
|
-
timezone: tz,
|
|
538
|
-
db: this.config.db,
|
|
539
|
-
now,
|
|
540
|
-
localTime,
|
|
541
|
-
hour,
|
|
542
|
-
minute,
|
|
543
|
-
dayOfWeek,
|
|
544
|
-
isWorkHours,
|
|
545
|
-
isClockedIn,
|
|
546
|
-
};
|
|
547
|
-
|
|
548
|
-
// Run eligible checks
|
|
549
|
-
const actionableItems: { check: HeartbeatCheck; result: HeartbeatCheckResult }[] = [];
|
|
550
|
-
|
|
551
|
-
for (const check of this.checks.values()) {
|
|
552
|
-
if (!check.enabled) continue;
|
|
553
|
-
|
|
554
|
-
// Skip if requires clock-in and agent isn't clocked in
|
|
555
|
-
if (check.requiresClockIn && !isClockedIn) continue;
|
|
556
|
-
|
|
557
|
-
// Skip non-urgent checks during quiet hours
|
|
558
|
-
if (isQuietHours && check.priority !== 'high') continue;
|
|
559
|
-
|
|
560
|
-
// Adaptive interval per check: check.intervalMs * (1 + damping * noOps)
|
|
561
|
-
const adaptiveInterval = Math.min(
|
|
562
|
-
check.intervalMs * (1 + this.settings.dampingFactor * check.consecutiveNoOps),
|
|
563
|
-
this.settings.maxIntervalMs
|
|
564
|
-
);
|
|
565
|
-
const timeSinceLastRun = now.getTime() - (check.lastRunAt || 0);
|
|
566
|
-
if (timeSinceLastRun < adaptiveInterval) continue;
|
|
567
|
-
|
|
568
|
-
// Run the check (pure DB/math — no tokens)
|
|
569
|
-
this.stats.totalChecksRun++;
|
|
570
|
-
check.lastRunAt = now.getTime();
|
|
571
|
-
|
|
572
|
-
try {
|
|
573
|
-
const result = await check.check(ctx);
|
|
574
|
-
|
|
575
|
-
if (result.needsAction) {
|
|
576
|
-
actionableItems.push({ check, result });
|
|
577
|
-
check.consecutiveNoOps = 0;
|
|
578
|
-
check.lastActionAt = now.getTime();
|
|
579
|
-
} else {
|
|
580
|
-
check.consecutiveNoOps++;
|
|
581
|
-
// Each no-op tick saves ~500 tokens (estimated cost of an LLM check session)
|
|
582
|
-
this.stats.totalTokensSaved += 500;
|
|
583
|
-
}
|
|
584
|
-
} catch (err: any) {
|
|
585
|
-
console.warn(`[heartbeat] Check ${check.id} error: ${err.message}`);
|
|
586
|
-
check.consecutiveNoOps++;
|
|
587
|
-
}
|
|
588
|
-
}
|
|
589
|
-
|
|
590
|
-
// Process actionable items
|
|
591
|
-
if (actionableItems.length > 0) {
|
|
592
|
-
this.globalConsecutiveNoOps = 0;
|
|
593
|
-
this.lastActionTimestamp = now.getTime();
|
|
594
|
-
this.stats.totalActionsTriggered++;
|
|
595
|
-
|
|
596
|
-
// Sort by priority (urgent first)
|
|
597
|
-
const priorityOrder = { urgent: 0, high: 1, medium: 2, low: 3 };
|
|
598
|
-
actionableItems.sort((a, b) => priorityOrder[a.result.priority] - priorityOrder[b.result.priority]);
|
|
599
|
-
|
|
600
|
-
// Batch items into one LLM session (up to maxBatchSize)
|
|
601
|
-
const batch = actionableItems.slice(0, this.settings.maxBatchSize);
|
|
602
|
-
await this.dispatchBatch(batch, ctx);
|
|
603
|
-
} else {
|
|
604
|
-
this.globalConsecutiveNoOps++;
|
|
605
|
-
}
|
|
606
|
-
|
|
607
|
-
// Schedule next tick
|
|
608
|
-
this.scheduleNextTick();
|
|
609
|
-
}
|
|
610
|
-
|
|
611
|
-
/**
|
|
612
|
-
* Calculate next tick interval using damped oscillator model:
|
|
613
|
-
* interval = base * (1 + damping * consecutiveNoOps)
|
|
614
|
-
*
|
|
615
|
-
* With fibonacci-like acceleration:
|
|
616
|
-
* After 0 no-ops: 5min (base)
|
|
617
|
-
* After 1 no-op: 7.5min
|
|
618
|
-
* After 2 no-ops: 10min
|
|
619
|
-
* After 4 no-ops: 15min
|
|
620
|
-
* After 8 no-ops: 25min
|
|
621
|
-
* After 10 no-ops: 30min (max)
|
|
622
|
-
*
|
|
623
|
-
* Resets to base immediately when action is detected.
|
|
624
|
-
*/
|
|
625
|
-
private calculateInterval(): number {
|
|
626
|
-
const base = this.settings.baseIntervalMs;
|
|
627
|
-
const max = this.settings.maxIntervalMs;
|
|
628
|
-
const damping = this.settings.dampingFactor;
|
|
629
|
-
const noOps = this.globalConsecutiveNoOps;
|
|
630
|
-
|
|
631
|
-
return Math.min(base * (1 + damping * noOps), max);
|
|
632
|
-
}
|
|
633
|
-
|
|
634
|
-
private scheduleNextTick(): void {
|
|
635
|
-
if (this.tickTimer) clearTimeout(this.tickTimer);
|
|
636
|
-
const interval = this.calculateInterval();
|
|
637
|
-
this.tickTimer = setTimeout(() => this.tick(), interval);
|
|
638
|
-
this.tickTimer.unref(); // Don't keep process alive just for heartbeat
|
|
639
|
-
}
|
|
640
|
-
|
|
641
|
-
private isWithinWorkHours(hour: number, minute: number, dayOfWeek: number): boolean {
|
|
642
|
-
const schedule = this.config.schedule;
|
|
643
|
-
if (!schedule) return true; // No schedule = always work hours
|
|
644
|
-
|
|
645
|
-
const isWorkday = schedule.days.includes(dayOfWeek);
|
|
646
|
-
const timeStr = `${String(hour).padStart(2, '0')}:${String(minute).padStart(2, '0')}`;
|
|
647
|
-
const isWithinHours = timeStr >= schedule.start && timeStr < schedule.end;
|
|
648
|
-
|
|
649
|
-
return isWorkday && isWithinHours;
|
|
650
|
-
}
|
|
651
|
-
|
|
652
|
-
private isQuietHours(hour: number): boolean {
|
|
653
|
-
const start = this.settings.quietHoursStart;
|
|
654
|
-
const end = this.settings.quietHoursEnd;
|
|
655
|
-
if (start === undefined || end === undefined) return false;
|
|
656
|
-
|
|
657
|
-
// Handle overnight range (e.g. 23:00 - 08:00)
|
|
658
|
-
if (start > end) {
|
|
659
|
-
return hour >= start || hour < end;
|
|
660
|
-
}
|
|
661
|
-
return hour >= start && hour < end;
|
|
662
|
-
}
|
|
663
|
-
|
|
664
|
-
/**
|
|
665
|
-
* Dispatch a batch of actionable items to the agent via one LLM session.
|
|
666
|
-
* This is the ONLY place tokens are spent.
|
|
667
|
-
*/
|
|
668
|
-
private async dispatchBatch(
|
|
669
|
-
items: { check: HeartbeatCheck; result: HeartbeatCheckResult }[],
|
|
670
|
-
ctx: HeartbeatContext
|
|
671
|
-
): Promise<void> {
|
|
672
|
-
if (!this.config.runtime) {
|
|
673
|
-
console.warn('[heartbeat] No runtime — cannot dispatch actions');
|
|
674
|
-
return;
|
|
675
|
-
}
|
|
676
|
-
|
|
677
|
-
// Respect guardrails — don't waste LLM tokens if agent is paused/off-duty
|
|
678
|
-
try {
|
|
679
|
-
const { guardrails } = await import('./routes.js');
|
|
680
|
-
const status = await guardrails.getStatus(ctx.agentId);
|
|
681
|
-
if (status.paused || status.offDuty) {
|
|
682
|
-
console.log(`[heartbeat] Skipping action dispatch — agent is ${status.offDuty ? 'off duty' : 'paused'}`);
|
|
683
|
-
return;
|
|
684
|
-
}
|
|
685
|
-
} catch { /* non-blocking */ }
|
|
686
|
-
|
|
687
|
-
const summaries = items.map((item, i) =>
|
|
688
|
-
`${i + 1}. [${item.result.priority.toUpperCase()}] ${item.check.name}: ${item.result.summary}`
|
|
689
|
-
).join('\n');
|
|
690
|
-
|
|
691
|
-
const prompt = `HEARTBEAT ALERT — The following ${items.length} item(s) need your attention:
|
|
692
|
-
|
|
693
|
-
${summaries}
|
|
694
|
-
|
|
695
|
-
For each item, take the appropriate action:
|
|
696
|
-
- For unread emails: Check your inbox with gmail_search and respond to any urgent ones.
|
|
697
|
-
- For upcoming events: Check google_calendar_list for the next 2 hours and prepare.
|
|
698
|
-
- For stale sessions: Review and close any stuck sessions.
|
|
699
|
-
- For unanswered chats: Check Google Chat and respond.
|
|
700
|
-
- For error rate issues: Investigate recent failures and notify your manager if critical.
|
|
701
|
-
- For task deadlines: Review google_tasks_list and prioritize.
|
|
702
|
-
- For memory health: Consider pruning old or low-importance memories.
|
|
703
|
-
|
|
704
|
-
Be efficient — handle what you can and note what needs human intervention.
|
|
705
|
-
If something needs your manager's attention, email ${ctx.managerEmail || 'your manager'}.`;
|
|
706
|
-
|
|
707
|
-
const systemPrompt = `You are ${ctx.agentName}, a ${ctx.role}. This is an automated heartbeat check — items flagged as needing attention. Handle them efficiently. Don't create unnecessary work — only act on what's genuinely important.`;
|
|
708
|
-
|
|
709
|
-
try {
|
|
710
|
-
const session = await this.config.runtime.spawnSession({
|
|
711
|
-
agentId: ctx.agentId,
|
|
712
|
-
message: prompt,
|
|
713
|
-
systemPrompt,
|
|
714
|
-
});
|
|
715
|
-
console.log(`[heartbeat] ✅ Action session ${session.id} dispatched (${items.length} items: ${items.map(i => i.check.id).join(', ')})`);
|
|
716
|
-
} catch (err: any) {
|
|
717
|
-
console.error(`[heartbeat] Failed to dispatch action: ${err.message}`);
|
|
718
|
-
}
|
|
719
|
-
}
|
|
720
|
-
}
|