@agent-native/core 0.7.14 → 0.7.15
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/README.md +56 -6
- package/dist/a2a/handlers.d.ts.map +1 -1
- package/dist/a2a/handlers.js +149 -24
- package/dist/a2a/handlers.js.map +1 -1
- package/dist/a2a/server.d.ts.map +1 -1
- package/dist/a2a/server.js +166 -51
- package/dist/a2a/server.js.map +1 -1
- package/dist/a2a/task-store.d.ts +10 -1
- package/dist/a2a/task-store.d.ts.map +1 -1
- package/dist/a2a/task-store.js +36 -2
- package/dist/a2a/task-store.js.map +1 -1
- package/dist/agent/default-model.d.ts +21 -0
- package/dist/agent/default-model.d.ts.map +1 -0
- package/dist/agent/default-model.js +21 -0
- package/dist/agent/default-model.js.map +1 -0
- package/dist/agent/engine/ai-sdk-engine.d.ts.map +1 -1
- package/dist/agent/engine/ai-sdk-engine.js +7 -4
- package/dist/agent/engine/ai-sdk-engine.js.map +1 -1
- package/dist/agent/engine/anthropic-engine.d.ts +1 -1
- package/dist/agent/engine/anthropic-engine.d.ts.map +1 -1
- package/dist/agent/engine/anthropic-engine.js +10 -4
- package/dist/agent/engine/anthropic-engine.js.map +1 -1
- package/dist/agent/engine/builder-engine.d.ts.map +1 -1
- package/dist/agent/engine/builder-engine.js +4 -1
- package/dist/agent/engine/builder-engine.js.map +1 -1
- package/dist/agent/engine/builtin.js +1 -1
- package/dist/agent/engine/builtin.js.map +1 -1
- package/dist/agent/engine/registry.d.ts +27 -7
- package/dist/agent/engine/registry.d.ts.map +1 -1
- package/dist/agent/engine/registry.js +101 -20
- package/dist/agent/engine/registry.js.map +1 -1
- package/dist/agent/index.d.ts +1 -0
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +1 -0
- package/dist/agent/index.js.map +1 -1
- package/dist/agent/production-agent.d.ts +25 -3
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +227 -36
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/application-state/handlers.d.ts.map +1 -1
- package/dist/application-state/handlers.js +10 -6
- package/dist/application-state/handlers.js.map +1 -1
- package/dist/application-state/script-helpers.d.ts +1 -1
- package/dist/application-state/script-helpers.d.ts.map +1 -1
- package/dist/application-state/script-helpers.js +12 -8
- package/dist/application-state/script-helpers.js.map +1 -1
- package/dist/application-state/store.d.ts.map +1 -1
- package/dist/application-state/store.js +19 -10
- package/dist/application-state/store.js.map +1 -1
- package/dist/chat-threads/store.d.ts.map +1 -1
- package/dist/chat-threads/store.js +4 -1
- package/dist/chat-threads/store.js.map +1 -1
- package/dist/cli/create.d.ts.map +1 -1
- package/dist/cli/create.js +79 -13
- package/dist/cli/create.js.map +1 -1
- package/dist/cli/index.js +97 -39
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/templates-meta.d.ts +4 -0
- package/dist/cli/templates-meta.d.ts.map +1 -1
- package/dist/cli/templates-meta.js +56 -12
- package/dist/cli/templates-meta.js.map +1 -1
- package/dist/cli/workspacify.d.ts +2 -0
- package/dist/cli/workspacify.d.ts.map +1 -1
- package/dist/cli/workspacify.js +5 -4
- package/dist/cli/workspacify.js.map +1 -1
- package/dist/client/AgentPanel.d.ts +5 -2
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +61 -23
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/AgentTaskCard.d.ts.map +1 -1
- package/dist/client/AgentTaskCard.js +3 -2
- package/dist/client/AgentTaskCard.js.map +1 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +79 -16
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/ConnectBuilderCard.d.ts.map +1 -1
- package/dist/client/ConnectBuilderCard.js +2 -1
- package/dist/client/ConnectBuilderCard.js.map +1 -1
- package/dist/client/DefaultSpinner.d.ts +1 -1
- package/dist/client/DefaultSpinner.d.ts.map +1 -1
- package/dist/client/DefaultSpinner.js +2 -9
- package/dist/client/DefaultSpinner.js.map +1 -1
- package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
- package/dist/client/MultiTabAssistantChat.js +20 -19
- package/dist/client/MultiTabAssistantChat.js.map +1 -1
- package/dist/client/agent-chat-adapter.d.ts.map +1 -1
- package/dist/client/agent-chat-adapter.js +2 -1
- package/dist/client/agent-chat-adapter.js.map +1 -1
- package/dist/client/agent-chat.d.ts.map +1 -1
- package/dist/client/agent-chat.js +3 -1
- package/dist/client/agent-chat.js.map +1 -1
- package/dist/client/analytics.d.ts.map +1 -1
- package/dist/client/analytics.js +70 -1
- package/dist/client/analytics.js.map +1 -1
- package/dist/client/api-path.d.ts +5 -0
- package/dist/client/api-path.d.ts.map +1 -0
- package/dist/client/api-path.js +48 -0
- package/dist/client/api-path.js.map +1 -0
- package/dist/client/components/ApiKeySettings.d.ts.map +1 -1
- package/dist/client/components/ApiKeySettings.js +3 -2
- package/dist/client/components/ApiKeySettings.js.map +1 -1
- package/dist/client/components/CodeRequiredDialog.d.ts.map +1 -1
- package/dist/client/components/CodeRequiredDialog.js +3 -2
- package/dist/client/components/CodeRequiredDialog.js.map +1 -1
- package/dist/client/composer/TiptapComposer.d.ts +3 -1
- package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
- package/dist/client/composer/TiptapComposer.js +9 -8
- package/dist/client/composer/TiptapComposer.js.map +1 -1
- package/dist/client/composer/draft-key.d.ts +2 -0
- package/dist/client/composer/draft-key.d.ts.map +1 -0
- package/dist/client/composer/draft-key.js +8 -0
- package/dist/client/composer/draft-key.js.map +1 -0
- package/dist/client/composer/use-file-search.d.ts.map +1 -1
- package/dist/client/composer/use-file-search.js +2 -1
- package/dist/client/composer/use-file-search.js.map +1 -1
- package/dist/client/composer/use-mention-search.d.ts.map +1 -1
- package/dist/client/composer/use-mention-search.js +2 -1
- package/dist/client/composer/use-mention-search.js.map +1 -1
- package/dist/client/composer/use-skills.d.ts.map +1 -1
- package/dist/client/composer/use-skills.js +2 -1
- package/dist/client/composer/use-skills.js.map +1 -1
- package/dist/client/composer/useVoiceDictation.d.ts +1 -1
- package/dist/client/composer/useVoiceDictation.d.ts.map +1 -1
- package/dist/client/composer/useVoiceDictation.js +16 -8
- package/dist/client/composer/useVoiceDictation.js.map +1 -1
- package/dist/client/dev-mode.d.ts +14 -0
- package/dist/client/dev-mode.d.ts.map +1 -0
- package/dist/client/dev-mode.js +14 -0
- package/dist/client/dev-mode.js.map +1 -0
- package/dist/client/dev-overlay/DevOverlay.d.ts +26 -0
- package/dist/client/dev-overlay/DevOverlay.d.ts.map +1 -0
- package/dist/client/dev-overlay/DevOverlay.js +315 -0
- package/dist/client/dev-overlay/DevOverlay.js.map +1 -0
- package/dist/client/dev-overlay/builtins.d.ts +6 -0
- package/dist/client/dev-overlay/builtins.d.ts.map +1 -0
- package/dist/client/dev-overlay/builtins.js +35 -0
- package/dist/client/dev-overlay/builtins.js.map +1 -0
- package/dist/client/dev-overlay/index.d.ts +6 -0
- package/dist/client/dev-overlay/index.d.ts.map +1 -0
- package/dist/client/dev-overlay/index.js +5 -0
- package/dist/client/dev-overlay/index.js.map +1 -0
- package/dist/client/dev-overlay/registry.d.ts +13 -0
- package/dist/client/dev-overlay/registry.d.ts.map +1 -0
- package/dist/client/dev-overlay/registry.js +63 -0
- package/dist/client/dev-overlay/registry.js.map +1 -0
- package/dist/client/dev-overlay/types.d.ts +56 -0
- package/dist/client/dev-overlay/types.d.ts.map +1 -0
- package/dist/client/dev-overlay/types.js +9 -0
- package/dist/client/dev-overlay/types.js.map +1 -0
- package/dist/client/dev-overlay/use-dev-option.d.ts +12 -0
- package/dist/client/dev-overlay/use-dev-option.d.ts.map +1 -0
- package/dist/client/dev-overlay/use-dev-option.js +73 -0
- package/dist/client/dev-overlay/use-dev-option.js.map +1 -0
- package/dist/client/dev-overlay/use-dev-overlay-shortcut.d.ts +6 -0
- package/dist/client/dev-overlay/use-dev-overlay-shortcut.d.ts.map +1 -0
- package/dist/client/dev-overlay/use-dev-overlay-shortcut.js +29 -0
- package/dist/client/dev-overlay/use-dev-overlay-shortcut.js.map +1 -0
- package/dist/client/frame.d.ts +1 -0
- package/dist/client/frame.d.ts.map +1 -1
- package/dist/client/frame.js +32 -11
- package/dist/client/frame.js.map +1 -1
- package/dist/client/index.d.ts +4 -0
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +4 -0
- package/dist/client/index.js.map +1 -1
- package/dist/client/integrations/IntegrationCard.d.ts.map +1 -1
- package/dist/client/integrations/IntegrationCard.js +3 -2
- package/dist/client/integrations/IntegrationCard.js.map +1 -1
- package/dist/client/integrations/IntegrationsPanel.d.ts.map +1 -1
- package/dist/client/integrations/IntegrationsPanel.js +3 -2
- package/dist/client/integrations/IntegrationsPanel.js.map +1 -1
- package/dist/client/integrations/useIntegrationStatus.d.ts.map +1 -1
- package/dist/client/integrations/useIntegrationStatus.js +2 -1
- package/dist/client/integrations/useIntegrationStatus.js.map +1 -1
- package/dist/client/notifications/NotificationsBell.d.ts.map +1 -1
- package/dist/client/notifications/NotificationsBell.js +26 -8
- package/dist/client/notifications/NotificationsBell.js.map +1 -1
- package/dist/client/observability/ThumbsFeedback.d.ts.map +1 -1
- package/dist/client/observability/ThumbsFeedback.js +2 -1
- package/dist/client/observability/ThumbsFeedback.js.map +1 -1
- package/dist/client/observability/useObservability.d.ts.map +1 -1
- package/dist/client/observability/useObservability.js +2 -1
- package/dist/client/observability/useObservability.js.map +1 -1
- package/dist/client/onboarding/OnboardingPanel.d.ts +0 -7
- package/dist/client/onboarding/OnboardingPanel.d.ts.map +1 -1
- package/dist/client/onboarding/OnboardingPanel.js +20 -10
- package/dist/client/onboarding/OnboardingPanel.js.map +1 -1
- package/dist/client/onboarding/index.d.ts +1 -0
- package/dist/client/onboarding/index.d.ts.map +1 -1
- package/dist/client/onboarding/index.js +1 -0
- package/dist/client/onboarding/index.js.map +1 -1
- package/dist/client/onboarding/use-onboarding.d.ts +1 -7
- package/dist/client/onboarding/use-onboarding.d.ts.map +1 -1
- package/dist/client/onboarding/use-onboarding.js +27 -13
- package/dist/client/onboarding/use-onboarding.js.map +1 -1
- package/dist/client/onboarding/use-preview-mode.d.ts +10 -0
- package/dist/client/onboarding/use-preview-mode.d.ts.map +1 -0
- package/dist/client/onboarding/use-preview-mode.js +35 -0
- package/dist/client/onboarding/use-preview-mode.js.map +1 -0
- package/dist/client/org/OrgSwitcher.d.ts.map +1 -1
- package/dist/client/org/OrgSwitcher.js +2 -1
- package/dist/client/org/OrgSwitcher.js.map +1 -1
- package/dist/client/org/TeamPage.d.ts.map +1 -1
- package/dist/client/org/TeamPage.js +7 -5
- package/dist/client/org/TeamPage.js.map +1 -1
- package/dist/client/org/hooks.d.ts.map +1 -1
- package/dist/client/org/hooks.js +2 -1
- package/dist/client/org/hooks.js.map +1 -1
- package/dist/client/progress/RunsTray.d.ts.map +1 -1
- package/dist/client/progress/RunsTray.js +2 -1
- package/dist/client/progress/RunsTray.js.map +1 -1
- package/dist/client/resources/McpServerDetail.d.ts +0 -8
- package/dist/client/resources/McpServerDetail.d.ts.map +1 -1
- package/dist/client/resources/McpServerDetail.js +6 -1
- package/dist/client/resources/McpServerDetail.js.map +1 -1
- package/dist/client/resources/ResourceEditor.d.ts.map +1 -1
- package/dist/client/resources/ResourceEditor.js +2 -1
- package/dist/client/resources/ResourceEditor.js.map +1 -1
- package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
- package/dist/client/resources/ResourcesPanel.js +2 -1
- package/dist/client/resources/ResourcesPanel.js.map +1 -1
- package/dist/client/resources/use-mcp-servers.d.ts.map +1 -1
- package/dist/client/resources/use-mcp-servers.js +7 -2
- package/dist/client/resources/use-mcp-servers.js.map +1 -1
- package/dist/client/resources/use-resources.d.ts.map +1 -1
- package/dist/client/resources/use-resources.js +9 -7
- package/dist/client/resources/use-resources.js.map +1 -1
- package/dist/client/settings/AgentsSection.d.ts.map +1 -1
- package/dist/client/settings/AgentsSection.js +7 -5
- package/dist/client/settings/AgentsSection.js.map +1 -1
- package/dist/client/settings/AutomationsSection.d.ts.map +1 -1
- package/dist/client/settings/AutomationsSection.js +9 -5
- package/dist/client/settings/AutomationsSection.js.map +1 -1
- package/dist/client/settings/BackgroundAgentSection.d.ts.map +1 -1
- package/dist/client/settings/BackgroundAgentSection.js +2 -1
- package/dist/client/settings/BackgroundAgentSection.js.map +1 -1
- package/dist/client/settings/SecretsSection.d.ts.map +1 -1
- package/dist/client/settings/SecretsSection.js +12 -4
- package/dist/client/settings/SecretsSection.js.map +1 -1
- package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
- package/dist/client/settings/SettingsPanel.js +15 -23
- package/dist/client/settings/SettingsPanel.js.map +1 -1
- package/dist/client/settings/UsageSection.d.ts.map +1 -1
- package/dist/client/settings/UsageSection.js +2 -1
- package/dist/client/settings/UsageSection.js.map +1 -1
- package/dist/client/settings/VoiceTranscriptionSection.d.ts +2 -4
- package/dist/client/settings/VoiceTranscriptionSection.d.ts.map +1 -1
- package/dist/client/settings/VoiceTranscriptionSection.js +66 -23
- package/dist/client/settings/VoiceTranscriptionSection.js.map +1 -1
- package/dist/client/settings/useBuilderStatus.d.ts +9 -0
- package/dist/client/settings/useBuilderStatus.d.ts.map +1 -1
- package/dist/client/settings/useBuilderStatus.js +31 -3
- package/dist/client/settings/useBuilderStatus.js.map +1 -1
- package/dist/client/sharing/ShareButton.d.ts.map +1 -1
- package/dist/client/sharing/ShareButton.js +7 -2
- package/dist/client/sharing/ShareButton.js.map +1 -1
- package/dist/client/sharing/ShareDialog.d.ts.map +1 -1
- package/dist/client/sharing/ShareDialog.js +4 -3
- package/dist/client/sharing/ShareDialog.js.map +1 -1
- package/dist/client/terminal/AgentTerminal.d.ts +1 -0
- package/dist/client/terminal/AgentTerminal.d.ts.map +1 -1
- package/dist/client/terminal/AgentTerminal.js +12 -8
- package/dist/client/terminal/AgentTerminal.js.map +1 -1
- package/dist/client/tools/EmbeddedTool.d.ts +20 -0
- package/dist/client/tools/EmbeddedTool.d.ts.map +1 -0
- package/dist/client/tools/EmbeddedTool.js +113 -0
- package/dist/client/tools/EmbeddedTool.js.map +1 -0
- package/dist/client/tools/ExtensionSlot.d.ts +27 -0
- package/dist/client/tools/ExtensionSlot.d.ts.map +1 -0
- package/dist/client/tools/ExtensionSlot.js +96 -0
- package/dist/client/tools/ExtensionSlot.js.map +1 -0
- package/dist/client/tools/ToolEditor.d.ts.map +1 -1
- package/dist/client/tools/ToolEditor.js +5 -4
- package/dist/client/tools/ToolEditor.js.map +1 -1
- package/dist/client/tools/ToolViewer.d.ts.map +1 -1
- package/dist/client/tools/ToolViewer.js +10 -44
- package/dist/client/tools/ToolViewer.js.map +1 -1
- package/dist/client/tools/ToolViewerPage.d.ts.map +1 -1
- package/dist/client/tools/ToolViewerPage.js +2 -1
- package/dist/client/tools/ToolViewerPage.js.map +1 -1
- package/dist/client/tools/ToolsListPage.d.ts.map +1 -1
- package/dist/client/tools/ToolsListPage.js +3 -2
- package/dist/client/tools/ToolsListPage.js.map +1 -1
- package/dist/client/tools/ToolsSidebarSection.d.ts.map +1 -1
- package/dist/client/tools/ToolsSidebarSection.js +4 -3
- package/dist/client/tools/ToolsSidebarSection.js.map +1 -1
- package/dist/client/tools/iframe-bridge.d.ts +16 -0
- package/dist/client/tools/iframe-bridge.d.ts.map +1 -0
- package/dist/client/tools/iframe-bridge.js +118 -0
- package/dist/client/tools/iframe-bridge.js.map +1 -0
- package/dist/client/tools/index.d.ts +2 -0
- package/dist/client/tools/index.d.ts.map +1 -1
- package/dist/client/tools/index.js +2 -0
- package/dist/client/tools/index.js.map +1 -1
- package/dist/client/use-action.d.ts.map +1 -1
- package/dist/client/use-action.js +2 -1
- package/dist/client/use-action.js.map +1 -1
- package/dist/client/use-avatar.d.ts.map +1 -1
- package/dist/client/use-avatar.js +3 -2
- package/dist/client/use-avatar.js.map +1 -1
- package/dist/client/use-builder-enabled.d.ts.map +1 -1
- package/dist/client/use-builder-enabled.js +2 -1
- package/dist/client/use-builder-enabled.js.map +1 -1
- package/dist/client/use-chat-threads.d.ts.map +1 -1
- package/dist/client/use-chat-threads.js +2 -1
- package/dist/client/use-chat-threads.js.map +1 -1
- package/dist/client/use-db-sync.d.ts.map +1 -1
- package/dist/client/use-db-sync.js +3 -2
- package/dist/client/use-db-sync.js.map +1 -1
- package/dist/client/use-dev-mode.d.ts.map +1 -1
- package/dist/client/use-dev-mode.js +2 -1
- package/dist/client/use-dev-mode.js.map +1 -1
- package/dist/client/use-send-to-agent-chat.d.ts.map +1 -1
- package/dist/client/use-send-to-agent-chat.js +3 -1
- package/dist/client/use-send-to-agent-chat.js.map +1 -1
- package/dist/client/use-session.d.ts.map +1 -1
- package/dist/client/use-session.js +2 -1
- package/dist/client/use-session.js.map +1 -1
- package/dist/client/useProductionAgent.d.ts.map +1 -1
- package/dist/client/useProductionAgent.js +2 -1
- package/dist/client/useProductionAgent.js.map +1 -1
- package/dist/collab/client.d.ts.map +1 -1
- package/dist/collab/client.js +3 -2
- package/dist/collab/client.js.map +1 -1
- package/dist/credentials/index.d.ts +27 -10
- package/dist/credentials/index.d.ts.map +1 -1
- package/dist/credentials/index.js +61 -19
- package/dist/credentials/index.js.map +1 -1
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +10 -1
- package/dist/db/client.js.map +1 -1
- package/dist/db/migrations.d.ts +13 -5
- package/dist/db/migrations.d.ts.map +1 -1
- package/dist/db/migrations.js +9 -2
- package/dist/db/migrations.js.map +1 -1
- package/dist/deploy/build.d.ts +12 -1
- package/dist/deploy/build.d.ts.map +1 -1
- package/dist/deploy/build.js +195 -23
- package/dist/deploy/build.js.map +1 -1
- package/dist/file-upload/registry.d.ts.map +1 -1
- package/dist/file-upload/registry.js +25 -1
- package/dist/file-upload/registry.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/integrations/adapters/email.d.ts.map +1 -1
- package/dist/integrations/adapters/email.js +152 -32
- package/dist/integrations/adapters/email.js.map +1 -1
- package/dist/integrations/adapters/slack.d.ts.map +1 -1
- package/dist/integrations/adapters/slack.js +190 -32
- package/dist/integrations/adapters/slack.js.map +1 -1
- package/dist/integrations/adapters/telegram.d.ts.map +1 -1
- package/dist/integrations/adapters/telegram.js +37 -2
- package/dist/integrations/adapters/telegram.js.map +1 -1
- package/dist/integrations/adapters/whatsapp.d.ts.map +1 -1
- package/dist/integrations/adapters/whatsapp.js +91 -12
- package/dist/integrations/adapters/whatsapp.js.map +1 -1
- package/dist/integrations/google-docs-poller.d.ts.map +1 -1
- package/dist/integrations/google-docs-poller.js +5 -2
- package/dist/integrations/google-docs-poller.js.map +1 -1
- package/dist/integrations/internal-token.d.ts.map +1 -1
- package/dist/integrations/internal-token.js +17 -1
- package/dist/integrations/internal-token.js.map +1 -1
- package/dist/integrations/pending-tasks-retry-job.d.ts.map +1 -1
- package/dist/integrations/pending-tasks-retry-job.js +18 -7
- package/dist/integrations/pending-tasks-retry-job.js.map +1 -1
- package/dist/integrations/pending-tasks-store.d.ts +16 -0
- package/dist/integrations/pending-tasks-store.d.ts.map +1 -1
- package/dist/integrations/pending-tasks-store.js +58 -5
- package/dist/integrations/pending-tasks-store.js.map +1 -1
- package/dist/integrations/plugin.d.ts.map +1 -1
- package/dist/integrations/plugin.js +198 -15
- package/dist/integrations/plugin.js.map +1 -1
- package/dist/integrations/types.d.ts +33 -2
- package/dist/integrations/types.d.ts.map +1 -1
- package/dist/integrations/webhook-handler.d.ts +6 -0
- package/dist/integrations/webhook-handler.d.ts.map +1 -1
- package/dist/integrations/webhook-handler.js +141 -61
- package/dist/integrations/webhook-handler.js.map +1 -1
- package/dist/jobs/cron.d.ts.map +1 -1
- package/dist/jobs/cron.js +12 -4
- package/dist/jobs/cron.js.map +1 -1
- package/dist/jobs/scheduler.d.ts.map +1 -1
- package/dist/jobs/scheduler.js +141 -16
- package/dist/jobs/scheduler.js.map +1 -1
- package/dist/jobs/tools.d.ts.map +1 -1
- package/dist/jobs/tools.js +94 -3
- package/dist/jobs/tools.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +128 -62
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp-client/hub-routes.d.ts +14 -0
- package/dist/mcp-client/hub-routes.d.ts.map +1 -1
- package/dist/mcp-client/hub-routes.js +42 -2
- package/dist/mcp-client/hub-routes.js.map +1 -1
- package/dist/mcp-client/index.d.ts +1 -1
- package/dist/mcp-client/index.d.ts.map +1 -1
- package/dist/mcp-client/index.js +1 -1
- package/dist/mcp-client/index.js.map +1 -1
- package/dist/mcp-client/manager.d.ts.map +1 -1
- package/dist/mcp-client/manager.js +28 -3
- package/dist/mcp-client/manager.js.map +1 -1
- package/dist/mcp-client/remote-store.d.ts +49 -1
- package/dist/mcp-client/remote-store.d.ts.map +1 -1
- package/dist/mcp-client/remote-store.js +253 -6
- package/dist/mcp-client/remote-store.js.map +1 -1
- package/dist/mcp-client/routes.d.ts.map +1 -1
- package/dist/mcp-client/routes.js +11 -9
- package/dist/mcp-client/routes.js.map +1 -1
- package/dist/mcp-client/visibility.d.ts +7 -3
- package/dist/mcp-client/visibility.d.ts.map +1 -1
- package/dist/mcp-client/visibility.js +16 -7
- package/dist/mcp-client/visibility.js.map +1 -1
- package/dist/notifications/actions.d.ts.map +1 -1
- package/dist/notifications/actions.js +7 -1
- package/dist/notifications/actions.js.map +1 -1
- package/dist/notifications/routes.d.ts +1 -1
- package/dist/notifications/routes.d.ts.map +1 -1
- package/dist/notifications/routes.js +20 -3
- package/dist/notifications/routes.js.map +1 -1
- package/dist/notifications/store.d.ts.map +1 -1
- package/dist/notifications/store.js +6 -1
- package/dist/notifications/store.js.map +1 -1
- package/dist/oauth-tokens/store.d.ts +43 -2
- package/dist/oauth-tokens/store.d.ts.map +1 -1
- package/dist/oauth-tokens/store.js +83 -14
- package/dist/oauth-tokens/store.js.map +1 -1
- package/dist/observability/experiments.js +5 -5
- package/dist/observability/experiments.js.map +1 -1
- package/dist/observability/routes.d.ts.map +1 -1
- package/dist/observability/routes.js +37 -8
- package/dist/observability/routes.js.map +1 -1
- package/dist/observability/store.d.ts.map +1 -1
- package/dist/observability/store.js +19 -3
- package/dist/observability/store.js.map +1 -1
- package/dist/observability/types.d.ts +7 -0
- package/dist/observability/types.d.ts.map +1 -1
- package/dist/observability/types.js.map +1 -1
- package/dist/onboarding/default-steps.d.ts.map +1 -1
- package/dist/onboarding/default-steps.js +1 -2
- package/dist/onboarding/default-steps.js.map +1 -1
- package/dist/onboarding/plugin.d.ts.map +1 -1
- package/dist/onboarding/plugin.js +63 -32
- package/dist/onboarding/plugin.js.map +1 -1
- package/dist/onboarding/types.d.ts +6 -1
- package/dist/onboarding/types.d.ts.map +1 -1
- package/dist/org/accept-pending.d.ts.map +1 -1
- package/dist/org/accept-pending.js +2 -1
- package/dist/org/accept-pending.js.map +1 -1
- package/dist/progress/actions.d.ts.map +1 -1
- package/dist/progress/actions.js +10 -1
- package/dist/progress/actions.js.map +1 -1
- package/dist/progress/routes.d.ts +1 -1
- package/dist/progress/routes.d.ts.map +1 -1
- package/dist/progress/routes.js +20 -3
- package/dist/progress/routes.js.map +1 -1
- package/dist/progress/store.d.ts.map +1 -1
- package/dist/progress/store.js +6 -1
- package/dist/progress/store.js.map +1 -1
- package/dist/resources/handlers.d.ts.map +1 -1
- package/dist/resources/handlers.js +35 -7
- package/dist/resources/handlers.js.map +1 -1
- package/dist/resources/script-helpers.d.ts.map +1 -1
- package/dist/resources/script-helpers.js +15 -3
- package/dist/resources/script-helpers.js.map +1 -1
- package/dist/resources/store.d.ts.map +1 -1
- package/dist/resources/store.js +12 -4
- package/dist/resources/store.js.map +1 -1
- package/dist/scripts/call-agent.d.ts +1 -0
- package/dist/scripts/call-agent.d.ts.map +1 -1
- package/dist/scripts/call-agent.js +78 -40
- package/dist/scripts/call-agent.js.map +1 -1
- package/dist/scripts/chat/search-chats.d.ts.map +1 -1
- package/dist/scripts/chat/search-chats.js +3 -2
- package/dist/scripts/chat/search-chats.js.map +1 -1
- package/dist/scripts/db/exec.d.ts +1 -1
- package/dist/scripts/db/exec.d.ts.map +1 -1
- package/dist/scripts/db/exec.js +22 -3
- package/dist/scripts/db/exec.js.map +1 -1
- package/dist/scripts/db/migrate-user-api-keys.d.ts.map +1 -1
- package/dist/scripts/db/migrate-user-api-keys.js +10 -0
- package/dist/scripts/db/migrate-user-api-keys.js.map +1 -1
- package/dist/scripts/db/query.d.ts +1 -1
- package/dist/scripts/db/query.d.ts.map +1 -1
- package/dist/scripts/db/query.js +22 -3
- package/dist/scripts/db/query.js.map +1 -1
- package/dist/scripts/db/scoping.d.ts.map +1 -1
- package/dist/scripts/db/scoping.js +15 -9
- package/dist/scripts/db/scoping.js.map +1 -1
- package/dist/scripts/dev/shell.d.ts.map +1 -1
- package/dist/scripts/dev/shell.js +3 -1
- package/dist/scripts/dev/shell.js.map +1 -1
- package/dist/scripts/resources/delete-memory.d.ts.map +1 -1
- package/dist/scripts/resources/delete-memory.js +2 -1
- package/dist/scripts/resources/delete-memory.js.map +1 -1
- package/dist/scripts/resources/delete.d.ts.map +1 -1
- package/dist/scripts/resources/delete.js +2 -1
- package/dist/scripts/resources/delete.js.map +1 -1
- package/dist/scripts/resources/list.d.ts.map +1 -1
- package/dist/scripts/resources/list.js +2 -1
- package/dist/scripts/resources/list.js.map +1 -1
- package/dist/scripts/resources/migrate-learnings.d.ts.map +1 -1
- package/dist/scripts/resources/migrate-learnings.js +2 -1
- package/dist/scripts/resources/migrate-learnings.js.map +1 -1
- package/dist/scripts/resources/read.d.ts.map +1 -1
- package/dist/scripts/resources/read.js +2 -1
- package/dist/scripts/resources/read.js.map +1 -1
- package/dist/scripts/resources/save-memory.d.ts.map +1 -1
- package/dist/scripts/resources/save-memory.js +2 -1
- package/dist/scripts/resources/save-memory.js.map +1 -1
- package/dist/scripts/resources/write.d.ts.map +1 -1
- package/dist/scripts/resources/write.js +2 -1
- package/dist/scripts/resources/write.js.map +1 -1
- package/dist/secrets/onboarding.d.ts.map +1 -1
- package/dist/secrets/onboarding.js +24 -16
- package/dist/secrets/onboarding.js.map +1 -1
- package/dist/secrets/routes.d.ts.map +1 -1
- package/dist/secrets/routes.js +139 -37
- package/dist/secrets/routes.js.map +1 -1
- package/dist/secrets/storage.d.ts.map +1 -1
- package/dist/secrets/storage.js +23 -12
- package/dist/secrets/storage.js.map +1 -1
- package/dist/secrets/substitution.d.ts +24 -2
- package/dist/secrets/substitution.d.ts.map +1 -1
- package/dist/secrets/substitution.js +44 -6
- package/dist/secrets/substitution.js.map +1 -1
- package/dist/server/action-discovery.d.ts.map +1 -1
- package/dist/server/action-discovery.js +15 -51
- package/dist/server/action-discovery.js.map +1 -1
- package/dist/server/action-routes.d.ts.map +1 -1
- package/dist/server/action-routes.js +42 -15
- package/dist/server/action-routes.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +447 -335
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/agent-discovery.d.ts +8 -0
- package/dist/server/agent-discovery.d.ts.map +1 -1
- package/dist/server/agent-discovery.js +39 -12
- package/dist/server/agent-discovery.js.map +1 -1
- package/dist/server/agent-teams.d.ts.map +1 -1
- package/dist/server/agent-teams.js +4 -1
- package/dist/server/agent-teams.js.map +1 -1
- package/dist/server/analytics.d.ts +0 -1
- package/dist/server/analytics.d.ts.map +1 -1
- package/dist/server/analytics.js +0 -1
- package/dist/server/analytics.js.map +1 -1
- package/dist/server/app-base-path.d.ts +4 -0
- package/dist/server/app-base-path.d.ts.map +1 -0
- package/dist/server/app-base-path.js +33 -0
- package/dist/server/app-base-path.js.map +1 -0
- package/dist/server/auth.d.ts +15 -0
- package/dist/server/auth.d.ts.map +1 -1
- package/dist/server/auth.js +400 -68
- package/dist/server/auth.js.map +1 -1
- package/dist/server/better-auth-instance.d.ts +1 -0
- package/dist/server/better-auth-instance.d.ts.map +1 -1
- package/dist/server/better-auth-instance.js +67 -15
- package/dist/server/better-auth-instance.js.map +1 -1
- package/dist/server/builder-browser.d.ts +15 -0
- package/dist/server/builder-browser.d.ts.map +1 -1
- package/dist/server/builder-browser.js +90 -4
- package/dist/server/builder-browser.js.map +1 -1
- package/dist/server/cli-capture.d.ts +31 -0
- package/dist/server/cli-capture.d.ts.map +1 -0
- package/dist/server/cli-capture.js +120 -0
- package/dist/server/cli-capture.js.map +1 -0
- package/dist/server/collab-plugin.d.ts +12 -0
- package/dist/server/collab-plugin.d.ts.map +1 -1
- package/dist/server/collab-plugin.js +63 -21
- package/dist/server/collab-plugin.js.map +1 -1
- package/dist/server/core-routes-plugin.d.ts.map +1 -1
- package/dist/server/core-routes-plugin.js +435 -106
- package/dist/server/core-routes-plugin.js.map +1 -1
- package/dist/server/create-server.d.ts +2 -0
- package/dist/server/create-server.d.ts.map +1 -1
- package/dist/server/create-server.js +82 -11
- package/dist/server/create-server.js.map +1 -1
- package/dist/server/credential-provider.d.ts +11 -0
- package/dist/server/credential-provider.d.ts.map +1 -1
- package/dist/server/credential-provider.js +51 -2
- package/dist/server/credential-provider.js.map +1 -1
- package/dist/server/csrf.d.ts +58 -0
- package/dist/server/csrf.d.ts.map +1 -0
- package/dist/server/csrf.js +165 -0
- package/dist/server/csrf.js.map +1 -0
- package/dist/server/framework-request-handler.d.ts +20 -0
- package/dist/server/framework-request-handler.d.ts.map +1 -1
- package/dist/server/framework-request-handler.js +115 -34
- package/dist/server/framework-request-handler.js.map +1 -1
- package/dist/server/google-auth-plugin.d.ts.map +1 -1
- package/dist/server/google-auth-plugin.js +10 -2
- package/dist/server/google-auth-plugin.js.map +1 -1
- package/dist/server/google-oauth.d.ts +84 -2
- package/dist/server/google-oauth.d.ts.map +1 -1
- package/dist/server/google-oauth.js +248 -45
- package/dist/server/google-oauth.js.map +1 -1
- package/dist/server/index.d.ts +4 -4
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +4 -4
- package/dist/server/index.js.map +1 -1
- package/dist/server/oauth-helpers.d.ts +8 -3
- package/dist/server/oauth-helpers.d.ts.map +1 -1
- package/dist/server/oauth-helpers.js +12 -8
- package/dist/server/oauth-helpers.js.map +1 -1
- package/dist/server/onboarding-html.d.ts.map +1 -1
- package/dist/server/onboarding-html.js +37 -9
- package/dist/server/onboarding-html.js.map +1 -1
- package/dist/server/poll.d.ts +33 -0
- package/dist/server/poll.d.ts.map +1 -1
- package/dist/server/poll.js +43 -2
- package/dist/server/poll.js.map +1 -1
- package/dist/server/request-context.d.ts +102 -3
- package/dist/server/request-context.d.ts.map +1 -1
- package/dist/server/request-context.js +100 -7
- package/dist/server/request-context.js.map +1 -1
- package/dist/server/security-headers.d.ts +51 -0
- package/dist/server/security-headers.d.ts.map +1 -0
- package/dist/server/security-headers.js +90 -0
- package/dist/server/security-headers.js.map +1 -0
- package/dist/server/ssr-handler.d.ts.map +1 -1
- package/dist/server/ssr-handler.js +96 -2
- package/dist/server/ssr-handler.js.map +1 -1
- package/dist/server/transcribe-voice.d.ts.map +1 -1
- package/dist/server/transcribe-voice.js +307 -56
- package/dist/server/transcribe-voice.js.map +1 -1
- package/dist/server/voice-providers-status.d.ts +12 -0
- package/dist/server/voice-providers-status.d.ts.map +1 -0
- package/dist/server/voice-providers-status.js +71 -0
- package/dist/server/voice-providers-status.js.map +1 -0
- package/dist/sharing/access.d.ts.map +1 -1
- package/dist/sharing/access.js +16 -13
- package/dist/sharing/access.js.map +1 -1
- package/dist/sharing/actions/share-resource.d.ts +1 -0
- package/dist/sharing/actions/share-resource.d.ts.map +1 -1
- package/dist/sharing/actions/share-resource.js +45 -0
- package/dist/sharing/actions/share-resource.js.map +1 -1
- package/dist/templates/default/.agents/skills/delegate-to-agent/SKILL.md +54 -0
- package/dist/templates/default/app/root.tsx +1 -1
- package/dist/templates/default/app/routes/_index.tsx +6 -1
- package/dist/templates/default/public/favicon.svg +13 -0
- package/dist/templates/default/public/icon-180.svg +12 -3
- package/dist/templates/default/public/icon-192.svg +12 -3
- package/dist/templates/default/public/icon-512.svg +12 -3
- package/dist/templates/workspace-core/package.json +22 -4
- package/dist/templates/workspace-core/src/credentials.ts +32 -5
- package/dist/templates/workspace-core/tsconfig.json +4 -1
- package/dist/terminal/pty-server.d.ts.map +1 -1
- package/dist/terminal/pty-server.js +7 -1
- package/dist/terminal/pty-server.js.map +1 -1
- package/dist/terminal/terminal-plugin.js +3 -3
- package/dist/terminal/terminal-plugin.js.map +1 -1
- package/dist/tools/actions.d.ts.map +1 -1
- package/dist/tools/actions.js +130 -0
- package/dist/tools/actions.js.map +1 -1
- package/dist/tools/fetch-tool.d.ts +1 -0
- package/dist/tools/fetch-tool.d.ts.map +1 -1
- package/dist/tools/fetch-tool.js +38 -16
- package/dist/tools/fetch-tool.js.map +1 -1
- package/dist/tools/html-shell.d.ts +43 -1
- package/dist/tools/html-shell.d.ts.map +1 -1
- package/dist/tools/html-shell.js +102 -4
- package/dist/tools/html-shell.js.map +1 -1
- package/dist/tools/proxy-security.d.ts +12 -0
- package/dist/tools/proxy-security.d.ts.map +1 -0
- package/dist/tools/proxy-security.js +158 -0
- package/dist/tools/proxy-security.js.map +1 -0
- package/dist/tools/routes.d.ts.map +1 -1
- package/dist/tools/routes.js +158 -105
- package/dist/tools/routes.js.map +1 -1
- package/dist/tools/schema.d.ts +3 -0
- package/dist/tools/schema.d.ts.map +1 -1
- package/dist/tools/schema.js +3 -0
- package/dist/tools/schema.js.map +1 -1
- package/dist/tools/slots/routes.d.ts +15 -0
- package/dist/tools/slots/routes.d.ts.map +1 -0
- package/dist/tools/slots/routes.js +94 -0
- package/dist/tools/slots/routes.js.map +1 -0
- package/dist/tools/slots/schema.d.ts +303 -0
- package/dist/tools/slots/schema.d.ts.map +1 -0
- package/dist/tools/slots/schema.js +76 -0
- package/dist/tools/slots/schema.js.map +1 -0
- package/dist/tools/slots/store.d.ts +66 -0
- package/dist/tools/slots/store.d.ts.map +1 -0
- package/dist/tools/slots/store.js +227 -0
- package/dist/tools/slots/store.js.map +1 -0
- package/dist/tools/store.d.ts.map +1 -1
- package/dist/tools/store.js +28 -37
- package/dist/tools/store.js.map +1 -1
- package/dist/tools/url-safety.d.ts +24 -0
- package/dist/tools/url-safety.d.ts.map +1 -0
- package/dist/tools/url-safety.js +224 -0
- package/dist/tools/url-safety.js.map +1 -0
- package/dist/tracking/providers.d.ts.map +1 -1
- package/dist/tracking/providers.js +28 -11
- package/dist/tracking/providers.js.map +1 -1
- package/dist/tracking/registry.d.ts.map +1 -1
- package/dist/tracking/registry.js +7 -3
- package/dist/tracking/registry.js.map +1 -1
- package/dist/triggers/actions.d.ts.map +1 -1
- package/dist/triggers/actions.js +11 -6
- package/dist/triggers/actions.js.map +1 -1
- package/dist/triggers/condition-evaluator.d.ts +8 -0
- package/dist/triggers/condition-evaluator.d.ts.map +1 -1
- package/dist/triggers/condition-evaluator.js +39 -4
- package/dist/triggers/condition-evaluator.js.map +1 -1
- package/dist/triggers/dispatcher.d.ts.map +1 -1
- package/dist/triggers/dispatcher.js +67 -4
- package/dist/triggers/dispatcher.js.map +1 -1
- package/dist/vite/action-types-plugin.d.ts.map +1 -1
- package/dist/vite/action-types-plugin.js +8 -5
- package/dist/vite/action-types-plugin.js.map +1 -1
- package/dist/vite/client.d.ts +2 -0
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +216 -4
- package/dist/vite/client.js.map +1 -1
- package/docs/content/authentication.md +27 -12
- package/docs/content/drop-in-agent.md +2 -2
- package/docs/content/messaging.md +195 -155
- package/docs/content/onboarding.md +82 -12
- package/docs/content/template-analytics.md +65 -59
- package/docs/content/template-clips.md +7 -9
- package/docs/content/template-design.md +55 -0
- package/docs/content/template-dispatch.md +13 -0
- package/docs/content/template-forms.md +7 -6
- package/docs/content/template-mail.md +78 -80
- package/package.json +2 -1
- package/src/templates/default/.agents/skills/delegate-to-agent/SKILL.md +54 -0
- package/src/templates/default/app/root.tsx +1 -1
- package/src/templates/default/app/routes/_index.tsx +6 -1
- package/src/templates/default/public/favicon.svg +13 -0
- package/src/templates/default/public/icon-180.svg +12 -3
- package/src/templates/default/public/icon-192.svg +12 -3
- package/src/templates/default/public/icon-512.svg +12 -3
- package/src/templates/workspace-core/package.json +22 -4
- package/src/templates/workspace-core/src/credentials.ts +32 -5
- package/src/templates/workspace-core/tsconfig.json +4 -1
|
@@ -38,7 +38,7 @@ export default function Root() {
|
|
|
38
38
|
"Draft a reply to the latest email",
|
|
39
39
|
"Show me yesterday's signup numbers",
|
|
40
40
|
]}
|
|
41
|
-
|
|
41
|
+
defaultSidebarWidth={420}
|
|
42
42
|
position="right"
|
|
43
43
|
>
|
|
44
44
|
<YourApp />
|
|
@@ -57,7 +57,7 @@ That's it. The user now has a toggleable agent on every page — with chat histo
|
|
|
57
57
|
- **`children`** — your app. Rendered in the main area; the sidebar overlays from the chosen side.
|
|
58
58
|
- **`emptyStateText`** — greeting shown when the chat has no messages. Default: `"How can I help you?"`.
|
|
59
59
|
- **`suggestions`** — starter prompts rendered as clickable chips when empty.
|
|
60
|
-
- **`
|
|
60
|
+
- **`defaultSidebarWidth`** — initial pixel width (mount-only; user resize and saved value override). Default: `380`.
|
|
61
61
|
- **`position`** — `"left"` or `"right"`. Default: `"right"`.
|
|
62
62
|
- **`defaultOpen`** — whether the sidebar starts open (desktop only). Default: `false`.
|
|
63
63
|
|
|
@@ -5,233 +5,277 @@ description: "Talk to your agent from Slack, email, Telegram, or WhatsApp — sa
|
|
|
5
5
|
|
|
6
6
|
# Messaging
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
Connect your agent to Slack, email, Telegram, or WhatsApp so you can chat with it from the apps you already use. It's the same agent — same memory, same tools, same threads — just reachable from more places.
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
> **Using the Dispatch template?** All of this is wired up for you in **Settings → Messaging**. Click to connect each platform — you don't need to read the rest of this page unless you're customizing or building your own template. See [Dispatch](/docs/template-dispatch).
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
## What you can do {#what-you-can-do}
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
- **Email your agent** at an address like `agent@yourcompany.com` — it replies in-thread, just like a coworker would.
|
|
15
|
+
- **CC your agent** on a thread — it'll read along and jump in when you ask.
|
|
16
|
+
- **DM the agent on Slack**, or `@mention` it in any channel.
|
|
17
|
+
- **Message the agent on Telegram or WhatsApp** from your phone.
|
|
18
|
+
- **Same agent, same memory.** Whatever you tell it on Slack is remembered when you email it later. The web chat and external messages share one thread history.
|
|
15
19
|
|
|
16
|
-
|
|
20
|
+
## Set up Slack {#slack}
|
|
17
21
|
|
|
18
|
-
|
|
22
|
+
### What you'll need
|
|
19
23
|
|
|
20
|
-
|
|
24
|
+
- A Slack workspace where you can install apps (admin access)
|
|
25
|
+
- About 5 minutes
|
|
21
26
|
|
|
22
|
-
|
|
23
|
-
2. The platform delivers the message to your app via a webhook at `/_agent-native/integrations/<platform>/webhook`
|
|
24
|
-
3. The integrations plugin validates the request, extracts the message text and thread context, and maps it to an internal conversation thread
|
|
25
|
-
4. The agent processes the message in the background using the same pipeline as the web chat
|
|
26
|
-
5. The response is posted back to the external platform in the same thread
|
|
27
|
+
### Steps
|
|
27
28
|
|
|
28
|
-
|
|
29
|
+
1. Go to **[api.slack.com/apps](https://api.slack.com/apps)** and click **Create New App** → **From scratch**. Name it (e.g. "Agent") and pick your workspace.
|
|
30
|
+
2. In the left sidebar, open **OAuth & Permissions**. Under **Bot Token Scopes**, add:
|
|
31
|
+
- `chat:write` — lets the agent send messages
|
|
32
|
+
- `app_mentions:read` — lets the agent see when it's @-mentioned (optional)
|
|
33
|
+
- `im:history` — lets the agent read DMs sent to it
|
|
34
|
+
3. Click **Install to Workspace** at the top of that page. Slack will give you a **Bot User OAuth Token** that starts with `xoxb-`. Copy it.
|
|
35
|
+
4. Go to **Basic Information** in the sidebar and copy the **Signing Secret**.
|
|
36
|
+
5. Open your app's settings (or your hosting provider's environment variable panel) and paste:
|
|
37
|
+
- `SLACK_BOT_TOKEN` — the `xoxb-…` token
|
|
38
|
+
- `SLACK_SIGNING_SECRET` — the signing secret
|
|
39
|
+
6. Back in Slack, open **Event Subscriptions**, toggle it on, and paste this Request URL:
|
|
29
40
|
|
|
30
|
-
|
|
41
|
+
```text
|
|
42
|
+
https://your-app.example.com/_agent-native/integrations/slack/webhook
|
|
43
|
+
```
|
|
31
44
|
|
|
32
|
-
|
|
45
|
+
Then under **Subscribe to bot events**, add `message.im` (for DMs) and optionally `app_mention` (for channel mentions). Save.
|
|
33
46
|
|
|
34
|
-
|
|
35
|
-
// server/plugins/integrations.ts
|
|
36
|
-
import { createIntegrationsPlugin } from "@agent-native/core/server";
|
|
37
|
-
import { scriptRegistry } from "../../agent.config";
|
|
47
|
+
7. Send your bot a DM in Slack. It should reply.
|
|
38
48
|
|
|
39
|
-
|
|
40
|
-
actions: scriptRegistry,
|
|
41
|
-
systemPrompt: "You are a helpful assistant...",
|
|
42
|
-
});
|
|
43
|
-
```
|
|
49
|
+
### Tips
|
|
44
50
|
|
|
45
|
-
|
|
51
|
+
- **Channel mentions** — the bot only responds in channels when it's @-mentioned, to avoid noise.
|
|
52
|
+
- **DMs** — every DM is treated as a private conversation with the agent.
|
|
53
|
+
- **Same identity, all channels** — if a Slack user has the same email as a registered user in your app, the agent treats them as the same person.
|
|
46
54
|
|
|
47
|
-
##
|
|
55
|
+
## Set up Telegram {#telegram}
|
|
48
56
|
|
|
49
|
-
|
|
57
|
+
### What you'll need
|
|
50
58
|
|
|
51
|
-
-
|
|
52
|
-
-
|
|
53
|
-
- Sends the result back to the original platform in the same thread
|
|
59
|
+
- The Telegram app on your phone
|
|
60
|
+
- About 3 minutes
|
|
54
61
|
|
|
55
|
-
|
|
62
|
+
### Steps
|
|
56
63
|
|
|
57
|
-
|
|
64
|
+
1. Open Telegram and message **[@BotFather](https://t.me/BotFather)**.
|
|
65
|
+
2. Send `/newbot` and follow the prompts to name your bot. BotFather will reply with an **HTTP API token**. Copy it.
|
|
66
|
+
3. In your app's environment variables, set:
|
|
67
|
+
- `TELEGRAM_BOT_TOKEN` — the token from BotFather
|
|
68
|
+
4. After deploying, register the webhook by `POST`ing to your app at:
|
|
58
69
|
|
|
59
|
-
|
|
70
|
+
```text
|
|
71
|
+
POST https://your-app.example.com/_agent-native/integrations/telegram/setup
|
|
72
|
+
```
|
|
60
73
|
|
|
61
|
-
|
|
74
|
+
This tells Telegram to send messages to your app's webhook. You only need to do this once per deployment.
|
|
62
75
|
|
|
63
|
-
|
|
76
|
+
5. Find your bot in Telegram (search for the username BotFather gave you) and send it a message.
|
|
64
77
|
|
|
65
|
-
|
|
78
|
+
## Set up Email {#email}
|
|
66
79
|
|
|
67
|
-
- `
|
|
68
|
-
- `app_mentions:read` — receive @-mentions (optional)
|
|
80
|
+
Email is the most powerful integration — your agent gets its own address, replies in-thread, can be CC'd on conversations, and uses the sender's email as their identity. No `/link` command needed.
|
|
69
81
|
|
|
70
|
-
###
|
|
82
|
+
### What you'll need
|
|
71
83
|
|
|
72
|
-
|
|
84
|
+
- A domain you control (or you can use a free Resend subdomain — see below)
|
|
85
|
+
- An account with **Resend** or **SendGrid** to handle inbound + outbound mail
|
|
86
|
+
- About 10 minutes
|
|
73
87
|
|
|
74
|
-
|
|
75
|
-
https://your-app.example.com/_agent-native/integrations/slack/webhook
|
|
76
|
-
```
|
|
88
|
+
### Steps (with Resend — easiest)
|
|
77
89
|
|
|
78
|
-
|
|
90
|
+
1. Sign up at **[resend.com](https://resend.com)**. The free tier is enough to get started.
|
|
91
|
+
2. Pick how the agent's email address will look:
|
|
92
|
+
- **Easiest:** use a free `<your-slug>.resend.app` address — no DNS needed.
|
|
93
|
+
- **Branded:** add a custom domain (like `yourcompany.com`) in Resend's **Domains** page and follow the DNS steps.
|
|
94
|
+
3. In Resend, open **Webhooks** → **Add Endpoint** and point it at:
|
|
79
95
|
|
|
80
|
-
|
|
96
|
+
```text
|
|
97
|
+
https://your-app.example.com/_agent-native/integrations/email/webhook
|
|
98
|
+
```
|
|
81
99
|
|
|
82
|
-
|
|
83
|
-
SLACK_BOT_TOKEN=xoxb-your-bot-token
|
|
84
|
-
SLACK_SIGNING_SECRET=your-signing-secret
|
|
85
|
-
```
|
|
100
|
+
Subscribe to the **`email.received`** event. Resend will give you a signing secret — copy it.
|
|
86
101
|
|
|
87
|
-
|
|
102
|
+
4. In your app's environment variables, set:
|
|
103
|
+
- `EMAIL_AGENT_ADDRESS` — the address the agent receives mail at (e.g. `agent@yourcompany.com`)
|
|
104
|
+
- `RESEND_API_KEY` — your Resend API key
|
|
105
|
+
- `EMAIL_INBOUND_WEBHOOK_SECRET` — the signing secret from Resend (recommended; used for signature verification)
|
|
88
106
|
|
|
89
|
-
|
|
107
|
+
5. Send an email to the agent's address. It'll reply in the same thread.
|
|
90
108
|
|
|
91
|
-
|
|
109
|
+
### Steps (with SendGrid)
|
|
92
110
|
|
|
93
|
-
|
|
111
|
+
1. Sign up at **[sendgrid.com](https://sendgrid.com)**.
|
|
112
|
+
2. Add the MX record for your domain so inbound mail flows to SendGrid:
|
|
113
|
+
```text
|
|
114
|
+
MX yourcompany.com → mx.sendgrid.net (priority 10)
|
|
115
|
+
```
|
|
116
|
+
3. Open **Settings → Inbound Parse**, click **Add Host & URL**, and set the destination to:
|
|
94
117
|
|
|
95
|
-
|
|
118
|
+
```text
|
|
119
|
+
https://your-app.example.com/_agent-native/integrations/email/webhook
|
|
120
|
+
```
|
|
96
121
|
|
|
97
|
-
|
|
98
|
-
EMAIL_AGENT_ADDRESS
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
SENDGRID_API_KEY=SG...
|
|
102
|
-
# Optional — recommended for production:
|
|
103
|
-
EMAIL_INBOUND_WEBHOOK_SECRET=your-shared-secret
|
|
104
|
-
```
|
|
122
|
+
4. Set environment variables:
|
|
123
|
+
- `EMAIL_AGENT_ADDRESS` — the address the agent receives at
|
|
124
|
+
- `SENDGRID_API_KEY` — your SendGrid API key
|
|
125
|
+
- `EMAIL_INBOUND_WEBHOOK_SECRET` — optional Svix signing secret if you've configured signed webhooks
|
|
105
126
|
|
|
106
|
-
|
|
127
|
+
5. Send an email to the agent's address.
|
|
107
128
|
|
|
108
|
-
###
|
|
129
|
+
### Tips
|
|
109
130
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
131
|
+
- **CC the agent** to bring it into a thread. When the agent is CC'd it will reply-all so the whole thread sees the response.
|
|
132
|
+
- **Threading just works** — the agent uses standard `Message-ID` / `In-Reply-To` / `References` headers, so replies stay in the right thread in any email client.
|
|
133
|
+
- **Identity is the sender's email.** If `alice@acme.com` emails the agent, that _is_ her identity — no link or signup flow.
|
|
134
|
+
- **Rich responses** — markdown in the agent's response is rendered as HTML in the email.
|
|
135
|
+
- **Allowed domains** — restrict who can email the agent by setting `allowedDomains` in the integration's config; messages from other domains are dropped.
|
|
136
|
+
- **Rate limit** — 20 inbound messages per hour per sender.
|
|
113
137
|
|
|
114
|
-
|
|
138
|
+
## Set up WhatsApp {#whatsapp}
|
|
115
139
|
|
|
116
|
-
|
|
140
|
+
### What you'll need
|
|
117
141
|
|
|
118
|
-
-
|
|
119
|
-
-
|
|
142
|
+
- A Meta (Facebook) developer account
|
|
143
|
+
- A phone number you can dedicate to the bot
|
|
144
|
+
- About 15 minutes (Meta's setup has the most steps)
|
|
120
145
|
|
|
121
|
-
|
|
146
|
+
### Steps
|
|
122
147
|
|
|
123
|
-
1. Go to **
|
|
124
|
-
2.
|
|
125
|
-
3.
|
|
126
|
-
|
|
148
|
+
1. Go to the **[Meta Developer Portal](https://developers.facebook.com/)**, click **Create App**, and pick the **Business** type.
|
|
149
|
+
2. Add the **WhatsApp** product to your app and configure a phone number to use as the sender.
|
|
150
|
+
3. From the WhatsApp setup page, grab:
|
|
151
|
+
- **Access token** (the temporary one is fine for testing; generate a permanent token before going live)
|
|
152
|
+
- **Phone number ID**
|
|
153
|
+
4. Pick any random string to use as a verify token — you'll enter the same value in two places below.
|
|
154
|
+
5. In your app's environment variables, set:
|
|
155
|
+
- `WHATSAPP_ACCESS_TOKEN` — your access token
|
|
156
|
+
- `WHATSAPP_PHONE_NUMBER_ID` — the phone number ID
|
|
157
|
+
- `WHATSAPP_VERIFY_TOKEN` — the random string you picked
|
|
158
|
+
6. Back in Meta's WhatsApp config, open the webhook section and set:
|
|
127
159
|
|
|
128
|
-
|
|
160
|
+
```text
|
|
161
|
+
Callback URL: https://your-app.example.com/_agent-native/integrations/whatsapp/webhook
|
|
162
|
+
Verify token: the same random string you set as WHATSAPP_VERIFY_TOKEN
|
|
163
|
+
```
|
|
129
164
|
|
|
130
|
-
|
|
131
|
-
2. In the SendGrid dashboard, go to **Settings** → **Inbound Parse** → **Add Host & URL**
|
|
132
|
-
3. Set the host to your domain and the destination URL to `https://your-app.example.com/_agent-native/integrations/email/webhook`
|
|
133
|
-
4. (Recommended) Set basic auth or a custom `x-webhook-secret` header matching `EMAIL_INBOUND_WEBHOOK_SECRET`
|
|
165
|
+
Subscribe to the `messages` field.
|
|
134
166
|
|
|
135
|
-
|
|
167
|
+
7. Send a WhatsApp message to the bot's phone number.
|
|
136
168
|
|
|
137
|
-
|
|
138
|
-
- **Direct vs CC'd** — the adapter detects whether the agent was in `To` (directly addressed) or `Cc` (overheard). When CC'd, the agent's reply goes to all original recipients (reply-all). The Dispatch system prompt also instructs the agent to only respond when input is clearly being requested, so it stays out of the way on threads it's only copied on.
|
|
139
|
-
- **Identity** — the sender's email address is the identity. It maps directly to a workspace user with that email; the agent acts on behalf of that user.
|
|
169
|
+
## Use Dispatch as your agent's central inbox {#dispatch}
|
|
140
170
|
|
|
141
|
-
|
|
171
|
+
If you're running multiple agent-native apps (mail, calendar, analytics, etc.), the recommended pattern is to set up messaging on the **[Dispatch template](/docs/template-dispatch)** and let it route work to your domain apps over [A2A](/docs/a2a-protocol).
|
|
142
172
|
|
|
143
|
-
|
|
173
|
+
Why this is nice:
|
|
144
174
|
|
|
145
|
-
|
|
175
|
+
- **One agent, one inbox.** All your channels (Slack, email, Telegram, WhatsApp) flow into Dispatch. You only set up integrations once.
|
|
176
|
+
- **Dispatch delegates.** Ask "summarize last week's signups" — Dispatch calls the analytics agent. Ask "draft a reply to Alice" — Dispatch calls the mail agent.
|
|
177
|
+
- **Clicks, not config.** Dispatch's **Settings → Messaging** page has connect buttons for every platform with the env-var fields built in.
|
|
146
178
|
|
|
147
|
-
|
|
148
|
-
- **Allowed domains** — the `integration_configs` row for `email` accepts an optional `allowedDomains: string[]`. When set, only senders whose domain is in the list are accepted. Use this to restrict the agent to a specific company or tenant.
|
|
179
|
+
If you don't need an orchestrator, any single template can wire up messaging directly using the env vars on this page.
|
|
149
180
|
|
|
150
|
-
|
|
181
|
+
---
|
|
151
182
|
|
|
152
|
-
|
|
183
|
+
## For developers {#for-developers}
|
|
153
184
|
|
|
154
|
-
|
|
185
|
+
Everything below is the technical reference. If you've finished the setup steps above, you can stop here unless you're customizing the integration plugin or building your own adapter.
|
|
155
186
|
|
|
156
|
-
###
|
|
187
|
+
### How it works {#how-it-works}
|
|
157
188
|
|
|
158
|
-
|
|
189
|
+
Each platform talks to your app via a standard HTTP webhook:
|
|
159
190
|
|
|
160
|
-
|
|
191
|
+
1. A user sends a message on Slack/Telegram/WhatsApp/email.
|
|
192
|
+
2. The platform `POST`s to `/_agent-native/integrations/<platform>/webhook`.
|
|
193
|
+
3. The integrations plugin verifies the signature, parses the message, and maps it to an internal conversation thread.
|
|
194
|
+
4. The agent runs the same pipeline as the web chat — same system prompt, same actions, same tools.
|
|
195
|
+
5. The response is posted back to the platform in the same thread.
|
|
161
196
|
|
|
162
|
-
```
|
|
163
|
-
|
|
197
|
+
```text
|
|
198
|
+
User → Platform webhook → Verify → Parse → Agent runs → Response posted back
|
|
164
199
|
```
|
|
165
200
|
|
|
166
|
-
|
|
201
|
+
No polling, no long-lived connections. Inbound and outbound conversations live in the same SQL thread, so you can continue a Slack DM from the web UI or vice versa.
|
|
167
202
|
|
|
168
|
-
|
|
203
|
+
### The integrations plugin {#plugin}
|
|
169
204
|
|
|
170
|
-
|
|
171
|
-
// The integrations plugin exposes a setup endpoint
|
|
172
|
-
POST /_agent-native/integrations/telegram/setup
|
|
205
|
+
The plugin auto-mounts when no custom version exists. To customize, create:
|
|
173
206
|
|
|
174
|
-
|
|
175
|
-
//
|
|
176
|
-
|
|
207
|
+
```ts
|
|
208
|
+
// server/plugins/integrations.ts
|
|
209
|
+
import { createIntegrationsPlugin } from "@agent-native/core/server";
|
|
210
|
+
import { scriptRegistry } from "../../agent.config";
|
|
177
211
|
|
|
178
|
-
|
|
212
|
+
export default createIntegrationsPlugin({
|
|
213
|
+
actions: scriptRegistry,
|
|
214
|
+
systemPrompt: "You are a helpful assistant...",
|
|
215
|
+
});
|
|
216
|
+
```
|
|
179
217
|
|
|
180
|
-
|
|
218
|
+
Which platforms are active depends on which env vars are set. The plugin registers webhook routes for each one under `/_agent-native/integrations/`.
|
|
181
219
|
|
|
182
|
-
###
|
|
220
|
+
### Webhook URLs {#webhook-urls}
|
|
183
221
|
|
|
184
|
-
|
|
222
|
+
```text
|
|
223
|
+
/_agent-native/integrations/slack/webhook
|
|
224
|
+
/_agent-native/integrations/telegram/webhook
|
|
225
|
+
/_agent-native/integrations/whatsapp/webhook
|
|
226
|
+
/_agent-native/integrations/email/webhook
|
|
227
|
+
```
|
|
185
228
|
|
|
186
|
-
|
|
229
|
+
Telegram also exposes a one-time setup endpoint:
|
|
187
230
|
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
WHATSAPP_VERIFY_TOKEN=your-verify-token
|
|
191
|
-
WHATSAPP_PHONE_NUMBER_ID=your-phone-number-id
|
|
231
|
+
```text
|
|
232
|
+
POST /_agent-native/integrations/telegram/setup
|
|
192
233
|
```
|
|
193
234
|
|
|
194
|
-
|
|
235
|
+
### Environment variables {#env-vars}
|
|
195
236
|
|
|
196
|
-
|
|
237
|
+
| Platform | Required | Optional |
|
|
238
|
+
| -------- | ---------------------------------------------------------------------------- | ------------------------------ |
|
|
239
|
+
| Slack | `SLACK_BOT_TOKEN`, `SLACK_SIGNING_SECRET` | — |
|
|
240
|
+
| Telegram | `TELEGRAM_BOT_TOKEN` | — |
|
|
241
|
+
| Email | `EMAIL_AGENT_ADDRESS`, plus one of `RESEND_API_KEY` or `SENDGRID_API_KEY` | `EMAIL_INBOUND_WEBHOOK_SECRET` |
|
|
242
|
+
| WhatsApp | `WHATSAPP_ACCESS_TOKEN`, `WHATSAPP_VERIFY_TOKEN`, `WHATSAPP_PHONE_NUMBER_ID` | — |
|
|
197
243
|
|
|
198
|
-
|
|
244
|
+
All credentials live in env vars — never the database, never source code. Use the sidebar settings UI or your hosting provider's env panel.
|
|
199
245
|
|
|
200
|
-
|
|
201
|
-
https://your-app.example.com/_agent-native/integrations/whatsapp/webhook
|
|
202
|
-
```
|
|
246
|
+
### Threading and identity {#threading-and-identity}
|
|
203
247
|
|
|
204
|
-
|
|
248
|
+
Each external conversation maps to a persistent thread in the agent-native database:
|
|
205
249
|
|
|
206
|
-
|
|
250
|
+
- **Slack DM** → one thread per Slack user.
|
|
251
|
+
- **Slack channel @mention** → one thread per channel.
|
|
252
|
+
- **Telegram chat** → one thread per Telegram chat.
|
|
253
|
+
- **WhatsApp conversation** → one thread per WhatsApp number.
|
|
254
|
+
- **Email** → threading derived from `Message-ID` / `In-Reply-To` / `References` headers.
|
|
207
255
|
|
|
208
|
-
|
|
256
|
+
External threads appear in the web UI alongside web-originated threads, tagged with their source platform. Identity resolution: when a Slack/email user matches a registered user (typically by email), they're linked to that account.
|
|
209
257
|
|
|
210
|
-
|
|
258
|
+
### Security {#security}
|
|
211
259
|
|
|
212
|
-
|
|
213
|
-
/_agent-native/integrations/<platform>/webhook
|
|
260
|
+
Every incoming webhook is signature-verified before processing:
|
|
214
261
|
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
/_agent-native/integrations/whatsapp/webhook
|
|
220
|
-
```
|
|
262
|
+
- **Slack** — HMAC-SHA256 of the body using `SLACK_SIGNING_SECRET`, checked against the `X-Slack-Signature` header.
|
|
263
|
+
- **Telegram** — secret token set when registering the webhook.
|
|
264
|
+
- **WhatsApp** — Meta's verification challenge (using `WHATSAPP_VERIFY_TOKEN`) plus payload signature.
|
|
265
|
+
- **Email** — Svix-style signature verification when `EMAIL_INBOUND_WEBHOOK_SECRET` is set (Resend and SendGrid both use this format). If the secret is unset, the webhook is accepted but a warning is logged.
|
|
221
266
|
|
|
222
|
-
|
|
267
|
+
The email adapter also enforces:
|
|
223
268
|
|
|
224
|
-
|
|
269
|
+
- **Allowed domains** — optional `allowedDomains` array in the integration's `integration_configs` row; senders outside the list are dropped.
|
|
270
|
+
- **Rate limit** — in-memory limiter at 20 inbound messages per sender per hour.
|
|
225
271
|
|
|
226
|
-
|
|
227
|
-
- External conversations appear in the web UI alongside web-originated threads, tagged with their source platform
|
|
228
|
-
- You can continue a conversation that started in Slack from the web UI, or vice versa
|
|
272
|
+
### Proactive sends {#proactive-sends}
|
|
229
273
|
|
|
230
|
-
|
|
274
|
+
The agent can send messages on its own initiative (notifications, reminders, scheduled summaries) by calling the `send-platform-message` action with a `platform` field of `"slack"`, `"telegram"`, `"whatsapp"`, or `"email"`. The action lives in the Dispatch template at `actions/send-platform-message.ts` and you can copy/adapt it for any template.
|
|
231
275
|
|
|
232
|
-
|
|
276
|
+
### Custom adapters {#custom-adapters}
|
|
233
277
|
|
|
234
|
-
To add
|
|
278
|
+
To add a new messaging platform, implement the `PlatformAdapter` interface:
|
|
235
279
|
|
|
236
280
|
```ts
|
|
237
281
|
import type { PlatformAdapter } from "@agent-native/core/server";
|
|
@@ -239,12 +283,12 @@ import type { PlatformAdapter } from "@agent-native/core/server";
|
|
|
239
283
|
const myAdapter: PlatformAdapter = {
|
|
240
284
|
platform: "discord",
|
|
241
285
|
|
|
242
|
-
// Verify the incoming webhook
|
|
286
|
+
// Verify the incoming webhook is authentic
|
|
243
287
|
verifyRequest(request: Request): Promise<boolean> {
|
|
244
288
|
// Validate signature headers
|
|
245
289
|
},
|
|
246
290
|
|
|
247
|
-
// Extract the message text and thread context
|
|
291
|
+
// Extract the message text and thread context
|
|
248
292
|
parseMessage(body: unknown): Promise<{
|
|
249
293
|
text: string;
|
|
250
294
|
threadId: string;
|
|
@@ -254,14 +298,14 @@ const myAdapter: PlatformAdapter = {
|
|
|
254
298
|
// Parse platform-specific payload
|
|
255
299
|
},
|
|
256
300
|
|
|
257
|
-
//
|
|
301
|
+
// Post the agent's response back
|
|
258
302
|
sendResponse(threadId: string, text: string): Promise<void> {
|
|
259
|
-
// Call the platform's API
|
|
303
|
+
// Call the platform's API
|
|
260
304
|
},
|
|
261
305
|
};
|
|
262
306
|
```
|
|
263
307
|
|
|
264
|
-
Register
|
|
308
|
+
Register it in your integrations plugin:
|
|
265
309
|
|
|
266
310
|
```ts
|
|
267
311
|
export default createIntegrationsPlugin({
|
|
@@ -271,14 +315,10 @@ export default createIntegrationsPlugin({
|
|
|
271
315
|
});
|
|
272
316
|
```
|
|
273
317
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
Every incoming webhook is verified before processing:
|
|
318
|
+
Reference implementations live in `packages/core/src/integrations/adapters/` (`slack.ts`, `telegram.ts`, `whatsapp.ts`, `email.ts`) — the email adapter is the most complete example, including signature verification, threading, rate limiting, and HTML rendering.
|
|
277
319
|
|
|
278
|
-
|
|
279
|
-
- **Email (Resend)** — Svix signature verification using `EMAIL_INBOUND_WEBHOOK_SECRET`, with a 5-minute replay window.
|
|
280
|
-
- **Email (SendGrid)** — basic auth or `x-webhook-secret` header matching `EMAIL_INBOUND_WEBHOOK_SECRET`. Plus optional `allowedDomains` filtering on the sender.
|
|
281
|
-
- **Telegram** — requests are validated by checking the secret token set during webhook registration via the Telegram Bot API.
|
|
282
|
-
- **WhatsApp** — Meta's webhook verification challenge (using `WHATSAPP_VERIFY_TOKEN`) and payload signature validation.
|
|
320
|
+
### See also {#see-also}
|
|
283
321
|
|
|
284
|
-
|
|
322
|
+
- [Dispatch template](/docs/template-dispatch) — recommended central inbox for multi-app workspaces
|
|
323
|
+
- [A2A Protocol](/docs/a2a-protocol) — how Dispatch delegates work to other agents
|
|
324
|
+
- [Agent Mentions](/docs/agent-mentions) — `@`-mentioning agents inside the web chat
|