@agent-native/core 0.117.2 → 0.118.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/corpus/README.md +3 -3
- package/corpus/core/CHANGELOG.md +30 -0
- package/corpus/core/docs/content/custom-design-system.mdx +445 -0
- package/corpus/core/docs/content/toolkit-ui.mdx +16 -0
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/a2a/types.ts +1 -0
- package/corpus/core/src/agent/types.ts +1 -1
- package/corpus/core/src/client/AgentPanel.tsx +90 -107
- package/corpus/core/src/client/AssistantChat.tsx +30 -13
- package/corpus/core/src/client/CommandMenu.tsx +68 -178
- package/corpus/core/src/client/agent-chat-adapter.ts +3 -1
- package/corpus/core/src/client/app-providers.tsx +1 -1
- package/corpus/core/src/client/chat/message-components.tsx +116 -10
- package/corpus/core/src/client/chat/tool-call-display.tsx +26 -5
- package/corpus/core/src/client/chat/widgets/InlineExtensionWidget.tsx +14 -40
- package/corpus/core/src/client/components/ui/message-scroller.tsx +15 -1
- package/corpus/core/src/client/i18n.tsx +22 -0
- package/corpus/core/src/client/index.ts +17 -0
- package/corpus/core/src/client/org/TeamPage.tsx +257 -153
- package/corpus/core/src/client/progress/RunsTray.tsx +89 -88
- package/corpus/core/src/client/resources/McpConnectionSuggestion.tsx +5 -2
- package/corpus/core/src/client/resources/McpIntegrationDialog.tsx +34 -13
- package/corpus/core/src/client/resources/mcp-integration-catalog.ts +13 -0
- package/corpus/core/src/client/settings/DemoModeSection.tsx +6 -18
- package/corpus/core/src/client/settings/SecretsSection.tsx +97 -52
- package/corpus/core/src/client/settings/SettingsPanel.tsx +202 -246
- package/corpus/core/src/client/settings/SettingsTabsPage.tsx +23 -2
- package/corpus/core/src/client/settings/VoiceTranscriptionSection.tsx +7 -18
- package/corpus/core/src/client/settings/index.ts +7 -0
- package/corpus/core/src/client/settings/useSettingsPanelController.ts +155 -0
- package/corpus/core/src/client/setup-connections/BuilderConnectCard.tsx +116 -51
- package/corpus/core/src/client/setup-connections/index.ts +10 -0
- package/corpus/core/src/client/setup-connections/useBuilderConnectCardController.ts +82 -0
- package/corpus/core/src/client/sharing/ShareButton.tsx +64 -586
- package/corpus/core/src/client/sharing/ShareDialog.tsx +299 -633
- package/corpus/core/src/client/sharing/index.ts +42 -0
- package/corpus/core/src/client/sharing/share-controller-helpers.ts +318 -0
- package/corpus/core/src/client/sharing/useShareButtonController.ts +600 -0
- package/corpus/core/src/client/sharing/useShareDialogController.ts +559 -0
- package/corpus/core/src/client/sse-event-processor.ts +23 -0
- package/corpus/core/src/client/tool-display.ts +71 -0
- package/corpus/core/src/client/use-agent-engine-configured.ts +12 -19
- package/corpus/core/src/client/use-chat-threads.ts +33 -12
- package/corpus/core/src/localization/default-messages.ts +5 -0
- package/corpus/core/src/mcp-client/oauth-routes.ts +16 -2
- package/corpus/core/src/scripts/call-agent.ts +5 -1
- package/corpus/core/src/server/realtime-voice.ts +1 -1
- package/corpus/core/src/styles/agent-native.css +0 -24
- package/corpus/core/src/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/core/src/templates/default/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/core/src/templates/default/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/core/src/templates/default/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/core/src/templates/default/app/components/ui/toolkit-provider.tsx +10 -0
- package/corpus/core/src/templates/default/app/design-system.ts +3 -0
- package/corpus/core/src/templates/default/app/root.tsx +5 -2
- package/corpus/core/src/templates/default/package.json +1 -0
- package/corpus/core/src/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/core/src/templates/headless/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/core/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/core/src/templates/workspace-core/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/core/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/core/src/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/core/src/vite/client.ts +39 -0
- package/corpus/templates/analytics/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/analytics/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/analytics/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/analytics/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/analytics/app/components/ui/toolkit-provider.tsx +6 -1
- package/corpus/templates/analytics/app/design-system.ts +3 -0
- package/corpus/templates/assets/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/assets/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/assets/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/assets/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/assets/app/components/ui/alert.tsx +1 -0
- package/corpus/templates/assets/app/components/ui/toolkit-provider.tsx +6 -1
- package/corpus/templates/assets/app/design-system.ts +3 -0
- package/corpus/templates/assets/app/routes/brand-kits.$id_.presets.$presetId.tsx +26 -30
- package/corpus/templates/brain/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/brain/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/brain/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/brain/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/brain/app/components/ui/dialog.tsx +1 -0
- package/corpus/templates/brain/app/components/ui/toolkit-provider.tsx +6 -1
- package/corpus/templates/brain/app/design-system.ts +3 -0
- package/corpus/templates/brain/app/routes/sources.tsx +8 -8
- package/corpus/templates/calendar/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/calendar/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/calendar/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/calendar/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/calendar/app/components/ui/toolkit-provider.tsx +6 -1
- package/corpus/templates/calendar/app/design-system.ts +3 -0
- package/corpus/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/chat/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/chat/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/chat/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/chat/app/components/ui/toolkit-provider.tsx +6 -1
- package/corpus/templates/chat/app/design-system.ts +3 -0
- package/corpus/templates/clips/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/clips/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/clips/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/clips/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/clips/app/components/ui/toolkit-provider.tsx +6 -1
- package/corpus/templates/clips/app/design-system.ts +3 -0
- package/corpus/templates/clips/app/routes/_app.library._index.tsx +1 -1
- package/corpus/templates/clips/changelog/2026-07-22-fixed-windows-recordings-aborting-during-the-countdown.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-22-permissions-and-rewind-controls-are-now-grouped-with-clearer.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-22-the-desktop-popover-opens-centered-under-the-menu-bar-icon-o.md +6 -0
- package/corpus/templates/clips/desktop/src/app.tsx +86 -82
- package/corpus/templates/clips/desktop/src/styles.css +13 -0
- package/corpus/templates/clips/desktop/src-tauri/src/lib.rs +10 -1
- package/corpus/templates/clips/desktop/src-tauri/src/shortcuts.rs +37 -2
- package/corpus/templates/clips/desktop/src-tauri/src/tray.rs +18 -0
- package/corpus/templates/content/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/content/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/content/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/content/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/content/app/components/editor/DocumentToolbar.tsx +41 -59
- package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +41 -41
- package/corpus/templates/content/app/components/editor/database/GalleryView.tsx +2 -1
- package/corpus/templates/content/app/components/editor/database/ListView.tsx +2 -1
- package/corpus/templates/content/app/components/editor/database/TimelineView.tsx +9 -9
- package/corpus/templates/content/app/components/editor/database/sidebar.tsx +7 -7
- package/corpus/templates/content/app/components/editor/database-sources/BuilderSourceReviewDialog.tsx +11 -11
- package/corpus/templates/content/app/components/ui/checkbox.tsx +1 -0
- package/corpus/templates/content/app/components/ui/collapsible.tsx +1 -0
- package/corpus/templates/content/app/components/ui/toolkit-provider.tsx +6 -1
- package/corpus/templates/content/app/design-system.ts +3 -0
- package/corpus/templates/content/app/global.css +29 -3
- package/corpus/templates/content/changelog/2026-07-22-page-actions-are-grouped-into-the-three-dots-menu-for-a-clea.md +6 -0
- package/corpus/templates/crm/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/crm/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/crm/app/components/crm/CreateCrmRecordDialog.tsx +10 -10
- package/corpus/templates/crm/app/components/crm/CrmDashboardPanel.tsx +1 -6
- package/corpus/templates/crm/app/components/crm/CrmSignalsPanel.tsx +3 -2
- package/corpus/templates/crm/app/components/crm/IntelligenceSettings.tsx +13 -12
- package/corpus/templates/crm/app/components/crm/RecordActions.tsx +17 -17
- package/corpus/templates/crm/app/components/crm/RecordGrid.tsx +8 -8
- package/corpus/templates/crm/app/components/crm/RecordWorkspace.tsx +3 -8
- package/corpus/templates/crm/app/components/crm/SavedViewDataProgram.tsx +2 -1
- package/corpus/templates/crm/app/components/crm/Surface.tsx +3 -2
- package/corpus/templates/crm/app/components/crm/WorkOverview.tsx +2 -2
- package/corpus/templates/crm/app/components/layout/CrmLayout.tsx +7 -7
- package/corpus/templates/crm/app/components/layout/CrmSidebar.tsx +1 -1
- package/corpus/templates/crm/app/components/ui/alert-dialog.tsx +1 -0
- package/corpus/templates/crm/app/components/ui/badge.tsx +1 -0
- package/corpus/templates/crm/app/components/ui/button.tsx +1 -0
- package/corpus/templates/crm/app/components/ui/card.tsx +1 -0
- package/corpus/templates/crm/app/components/ui/dialog.tsx +1 -0
- package/corpus/templates/crm/app/components/ui/input.tsx +1 -0
- package/corpus/templates/crm/app/components/ui/label.tsx +1 -0
- package/corpus/templates/crm/app/components/ui/select.tsx +1 -0
- package/corpus/templates/crm/app/components/ui/sheet.tsx +1 -0
- package/corpus/templates/crm/app/components/ui/skeleton.tsx +1 -0
- package/corpus/templates/crm/app/components/ui/switch.tsx +1 -0
- package/corpus/templates/crm/app/components/ui/table.tsx +1 -0
- package/corpus/templates/crm/app/components/ui/tabs.tsx +1 -0
- package/corpus/templates/crm/app/components/ui/textarea.tsx +1 -0
- package/corpus/templates/crm/app/components/ui/toolkit-provider.tsx +17 -0
- package/corpus/templates/crm/app/design-system.ts +3 -0
- package/corpus/templates/crm/app/root.tsx +9 -6
- package/corpus/templates/crm/app/routes/dashboard.tsx +1 -1
- package/corpus/templates/crm/app/routes/proposals.tsx +13 -13
- package/corpus/templates/crm/app/routes/setup.tsx +9 -9
- package/corpus/templates/crm/app/routes/tasks.tsx +14 -14
- package/corpus/templates/crm/app/routes/views.tsx +16 -16
- package/corpus/templates/design/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/design/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/design/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/design/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/design/app/components/editor/PromptDialog.tsx +8 -8
- package/corpus/templates/design/app/components/ui/command.tsx +1 -0
- package/corpus/templates/design/app/components/ui/toolkit-provider.tsx +6 -1
- package/corpus/templates/design/app/design-system.ts +3 -0
- package/corpus/templates/dispatch/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/dispatch/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/dispatch/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/dispatch/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/dispatch/app/components/ui/button.tsx +1 -0
- package/corpus/templates/dispatch/app/components/ui/toolkit-provider.tsx +17 -0
- package/corpus/templates/dispatch/app/design-system.ts +3 -0
- package/corpus/templates/dispatch/app/root.tsx +10 -7
- package/corpus/templates/dispatch/package.json +1 -0
- package/corpus/templates/forms/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/forms/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/forms/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/forms/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/forms/app/components/ui/toolkit-provider.tsx +6 -1
- package/corpus/templates/forms/app/design-system.ts +3 -0
- package/corpus/templates/macros/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/macros/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/macros/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/macros/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/macros/app/components/ui/toolkit-provider.tsx +6 -1
- package/corpus/templates/macros/app/design-system.ts +3 -0
- package/corpus/templates/mail/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/mail/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/mail/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/mail/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/mail/app/components/email/EmailThread.tsx +134 -93
- package/corpus/templates/mail/app/components/email/email-iframe-document.ts +8 -2
- package/corpus/templates/mail/app/components/ui/textarea.tsx +1 -21
- package/corpus/templates/mail/app/components/ui/toolkit-provider.tsx +6 -1
- package/corpus/templates/mail/app/design-system.ts +3 -0
- package/corpus/templates/mail/changelog/2026-07-22-email-messages-no-longer-flash-with-an-unstyled-page-while-l.md +6 -0
- package/corpus/templates/plan/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/plan/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/plan/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/plan/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/plan/app/components/plan/PlanContentRenderer.tsx +1 -1
- package/corpus/templates/plan/app/components/ui/toolkit-provider.tsx +6 -1
- package/corpus/templates/plan/app/design-system.ts +3 -0
- package/corpus/templates/slides/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/slides/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/slides/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/slides/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/slides/app/components/ui/toolkit-provider.tsx +6 -1
- package/corpus/templates/slides/app/design-system.ts +3 -0
- package/corpus/templates/tasks/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/tasks/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/tasks/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/tasks/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/tasks/app/components/ui/toolkit-provider.tsx +17 -0
- package/corpus/templates/tasks/app/design-system.ts +3 -0
- package/corpus/templates/tasks/app/root.tsx +5 -2
- package/corpus/toolkit/CHANGELOG.md +14 -0
- package/corpus/toolkit/agent-native.eject.json +71 -0
- package/corpus/toolkit/package.json +31 -1
- package/corpus/toolkit/src/chat-history/ChatHistoryRail.tsx +100 -39
- package/corpus/toolkit/src/chat-history/index.ts +9 -0
- package/corpus/toolkit/src/chat-history/useChatHistoryRailController.ts +76 -0
- package/corpus/toolkit/src/chat-history.css +2 -0
- package/corpus/toolkit/src/composer/ComposerPlusMenu.tsx +11 -8
- package/corpus/toolkit/src/composer/PromptComposer.tsx +27 -6
- package/corpus/toolkit/src/composer/useRealtimeVoiceMode.tsx +107 -22
- package/corpus/toolkit/src/conformance/__fixtures__/css-in-js-adapter.tsx +401 -0
- package/corpus/toolkit/src/conformance/index.ts +3 -0
- package/corpus/toolkit/src/conformance/runner.tsx +710 -0
- package/corpus/toolkit/src/conformance/types.ts +45 -0
- package/corpus/toolkit/src/conformance/version.ts +22 -0
- package/corpus/toolkit/src/design-system/components.tsx +146 -0
- package/corpus/toolkit/src/design-system/context.tsx +31 -0
- package/corpus/toolkit/src/design-system/default-adapter.tsx +915 -0
- package/corpus/toolkit/src/design-system/definition.ts +14 -0
- package/corpus/toolkit/src/design-system/error-boundary.tsx +37 -0
- package/corpus/toolkit/src/design-system/index.ts +7 -0
- package/corpus/toolkit/src/design-system/theme.ts +145 -0
- package/corpus/toolkit/src/design-system/types.ts +363 -0
- package/corpus/toolkit/src/provider.tsx +98 -5
- package/corpus/toolkit/src/ui/button.tsx +95 -6
- package/corpus/toolkit/src/ui/dialog.tsx +48 -23
- package/corpus/toolkit/src/ui/popover.tsx +16 -2
- package/corpus/toolkit/src/ui/select.tsx +7 -3
- package/corpus/toolkit/src/ui/sidebar.tsx +47 -48
- package/corpus/toolkit/src/ui/tooltip.tsx +7 -3
- package/dist/a2a/types.d.ts +1 -1
- package/dist/a2a/types.d.ts.map +1 -1
- package/dist/a2a/types.js.map +1 -1
- package/dist/agent/types.d.ts +1 -1
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +14 -14
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +26 -15
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/CommandMenu.d.ts.map +1 -1
- package/dist/client/CommandMenu.js +18 -106
- package/dist/client/CommandMenu.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/app-providers.d.ts.map +1 -1
- package/dist/client/app-providers.js +1 -1
- package/dist/client/app-providers.js.map +1 -1
- package/dist/client/chat/message-components.d.ts +9 -1
- package/dist/client/chat/message-components.d.ts.map +1 -1
- package/dist/client/chat/message-components.js +62 -7
- package/dist/client/chat/message-components.js.map +1 -1
- package/dist/client/chat/tool-call-display.d.ts.map +1 -1
- package/dist/client/chat/tool-call-display.js +20 -5
- package/dist/client/chat/tool-call-display.js.map +1 -1
- package/dist/client/chat/widgets/InlineExtensionWidget.d.ts.map +1 -1
- package/dist/client/chat/widgets/InlineExtensionWidget.js +9 -12
- package/dist/client/chat/widgets/InlineExtensionWidget.js.map +1 -1
- package/dist/client/components/ui/message-scroller.d.ts +1 -1
- package/dist/client/components/ui/message-scroller.d.ts.map +1 -1
- package/dist/client/components/ui/message-scroller.js +4 -3
- package/dist/client/components/ui/message-scroller.js.map +1 -1
- package/dist/client/i18n.d.ts.map +1 -1
- package/dist/client/i18n.js +9 -0
- package/dist/client/i18n.js.map +1 -1
- package/dist/client/index.d.ts +2 -2
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +2 -2
- package/dist/client/index.js.map +1 -1
- package/dist/client/org/TeamPage.d.ts.map +1 -1
- package/dist/client/org/TeamPage.js +41 -33
- package/dist/client/org/TeamPage.js.map +1 -1
- package/dist/client/progress/RunsTray.d.ts.map +1 -1
- package/dist/client/progress/RunsTray.js +9 -10
- package/dist/client/progress/RunsTray.js.map +1 -1
- package/dist/client/resources/McpConnectionSuggestion.d.ts.map +1 -1
- package/dist/client/resources/McpConnectionSuggestion.js +5 -4
- package/dist/client/resources/McpConnectionSuggestion.js.map +1 -1
- package/dist/client/resources/McpIntegrationDialog.d.ts.map +1 -1
- package/dist/client/resources/McpIntegrationDialog.js +10 -8
- package/dist/client/resources/McpIntegrationDialog.js.map +1 -1
- package/dist/client/resources/mcp-integration-catalog.d.ts +1 -0
- package/dist/client/resources/mcp-integration-catalog.d.ts.map +1 -1
- package/dist/client/resources/mcp-integration-catalog.js +13 -0
- package/dist/client/resources/mcp-integration-catalog.js.map +1 -1
- package/dist/client/settings/DemoModeSection.d.ts.map +1 -1
- package/dist/client/settings/DemoModeSection.js +2 -5
- package/dist/client/settings/DemoModeSection.js.map +1 -1
- package/dist/client/settings/SecretsSection.d.ts.map +1 -1
- package/dist/client/settings/SecretsSection.js +18 -6
- 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 +52 -117
- package/dist/client/settings/SettingsPanel.js.map +1 -1
- package/dist/client/settings/SettingsTabsPage.d.ts.map +1 -1
- package/dist/client/settings/SettingsTabsPage.js +16 -1
- package/dist/client/settings/SettingsTabsPage.js.map +1 -1
- package/dist/client/settings/VoiceTranscriptionSection.d.ts.map +1 -1
- package/dist/client/settings/VoiceTranscriptionSection.js +2 -5
- package/dist/client/settings/VoiceTranscriptionSection.js.map +1 -1
- package/dist/client/settings/index.d.ts +1 -0
- package/dist/client/settings/index.d.ts.map +1 -1
- package/dist/client/settings/index.js +1 -0
- package/dist/client/settings/index.js.map +1 -1
- package/dist/client/settings/useSettingsPanelController.d.ts +22 -0
- package/dist/client/settings/useSettingsPanelController.d.ts.map +1 -0
- package/dist/client/settings/useSettingsPanelController.js +103 -0
- package/dist/client/settings/useSettingsPanelController.js.map +1 -0
- package/dist/client/setup-connections/BuilderConnectCard.d.ts +14 -6
- package/dist/client/setup-connections/BuilderConnectCard.d.ts.map +1 -1
- package/dist/client/setup-connections/BuilderConnectCard.js +24 -16
- package/dist/client/setup-connections/BuilderConnectCard.js.map +1 -1
- package/dist/client/setup-connections/index.d.ts +2 -1
- package/dist/client/setup-connections/index.d.ts.map +1 -1
- package/dist/client/setup-connections/index.js +2 -1
- package/dist/client/setup-connections/index.js.map +1 -1
- package/dist/client/setup-connections/useBuilderConnectCardController.d.ts +34 -0
- package/dist/client/setup-connections/useBuilderConnectCardController.d.ts.map +1 -0
- package/dist/client/setup-connections/useBuilderConnectCardController.js +39 -0
- package/dist/client/setup-connections/useBuilderConnectCardController.js.map +1 -0
- package/dist/client/sharing/ShareButton.d.ts +2 -1
- package/dist/client/sharing/ShareButton.d.ts.map +1 -1
- package/dist/client/sharing/ShareButton.js +17 -463
- package/dist/client/sharing/ShareButton.js.map +1 -1
- package/dist/client/sharing/ShareDialog.d.ts +6 -6
- package/dist/client/sharing/ShareDialog.d.ts.map +1 -1
- package/dist/client/sharing/ShareDialog.js +69 -283
- package/dist/client/sharing/ShareDialog.js.map +1 -1
- package/dist/client/sharing/index.d.ts +3 -0
- package/dist/client/sharing/index.d.ts.map +1 -1
- package/dist/client/sharing/index.js +3 -0
- package/dist/client/sharing/index.js.map +1 -1
- package/dist/client/sharing/share-controller-helpers.d.ts +70 -0
- package/dist/client/sharing/share-controller-helpers.d.ts.map +1 -0
- package/dist/client/sharing/share-controller-helpers.js +224 -0
- package/dist/client/sharing/share-controller-helpers.js.map +1 -0
- package/dist/client/sharing/useShareButtonController.d.ts +91 -0
- package/dist/client/sharing/useShareButtonController.d.ts.map +1 -0
- package/dist/client/sharing/useShareButtonController.js +397 -0
- package/dist/client/sharing/useShareButtonController.js.map +1 -0
- package/dist/client/sharing/useShareDialogController.d.ts +109 -0
- package/dist/client/sharing/useShareDialogController.d.ts.map +1 -0
- package/dist/client/sharing/useShareDialogController.js +348 -0
- package/dist/client/sharing/useShareDialogController.js.map +1 -0
- package/dist/client/sse-event-processor.d.ts.map +1 -1
- package/dist/client/sse-event-processor.js +21 -0
- package/dist/client/sse-event-processor.js.map +1 -1
- package/dist/client/tool-display.d.ts +16 -0
- package/dist/client/tool-display.d.ts.map +1 -1
- package/dist/client/tool-display.js +52 -0
- package/dist/client/tool-display.js.map +1 -1
- package/dist/client/use-agent-engine-configured.d.ts +3 -2
- package/dist/client/use-agent-engine-configured.d.ts.map +1 -1
- package/dist/client/use-agent-engine-configured.js +7 -19
- package/dist/client/use-agent-engine-configured.js.map +1 -1
- package/dist/client/use-chat-threads.d.ts.map +1 -1
- package/dist/client/use-chat-threads.js +21 -8
- package/dist/client/use-chat-threads.js.map +1 -1
- package/dist/localization/default-messages.d.ts +4 -0
- package/dist/localization/default-messages.d.ts.map +1 -1
- package/dist/localization/default-messages.js +4 -0
- package/dist/localization/default-messages.js.map +1 -1
- package/dist/mcp-client/oauth-routes.d.ts +2 -0
- package/dist/mcp-client/oauth-routes.d.ts.map +1 -1
- package/dist/mcp-client/oauth-routes.js +12 -2
- package/dist/mcp-client/oauth-routes.js.map +1 -1
- package/dist/observability/routes.d.ts +3 -3
- package/dist/provider-api/actions/custom-provider-registration.d.ts +4 -4
- package/dist/scripts/call-agent.d.ts.map +1 -1
- package/dist/scripts/call-agent.js +5 -1
- package/dist/scripts/call-agent.js.map +1 -1
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/server/realtime-voice.js +1 -1
- package/dist/server/realtime-voice.js.map +1 -1
- package/dist/server/transcribe-voice.d.ts +1 -1
- package/dist/styles/agent-native.css +0 -24
- package/dist/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/dist/templates/chat/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/dist/templates/chat/.agents/skills/frontend-design/SKILL.md +22 -2
- package/dist/templates/chat/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/dist/templates/chat/app/components/ui/toolkit-provider.tsx +6 -1
- package/dist/templates/chat/app/design-system.ts +3 -0
- package/dist/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/dist/templates/default/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/dist/templates/default/.agents/skills/frontend-design/SKILL.md +22 -2
- package/dist/templates/default/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/dist/templates/default/app/components/ui/toolkit-provider.tsx +10 -0
- package/dist/templates/default/app/design-system.ts +3 -0
- package/dist/templates/default/app/root.tsx +5 -2
- package/dist/templates/default/package.json +1 -0
- package/dist/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/dist/templates/headless/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/dist/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/dist/templates/workspace-core/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/dist/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +22 -2
- package/dist/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/dist/vite/client.d.ts +3 -0
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +31 -0
- package/dist/vite/client.js.map +1 -1
- package/docs/content/custom-design-system.mdx +445 -0
- package/docs/content/toolkit-ui.mdx +16 -0
- package/package.json +2 -2
- package/src/a2a/types.ts +1 -0
- package/src/agent/types.ts +1 -1
- package/src/client/AgentPanel.tsx +90 -107
- package/src/client/AssistantChat.tsx +30 -13
- package/src/client/CommandMenu.tsx +68 -178
- package/src/client/agent-chat-adapter.ts +3 -1
- package/src/client/app-providers.tsx +1 -1
- package/src/client/chat/message-components.tsx +116 -10
- package/src/client/chat/tool-call-display.tsx +26 -5
- package/src/client/chat/widgets/InlineExtensionWidget.tsx +14 -40
- package/src/client/components/ui/message-scroller.tsx +15 -1
- package/src/client/i18n.tsx +22 -0
- package/src/client/index.ts +17 -0
- package/src/client/org/TeamPage.tsx +257 -153
- package/src/client/progress/RunsTray.tsx +89 -88
- package/src/client/resources/McpConnectionSuggestion.tsx +5 -2
- package/src/client/resources/McpIntegrationDialog.tsx +34 -13
- package/src/client/resources/mcp-integration-catalog.ts +13 -0
- package/src/client/settings/DemoModeSection.tsx +6 -18
- package/src/client/settings/SecretsSection.tsx +97 -52
- package/src/client/settings/SettingsPanel.tsx +202 -246
- package/src/client/settings/SettingsTabsPage.tsx +23 -2
- package/src/client/settings/VoiceTranscriptionSection.tsx +7 -18
- package/src/client/settings/index.ts +7 -0
- package/src/client/settings/useSettingsPanelController.ts +155 -0
- package/src/client/setup-connections/BuilderConnectCard.tsx +116 -51
- package/src/client/setup-connections/index.ts +10 -0
- package/src/client/setup-connections/useBuilderConnectCardController.ts +82 -0
- package/src/client/sharing/ShareButton.tsx +64 -586
- package/src/client/sharing/ShareDialog.tsx +299 -633
- package/src/client/sharing/index.ts +42 -0
- package/src/client/sharing/share-controller-helpers.ts +318 -0
- package/src/client/sharing/useShareButtonController.ts +600 -0
- package/src/client/sharing/useShareDialogController.ts +559 -0
- package/src/client/sse-event-processor.ts +23 -0
- package/src/client/tool-display.ts +71 -0
- package/src/client/use-agent-engine-configured.ts +12 -19
- package/src/client/use-chat-threads.ts +33 -12
- package/src/localization/default-messages.ts +5 -0
- package/src/mcp-client/oauth-routes.ts +16 -2
- package/src/scripts/call-agent.ts +5 -1
- package/src/server/realtime-voice.ts +1 -1
- package/src/styles/agent-native.css +0 -24
- package/src/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/src/templates/chat/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/src/templates/chat/.agents/skills/frontend-design/SKILL.md +22 -2
- package/src/templates/chat/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/src/templates/chat/app/components/ui/toolkit-provider.tsx +6 -1
- package/src/templates/chat/app/design-system.ts +3 -0
- package/src/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/src/templates/default/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/src/templates/default/.agents/skills/frontend-design/SKILL.md +22 -2
- package/src/templates/default/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/src/templates/default/app/components/ui/toolkit-provider.tsx +10 -0
- package/src/templates/default/app/design-system.ts +3 -0
- package/src/templates/default/app/root.tsx +5 -2
- package/src/templates/default/package.json +1 -0
- package/src/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/src/templates/headless/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/src/templates/workspace-core/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +22 -2
- package/src/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/src/vite/client.ts +39 -0
- package/corpus/templates/analytics/app/components/ui/calendar.tsx +0 -70
- package/corpus/templates/analytics/app/components/ui/chart.tsx +0 -386
- package/corpus/templates/calendar/app/components/ui/sonner.tsx +0 -58
- package/corpus/templates/forms/app/components/ui/calendar.tsx +0 -214
- package/corpus/templates/forms/app/components/ui/chart.tsx +0 -379
- package/corpus/templates/forms/app/components/ui/command.tsx +0 -153
- package/corpus/templates/forms/app/components/ui/context-menu.tsx +0 -198
- package/corpus/templates/forms/app/components/ui/menubar.tsx +0 -254
- package/corpus/templates/macros/app/components/ui/menubar.tsx +0 -238
- package/corpus/templates/macros/app/components/ui/progress.tsx +0 -26
- package/corpus/templates/mail/app/components/ui/calendar.tsx +0 -211
- package/corpus/templates/mail/app/components/ui/chart.tsx +0 -379
- package/corpus/templates/mail/app/components/ui/command.tsx +0 -153
- package/corpus/templates/mail/app/components/ui/context-menu.tsx +0 -198
- package/corpus/templates/mail/app/components/ui/menubar.tsx +0 -254
- package/corpus/templates/tasks/app/components/ui/accordion.tsx +0 -56
- package/corpus/templates/tasks/app/components/ui/aspect-ratio.tsx +0 -5
- package/corpus/templates/tasks/app/components/ui/breadcrumb.tsx +0 -115
- package/corpus/templates/tasks/app/components/ui/calendar.tsx +0 -70
- package/corpus/templates/tasks/app/components/ui/carousel.tsx +0 -260
- package/corpus/templates/tasks/app/components/ui/chart.tsx +0 -379
- package/corpus/templates/tasks/app/components/ui/form.tsx +0 -177
- package/corpus/templates/tasks/app/components/ui/hover-card.tsx +0 -27
- package/corpus/templates/tasks/app/components/ui/input-otp.tsx +0 -69
- package/corpus/templates/tasks/app/components/ui/menubar.tsx +0 -254
- package/corpus/templates/tasks/app/components/ui/navigation-menu.tsx +0 -128
- package/corpus/templates/tasks/app/components/ui/pagination.tsx +0 -121
- package/corpus/templates/tasks/app/components/ui/resizable.tsx +0 -43
- package/corpus/templates/tasks/app/components/ui/sidebar.tsx +0 -782
- package/corpus/templates/tasks/app/components/ui/toggle.tsx +0 -43
|
@@ -0,0 +1,445 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Custom Design Systems"
|
|
3
|
+
description: "Use your company’s React design system across Agent Native apps and shared Toolkit experiences without replacing Agent Native behavior."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Custom Design Systems
|
|
7
|
+
|
|
8
|
+
Agent Native can render app-owned screens and shared Toolkit experiences with
|
|
9
|
+
your company’s React components. Register an explicit, typed adapter once; the
|
|
10
|
+
same feature controllers continue to own actions, state, accessibility
|
|
11
|
+
requirements, and agent-visible behavior.
|
|
12
|
+
|
|
13
|
+
The adapter contract does not require Tailwind, shadcn, Radix, `className`, or
|
|
14
|
+
any particular styling runtime. A component may use a theme provider,
|
|
15
|
+
CSS-in-JS, CSS Modules, React Aria, or ordinary CSS. `className` and `style` are
|
|
16
|
+
optional interoperability hooks, not styling requirements.
|
|
17
|
+
|
|
18
|
+
See the runnable [Material UI Chat example](https://github.com/BuilderIO/agent-native/tree/main/examples/chat-mui) and [Ant Design Chat example](https://github.com/BuilderIO/agent-native/tree/main/examples/chat-antd) for complete adapters, theme-provider wiring, dark mode, and documented v1 gaps.
|
|
19
|
+
|
|
20
|
+
## Choose the smallest customization tier
|
|
21
|
+
|
|
22
|
+
| Tier | Use it for | What remains shared |
|
|
23
|
+
| ----------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------- |
|
|
24
|
+
| **Theme tokens** | Fast brand alignment across default and not-yet-adapted surfaces | Toolkit components, controllers, and behavior |
|
|
25
|
+
| **Semantic components** | Company controls such as buttons, fields, pickers, dialogs, menus, and surfaces | Feature controllers and product contracts |
|
|
26
|
+
| **Product slots** | A company-specific layout for one feature, such as the connection card or chat-history rail | The feature’s controller and actions |
|
|
27
|
+
| **Eject** | Product behavior or structure that cannot be expressed by a supported slot | Core runtime contracts; the ejected feature becomes app-owned |
|
|
28
|
+
|
|
29
|
+
Start with tokens, add semantic components where your system has an equivalent,
|
|
30
|
+
use a product slot for feature-level composition, and eject only the smallest
|
|
31
|
+
unit that still needs ownership.
|
|
32
|
+
|
|
33
|
+
## Register an adapter
|
|
34
|
+
|
|
35
|
+
Customer adapters are ordinary npm packages. Import one explicitly in
|
|
36
|
+
`app/design-system.ts`; Agent Native never scans dependencies, auto-detects a
|
|
37
|
+
library, or loads components from JSON.
|
|
38
|
+
|
|
39
|
+
Keep the build-time theme in a dependency-light module so Vite does not need to
|
|
40
|
+
evaluate the customer React package while loading its config:
|
|
41
|
+
|
|
42
|
+
```ts filename="app/design-system-theme.ts"
|
|
43
|
+
import { defineTheme } from "@agent-native/toolkit/design-system";
|
|
44
|
+
|
|
45
|
+
export const acmeTheme = defineTheme({
|
|
46
|
+
colors: {
|
|
47
|
+
light: {
|
|
48
|
+
background: "#ffffff",
|
|
49
|
+
foreground: "oklch(24% 0.03 255)",
|
|
50
|
+
primary: "rgb(33 82 255)",
|
|
51
|
+
"primary-foreground": "white",
|
|
52
|
+
border: "hsl(218 20% 88%)",
|
|
53
|
+
},
|
|
54
|
+
dark: {
|
|
55
|
+
background: "#11131a",
|
|
56
|
+
foreground: "#f7f8fb",
|
|
57
|
+
primary: "oklch(72% 0.17 259)",
|
|
58
|
+
"primary-foreground": "#07102f",
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
radius: "0.625rem",
|
|
62
|
+
typography: { fontFamily: "Acme Sans, sans-serif" },
|
|
63
|
+
});
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
```tsx filename="app/design-system.ts"
|
|
67
|
+
import { defineDesignSystem } from "@agent-native/toolkit/design-system";
|
|
68
|
+
import { acmeComponents } from "@acme/agent-native-design-system";
|
|
69
|
+
|
|
70
|
+
import { acmeTheme } from "@/design-system-theme";
|
|
71
|
+
|
|
72
|
+
export const designSystem = defineDesignSystem({
|
|
73
|
+
name: "Acme",
|
|
74
|
+
theme: acmeTheme,
|
|
75
|
+
components: acmeComponents,
|
|
76
|
+
});
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Wire the definition through the app’s provider seam:
|
|
80
|
+
|
|
81
|
+
```tsx filename="app/components/ui/toolkit-provider.tsx"
|
|
82
|
+
import { ToolkitProvider } from "@agent-native/toolkit/provider";
|
|
83
|
+
|
|
84
|
+
import { designSystem } from "@/design-system";
|
|
85
|
+
|
|
86
|
+
export function AppToolkitProvider({
|
|
87
|
+
children,
|
|
88
|
+
}: {
|
|
89
|
+
children: React.ReactNode;
|
|
90
|
+
}) {
|
|
91
|
+
return (
|
|
92
|
+
<ToolkitProvider designSystem={designSystem}>{children}</ToolkitProvider>
|
|
93
|
+
);
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Partial adapters are supported. Any component you omit uses Agent Native’s
|
|
98
|
+
default adapter. If one custom component throws while rendering, a
|
|
99
|
+
per-component error boundary logs the failure and renders the default component
|
|
100
|
+
for that control; the rest of the custom system stays active.
|
|
101
|
+
|
|
102
|
+
Two complete Chat applications keep this contract honest against real design
|
|
103
|
+
systems: [the Material UI example](https://github.com/BuilderIO/agent-native/tree/main/examples/chat-mui)
|
|
104
|
+
uses Emotion, `ThemeProvider`, and MUI’s overlay stack, while [the Ant Design
|
|
105
|
+
example](https://github.com/BuilderIO/agent-native/tree/main/examples/chat-antd)
|
|
106
|
+
uses `ConfigProvider` and Ant Design’s form and overlay primitives. Their
|
|
107
|
+
`app/design-system.tsx` files are the primary integration references; the Acme
|
|
108
|
+
fixture above remains intentionally small and is used for unit tests.
|
|
109
|
+
|
|
110
|
+
The older `components={{ Button }}` provider API remains compatible and is
|
|
111
|
+
treated as the lowest-precedence `ActionButton` adapter. If both are supplied,
|
|
112
|
+
`designSystem.components.ActionButton` wins and development builds log a
|
|
113
|
+
warning.
|
|
114
|
+
|
|
115
|
+
## Build-time theme tokens
|
|
116
|
+
|
|
117
|
+
`defineTheme` accepts standard CSS colors, including hex, `rgb()`, `hsl()`, and
|
|
118
|
+
OKLCH. The Core Vite plugin validates and normalizes them to Agent Native’s
|
|
119
|
+
existing semantic variables. Dark colors fall back token-by-token to the light
|
|
120
|
+
palette; Agent Native does not derive a dark palette automatically.
|
|
121
|
+
|
|
122
|
+
Pass the theme to the Vite plugin:
|
|
123
|
+
|
|
124
|
+
```tsx filename="vite.config.ts"
|
|
125
|
+
import { agentNative } from "@agent-native/core/vite";
|
|
126
|
+
import { defineConfig } from "vite";
|
|
127
|
+
|
|
128
|
+
import { acmeTheme } from "./app/design-system-theme";
|
|
129
|
+
|
|
130
|
+
export default defineConfig({
|
|
131
|
+
plugins: [...agentNative({ designSystemTheme: acmeTheme })],
|
|
132
|
+
});
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Import the virtual stylesheet once from the app root so both development and
|
|
136
|
+
React Router production builds include it:
|
|
137
|
+
|
|
138
|
+
```tsx filename="app/root.tsx"
|
|
139
|
+
import "virtual:agent-native-theme.css";
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
The plugin generates that virtual theme CSS at build time. Its semantic tokens
|
|
143
|
+
override the scaffold's fallback values without removing fallback-only tokens.
|
|
144
|
+
Version 1 does not choose a theme per request or per organization.
|
|
145
|
+
|
|
146
|
+
## The 17 semantic contracts
|
|
147
|
+
|
|
148
|
+
The contract is deliberately about meaning and behavior, not DOM shape or
|
|
149
|
+
visual implementation. Values and open state are controlled wherever product
|
|
150
|
+
state must remain portable.
|
|
151
|
+
|
|
152
|
+
### Leaf contracts
|
|
153
|
+
|
|
154
|
+
| Component | Required contract | Important optional semantics |
|
|
155
|
+
| -------------- | ------------------------------------- | -------------------------------------------------------------------------------- |
|
|
156
|
+
| `ActionButton` | `children` and `onPress` as needed | `intent`, `emphasis`, `size`, `pending`, icons, disabled state, button type, ref |
|
|
157
|
+
| `IconButton` | accessible `label`, `icon` | button semantics matching `ActionButton` |
|
|
158
|
+
| `TextField` | controlled string `value`, `onChange` | label, description, error, input type/mode, validation, adornments, events, ref |
|
|
159
|
+
| `TextArea` | controlled string `value`, `onChange` | label, description, error, rows, validation, events, ref |
|
|
160
|
+
| `Spinner` | progress indicator | accessible label and semantic size |
|
|
161
|
+
| `Skeleton` | non-interactive placeholder | width, height, line/rectangle/circle shape |
|
|
162
|
+
| `Status` | `children` | neutral/info/success/warning/danger tone, icon, size |
|
|
163
|
+
| `Surface` | `children` | semantic element, elevation, padding, interactive press behavior |
|
|
164
|
+
| `Avatar` | accessible `name` | image source, fallback, size, presence status, image ref |
|
|
165
|
+
|
|
166
|
+
### Behavior contracts
|
|
167
|
+
|
|
168
|
+
| Component | Required contract | Behavior the adapter owns |
|
|
169
|
+
| ---------- | -------------------------------------------------- | -------------------------------------------------------------------------------- |
|
|
170
|
+
| `Tooltip` | trigger and content | controlled/uncontrolled open state, delay, placement, portal behavior |
|
|
171
|
+
| `Menu` | trigger, items/sections, `onAction` | keyboard navigation, nested items, selection, dismissal, portal behavior |
|
|
172
|
+
| `Popover` | trigger and children | controlled/uncontrolled open state, dismissal, focus, modality, portal behavior |
|
|
173
|
+
| `Dialog` | controlled `open`, `onOpenChange`, title, children | dialog semantics, dismissal, initial/restore focus, portal and stacking behavior |
|
|
174
|
+
| `Picker` | `mode`, options, controlled `value`, `onChange` | select/combobox semantics, search/open state, validation, loading/empty state |
|
|
175
|
+
| `Checkbox` | controlled `checked`, `onChange` | checkbox semantics, indeterminate/required/invalid state |
|
|
176
|
+
| `Switch` | controlled `checked`, `onChange` | switch semantics and disabled state |
|
|
177
|
+
| `Tabs` | items, controlled `value`, `onChange` | tab semantics, orientation, automatic/manual activation |
|
|
178
|
+
|
|
179
|
+
`intent` is `primary`, `neutral`, or `danger`; `emphasis` is `solid`,
|
|
180
|
+
`outline`, or `ghost`; and size is `compact`, `default`, or `large`. These
|
|
181
|
+
values describe purpose, not a class or variant name from the default UI.
|
|
182
|
+
|
|
183
|
+
The default adapter gives these visual props observable behavior as well as
|
|
184
|
+
semantic attributes: button, spinner, status, skeleton, avatar, and dialog
|
|
185
|
+
sizes select concrete variants; skeleton shape and avatar presence status
|
|
186
|
+
change their presentation; menu selection and `closeOnAction` affect behavior.
|
|
187
|
+
Custom adapters remain responsible for mapping the same meanings to their own
|
|
188
|
+
visual vocabulary.
|
|
189
|
+
|
|
190
|
+
`Picker` covers select and combobox behavior only. Date picking is not part of
|
|
191
|
+
the version 1 semantic contract.
|
|
192
|
+
|
|
193
|
+
### What the Chat examples actually render
|
|
194
|
+
|
|
195
|
+
The runnable MUI and Ant Design Chat examples register all 17 components and
|
|
196
|
+
render 16/17 through those adapters in the normalized shared surfaces:
|
|
197
|
+
|
|
198
|
+
| Adapter component | Reachable proving surface |
|
|
199
|
+
| --------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
200
|
+
| `ActionButton`, `IconButton` | Chat-history rail, settings actions, sharing actions |
|
|
201
|
+
| `TextField`, `TextArea`, `Picker`, `Checkbox`, `Switch`, `Tabs` | Settings and sharing controls |
|
|
202
|
+
| `Dialog`, `Avatar`, `Status` | Core Share dialog on each example's shipped `/design-system-proof` route |
|
|
203
|
+
| `Tooltip`, `Popover`, `Spinner`, `Skeleton` | Agent-panel, runs-tray, and sidebar chrome |
|
|
204
|
+
| `Surface` | Builder connection card |
|
|
205
|
+
| `Menu` | Explicit gap: the agent-panel header menu embeds the live `RunsTrayMenuItem` compound submenu, which the v1 data-only menu contract cannot express |
|
|
206
|
+
|
|
207
|
+
The `Menu` row is intentionally called out rather than counted as bridged.
|
|
208
|
+
The everyday Chat share button remains the legacy popover; the proof route makes
|
|
209
|
+
the complete Core `ShareDialog` reachable without misrepresenting that popover.
|
|
210
|
+
The assistant-ui composer/message renderer, cmdk command-menu internals, and
|
|
211
|
+
Tiptap editor remain v1 non-goals. Their surrounding chrome is tokenized or
|
|
212
|
+
bridged where the semantic contract fits. If a product needs arbitrary nested
|
|
213
|
+
menu content, use a product slot or propose a contract extension instead of
|
|
214
|
+
silently mixing the default menu into a custom adapter.
|
|
215
|
+
|
|
216
|
+
The framework-owned sign-in shell is outside both the semantic bridge and the
|
|
217
|
+
build-time token tier in v1; the authenticated settings, sharing, history rail,
|
|
218
|
+
and agent-panel surfaces are the design-system proving surfaces. The main Chat
|
|
219
|
+
canvas remains tokens-only because the assistant-ui renderer is a documented
|
|
220
|
+
v1 non-goal. In the runnable examples, dark mode is exercised from the
|
|
221
|
+
`Cmd/Ctrl+K` Appearance command rather than a second settings section.
|
|
222
|
+
|
|
223
|
+
## Overlays, portals, and focus
|
|
224
|
+
|
|
225
|
+
Behavior components may use your design system’s overlay and focus
|
|
226
|
+
implementation wholesale. They do not need to wrap Radix. They must honor the
|
|
227
|
+
semantic contract, including controlled state, accessible roles, and the
|
|
228
|
+
provided `portalContainer`, `initialFocusRef`, and `restoreFocusRef` seams.
|
|
229
|
+
|
|
230
|
+
This matters when a native design-system dialog opens from a Radix-hosted
|
|
231
|
+
Toolkit surface. The adapter owns its overlay stack, while the seams let both
|
|
232
|
+
systems agree on the portal layer, z-index order, initial focus, and focus
|
|
233
|
+
restoration. Test nested and adjacent overlays in the real app, not only in an
|
|
234
|
+
isolated component explorer.
|
|
235
|
+
|
|
236
|
+
## Headless feature controllers and product slots
|
|
237
|
+
|
|
238
|
+
Semantic components are the shared vocabulary. Feature controllers are the
|
|
239
|
+
behavior boundary. A controller owns state transitions, actions, tracking, and
|
|
240
|
+
the view model; both the default view and a product slot consume that same
|
|
241
|
+
controller.
|
|
242
|
+
|
|
243
|
+
```tsx
|
|
244
|
+
<BuilderConnectCard
|
|
245
|
+
className="connection-card"
|
|
246
|
+
render={({ viewModel, className }) => (
|
|
247
|
+
<AcmeConnectionPanel
|
|
248
|
+
className={className}
|
|
249
|
+
title={viewModel.title}
|
|
250
|
+
status={viewModel.status}
|
|
251
|
+
pending={viewModel.action?.pending ?? false}
|
|
252
|
+
onConnect={viewModel.action?.onPress}
|
|
253
|
+
/>
|
|
254
|
+
)}
|
|
255
|
+
/>
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
This is feature-level headless UI, not a second set of low-level hooks for every
|
|
259
|
+
widget. `BuilderConnectCard` and `ChatHistoryRail` are the first proving slices;
|
|
260
|
+
settings and sharing follow the same controller/default-view/custom-view
|
|
261
|
+
invariant.
|
|
262
|
+
|
|
263
|
+
`ChatHistoryRail` keeps one deliberately opaque `renderRail` slot in v1. The
|
|
264
|
+
slot replaces the rail view wholesale and receives the shared controller plus
|
|
265
|
+
list props; discrete header, footer, and row slots are deferred until a second
|
|
266
|
+
product needs them. This bounds the API while keeping history state and actions
|
|
267
|
+
on the shared controller.
|
|
268
|
+
|
|
269
|
+
If a slot cannot express the required product change, inspect and eject the
|
|
270
|
+
smallest published unit:
|
|
271
|
+
|
|
272
|
+
```bash
|
|
273
|
+
agent-native eject --list
|
|
274
|
+
agent-native eject inspect toolkit/design-system
|
|
275
|
+
agent-native eject toolkit/design-system --app my-app --apply
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
Ejection transfers ownership; it does not fork Core auth, actions, persistence,
|
|
279
|
+
access checks, chat transport, or agent execution.
|
|
280
|
+
|
|
281
|
+
## Run the conformance kit
|
|
282
|
+
|
|
283
|
+
Export a complete component map from the customer package and run the shipped
|
|
284
|
+
test kit in a browser-like test environment:
|
|
285
|
+
|
|
286
|
+
```tsx filename="design-system.conformance.spec.tsx"
|
|
287
|
+
import { describe, it } from "vitest";
|
|
288
|
+
import { assertDesignSystemConformance } from "@agent-native/toolkit/conformance";
|
|
289
|
+
import { DESIGN_SYSTEM_CONTRACT_VERSION } from "@agent-native/toolkit/design-system";
|
|
290
|
+
import { acmeComponents } from "@acme/agent-native-design-system";
|
|
291
|
+
|
|
292
|
+
describe("Acme Agent Native adapter", () => {
|
|
293
|
+
it("conforms", async () => {
|
|
294
|
+
await assertDesignSystemConformance({
|
|
295
|
+
adapterName: "Acme",
|
|
296
|
+
components: acmeComponents,
|
|
297
|
+
contractVersion: DESIGN_SYSTEM_CONTRACT_VERSION,
|
|
298
|
+
});
|
|
299
|
+
});
|
|
300
|
+
});
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
The suite checks all 17 exports, controlled values and open state, accessible
|
|
304
|
+
roles, keyboard interaction, selection, portal targeting, z-index
|
|
305
|
+
interoperability, initial focus, and focus restoration. Run it in the adapter
|
|
306
|
+
package’s CI and retain a small app-level overlay test for provider-specific
|
|
307
|
+
composition.
|
|
308
|
+
|
|
309
|
+
Contract evolution follows semantic versioning:
|
|
310
|
+
|
|
311
|
+
- New components and optional props are a compatible minor change.
|
|
312
|
+
- New required props, removed components/props, or behavioral contract changes
|
|
313
|
+
require a new contract major.
|
|
314
|
+
- The conformance kit fails when the adapter’s contract major and Toolkit’s
|
|
315
|
+
contract major differ.
|
|
316
|
+
|
|
317
|
+
## Adapter recipes
|
|
318
|
+
|
|
319
|
+
### MUI-style theme-provider systems
|
|
320
|
+
|
|
321
|
+
The [Chat + Material UI example](https://github.com/BuilderIO/agent-native/tree/main/examples/chat-mui) is the primary worked reference. Its single
|
|
322
|
+
`app/design-system.tsx` module exports the semantic adapter, the MUI light and
|
|
323
|
+
dark `createTheme` values, and the `defineTheme` token source. The app's
|
|
324
|
+
`AppToolkitProvider` keeps the MUI `ThemeProvider` above shared Toolkit
|
|
325
|
+
surfaces, while `vite.config.ts` imports that same `theme` value for build-time
|
|
326
|
+
CSS generation. This keeps Emotion styles, MUI portals, and Agent Native
|
|
327
|
+
tokens on one source of truth.
|
|
328
|
+
|
|
329
|
+
Keep the company theme provider above `AppToolkitProvider`, and adapt semantic
|
|
330
|
+
props at the package boundary. Map `intent`, `emphasis`, and `size` to your
|
|
331
|
+
system’s own vocabulary inside the adapter—not in Agent Native feature code.
|
|
332
|
+
For overlays, forward `portalContainer` to the design system’s container or
|
|
333
|
+
portal prop and implement `initialFocusRef`/`restoreFocusRef` using its focus
|
|
334
|
+
manager.
|
|
335
|
+
|
|
336
|
+
```tsx
|
|
337
|
+
export const ActionButton: DesignSystemComponents["ActionButton"] = ({
|
|
338
|
+
intent = "neutral",
|
|
339
|
+
emphasis = "solid",
|
|
340
|
+
pending,
|
|
341
|
+
onPress,
|
|
342
|
+
children,
|
|
343
|
+
...props
|
|
344
|
+
}) => (
|
|
345
|
+
<CompanyButton
|
|
346
|
+
{...props}
|
|
347
|
+
color={intent === "danger" ? "error" : intent}
|
|
348
|
+
variant={emphasis === "solid" ? "contained" : emphasis}
|
|
349
|
+
loading={pending}
|
|
350
|
+
onClick={onPress}
|
|
351
|
+
>
|
|
352
|
+
{children}
|
|
353
|
+
</CompanyButton>
|
|
354
|
+
);
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
Do not copy a feature’s theme provider into each adapter component. Install it
|
|
358
|
+
once at the app boundary so portals and overlays inherit the same context.
|
|
359
|
+
|
|
360
|
+
The [Chat MUI adapter](https://github.com/BuilderIO/agent-native/blob/main/examples/chat-mui/app/design-system.tsx)
|
|
361
|
+
is the worked example: it exports one `defineTheme` value, imports that value
|
|
362
|
+
into `defineDesignSystem`, and imports the same module from `vite.config.ts`.
|
|
363
|
+
That single source of truth keeps the MUI light/dark provider tokens and the
|
|
364
|
+
build-time semantic CSS tokens aligned without runtime theme generation.
|
|
365
|
+
|
|
366
|
+
### React Aria-based systems
|
|
367
|
+
|
|
368
|
+
Use React Aria components or hooks to implement the semantics directly. Preserve
|
|
369
|
+
controlled `value`/`open` props and forward their change callbacks rather than
|
|
370
|
+
creating a second state store. For behavior contracts, use your overlay provider
|
|
371
|
+
and focus scope, set its portal root from `portalContainer`, and connect
|
|
372
|
+
initial/restore refs to the focus-management API. The conformance suite is the
|
|
373
|
+
minimum behavior check; your design system remains responsible for its full
|
|
374
|
+
keyboard and screen-reader test matrix.
|
|
375
|
+
|
|
376
|
+
```tsx
|
|
377
|
+
export const Checkbox: DesignSystemComponents["Checkbox"] = ({
|
|
378
|
+
checked,
|
|
379
|
+
onChange,
|
|
380
|
+
label,
|
|
381
|
+
...props
|
|
382
|
+
}) => (
|
|
383
|
+
<AriaCheckbox {...props} isSelected={checked} onChange={onChange}>
|
|
384
|
+
{label}
|
|
385
|
+
</AriaCheckbox>
|
|
386
|
+
);
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
### CSS Modules and plain React
|
|
390
|
+
|
|
391
|
+
The adapter can be ordinary React and CSS Modules. Ignore `className` entirely
|
|
392
|
+
when it would bypass your component’s style contract; it is optional. Keep DOM
|
|
393
|
+
roles, accessible names, keyboard behavior, and controlled state explicit.
|
|
394
|
+
|
|
395
|
+
```tsx
|
|
396
|
+
import styles from "./action-button.module.css";
|
|
397
|
+
|
|
398
|
+
export const ActionButton: DesignSystemComponents["ActionButton"] = ({
|
|
399
|
+
intent = "neutral",
|
|
400
|
+
emphasis = "solid",
|
|
401
|
+
pending,
|
|
402
|
+
disabled,
|
|
403
|
+
onPress,
|
|
404
|
+
children,
|
|
405
|
+
elementRef,
|
|
406
|
+
}) => (
|
|
407
|
+
<button
|
|
408
|
+
ref={elementRef}
|
|
409
|
+
className={styles[`${intent}-${emphasis}`]}
|
|
410
|
+
disabled={disabled || pending}
|
|
411
|
+
aria-busy={pending || undefined}
|
|
412
|
+
onClick={onPress}
|
|
413
|
+
>
|
|
414
|
+
{children}
|
|
415
|
+
</button>
|
|
416
|
+
);
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
## Version 1 boundaries
|
|
420
|
+
|
|
421
|
+
The semantic bridge does not replace every third-party UI ecosystem in version
|
|
422
|
+
|
|
423
|
+
1. These surfaces receive theme tokens and feature slots where available, but
|
|
424
|
+
their internal widgets are not semantic-adapter contracts yet:
|
|
425
|
+
|
|
426
|
+
- `@assistant-ui/react` chat and composer internals
|
|
427
|
+
- Tiptap editor kits
|
|
428
|
+
- `cmdk`, `vaul`, Recharts, and `react-day-picker`
|
|
429
|
+
- date-picker components (the `Picker` contract is select/combobox only)
|
|
430
|
+
- Dispatch’s independent primitive fork
|
|
431
|
+
- Pinpoint’s Solid.js and Shadow DOM UI
|
|
432
|
+
|
|
433
|
+
These boundaries are explicit so an adapter package can make accurate support
|
|
434
|
+
claims. Propose a new semantic component only when the same meaning and behavior
|
|
435
|
+
is useful across more than one feature; use product slots or eject for
|
|
436
|
+
one-feature differences.
|
|
437
|
+
|
|
438
|
+
## What’s next
|
|
439
|
+
|
|
440
|
+
- [**Toolkit UI Primitives**](/docs/toolkit-ui) — local adapters, provider
|
|
441
|
+
wiring, and shared primitive imports.
|
|
442
|
+
- [**Agent-Native Toolkit**](/docs/agent-native-toolkit) — reusable feature
|
|
443
|
+
ownership and package boundaries.
|
|
444
|
+
- [**Settings Kit**](/docs/toolkit-settings) and [**Sharing Kit**](/docs/toolkit-sharing)
|
|
445
|
+
— shared feature controllers that preserve app actions and access contracts.
|
|
@@ -8,6 +8,14 @@ description: "How to use @agent-native/toolkit UI primitives, the local app-adap
|
|
|
8
8
|
Toolkit UI primitives live under `@agent-native/toolkit/ui/*`. They are the
|
|
9
9
|
shared shadcn-style building blocks used by templates and reusable kits.
|
|
10
10
|
|
|
11
|
+
If your company already has a React component library, register it through the
|
|
12
|
+
semantic design-system bridge instead of replacing feature code. The bridge is
|
|
13
|
+
styling-runtime agnostic, supports partial adapters with per-control fallback,
|
|
14
|
+
and lets shared Toolkit and Core-owned feature views consume the same company
|
|
15
|
+
components. See [Custom Design Systems](/docs/custom-design-system) for the 17
|
|
16
|
+
semantic contracts, build-time theme tokens, conformance tests, and adapter
|
|
17
|
+
recipes.
|
|
18
|
+
|
|
11
19
|
<WireframeBlock id="doc-block-toolkit-ui-primitives">
|
|
12
20
|
<Screen
|
|
13
21
|
surface="desktop"
|
|
@@ -105,6 +113,14 @@ keep importing `@agent-native/toolkit/ui/*` without adopting local adapters.
|
|
|
105
113
|
Core also keeps old imports working through its own re-export shims for code
|
|
106
114
|
written before Toolkit adapters existed.
|
|
107
115
|
|
|
116
|
+
For new customization, prefer `designSystem={designSystem}` over the legacy
|
|
117
|
+
`components={{ Button }}` override. The design-system adapter uses semantic
|
|
118
|
+
props such as intent, emphasis, pending state, controlled values, and controlled
|
|
119
|
+
open state rather than shadcn variant names. When both APIs provide the button,
|
|
120
|
+
`designSystem.components.ActionButton` wins. A missing or failed custom control
|
|
121
|
+
falls back to Toolkit’s default adapter without disabling the rest of the
|
|
122
|
+
registered system.
|
|
123
|
+
|
|
108
124
|
## Shell hooks {#shell-hooks}
|
|
109
125
|
|
|
110
126
|
Toolkit includes small shell helpers and hooks that are useful across apps:
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-native/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.118.0",
|
|
4
4
|
"description": "Framework for agent-native application development — where AI agents and UI share SQL state, actions, and context",
|
|
5
5
|
"homepage": "https://github.com/BuilderIO/agent-native#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -390,7 +390,7 @@
|
|
|
390
390
|
"yjs": "^13.6.31",
|
|
391
391
|
"zod": "^4.3.6",
|
|
392
392
|
"@agent-native/recap-cli": "0.5.1",
|
|
393
|
-
"@agent-native/toolkit": "^0.
|
|
393
|
+
"@agent-native/toolkit": "^0.10.0"
|
|
394
394
|
},
|
|
395
395
|
"devDependencies": {
|
|
396
396
|
"@ai-sdk/anthropic": "^3.0.71",
|
package/src/a2a/types.ts
CHANGED
package/src/agent/types.ts
CHANGED
|
@@ -290,7 +290,7 @@ export type AgentChatEvent =
|
|
|
290
290
|
*/
|
|
291
291
|
type: "agent_call_progress";
|
|
292
292
|
agent: string;
|
|
293
|
-
/** Remote A2A task state for this poll, e.g. "working" | "
|
|
293
|
+
/** Remote A2A task state for this poll, e.g. "working" | "processing". */
|
|
294
294
|
state: string;
|
|
295
295
|
/** Elapsed wall-clock seconds since the cross-app call began. */
|
|
296
296
|
elapsedSeconds: number;
|