@agent-native/core 0.90.2 → 0.90.4
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 +25 -3
- package/corpus/README.md +2 -2
- package/corpus/core/CHANGELOG.md +21 -0
- package/corpus/core/bin/agent-native.js +25 -3
- package/corpus/core/docs/content/agent-native-toolkit.mdx +87 -80
- package/corpus/core/docs/content/locales/ar-SA/agent-native-toolkit.mdx +89 -80
- package/corpus/core/docs/content/locales/de-DE/agent-native-toolkit.mdx +89 -80
- package/corpus/core/docs/content/locales/es-ES/agent-native-toolkit.mdx +89 -80
- package/corpus/core/docs/content/locales/fr-FR/agent-native-toolkit.mdx +89 -80
- package/corpus/core/docs/content/locales/hi-IN/agent-native-toolkit.mdx +89 -80
- package/corpus/core/docs/content/locales/ja-JP/agent-native-toolkit.mdx +89 -80
- package/corpus/core/docs/content/locales/ko-KR/agent-native-toolkit.mdx +89 -80
- package/corpus/core/docs/content/locales/pt-BR/agent-native-toolkit.mdx +89 -80
- package/corpus/core/docs/content/locales/zh-CN/agent-native-toolkit.mdx +89 -80
- package/corpus/core/docs/content/locales/zh-TW/agent-native-toolkit.mdx +89 -80
- package/corpus/core/docs/content/toolkit-agent-ux.mdx +43 -0
- package/corpus/core/docs/content/toolkit-app-adapters.mdx +9 -0
- package/corpus/core/docs/content/toolkit-collaboration-ui.mdx +12 -0
- package/corpus/core/docs/content/toolkit-collaboration.mdx +74 -0
- package/corpus/core/docs/content/toolkit-command-navigation.mdx +106 -0
- package/corpus/core/docs/content/toolkit-comments-review.mdx +98 -0
- package/corpus/core/docs/content/toolkit-history.mdx +95 -0
- package/corpus/core/docs/content/toolkit-observability.mdx +41 -0
- package/corpus/core/docs/content/toolkit-org-team.mdx +80 -0
- package/corpus/core/docs/content/toolkit-resources.mdx +57 -0
- package/corpus/core/docs/content/toolkit-settings.mdx +65 -0
- package/corpus/core/docs/content/toolkit-setup-connections.mdx +109 -0
- package/corpus/core/docs/content/toolkit-sharing-ui.mdx +18 -6
- package/corpus/core/docs/content/toolkit-sharing.mdx +81 -0
- package/corpus/core/docs/content/toolkit-shell-hooks.mdx +9 -0
- package/corpus/core/docs/content/toolkit-ui.mdx +9 -0
- package/corpus/core/package.json +35 -1
- package/corpus/core/src/agent/engine/ai-sdk-engine.ts +19 -1
- package/corpus/core/src/agent/engine/anthropic-engine.ts +25 -1
- package/corpus/core/src/agent/engine/index.ts +1 -0
- package/corpus/core/src/agent/engine/registry.ts +86 -18
- package/corpus/core/src/agent/production-agent.ts +37 -6
- package/corpus/core/src/cli/create.ts +35 -0
- package/corpus/core/src/cli/design-connect.ts +248 -0
- package/corpus/core/src/cli/index.ts +84 -7
- package/corpus/core/src/cli/workspacify.ts +34 -0
- package/corpus/core/src/client/command-navigation/index.ts +15 -0
- package/corpus/core/src/client/comments-review/index.ts +1 -0
- package/corpus/core/src/client/history/VersionHistoryPanel.tsx +175 -0
- package/corpus/core/src/client/history/index.ts +21 -0
- package/corpus/core/src/client/history/use-history.ts +114 -0
- package/corpus/core/src/client/index.ts +84 -9
- package/corpus/core/src/client/org/OrgSwitcher.tsx +6 -6
- package/corpus/core/src/client/org/RequireActiveOrg.tsx +2 -2
- package/corpus/core/src/client/org/TeamPage.tsx +3 -3
- package/corpus/core/src/client/org/hooks.ts +32 -0
- package/corpus/core/src/client/org/index.ts +30 -1
- package/corpus/core/src/client/org-team/index.ts +1 -0
- package/corpus/core/src/client/review/ReviewStatusBadge.tsx +39 -0
- package/corpus/core/src/client/review/ReviewThreadPanel.tsx +278 -0
- package/corpus/core/src/client/review/index.ts +30 -0
- package/corpus/core/src/client/review/use-review.ts +152 -0
- package/corpus/core/src/client/settings/index.ts +11 -1
- package/corpus/core/src/client/setup-connections/BuilderConnectCard.tsx +94 -0
- package/corpus/core/src/client/setup-connections/ProviderReadinessBadge.tsx +73 -0
- package/corpus/core/src/client/setup-connections/SetupConnectionsPage.tsx +94 -0
- package/corpus/core/src/client/setup-connections/index.ts +46 -0
- package/corpus/core/src/client/sharing/ShareButton.tsx +20 -14
- package/corpus/core/src/client/sharing/ShareDialog.tsx +3 -3
- package/corpus/core/src/command-navigation/actions.ts +100 -0
- package/corpus/core/src/command-navigation/index.ts +12 -0
- package/corpus/core/src/comments-review/index.ts +1 -0
- package/corpus/core/src/file-upload/builder.ts +24 -3
- package/corpus/core/src/file-upload/types.ts +3 -1
- package/corpus/core/src/history/actions/create-resource-version.ts +92 -0
- package/corpus/core/src/history/actions/get-resource-version.ts +60 -0
- package/corpus/core/src/history/actions/list-resource-history.ts +53 -0
- package/corpus/core/src/history/actions/list-resource-versions.ts +43 -0
- package/corpus/core/src/history/actions/restore-resource-version.ts +96 -0
- package/corpus/core/src/history/index.ts +26 -0
- package/corpus/core/src/history/registry.ts +111 -0
- package/corpus/core/src/history/store.ts +379 -0
- package/corpus/core/src/history/types.ts +69 -0
- package/corpus/core/src/index.ts +10 -0
- package/corpus/core/src/navigation/index.ts +170 -0
- package/corpus/core/src/org/index.ts +8 -0
- package/corpus/core/src/org/permissions.ts +30 -0
- package/corpus/core/src/org-team/index.ts +1 -0
- package/corpus/core/src/private-blob/registry.ts +1 -0
- package/corpus/core/src/review/actions/consume-review-feedback.ts +48 -0
- package/corpus/core/src/review/actions/create-review-comment.ts +107 -0
- package/corpus/core/src/review/actions/delete-review-comment.ts +67 -0
- package/corpus/core/src/review/actions/get-review-feedback.ts +54 -0
- package/corpus/core/src/review/actions/list-review-comments.ts +53 -0
- package/corpus/core/src/review/actions/reply-review-comment.ts +107 -0
- package/corpus/core/src/review/actions/resolve-review-thread.ts +67 -0
- package/corpus/core/src/review/actions/set-review-status.ts +58 -0
- package/corpus/core/src/review/index.ts +31 -0
- package/corpus/core/src/review/mentions.ts +44 -0
- package/corpus/core/src/review/registry.ts +111 -0
- package/corpus/core/src/review/store.ts +690 -0
- package/corpus/core/src/review/types.ts +97 -0
- package/corpus/core/src/server/action-discovery.ts +54 -0
- package/corpus/core/src/server/agent-chat-plugin.ts +6 -0
- package/corpus/core/src/server/agent-engine-api-key-route.ts +5 -0
- package/corpus/core/src/server/credential-provider.ts +118 -0
- package/corpus/core/src/setup-connections/index.ts +89 -0
- package/corpus/core/src/setup-connections/onboarding.ts +47 -0
- package/corpus/core/src/transcription/builder-transcription.ts +9 -2
- package/corpus/core/src/vite/action-types-plugin.ts +52 -0
- package/corpus/templates/analytics/app/components/layout/Layout.tsx +2 -1
- package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +2 -2
- package/corpus/templates/analytics/app/global.css +22 -10
- package/corpus/templates/analytics/app/i18n/zh-TW.ts +6 -1
- package/corpus/templates/analytics/app/i18n-data.ts +81 -13
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +2 -2
- package/corpus/templates/analytics/app/pages/analyses/AnalysisDetail.tsx +2 -2
- package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +528 -108
- package/corpus/templates/analytics/app/pages/sessions/SessionDevToolsPanel.tsx +466 -183
- package/corpus/templates/analytics/changelog/2026-07-07-session-replays-load-sooner-show-clearer-activity-timelines-.md +6 -0
- package/corpus/templates/assets/actions/_preset-skeleton-validation.ts +11 -11
- package/corpus/templates/assets/actions/generate-image.ts +64 -28
- package/corpus/templates/assets/app/components/generation/GenerationResults.tsx +1 -1
- package/corpus/templates/assets/app/routes/brand-kits.$id_.presets.$presetId.tsx +91 -74
- package/corpus/templates/assets/server/lib/generation.ts +29 -4
- package/corpus/templates/assets/server/lib/image-processing.ts +131 -0
- package/corpus/templates/brain/app/routes/settings.tsx +2 -2
- package/corpus/templates/calendar/.agents/skills/event-management/SKILL.md +24 -2
- package/corpus/templates/calendar/AGENTS.md +3 -0
- package/corpus/templates/calendar/actions/create-event.ts +8 -34
- package/corpus/templates/calendar/actions/event-action-helpers.ts +52 -0
- package/corpus/templates/calendar/actions/manage-event-draft.ts +7 -34
- package/corpus/templates/calendar/actions/update-event.ts +10 -23
- package/corpus/templates/calendar/app/components/calendar/AttendeeAutocomplete.tsx +79 -6
- package/corpus/templates/calendar/app/components/calendar/CreateEventDialog.tsx +23 -0
- package/corpus/templates/calendar/app/components/calendar/EventAttendeesSection.tsx +59 -2
- package/corpus/templates/calendar/app/components/calendar/EventDetailPanel.tsx +40 -1
- package/corpus/templates/calendar/app/components/calendar/EventDetailPopover.tsx +154 -41
- package/corpus/templates/calendar/app/hooks/use-events.ts +6 -0
- package/corpus/templates/calendar/app/hooks/use-people.ts +55 -0
- package/corpus/templates/calendar/app/i18n/zh-TW.ts +4 -0
- package/corpus/templates/calendar/app/i18n-data.ts +40 -0
- package/corpus/templates/calendar/changelog/2026-07-07-guest-suggestions-now-find-coworkers-from-your-google-worksp.md +6 -0
- package/corpus/templates/calendar/changelog/2026-07-07-you-can-mark-event-guests-as-optional-while-inviting-them-or.md +6 -0
- package/corpus/templates/calendar/changelog/2026-07-07-zoom-stays-selected-after-connecting-it-from-a-draft-event.md +6 -0
- package/corpus/templates/calendar/server/handlers/events.ts +1 -0
- package/corpus/templates/calendar/server/lib/google-calendar.ts +4 -0
- package/corpus/templates/calendar/server/plugins/agent-chat.ts +1 -1
- package/corpus/templates/calendar/shared/api.ts +2 -0
- package/corpus/templates/clips/.agents/skills/ai-video-tools/SKILL.md +29 -3
- package/corpus/templates/clips/actions/create-recording.ts +5 -1
- package/corpus/templates/clips/actions/finalize-recording.ts +140 -1
- package/corpus/templates/clips/actions/generate-workflow.ts +19 -8
- package/corpus/templates/clips/actions/get-clips-ai-prefs.ts +36 -0
- package/corpus/templates/clips/actions/import-loom-recording.ts +1 -0
- package/corpus/templates/clips/actions/lib/clips-ai-prefs.ts +28 -0
- package/corpus/templates/clips/actions/lib/ensure-seekable-video.ts +1 -0
- package/corpus/templates/clips/actions/regenerate-chapters.ts +21 -7
- package/corpus/templates/clips/actions/regenerate-summary.ts +26 -8
- package/corpus/templates/clips/actions/regenerate-title.ts +44 -7
- package/corpus/templates/clips/actions/request-transcript.ts +31 -0
- package/corpus/templates/clips/actions/set-thumbnail.ts +2 -0
- package/corpus/templates/clips/actions/update-clips-ai-prefs.ts +50 -0
- package/corpus/templates/clips/app/components/library/organization-switcher.tsx +2 -2
- package/corpus/templates/clips/app/components/meetings/meeting-card.tsx +7 -2
- package/corpus/templates/clips/app/components/player/scrubber-position.ts +9 -0
- package/corpus/templates/clips/app/components/player/scrubber.tsx +5 -2
- package/corpus/templates/clips/app/components/player/share-dialog.tsx +69 -41
- package/corpus/templates/clips/app/components/player/video-player.tsx +38 -1
- package/corpus/templates/clips/app/components/sharing/share-ui.tsx +3 -3
- package/corpus/templates/clips/app/components/sharing/slack-share-hint.tsx +9 -19
- package/corpus/templates/clips/app/hooks/use-auto-title.ts +25 -10
- package/corpus/templates/clips/app/i18n/ar-SA.ts +28 -6
- package/corpus/templates/clips/app/i18n/de-DE.ts +28 -6
- package/corpus/templates/clips/app/i18n/en-US.ts +29 -6
- package/corpus/templates/clips/app/i18n/es-ES.ts +29 -6
- package/corpus/templates/clips/app/i18n/fr-FR.ts +30 -6
- package/corpus/templates/clips/app/i18n/hi-IN.ts +26 -6
- package/corpus/templates/clips/app/i18n/ja-JP.ts +27 -6
- package/corpus/templates/clips/app/i18n/ko-KR.ts +28 -6
- package/corpus/templates/clips/app/i18n/pt-BR.ts +28 -6
- package/corpus/templates/clips/app/i18n/zh-CN.ts +26 -6
- package/corpus/templates/clips/app/i18n/zh-TW.ts +25 -6
- package/corpus/templates/clips/app/routes/_app.meetings._index.tsx +73 -0
- package/corpus/templates/clips/app/routes/_app.settings._index.tsx +1 -0
- package/corpus/templates/clips/app/routes/r.$recordingId.tsx +79 -5
- package/corpus/templates/clips/app/routes/record.tsx +21 -12
- package/corpus/templates/clips/changelog/2026-07-02-recordings-now-wait-for-storage-media-to-serve-before-finishing.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-07-a-pending-app-update-no-longer-blocks-screen-recording-updat.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-07-ai-tools-can-include-the-full-video-not-just-the-transcript-.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-07-chrome-extension-recordings-keep-audio-after-refreshing-tab.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-07-clip-playback-progress-now-starts-and-finishes-at-the-right-times.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-07-clips-desktop-now-surfaces-meetings-and-dictate-directly-in-.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-07-meeting-notes-now-explain-exactly-how-to-start-granola-style.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-07-meeting-start-alerts-now-include-separate-start-notes-and-jo.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-07-recordings-start-more-predictably-and-newly-saved-clips-refr.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-07-sharing-public-clips-now-stays-focused-on-the-normal-link-wi.md +6 -0
- package/corpus/templates/clips/chrome-extension/public/manifest.json +1 -1
- package/corpus/templates/clips/chrome-extension/src/background.ts +18 -0
- package/corpus/templates/clips/chrome-extension/src/offscreen.ts +23 -8
- package/corpus/templates/clips/desktop/src/app.tsx +475 -108
- package/corpus/templates/clips/desktop/src/hooks/useMediaDevices.ts +19 -7
- package/corpus/templates/clips/desktop/src/lib/permissions.ts +2 -0
- package/corpus/templates/clips/desktop/src/lib/recorder.ts +27 -21
- package/corpus/templates/clips/desktop/src/lib/updater.ts +25 -2
- package/corpus/templates/clips/desktop/src/overlays/meeting-notification.tsx +23 -22
- package/corpus/templates/clips/desktop/src/styles.css +167 -2
- package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +8 -1
- package/corpus/templates/clips/desktop/src-tauri/src/notifications.rs +3 -7
- package/corpus/templates/clips/desktop/src-tauri/src/tray_meetings.rs +5 -4
- package/corpus/templates/clips/server/routes/_agent-native/clips/user-prefs.put.ts +16 -8
- package/corpus/templates/clips/server/routes/api/recordings/[recordingId]/thumbnail.post.ts +1 -0
- package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/abort.post.ts +22 -5
- package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/chunk.post.ts +8 -0
- package/corpus/templates/clips/server/routes/api/video/[recordingId].get.ts +13 -6
- package/corpus/templates/clips/shared/clips-ai-prefs.ts +81 -0
- package/corpus/templates/clips/shared/finalize-recovery.ts +12 -0
- package/corpus/templates/content/actions/delete-document.ts +337 -52
- package/corpus/templates/content/changelog/2026-07-07-permanently-deleting-trashed-databases-now-finishes-reliably.md +6 -0
- package/corpus/templates/design/.agents/skills/visual-edit/SKILL.md +16 -1
- package/corpus/templates/design/actions/add-localhost-screens.ts +1 -0
- package/corpus/templates/design/app/components/design/DesignCanvas.tsx +345 -11
- package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +89 -14
- package/corpus/templates/design/app/components/design/bridge-security.ts +7 -1
- package/corpus/templates/design/app/components/design/multi-screen/types.ts +1 -1
- package/corpus/templates/design/app/i18n/zh-TW.ts +3 -0
- package/corpus/templates/design/app/i18n-data.ts +41 -0
- package/corpus/templates/design/changelog/2026-07-07-local-visual-edit-uses-live-app-iframes-for-click-to-edit-pr.md +6 -0
- package/corpus/templates/slides/app/pages/DeckEditor.tsx +2 -2
- package/dist/agent/engine/ai-sdk-engine.d.ts.map +1 -1
- package/dist/agent/engine/ai-sdk-engine.js +15 -1
- package/dist/agent/engine/ai-sdk-engine.js.map +1 -1
- package/dist/agent/engine/anthropic-engine.d.ts.map +1 -1
- package/dist/agent/engine/anthropic-engine.js +20 -1
- package/dist/agent/engine/anthropic-engine.js.map +1 -1
- package/dist/agent/engine/index.d.ts +1 -1
- package/dist/agent/engine/index.d.ts.map +1 -1
- package/dist/agent/engine/index.js +1 -1
- package/dist/agent/engine/index.js.map +1 -1
- package/dist/agent/engine/registry.d.ts +14 -0
- package/dist/agent/engine/registry.d.ts.map +1 -1
- package/dist/agent/engine/registry.js +78 -16
- package/dist/agent/engine/registry.js.map +1 -1
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +27 -7
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/cli/create.d.ts.map +1 -1
- package/dist/cli/create.js +31 -0
- package/dist/cli/create.js.map +1 -1
- package/dist/cli/design-connect.d.ts.map +1 -1
- package/dist/cli/design-connect.js +186 -0
- package/dist/cli/design-connect.js.map +1 -1
- package/dist/cli/index.js +76 -9
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/workspacify.d.ts.map +1 -1
- package/dist/cli/workspacify.js +30 -0
- package/dist/cli/workspacify.js.map +1 -1
- package/dist/client/command-navigation/index.d.ts +4 -0
- package/dist/client/command-navigation/index.d.ts.map +1 -0
- package/dist/client/command-navigation/index.js +4 -0
- package/dist/client/command-navigation/index.js.map +1 -0
- package/dist/client/comments-review/index.d.ts +2 -0
- package/dist/client/comments-review/index.d.ts.map +1 -0
- package/dist/client/comments-review/index.js +2 -0
- package/dist/client/comments-review/index.js.map +1 -0
- package/dist/client/history/VersionHistoryPanel.d.ts +18 -0
- package/dist/client/history/VersionHistoryPanel.d.ts.map +1 -0
- package/dist/client/history/VersionHistoryPanel.js +31 -0
- package/dist/client/history/VersionHistoryPanel.js.map +1 -0
- package/dist/client/history/index.d.ts +3 -0
- package/dist/client/history/index.d.ts.map +1 -0
- package/dist/client/history/index.js +3 -0
- package/dist/client/history/index.js.map +1 -0
- package/dist/client/history/use-history.d.ts +58 -0
- package/dist/client/history/use-history.d.ts.map +1 -0
- package/dist/client/history/use-history.js +24 -0
- package/dist/client/history/use-history.js.map +1 -0
- package/dist/client/index.d.ts +6 -4
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +6 -4
- package/dist/client/index.js.map +1 -1
- package/dist/client/org/OrgSwitcher.js +5 -5
- package/dist/client/org/OrgSwitcher.js.map +1 -1
- package/dist/client/org/RequireActiveOrg.js +2 -2
- package/dist/client/org/RequireActiveOrg.js.map +1 -1
- package/dist/client/org/TeamPage.js +3 -3
- package/dist/client/org/TeamPage.js.map +1 -1
- package/dist/client/org/hooks.d.ts +12 -1
- package/dist/client/org/hooks.d.ts.map +1 -1
- package/dist/client/org/hooks.js +15 -0
- package/dist/client/org/hooks.js.map +1 -1
- package/dist/client/org/index.d.ts +4 -2
- package/dist/client/org/index.d.ts.map +1 -1
- package/dist/client/org/index.js +3 -1
- package/dist/client/org/index.js.map +1 -1
- package/dist/client/org-team/index.d.ts +2 -0
- package/dist/client/org-team/index.d.ts.map +1 -0
- package/dist/client/org-team/index.js +2 -0
- package/dist/client/org-team/index.js.map +1 -0
- package/dist/client/review/ReviewStatusBadge.d.ts +7 -0
- package/dist/client/review/ReviewStatusBadge.d.ts.map +1 -0
- package/dist/client/review/ReviewStatusBadge.js +19 -0
- package/dist/client/review/ReviewStatusBadge.js.map +1 -0
- package/dist/client/review/ReviewThreadPanel.d.ts +20 -0
- package/dist/client/review/ReviewThreadPanel.d.ts.map +1 -0
- package/dist/client/review/ReviewThreadPanel.js +84 -0
- package/dist/client/review/ReviewThreadPanel.js.map +1 -0
- package/dist/client/review/index.d.ts +4 -0
- package/dist/client/review/index.d.ts.map +1 -0
- package/dist/client/review/index.js +4 -0
- package/dist/client/review/index.js.map +1 -0
- package/dist/client/review/use-review.d.ts +91 -0
- package/dist/client/review/use-review.d.ts.map +1 -0
- package/dist/client/review/use-review.js +30 -0
- package/dist/client/review/use-review.js.map +1 -0
- package/dist/client/settings/index.d.ts +1 -1
- package/dist/client/settings/index.d.ts.map +1 -1
- package/dist/client/settings/index.js +1 -1
- package/dist/client/settings/index.js.map +1 -1
- package/dist/client/setup-connections/BuilderConnectCard.d.ts +9 -0
- package/dist/client/setup-connections/BuilderConnectCard.d.ts.map +1 -0
- package/dist/client/setup-connections/BuilderConnectCard.js +25 -0
- package/dist/client/setup-connections/BuilderConnectCard.js.map +1 -0
- package/dist/client/setup-connections/ProviderReadinessBadge.d.ts +8 -0
- package/dist/client/setup-connections/ProviderReadinessBadge.d.ts.map +1 -0
- package/dist/client/setup-connections/ProviderReadinessBadge.js +32 -0
- package/dist/client/setup-connections/ProviderReadinessBadge.js.map +1 -0
- package/dist/client/setup-connections/SetupConnectionsPage.d.ts +17 -0
- package/dist/client/setup-connections/SetupConnectionsPage.d.ts.map +1 -0
- package/dist/client/setup-connections/SetupConnectionsPage.js +10 -0
- package/dist/client/setup-connections/SetupConnectionsPage.js.map +1 -0
- package/dist/client/setup-connections/index.d.ts +7 -0
- package/dist/client/setup-connections/index.d.ts.map +1 -0
- package/dist/client/setup-connections/index.js +7 -0
- package/dist/client/setup-connections/index.js.map +1 -0
- package/dist/client/sharing/ShareButton.d.ts +4 -4
- package/dist/client/sharing/ShareButton.d.ts.map +1 -1
- package/dist/client/sharing/ShareButton.js +13 -7
- package/dist/client/sharing/ShareButton.js.map +1 -1
- package/dist/client/sharing/ShareDialog.js +3 -3
- package/dist/client/sharing/ShareDialog.js.map +1 -1
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/collab/awareness.d.ts.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/collab/struct-routes.d.ts +1 -1
- package/dist/command-navigation/actions.d.ts +25 -0
- package/dist/command-navigation/actions.d.ts.map +1 -0
- package/dist/command-navigation/actions.js +64 -0
- package/dist/command-navigation/actions.js.map +1 -0
- package/dist/command-navigation/index.d.ts +4 -0
- package/dist/command-navigation/index.d.ts.map +1 -0
- package/dist/command-navigation/index.js +4 -0
- package/dist/command-navigation/index.js.map +1 -0
- package/dist/comments-review/index.d.ts +2 -0
- package/dist/comments-review/index.d.ts.map +1 -0
- package/dist/comments-review/index.js +2 -0
- package/dist/comments-review/index.js.map +1 -0
- package/dist/file-upload/builder.d.ts.map +1 -1
- package/dist/file-upload/builder.js +18 -2
- package/dist/file-upload/builder.js.map +1 -1
- package/dist/file-upload/types.d.ts +3 -0
- package/dist/file-upload/types.d.ts.map +1 -1
- package/dist/file-upload/types.js.map +1 -1
- package/dist/history/actions/create-resource-version.d.ts +10 -0
- package/dist/history/actions/create-resource-version.d.ts.map +1 -0
- package/dist/history/actions/create-resource-version.js +68 -0
- package/dist/history/actions/create-resource-version.js.map +1 -0
- package/dist/history/actions/get-resource-version.d.ts +10 -0
- package/dist/history/actions/get-resource-version.d.ts.map +1 -0
- package/dist/history/actions/get-resource-version.js +38 -0
- package/dist/history/actions/get-resource-version.js.map +1 -0
- package/dist/history/actions/list-resource-history.d.ts +10 -0
- package/dist/history/actions/list-resource-history.d.ts.map +1 -0
- package/dist/history/actions/list-resource-history.js +45 -0
- package/dist/history/actions/list-resource-history.js.map +1 -0
- package/dist/history/actions/list-resource-versions.d.ts +10 -0
- package/dist/history/actions/list-resource-versions.d.ts.map +1 -0
- package/dist/history/actions/list-resource-versions.js +35 -0
- package/dist/history/actions/list-resource-versions.js.map +1 -0
- package/dist/history/actions/restore-resource-version.d.ts +11 -0
- package/dist/history/actions/restore-resource-version.d.ts.map +1 -0
- package/dist/history/actions/restore-resource-version.js +59 -0
- package/dist/history/actions/restore-resource-version.js.map +1 -0
- package/dist/history/index.d.ts +4 -0
- package/dist/history/index.d.ts.map +1 -0
- package/dist/history/index.js +3 -0
- package/dist/history/index.js.map +1 -0
- package/dist/history/registry.d.ts +10 -0
- package/dist/history/registry.d.ts.map +1 -0
- package/dist/history/registry.js +63 -0
- package/dist/history/registry.js.map +1 -0
- package/dist/history/store.d.ts +34 -0
- package/dist/history/store.d.ts.map +1 -0
- package/dist/history/store.js +290 -0
- package/dist/history/store.js.map +1 -0
- package/dist/history/types.d.ts +55 -0
- package/dist/history/types.d.ts.map +1 -0
- package/dist/history/types.js +2 -0
- package/dist/history/types.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/navigation/index.d.ts +53 -0
- package/dist/navigation/index.d.ts.map +1 -0
- package/dist/navigation/index.js +105 -0
- package/dist/navigation/index.js.map +1 -0
- package/dist/observability/routes.d.ts +3 -3
- package/dist/org/index.d.ts +1 -0
- package/dist/org/index.d.ts.map +1 -1
- package/dist/org/index.js +1 -0
- package/dist/org/index.js.map +1 -1
- package/dist/org/permissions.d.ts +7 -0
- package/dist/org/permissions.d.ts.map +1 -0
- package/dist/org/permissions.js +21 -0
- package/dist/org/permissions.js.map +1 -0
- package/dist/org-team/index.d.ts +2 -0
- package/dist/org-team/index.d.ts.map +1 -0
- package/dist/org-team/index.js +2 -0
- package/dist/org-team/index.js.map +1 -0
- package/dist/private-blob/registry.d.ts.map +1 -1
- package/dist/private-blob/registry.js +1 -0
- package/dist/private-blob/registry.js.map +1 -1
- package/dist/progress/routes.d.ts +1 -1
- package/dist/resources/handlers.d.ts +2 -2
- package/dist/review/actions/consume-review-feedback.d.ts +10 -0
- package/dist/review/actions/consume-review-feedback.d.ts.map +1 -0
- package/dist/review/actions/consume-review-feedback.js +35 -0
- package/dist/review/actions/consume-review-feedback.js.map +1 -0
- package/dist/review/actions/create-review-comment.d.ts +18 -0
- package/dist/review/actions/create-review-comment.d.ts.map +1 -0
- package/dist/review/actions/create-review-comment.js +81 -0
- package/dist/review/actions/create-review-comment.js.map +1 -0
- package/dist/review/actions/delete-review-comment.d.ts +11 -0
- package/dist/review/actions/delete-review-comment.d.ts.map +1 -0
- package/dist/review/actions/delete-review-comment.js +53 -0
- package/dist/review/actions/delete-review-comment.js.map +1 -0
- package/dist/review/actions/get-review-feedback.d.ts +10 -0
- package/dist/review/actions/get-review-feedback.d.ts.map +1 -0
- package/dist/review/actions/get-review-feedback.js +45 -0
- package/dist/review/actions/get-review-feedback.js.map +1 -0
- package/dist/review/actions/list-review-comments.d.ts +13 -0
- package/dist/review/actions/list-review-comments.d.ts.map +1 -0
- package/dist/review/actions/list-review-comments.js +44 -0
- package/dist/review/actions/list-review-comments.js.map +1 -0
- package/dist/review/actions/reply-review-comment.d.ts +16 -0
- package/dist/review/actions/reply-review-comment.d.ts.map +1 -0
- package/dist/review/actions/reply-review-comment.js +84 -0
- package/dist/review/actions/reply-review-comment.js.map +1 -0
- package/dist/review/actions/resolve-review-thread.d.ts +12 -0
- package/dist/review/actions/resolve-review-thread.d.ts.map +1 -0
- package/dist/review/actions/resolve-review-thread.js +49 -0
- package/dist/review/actions/resolve-review-thread.js.map +1 -0
- package/dist/review/actions/set-review-status.d.ts +9 -0
- package/dist/review/actions/set-review-status.d.ts.map +1 -0
- package/dist/review/actions/set-review-status.js +43 -0
- package/dist/review/actions/set-review-status.js.map +1 -0
- package/dist/review/index.d.ts +5 -0
- package/dist/review/index.d.ts.map +1 -0
- package/dist/review/index.js +4 -0
- package/dist/review/index.js.map +1 -0
- package/dist/review/mentions.d.ts +4 -0
- package/dist/review/mentions.d.ts.map +1 -0
- package/dist/review/mentions.js +39 -0
- package/dist/review/mentions.js.map +1 -0
- package/dist/review/registry.d.ts +10 -0
- package/dist/review/registry.d.ts.map +1 -0
- package/dist/review/registry.js +63 -0
- package/dist/review/registry.js.map +1 -0
- package/dist/review/store.d.ts +63 -0
- package/dist/review/store.d.ts.map +1 -0
- package/dist/review/store.js +561 -0
- package/dist/review/store.js.map +1 -0
- package/dist/review/types.d.ts +77 -0
- package/dist/review/types.d.ts.map +1 -0
- package/dist/review/types.js +2 -0
- package/dist/review/types.js.map +1 -0
- package/dist/secrets/routes.d.ts +9 -9
- package/dist/server/action-discovery.d.ts.map +1 -1
- package/dist/server/action-discovery.js +54 -0
- package/dist/server/action-discovery.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +5 -0
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/server/agent-engine-api-key-route.d.ts.map +1 -1
- package/dist/server/agent-engine-api-key-route.js +5 -0
- package/dist/server/agent-engine-api-key-route.js.map +1 -1
- package/dist/server/credential-provider.d.ts +28 -0
- package/dist/server/credential-provider.d.ts.map +1 -1
- package/dist/server/credential-provider.js +92 -0
- package/dist/server/credential-provider.js.map +1 -1
- package/dist/setup-connections/index.d.ts +6 -0
- package/dist/setup-connections/index.d.ts.map +1 -0
- package/dist/setup-connections/index.js +6 -0
- package/dist/setup-connections/index.js.map +1 -0
- package/dist/setup-connections/onboarding.d.ts +14 -0
- package/dist/setup-connections/onboarding.d.ts.map +1 -0
- package/dist/setup-connections/onboarding.js +23 -0
- package/dist/setup-connections/onboarding.js.map +1 -0
- package/dist/transcription/builder-transcription.d.ts +1 -0
- package/dist/transcription/builder-transcription.d.ts.map +1 -1
- package/dist/transcription/builder-transcription.js +5 -2
- package/dist/transcription/builder-transcription.js.map +1 -1
- package/dist/vite/action-types-plugin.d.ts.map +1 -1
- package/dist/vite/action-types-plugin.js +52 -0
- package/dist/vite/action-types-plugin.js.map +1 -1
- package/docs/content/agent-native-toolkit.mdx +87 -80
- package/docs/content/locales/ar-SA/agent-native-toolkit.mdx +89 -80
- package/docs/content/locales/de-DE/agent-native-toolkit.mdx +89 -80
- package/docs/content/locales/es-ES/agent-native-toolkit.mdx +89 -80
- package/docs/content/locales/fr-FR/agent-native-toolkit.mdx +89 -80
- package/docs/content/locales/hi-IN/agent-native-toolkit.mdx +89 -80
- package/docs/content/locales/ja-JP/agent-native-toolkit.mdx +89 -80
- package/docs/content/locales/ko-KR/agent-native-toolkit.mdx +89 -80
- package/docs/content/locales/pt-BR/agent-native-toolkit.mdx +89 -80
- package/docs/content/locales/zh-CN/agent-native-toolkit.mdx +89 -80
- package/docs/content/locales/zh-TW/agent-native-toolkit.mdx +89 -80
- package/docs/content/toolkit-agent-ux.mdx +43 -0
- package/docs/content/toolkit-app-adapters.mdx +9 -0
- package/docs/content/toolkit-collaboration-ui.mdx +12 -0
- package/docs/content/toolkit-collaboration.mdx +74 -0
- package/docs/content/toolkit-command-navigation.mdx +106 -0
- package/docs/content/toolkit-comments-review.mdx +98 -0
- package/docs/content/toolkit-history.mdx +95 -0
- package/docs/content/toolkit-observability.mdx +41 -0
- package/docs/content/toolkit-org-team.mdx +80 -0
- package/docs/content/toolkit-resources.mdx +57 -0
- package/docs/content/toolkit-settings.mdx +65 -0
- package/docs/content/toolkit-setup-connections.mdx +109 -0
- package/docs/content/toolkit-sharing-ui.mdx +18 -6
- package/docs/content/toolkit-sharing.mdx +81 -0
- package/docs/content/toolkit-shell-hooks.mdx +9 -0
- package/docs/content/toolkit-ui.mdx +9 -0
- package/package.json +36 -2
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "History Kit"
|
|
3
|
+
description: "Version history, audit log, undo/redo, restore flows, and what-changed surfaces."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# History Kit
|
|
7
|
+
|
|
8
|
+
The History Kit helps users answer the questions that matter after humans and
|
|
9
|
+
agents edit together: what changed, who changed it, can I undo it, and can I
|
|
10
|
+
restore an older version?
|
|
11
|
+
|
|
12
|
+
<WireframeBlock id="doc-block-toolkit-history">
|
|
13
|
+
<Screen
|
|
14
|
+
surface="desktop"
|
|
15
|
+
html={
|
|
16
|
+
"<div style='min-height:540px;box-sizing:border-box;padding:28px;display:grid;grid-template-columns:1fr 300px;gap:18px'><main class='wf-card' style='display:flex;flex-direction:column;gap:12px'><h2 style='margin:0'>Document</h2><div class='wf-box' style='height:320px'>Current version with highlighted changes</div><div style='display:flex;gap:10px'><button>Undo</button><button>Redo</button><button class='primary'>Restore selected</button></div></main><aside class='wf-card' style='display:flex;flex-direction:column;gap:10px'><strong>History</strong><div class='wf-box'>v12 - Agent edited chart text</div><div class='wf-box'>v11 - Maya added notes</div><div class='wf-box'>Audit: share changed to org</div><div class='wf-box'>What changed: 4 sections</div></aside></div>"
|
|
17
|
+
}
|
|
18
|
+
/>
|
|
19
|
+
</WireframeBlock>
|
|
20
|
+
|
|
21
|
+
## Pieces {#pieces}
|
|
22
|
+
|
|
23
|
+
| Piece | Purpose |
|
|
24
|
+
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
|
|
25
|
+
| `registerVersionedResource()` | Register a resource type, access resolver, optional `getSnapshot()`, and optional `restoreSnapshot()` handler. |
|
|
26
|
+
| Version actions | `create-resource-version`, `list-resource-versions`, `get-resource-version`, `restore-resource-version`, and `list-resource-history`. |
|
|
27
|
+
| `VersionHistoryPanel` | Drop-in React panel for listing versions and restoring a selected version. |
|
|
28
|
+
| `HistoryTimeline` | Controlled presentational timeline for custom history layouts. |
|
|
29
|
+
| History hooks | `useResourceVersions()`, `useResourceHistory()`, `useCreateResourceVersion()`, and `useRestoreResourceVersion()`. |
|
|
30
|
+
| Audit log | Durable record of human and agent actions, scoped by access, included by `list-resource-history`. |
|
|
31
|
+
| `useCollabUndo()` | CRDT undo/redo for collaborative document edits. |
|
|
32
|
+
| `useLocalOpUndo()` | App-local inverse operations for commands outside the Yjs document. |
|
|
33
|
+
| What-changed views | Diff summaries, changed sections, and reviewer-friendly explanations. |
|
|
34
|
+
|
|
35
|
+
## Register A Resource {#register-resource}
|
|
36
|
+
|
|
37
|
+
```ts
|
|
38
|
+
import { registerVersionedResource } from "@agent-native/core/history";
|
|
39
|
+
|
|
40
|
+
registerVersionedResource({
|
|
41
|
+
type: "document",
|
|
42
|
+
async resolveAccess(resourceId, ctx) {
|
|
43
|
+
return {
|
|
44
|
+
role: "owner",
|
|
45
|
+
ownerEmail: ctx?.userEmail,
|
|
46
|
+
orgId: ctx?.orgId,
|
|
47
|
+
visibility: "private",
|
|
48
|
+
};
|
|
49
|
+
},
|
|
50
|
+
async getSnapshot({ resourceId }) {
|
|
51
|
+
return loadDocumentSnapshot(resourceId);
|
|
52
|
+
},
|
|
53
|
+
async restoreSnapshot({ resourceId, snapshot }) {
|
|
54
|
+
return restoreDocumentSnapshot(resourceId, snapshot);
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
When a resource is already registered with the Sharing Kit, History can reuse
|
|
60
|
+
that access model. Register a History adapter when the app wants automatic
|
|
61
|
+
snapshot capture or restore behavior.
|
|
62
|
+
|
|
63
|
+
## UI Usage {#ui-usage}
|
|
64
|
+
|
|
65
|
+
```tsx
|
|
66
|
+
import { VersionHistoryPanel } from "@agent-native/core/client/history";
|
|
67
|
+
|
|
68
|
+
export function DocumentHistory({ documentId }: { documentId: string }) {
|
|
69
|
+
return (
|
|
70
|
+
<VersionHistoryPanel
|
|
71
|
+
resourceType="document"
|
|
72
|
+
resourceId={documentId}
|
|
73
|
+
onRestored={() => refreshDocument()}
|
|
74
|
+
/>
|
|
75
|
+
);
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Agents and UI call the same actions. Apps can also use the hooks directly when
|
|
80
|
+
they need a custom timeline, preview, or compare view.
|
|
81
|
+
|
|
82
|
+
## UX Standard {#ux-standard}
|
|
83
|
+
|
|
84
|
+
- History should identify human vs agent edits.
|
|
85
|
+
- Restore is a new action, not a silent database rewind.
|
|
86
|
+
- Undo should be scoped to the user's local intent and never erase remote edits
|
|
87
|
+
unexpectedly.
|
|
88
|
+
- Audit logs should be access-scoped; users see events for resources they can
|
|
89
|
+
read.
|
|
90
|
+
- Snapshot data should be app-owned JSON. The kit stores and scopes it; the app
|
|
91
|
+
decides how to render, diff, and restore it.
|
|
92
|
+
|
|
93
|
+
Related docs: [Audit Log](/docs/audit-log),
|
|
94
|
+
[Realtime Collaboration](/docs/real-time-collaboration),
|
|
95
|
+
[Component API](/docs/components#collab-presence).
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Observability Kit"
|
|
3
|
+
description: "Usage, spend, feedback, replay, errors, and run diagnostics for agent-native apps."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Observability Kit
|
|
7
|
+
|
|
8
|
+
The Observability Kit makes agent work measurable and debuggable. It covers
|
|
9
|
+
usage, spend, feedback, replay, errors, traces, run diagnostics, and the app UI
|
|
10
|
+
that operators use to understand what happened.
|
|
11
|
+
|
|
12
|
+
<WireframeBlock id="doc-block-toolkit-observability">
|
|
13
|
+
<Screen
|
|
14
|
+
surface="desktop"
|
|
15
|
+
html={
|
|
16
|
+
"<div style='min-height:560px;box-sizing:border-box;padding:26px;display:grid;grid-template-columns:1fr 300px;gap:16px'><main class='wf-card' style='display:flex;flex-direction:column;gap:12px'><h2 style='margin:0'>Observability</h2><div style='display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px'><div class='wf-box'>Runs 482</div><div class='wf-box'>Spend $42</div><div class='wf-box'>Errors 3</div></div><div class='wf-box' style='height:260px'>Replay timeline and traces</div></main><aside class='wf-card' style='display:flex;flex-direction:column;gap:10px'><strong>Diagnostics</strong><div class='wf-box'>Run failed: missing key</div><div class='wf-box'>User feedback: thumbs down</div><div class='wf-box'>Slow tool: provider-api-request</div><button class='primary'>Open run</button></aside></div>"
|
|
17
|
+
}
|
|
18
|
+
/>
|
|
19
|
+
</WireframeBlock>
|
|
20
|
+
|
|
21
|
+
## Pieces {#pieces}
|
|
22
|
+
|
|
23
|
+
| Piece | Purpose |
|
|
24
|
+
| -------------------------- | ----------------------------------------------------------------- |
|
|
25
|
+
| `<ObservabilityDashboard>` | Standard operator dashboard. |
|
|
26
|
+
| Usage and spend | Workspace/app-level model usage and cost views. |
|
|
27
|
+
| Feedback | User thumbs, comments, and product feedback loops. |
|
|
28
|
+
| Replay | Inspectable agent run and UI/event timelines. |
|
|
29
|
+
| Errors | Surfaced runtime, provider, and action failures. |
|
|
30
|
+
| Run diagnostics | Tool calls, model choice, context, approvals, and recovery state. |
|
|
31
|
+
| Tracking | Server-side analytics events with pluggable providers. |
|
|
32
|
+
|
|
33
|
+
## UX Standard {#ux-standard}
|
|
34
|
+
|
|
35
|
+
- Every background or agent run should be traceable to a user-visible outcome.
|
|
36
|
+
- Feedback should connect to the run, resource, or page that caused it.
|
|
37
|
+
- Spend and usage should distinguish app, organization, user, and provider.
|
|
38
|
+
- Error states should link back to setup when the fix is a missing connection.
|
|
39
|
+
|
|
40
|
+
Related docs: [Observability](/docs/observability),
|
|
41
|
+
[Tracking](/docs/tracking), [Progress](/docs/progress), [Agent UX Kit](/docs/toolkit-agent-ux).
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Org & Team Kit"
|
|
3
|
+
description: "Organizations, team settings, invites, allowed domains, roles, and app switching."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Org & Team Kit
|
|
7
|
+
|
|
8
|
+
The Org & Team Kit standardizes how apps expose team membership and
|
|
9
|
+
organization context. It covers the team page, organization switcher, invites,
|
|
10
|
+
roles, allowed email domains, and the active organization that scopes sharing,
|
|
11
|
+
connections, service tokens, and app switching.
|
|
12
|
+
|
|
13
|
+
<WireframeBlock id="doc-block-toolkit-org-team">
|
|
14
|
+
<Screen
|
|
15
|
+
surface="desktop"
|
|
16
|
+
html={
|
|
17
|
+
"<div style='min-height:540px;box-sizing:border-box;padding:28px;display:grid;grid-template-columns:240px 1fr;gap:18px'><aside class='wf-card' style='display:flex;flex-direction:column;gap:12px'><strong>Workspace</strong><div class='wf-box'>OrgSwitcher: Acme</div><div class='wf-pill'>Analytics</div><div class='wf-pill'>Content</div><div class='wf-pill'>Slides</div></aside><main class='wf-card' style='display:flex;flex-direction:column;gap:14px'><div style='display:flex;align-items:center;gap:10px'><h2 style='margin:0'>Team</h2><div style='flex:1'></div><button class='primary'>Invite</button></div><div class='wf-box'>Allowed domain: acme.com</div><div class='wf-box'>Steve - owner</div><div class='wf-box'>Maya - admin</div><div class='wf-box'>Kai - member</div><div class='wf-box'>Pending invites: 3</div></main></div>"
|
|
18
|
+
}
|
|
19
|
+
/>
|
|
20
|
+
</WireframeBlock>
|
|
21
|
+
|
|
22
|
+
## Pieces {#pieces}
|
|
23
|
+
|
|
24
|
+
| Piece | Purpose |
|
|
25
|
+
| --------------------- | ----------------------------------------------------------------------------------------------- |
|
|
26
|
+
| `<TeamPage>` | Standard team management page for members, invites, roles, and organization preferences. |
|
|
27
|
+
| `<OrgSwitcher>` | Current organization picker for sidebars and headers. |
|
|
28
|
+
| `<InvitationBanner>` | One-click invite and domain-match join prompts. |
|
|
29
|
+
| `<RequireActiveOrg>` | Guard for pages that need an active organization before rendering app data. |
|
|
30
|
+
| `useOrgRole()` | Shared role booleans for member, invite, settings, and domain controls. |
|
|
31
|
+
| Organization handlers | Create, rename, switch, invite, accept, remove, and update roles/domains. |
|
|
32
|
+
| Roles | Owner, admin, and member gates for sharing, settings, service tokens, and provider connections. |
|
|
33
|
+
| Allowed domains | Automatic join and domain-scoped access policy. |
|
|
34
|
+
| App links | Workspace app-link parsing and visible app-switcher helpers. |
|
|
35
|
+
|
|
36
|
+
## API {#api}
|
|
37
|
+
|
|
38
|
+
Render organization context wherever data scope changes. Put `OrgSwitcher` in
|
|
39
|
+
the persistent shell and make `/settings#team` or `/team` open `TeamPage`.
|
|
40
|
+
|
|
41
|
+
```tsx
|
|
42
|
+
import {
|
|
43
|
+
OrgSwitcher,
|
|
44
|
+
RequireActiveOrg,
|
|
45
|
+
TeamPage,
|
|
46
|
+
useOrgRole,
|
|
47
|
+
} from "@agent-native/core/client/org-team";
|
|
48
|
+
|
|
49
|
+
export function AppShell() {
|
|
50
|
+
return <OrgSwitcher />;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export function SettingsTeamTab() {
|
|
54
|
+
return (
|
|
55
|
+
<RequireActiveOrg>
|
|
56
|
+
<TeamPage createOrgDescription="Create a team to share dashboards and provider connections." />
|
|
57
|
+
</RequireActiveOrg>
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export function AdminOnlyControl() {
|
|
62
|
+
const { canManageOrg } = useOrgRole();
|
|
63
|
+
return canManageOrg ? <button type="button">Invite members</button> : null;
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Server code imports the same role helpers from `@agent-native/core/org-team`.
|
|
68
|
+
The route plugin mounts `/_agent-native/org/*` for org creation, switching,
|
|
69
|
+
invites, domains, member roles, and A2A secret sync.
|
|
70
|
+
|
|
71
|
+
## UX Standard {#ux-standard}
|
|
72
|
+
|
|
73
|
+
- Users can see which organization they are in before creating or sharing data.
|
|
74
|
+
- Invites and roles live in the team settings surface, not per-resource dialogs.
|
|
75
|
+
- Org domain changes are owner-only and explain who can auto-join.
|
|
76
|
+
- App switching lists workspace/default app links. Active-org continuity comes
|
|
77
|
+
from the target app sharing the same auth and organization state.
|
|
78
|
+
|
|
79
|
+
Related docs: [Multi-Tenancy](/docs/multi-tenancy),
|
|
80
|
+
[Workspace Management](/docs/workspace-management), [Sharing Kit](/docs/toolkit-sharing).
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Resource Kit"
|
|
3
|
+
description: "Resource tree, editor primitives, file picker/search, attachments, and local file mode."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Resource Kit
|
|
7
|
+
|
|
8
|
+
The Resource Kit gives apps a shared way to browse, edit, upload, attach, and
|
|
9
|
+
search files or workspace resources. It powers the agent panel workspace tab,
|
|
10
|
+
can be rendered as a page or drawer, and connects naturally to local file mode
|
|
11
|
+
for repo-backed content.
|
|
12
|
+
|
|
13
|
+
<WireframeBlock id="doc-block-toolkit-resources">
|
|
14
|
+
<Screen
|
|
15
|
+
surface="desktop"
|
|
16
|
+
html={
|
|
17
|
+
"<div style='min-height:560px;box-sizing:border-box;padding:26px;display:grid;grid-template-columns:260px 1fr 240px;gap:16px'><aside class='wf-card' style='display:flex;flex-direction:column;gap:10px'><strong>Resources</strong><div class='wf-box'>docs/</div><div class='wf-box'>blog/</div><div class='wf-box'>assets/</div><div class='wf-box'>Q3 forecast.md</div></aside><main class='wf-card' style='display:flex;flex-direction:column;gap:12px'><h2 style='margin:0'>Q3 forecast.md</h2><div class='wf-box' style='height:330px'>ResourceEditor</div><button class='primary'>Save</button></main><aside class='wf-card' style='display:flex;flex-direction:column;gap:10px'><strong>Attachments</strong><div class='wf-box'>Drop file</div><div class='wf-box'>Search resources</div><div class='wf-box'>local file mode: on</div></aside></div>"
|
|
18
|
+
}
|
|
19
|
+
/>
|
|
20
|
+
</WireframeBlock>
|
|
21
|
+
|
|
22
|
+
## Pieces {#pieces}
|
|
23
|
+
|
|
24
|
+
| Piece | Purpose |
|
|
25
|
+
| ------------------------------------- | ------------------------------------------------------------- |
|
|
26
|
+
| `<ResourcesPanel>` | Complete resource browser/editor panel. |
|
|
27
|
+
| `<ResourceTree>` | Tree primitive for personal, shared, and workspace resources. |
|
|
28
|
+
| `<ResourceEditor>` | Editor primitive for selected resources. |
|
|
29
|
+
| `useResourceTree()` / `useResource()` | Data hooks for custom resource chrome. |
|
|
30
|
+
| Resource mutations | Create, update, delete, upload, rename, and move resources. |
|
|
31
|
+
| File uploads | Shared attachment path for chat, resources, and app actions. |
|
|
32
|
+
| Local file mode | Repo-backed resources where files are the source of truth. |
|
|
33
|
+
|
|
34
|
+
## Usage {#usage}
|
|
35
|
+
|
|
36
|
+
```tsx
|
|
37
|
+
import {
|
|
38
|
+
ResourceEditor,
|
|
39
|
+
ResourceTree,
|
|
40
|
+
useResource,
|
|
41
|
+
useResourceTree,
|
|
42
|
+
} from "@agent-native/core/client/resources";
|
|
43
|
+
|
|
44
|
+
const tree = useResourceTree("workspace");
|
|
45
|
+
const resource = useResource(selectedId);
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## UX Standard {#ux-standard}
|
|
49
|
+
|
|
50
|
+
- Use a stable tree/editor split for file-heavy apps.
|
|
51
|
+
- Keep attachments inspectable and agent-readable.
|
|
52
|
+
- Local file mode should preserve the repo as source of truth, while hosted
|
|
53
|
+
collaboration still uses SQL-backed runtime state.
|
|
54
|
+
- Resource actions should return deep links to the focused file/resource.
|
|
55
|
+
|
|
56
|
+
Related docs: [Local File Mode](/docs/local-file-mode),
|
|
57
|
+
[File Uploads](/docs/file-uploads), [Component API](/docs/components#resources).
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Settings Kit"
|
|
3
|
+
description: "A standard settings-page contract for app, agent, provider, team, and language settings."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Settings Kit
|
|
7
|
+
|
|
8
|
+
The Settings Kit gives every app one predictable settings surface. Users should
|
|
9
|
+
not have to wonder whether model keys live in an app settings page, a giant
|
|
10
|
+
agent sidebar panel, or a provider-specific setup card. The app route owns the
|
|
11
|
+
page; framework tabs can be mounted inside it.
|
|
12
|
+
|
|
13
|
+
<WireframeBlock id="doc-block-toolkit-settings">
|
|
14
|
+
<Screen
|
|
15
|
+
surface="desktop"
|
|
16
|
+
html={
|
|
17
|
+
"<div style='min-height:540px;box-sizing:border-box;padding:28px;display:grid;grid-template-columns:220px 1fr;gap:18px'><aside class='wf-card' style='display:flex;flex-direction:column;gap:10px'><strong>Settings</strong><div class='wf-pill'>General</div><div class='wf-pill'>AI and models</div><div class='wf-pill'>Connections</div><div class='wf-pill'>Team</div><div class='wf-pill'>Developer</div></aside><main class='wf-card' style='display:flex;flex-direction:column;gap:14px'><h2 style='margin:0'>AI and models</h2><div class='wf-box'>Default model: GPT-5</div><div class='wf-box'>LLM keys: OpenAI configured, Anthropic missing</div><div class='wf-box'>Provider readiness: Builder connected</div><div style='display:flex;gap:10px'><button>Open agent settings</button><button class='primary'>Save changes</button></div></main></div>"
|
|
18
|
+
}
|
|
19
|
+
/>
|
|
20
|
+
</WireframeBlock>
|
|
21
|
+
|
|
22
|
+
## Pieces {#pieces}
|
|
23
|
+
|
|
24
|
+
| Piece | Purpose |
|
|
25
|
+
| ------------------------ | ------------------------------------------------------------------------------------- |
|
|
26
|
+
| `<SettingsTabsPage>` | Standard tabbed settings route surface. |
|
|
27
|
+
| `useAgentSettingsTabs()` | Framework-provided agent, model, key, automation, and voice tabs that apps can mount. |
|
|
28
|
+
| `<LanguagePicker>` | Standard language selector for app settings. |
|
|
29
|
+
| `openAgentSettings()` | Compatibility escape hatch for opening the sidebar settings tab when needed. |
|
|
30
|
+
| Hash deep links | Stable links such as `/settings#secrets:OPENAI_API_KEY` and `/settings#connections`. |
|
|
31
|
+
|
|
32
|
+
## Page Contract {#page-contract}
|
|
33
|
+
|
|
34
|
+
Every app should expose `/settings`. App-specific tabs can sit beside framework
|
|
35
|
+
tabs; framework tabs should not be hidden in a second settings universe.
|
|
36
|
+
|
|
37
|
+
```tsx
|
|
38
|
+
import {
|
|
39
|
+
LanguagePicker,
|
|
40
|
+
SettingsTabsPage,
|
|
41
|
+
useAgentSettingsTabs,
|
|
42
|
+
} from "@agent-native/core/client";
|
|
43
|
+
|
|
44
|
+
export default function SettingsRoute() {
|
|
45
|
+
const agentSettingsTabs = useAgentSettingsTabs();
|
|
46
|
+
return (
|
|
47
|
+
<SettingsTabsPage
|
|
48
|
+
extraTabs={agentSettingsTabs}
|
|
49
|
+
general={<LanguagePicker label="Interface language" />}
|
|
50
|
+
/>
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## UX Standard {#ux-standard}
|
|
56
|
+
|
|
57
|
+
- Keep model keys, OAuth connections, Builder connect, language, team, and app
|
|
58
|
+
preferences in one route.
|
|
59
|
+
- Link to tabs by hash so setup prompts can send users to the exact missing
|
|
60
|
+
credential.
|
|
61
|
+
- Use the agent sidebar settings only as a compact access point, not as the
|
|
62
|
+
primary home for every setting.
|
|
63
|
+
|
|
64
|
+
Related docs: [Internationalization](/docs/internationalization),
|
|
65
|
+
[Onboarding](/docs/onboarding), [Workspace Connections](/docs/workspace-connections).
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Setup & Connections Kit"
|
|
3
|
+
description: "Onboarding, secrets, workspace connections, OAuth/provider readiness, and Builder connect."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Setup & Connections Kit
|
|
7
|
+
|
|
8
|
+
The Setup & Connections Kit turns missing credentials into a guided product
|
|
9
|
+
flow. It covers onboarding steps, encrypted secrets, workspace-scoped
|
|
10
|
+
connections, OAuth/provider readiness, and Builder connect so apps can explain
|
|
11
|
+
what is missing and link users to the exact fix.
|
|
12
|
+
|
|
13
|
+
<WireframeBlock id="doc-block-toolkit-setup-connections">
|
|
14
|
+
<Screen
|
|
15
|
+
surface="desktop"
|
|
16
|
+
html={
|
|
17
|
+
"<div style='min-height:540px;box-sizing:border-box;padding:28px;display:grid;grid-template-columns:1fr 330px;gap:18px'><main class='wf-card' style='display:flex;flex-direction:column;gap:14px'><h2 style='margin:0'>Setup checklist</h2><div class='wf-box'>1. Connect Builder - complete</div><div class='wf-box'>2. Add OpenAI key - needs attention</div><div class='wf-box'>3. Connect Slack workspace - optional</div><div class='wf-box'>4. Enable GitHub OAuth - ready</div></main><aside class='wf-card' style='display:flex;flex-direction:column;gap:12px'><strong>Provider readiness</strong><div class='wf-box'>Builder: connected</div><div class='wf-box'>LLM: missing key</div><div class='wf-box'>GitHub: OAuth ready</div><button class='primary'>Open Settings</button></aside></div>"
|
|
18
|
+
}
|
|
19
|
+
/>
|
|
20
|
+
</WireframeBlock>
|
|
21
|
+
|
|
22
|
+
## Pieces {#pieces}
|
|
23
|
+
|
|
24
|
+
| Piece | Purpose |
|
|
25
|
+
| --------------------- | ----------------------------------------------------------------------- |
|
|
26
|
+
| Onboarding registry | Declares setup steps and completion checks. |
|
|
27
|
+
| Secrets UI | Writes encrypted user, org, or workspace secrets. |
|
|
28
|
+
| Workspace connections | Shared provider connections with scoped grants. |
|
|
29
|
+
| OAuth flows | Provider authorization, callback handling, and token storage. |
|
|
30
|
+
| Provider readiness | App-visible status for missing keys, expired auth, or incomplete setup. |
|
|
31
|
+
| Builder connect | First-party Builder identity and managed gateway setup. |
|
|
32
|
+
|
|
33
|
+
## API {#api}
|
|
34
|
+
|
|
35
|
+
Use the integrated core kit for the server-side registry/store and the client
|
|
36
|
+
page/components for the standard settings surface.
|
|
37
|
+
|
|
38
|
+
```tsx
|
|
39
|
+
import {
|
|
40
|
+
ProviderReadinessBadge,
|
|
41
|
+
SetupConnectionsPage,
|
|
42
|
+
} from "@agent-native/core/client/setup-connections";
|
|
43
|
+
|
|
44
|
+
export function SettingsConnectionsTab() {
|
|
45
|
+
return (
|
|
46
|
+
<SetupConnectionsPage
|
|
47
|
+
providerReadiness={
|
|
48
|
+
<div className="flex items-center gap-2">
|
|
49
|
+
<span>GitHub</span>
|
|
50
|
+
<ProviderReadinessBadge status="ready" />
|
|
51
|
+
</div>
|
|
52
|
+
}
|
|
53
|
+
/>
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Register setup steps close to the feature that needs them. Link users to the
|
|
59
|
+
standard settings tab instead of building bespoke credential forms.
|
|
60
|
+
|
|
61
|
+
```ts
|
|
62
|
+
import { registerOnboardingStep } from "@agent-native/core/onboarding";
|
|
63
|
+
|
|
64
|
+
registerOnboardingStep({
|
|
65
|
+
id: "openai-key",
|
|
66
|
+
title: "Add an OpenAI key",
|
|
67
|
+
description: "Store an OpenAI key so the agent can use OpenAI models.",
|
|
68
|
+
order: 10,
|
|
69
|
+
required: true,
|
|
70
|
+
methods: [
|
|
71
|
+
{
|
|
72
|
+
id: "settings",
|
|
73
|
+
kind: "link",
|
|
74
|
+
label: "Open settings",
|
|
75
|
+
primary: true,
|
|
76
|
+
payload: { url: "/settings#secrets" },
|
|
77
|
+
},
|
|
78
|
+
],
|
|
79
|
+
isComplete: async () => hasOpenAIKey(),
|
|
80
|
+
});
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Workspace/provider setup can use the kit helper:
|
|
84
|
+
|
|
85
|
+
```ts
|
|
86
|
+
import { registerWorkspaceConnectionOnboardingStep } from "@agent-native/core/setup-connections";
|
|
87
|
+
|
|
88
|
+
registerWorkspaceConnectionOnboardingStep({
|
|
89
|
+
providerId: "github",
|
|
90
|
+
providerLabel: "GitHub",
|
|
91
|
+
required: true,
|
|
92
|
+
isComplete: async () => hasGitHubWorkspaceConnection(),
|
|
93
|
+
});
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
For app settings, compose `SettingsTabsPage` with `SetupConnectionsPage` and the
|
|
97
|
+
standard Settings Kit tabs so keys, connections, Builder connect, and team
|
|
98
|
+
settings live in one predictable place.
|
|
99
|
+
|
|
100
|
+
## UX Standard {#ux-standard}
|
|
101
|
+
|
|
102
|
+
- Errors explain the missing connection and offer the direct settings link.
|
|
103
|
+
- Secrets are never stored in app tables or pasted into docs/examples.
|
|
104
|
+
- App setup pages and settings tabs use the same readiness source.
|
|
105
|
+
- Builder connect is offered as a first-class path, not buried as an env-var
|
|
106
|
+
fallback.
|
|
107
|
+
|
|
108
|
+
Related docs: [Onboarding](/docs/onboarding),
|
|
109
|
+
[Workspace Connections](/docs/workspace-connections), [Security](/docs/security).
|
|
@@ -5,8 +5,20 @@ description: "Reusable sharing display components with core-owned sharing runtim
|
|
|
5
5
|
|
|
6
6
|
# Toolkit Sharing UI
|
|
7
7
|
|
|
8
|
-
`@agent-native/toolkit/sharing` contains sharing UI
|
|
9
|
-
|
|
8
|
+
`@agent-native/toolkit/sharing` contains presentational sharing UI for badges,
|
|
9
|
+
share rows, role pickers, and base dialogs. It does not perform access checks or
|
|
10
|
+
mutations; core and app wrappers inject data and callbacks.
|
|
11
|
+
|
|
12
|
+
<WireframeBlock id="doc-block-toolkit-sharing-ui">
|
|
13
|
+
<Screen
|
|
14
|
+
surface="desktop"
|
|
15
|
+
html={
|
|
16
|
+
"<div style='min-height:480px;box-sizing:border-box;padding:28px;display:grid;grid-template-columns:1fr 300px;gap:16px'><main class='wf-card' style='display:flex;flex-direction:column;gap:12px'><div style='display:flex;align-items:center;gap:10px'><h2 style='margin:0'>Resource header</h2><span class='wf-pill'>Org visible</span><div style='flex:1'></div><button>Share</button></div><div class='wf-box' style='height:120px'>Share list row</div><div class='wf-box' style='height:180px'>Shared resource preview</div></main><aside class='wf-card' style='display:flex;flex-direction:column;gap:10px'><strong>Presentational pieces</strong><div class='wf-box'>VisibilityBadge</div><div class='wf-box'>Grant row</div><div class='wf-box'>Role selector</div><div class='wf-box'>Policy hint</div></aside></div>"
|
|
17
|
+
}
|
|
18
|
+
/>
|
|
19
|
+
</WireframeBlock>
|
|
20
|
+
|
|
21
|
+
The most common low-level import is:
|
|
10
22
|
|
|
11
23
|
```tsx
|
|
12
24
|
import { VisibilityBadge } from "@agent-native/toolkit/sharing";
|
|
@@ -14,7 +26,8 @@ import { VisibilityBadge } from "@agent-native/toolkit/sharing";
|
|
|
14
26
|
|
|
15
27
|
Core still owns the sharing runtime: share tables, resource registration, access
|
|
16
28
|
filters, visibility changes, invites, roles, and private access tokens for
|
|
17
|
-
agent-readable public surfaces.
|
|
29
|
+
agent-readable public surfaces. See the [Sharing Kit](/docs/toolkit-sharing) for
|
|
30
|
+
the full behaviorful contract.
|
|
18
31
|
|
|
19
32
|
Use core wrappers when a component needs to call sharing actions:
|
|
20
33
|
|
|
@@ -22,9 +35,8 @@ Use core wrappers when a component needs to call sharing actions:
|
|
|
22
35
|
import { ShareButton, ShareDialog } from "@agent-native/core/client";
|
|
23
36
|
```
|
|
24
37
|
|
|
25
|
-
Those imports remain compatible.
|
|
26
|
-
|
|
27
|
-
and callbacks into Toolkit-owned UI.
|
|
38
|
+
Those imports remain compatible. Core wrappers keep doing the runtime work and
|
|
39
|
+
pass data and callbacks into Toolkit-owned UI.
|
|
28
40
|
|
|
29
41
|
## Boundary {#boundary}
|
|
30
42
|
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Sharing Kit"
|
|
3
|
+
description: "Ownable resources, share dialogs, visibility badges, and standard share actions for agent-native apps."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Sharing Kit
|
|
7
|
+
|
|
8
|
+
The Sharing Kit makes user-authored resources private by default, then gives
|
|
9
|
+
users and agents the same controlled ways to share them: specific people, the
|
|
10
|
+
active organization, public links when allowed, and agent-readable resource
|
|
11
|
+
links.
|
|
12
|
+
|
|
13
|
+
<WireframeBlock id="doc-block-toolkit-sharing">
|
|
14
|
+
<Screen
|
|
15
|
+
surface="desktop"
|
|
16
|
+
html={
|
|
17
|
+
"<div style='min-height:540px;box-sizing:border-box;padding:28px;display:grid;grid-template-columns:1fr 320px;gap:18px'><main class='wf-card' style='display:flex;flex-direction:column;gap:14px'><div style='display:flex;align-items:center;gap:10px'><h2 style='margin:0'>Q3 Forecast</h2><span class='wf-pill'>Org visible</span><div style='flex:1'></div><button>Share</button></div><div class='wf-box' style='height:92px'>Dashboard preview</div><div class='wf-box' style='height:260px'>Resource content</div></main><aside class='wf-card' style='display:flex;flex-direction:column;gap:12px'><strong>Share resource</strong><div class='wf-box'>Visibility: Organization</div><div class='wf-box'>Invite teammate@example.com</div><div class='wf-box'>Role: Editor</div><button class='primary'>Send invite</button><div class='wf-box'>Public link disabled by policy</div></aside></div>"
|
|
18
|
+
}
|
|
19
|
+
/>
|
|
20
|
+
</WireframeBlock>
|
|
21
|
+
|
|
22
|
+
## Pieces {#pieces}
|
|
23
|
+
|
|
24
|
+
| Piece | Purpose |
|
|
25
|
+
| --------------------------------- | -------------------------------------------------------------------------------------- |
|
|
26
|
+
| `ownableColumns()` | Adds owner, organization, visibility, and timestamps to the resource table. |
|
|
27
|
+
| `createSharesTable()` | Creates the per-resource grants table. |
|
|
28
|
+
| `registerShareableResource()` | Registers the resource type so framework share actions know how to read and mutate it. |
|
|
29
|
+
| `<ShareButton>` / `<ShareDialog>` | Renders the standard share control and calls the share actions. |
|
|
30
|
+
| `<VisibilityBadge>` | Shows private, shared, org, or public state in lists and headers. |
|
|
31
|
+
| `share-resource` | Grants a user or organization role. |
|
|
32
|
+
| `unshare-resource` | Removes a grant. |
|
|
33
|
+
| `list-resource-shares` | Reads current visibility, grants, and policy. |
|
|
34
|
+
| `set-resource-visibility` | Changes private, org, or public visibility when policy allows it. |
|
|
35
|
+
|
|
36
|
+
## API {#api}
|
|
37
|
+
|
|
38
|
+
Make every shareable table ownable, register it at server startup, and guard
|
|
39
|
+
reads and writes with the same access helpers the UI and agent actions use.
|
|
40
|
+
|
|
41
|
+
```ts
|
|
42
|
+
import { ownableColumns, createSharesTable } from "@agent-native/core/sharing";
|
|
43
|
+
import { registerShareableResource } from "@agent-native/core/sharing";
|
|
44
|
+
|
|
45
|
+
export const dashboards = table("dashboards", {
|
|
46
|
+
id: text("id").primaryKey(),
|
|
47
|
+
title: text("title").notNull(),
|
|
48
|
+
...ownableColumns(),
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
export const dashboardShares = createSharesTable(
|
|
52
|
+
"dashboard_shares",
|
|
53
|
+
dashboards,
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
registerShareableResource({
|
|
57
|
+
type: "dashboard",
|
|
58
|
+
displayName: "Dashboard",
|
|
59
|
+
table: dashboards,
|
|
60
|
+
sharesTable: dashboardShares,
|
|
61
|
+
});
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Render the standard controls where users decide access:
|
|
65
|
+
|
|
66
|
+
```tsx
|
|
67
|
+
import { ShareButton, VisibilityBadge } from "@agent-native/core/client";
|
|
68
|
+
|
|
69
|
+
<VisibilityBadge visibility={dashboard.visibility} />
|
|
70
|
+
<ShareButton resourceType="dashboard" resourceId={dashboard.id} />
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## UX Standard {#ux-standard}
|
|
74
|
+
|
|
75
|
+
- Every resource header should show a visibility badge and a share button.
|
|
76
|
+
- Lists should make private vs shared state scannable.
|
|
77
|
+
- Public access must be an explicit policy choice, not an accidental URL leak.
|
|
78
|
+
- Agents use the same share actions as the UI and cannot bypass resource policy.
|
|
79
|
+
|
|
80
|
+
Related docs: [Sharing & Privacy](/docs/sharing), [Security](/docs/security),
|
|
81
|
+
[Audit Log](/docs/audit-log).
|
|
@@ -7,6 +7,15 @@ description: "Shared shell helpers and hooks that templates can compose through
|
|
|
7
7
|
|
|
8
8
|
Toolkit includes small shell helpers and hooks that are useful across apps:
|
|
9
9
|
|
|
10
|
+
<WireframeBlock id="doc-block-toolkit-shell-hooks">
|
|
11
|
+
<Screen
|
|
12
|
+
surface="desktop"
|
|
13
|
+
html={
|
|
14
|
+
"<div style='min-height:480px;box-sizing:border-box;padding:28px;display:grid;grid-template-columns:230px 1fr;gap:16px'><aside class='wf-card' style='display:flex;flex-direction:column;gap:10px'><strong>Shell</strong><div class='wf-pill'>Header actions</div><div class='wf-pill'>Mobile state</div><div class='wf-pill'>Toasts</div></aside><main class='wf-card' style='display:flex;flex-direction:column;gap:14px'><div style='display:flex;align-items:center;gap:10px'><h2 style='margin:0'>Page title</h2><div style='flex:1'></div><button>Export</button><button class='primary'>Create</button></div><div class='wf-box' style='height:250px'>App content using shared shell hooks</div><div class='wf-box'>Toast: Saved changes</div></main></div>"
|
|
15
|
+
}
|
|
16
|
+
/>
|
|
17
|
+
</WireframeBlock>
|
|
18
|
+
|
|
10
19
|
```tsx
|
|
11
20
|
import { useSetHeaderActions } from "@agent-native/toolkit/app-shell";
|
|
12
21
|
import { useIsMobile } from "@agent-native/toolkit/hooks/use-mobile";
|
|
@@ -8,6 +8,15 @@ description: "How to use @agent-native/toolkit UI primitives without locking app
|
|
|
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
|
+
<WireframeBlock id="doc-block-toolkit-ui-primitives">
|
|
12
|
+
<Screen
|
|
13
|
+
surface="desktop"
|
|
14
|
+
html={
|
|
15
|
+
"<div style='min-height:480px;box-sizing:border-box;padding:28px;display:grid;grid-template-columns:220px 1fr;gap:16px'><aside class='wf-card' style='display:flex;flex-direction:column;gap:10px'><strong>Primitives</strong><div class='wf-pill'>Button</div><div class='wf-pill'>Dialog</div><div class='wf-pill'>Popover</div><div class='wf-pill'>Tooltip</div></aside><main class='wf-card' style='display:flex;flex-direction:column;gap:14px'><h2 style='margin:0'>Reusable kit surface</h2><div style='display:flex;gap:10px'><button>Cancel</button><button class='primary'>Save</button></div><div class='wf-box' style='height:96px'>Dialog content</div><div class='wf-box' style='height:150px'>Popover or menu content</div></main></div>"
|
|
16
|
+
}
|
|
17
|
+
/>
|
|
18
|
+
</WireframeBlock>
|
|
19
|
+
|
|
11
20
|
Reusable package code can import them directly:
|
|
12
21
|
|
|
13
22
|
```tsx
|