@agent-native/core 0.90.11 → 0.91.1
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 +2 -2
- package/corpus/core/CHANGELOG.md +34 -0
- package/corpus/core/docs/content/toolkit-settings.mdx +56 -3
- package/corpus/core/package.json +2 -1
- package/corpus/core/src/agent/run-ownership.ts +29 -1
- package/corpus/core/src/changelog/parse.ts +78 -0
- package/corpus/core/src/chat-threads/schema.ts +43 -0
- package/corpus/core/src/chat-threads/store.ts +144 -12
- package/corpus/core/src/cli/design-connect.ts +53 -9
- package/corpus/core/src/cli/workspace-dev.ts +25 -5
- package/corpus/core/src/client/AgentPanel.tsx +79 -14
- package/corpus/core/src/client/AssistantChat.tsx +359 -425
- package/corpus/core/src/client/analytics-session.ts +70 -0
- package/corpus/core/src/client/analytics.ts +175 -49
- package/corpus/core/src/client/chat/message-components.tsx +22 -2
- package/corpus/core/src/client/components/ui/message-scroller.tsx +131 -0
- package/corpus/core/src/client/conversation/AgentConversation.tsx +63 -41
- package/corpus/core/src/client/error-capture.ts +616 -0
- package/corpus/core/src/client/index.ts +12 -0
- package/corpus/core/src/client/session-replay.ts +57 -7
- package/corpus/core/src/client/settings/SettingsPanel.tsx +123 -1
- package/corpus/core/src/client/settings/SettingsTabsPage.tsx +292 -45
- package/corpus/core/src/client/settings/index.ts +1 -0
- package/corpus/core/src/client/sharing/ShareButton.tsx +14 -11
- package/corpus/core/src/client/sharing/ShareDialog.tsx +13 -10
- package/corpus/core/src/mcp/builtin-tools.ts +29 -2
- package/corpus/core/src/server/agent-chat-plugin.ts +174 -79
- package/corpus/core/src/server/onboarding-html.ts +28 -16
- package/corpus/core/src/sharing/actions/list-resource-shares.ts +45 -1
- package/corpus/core/src/sharing/actions/share-resource.ts +9 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +4 -2
- package/corpus/core/src/templates/workspace-core/.agents/skills/changelog/SKILL.md +9 -6
- package/corpus/core/src/vite/client.ts +217 -35
- package/corpus/templates/analytics/.agents/skills/adhoc-analysis/SKILL.md +8 -7
- package/corpus/templates/analytics/.agents/skills/analysis-workspace/SKILL.md +14 -10
- package/corpus/templates/analytics/.agents/skills/bigquery/SKILL.md +15 -15
- package/corpus/templates/analytics/.agents/skills/cross-source-analysis/SKILL.md +1 -0
- package/corpus/templates/analytics/.agents/skills/dashboard-management/SKILL.md +38 -22
- package/corpus/templates/analytics/.agents/skills/data-programs/SKILL.md +114 -61
- package/corpus/templates/analytics/.agents/skills/data-querying/SKILL.md +1 -0
- package/corpus/templates/analytics/.agents/skills/gong/SKILL.md +7 -7
- package/corpus/templates/analytics/.agents/skills/hubspot/SKILL.md +1 -0
- package/corpus/templates/analytics/.agents/skills/prometheus/SKILL.md +1 -1
- package/corpus/templates/analytics/.builder/skills/bigquery/SKILL.md +17 -17
- package/corpus/templates/analytics/.builder/skills/gcloud/SKILL.md +5 -5
- package/corpus/templates/analytics/.builder/skills/github/SKILL.md +7 -7
- package/corpus/templates/analytics/.builder/skills/gong/SKILL.md +12 -12
- package/corpus/templates/analytics/.builder/skills/grafana/SKILL.md +7 -7
- package/corpus/templates/analytics/.builder/skills/sentry/SKILL.md +7 -7
- package/corpus/templates/analytics/.builder/skills/slack/SKILL.md +6 -6
- package/corpus/templates/analytics/.builder/skills/stripe/SKILL.md +7 -7
- package/corpus/templates/analytics/AGENTS.md +47 -2
- package/corpus/templates/analytics/actions/add-status-page-monitor.ts +36 -0
- package/corpus/templates/analytics/actions/capture-test-error.ts +33 -0
- package/corpus/templates/analytics/actions/delete-monitor.ts +24 -0
- package/corpus/templates/analytics/actions/delete-status-page.ts +23 -0
- package/corpus/templates/analytics/actions/get-error-issue.ts +36 -0
- package/corpus/templates/analytics/actions/get-monitor-stats.ts +55 -0
- package/corpus/templates/analytics/actions/get-monitor.ts +27 -0
- package/corpus/templates/analytics/actions/get-public-status-page.ts +41 -0
- package/corpus/templates/analytics/actions/get-status-page.ts +29 -0
- package/corpus/templates/analytics/actions/list-error-issues.ts +40 -0
- package/corpus/templates/analytics/actions/list-monitors.ts +21 -0
- package/corpus/templates/analytics/actions/list-status-pages.ts +21 -0
- package/corpus/templates/analytics/actions/match-error-issues.ts +51 -0
- package/corpus/templates/analytics/actions/navigate.ts +58 -4
- package/corpus/templates/analytics/actions/remove-status-page-monitor.ts +22 -0
- package/corpus/templates/analytics/actions/reorder-status-page-monitors.ts +25 -0
- package/corpus/templates/analytics/actions/resolve-error-issue.ts +38 -0
- package/corpus/templates/analytics/actions/run-monitor-check.ts +23 -0
- package/corpus/templates/analytics/actions/save-analysis.ts +1 -0
- package/corpus/templates/analytics/actions/save-monitor.ts +145 -0
- package/corpus/templates/analytics/actions/save-status-page.ts +47 -0
- package/corpus/templates/analytics/actions/view-screen.ts +212 -0
- package/corpus/templates/analytics/app/components/layout/Header.tsx +1 -0
- package/corpus/templates/analytics/app/components/layout/Layout.tsx +10 -1
- package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +134 -39
- package/corpus/templates/analytics/app/components/monitoring/PublicStatusView.tsx +351 -0
- package/corpus/templates/analytics/app/components/monitoring/ResponseTimeChart.tsx +174 -0
- package/corpus/templates/analytics/app/components/monitoring/UptimeStatCards.tsx +85 -0
- package/corpus/templates/analytics/app/components/monitoring/UptimeTimelineBars.tsx +106 -0
- package/corpus/templates/analytics/app/components/monitoring/chart-utils.ts +101 -0
- package/corpus/templates/analytics/app/components/monitoring/index.ts +28 -0
- package/corpus/templates/analytics/app/components/monitoring/types.ts +42 -0
- package/corpus/templates/analytics/app/hooks/use-navigation-state.ts +34 -0
- package/corpus/templates/analytics/app/i18n/zh-TW.ts +6 -0
- package/corpus/templates/analytics/app/i18n-data.ts +33 -0
- package/corpus/templates/analytics/app/pages/DataSources.tsx +28 -0
- package/corpus/templates/analytics/app/pages/Settings.tsx +77 -9
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/SqlChartCard.tsx +3 -3
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/dashboard-layout.ts +7 -0
- package/corpus/templates/analytics/app/pages/monitoring/ErrorsPanel.tsx +205 -0
- package/corpus/templates/analytics/app/pages/monitoring/MonitoringPage.tsx +100 -0
- package/corpus/templates/analytics/app/pages/monitoring/UptimePanel.tsx +475 -0
- package/corpus/templates/analytics/app/pages/monitoring/errors/IssueDetail.tsx +372 -0
- package/corpus/templates/analytics/app/pages/monitoring/errors/IssueList.tsx +360 -0
- package/corpus/templates/analytics/app/pages/monitoring/errors/Sparkline.tsx +55 -0
- package/corpus/templates/analytics/app/pages/monitoring/errors/i18n.ts +106 -0
- package/corpus/templates/analytics/app/pages/monitoring/errors/types.ts +75 -0
- package/corpus/templates/analytics/app/pages/monitoring/errors/utils.ts +132 -0
- package/corpus/templates/analytics/app/pages/monitoring/uptime/MonitorDetail.tsx +535 -0
- package/corpus/templates/analytics/app/pages/monitoring/uptime/MonitorFormPage.tsx +1026 -0
- package/corpus/templates/analytics/app/pages/monitoring/uptime/MonitorList.tsx +311 -0
- package/corpus/templates/analytics/app/pages/monitoring/uptime/i18n.ts +235 -0
- package/corpus/templates/analytics/app/pages/monitoring/uptime/status-pages/StatusPageEditor.tsx +661 -0
- package/corpus/templates/analytics/app/pages/monitoring/uptime/status-pages/StatusPagesView.tsx +355 -0
- package/corpus/templates/analytics/app/pages/monitoring/uptime/status-pages/i18n.ts +106 -0
- package/corpus/templates/analytics/app/pages/monitoring/uptime/status-pages/slug.ts +24 -0
- package/corpus/templates/analytics/app/pages/monitoring/uptime/status-pages/types.ts +20 -0
- package/corpus/templates/analytics/app/pages/monitoring/uptime/status-summary.ts +87 -0
- package/corpus/templates/analytics/app/pages/monitoring/uptime/types.ts +161 -0
- package/corpus/templates/analytics/app/pages/monitoring/uptime/utils.ts +210 -0
- package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +76 -1
- package/corpus/templates/analytics/app/pages/sessions/SessionDevToolsPanel.tsx +74 -9
- package/corpus/templates/analytics/app/pages/sessions/SessionsPage.tsx +197 -20
- package/corpus/templates/analytics/app/root.tsx +33 -1
- package/corpus/templates/analytics/app/routes/monitoring._index.tsx +10 -0
- package/corpus/templates/analytics/app/routes/status.$slug.tsx +118 -0
- package/corpus/templates/analytics/changelog/2026-07-08-add-uptime-monitors-that-ping-your-urls-and-alert-you-when-t.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-analytics-chats-keep-large-data-dictionaries-compact-so-prov.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-create-public-status-pages-that-share-the-live-health-of-cho.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-dashboard-extension-panels-use-clearer-open-copy.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-error-capture.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-fixed-single-panel-dashboard-drags-so-they-no-longer-rewrite.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-jump-straight-from-an-error-in-a-session-recording-to-its-fu.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-monitor-detail-and-list-now-show-colorful-uptime-timelines-r.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-pinned-ask-chats-now-show-a-pin-icon-in-the-sidebar.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-publish-a-public-uptime-status-page-with-colorful-uptime-tim.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-sessions-now-hide-visitor-emails-in-demo-mode-and-show-clean.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-settings-are-cleaner-searchable-and-alerts-have-their-own-tab.md +5 -0
- package/corpus/templates/analytics/changelog/2026-07-08-sidebar-sections-stay-collapsed-until-opened.md +5 -0
- package/corpus/templates/analytics/changelog/2026-07-08-the-uptime-monitor-list-now-has-a-current-status-overview-wi.md +6 -0
- package/corpus/templates/analytics/docs/error-capture.md +172 -0
- package/corpus/templates/analytics/docs/uptime-monitoring.md +150 -0
- package/corpus/templates/analytics/server/db/schema-errors.ts +150 -0
- package/corpus/templates/analytics/server/db/schema-monitoring.ts +177 -0
- package/corpus/templates/analytics/server/db/schema.ts +6 -0
- package/corpus/templates/analytics/server/jobs/uptime-monitors.ts +123 -0
- package/corpus/templates/analytics/server/lib/agent-chat-plan-mode.ts +41 -0
- package/corpus/templates/analytics/server/lib/data-dictionary-context.ts +55 -12
- package/corpus/templates/analytics/server/lib/error-capture.ts +1331 -0
- package/corpus/templates/analytics/server/lib/first-party-analytics.ts +47 -1
- package/corpus/templates/analytics/server/lib/monitor-stats.ts +494 -0
- package/corpus/templates/analytics/server/lib/status-pages.ts +798 -0
- package/corpus/templates/analytics/server/lib/uptime-monitors.ts +1665 -0
- package/corpus/templates/analytics/server/plugins/agent-chat.ts +7 -37
- package/corpus/templates/analytics/server/plugins/auth.ts +11 -1
- package/corpus/templates/analytics/server/plugins/db.ts +408 -0
- package/corpus/templates/analytics/server/plugins/uptime-monitor-jobs.ts +63 -0
- package/corpus/templates/assets/app/routes/_index.tsx +1 -1
- package/corpus/templates/assets/app/routes/settings.tsx +22 -1
- package/corpus/templates/assets/changelog/2026-07-08-recent-drafts-keep-comfortable-side-padding.md +6 -0
- package/corpus/templates/assets/changelog/2026-07-08-settings-are-cleaner-and-searchable.md +5 -0
- package/corpus/templates/brain/app/routes/settings.tsx +43 -5
- package/corpus/templates/brain/changelog/2026-07-08-settings-are-cleaner-and-searchable.md +5 -0
- package/corpus/templates/calendar/app/pages/Settings.tsx +44 -6
- package/corpus/templates/calendar/changelog/2026-07-08-settings-are-cleaner-and-searchable.md +5 -0
- package/corpus/templates/chat/app/routes/settings.tsx +16 -1
- package/corpus/templates/chat/changelog/2026-07-08-settings-are-cleaner-and-searchable.md +5 -0
- package/corpus/templates/clips/actions/lib/audio-only-transcription.ts +79 -37
- package/corpus/templates/clips/app/components/player/player-controls.tsx +35 -0
- package/corpus/templates/clips/app/components/player/video-player.tsx +162 -18
- package/corpus/templates/clips/app/routes/_app.settings._index.tsx +63 -6
- package/corpus/templates/clips/app/routes/record.tsx +18 -1
- package/corpus/templates/clips/changelog/2026-07-07-shared-clips-start-playback-reliably-from-the-first-play-click.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-08-chrome-extension-camera-and-microphone-menus-now-show-which-.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-08-chrome-extension-copies-new-clip-links-after-saving.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-08-chrome-extension-recordings-now-continue-after-granting-came.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-08-mobile-shared-clips-now-have-loom-style-tap-and-skip-controls.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-08-recordings-and-uploads-copy-links-after-saving.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-08-settings-are-cleaner-searchable-and-collapse-s3-with-builder.md +5 -0
- package/corpus/templates/clips/changelog/2026-07-08-transcripts-are-more-reliable-for-longer-desktop-recordings-.md +6 -0
- package/corpus/templates/clips/chrome-extension/public/manifest.json +1 -0
- package/corpus/templates/clips/chrome-extension/src/background.ts +162 -13
- package/corpus/templates/clips/chrome-extension/src/content-script.ts +14 -0
- package/corpus/templates/clips/chrome-extension/src/offscreen.ts +36 -0
- package/corpus/templates/clips/chrome-extension/src/overlay.ts +99 -25
- package/corpus/templates/clips/chrome-extension/src/permission.ts +63 -14
- package/corpus/templates/clips/chrome-extension/src/popup.ts +123 -23
- package/corpus/templates/content/actions/_builder-cms-read-client.ts +47 -0
- package/corpus/templates/content/actions/_database-source-utils.ts +33 -4
- package/corpus/templates/content/actions/add-content-database-source-field-property.ts +214 -29
- package/corpus/templates/content/actions/attach-content-database-source.ts +3 -0
- package/corpus/templates/content/actions/change-content-database-source-role.ts +1 -0
- package/corpus/templates/content/app/components/editor/DocumentProperties.tsx +42 -32
- package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +352 -81
- package/corpus/templates/content/app/components/editor/database/settings.tsx +49 -24
- package/corpus/templates/content/app/routes/_app.settings.tsx +19 -1
- package/corpus/templates/content/changelog/2026-07-07-builder-source-tag-fields-now-import-as-multi-select.md +6 -0
- package/corpus/templates/content/changelog/2026-07-08-settings-are-cleaner-and-searchable.md +5 -0
- package/corpus/templates/content/shared/api.ts +3 -0
- package/corpus/templates/content/shared/properties.ts +42 -0
- package/corpus/templates/design/AGENTS.md +9 -0
- package/corpus/templates/design/actions/generate-design.ts +3 -0
- package/corpus/templates/design/actions/get-design-system.ts +147 -1
- package/corpus/templates/design/actions/request-localhost-write-consent.ts +141 -0
- package/corpus/templates/design/app/components/design/DesignCanvas.tsx +13 -19
- package/corpus/templates/design/app/routes/settings.tsx +16 -1
- package/corpus/templates/design/changelog/2026-07-08-design-generation-now-follows-hydrated-builder-design-system.md +6 -0
- package/corpus/templates/design/changelog/2026-07-08-settings-are-cleaner-and-searchable.md +5 -0
- package/corpus/templates/design/server/lib/verify-write-grant.ts +4 -2
- package/corpus/templates/dispatch/app/routes/settings.tsx +23 -2
- package/corpus/templates/dispatch/changelog/2026-07-08-settings-are-cleaner-and-searchable.md +5 -0
- package/corpus/templates/forms/app/routes/_app.settings.tsx +16 -1
- package/corpus/templates/forms/changelog/2026-07-08-settings-are-cleaner-and-searchable.md +5 -0
- package/corpus/templates/macros/app/routes/settings.tsx +16 -1
- package/corpus/templates/macros/changelog/2026-07-08-settings-are-cleaner-and-searchable.md +5 -0
- package/corpus/templates/mail/app/components/settings/GmailFiltersSection.tsx +1 -1
- package/corpus/templates/mail/app/components/settings/SnippetsSection.tsx +1 -1
- package/corpus/templates/mail/app/pages/SettingsPage.tsx +123 -105
- package/corpus/templates/mail/changelog/2026-07-08-settings-redesigned-with-a-consistent-searchable-layout.md +5 -0
- package/corpus/templates/plan/app/routes/settings.tsx +23 -2
- package/corpus/templates/plan/changelog/2026-07-08-settings-are-cleaner-and-searchable.md +5 -0
- package/corpus/templates/slides/actions/add-slide.ts +1 -0
- package/corpus/templates/slides/actions/get-design-system.ts +147 -1
- package/corpus/templates/slides/app/pages/Index.tsx +46 -1
- package/corpus/templates/slides/app/routes/settings.tsx +16 -1
- package/corpus/templates/slides/changelog/2026-07-08-deck-generation-now-follows-hydrated-builder-design-system-g.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-08-settings-are-cleaner-and-searchable.md +5 -0
- package/dist/agent/run-ownership.d.ts +6 -0
- package/dist/agent/run-ownership.d.ts.map +1 -1
- package/dist/agent/run-ownership.js +11 -1
- package/dist/agent/run-ownership.js.map +1 -1
- package/dist/changelog/parse.d.ts +7 -0
- package/dist/changelog/parse.d.ts.map +1 -1
- package/dist/changelog/parse.js +64 -0
- package/dist/changelog/parse.js.map +1 -1
- package/dist/chat-threads/schema.d.ts +445 -0
- package/dist/chat-threads/schema.d.ts.map +1 -0
- package/dist/chat-threads/schema.js +39 -0
- package/dist/chat-threads/schema.js.map +1 -0
- package/dist/chat-threads/store.d.ts +12 -0
- package/dist/chat-threads/store.d.ts.map +1 -1
- package/dist/chat-threads/store.js +99 -10
- package/dist/chat-threads/store.js.map +1 -1
- package/dist/cli/design-connect.d.ts.map +1 -1
- package/dist/cli/design-connect.js +40 -10
- package/dist/cli/design-connect.js.map +1 -1
- package/dist/cli/workspace-dev.d.ts.map +1 -1
- package/dist/cli/workspace-dev.js +20 -5
- package/dist/cli/workspace-dev.js.map +1 -1
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +35 -7
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +105 -183
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/analytics-session.d.ts +3 -0
- package/dist/client/analytics-session.d.ts.map +1 -0
- package/dist/client/analytics-session.js +66 -0
- package/dist/client/analytics-session.js.map +1 -0
- package/dist/client/analytics.d.ts +32 -0
- package/dist/client/analytics.d.ts.map +1 -1
- package/dist/client/analytics.js +116 -46
- package/dist/client/analytics.js.map +1 -1
- package/dist/client/chat/message-components.d.ts +2 -1
- package/dist/client/chat/message-components.d.ts.map +1 -1
- package/dist/client/chat/message-components.js +16 -6
- package/dist/client/chat/message-components.js.map +1 -1
- package/dist/client/components/ui/message-scroller.d.ts +16 -0
- package/dist/client/components/ui/message-scroller.d.ts.map +1 -0
- package/dist/client/components/ui/message-scroller.js +25 -0
- package/dist/client/components/ui/message-scroller.js.map +1 -0
- package/dist/client/conversation/AgentConversation.d.ts +1 -1
- package/dist/client/conversation/AgentConversation.d.ts.map +1 -1
- package/dist/client/conversation/AgentConversation.js +3 -8
- package/dist/client/conversation/AgentConversation.js.map +1 -1
- package/dist/client/error-capture.d.ts +99 -0
- package/dist/client/error-capture.d.ts.map +1 -0
- package/dist/client/error-capture.js +437 -0
- package/dist/client/error-capture.js.map +1 -0
- package/dist/client/index.d.ts +2 -2
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +3 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/session-replay.d.ts +22 -0
- package/dist/client/session-replay.d.ts.map +1 -1
- package/dist/client/session-replay.js +45 -4
- package/dist/client/session-replay.js.map +1 -1
- package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
- package/dist/client/settings/SettingsPanel.js +100 -5
- package/dist/client/settings/SettingsPanel.js.map +1 -1
- package/dist/client/settings/SettingsTabsPage.d.ts +49 -1
- package/dist/client/settings/SettingsTabsPage.d.ts.map +1 -1
- package/dist/client/settings/SettingsTabsPage.js +131 -19
- package/dist/client/settings/SettingsTabsPage.js.map +1 -1
- 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.map +1 -1
- package/dist/client/sharing/ShareButton.d.ts.map +1 -1
- package/dist/client/sharing/ShareButton.js +13 -8
- package/dist/client/sharing/ShareButton.js.map +1 -1
- package/dist/client/sharing/ShareDialog.d.ts.map +1 -1
- package/dist/client/sharing/ShareDialog.js +12 -7
- package/dist/client/sharing/ShareDialog.js.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/file-upload/actions/upload-image.d.ts +1 -1
- package/dist/mcp/builtin-tools.d.ts.map +1 -1
- package/dist/mcp/builtin-tools.js +21 -2
- package/dist/mcp/builtin-tools.js.map +1 -1
- package/dist/observability/routes.d.ts +1 -1
- package/dist/org/schema.d.ts +15 -15
- package/dist/provider-api/corpus-jobs.d.ts +2 -2
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +109 -73
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/onboarding-html.d.ts.map +1 -1
- package/dist/server/onboarding-html.js +28 -16
- package/dist/server/onboarding-html.js.map +1 -1
- package/dist/sharing/actions/list-resource-shares.js +30 -1
- package/dist/sharing/actions/list-resource-shares.js.map +1 -1
- package/dist/sharing/actions/share-resource.js +6 -0
- package/dist/sharing/actions/share-resource.js.map +1 -1
- package/dist/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +4 -2
- package/dist/templates/workspace-core/.agents/skills/changelog/SKILL.md +9 -6
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +192 -30
- package/dist/vite/client.js.map +1 -1
- package/docs/content/toolkit-settings.mdx +56 -3
- package/package.json +2 -1
- package/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +4 -2
- package/src/templates/workspace-core/.agents/skills/changelog/SKILL.md +9 -6
package/corpus/README.md
CHANGED
package/corpus/core/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,39 @@
|
|
|
1
1
|
# @agent-native/core
|
|
2
2
|
|
|
3
|
+
## 0.91.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 942165f: Fix design live-edit preview showing a 404/NotFound for client-side-routed
|
|
8
|
+
(SPA) dev apps. The bridge served every snapshot from its own `/live-edit`
|
|
9
|
+
path, so the proxied app's router booted at `location.pathname === "/live-edit"`
|
|
10
|
+
and matched no route. The bridge now injects a synchronous pre-boot
|
|
11
|
+
`history.replaceState` shim that rewrites the iframe path to the real target
|
|
12
|
+
route before the app bundle runs. Asset resolution (via the injected
|
|
13
|
+
`<base href>`) is unchanged, and static/non-SPA apps are unaffected.
|
|
14
|
+
|
|
15
|
+
## 0.91.0
|
|
16
|
+
|
|
17
|
+
### Minor Changes
|
|
18
|
+
|
|
19
|
+
- e310ac1: Add first-party, Sentry-style error capture to the analytics client SDK. `configureTracking({ errorCapture })` now auto-captures uncaught exceptions (`window.onerror`) and unhandled promise rejections, exposes a manual `captureException(error, context?)` / `captureMessage(message, level?)` API plus `addErrorBreadcrumb`, and ties each captured exception to the active session replay id so errors link straight to the recording they happened in. Captured exceptions are sent through the existing first-party analytics ingest as a dedicated `$exception` event and are redacted + deduped client-side. Additive and backward-compatible; error capture only installs when a public key is configured (or explicitly enabled).
|
|
20
|
+
- e310ac1: Revamp the shared settings shell (`SettingsTabsPage`): an edge-aligned,
|
|
21
|
+
independently scrolling left nav with consistent theming, a built-in settings
|
|
22
|
+
search that deep-links into tabs and sections via `searchEntries` /
|
|
23
|
+
`generalSearchEntries`, and a new controlled `value` / `onValueChange` mode so
|
|
24
|
+
apps can drive the active tab from their own routing and application state.
|
|
25
|
+
- e310ac1: Make agent-native chat threads shareable through the framework share dialog so collaborators can view or edit shared chats.
|
|
26
|
+
|
|
27
|
+
### Patch Changes
|
|
28
|
+
|
|
29
|
+
- e310ac1: Populate in-app "What's new" surfaces from pending app changelog entries during dev and build.
|
|
30
|
+
- e310ac1: Use shadcn's message scroller primitives for core chat transcripts so streaming replies, turn anchoring, and scroll-to-bottom behavior stay smoother in long or dynamically resizing chats.
|
|
31
|
+
- e310ac1: Auto-continue recoverable chat run timeouts during reconnect without showing the internal resume prompt in chat history, and retry transient `ask_app_status` bridge fetch failures before surfacing an error.
|
|
32
|
+
- e310ac1: Recover Google popup sign-in pages when the session cookie is present but the parent page misses the automatic OAuth exchange redirect.
|
|
33
|
+
- e310ac1: Hide internal share principal ids in share dialogs by resolving organization names and using safe fallback labels.
|
|
34
|
+
- e310ac1: Fix Vite dev server resolution for Agent Native templates that load local or transitive `@agent-native/toolkit` subpath exports.
|
|
35
|
+
- e310ac1: Avoid repeated Sentry reports when workspace dev app discovery hits local filesystem permission errors.
|
|
36
|
+
|
|
3
37
|
## 0.90.11
|
|
4
38
|
|
|
5
39
|
### Patch Changes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: "Settings Kit"
|
|
3
|
-
description: "A standard settings-page contract for app, agent, provider, team, and language settings."
|
|
3
|
+
description: "A standard, searchable settings-page contract for app, agent, provider, team, and language settings."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Settings Kit
|
|
@@ -10,11 +10,17 @@ not have to wonder whether model keys live in an app settings page, a giant
|
|
|
10
10
|
agent sidebar panel, or a provider-specific setup card. The app route owns the
|
|
11
11
|
page; framework tabs can be mounted inside it.
|
|
12
12
|
|
|
13
|
+
Every settings page is **searchable out of the box**: `<SettingsTabsPage>`
|
|
14
|
+
renders a search box that indexes tabs and their controls, so a user can type
|
|
15
|
+
"language", "S3", or "API key" and jump straight to the right section across any
|
|
16
|
+
tab — no hunting through the nav. This is a core value prop of the kit and comes
|
|
17
|
+
free the moment an app adopts the shared page.
|
|
18
|
+
|
|
13
19
|
<WireframeBlock id="doc-block-toolkit-settings">
|
|
14
20
|
<Screen
|
|
15
21
|
surface="desktop"
|
|
16
22
|
html={
|
|
17
|
-
"<div style='min-height:520px;box-sizing:border-box;padding:26px;display:grid;grid-template-columns:200px 1fr;gap:18px'><aside class='wf-card' style='display:flex;flex-direction:column;gap:6px'><strong style='margin-bottom:4px'>Settings</strong><div style='padding:7px 9px;border-radius:8px'>General</div><div style='padding:7px 9px;border-radius:8px;background:var(--wf-accent-soft);display:flex;align-items:center;gap:8px'><span data-icon='settings'></span> AI and models</div><div style='padding:7px 9px;border-radius:8px'>Connections</div><div style='padding:7px 9px;border-radius:8px'>Team</div><div style='padding:7px 9px;border-radius:8px'>Developer</div></aside><main class='wf-card' style='display:flex;flex-direction:column;gap:14px'><h2 style='margin:0'>AI and models</h2><div style='display:flex;flex-direction:column;gap:6px'><small class='wf-muted'>Default model</small><div class='wf-box' style='display:flex;align-items:center;gap:8px'><div style='flex:1'>GPT-5</div><span data-icon='chevronDown'></span></div></div><div style='display:flex;flex-direction:column;gap:8px'><small class='wf-muted'>Provider keys</small><div class='wf-box' style='display:flex;align-items:center;gap:10px'><span data-icon='check'></span><div style='flex:1'>OpenAI</div><span class='wf-pill'>Connected</span></div><div class='wf-box' style='display:flex;align-items:center;gap:10px'><span data-icon='lock'></span><div style='flex:1'>Anthropic</div><button>Add key</button></div><div class='wf-box' style='display:flex;align-items:center;gap:10px'><span data-icon='check'></span><div style='flex:1'>Builder</div><span class='wf-pill'>Connected</span></div></div><div style='flex:1'></div><div style='display:flex;gap:10px'><button>Open agent settings</button><div style='flex:1'></div><button class='primary'>Save changes</button></div></main></div>"
|
|
23
|
+
"<div style='min-height:520px;box-sizing:border-box;padding:26px;display:grid;grid-template-columns:200px 1fr;gap:18px'><aside class='wf-card' style='display:flex;flex-direction:column;gap:6px'><strong style='margin-bottom:4px'>Settings</strong><div class='wf-box' style='display:flex;align-items:center;gap:8px;margin-bottom:4px'><span data-icon='search'></span><span class='wf-muted'>Search settings</span></div><div style='padding:7px 9px;border-radius:8px'>General</div><div style='padding:7px 9px;border-radius:8px;background:var(--wf-accent-soft);display:flex;align-items:center;gap:8px'><span data-icon='settings'></span> AI and models</div><div style='padding:7px 9px;border-radius:8px'>Connections</div><div style='padding:7px 9px;border-radius:8px'>Team</div><div style='padding:7px 9px;border-radius:8px'>Developer</div></aside><main class='wf-card' style='display:flex;flex-direction:column;gap:14px'><h2 style='margin:0'>AI and models</h2><div style='display:flex;flex-direction:column;gap:6px'><small class='wf-muted'>Default model</small><div class='wf-box' style='display:flex;align-items:center;gap:8px'><div style='flex:1'>GPT-5</div><span data-icon='chevronDown'></span></div></div><div style='display:flex;flex-direction:column;gap:8px'><small class='wf-muted'>Provider keys</small><div class='wf-box' style='display:flex;align-items:center;gap:10px'><span data-icon='check'></span><div style='flex:1'>OpenAI</div><span class='wf-pill'>Connected</span></div><div class='wf-box' style='display:flex;align-items:center;gap:10px'><span data-icon='lock'></span><div style='flex:1'>Anthropic</div><button>Add key</button></div><div class='wf-box' style='display:flex;align-items:center;gap:10px'><span data-icon='check'></span><div style='flex:1'>Builder</div><span class='wf-pill'>Connected</span></div></div><div style='flex:1'></div><div style='display:flex;gap:10px'><button>Open agent settings</button><div style='flex:1'></div><button class='primary'>Save changes</button></div></main></div>"
|
|
18
24
|
}
|
|
19
25
|
/>
|
|
20
26
|
</WireframeBlock>
|
|
@@ -23,8 +29,9 @@ page; framework tabs can be mounted inside it.
|
|
|
23
29
|
|
|
24
30
|
| Piece | Purpose |
|
|
25
31
|
| ------------------------ | ------------------------------------------------------------------------------------- |
|
|
26
|
-
| `<SettingsTabsPage>` | Standard tabbed settings route surface.
|
|
32
|
+
| `<SettingsTabsPage>` | Standard tabbed settings route surface with a built-in settings search box. |
|
|
27
33
|
| `useAgentSettingsTabs()` | Framework-provided agent, model, key, automation, and voice tabs that apps can mount. |
|
|
34
|
+
| `SettingsSearchEntry` | A deep-link target (label, keywords, tab, and hash) that makes a control findable. |
|
|
28
35
|
| `<LanguagePicker>` | Standard language selector for app settings. |
|
|
29
36
|
| `openAgentSettings()` | Compatibility escape hatch for opening the sidebar settings tab when needed. |
|
|
30
37
|
| Hash deep links | Stable links such as `/settings#secrets:OPENAI_API_KEY` and `/settings#connections`. |
|
|
@@ -52,10 +59,56 @@ export default function SettingsRoute() {
|
|
|
52
59
|
}
|
|
53
60
|
```
|
|
54
61
|
|
|
62
|
+
## Search {#search}
|
|
63
|
+
|
|
64
|
+
The search box is enabled by default. With no extra work it matches on tab
|
|
65
|
+
labels, so users can already filter the nav. To make individual controls
|
|
66
|
+
discoverable, register `SettingsSearchEntry` items — each result switches to the
|
|
67
|
+
right tab and scrolls to the target section:
|
|
68
|
+
|
|
69
|
+
```tsx
|
|
70
|
+
const agentSettingsTabs = useAgentSettingsTabs(); // already ships search entries
|
|
71
|
+
|
|
72
|
+
return (
|
|
73
|
+
<SettingsTabsPage
|
|
74
|
+
extraTabs={[
|
|
75
|
+
{
|
|
76
|
+
id: "alerts",
|
|
77
|
+
label: "Alerts",
|
|
78
|
+
content: <AlertRulesSettingsCard />,
|
|
79
|
+
keywords: "notifications thresholds monitors",
|
|
80
|
+
searchEntries: [
|
|
81
|
+
{ id: "alert-rules", label: "Alert rules", hash: "alert-rules" },
|
|
82
|
+
],
|
|
83
|
+
},
|
|
84
|
+
...agentSettingsTabs,
|
|
85
|
+
]}
|
|
86
|
+
general={<LanguagePicker label="Interface language" />}
|
|
87
|
+
// Deep-link targets that live inside the General tab.
|
|
88
|
+
generalSearchEntries={[
|
|
89
|
+
{
|
|
90
|
+
id: "language",
|
|
91
|
+
label: "Language",
|
|
92
|
+
keywords: "locale translation interface",
|
|
93
|
+
hash: "language",
|
|
94
|
+
},
|
|
95
|
+
]}
|
|
96
|
+
/>
|
|
97
|
+
);
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Give each searchable card a matching `id` (e.g. `id="language"`) so the entry's
|
|
101
|
+
`hash` can scroll to it. Add `keywords` for synonyms and provider names the
|
|
102
|
+
label does not contain (e.g. "S3", "R2", "bucket" for replay storage). Set
|
|
103
|
+
`enableSearch={false}` only for trivial single-section pages; prefer keeping it
|
|
104
|
+
on so settings stay findable everywhere.
|
|
105
|
+
|
|
55
106
|
## UX Standard {#ux-standard}
|
|
56
107
|
|
|
57
108
|
- Keep model keys, OAuth connections, Builder connect, language, team, and app
|
|
58
109
|
preferences in one route.
|
|
110
|
+
- Keep search on and register a `SettingsSearchEntry` for every meaningful
|
|
111
|
+
control so users can find settings by name instead of scanning tabs.
|
|
59
112
|
- Link to tabs by hash so setup prompts can send users to the exact missing
|
|
60
113
|
credential.
|
|
61
114
|
- Use the agent sidebar settings only as a compact access point, not as the
|
package/corpus/core/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-native/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.91.1",
|
|
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": {
|
|
@@ -265,6 +265,7 @@
|
|
|
265
265
|
"@rrweb/record": "2.0.1",
|
|
266
266
|
"@sentry/browser": "10.60.0",
|
|
267
267
|
"@sentry/node": "10.60.0",
|
|
268
|
+
"@shadcn/react": "^0.2.0",
|
|
268
269
|
"@standard-schema/spec": "^1.1.0",
|
|
269
270
|
"@tanstack/react-table": "^8.21.3",
|
|
270
271
|
"@tiptap/core": "3.27.1",
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import { getThread } from "../chat-threads/store.js";
|
|
1
|
+
import { getThread, resolveThreadAccess } from "../chat-threads/store.js";
|
|
2
|
+
import type { AccessContext } from "../sharing/access.js";
|
|
3
|
+
import type { ShareRole } from "../sharing/schema.js";
|
|
2
4
|
/**
|
|
3
5
|
* Ownership checks for the agent run HTTP routes (`/runs/:id/events`,
|
|
4
6
|
* `/runs/:id/abort`, `/runs/active`).
|
|
@@ -38,6 +40,17 @@ export async function callerOwnsThread(
|
|
|
38
40
|
return !!thread && thread.ownerEmail === owner;
|
|
39
41
|
}
|
|
40
42
|
|
|
43
|
+
/** True when `owner` has at least `role` access to the chat thread. */
|
|
44
|
+
export async function callerHasThreadAccess(
|
|
45
|
+
owner: string,
|
|
46
|
+
threadId: string | null | undefined,
|
|
47
|
+
role: ShareRole | "owner" = "viewer",
|
|
48
|
+
ctx: Omit<AccessContext, "userEmail"> = {},
|
|
49
|
+
): Promise<boolean> {
|
|
50
|
+
if (!threadId) return false;
|
|
51
|
+
return !!(await resolveThreadAccess(owner, threadId, role, ctx));
|
|
52
|
+
}
|
|
53
|
+
|
|
41
54
|
/** True when `owner` owns the thread that run `runId` belongs to. */
|
|
42
55
|
export async function callerOwnsRun(
|
|
43
56
|
owner: string,
|
|
@@ -45,3 +58,18 @@ export async function callerOwnsRun(
|
|
|
45
58
|
): Promise<boolean> {
|
|
46
59
|
return callerOwnsThread(owner, await resolveRunThreadId(runId));
|
|
47
60
|
}
|
|
61
|
+
|
|
62
|
+
/** True when `owner` has at least `role` access to the thread behind `runId`. */
|
|
63
|
+
export async function callerHasRunAccess(
|
|
64
|
+
owner: string,
|
|
65
|
+
runId: string,
|
|
66
|
+
role: ShareRole | "owner" = "viewer",
|
|
67
|
+
ctx: Omit<AccessContext, "userEmail"> = {},
|
|
68
|
+
): Promise<boolean> {
|
|
69
|
+
return callerHasThreadAccess(
|
|
70
|
+
owner,
|
|
71
|
+
await resolveRunThreadId(runId),
|
|
72
|
+
role,
|
|
73
|
+
ctx,
|
|
74
|
+
);
|
|
75
|
+
}
|
|
@@ -242,4 +242,82 @@ export function rollupChangelog(
|
|
|
242
242
|
return `${head}\n\n${section}\n${rest}\n`;
|
|
243
243
|
}
|
|
244
244
|
|
|
245
|
+
function changelogHeader(markdown: string): string {
|
|
246
|
+
const doc = (markdown || CHANGELOG_HEADER).replace(/\s+$/, "");
|
|
247
|
+
const firstRelease = doc.search(/^##\s+(?!#)/m);
|
|
248
|
+
const header =
|
|
249
|
+
(firstRelease === -1 ? doc : doc.slice(0, firstRelease)).replace(
|
|
250
|
+
/\s+$/,
|
|
251
|
+
"",
|
|
252
|
+
) || CHANGELOG_HEADER.trim();
|
|
253
|
+
return header;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
function pendingSectionTitle(entry: PendingChangelogEntry): string {
|
|
257
|
+
return entry.date?.match(ISO_DATE)?.[1] ?? "Unreleased";
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
function pendingSectionSort(a: string, b: string): number {
|
|
261
|
+
const aDate = a.match(ISO_DATE)?.[1];
|
|
262
|
+
const bDate = b.match(ISO_DATE)?.[1];
|
|
263
|
+
if (aDate && bDate) return bDate.localeCompare(aDate);
|
|
264
|
+
if (!aDate && bDate) return -1;
|
|
265
|
+
if (aDate && !bDate) return 1;
|
|
266
|
+
return a.localeCompare(b);
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* Render an app-facing changelog that includes both released CHANGELOG.md
|
|
271
|
+
* sections and adjacent pending `changelog/*.md` entries. Unlike `release`,
|
|
272
|
+
* this is pure and non-destructive, so build/dev bundles can show current
|
|
273
|
+
* product notes without deleting the conflict-free pending files.
|
|
274
|
+
*/
|
|
275
|
+
export function mergePendingChangelog(
|
|
276
|
+
existing: string,
|
|
277
|
+
pending: PendingChangelogEntry[],
|
|
278
|
+
): string {
|
|
279
|
+
const pendingWithText = pending.filter((entry) => entry.text.trim());
|
|
280
|
+
if (pendingWithText.length === 0) return existing || CHANGELOG_HEADER;
|
|
281
|
+
|
|
282
|
+
const existingEntries = parseChangelog(existing);
|
|
283
|
+
const usedExistingIndexes = new Set<number>();
|
|
284
|
+
const pendingByTitle = new Map<string, PendingChangelogEntry[]>();
|
|
285
|
+
|
|
286
|
+
for (const entry of pendingWithText) {
|
|
287
|
+
const title = pendingSectionTitle(entry);
|
|
288
|
+
pendingByTitle.set(title, [...(pendingByTitle.get(title) ?? []), entry]);
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
const sections: string[] = [];
|
|
292
|
+
for (const title of [...pendingByTitle.keys()].sort(pendingSectionSort)) {
|
|
293
|
+
const body = renderReleaseBody(pendingByTitle.get(title) ?? []);
|
|
294
|
+
if (!body) continue;
|
|
295
|
+
|
|
296
|
+
const existingIndex = existingEntries.findIndex((entry, index) => {
|
|
297
|
+
if (usedExistingIndexes.has(index)) return false;
|
|
298
|
+
return entry.date === title || entry.title === title;
|
|
299
|
+
});
|
|
300
|
+
|
|
301
|
+
if (existingIndex === -1) {
|
|
302
|
+
sections.push(`## ${title}\n\n${body}`);
|
|
303
|
+
continue;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
usedExistingIndexes.add(existingIndex);
|
|
307
|
+
const existingEntry = existingEntries[existingIndex];
|
|
308
|
+
sections.push(
|
|
309
|
+
`## ${existingEntry.title}\n\n${[body, existingEntry.body]
|
|
310
|
+
.filter(Boolean)
|
|
311
|
+
.join("\n\n")}`,
|
|
312
|
+
);
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
existingEntries.forEach((entry, index) => {
|
|
316
|
+
if (usedExistingIndexes.has(index)) return;
|
|
317
|
+
sections.push(`## ${entry.title}\n\n${entry.body}`);
|
|
318
|
+
});
|
|
319
|
+
|
|
320
|
+
return `${changelogHeader(existing)}\n\n${sections.join("\n\n")}\n`;
|
|
321
|
+
}
|
|
322
|
+
|
|
245
323
|
export { CHANGELOG_HEADER, GROUP_LABELS };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { table, text, integer } from "../db/schema.js";
|
|
2
|
+
import { createSharesTable, ownableColumns } from "../sharing/schema.js";
|
|
3
|
+
|
|
4
|
+
export const chatThreads = table("chat_threads", {
|
|
5
|
+
id: text("id").primaryKey(),
|
|
6
|
+
title: text("title").notNull().default(""),
|
|
7
|
+
preview: text("preview").notNull().default(""),
|
|
8
|
+
threadData: text("thread_data").notNull().default("{}"),
|
|
9
|
+
messageCount: integer("message_count").notNull().default(0),
|
|
10
|
+
createdAt: integer("created_at").notNull(),
|
|
11
|
+
updatedAt: integer("updated_at").notNull(),
|
|
12
|
+
scopeType: text("scope_type"),
|
|
13
|
+
scopeId: text("scope_id"),
|
|
14
|
+
scopeLabel: text("scope_label"),
|
|
15
|
+
pinnedAt: integer("pinned_at"),
|
|
16
|
+
archivedAt: integer("archived_at"),
|
|
17
|
+
shareTokenHash: text("share_token_hash"),
|
|
18
|
+
...ownableColumns(),
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
export const chatThreadShares = createSharesTable("chat_thread_shares");
|
|
22
|
+
|
|
23
|
+
export const CHAT_THREAD_SHARES_CREATE_SQL = `CREATE TABLE IF NOT EXISTS chat_thread_shares (
|
|
24
|
+
id TEXT PRIMARY KEY,
|
|
25
|
+
resource_id TEXT NOT NULL,
|
|
26
|
+
principal_type TEXT NOT NULL,
|
|
27
|
+
principal_id TEXT NOT NULL,
|
|
28
|
+
role TEXT NOT NULL DEFAULT 'viewer',
|
|
29
|
+
created_by TEXT NOT NULL,
|
|
30
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
31
|
+
)`;
|
|
32
|
+
|
|
33
|
+
export const CHAT_THREAD_SHARES_CREATE_SQL_PG = `CREATE TABLE IF NOT EXISTS chat_thread_shares (
|
|
34
|
+
id TEXT PRIMARY KEY,
|
|
35
|
+
resource_id TEXT NOT NULL,
|
|
36
|
+
principal_type TEXT NOT NULL,
|
|
37
|
+
principal_id TEXT NOT NULL,
|
|
38
|
+
role TEXT NOT NULL DEFAULT 'viewer',
|
|
39
|
+
created_by TEXT NOT NULL,
|
|
40
|
+
created_at TEXT NOT NULL DEFAULT now()
|
|
41
|
+
)`;
|
|
42
|
+
|
|
43
|
+
export const CHAT_THREAD_SHARES_RESOURCE_INDEX_SQL = `CREATE INDEX IF NOT EXISTS chat_thread_shares_resource_idx ON chat_thread_shares (resource_id)`;
|