@agent-native/core 0.47.1 → 0.48.2
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/bin/agent-native.js +41 -0
- package/dist/a2a/handlers.js +2 -2
- package/dist/a2a/handlers.js.map +1 -1
- package/dist/a2a/server.js +2 -2
- package/dist/a2a/server.js.map +1 -1
- package/dist/action.d.ts +43 -2
- package/dist/action.d.ts.map +1 -1
- package/dist/action.js.map +1 -1
- package/dist/agent/context-xray/actions/context-evict.d.ts +7 -1
- package/dist/agent/context-xray/actions/context-evict.d.ts.map +1 -1
- package/dist/agent/context-xray/actions/context-manifest-get.d.ts +4 -1
- package/dist/agent/context-xray/actions/context-manifest-get.d.ts.map +1 -1
- package/dist/agent/context-xray/actions/context-pin.d.ts +7 -1
- package/dist/agent/context-xray/actions/context-pin.d.ts.map +1 -1
- package/dist/agent/context-xray/actions/context-report.d.ts +12 -1
- package/dist/agent/context-xray/actions/context-report.d.ts.map +1 -1
- package/dist/agent/context-xray/actions/context-restore.d.ts +7 -1
- package/dist/agent/context-xray/actions/context-restore.d.ts.map +1 -1
- package/dist/agent/context-xray/apply-directives.d.ts.map +1 -1
- package/dist/agent/context-xray/apply-directives.js.map +1 -1
- package/dist/agent/context-xray/schema.d.ts +10 -10
- package/dist/agent/engine/ai-sdk-engine.d.ts.map +1 -1
- package/dist/agent/engine/ai-sdk-engine.js +26 -3
- 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/builder-engine.d.ts +1 -1
- package/dist/agent/engine/builder-engine.d.ts.map +1 -1
- package/dist/agent/engine/builder-engine.js +47 -8
- 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/output-tokens.d.ts +1 -1
- package/dist/agent/engine/output-tokens.d.ts.map +1 -1
- package/dist/agent/engine/output-tokens.js +6 -2
- package/dist/agent/engine/output-tokens.js.map +1 -1
- package/dist/agent/engine/registry.d.ts.map +1 -1
- package/dist/agent/engine/registry.js +7 -4
- package/dist/agent/engine/registry.js.map +1 -1
- package/dist/agent/engine/types.d.ts +19 -0
- package/dist/agent/engine/types.d.ts.map +1 -1
- package/dist/agent/engine/types.js +6 -0
- package/dist/agent/engine/types.js.map +1 -1
- package/dist/agent/model-config.d.ts +22 -14
- package/dist/agent/model-config.d.ts.map +1 -1
- package/dist/agent/model-config.js +113 -8
- package/dist/agent/model-config.js.map +1 -1
- package/dist/agent/production-agent.d.ts +19 -1
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +253 -39
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/run-loop-with-resume.d.ts.map +1 -1
- package/dist/agent/run-loop-with-resume.js +10 -0
- package/dist/agent/run-loop-with-resume.js.map +1 -1
- package/dist/agent/run-manager.d.ts +1 -0
- package/dist/agent/run-manager.d.ts.map +1 -1
- package/dist/agent/run-manager.js +36 -9
- package/dist/agent/run-manager.js.map +1 -1
- package/dist/agent/run-store.d.ts +47 -4
- package/dist/agent/run-store.d.ts.map +1 -1
- package/dist/agent/run-store.js +154 -4
- package/dist/agent/run-store.js.map +1 -1
- package/dist/agent/thread-data-builder.d.ts.map +1 -1
- package/dist/agent/thread-data-builder.js +57 -2
- package/dist/agent/thread-data-builder.js.map +1 -1
- package/dist/agent/types.d.ts +3 -0
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/agent-web/generator.d.ts +3 -3
- package/dist/appearance/actions/change-appearance.d.ts +6 -1
- package/dist/appearance/actions/change-appearance.d.ts.map +1 -1
- package/dist/application-state/handlers.d.ts +2 -2
- package/dist/application-state/handlers.d.ts.map +1 -1
- package/dist/application-state/store.d.ts.map +1 -1
- package/dist/application-state/store.js +17 -0
- package/dist/application-state/store.js.map +1 -1
- package/dist/catalog.json +2 -1
- package/dist/cli/code-agent-commands.d.ts.map +1 -1
- package/dist/cli/code-agent-commands.js +2 -0
- package/dist/cli/code-agent-commands.js.map +1 -1
- package/dist/cli/code-agent-connector.js +7 -13
- package/dist/cli/code-agent-connector.js.map +1 -1
- package/dist/cli/code-agent-executor.d.ts +54 -2
- package/dist/cli/code-agent-executor.d.ts.map +1 -1
- package/dist/cli/code-agent-executor.js +504 -48
- package/dist/cli/code-agent-executor.js.map +1 -1
- package/dist/cli/code-agent-runs.d.ts +13 -0
- package/dist/cli/code-agent-runs.d.ts.map +1 -1
- package/dist/cli/code-agent-runs.js +36 -0
- package/dist/cli/code-agent-runs.js.map +1 -1
- package/dist/cli/code.js +59 -5
- package/dist/cli/code.js.map +1 -1
- package/dist/cli/connect.js +141 -3
- package/dist/cli/connect.js.map +1 -1
- package/dist/cli/index.js +0 -0
- package/dist/cli/pr-visual-recap-workflow.js +1 -1
- package/dist/cli/pr-visual-recap-workflow.js.map +1 -1
- package/dist/cli/recap.js +476 -46
- package/dist/cli/recap.js.map +1 -1
- package/dist/cli/skills.js +298 -179
- package/dist/cli/skills.js.map +1 -1
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +29 -2
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/AgentTaskCard.d.ts.map +1 -1
- package/dist/client/AgentTaskCard.js +17 -2
- package/dist/client/AgentTaskCard.js.map +1 -1
- package/dist/client/AssistantChat.d.ts +1 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +310 -1732
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/CommandMenu.d.ts +1 -1
- package/dist/client/CommandMenu.d.ts.map +1 -1
- package/dist/client/CommandMenu.js +1 -1
- package/dist/client/CommandMenu.js.map +1 -1
- package/dist/client/HighlightedCodeBlock.d.ts +40 -0
- package/dist/client/HighlightedCodeBlock.d.ts.map +1 -0
- package/dist/client/HighlightedCodeBlock.js +110 -0
- package/dist/client/HighlightedCodeBlock.js.map +1 -0
- package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
- package/dist/client/MultiTabAssistantChat.js +8 -1
- package/dist/client/MultiTabAssistantChat.js.map +1 -1
- package/dist/client/PoweredByBadge.d.ts +2 -2
- package/dist/client/PoweredByBadge.d.ts.map +1 -1
- package/dist/client/RunStuckBanner.d.ts +1 -1
- package/dist/client/RunStuckBanner.d.ts.map +1 -1
- package/dist/client/StarfieldBackground.d.ts.map +1 -1
- package/dist/client/StarfieldBackground.js +10 -5
- package/dist/client/StarfieldBackground.js.map +1 -1
- package/dist/client/Turnstile.d.ts +1 -1
- package/dist/client/Turnstile.d.ts.map +1 -1
- package/dist/client/agent-chat-adapter.d.ts +3 -2
- package/dist/client/agent-chat-adapter.d.ts.map +1 -1
- package/dist/client/agent-chat-adapter.js +13 -9
- package/dist/client/agent-chat-adapter.js.map +1 -1
- package/dist/client/app-providers.d.ts +99 -0
- package/dist/client/app-providers.d.ts.map +1 -0
- package/dist/client/app-providers.js +19 -0
- package/dist/client/app-providers.js.map +1 -0
- package/dist/client/assistant-ui-recovery.d.ts +1 -1
- package/dist/client/auth-redirect-url.d.ts +1 -1
- package/dist/client/auth-redirect-url.d.ts.map +1 -1
- package/dist/client/blocks/library/AnnotatedCodeBlock.d.ts +0 -19
- package/dist/client/blocks/library/AnnotatedCodeBlock.d.ts.map +1 -1
- package/dist/client/blocks/library/AnnotatedCodeBlock.js +141 -55
- package/dist/client/blocks/library/AnnotatedCodeBlock.js.map +1 -1
- package/dist/client/blocks/library/DiffBlock.js +1 -1
- package/dist/client/blocks/library/DiffBlock.js.map +1 -1
- package/dist/client/blocks/library/FileTreeBlock.d.ts.map +1 -1
- package/dist/client/blocks/library/FileTreeBlock.js +1 -1
- package/dist/client/blocks/library/FileTreeBlock.js.map +1 -1
- package/dist/client/blocks/library/HighlightedCode.d.ts.map +1 -1
- package/dist/client/blocks/library/HighlightedCode.js +5 -3
- package/dist/client/blocks/library/HighlightedCode.js.map +1 -1
- package/dist/client/blocks/library/annotation-rail.d.ts +5 -4
- package/dist/client/blocks/library/annotation-rail.d.ts.map +1 -1
- package/dist/client/blocks/library/annotation-rail.js +22 -3
- package/dist/client/blocks/library/annotation-rail.js.map +1 -1
- package/dist/client/blocks/library/diagram.js +1 -1
- package/dist/client/blocks/library/diagram.js.map +1 -1
- package/dist/client/blocks/library/diff.config.d.ts +3 -2
- package/dist/client/blocks/library/diff.config.d.ts.map +1 -1
- package/dist/client/blocks/library/diff.config.js +4 -3
- package/dist/client/blocks/library/diff.config.js.map +1 -1
- package/dist/client/blocks/library/question-form.d.ts.map +1 -1
- package/dist/client/blocks/library/question-form.js +2 -1
- package/dist/client/blocks/library/question-form.js.map +1 -1
- package/dist/client/blocks/library/wireframe-kit.d.ts +1 -1
- package/dist/client/blocks/library/wireframe-kit.d.ts.map +1 -1
- package/dist/client/blocks/library/wireframe.js +1 -1
- package/dist/client/blocks/library/wireframe.js.map +1 -1
- package/dist/client/chat/attachment-adapters.d.ts +58 -0
- package/dist/client/chat/attachment-adapters.d.ts.map +1 -0
- package/dist/client/chat/attachment-adapters.js +331 -0
- package/dist/client/chat/attachment-adapters.js.map +1 -0
- package/dist/client/chat/index.d.ts +13 -0
- package/dist/client/chat/index.d.ts.map +1 -0
- package/dist/client/chat/index.js +13 -0
- package/dist/client/chat/index.js.map +1 -0
- package/dist/client/chat/markdown-renderer.d.ts +49 -0
- package/dist/client/chat/markdown-renderer.d.ts.map +1 -0
- package/dist/client/chat/markdown-renderer.js +391 -0
- package/dist/client/chat/markdown-renderer.js.map +1 -0
- package/dist/client/chat/message-components.d.ts +35 -0
- package/dist/client/chat/message-components.d.ts.map +1 -0
- package/dist/client/chat/message-components.js +452 -0
- package/dist/client/chat/message-components.js.map +1 -0
- package/dist/client/chat/repo-helpers.d.ts +41 -0
- package/dist/client/chat/repo-helpers.d.ts.map +1 -0
- package/dist/client/chat/repo-helpers.js +61 -0
- package/dist/client/chat/repo-helpers.js.map +1 -0
- package/dist/client/chat/run-recovery.d.ts +41 -0
- package/dist/client/chat/run-recovery.d.ts.map +1 -0
- package/dist/client/chat/run-recovery.js +348 -0
- package/dist/client/chat/run-recovery.js.map +1 -0
- package/dist/client/chat/tool-call-display.d.ts +34 -0
- package/dist/client/chat/tool-call-display.d.ts.map +1 -0
- package/dist/client/chat/tool-call-display.js +284 -0
- package/dist/client/chat/tool-call-display.js.map +1 -0
- package/dist/client/code-agent-chat-adapter.d.ts.map +1 -1
- package/dist/client/code-agent-chat-adapter.js +20 -0
- package/dist/client/code-agent-chat-adapter.js.map +1 -1
- package/dist/client/collab/index.d.ts +10 -0
- package/dist/client/collab/index.d.ts.map +1 -0
- package/dist/client/collab/index.js +10 -0
- package/dist/client/collab/index.js.map +1 -0
- package/dist/client/components/AgentPresenceChip.d.ts +1 -1
- package/dist/client/components/AgentPresenceChip.d.ts.map +1 -1
- package/dist/client/components/ApiKeySettings.d.ts +1 -1
- package/dist/client/components/ApiKeySettings.d.ts.map +1 -1
- package/dist/client/components/CodeAgentIndicator.d.ts +1 -1
- package/dist/client/components/CodeAgentIndicator.d.ts.map +1 -1
- package/dist/client/components/CodeRequiredDialog.d.ts +1 -1
- package/dist/client/components/CodeRequiredDialog.d.ts.map +1 -1
- package/dist/client/components/LiveCursorOverlay.d.ts.map +1 -1
- package/dist/client/components/LiveCursorOverlay.js.map +1 -1
- package/dist/client/components/PresenceBar.d.ts +1 -1
- package/dist/client/components/PresenceBar.d.ts.map +1 -1
- package/dist/client/composer/PromptComposer.d.ts.map +1 -1
- package/dist/client/composer/PromptComposer.js +6 -26
- package/dist/client/composer/PromptComposer.js.map +1 -1
- package/dist/client/composer/TiptapComposer.d.ts +8 -2
- package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
- package/dist/client/composer/TiptapComposer.js +21 -9
- package/dist/client/composer/TiptapComposer.js.map +1 -1
- package/dist/client/composer/VoiceButton.d.ts +2 -2
- package/dist/client/composer/VoiceButton.d.ts.map +1 -1
- package/dist/client/composer/index.d.ts +1 -1
- package/dist/client/composer/index.d.ts.map +1 -1
- package/dist/client/composer/index.js +1 -1
- package/dist/client/composer/index.js.map +1 -1
- package/dist/client/composer/use-skills.d.ts +1 -1
- package/dist/client/context-xray/ContextMeter.d.ts +1 -1
- package/dist/client/context-xray/ContextMeter.d.ts.map +1 -1
- package/dist/client/context-xray/ContextMeter.js +3 -3
- package/dist/client/context-xray/ContextMeter.js.map +1 -1
- package/dist/client/context-xray/ContextXRayPanel.d.ts.map +1 -1
- package/dist/client/context-xray/ContextXRayPanel.js +4 -3
- package/dist/client/context-xray/ContextXRayPanel.js.map +1 -1
- package/dist/client/context-xray/format.d.ts +11 -0
- package/dist/client/context-xray/format.d.ts.map +1 -1
- package/dist/client/context-xray/format.js +16 -0
- package/dist/client/context-xray/format.js.map +1 -1
- package/dist/client/conversation/AgentConversation.d.ts.map +1 -1
- package/dist/client/conversation/AgentConversation.js +8 -53
- package/dist/client/conversation/AgentConversation.js.map +1 -1
- package/dist/client/conversation/use-near-bottom-autoscroll.d.ts +1 -1
- package/dist/client/conversation/use-near-bottom-autoscroll.d.ts.map +1 -1
- package/dist/client/conversation/use-near-bottom-autoscroll.js +14 -1
- package/dist/client/conversation/use-near-bottom-autoscroll.js.map +1 -1
- package/dist/client/create-query-client.d.ts +28 -0
- package/dist/client/create-query-client.d.ts.map +1 -0
- package/dist/client/create-query-client.js +78 -0
- package/dist/client/create-query-client.js.map +1 -0
- package/dist/client/db-admin/DevDatabaseLink.d.ts +1 -1
- package/dist/client/db-admin/DevDatabaseLink.d.ts.map +1 -1
- package/dist/client/db-admin/RowSidePanel.d.ts +1 -1
- package/dist/client/db-admin/RowSidePanel.d.ts.map +1 -1
- package/dist/client/db-admin/RowSidePanel.js +2 -2
- package/dist/client/db-admin/RowSidePanel.js.map +1 -1
- package/dist/client/db-admin/TableEditor.d.ts +1 -1
- package/dist/client/db-admin/TableEditor.d.ts.map +1 -1
- package/dist/client/db-admin/TableEditor.js +1 -1
- package/dist/client/db-admin/TableEditor.js.map +1 -1
- package/dist/client/db-admin/cell-format.d.ts +1 -1
- package/dist/client/db-admin/cell-format.d.ts.map +1 -1
- package/dist/client/dev-overlay/DevOverlay.d.ts +1 -1
- package/dist/client/dev-overlay/DevOverlay.d.ts.map +1 -1
- package/dist/client/editor/index.d.ts +2 -0
- package/dist/client/editor/index.d.ts.map +1 -0
- package/dist/client/editor/index.js +2 -0
- package/dist/client/editor/index.js.map +1 -0
- package/dist/client/error-format.d.ts.map +1 -1
- package/dist/client/error-format.js +4 -0
- package/dist/client/error-format.js.map +1 -1
- package/dist/client/extensions/AgentNativeExtensionFrame.d.ts +1 -1
- package/dist/client/extensions/AgentNativeExtensionFrame.d.ts.map +1 -1
- package/dist/client/extensions/EmbeddedExtension.d.ts +1 -1
- package/dist/client/extensions/EmbeddedExtension.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionSlot.d.ts +1 -1
- package/dist/client/extensions/ExtensionSlot.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionViewerPage.d.ts +1 -1
- package/dist/client/extensions/ExtensionViewerPage.d.ts.map +1 -1
- package/dist/client/guided-questions.d.ts +6 -6
- package/dist/client/host-bridge.d.ts.map +1 -1
- package/dist/client/host-bridge.js +2 -0
- package/dist/client/host-bridge.js.map +1 -1
- package/dist/client/index.d.ts +7 -6
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +5 -3
- package/dist/client/index.js.map +1 -1
- package/dist/client/onboarding/OnboardingBanner.d.ts +1 -1
- package/dist/client/onboarding/OnboardingBanner.d.ts.map +1 -1
- package/dist/client/onboarding/OnboardingPanel.d.ts +1 -1
- package/dist/client/onboarding/OnboardingPanel.d.ts.map +1 -1
- package/dist/client/onboarding/SetupButton.d.ts +1 -1
- package/dist/client/onboarding/SetupButton.d.ts.map +1 -1
- package/dist/client/org/InvitationBanner.d.ts +1 -1
- package/dist/client/org/InvitationBanner.d.ts.map +1 -1
- package/dist/client/org/OrgSwitcher.d.ts +1 -1
- package/dist/client/org/OrgSwitcher.d.ts.map +1 -1
- package/dist/client/org/RequireActiveOrg.d.ts +1 -1
- package/dist/client/org/RequireActiveOrg.d.ts.map +1 -1
- package/dist/client/org/hooks.d.ts +3 -3
- package/dist/client/org/hooks.d.ts.map +1 -1
- package/dist/client/progress/RunsTray.d.ts +2 -2
- package/dist/client/progress/RunsTray.d.ts.map +1 -1
- package/dist/client/progress/RunsTray.js +34 -9
- package/dist/client/progress/RunsTray.js.map +1 -1
- package/dist/client/resources/ResourceEditor.d.ts.map +1 -1
- package/dist/client/resources/ResourceEditor.js +1 -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 -0
- package/dist/client/resources/ResourcesPanel.js.map +1 -1
- package/dist/client/rich-markdown-editor/BubbleToolbar.d.ts +1 -1
- package/dist/client/rich-markdown-editor/BubbleToolbar.d.ts.map +1 -1
- package/dist/client/rich-markdown-editor/CodeBlockNode.d.ts.map +1 -1
- package/dist/client/rich-markdown-editor/CodeBlockNode.js +2 -1
- package/dist/client/rich-markdown-editor/CodeBlockNode.js.map +1 -1
- package/dist/client/rich-markdown-editor/ImageExtension.d.ts.map +1 -1
- package/dist/client/rich-markdown-editor/ImageExtension.js +2 -1
- package/dist/client/rich-markdown-editor/ImageExtension.js.map +1 -1
- package/dist/client/rich-markdown-editor/RegistryBlockNode.d.ts +1 -1
- package/dist/client/rich-markdown-editor/RegistryBlockNode.d.ts.map +1 -1
- package/dist/client/rich-markdown-editor/RegistryBlockNode.js +1 -1
- package/dist/client/rich-markdown-editor/RegistryBlockNode.js.map +1 -1
- package/dist/client/rich-markdown-editor/RichMarkdownEditor.d.ts +1 -1
- package/dist/client/rich-markdown-editor/SharedRichEditor.d.ts.map +1 -1
- package/dist/client/rich-markdown-editor/SharedRichEditor.js +2 -3
- package/dist/client/rich-markdown-editor/SharedRichEditor.js.map +1 -1
- package/dist/client/rich-markdown-editor/SlashCommandMenu.d.ts +1 -1
- package/dist/client/rich-markdown-editor/SlashCommandMenu.d.ts.map +1 -1
- package/dist/client/route-state.d.ts +12 -2
- package/dist/client/route-state.d.ts.map +1 -1
- package/dist/client/route-state.js +1 -1
- package/dist/client/route-state.js.map +1 -1
- package/dist/client/route-warmup.d.ts +1 -1
- package/dist/client/route-warmup.d.ts.map +1 -1
- package/dist/client/settings/VoiceTranscriptionSection.js +1 -1
- package/dist/client/settings/VoiceTranscriptionSection.js.map +1 -1
- package/dist/client/settings/useBuilderStatus.d.ts +2 -2
- package/dist/client/sharing/ShareDialog.d.ts +1 -1
- package/dist/client/sharing/ShareDialog.d.ts.map +1 -1
- package/dist/client/sse-event-processor.d.ts +8 -0
- package/dist/client/sse-event-processor.d.ts.map +1 -1
- package/dist/client/sse-event-processor.js +33 -10
- package/dist/client/sse-event-processor.js.map +1 -1
- package/dist/client/terminal/AgentTerminal.d.ts +1 -1
- package/dist/client/terminal/AgentTerminal.d.ts.map +1 -1
- package/dist/client/terminal/AgentTerminal.js +4 -2
- package/dist/client/terminal/AgentTerminal.js.map +1 -1
- package/dist/client/tool-cells/BashCell.d.ts +25 -0
- package/dist/client/tool-cells/BashCell.d.ts.map +1 -0
- package/dist/client/tool-cells/BashCell.js +49 -0
- package/dist/client/tool-cells/BashCell.js.map +1 -0
- package/dist/client/tool-cells/EditCell.d.ts +24 -0
- package/dist/client/tool-cells/EditCell.d.ts.map +1 -0
- package/dist/client/tool-cells/EditCell.js +126 -0
- package/dist/client/tool-cells/EditCell.js.map +1 -0
- package/dist/client/tool-cells/FilesChangedSummary.d.ts +13 -0
- package/dist/client/tool-cells/FilesChangedSummary.d.ts.map +1 -0
- package/dist/client/tool-cells/FilesChangedSummary.js +98 -0
- package/dist/client/tool-cells/FilesChangedSummary.js.map +1 -0
- package/dist/client/tool-cells/WriteCell.d.ts +17 -0
- package/dist/client/tool-cells/WriteCell.d.ts.map +1 -0
- package/dist/client/tool-cells/WriteCell.js +26 -0
- package/dist/client/tool-cells/WriteCell.js.map +1 -0
- package/dist/client/tool-cells/index.d.ts +8 -0
- package/dist/client/tool-cells/index.d.ts.map +1 -0
- package/dist/client/tool-cells/index.js +5 -0
- package/dist/client/tool-cells/index.js.map +1 -0
- package/dist/client/transcription/BuilderTranscriptionCta.d.ts +1 -1
- package/dist/client/transcription/BuilderTranscriptionCta.d.ts.map +1 -1
- package/dist/client/use-chat-threads.d.ts +1 -1
- package/dist/client/use-chat-threads.d.ts.map +1 -1
- package/dist/client/use-chat-threads.js +11 -8
- package/dist/client/use-chat-threads.js.map +1 -1
- package/dist/client/use-db-sync.d.ts +2 -0
- package/dist/client/use-db-sync.d.ts.map +1 -1
- package/dist/client/use-db-sync.js +329 -302
- package/dist/client/use-db-sync.js.map +1 -1
- package/dist/code-agents/transcript-normalizer.d.ts +15 -1
- package/dist/code-agents/transcript-normalizer.d.ts.map +1 -1
- package/dist/code-agents/transcript-normalizer.js +47 -0
- package/dist/code-agents/transcript-normalizer.js.map +1 -1
- package/dist/coding-tools/index.d.ts +75 -0
- package/dist/coding-tools/index.d.ts.map +1 -1
- package/dist/coding-tools/index.js +137 -10
- package/dist/coding-tools/index.js.map +1 -1
- package/dist/collab/client.d.ts +1 -1
- package/dist/collab/client.js +20 -14
- package/dist/collab/client.js.map +1 -1
- package/dist/collab/ydoc-manager.d.ts +1 -1
- package/dist/collab/ydoc-manager.d.ts.map +1 -1
- package/dist/collab/ydoc-manager.js +1 -1
- package/dist/collab/ydoc-manager.js.map +1 -1
- package/dist/db/client.d.ts +9 -1
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +204 -48
- package/dist/db/client.js.map +1 -1
- package/dist/db/create-get-db.d.ts +38 -0
- package/dist/db/create-get-db.d.ts.map +1 -1
- package/dist/db/create-get-db.js +204 -4
- package/dist/db/create-get-db.js.map +1 -1
- package/dist/db/migrations.d.ts.map +1 -1
- package/dist/db/migrations.js +159 -67
- package/dist/db/migrations.js.map +1 -1
- package/dist/demo/actions/toggle-demo-mode.d.ts +6 -1
- package/dist/demo/actions/toggle-demo-mode.d.ts.map +1 -1
- package/dist/deploy/build.d.ts.map +1 -1
- package/dist/deploy/build.js +80 -39
- package/dist/deploy/build.js.map +1 -1
- package/dist/deploy/workspace-deploy.js +20 -10
- package/dist/deploy/workspace-deploy.js.map +1 -1
- package/dist/extensions/schema.d.ts +51 -51
- package/dist/extensions/slots/schema.d.ts +13 -13
- package/dist/file-upload/actions/upload-image.d.ts +26 -1
- package/dist/file-upload/actions/upload-image.d.ts.map +1 -1
- package/dist/file-upload/index.d.ts +1 -1
- package/dist/file-upload/index.d.ts.map +1 -1
- package/dist/file-upload/index.js +1 -1
- package/dist/file-upload/index.js.map +1 -1
- package/dist/file-upload/pre-upload-attachments.d.ts +37 -0
- package/dist/file-upload/pre-upload-attachments.d.ts.map +1 -1
- package/dist/file-upload/pre-upload-attachments.js +79 -19
- package/dist/file-upload/pre-upload-attachments.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/integrations/adapters/slack.js +1 -1
- package/dist/integrations/adapters/slack.js.map +1 -1
- package/dist/integrations/plugin.js +1 -1
- package/dist/integrations/plugin.js.map +1 -1
- package/dist/jobs/scheduler.js +70 -21
- package/dist/jobs/scheduler.js.map +1 -1
- package/dist/mcp/actions/create-org-service-token.d.ts +14 -0
- package/dist/mcp/actions/create-org-service-token.d.ts.map +1 -0
- package/dist/mcp/actions/create-org-service-token.js +74 -0
- package/dist/mcp/actions/create-org-service-token.js.map +1 -0
- package/dist/mcp/actions/list-org-service-tokens.d.ts +17 -0
- package/dist/mcp/actions/list-org-service-tokens.d.ts.map +1 -0
- package/dist/mcp/actions/list-org-service-tokens.js +42 -0
- package/dist/mcp/actions/list-org-service-tokens.js.map +1 -0
- package/dist/mcp/actions/revoke-org-service-token.d.ts +7 -0
- package/dist/mcp/actions/revoke-org-service-token.d.ts.map +1 -0
- package/dist/mcp/actions/revoke-org-service-token.js +28 -0
- package/dist/mcp/actions/revoke-org-service-token.js.map +1 -0
- package/dist/mcp/actions/service-token-access.d.ts +24 -0
- package/dist/mcp/actions/service-token-access.d.ts.map +1 -0
- package/dist/mcp/actions/service-token-access.js +63 -0
- package/dist/mcp/actions/service-token-access.js.map +1 -0
- package/dist/mcp/build-server.d.ts +42 -11
- package/dist/mcp/build-server.d.ts.map +1 -1
- package/dist/mcp/build-server.js +53 -3
- package/dist/mcp/build-server.js.map +1 -1
- package/dist/mcp/connect-route.d.ts +35 -0
- package/dist/mcp/connect-route.d.ts.map +1 -1
- package/dist/mcp/connect-route.js +57 -2
- package/dist/mcp/connect-route.js.map +1 -1
- package/dist/mcp/connect-store.d.ts +43 -0
- package/dist/mcp/connect-store.d.ts.map +1 -1
- package/dist/mcp/connect-store.js +129 -12
- package/dist/mcp/connect-store.js.map +1 -1
- package/dist/mcp/oauth-token.d.ts +10 -0
- package/dist/mcp/oauth-token.d.ts.map +1 -1
- package/dist/mcp/oauth-token.js +2 -0
- package/dist/mcp/oauth-token.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +3 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp-client/routes.js +1 -1
- package/dist/mcp-client/routes.js.map +1 -1
- package/dist/org/context.d.ts +4 -0
- package/dist/org/context.d.ts.map +1 -1
- package/dist/org/context.js +10 -0
- package/dist/org/context.js.map +1 -1
- package/dist/org/handlers.d.ts +11 -7
- package/dist/org/handlers.d.ts.map +1 -1
- package/dist/org/handlers.js +0 -8
- package/dist/org/handlers.js.map +1 -1
- package/dist/org/migrations.d.ts.map +1 -1
- package/dist/org/migrations.js +8 -0
- package/dist/org/migrations.js.map +1 -1
- package/dist/org/schema.d.ts +15 -15
- package/dist/progress/actions.d.ts.map +1 -1
- package/dist/progress/actions.js +13 -5
- package/dist/progress/actions.js.map +1 -1
- package/dist/provider-api/actions/delete-staged-dataset.d.ts +9 -0
- package/dist/provider-api/actions/delete-staged-dataset.d.ts.map +1 -0
- package/dist/provider-api/actions/delete-staged-dataset.js +35 -0
- package/dist/provider-api/actions/delete-staged-dataset.js.map +1 -0
- package/dist/provider-api/actions/list-staged-datasets.d.ts +15 -0
- package/dist/provider-api/actions/list-staged-datasets.d.ts.map +1 -0
- package/dist/provider-api/actions/list-staged-datasets.js +41 -0
- package/dist/provider-api/actions/list-staged-datasets.js.map +1 -0
- package/dist/provider-api/actions/query-staged-dataset.d.ts +29 -0
- package/dist/provider-api/actions/query-staged-dataset.d.ts.map +1 -0
- package/dist/provider-api/actions/query-staged-dataset.js +116 -0
- package/dist/provider-api/actions/query-staged-dataset.js.map +1 -0
- package/dist/provider-api/custom-registry.d.ts.map +1 -1
- package/dist/provider-api/custom-registry.js.map +1 -1
- package/dist/provider-api/index.d.ts +10 -10
- package/dist/provider-api/index.js +0 -5
- package/dist/provider-api/index.js.map +1 -1
- package/dist/provider-api/staged-datasets-aggregate.d.ts +46 -0
- package/dist/provider-api/staged-datasets-aggregate.d.ts.map +1 -0
- package/dist/provider-api/staged-datasets-aggregate.js +209 -0
- package/dist/provider-api/staged-datasets-aggregate.js.map +1 -0
- package/dist/provider-api/staged-datasets-store.d.ts +76 -0
- package/dist/provider-api/staged-datasets-store.d.ts.map +1 -0
- package/dist/provider-api/staged-datasets-store.js +319 -0
- package/dist/provider-api/staged-datasets-store.js.map +1 -0
- package/dist/provider-api/staging.d.ts +100 -0
- package/dist/provider-api/staging.d.ts.map +1 -0
- package/dist/provider-api/staging.js +281 -0
- package/dist/provider-api/staging.js.map +1 -0
- package/dist/resources/handlers.d.ts.map +1 -1
- package/dist/resources/handlers.js +13 -1
- package/dist/resources/handlers.js.map +1 -1
- package/dist/scripts/call-agent.d.ts.map +1 -1
- package/dist/scripts/call-agent.js +1 -2
- package/dist/scripts/call-agent.js.map +1 -1
- package/dist/scripts/resources/migrate-learnings.d.ts +1 -1
- package/dist/scripts/resources/migrate-learnings.d.ts.map +1 -1
- package/dist/scripts/resources/migrate-learnings.js +1 -1
- package/dist/scripts/resources/migrate-learnings.js.map +1 -1
- package/dist/secrets/schema.d.ts +7 -7
- package/dist/server/action-discovery.d.ts.map +1 -1
- package/dist/server/action-discovery.js +14 -0
- 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 +3 -2
- package/dist/server/action-routes.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts +33 -0
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +251 -180
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/agent-discovery.d.ts.map +1 -1
- package/dist/server/agent-discovery.js +13 -16
- package/dist/server/agent-discovery.js.map +1 -1
- package/dist/server/agent-teams-run-queue.d.ts +31 -8
- package/dist/server/agent-teams-run-queue.d.ts.map +1 -1
- package/dist/server/agent-teams-run-queue.js +61 -18
- package/dist/server/agent-teams-run-queue.js.map +1 -1
- package/dist/server/agent-teams.d.ts +27 -1
- package/dist/server/agent-teams.d.ts.map +1 -1
- package/dist/server/agent-teams.js +214 -14
- package/dist/server/agent-teams.js.map +1 -1
- package/dist/server/app-base-path.d.ts +20 -0
- package/dist/server/app-base-path.d.ts.map +1 -1
- package/dist/server/app-base-path.js +36 -0
- package/dist/server/app-base-path.js.map +1 -1
- package/dist/server/attachment-actions.d.ts +43 -0
- package/dist/server/attachment-actions.d.ts.map +1 -0
- package/dist/server/attachment-actions.js +214 -0
- package/dist/server/attachment-actions.js.map +1 -0
- package/dist/server/auth.js +1 -1
- package/dist/server/auth.js.map +1 -1
- package/dist/server/complete-text.d.ts +56 -0
- package/dist/server/complete-text.d.ts.map +1 -0
- package/dist/server/complete-text.js +147 -0
- package/dist/server/complete-text.js.map +1 -0
- package/dist/server/core-routes-plugin.d.ts +4 -0
- package/dist/server/core-routes-plugin.d.ts.map +1 -1
- package/dist/server/core-routes-plugin.js +49 -29
- package/dist/server/core-routes-plugin.js.map +1 -1
- package/dist/server/cors-origins.d.ts.map +1 -1
- package/dist/server/cors-origins.js +6 -1
- package/dist/server/cors-origins.js.map +1 -1
- package/dist/server/create-server.d.ts.map +1 -1
- package/dist/server/create-server.js +2 -1
- package/dist/server/create-server.js.map +1 -1
- package/dist/server/csrf.d.ts +1 -1
- package/dist/server/csrf.d.ts.map +1 -1
- package/dist/server/email-actions.d.ts +19 -0
- package/dist/server/email-actions.d.ts.map +1 -0
- package/dist/server/email-actions.js +191 -0
- package/dist/server/email-actions.js.map +1 -0
- package/dist/server/embed-route.js +1 -1
- package/dist/server/embed-route.js.map +1 -1
- package/dist/server/embed-session.d.ts.map +1 -1
- package/dist/server/embed-session.js +5 -1
- package/dist/server/embed-session.js.map +1 -1
- package/dist/server/entry-server.d.ts +24 -0
- package/dist/server/entry-server.d.ts.map +1 -0
- package/dist/server/entry-server.js +54 -0
- package/dist/server/entry-server.js.map +1 -0
- package/dist/server/framework-request-handler.d.ts.map +1 -1
- package/dist/server/framework-request-handler.js +2 -10
- package/dist/server/framework-request-handler.js.map +1 -1
- package/dist/server/google-oauth.d.ts.map +1 -1
- package/dist/server/google-oauth.js +2 -9
- package/dist/server/google-oauth.js.map +1 -1
- package/dist/server/google-realtime-session.d.ts.map +1 -1
- package/dist/server/google-realtime-session.js +6 -4
- package/dist/server/google-realtime-session.js.map +1 -1
- package/dist/server/h3-helpers.d.ts +39 -0
- package/dist/server/h3-helpers.d.ts.map +1 -1
- package/dist/server/h3-helpers.js +104 -1
- package/dist/server/h3-helpers.js.map +1 -1
- package/dist/server/index.d.ts +2 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +2 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/onboarding-html.d.ts.map +1 -1
- package/dist/server/onboarding-html.js +1 -8
- package/dist/server/onboarding-html.js.map +1 -1
- package/dist/server/open-route.d.ts.map +1 -1
- package/dist/server/open-route.js +1 -0
- package/dist/server/open-route.js.map +1 -1
- package/dist/server/prompts/framework-core-compact.d.ts +19 -0
- package/dist/server/prompts/framework-core-compact.d.ts.map +1 -0
- package/dist/server/prompts/framework-core-compact.js +69 -0
- package/dist/server/prompts/framework-core-compact.js.map +1 -0
- package/dist/server/prompts/framework-core.d.ts +26 -0
- package/dist/server/prompts/framework-core.d.ts.map +1 -0
- package/dist/server/prompts/framework-core.js +130 -0
- package/dist/server/prompts/framework-core.js.map +1 -0
- package/dist/server/prompts/index.d.ts +9 -0
- package/dist/server/prompts/index.d.ts.map +1 -0
- package/dist/server/prompts/index.js +9 -0
- package/dist/server/prompts/index.js.map +1 -0
- package/dist/server/prompts/model-overlays.d.ts +18 -0
- package/dist/server/prompts/model-overlays.d.ts.map +1 -0
- package/dist/server/prompts/model-overlays.js +46 -0
- package/dist/server/prompts/model-overlays.js.map +1 -0
- package/dist/server/prompts/shared-rules.d.ts +29 -0
- package/dist/server/prompts/shared-rules.d.ts.map +1 -0
- package/dist/server/prompts/shared-rules.js +54 -0
- package/dist/server/prompts/shared-rules.js.map +1 -0
- package/dist/server/security-headers.d.ts +7 -1
- package/dist/server/security-headers.d.ts.map +1 -1
- package/dist/server/security-headers.js +11 -0
- package/dist/server/security-headers.js.map +1 -1
- package/dist/server/ssr-handler.d.ts.map +1 -1
- package/dist/server/ssr-handler.js +135 -46
- 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 +7 -4
- package/dist/server/transcribe-voice.js.map +1 -1
- package/dist/settings/store.d.ts.map +1 -1
- package/dist/settings/store.js +9 -0
- package/dist/settings/store.js.map +1 -1
- package/dist/shared/markdown-block-split.d.ts +39 -0
- package/dist/shared/markdown-block-split.d.ts.map +1 -0
- package/dist/shared/markdown-block-split.js +97 -0
- package/dist/shared/markdown-block-split.js.map +1 -0
- package/dist/shared/reasoning-effort.js +13 -1
- package/dist/shared/reasoning-effort.js.map +1 -1
- package/dist/shared/streaming-text-smoothing.d.ts +18 -0
- package/dist/shared/streaming-text-smoothing.d.ts.map +1 -1
- package/dist/shared/streaming-text-smoothing.js +70 -4
- package/dist/shared/streaming-text-smoothing.js.map +1 -1
- package/dist/sharing/actions/list-resource-shares.d.ts +24 -1
- package/dist/sharing/actions/list-resource-shares.d.ts.map +1 -1
- package/dist/sharing/actions/set-resource-visibility.d.ts +8 -1
- package/dist/sharing/actions/set-resource-visibility.d.ts.map +1 -1
- package/dist/sharing/actions/share-resource.d.ts +12 -1
- package/dist/sharing/actions/share-resource.d.ts.map +1 -1
- package/dist/sharing/actions/unshare-resource.d.ts +8 -1
- package/dist/sharing/actions/unshare-resource.d.ts.map +1 -1
- package/dist/sharing/schema.d.ts +10 -10
- package/dist/styles/agent-conversation.css +239 -0
- package/dist/templates/default/.agents/skills/delegate-to-agent/SKILL.md +50 -2
- package/dist/templates/default/AGENTS.md +1 -1
- package/dist/templates/default/DEVELOPING.md +19 -0
- package/dist/templates/default/app/entry.client.tsx +4 -1
- package/dist/templates/default/app/entry.server.tsx +4 -56
- package/dist/templates/default/app/global.css +3 -2
- package/dist/templates/default/app/root.tsx +8 -24
- package/dist/templates/default/app/routes/_index.tsx +0 -13
- package/dist/templates/default/package.json +6 -5
- package/dist/templates/default/tsconfig.json +2 -1
- package/dist/templates/starter-shell-sync.spec.ts +118 -0
- package/dist/templates/ui-primitives-sync.spec.ts +399 -0
- package/dist/templates/workspace-core/.agents/skills/delegate-to-agent/SKILL.md +50 -2
- package/dist/terminal/pty-server.js +1 -1
- package/dist/terminal/pty-server.js.map +1 -1
- package/dist/triggers/dispatcher.js +1 -1
- package/dist/triggers/dispatcher.js.map +1 -1
- package/dist/usage/store.d.ts.map +1 -1
- package/dist/usage/store.js +60 -7
- package/dist/usage/store.js.map +1 -1
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +44 -12
- package/dist/vite/client.js.map +1 -1
- package/dist/workspace-files/schema.d.ts +8 -8
- package/dist/workspace-files/tool.d.ts.map +1 -1
- package/dist/workspace-files/tool.js +0 -1
- package/dist/workspace-files/tool.js.map +1 -1
- package/docs/content/a2a-protocol.md +18 -12
- package/docs/content/actions.md +42 -10
- package/docs/content/agent-mentions.md +7 -8
- package/docs/content/agent-teams.md +23 -37
- package/docs/content/agent-web-surfaces.md +18 -9
- package/docs/content/authentication.md +6 -17
- package/docs/content/automations.md +43 -15
- package/docs/content/cli-adapters.md +25 -24
- package/docs/content/client.md +66 -17
- package/docs/content/cloneable-saas.md +19 -23
- package/docs/content/code-agents-ui.md +3 -31
- package/docs/content/components.md +308 -0
- package/docs/content/context-awareness.md +4 -0
- package/docs/content/creating-templates.md +4 -2
- package/docs/content/cross-app-sso.md +45 -19
- package/docs/content/database.md +26 -1
- package/docs/content/deployment.md +3 -1
- package/docs/content/dispatch.md +9 -37
- package/docs/content/drop-in-agent.md +123 -2
- package/docs/content/embedding-sdk.md +35 -0
- package/docs/content/extensions.md +2 -2
- package/docs/content/external-agents.md +86 -171
- package/docs/content/faq.md +6 -27
- package/docs/content/frames.md +9 -12
- package/docs/content/getting-started.md +80 -77
- package/docs/content/key-concepts.md +29 -19
- package/docs/content/mcp-apps.md +103 -0
- package/docs/content/mcp-clients.md +2 -2
- package/docs/content/mcp-protocol.md +40 -17
- package/docs/content/messaging.md +11 -4
- package/docs/content/migration-workbench.md +4 -47
- package/docs/content/multi-app-workspace.md +48 -17
- package/docs/content/multi-tenancy.md +1 -1
- package/docs/content/notifications.md +8 -6
- package/docs/content/observability.md +26 -15
- package/docs/content/onboarding.md +7 -1
- package/docs/content/pr-visual-recap.md +203 -23
- package/docs/content/progress.md +5 -5
- package/docs/content/pure-agent-apps.md +3 -1
- package/docs/content/real-time-collaboration.md +106 -0
- package/docs/content/recurring-jobs.md +17 -1
- package/docs/content/security.md +17 -3
- package/docs/content/server.md +39 -3
- package/docs/content/sharing.md +20 -1
- package/docs/content/skills-guide.md +151 -125
- package/docs/content/template-analytics.md +8 -0
- package/docs/content/template-assets.md +2 -0
- package/docs/content/template-brain.md +59 -3
- package/docs/content/template-calendar.md +8 -0
- package/docs/content/template-clips.md +11 -2
- package/docs/content/template-content.md +24 -4
- package/docs/content/template-design.md +19 -17
- package/docs/content/template-dispatch.md +2 -0
- package/docs/content/template-forms.md +28 -1
- package/docs/content/template-mail.md +17 -0
- package/docs/content/template-plan.md +177 -10
- package/docs/content/template-slides.md +51 -12
- package/docs/content/template-videos.md +17 -0
- package/docs/content/tracking.md +17 -13
- package/docs/content/using-your-agent.md +15 -5
- package/docs/content/voice-input.md +1 -1
- package/docs/content/what-is-agent-native.md +5 -6
- package/docs/content/workspace-connections.md +138 -424
- package/docs/content/workspace-management.md +12 -128
- package/docs/content/workspace.md +125 -199
- package/docs/content/writing-agent-instructions.md +17 -1
- package/package.json +25 -6
- package/src/templates/default/.agents/skills/delegate-to-agent/SKILL.md +50 -2
- package/src/templates/default/AGENTS.md +1 -1
- package/src/templates/default/DEVELOPING.md +19 -0
- package/src/templates/default/app/entry.client.tsx +4 -1
- package/src/templates/default/app/entry.server.tsx +4 -56
- package/src/templates/default/app/global.css +3 -2
- package/src/templates/default/app/root.tsx +8 -24
- package/src/templates/default/app/routes/_index.tsx +0 -13
- package/src/templates/default/package.json +6 -5
- package/src/templates/default/tsconfig.json +2 -1
- package/src/templates/starter-shell-sync.spec.ts +118 -0
- package/src/templates/ui-primitives-sync.spec.ts +399 -0
- package/src/templates/workspace-core/.agents/skills/delegate-to-agent/SKILL.md +50 -2
- package/tsconfig.base.json +2 -10
- package/dist/cli/app-skill.d.ts +0 -157
- package/dist/cli/app-skill.d.ts.map +0 -1
- package/dist/cli/audit-agent-web.d.ts +0 -2
- package/dist/cli/audit-agent-web.d.ts.map +0 -1
- package/dist/cli/code-agent-connector.d.ts +0 -17
- package/dist/cli/code-agent-connector.d.ts.map +0 -1
- package/dist/cli/code.d.ts +0 -66
- package/dist/cli/code.d.ts.map +0 -1
- package/dist/cli/connect.d.ts +0 -140
- package/dist/cli/connect.d.ts.map +0 -1
- package/dist/cli/context-xray-local.d.ts +0 -16
- package/dist/cli/context-xray-local.d.ts.map +0 -1
- package/dist/cli/create-workspace.d.ts +0 -8
- package/dist/cli/create-workspace.d.ts.map +0 -1
- package/dist/cli/index.d.ts +0 -3
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/info.d.ts +0 -2
- package/dist/cli/info.d.ts.map +0 -1
- package/dist/cli/mcp-config-writers.d.ts +0 -82
- package/dist/cli/mcp-config-writers.d.ts.map +0 -1
- package/dist/cli/mcp.d.ts +0 -16
- package/dist/cli/mcp.d.ts.map +0 -1
- package/dist/cli/migrate.d.ts +0 -38
- package/dist/cli/migrate.d.ts.map +0 -1
- package/dist/cli/plan-local.d.ts +0 -43
- package/dist/cli/plan-local.d.ts.map +0 -1
- package/dist/cli/plan-publish-store.d.ts +0 -62
- package/dist/cli/plan-publish-store.d.ts.map +0 -1
- package/dist/cli/pr-visual-recap-workflow.d.ts +0 -11
- package/dist/cli/pr-visual-recap-workflow.d.ts.map +0 -1
- package/dist/cli/recap.d.ts +0 -297
- package/dist/cli/recap.d.ts.map +0 -1
- package/dist/cli/skills.d.ts +0 -162
- package/dist/cli/skills.d.ts.map +0 -1
- package/dist/cli/workspace-dev.d.ts +0 -96
- package/dist/cli/workspace-dev.d.ts.map +0 -1
|
@@ -5,65 +5,78 @@ description: "Shared provider metadata, grants, and credential refs for connect-
|
|
|
5
5
|
|
|
6
6
|
# Workspace Connections
|
|
7
7
|
|
|
8
|
-
Workspace connections are the framework primitive for reusable integration
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
8
|
+
Workspace connections are the framework primitive for reusable integration metadata. They make "connect once, grant apps, reuse credentials" possible without pretending every provider is fully generic.
|
|
9
|
+
|
|
10
|
+
## Quickstart {#quickstart}
|
|
11
|
+
|
|
12
|
+
### The four concepts
|
|
13
|
+
|
|
14
|
+
- **Connection** — a named provider account (`team-slack`, `acme-hubspot`). Records provider id, account label, status, scopes, and safe config. Never stores secret values.
|
|
15
|
+
- **Grant** — permission for a specific app to use a connection. An app without a grant cannot see the connection's credentials.
|
|
16
|
+
- **credentialRef** — a pointer to a vault secret (`{ key: "SLACK_BOT_TOKEN", scope: "org" }`). The connection says where the token lives; the vault holds the value.
|
|
17
|
+
- **Readiness** — the combined status an app sees: `connected` (granted + credentials present), `needs_grant`, `needs_credentials`, `needs_attention`, or `not_configured`.
|
|
18
|
+
|
|
19
|
+
### Worked example: Slack
|
|
20
|
+
|
|
21
|
+
Connect Slack once and grant it to Brain and Analytics:
|
|
22
|
+
|
|
23
|
+
```ts
|
|
24
|
+
import {
|
|
25
|
+
upsertWorkspaceConnection,
|
|
26
|
+
upsertWorkspaceConnectionGrant,
|
|
27
|
+
} from "@agent-native/core/workspace-connections";
|
|
28
|
+
|
|
29
|
+
await upsertWorkspaceConnection({
|
|
30
|
+
id: "acme-slack",
|
|
31
|
+
provider: "slack",
|
|
32
|
+
label: "Acme Slack",
|
|
33
|
+
accountId: "T012345",
|
|
34
|
+
accountLabel: "Acme",
|
|
35
|
+
status: "connected",
|
|
36
|
+
scopes: ["channels:history", "groups:history", "chat:write"],
|
|
37
|
+
config: {
|
|
38
|
+
teamDomain: "acme",
|
|
39
|
+
channelHints: ["product", "dev-fusion", "customer-success"],
|
|
40
|
+
},
|
|
41
|
+
credentialRefs: [{ key: "SLACK_BOT_TOKEN", scope: "org" }],
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
await upsertWorkspaceConnectionGrant({
|
|
45
|
+
connectionId: "acme-slack",
|
|
46
|
+
appId: "brain",
|
|
47
|
+
});
|
|
48
|
+
await upsertWorkspaceConnectionGrant({
|
|
49
|
+
connectionId: "acme-slack",
|
|
50
|
+
appId: "analytics",
|
|
51
|
+
});
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### What apps call
|
|
55
|
+
|
|
56
|
+
Before asking a user to paste a new key, check readiness first:
|
|
57
|
+
|
|
58
|
+
```ts
|
|
59
|
+
import { listWorkspaceConnectionProviderCatalogForApp } from "@agent-native/core/workspace-connections";
|
|
60
|
+
|
|
61
|
+
const catalog = await listWorkspaceConnectionProviderCatalogForApp({
|
|
62
|
+
appId: "brain",
|
|
63
|
+
templateUse: "brain",
|
|
64
|
+
provider: "slack",
|
|
65
|
+
includeConnections: "all",
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
const slack = catalog.providers[0];
|
|
69
|
+
if (slack.workspaceConnection.grantState === "needs_grant") {
|
|
70
|
+
// Show "Grant Brain access" instead of asking for a second Slack token.
|
|
71
|
+
}
|
|
72
|
+
if (slack.readiness.status === "needs_credentials") {
|
|
73
|
+
// Show the missing credential ref names, never a secret value.
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Reference {#reference}
|
|
78
|
+
|
|
79
|
+
### Provider Catalog
|
|
67
80
|
|
|
68
81
|
Import the catalog from `@agent-native/core/connections`:
|
|
69
82
|
|
|
@@ -96,12 +109,9 @@ The initial provider ids are:
|
|
|
96
109
|
| `clips` | search, import, meetings | brain, clips, videos |
|
|
97
110
|
| `generic` | search, import, docs | custom webhooks and file drops |
|
|
98
111
|
|
|
99
|
-
Credential keys are names only, such as `SLACK_BOT_TOKEN` or `GITHUB_TOKEN`.
|
|
100
|
-
Provider metadata must never include actual credential values.
|
|
101
|
-
|
|
102
|
-
## Connection Store
|
|
112
|
+
Credential keys are names only, such as `SLACK_BOT_TOKEN` or `GITHUB_TOKEN`. Provider metadata must never include actual credential values.
|
|
103
113
|
|
|
104
|
-
|
|
114
|
+
### Connection Store API
|
|
105
115
|
|
|
106
116
|
```ts
|
|
107
117
|
import {
|
|
@@ -115,19 +125,6 @@ import {
|
|
|
115
125
|
revokeWorkspaceConnectionGrant,
|
|
116
126
|
} from "@agent-native/core/workspace-connections";
|
|
117
127
|
|
|
118
|
-
await upsertWorkspaceConnection({
|
|
119
|
-
id: "team-slack",
|
|
120
|
-
provider: "slack",
|
|
121
|
-
label: "Team Slack",
|
|
122
|
-
accountLabel: "Acme",
|
|
123
|
-
credentialRefs: [{ key: "SLACK_BOT_TOKEN", scope: "org" }],
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
await upsertWorkspaceConnectionGrant({
|
|
127
|
-
connectionId: "team-slack",
|
|
128
|
-
appId: "dispatch",
|
|
129
|
-
});
|
|
130
|
-
|
|
131
128
|
const connections = await listWorkspaceConnections({ includeDisabled: true });
|
|
132
129
|
const grants = await listWorkspaceConnectionGrants({ appId: "brain" });
|
|
133
130
|
|
|
@@ -151,127 +148,61 @@ const brainCatalog = await listWorkspaceConnectionProviderCatalogForApp({
|
|
|
151
148
|
});
|
|
152
149
|
```
|
|
153
150
|
|
|
154
|
-
The `credentialRefs` array points at vault keys; it is not credential storage.
|
|
155
|
-
For example, `{ key: "SLACK_BOT_TOKEN", scope: "org" }` tells a granted app to
|
|
156
|
-
look up the org-scoped vault secret named `SLACK_BOT_TOKEN` when it needs to
|
|
157
|
-
call Slack. Connection-level refs can describe the provider account, and
|
|
158
|
-
grant-level refs can narrow or override what a specific app should use.
|
|
151
|
+
The `credentialRefs` array points at vault keys; it is not credential storage. For example, `{ key: "SLACK_BOT_TOKEN", scope: "org" }` tells a granted app to look up the org-scoped vault secret named `SLACK_BOT_TOKEN` when it needs to call Slack. Connection-level refs describe the provider account; grant-level refs can narrow or override what a specific app should use.
|
|
159
152
|
|
|
160
|
-
Connection rows are scoped to the active org when one is present. Without an
|
|
161
|
-
org, they are scoped to the authenticated user. Grant rows use the same scope,
|
|
162
|
-
which means any member of an org can see org-level grants while other orgs and
|
|
163
|
-
personal scopes cannot.
|
|
153
|
+
Connection rows are scoped to the active org when one is present. Without an org, they are scoped to the authenticated user. Grant rows use the same scope.
|
|
164
154
|
|
|
165
|
-
`allowedApps`
|
|
155
|
+
**Legacy `allowedApps` field:** `allowedApps: []` means every app in the same scope may use the connection; `allowedApps: ["dispatch"]` grants access through the legacy field. Use explicit `workspace_connection_grants` rows for new setup — they make revocation, audit, and per-app readiness easier. `revokeWorkspaceConnectionGrant(connectionId, appId)` removes an explicit grant but does not change legacy `allowedApps`.
|
|
166
156
|
|
|
167
|
-
- `
|
|
168
|
-
- `allowedApps: ["dispatch"]` grants access through the legacy field.
|
|
169
|
-
- `workspace_connection_grants` rows add explicit per-app grants alongside the
|
|
170
|
-
legacy field.
|
|
157
|
+
Use `summarizeWorkspaceConnectionProviderForApp()` and `summarizeWorkspaceConnectionProviderReadiness()` for app-facing status instead of hand-rolling grant checks. The shared summaries return `grantState`, `grantAvailability`, safe credential ref names, per-app connection rows, and readiness fields such as `readyConnectionCount` and `missingRequiredCredentialKeys`.
|
|
171
158
|
|
|
172
|
-
|
|
173
|
-
grant. Revoking a grant does not change legacy `allowedApps`; if the app is
|
|
174
|
-
still listed there, the connection remains available to that app.
|
|
159
|
+
For new app setup screens, prefer `listWorkspaceConnectionProviderCatalogForApp()` as the higher-level boundary — it combines the provider catalog, scoped connections, explicit grants, per-app access summaries, and provider readiness into one safe shape.
|
|
175
160
|
|
|
176
|
-
|
|
177
|
-
`summarizeWorkspaceConnectionProviderReadiness()` for app-facing status instead
|
|
178
|
-
of hand-rolling grant checks. The shared summaries return the stable contract
|
|
179
|
-
used by Brain, Analytics, and Dispatch: `grantState`, `grantAvailability`,
|
|
180
|
-
safe credential ref names, per-app connection rows, counts for granted/active
|
|
181
|
-
connections, and readiness fields such as `readyConnectionCount` and
|
|
182
|
-
`missingRequiredCredentialKeys`.
|
|
161
|
+
### How this complements the vault
|
|
183
162
|
|
|
184
|
-
|
|
185
|
-
`listWorkspaceConnectionProviderCatalogForApp()` as the higher-level boundary.
|
|
186
|
-
It combines the provider catalog, scoped connections, explicit grants,
|
|
187
|
-
per-app access summaries, and provider readiness into one safe shape. Apps can
|
|
188
|
-
add their own source counts, local health checks, and connector-specific
|
|
189
|
-
fields on top without duplicating grant logic.
|
|
163
|
+
The credential vault answers: "Where is the secret stored, who can access it, and which apps are granted it?"
|
|
190
164
|
|
|
191
|
-
|
|
165
|
+
Workspace connection provider metadata answers: "Which provider is this, what can it do, what credential keys might it need, and which templates should offer it?"
|
|
192
166
|
|
|
193
|
-
|
|
194
|
-
and which apps are granted it?"
|
|
167
|
+
Use both together:
|
|
195
168
|
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
169
|
+
1. Dispatch (or another workspace setup flow) creates the underlying vault secret or OAuth credential reference.
|
|
170
|
+
2. The workspace connection store records the provider account, safe metadata, credential refs, and app grants.
|
|
171
|
+
3. Each app reads provider metadata from the catalog and connection/grant summaries from the shared store.
|
|
172
|
+
4. The app UI shows readiness: connected, granted but unhealthy, needs grant, missing credentials, or metadata-only.
|
|
173
|
+
5. App-specific SQL stores only app-specific source ids, cursors, filters, sync windows, metric definitions, review rules, and user choices.
|
|
174
|
+
6. App actions resolve credentials at execution time through granted connection refs and the vault, and never return secret values.
|
|
199
175
|
|
|
200
|
-
|
|
176
|
+
### Provider reader runtime
|
|
177
|
+
|
|
178
|
+
The provider-reader layer is a contract first, not a promise that every provider has a shared live reader. Reader definitions describe supported operations, credential requirements, and implementation status: `metadata-only`, `template-owned`, or `shared`. The runtime resolves the granted workspace connection and credential refs for an app, calls a registered handler, and returns normalized items without exposing secret values.
|
|
201
179
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
Slack
|
|
224
|
-
the workspace connection catalog or the app's readiness action and prefer a
|
|
225
|
-
granted shared connection when one exists. If a connection exists with
|
|
226
|
-
`needs_grant`, ask for that app grant instead of asking the user to paste a new
|
|
227
|
-
secret.
|
|
228
|
-
|
|
229
|
-
## Minimal Onboarding Flow
|
|
230
|
-
|
|
231
|
-
Use a connect-once flow before app-specific source setup:
|
|
232
|
-
|
|
233
|
-
1. Connect the provider account in Dispatch or the workspace integrations
|
|
234
|
-
surface.
|
|
235
|
-
2. Store safe metadata and credential ref names only; put secret values in the
|
|
236
|
-
vault.
|
|
237
|
-
3. Grant only the apps that need the provider, such as Brain, Analytics, Mail,
|
|
238
|
-
or Dispatch.
|
|
239
|
-
4. In each app, create the app-local source or data source with only the
|
|
240
|
-
provider-specific choices it owns: channels, repositories, polling windows,
|
|
241
|
-
filters, cursors, or sync cadence.
|
|
242
|
-
5. Agents inspect readiness and grants before asking for new credentials.
|
|
243
|
-
|
|
244
|
-
This keeps the UX clean without overclaiming the abstraction: users connect
|
|
245
|
-
Slack, GitHub, HubSpot, Google Drive, Granola, and similar providers once, then
|
|
246
|
-
choose which apps may use the credential/account metadata. Each app still
|
|
247
|
-
decides what data to read, how to read it, and what the data means.
|
|
248
|
-
|
|
249
|
-
## Build A Reusable Connector Once
|
|
250
|
-
|
|
251
|
-
When a new provider should work across multiple templates, split the work into
|
|
252
|
-
three layers:
|
|
253
|
-
|
|
254
|
-
1. **Provider metadata:** add or reuse a provider in
|
|
255
|
-
`@agent-native/core/connections`. This is the stable id, display label,
|
|
256
|
-
capability list, recommended template uses, and credential key names.
|
|
257
|
-
2. **Workspace connection:** Dispatch or another workspace setup surface stores
|
|
258
|
-
the connected account's safe metadata, status, scopes, `credentialRefs`, and
|
|
259
|
-
app grants through `@agent-native/core/workspace-connections`.
|
|
260
|
-
3. **App-local source:** Brain, Analytics, Mail, or another app stores only the
|
|
261
|
-
app-specific choices it owns, such as Slack channels, GitHub repositories,
|
|
262
|
-
HubSpot object filters, sync cursors, or polling cadence.
|
|
263
|
-
|
|
264
|
-
Do not duplicate OAuth/token storage in each app. The connection record should
|
|
265
|
-
say "this is Acme Slack and its token lives at `SLACK_BOT_TOKEN`"; the app-local
|
|
266
|
-
source should say "Brain may ingest `#product` and `#dev-fusion` from that
|
|
267
|
-
Slack connection." The Slack API handler, cursor, retry policy, and
|
|
268
|
-
distillation rules still belong to Brain unless and until those pieces are
|
|
269
|
-
promoted to a shared provider-reader implementation.
|
|
180
|
+
Most live handlers remain template-owned today, which means Brain still owns Slack/GitHub ingestion behavior and Analytics still owns analytics interpretation. Promote a reader to `shared` only when the provider-specific API calls, pagination, permissions, and result semantics are truly reusable across templates.
|
|
181
|
+
|
|
182
|
+
### App readiness pattern
|
|
183
|
+
|
|
184
|
+
Apps that consume shared provider credentials should expose a read-only readiness action and a small setup surface covering:
|
|
185
|
+
|
|
186
|
+
- **Provider catalog:** provider id, label, capabilities, recommended template uses, and required credential key names from `@agent-native/core/connections`.
|
|
187
|
+
- **Workspace summary:** connection count, active/granted counts, grant state, credential ref names, and non-secret account labels from `@agent-native/core/workspace-connections`.
|
|
188
|
+
- **Provider readiness:** `ready`, `needs_credentials`, `needs_attention`, `checking`, `disabled`, or `not_configured` via `summarizeWorkspaceConnectionProviderReadiness()`.
|
|
189
|
+
- **Source state:** app-local configured sources, cursors, sync status, and next action.
|
|
190
|
+
|
|
191
|
+
Brain's Sources page is the reference implementation. It shows reusable workspace connection providers beside Brain source records, labels grant states as `connected`, `granted`, `needs_grant`, or `not_connected`, and shows provider health as ready, missing keys, grant needed, needs repair, or metadata only.
|
|
192
|
+
|
|
193
|
+
### Building a reusable connector
|
|
194
|
+
|
|
195
|
+
When a new provider should work across multiple templates:
|
|
196
|
+
|
|
197
|
+
1. **Provider metadata:** add or reuse a provider in `@agent-native/core/connections`. This is the stable id, display label, capability list, recommended template uses, and credential key names.
|
|
198
|
+
2. **Workspace connection:** Dispatch or another workspace setup surface stores the connected account's safe metadata, status, scopes, `credentialRefs`, and app grants through `@agent-native/core/workspace-connections`.
|
|
199
|
+
3. **App-local source:** Brain, Analytics, Mail, or another app stores only the app-specific choices it owns, such as Slack channels, GitHub repositories, HubSpot object filters, sync cursors, or polling cadence.
|
|
200
|
+
|
|
201
|
+
Do not duplicate OAuth/token storage in each app. The connection record says "this is Acme Slack and its token lives at `SLACK_BOT_TOKEN`"; the app-local source says "Brain may ingest `#product` and `#dev-fusion` from that Slack connection."
|
|
270
202
|
|
|
271
203
|
### Dispatch control-plane setup
|
|
272
204
|
|
|
273
|
-
Dispatch exposes
|
|
274
|
-
store functions an app could call directly from server code:
|
|
205
|
+
Dispatch exposes control-plane actions that write the same shared store functions an app could call directly:
|
|
275
206
|
|
|
276
207
|
```ts
|
|
277
208
|
// templates/dispatch/actions/upsert-workspace-connection.ts delegates to this.
|
|
@@ -283,10 +214,7 @@ await upsertWorkspaceConnection({
|
|
|
283
214
|
accountLabel: "acme",
|
|
284
215
|
status: "connected",
|
|
285
216
|
scopes: ["channels:history", "groups:history"],
|
|
286
|
-
config: {
|
|
287
|
-
teamDomain: "acme",
|
|
288
|
-
preferredChannels: ["product", "dev-fusion"],
|
|
289
|
-
},
|
|
217
|
+
config: { teamDomain: "acme", preferredChannels: ["product", "dev-fusion"] },
|
|
290
218
|
credentialRefs: [
|
|
291
219
|
{
|
|
292
220
|
key: "SLACK_BOT_TOKEN",
|
|
@@ -296,263 +224,49 @@ await upsertWorkspaceConnection({
|
|
|
296
224
|
},
|
|
297
225
|
],
|
|
298
226
|
});
|
|
299
|
-
```
|
|
300
|
-
|
|
301
|
-
Then grant the apps that should reuse the provider:
|
|
302
227
|
|
|
303
|
-
|
|
228
|
+
// Then grant the apps that should reuse the provider.
|
|
304
229
|
await upsertWorkspaceConnectionGrant({
|
|
305
230
|
connectionId: "team-slack",
|
|
306
231
|
appId: "brain",
|
|
307
232
|
});
|
|
308
|
-
|
|
309
233
|
await upsertWorkspaceConnectionGrant({
|
|
310
234
|
connectionId: "team-slack",
|
|
311
235
|
appId: "analytics",
|
|
312
236
|
});
|
|
313
237
|
```
|
|
314
238
|
|
|
315
|
-
Use `allowedApps: []` only when a connection should be available to every app in
|
|
316
|
-
the same workspace scope. Prefer explicit grant rows for production setup,
|
|
317
|
-
because they make revocation, audit, and per-app readiness easier to explain.
|
|
318
|
-
|
|
319
|
-
### App consumption boundary
|
|
320
|
-
|
|
321
|
-
App setup screens and agents should use the high-level catalog helper whenever
|
|
322
|
-
they need provider readiness:
|
|
323
|
-
|
|
324
|
-
```ts
|
|
325
|
-
import { listWorkspaceConnectionProviderCatalogForApp } from "@agent-native/core/workspace-connections";
|
|
326
|
-
|
|
327
|
-
const catalog = await listWorkspaceConnectionProviderCatalogForApp({
|
|
328
|
-
appId: "brain",
|
|
329
|
-
templateUse: "brain",
|
|
330
|
-
provider: "slack",
|
|
331
|
-
includeConnections: "all",
|
|
332
|
-
});
|
|
333
|
-
|
|
334
|
-
const slack = catalog.providers[0];
|
|
335
|
-
if (slack.workspaceConnection.grantState === "needs_grant") {
|
|
336
|
-
// Show "Grant Brain access" instead of asking for a second Slack token.
|
|
337
|
-
}
|
|
338
|
-
if (slack.readiness.status === "needs_credentials") {
|
|
339
|
-
// Show the missing credential ref names, never a secret value.
|
|
340
|
-
}
|
|
341
|
-
```
|
|
342
|
-
|
|
343
|
-
App execution code can then resolve credential values from granted
|
|
344
|
-
`credentialRefs` through the vault in the active request scope. Brain's
|
|
345
|
-
`source-credentials.ts` is the current reference implementation: it lists
|
|
346
|
-
workspace connections for the provider, checks `getWorkspaceConnectionAppAccess`
|
|
347
|
-
for `appId: "brain"`, merges connection-level and grant-level credential refs,
|
|
348
|
-
and reads the first matching scoped vault secret. Other apps should follow that
|
|
349
|
-
shape instead of reaching for `process.env`.
|
|
350
|
-
|
|
351
|
-
## Concrete Provider Examples
|
|
352
|
-
|
|
353
|
-
### Slack: Brain, Analytics, Dispatch
|
|
354
|
-
|
|
355
|
-
Use one Slack workspace connection for channel history and messaging-related
|
|
356
|
-
workflows:
|
|
357
|
-
|
|
358
|
-
```ts
|
|
359
|
-
await upsertWorkspaceConnection({
|
|
360
|
-
id: "acme-slack",
|
|
361
|
-
provider: "slack",
|
|
362
|
-
label: "Acme Slack",
|
|
363
|
-
accountId: "T012345",
|
|
364
|
-
accountLabel: "Acme",
|
|
365
|
-
status: "connected",
|
|
366
|
-
scopes: ["channels:history", "groups:history", "chat:write"],
|
|
367
|
-
config: {
|
|
368
|
-
teamDomain: "acme",
|
|
369
|
-
channelHints: ["product", "dev-fusion", "customer-success"],
|
|
370
|
-
},
|
|
371
|
-
credentialRefs: [{ key: "SLACK_BOT_TOKEN", scope: "org" }],
|
|
372
|
-
});
|
|
239
|
+
Use `allowedApps: []` only when a connection should be available to every app in the same scope. Prefer explicit grant rows for production setup.
|
|
373
240
|
|
|
374
|
-
|
|
375
|
-
connectionId: "acme-slack",
|
|
376
|
-
appId: "brain",
|
|
377
|
-
});
|
|
378
|
-
await upsertWorkspaceConnectionGrant({
|
|
379
|
-
connectionId: "acme-slack",
|
|
380
|
-
appId: "analytics",
|
|
381
|
-
});
|
|
382
|
-
await upsertWorkspaceConnectionGrant({
|
|
383
|
-
connectionId: "acme-slack",
|
|
384
|
-
appId: "dispatch",
|
|
385
|
-
});
|
|
386
|
-
```
|
|
241
|
+
### Credential resolution
|
|
387
242
|
|
|
388
|
-
|
|
389
|
-
status in `brain_sources`; it resolves `SLACK_BOT_TOKEN` from the granted
|
|
390
|
-
workspace connection before Brain-local credentials.
|
|
391
|
-
- **Analytics** should check `data-source-status` for the Slack provider and
|
|
392
|
-
use shared readiness before requesting a Slack credential for channel or
|
|
393
|
-
funnel analysis.
|
|
394
|
-
- **Dispatch** owns the setup/grant UX and can use the same connection for
|
|
395
|
-
Slack-triggered routing, notifications, and agent entrypoints.
|
|
243
|
+
App execution code resolves credential values from granted `credentialRefs` through the vault in the active request scope. Brain's `source-credentials.ts` is the current reference implementation: it lists workspace connections for the provider, checks `getWorkspaceConnectionAppAccess` for `appId: "brain"`, merges connection-level and grant-level credential refs, and reads the first matching scoped vault secret. Other apps should follow that shape instead of reaching for `process.env`.
|
|
396
244
|
|
|
397
|
-
|
|
245
|
+
## Design notes {#design-notes}
|
|
398
246
|
|
|
399
|
-
|
|
400
|
-
|
|
247
|
+
<details>
|
|
248
|
+
<summary>Reader-promotion policy and path to "connect once, use everywhere"</summary>
|
|
401
249
|
|
|
402
|
-
|
|
403
|
-
await upsertWorkspaceConnection({
|
|
404
|
-
id: "acme-hubspot",
|
|
405
|
-
provider: "hubspot",
|
|
406
|
-
label: "Acme HubSpot",
|
|
407
|
-
accountLabel: "Acme CRM",
|
|
408
|
-
status: "connected",
|
|
409
|
-
scopes: ["crm.objects.contacts.read", "crm.objects.companies.read"],
|
|
410
|
-
config: {
|
|
411
|
-
portalId: "1234567",
|
|
412
|
-
objectHints: ["companies", "contacts", "deals"],
|
|
413
|
-
},
|
|
414
|
-
credentialRefs: [{ key: "HUBSPOT_PRIVATE_APP_TOKEN", scope: "org" }],
|
|
415
|
-
});
|
|
250
|
+
### App-local boundary
|
|
416
251
|
|
|
417
|
-
|
|
418
|
-
await upsertWorkspaceConnectionGrant({
|
|
419
|
-
connectionId: "acme-hubspot",
|
|
420
|
-
appId,
|
|
421
|
-
});
|
|
422
|
-
}
|
|
423
|
-
```
|
|
252
|
+
The boundary between shared connections and app-local sources is intentional. What is reusable today is provider identity, credential-reference resolution, per-app grants, provider readiness, safe account metadata, and the normalized provider-reader contract. What is not yet generic is most live provider API reading, OAuth flow ownership, ingestion cursors, source filters, sync cadence, and domain interpretation. Those stay in the app that owns the workflow unless a reader implementation is explicitly promoted to shared.
|
|
424
253
|
|
|
425
|
-
-
|
|
426
|
-
customer segmentation. Its readiness action should show a HubSpot workspace
|
|
427
|
-
connection before asking for duplicate CRM secrets.
|
|
428
|
-
- **Brain** can ingest selected customer-facing context, policies, and product
|
|
429
|
-
rationale derived from CRM workflows while keeping Brain-specific allow-lists
|
|
430
|
-
and proposal gates in Brain SQL.
|
|
431
|
-
- **Mail** should use the same workspace connection pattern when adding CRM
|
|
432
|
-
enrichment to mailbox workflows. The provider catalog already recommends
|
|
433
|
-
`hubspot` for `mail`; a Mail readiness action should call
|
|
434
|
-
`listWorkspaceConnectionProviderCatalogForApp({ appId: "mail" })` before
|
|
435
|
-
prompting for a HubSpot token.
|
|
254
|
+
App source connectors should not read deploy-level environment variables as a fallback for user/org source credentials. Env vars are global to the deployment and do not express workspace grants.
|
|
436
255
|
|
|
437
|
-
|
|
256
|
+
Agents should follow a simple rule: if a user asks to connect Slack, GitHub, HubSpot, Gmail, Google Drive, Granola, or another shared provider, inspect the workspace connection catalog first. If the provider is `connected`, use it. If it is `needs_grant`, ask for or perform the app grant. If it is `needs_credentials`, ask for the missing vault key. Only ask for a new raw key when no reusable connection exists.
|
|
438
257
|
|
|
439
|
-
|
|
440
|
-
context:
|
|
258
|
+
### Path to "connect once, use everywhere"
|
|
441
259
|
|
|
442
|
-
|
|
443
|
-
await upsertWorkspaceConnection({
|
|
444
|
-
id: "acme-github",
|
|
445
|
-
provider: "github",
|
|
446
|
-
label: "Acme GitHub",
|
|
447
|
-
accountLabel: "acme",
|
|
448
|
-
status: "connected",
|
|
449
|
-
scopes: ["contents:read", "issues:read", "pull_requests:read"],
|
|
450
|
-
config: {
|
|
451
|
-
owner: "acme",
|
|
452
|
-
repositoryHints: ["agent-native", "website"],
|
|
453
|
-
},
|
|
454
|
-
credentialRefs: [{ key: "GITHUB_TOKEN", scope: "org" }],
|
|
455
|
-
});
|
|
260
|
+
The provider catalog and grant store are the foundation for a broader workspace layer:
|
|
456
261
|
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
});
|
|
465
|
-
await upsertWorkspaceConnectionGrant({
|
|
466
|
-
connectionId: "acme-github",
|
|
467
|
-
appId: "dispatch",
|
|
468
|
-
});
|
|
469
|
-
```
|
|
262
|
+
- Shared provider ids and capability names keep templates aligned.
|
|
263
|
+
- Workspace-level inventory can show which providers are configured across Brain, Mail, Analytics, Dispatch, and future apps.
|
|
264
|
+
- Connection rows record account labels, status, allowed apps, credential refs, and health checks without changing template-facing provider ids.
|
|
265
|
+
- Grant rows let a workspace owner connect once, then enable individual apps as the workspace adopts them.
|
|
266
|
+
- Agents can route work across apps knowing which providers are already connected and which apps have grants.
|
|
267
|
+
- Federated search can ask for providers with `search`, `docs`, `messages`, `meetings`, `crm`, or `code` capabilities instead of hardcoding every app's connector list.
|
|
268
|
+
- Provider-specific readers, OAuth refresh flows, ingestion checkpoints, and app-owned data models can become shared later, but they are not implied by a workspace connection today.
|
|
470
269
|
|
|
471
|
-
|
|
472
|
-
product memory, with app-local repo allow-lists and distillation rules.
|
|
473
|
-
- **Analytics** can use the same granted token for engineering throughput,
|
|
474
|
-
release, and operational dashboards.
|
|
475
|
-
- **Dispatch** can route GitHub-related questions to the right app or connected
|
|
476
|
-
agent without owning repository-specific ingestion state.
|
|
477
|
-
|
|
478
|
-
## Consumer Guide By Surface
|
|
479
|
-
|
|
480
|
-
| Surface | What it should read | What it should store locally |
|
|
481
|
-
| ------------- | ------------------------------------------------------- | ----------------------------------------------------------------- |
|
|
482
|
-
| **Dispatch** | Full provider catalog, connections, grants, app targets | Workspace setup policy, grant choices, safe account metadata |
|
|
483
|
-
| **Brain** | Catalog helper with `{ appId: "brain" }` | Sources, allow-lists, cursors, extraction rules, proposals |
|
|
484
|
-
| **Analytics** | `data-source-status` plus workspace provider summaries | Metric definitions, datasets, sync windows, dashboard choices |
|
|
485
|
-
| **Mail** | A Mail readiness action using the same catalog helper | Mailboxes, labels, reply rules, CRM enrichment preferences |
|
|
486
|
-
| **Agents** | App readiness actions before asking for secrets | No secret values; only cite provider ids, grant state, next steps |
|
|
487
|
-
|
|
488
|
-
Analytics data sources are app-owned even when their credentials come from a
|
|
489
|
-
workspace connection. A HubSpot or GitHub grant tells Analytics which provider
|
|
490
|
-
account it may use; the Analytics app still owns the source-of-truth decision,
|
|
491
|
-
warehouse-vs-live-provider choice, metric definitions, dashboard semantics, and
|
|
492
|
-
saved analyses.
|
|
493
|
-
|
|
494
|
-
Brain's "ask across everything" direction should be federated rather than
|
|
495
|
-
centralized. Brain can answer from reviewed Brain knowledge and raw captures it
|
|
496
|
-
is allowed to search. When a question needs live app-owned data such as current
|
|
497
|
-
analytics metrics, mail state, calendar availability, or Dispatch runtime
|
|
498
|
-
policy, Brain should delegate to the specialized app agent or action and cite
|
|
499
|
-
that result instead of trying to own every app's reader locally.
|
|
500
|
-
|
|
501
|
-
Agents should follow a simple rule: if a user asks to connect Slack, GitHub,
|
|
502
|
-
HubSpot, Gmail, Google Drive, Granola, or another shared provider, inspect the
|
|
503
|
-
workspace connection catalog first. If the provider is `connected`, use it. If
|
|
504
|
-
it is `needs_grant`, ask for or perform the app grant. If it is
|
|
505
|
-
`needs_credentials`, ask for the missing vault key. Only ask for a new raw key
|
|
506
|
-
when no reusable connection exists.
|
|
507
|
-
|
|
508
|
-
## App Readiness Pattern
|
|
509
|
-
|
|
510
|
-
Apps that consume shared provider credentials should expose a read-only
|
|
511
|
-
readiness action and a small setup surface:
|
|
512
|
-
|
|
513
|
-
- **Provider catalog:** provider id, label, capabilities, recommended template
|
|
514
|
-
uses, and required credential key names from `@agent-native/core/connections`.
|
|
515
|
-
- **Workspace summary:** connection count, active/granted counts, connection
|
|
516
|
-
statuses, grant state, credential ref names, and non-secret account labels
|
|
517
|
-
from `@agent-native/core/workspace-connections`. Use
|
|
518
|
-
`summarizeWorkspaceConnectionProviderForApp()` for this shape.
|
|
519
|
-
- **Provider readiness:** use
|
|
520
|
-
`summarizeWorkspaceConnectionProviderReadiness()` when the UI needs the
|
|
521
|
-
provider-level `ready`, `needs_credentials`, `needs_attention`, `checking`,
|
|
522
|
-
`disabled`, or `not_configured` status.
|
|
523
|
-
- **Credential health:** whether required keys can be resolved without exposing
|
|
524
|
-
values.
|
|
525
|
-
- **Source state:** app-local configured sources, cursors, sync status, and
|
|
526
|
-
next action.
|
|
527
|
-
|
|
528
|
-
Brain's Sources page is the reference implementation. It shows reusable
|
|
529
|
-
workspace connection providers beside Brain source records, labels grant states
|
|
530
|
-
as `connected`, `granted`, `needs_grant`, or `not_connected`, and shows provider
|
|
531
|
-
health as ready, missing keys, grant needed, needs repair, or metadata only.
|
|
532
|
-
That lets a Brain user create Slack, Granola, GitHub, Clips, generic, or manual
|
|
533
|
-
sources with a clear signal about whether the shared credential path is ready,
|
|
534
|
-
grantable, scoped locally, or missing.
|
|
535
|
-
|
|
536
|
-
## Path To Connect Once, Use Everywhere
|
|
537
|
-
|
|
538
|
-
The provider catalog and grant store are the foundation for a broader workspace
|
|
539
|
-
layer:
|
|
270
|
+
Keep the boundary strict: provider metadata is safe to show; credential values stay in the vault.
|
|
540
271
|
|
|
541
|
-
|
|
542
|
-
- Workspace-level inventory can show which providers are configured across
|
|
543
|
-
Brain, Mail, Analytics, Dispatch, and future apps.
|
|
544
|
-
- Connection rows record account labels, status, allowed apps, credential refs,
|
|
545
|
-
and health checks without changing template-facing provider ids.
|
|
546
|
-
- Grant rows let a workspace owner connect once, then enable individual apps as
|
|
547
|
-
the workspace adopts them.
|
|
548
|
-
- Agents can route work across apps knowing which providers are already
|
|
549
|
-
connected and which apps have grants.
|
|
550
|
-
- Federated search can ask for providers with `search`, `docs`, `messages`,
|
|
551
|
-
`meetings`, `crm`, or `code` capabilities instead of hardcoding every app's
|
|
552
|
-
connector list.
|
|
553
|
-
- Provider-specific readers, OAuth refresh flows, ingestion checkpoints, and
|
|
554
|
-
app-owned data models can become shared later, but they are not implied by a
|
|
555
|
-
workspace connection today.
|
|
556
|
-
|
|
557
|
-
Keep the boundary strict: provider metadata is safe to show; credential values
|
|
558
|
-
stay in the vault.
|
|
272
|
+
</details>
|