@agent-native/core 0.91.2 → 0.92.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 +31 -0
- package/corpus/core/docs/content/faq.mdx +17 -0
- package/corpus/core/docs/content/notifications.mdx +12 -6
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/agent/production-agent.ts +140 -46
- package/corpus/core/src/agent/tool-search.ts +71 -4
- package/corpus/core/src/application-state/store.ts +12 -1
- package/corpus/core/src/cli/index.ts +20 -0
- package/corpus/core/src/cli/upgrade.ts +798 -0
- package/corpus/core/src/client/AssistantChat.tsx +28 -15
- package/corpus/core/src/client/HighlightedCodeBlock.tsx +20 -3
- package/corpus/core/src/client/PoweredByBadge.tsx +1 -8
- package/corpus/core/src/client/agent-chat-adapter.ts +68 -16
- package/corpus/core/src/client/chat/message-components.tsx +85 -8
- package/corpus/core/src/client/chat/tool-call-display.tsx +355 -144
- package/corpus/core/src/client/chat/widgets/DataTableWidget.tsx +52 -1
- package/corpus/core/src/client/code-agent-chat-adapter.ts +2 -9
- package/corpus/core/src/client/db-admin/TableEditor.tsx +49 -0
- package/corpus/core/src/client/db-admin/export-utils.ts +13 -4
- package/corpus/core/src/client/db-admin/useAgentSync.ts +72 -0
- package/corpus/core/src/client/error-capture.ts +69 -7
- package/corpus/core/src/client/extensions/EmbeddedExtension.tsx +5 -1
- package/corpus/core/src/client/extensions/ExtensionViewer.tsx +53 -8
- package/corpus/core/src/client/extensions/InlineExtensionFrame.tsx +5 -1
- package/corpus/core/src/client/extensions/portable-extension.ts +1 -0
- package/corpus/core/src/client/org/OrgSwitcher.tsx +12 -9
- package/corpus/core/src/client/org/TeamPage.tsx +77 -71
- package/corpus/core/src/client/session-replay.ts +3 -97
- package/corpus/core/src/client/settings/SettingsPanel.tsx +738 -441
- package/corpus/core/src/client/settings/SettingsSection.tsx +161 -17
- package/corpus/core/src/client/settings/SettingsTabsPage.tsx +25 -9
- package/corpus/core/src/client/sse-event-processor.ts +29 -2
- package/corpus/core/src/db-admin/agent-tools.ts +8 -2
- package/corpus/core/src/db-admin/operations.ts +116 -4
- package/corpus/core/src/db-admin/routes.ts +1 -0
- package/corpus/core/src/db-admin/types.ts +4 -0
- package/corpus/core/src/extensions/actions.ts +113 -5
- package/corpus/core/src/extensions/html-shell.ts +5 -4
- package/corpus/core/src/extensions/routes.ts +10 -0
- package/corpus/core/src/navigation/index.ts +1 -1
- package/corpus/core/src/notifications/channels.ts +88 -25
- package/corpus/core/src/notifications/registry.ts +17 -3
- package/corpus/core/src/notifications/types.ts +4 -1
- package/corpus/core/src/resources/handlers.ts +10 -8
- package/corpus/core/src/server/agent-chat-plugin.ts +7 -3
- package/corpus/core/src/server/poll.ts +293 -8
- package/corpus/core/src/server/request-context.ts +7 -0
- package/corpus/core/src/styles/agent-conversation.css +1 -1
- package/corpus/core/src/styles/agent-native.css +27 -0
- package/corpus/core/src/templates/default/.agents/skills/actions/SKILL.md +5 -0
- package/corpus/core/src/templates/default/.agents/skills/adding-a-feature/SKILL.md +5 -0
- package/corpus/core/src/templates/default/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/core/src/templates/default/.agents/skills/security/SKILL.md +7 -0
- package/corpus/core/src/templates/default/.agents/skills/self-modifying-code/SKILL.md +20 -2
- package/corpus/core/src/templates/default/.agents/skills/storing-data/SKILL.md +5 -1
- package/corpus/core/src/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- package/corpus/core/src/templates/default/AGENTS.md +14 -5
- package/corpus/core/src/templates/default/package.json +2 -1
- package/corpus/core/src/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- package/corpus/core/src/templates/headless/AGENTS.md +13 -3
- package/corpus/core/src/templates/headless/package.json +1 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/actions/SKILL.md +5 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +5 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/context-awareness/SKILL.md +4 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +6 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/performance/SKILL.md +4 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/core/src/templates/workspace-core/.agents/skills/security/SKILL.md +7 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +20 -2
- package/corpus/core/src/templates/workspace-core/.agents/skills/storing-data/SKILL.md +5 -1
- package/corpus/core/src/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- package/corpus/core/src/templates/workspace-core/AGENTS.md +7 -1
- package/corpus/core/src/templates/workspace-root/AGENTS.md +17 -5
- package/corpus/core/src/templates/workspace-root/package.json +1 -0
- package/corpus/templates/analytics/.agents/skills/actions/SKILL.md +5 -0
- package/corpus/templates/analytics/.agents/skills/dashboard-management/SKILL.md +10 -0
- package/corpus/templates/analytics/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/templates/analytics/.agents/skills/security/SKILL.md +7 -0
- package/corpus/templates/analytics/.agents/skills/self-modifying-code/SKILL.md +20 -2
- package/corpus/templates/analytics/.agents/skills/session-replay/SKILL.md +5 -6
- package/corpus/templates/analytics/.agents/skills/storing-data/SKILL.md +5 -1
- package/corpus/templates/analytics/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- package/corpus/templates/analytics/AGENTS.md +39 -18
- package/corpus/templates/analytics/actions/capture-test-error.ts +4 -0
- package/corpus/templates/analytics/actions/get-analytics-alert-rule-defaults.ts +23 -0
- package/corpus/templates/analytics/actions/get-error-issue.ts +1 -1
- package/corpus/templates/analytics/actions/list-analysis-revisions.ts +40 -0
- package/corpus/templates/analytics/actions/list-dashboard-revisions.ts +40 -0
- package/corpus/templates/analytics/actions/list-dashboard-usage-stats.ts +299 -0
- package/corpus/templates/analytics/actions/navigate.ts +4 -2
- package/corpus/templates/analytics/actions/restore-analysis-revision.ts +43 -0
- package/corpus/templates/analytics/actions/restore-dashboard-revision.ts +68 -0
- package/corpus/templates/analytics/actions/save-analytics-alert-rule.ts +14 -0
- package/corpus/templates/analytics/actions/save-monitor.ts +15 -1
- package/corpus/templates/analytics/actions/view-screen.ts +24 -0
- package/corpus/templates/analytics/app/components/analysis/AnalysisHistoryPanel.tsx +181 -0
- package/corpus/templates/analytics/app/components/dashboard/DashboardHistoryPanel.tsx +184 -0
- package/corpus/templates/analytics/app/components/dashboard/DataTable.tsx +41 -6
- package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +122 -11
- package/corpus/templates/analytics/app/components/layout/CommandPalette.tsx +22 -16
- package/corpus/templates/analytics/app/components/layout/Header.tsx +1 -1
- package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +27 -21
- package/corpus/templates/analytics/app/hooks/use-analysis-revisions.ts +43 -0
- package/corpus/templates/analytics/app/hooks/use-dashboard-chat-context.ts +110 -0
- package/corpus/templates/analytics/app/hooks/use-dashboard-revisions.ts +43 -0
- package/corpus/templates/analytics/app/hooks/use-navigation-state.ts +8 -3
- package/corpus/templates/analytics/app/i18n/zh-TW.ts +64 -2
- package/corpus/templates/analytics/app/i18n-data.ts +783 -3
- package/corpus/templates/analytics/app/pages/Agents.tsx +359 -19
- package/corpus/templates/analytics/app/pages/Settings.tsx +3 -2
- package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/index.tsx +34 -1
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +28 -0
- package/corpus/templates/analytics/app/pages/analyses/AnalysisDetail.tsx +18 -1
- package/corpus/templates/analytics/app/pages/monitoring/ErrorsPanel.tsx +7 -10
- package/corpus/templates/analytics/app/pages/monitoring/MonitoringPage.tsx +8 -2
- package/corpus/templates/analytics/app/pages/monitoring/errors/IssueDetail.tsx +479 -23
- package/corpus/templates/analytics/app/pages/monitoring/errors/IssueList.tsx +0 -9
- package/corpus/templates/analytics/app/pages/monitoring/errors/i18n.ts +11 -0
- package/corpus/templates/analytics/app/pages/monitoring/errors/types.ts +9 -1
- package/corpus/templates/analytics/app/pages/monitoring/uptime/MonitorFormPage.tsx +157 -35
- package/corpus/templates/analytics/app/pages/monitoring/uptime/i18n.ts +17 -2
- package/corpus/templates/analytics/app/pages/monitoring/uptime/types.ts +4 -0
- package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +80 -220
- package/corpus/templates/analytics/app/pages/sessions/SessionsPage.tsx +9 -99
- package/corpus/templates/analytics/app/pages/settings/AlertRulesSettingsCard.tsx +262 -104
- package/corpus/templates/analytics/app/routes/team.tsx +1 -1
- package/corpus/templates/analytics/changelog/2026-07-08-admins-can-audit-dashboard-usage-ownership-and-cleanup-signa.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-agent-monitoring-stays-available-to-non-admins.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-alert-rules-are-easier-to-scan-expand-and-edit-from-settings.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-analytics-alert-forms-remember-last-email-recipients.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-analytics-alert-rules-can-now-use-per-rule-slack-and-webhook.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-dashboard-history-and-chat-context.md +5 -0
- package/corpus/templates/analytics/changelog/2026-07-08-dashboard-tables-keep-their-size-while-loading.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-dashboard-usage-now-counts-explorer-dashboard-traffic.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-demo-mode-session-emails-are-filtered-and-anonymized.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-error-issue-detail-adds-stack-traces-and-frequency-bars.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-error-issue-detail-now-shows-the-latest-occurrence-message-a.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-monitoring-errors-only-show-test-action-when-empty.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-monitoring-uptime-and-errors-tabs-now-clearly-show-which-view-is-active.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-production-session-replay-now-requires-private-blob-storage-.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-session-replay-uses-stock-rrweb-sizing-again-so-recorded.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-shared-extension-links-now-show-a-clear-message-when-you-do-.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-sidebar-dashboard-menus-now-open-above-the-dashboard-canvas.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-team-settings-show-access-controls-next-to-member-lists.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-uptime-alerting-clarifies-in-app-inbox-vs-email-and-lets-you-paste-slack-or-webhook-urls-per-monitor.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-uptime-monitors-now-use-a-10-second-request-timeout-by-defau.md +6 -0
- package/corpus/templates/analytics/docs/uptime-monitoring.md +13 -11
- package/corpus/templates/analytics/server/db/schema-monitoring.ts +5 -1
- package/corpus/templates/analytics/server/db/schema.ts +56 -0
- package/corpus/templates/analytics/server/lib/analytics-alerts.ts +92 -0
- package/corpus/templates/analytics/server/lib/dashboards-store.ts +334 -5
- package/corpus/templates/analytics/server/lib/error-capture.ts +231 -36
- package/corpus/templates/analytics/server/lib/session-replay.ts +114 -8
- package/corpus/templates/analytics/server/lib/uptime-monitors.ts +65 -16
- package/corpus/templates/analytics/server/plugins/db.ts +122 -2
- package/corpus/templates/analytics/server/routes/api/dashboard-agent-context.json.get.ts +1 -0
- package/corpus/templates/assets/.agents/skills/actions/SKILL.md +5 -0
- package/corpus/templates/assets/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/templates/assets/.agents/skills/security/SKILL.md +7 -0
- package/corpus/templates/assets/.agents/skills/self-modifying-code/SKILL.md +20 -2
- package/corpus/templates/assets/.agents/skills/storing-data/SKILL.md +5 -1
- package/corpus/templates/assets/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- package/corpus/templates/assets/AGENTS.md +4 -0
- package/corpus/templates/assets/app/routes/settings.tsx +1 -1
- package/corpus/templates/assets/app/routes/team.tsx +1 -1
- package/corpus/templates/brain/.agents/skills/actions/SKILL.md +5 -0
- package/corpus/templates/brain/.agents/skills/adding-a-feature/SKILL.md +5 -0
- package/corpus/templates/brain/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/templates/brain/.agents/skills/security/SKILL.md +7 -0
- package/corpus/templates/brain/.agents/skills/self-modifying-code/SKILL.md +20 -2
- package/corpus/templates/brain/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- package/corpus/templates/brain/AGENTS.md +4 -0
- package/corpus/templates/brain/app/routes/team.tsx +1 -1
- package/corpus/templates/calendar/.agents/skills/actions/SKILL.md +5 -0
- package/corpus/templates/calendar/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/templates/calendar/.agents/skills/security/SKILL.md +7 -0
- package/corpus/templates/calendar/.agents/skills/self-modifying-code/SKILL.md +20 -2
- package/corpus/templates/calendar/.agents/skills/storing-data/SKILL.md +5 -1
- package/corpus/templates/calendar/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- package/corpus/templates/calendar/AGENTS.md +4 -0
- package/corpus/templates/calendar/app/components/calendar/DayView.tsx +11 -2
- package/corpus/templates/calendar/app/components/calendar/EventDetailPopover.tsx +21 -8
- package/corpus/templates/calendar/app/components/calendar/MonthView.tsx +7 -1
- package/corpus/templates/calendar/app/components/calendar/WeekView.tsx +11 -2
- package/corpus/templates/calendar/app/lib/popover-click-guard.ts +48 -4
- package/corpus/templates/calendar/app/pages/Settings.tsx +1 -1
- package/corpus/templates/calendar/app/routes/_app.team.tsx +1 -1
- package/corpus/templates/calendar/changelog/2026-07-08-clicking-empty-calendar-space-closes-an-open-event-popover-b.md +6 -0
- package/corpus/templates/chat/.agents/skills/actions/SKILL.md +5 -0
- package/corpus/templates/chat/.agents/skills/adding-a-feature/SKILL.md +5 -0
- package/corpus/templates/chat/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/templates/chat/.agents/skills/security/SKILL.md +7 -0
- package/corpus/templates/chat/.agents/skills/self-modifying-code/SKILL.md +20 -2
- package/corpus/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- package/corpus/templates/chat/AGENTS.md +4 -0
- package/corpus/templates/chat/app/hooks/use-navigation-state.ts +1 -1
- package/corpus/templates/chat/app/routes/settings.tsx +2 -2
- package/corpus/templates/chat/app/routes/team.tsx +1 -1
- package/corpus/templates/clips/.agents/skills/actions/SKILL.md +5 -0
- package/corpus/templates/clips/.agents/skills/security/SKILL.md +7 -0
- package/corpus/templates/clips/.agents/skills/self-modifying-code/SKILL.md +20 -2
- package/corpus/templates/clips/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- package/corpus/templates/clips/AGENTS.md +4 -0
- package/corpus/templates/clips/actions/finalize-recording.ts +9 -3
- package/corpus/templates/clips/actions/set-thumbnail.ts +11 -2
- package/corpus/templates/clips/app/components/meetings/canvas-editor.tsx +1 -7
- package/corpus/templates/clips/app/components/player/player-controls.tsx +21 -13
- package/corpus/templates/clips/app/components/player/video-player.tsx +30 -75
- package/corpus/templates/clips/app/i18n/ar-SA.ts +6 -5
- package/corpus/templates/clips/app/i18n/de-DE.ts +6 -6
- package/corpus/templates/clips/app/i18n/en-US.ts +6 -5
- package/corpus/templates/clips/app/i18n/es-ES.ts +6 -5
- package/corpus/templates/clips/app/i18n/fr-FR.ts +6 -6
- package/corpus/templates/clips/app/i18n/hi-IN.ts +6 -5
- package/corpus/templates/clips/app/i18n/ja-JP.ts +6 -5
- package/corpus/templates/clips/app/i18n/ko-KR.ts +6 -5
- package/corpus/templates/clips/app/i18n/pt-BR.ts +6 -5
- package/corpus/templates/clips/app/i18n/zh-CN.ts +6 -5
- package/corpus/templates/clips/app/i18n/zh-TW.ts +6 -5
- package/corpus/templates/clips/app/routes/_app.meetings.$meetingId.tsx +51 -118
- package/corpus/templates/clips/changelog/2026-07-08-desktop-meeting-notes-stay-active-from-tray-and-shortcut-controls.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-08-desktop-meeting-popovers-can-start-notes-and-join-the-meetin.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-08-hosted-clip-uploads-now-clear-failed-buffered-chunks.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-08-hosted-recording-uploads-now-avoid-sql-chunk-storage.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-08-meeting-notes-keep-their-recording-state-when-the-desktop.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-08-meeting-recaps-now-keep-summaries-action-items-and-transcrip.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-08-meeting-reminder-dropdowns-now-expand-fully-instead-of-being.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-08-video-playback-controls-now-match-loom-style-5-second-skips-.md +6 -0
- package/corpus/templates/clips/desktop/src/app.tsx +123 -3
- package/corpus/templates/clips/desktop/src/hooks/useMeetingTranscription.ts +15 -1
- package/corpus/templates/clips/desktop/src/overlays/meeting-notification.tsx +23 -0
- package/corpus/templates/clips/desktop/src/styles.css +23 -1
- package/corpus/templates/clips/desktop/src-tauri/src/adhoc_meetings_watcher.rs +1 -3
- package/corpus/templates/clips/desktop/src-tauri/src/clips/mod.rs +40 -6
- package/corpus/templates/clips/desktop/src-tauri/src/lib.rs +4 -2
- package/corpus/templates/clips/desktop/src-tauri/src/meetings_watcher.rs +3 -5
- package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +23 -19
- package/corpus/templates/clips/desktop/src-tauri/src/shortcuts.rs +3 -3
- package/corpus/templates/clips/desktop/src-tauri/src/silence_detector.rs +0 -1
- package/corpus/templates/clips/desktop/src-tauri/src/state.rs +5 -0
- package/corpus/templates/clips/desktop/src-tauri/src/tray.rs +18 -6
- package/corpus/templates/clips/server/lib/recording-upload-state.ts +63 -0
- package/corpus/templates/clips/server/lib/video-storage.ts +4 -0
- package/corpus/templates/clips/server/routes/api/recordings/[recordingId]/thumbnail.post.ts +19 -13
- package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/chunk.post.ts +40 -1
- package/corpus/templates/content/.agents/skills/actions/SKILL.md +5 -0
- package/corpus/templates/content/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/templates/content/.agents/skills/security/SKILL.md +7 -0
- package/corpus/templates/content/.agents/skills/self-modifying-code/SKILL.md +20 -2
- package/corpus/templates/content/.agents/skills/storing-data/SKILL.md +5 -1
- package/corpus/templates/content/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- package/corpus/templates/content/AGENTS.md +4 -0
- package/corpus/templates/content/actions/_batch-utils.ts +8 -0
- package/corpus/templates/content/actions/_builder-cms-read-client.ts +7 -5
- package/corpus/templates/content/actions/_database-source-utils.ts +776 -319
- package/corpus/templates/content/actions/_database-utils.ts +6 -1
- package/corpus/templates/content/actions/_property-utils.ts +168 -0
- package/corpus/templates/content/actions/add-content-database-source-field-property.ts +19 -12
- package/corpus/templates/content/actions/bind-content-database-source-field.ts +19 -12
- package/corpus/templates/content/actions/delete-document.ts +9 -13
- package/corpus/templates/content/actions/refresh-content-database-source.ts +5 -5
- package/corpus/templates/content/app/components/editor/body-hydration.ts +35 -11
- package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +47 -5
- package/corpus/templates/content/app/hooks/use-documents.ts +8 -2
- package/corpus/templates/content/app/routes/_app.settings.tsx +2 -2
- package/corpus/templates/content/app/routes/_app.team.tsx +1 -1
- package/corpus/templates/content/changelog/2026-07-08-builder-source-sync-now-completes-reliably-on-hosted-databases.md +6 -0
- package/corpus/templates/content/changelog/2026-07-08-fixed-builder-database-sync-so-large-sources-continue-past-t.md +6 -0
- package/corpus/templates/content/server/plugins/db.ts +19 -0
- package/corpus/templates/design/.agents/skills/actions/SKILL.md +5 -0
- package/corpus/templates/design/.agents/skills/security/SKILL.md +7 -0
- package/corpus/templates/design/.agents/skills/self-modifying-code/SKILL.md +20 -2
- package/corpus/templates/design/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- package/corpus/templates/design/AGENTS.md +4 -0
- package/corpus/templates/design/actions/take-design-screenshot.ts +12 -9
- package/corpus/templates/design/app/components/design/inspector/ImageFillControls.tsx +57 -13
- package/corpus/templates/design/app/routes/team.tsx +1 -1
- package/corpus/templates/design/changelog/2026-07-08-local-images-added-to-designs-now-upload-to-file-storage-ins.md +6 -0
- package/corpus/templates/dispatch/.agents/skills/actions/SKILL.md +5 -0
- package/corpus/templates/dispatch/.agents/skills/security/SKILL.md +7 -0
- package/corpus/templates/dispatch/.agents/skills/self-modifying-code/SKILL.md +20 -2
- package/corpus/templates/dispatch/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- package/corpus/templates/dispatch/AGENTS.md +4 -0
- package/corpus/templates/dispatch/app/hooks/use-navigation-state.ts +1 -1
- package/corpus/templates/dispatch/app/routes/settings.tsx +2 -2
- package/corpus/templates/dispatch/app/routes/team.tsx +1 -1
- package/corpus/templates/forms/.agents/skills/actions/SKILL.md +5 -0
- package/corpus/templates/forms/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/templates/forms/.agents/skills/security/SKILL.md +7 -0
- package/corpus/templates/forms/.agents/skills/self-modifying-code/SKILL.md +20 -2
- package/corpus/templates/forms/.agents/skills/storing-data/SKILL.md +5 -1
- package/corpus/templates/forms/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- package/corpus/templates/forms/AGENTS.md +4 -0
- package/corpus/templates/forms/app/routes/_app.settings.tsx +2 -2
- package/corpus/templates/forms/app/routes/_app.team.tsx +1 -1
- package/corpus/templates/forms/shared/navigation.ts +1 -1
- package/corpus/templates/macros/.agents/skills/security/SKILL.md +7 -0
- package/corpus/templates/macros/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- package/corpus/templates/macros/AGENTS.md +4 -0
- package/corpus/templates/macros/app/routes/settings.tsx +2 -2
- package/corpus/templates/macros/app/routes/team.tsx +1 -1
- package/corpus/templates/mail/.agents/skills/actions/SKILL.md +5 -0
- package/corpus/templates/mail/.agents/skills/email-drafts/SKILL.md +1 -1
- package/corpus/templates/mail/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/templates/mail/.agents/skills/security/SKILL.md +7 -0
- package/corpus/templates/mail/.agents/skills/self-modifying-code/SKILL.md +20 -2
- package/corpus/templates/mail/.agents/skills/storing-data/SKILL.md +5 -1
- package/corpus/templates/mail/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- package/corpus/templates/mail/AGENTS.md +4 -0
- package/corpus/templates/mail/changelog/2026-07-08-mail-attachments-in-hosted-environments-now-require-file-sto.md +6 -0
- package/corpus/templates/mail/server/handlers/media.ts +26 -1
- package/corpus/templates/mail/server/lib/outgoing-email.ts +24 -1
- package/corpus/templates/mail/server/lib/upload-store.ts +2 -1
- package/corpus/templates/plan/.agents/skills/actions/SKILL.md +5 -0
- package/corpus/templates/plan/.agents/skills/adding-a-feature/SKILL.md +5 -0
- package/corpus/templates/plan/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/templates/plan/.agents/skills/security/SKILL.md +7 -0
- package/corpus/templates/plan/.agents/skills/self-modifying-code/SKILL.md +20 -2
- package/corpus/templates/plan/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- package/corpus/templates/plan/AGENTS.md +4 -0
- package/corpus/templates/plan/app/hooks/use-navigation-state.ts +1 -1
- package/corpus/templates/plan/app/routes/settings.tsx +2 -2
- package/corpus/templates/plan/app/routes/team.tsx +1 -1
- package/corpus/templates/plan/changelog/2026-07-08-hosted-plan-images-now-require-connected-storage.md +6 -0
- package/corpus/templates/plan/server/lib/plan-assets.ts +33 -4
- package/corpus/templates/slides/.agents/skills/actions/SKILL.md +5 -0
- package/corpus/templates/slides/.agents/skills/security/SKILL.md +7 -0
- package/corpus/templates/slides/.agents/skills/self-modifying-code/SKILL.md +20 -2
- package/corpus/templates/slides/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- package/corpus/templates/slides/AGENTS.md +4 -0
- package/corpus/templates/slides/actions/generate-image-api.ts +15 -3
- package/corpus/templates/slides/app/routes/settings.tsx +2 -2
- package/corpus/templates/slides/app/routes/team.tsx +1 -1
- package/corpus/templates/slides/changelog/2026-07-08-generated-slide-images-now-return-hosted-file-storage-urls-i.md +6 -0
- package/corpus/templates/slides/shared/api.ts +1 -1
- package/corpus/templates/videos/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- package/corpus/templates/voice/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- package/dist/agent/production-agent.d.ts +5 -1
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +112 -42
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/tool-search.d.ts +2 -0
- package/dist/agent/tool-search.d.ts.map +1 -1
- package/dist/agent/tool-search.js +60 -4
- package/dist/agent/tool-search.js.map +1 -1
- package/dist/application-state/store.d.ts.map +1 -1
- package/dist/application-state/store.js +8 -2
- package/dist/application-state/store.js.map +1 -1
- package/dist/cli/index.js +19 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/upgrade.d.ts +100 -0
- package/dist/cli/upgrade.d.ts.map +1 -0
- package/dist/cli/upgrade.js +678 -0
- package/dist/cli/upgrade.js.map +1 -0
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +25 -14
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/HighlightedCodeBlock.d.ts +2 -0
- package/dist/client/HighlightedCodeBlock.d.ts.map +1 -1
- package/dist/client/HighlightedCodeBlock.js +10 -1
- package/dist/client/HighlightedCodeBlock.js.map +1 -1
- package/dist/client/PoweredByBadge.d.ts +1 -1
- package/dist/client/PoweredByBadge.d.ts.map +1 -1
- package/dist/client/PoweredByBadge.js +3 -9
- package/dist/client/PoweredByBadge.js.map +1 -1
- package/dist/client/agent-chat-adapter.d.ts.map +1 -1
- package/dist/client/agent-chat-adapter.js +60 -13
- package/dist/client/agent-chat-adapter.js.map +1 -1
- package/dist/client/chat/message-components.d.ts.map +1 -1
- package/dist/client/chat/message-components.js +61 -8
- package/dist/client/chat/message-components.js.map +1 -1
- package/dist/client/chat/tool-call-display.d.ts +12 -0
- package/dist/client/chat/tool-call-display.d.ts.map +1 -1
- package/dist/client/chat/tool-call-display.js +136 -42
- package/dist/client/chat/tool-call-display.js.map +1 -1
- package/dist/client/chat/widgets/DataTableWidget.d.ts.map +1 -1
- package/dist/client/chat/widgets/DataTableWidget.js +19 -2
- package/dist/client/chat/widgets/DataTableWidget.js.map +1 -1
- package/dist/client/code-agent-chat-adapter.js +2 -9
- package/dist/client/code-agent-chat-adapter.js.map +1 -1
- package/dist/client/db-admin/TableEditor.d.ts.map +1 -1
- package/dist/client/db-admin/TableEditor.js +19 -2
- package/dist/client/db-admin/TableEditor.js.map +1 -1
- package/dist/client/db-admin/export-utils.d.ts +2 -0
- package/dist/client/db-admin/export-utils.d.ts.map +1 -1
- package/dist/client/db-admin/export-utils.js +11 -3
- package/dist/client/db-admin/export-utils.js.map +1 -1
- package/dist/client/db-admin/useAgentSync.d.ts.map +1 -1
- package/dist/client/db-admin/useAgentSync.js +63 -0
- package/dist/client/db-admin/useAgentSync.js.map +1 -1
- package/dist/client/error-capture.d.ts.map +1 -1
- package/dist/client/error-capture.js +41 -7
- package/dist/client/error-capture.js.map +1 -1
- package/dist/client/extensions/EmbeddedExtension.d.ts.map +1 -1
- package/dist/client/extensions/EmbeddedExtension.js +3 -1
- package/dist/client/extensions/EmbeddedExtension.js.map +1 -1
- package/dist/client/extensions/ExtensionViewer.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionViewer.js +32 -5
- package/dist/client/extensions/ExtensionViewer.js.map +1 -1
- package/dist/client/extensions/InlineExtensionFrame.d.ts.map +1 -1
- package/dist/client/extensions/InlineExtensionFrame.js +3 -1
- package/dist/client/extensions/InlineExtensionFrame.js.map +1 -1
- package/dist/client/extensions/portable-extension.d.ts.map +1 -1
- package/dist/client/extensions/portable-extension.js +1 -0
- package/dist/client/extensions/portable-extension.js.map +1 -1
- package/dist/client/org/OrgSwitcher.d.ts +1 -1
- package/dist/client/org/OrgSwitcher.d.ts.map +1 -1
- package/dist/client/org/OrgSwitcher.js +11 -6
- package/dist/client/org/OrgSwitcher.js.map +1 -1
- package/dist/client/org/TeamPage.d.ts.map +1 -1
- package/dist/client/org/TeamPage.js +5 -5
- package/dist/client/org/TeamPage.js.map +1 -1
- package/dist/client/session-replay.d.ts +0 -8
- package/dist/client/session-replay.d.ts.map +1 -1
- package/dist/client/session-replay.js +3 -80
- 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 +89 -33
- package/dist/client/settings/SettingsPanel.js.map +1 -1
- package/dist/client/settings/SettingsSection.d.ts +19 -4
- package/dist/client/settings/SettingsSection.d.ts.map +1 -1
- package/dist/client/settings/SettingsSection.js +33 -4
- package/dist/client/settings/SettingsSection.js.map +1 -1
- package/dist/client/settings/SettingsTabsPage.d.ts.map +1 -1
- package/dist/client/settings/SettingsTabsPage.js +21 -10
- package/dist/client/settings/SettingsTabsPage.js.map +1 -1
- package/dist/client/sse-event-processor.d.ts +9 -0
- package/dist/client/sse-event-processor.d.ts.map +1 -1
- package/dist/client/sse-event-processor.js +20 -2
- package/dist/client/sse-event-processor.js.map +1 -1
- package/dist/db-admin/agent-tools.d.ts.map +1 -1
- package/dist/db-admin/agent-tools.js +7 -2
- package/dist/db-admin/agent-tools.js.map +1 -1
- package/dist/db-admin/operations.d.ts.map +1 -1
- package/dist/db-admin/operations.js +90 -4
- package/dist/db-admin/operations.js.map +1 -1
- package/dist/db-admin/routes.d.ts.map +1 -1
- package/dist/db-admin/routes.js +1 -0
- package/dist/db-admin/routes.js.map +1 -1
- package/dist/db-admin/types.d.ts +4 -0
- package/dist/db-admin/types.d.ts.map +1 -1
- package/dist/db-admin/types.js.map +1 -1
- package/dist/extensions/actions.d.ts.map +1 -1
- package/dist/extensions/actions.js +85 -5
- package/dist/extensions/actions.js.map +1 -1
- package/dist/extensions/html-shell.d.ts +5 -4
- package/dist/extensions/html-shell.d.ts.map +1 -1
- package/dist/extensions/html-shell.js.map +1 -1
- package/dist/extensions/routes.d.ts.map +1 -1
- package/dist/extensions/routes.js +8 -0
- package/dist/extensions/routes.js.map +1 -1
- package/dist/navigation/index.d.ts +1 -1
- package/dist/navigation/index.d.ts.map +1 -1
- package/dist/navigation/index.js +1 -1
- package/dist/navigation/index.js.map +1 -1
- package/dist/notifications/channels.d.ts +8 -3
- package/dist/notifications/channels.d.ts.map +1 -1
- package/dist/notifications/channels.js +61 -22
- package/dist/notifications/channels.js.map +1 -1
- package/dist/notifications/registry.d.ts.map +1 -1
- package/dist/notifications/registry.js +14 -3
- package/dist/notifications/registry.js.map +1 -1
- package/dist/notifications/types.d.ts +4 -1
- package/dist/notifications/types.d.ts.map +1 -1
- package/dist/notifications/types.js.map +1 -1
- package/dist/resources/handlers.d.ts +5 -0
- package/dist/resources/handlers.d.ts.map +1 -1
- package/dist/resources/handlers.js +9 -8
- package/dist/resources/handlers.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts +5 -1
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +2 -2
- 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/poll.d.ts +12 -4
- package/dist/server/poll.d.ts.map +1 -1
- package/dist/server/poll.js +236 -9
- package/dist/server/poll.js.map +1 -1
- package/dist/server/request-context.d.ts +7 -0
- package/dist/server/request-context.d.ts.map +1 -1
- package/dist/server/request-context.js.map +1 -1
- package/dist/styles/agent-conversation.css +1 -1
- package/dist/styles/agent-native.css +27 -0
- package/dist/templates/default/.agents/skills/actions/SKILL.md +5 -0
- package/dist/templates/default/.agents/skills/adding-a-feature/SKILL.md +5 -0
- package/dist/templates/default/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/dist/templates/default/.agents/skills/security/SKILL.md +7 -0
- package/dist/templates/default/.agents/skills/self-modifying-code/SKILL.md +20 -2
- package/dist/templates/default/.agents/skills/storing-data/SKILL.md +5 -1
- package/dist/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- package/dist/templates/default/AGENTS.md +14 -5
- package/dist/templates/default/package.json +2 -1
- package/dist/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- package/dist/templates/headless/AGENTS.md +13 -3
- package/dist/templates/headless/package.json +1 -0
- package/dist/templates/workspace-core/.agents/skills/actions/SKILL.md +5 -0
- package/dist/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +5 -0
- package/dist/templates/workspace-core/.agents/skills/context-awareness/SKILL.md +4 -0
- package/dist/templates/workspace-core/.agents/skills/extensions/SKILL.md +6 -0
- package/dist/templates/workspace-core/.agents/skills/performance/SKILL.md +4 -0
- package/dist/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/dist/templates/workspace-core/.agents/skills/security/SKILL.md +7 -0
- package/dist/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +20 -2
- package/dist/templates/workspace-core/.agents/skills/storing-data/SKILL.md +5 -1
- package/dist/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- package/dist/templates/workspace-core/AGENTS.md +7 -1
- package/dist/templates/workspace-root/AGENTS.md +17 -5
- package/dist/templates/workspace-root/package.json +1 -0
- package/docs/content/faq.mdx +17 -0
- package/docs/content/notifications.mdx +12 -6
- package/package.json +2 -2
- package/src/templates/default/.agents/skills/actions/SKILL.md +5 -0
- package/src/templates/default/.agents/skills/adding-a-feature/SKILL.md +5 -0
- package/src/templates/default/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/src/templates/default/.agents/skills/security/SKILL.md +7 -0
- package/src/templates/default/.agents/skills/self-modifying-code/SKILL.md +20 -2
- package/src/templates/default/.agents/skills/storing-data/SKILL.md +5 -1
- package/src/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- package/src/templates/default/AGENTS.md +14 -5
- package/src/templates/default/package.json +2 -1
- package/src/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- package/src/templates/headless/AGENTS.md +13 -3
- package/src/templates/headless/package.json +1 -0
- package/src/templates/workspace-core/.agents/skills/actions/SKILL.md +5 -0
- package/src/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +5 -0
- package/src/templates/workspace-core/.agents/skills/context-awareness/SKILL.md +4 -0
- package/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +6 -0
- package/src/templates/workspace-core/.agents/skills/performance/SKILL.md +4 -0
- package/src/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/src/templates/workspace-core/.agents/skills/security/SKILL.md +7 -0
- package/src/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +20 -2
- package/src/templates/workspace-core/.agents/skills/storing-data/SKILL.md +5 -1
- package/src/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- package/src/templates/workspace-core/AGENTS.md +7 -1
- package/src/templates/workspace-root/AGENTS.md +17 -5
- package/src/templates/workspace-root/package.json +1 -0
- package/corpus/templates/analytics/changelog/2026-07-08-session-replay-clamps-ultra-wide-viewports-while-keeping-the.md +0 -6
|
@@ -1,5 +1,36 @@
|
|
|
1
1
|
import { IconChevronDown, IconCheck } from "@tabler/icons-react";
|
|
2
|
-
import type
|
|
2
|
+
import { createContext, useContext, type ReactNode } from "react";
|
|
3
|
+
|
|
4
|
+
import { cn } from "../utils.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Where a settings section is being rendered.
|
|
8
|
+
*
|
|
9
|
+
* - `sidebar`: the compact agent sidebar panel (dense, small type).
|
|
10
|
+
* - `page`: the full-width settings page, styled as a polished card that
|
|
11
|
+
* matches the shadcn `Card` surface used by app-owned settings tabs.
|
|
12
|
+
*/
|
|
13
|
+
export type SettingsSurface = "sidebar" | "page";
|
|
14
|
+
|
|
15
|
+
const SettingsSurfaceContext = createContext<SettingsSurface>("sidebar");
|
|
16
|
+
|
|
17
|
+
export function SettingsSurfaceProvider({
|
|
18
|
+
surface,
|
|
19
|
+
children,
|
|
20
|
+
}: {
|
|
21
|
+
surface: SettingsSurface;
|
|
22
|
+
children: ReactNode;
|
|
23
|
+
}) {
|
|
24
|
+
return (
|
|
25
|
+
<SettingsSurfaceContext.Provider value={surface}>
|
|
26
|
+
{children}
|
|
27
|
+
</SettingsSurfaceContext.Provider>
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export function useSettingsSurface(): SettingsSurface {
|
|
32
|
+
return useContext(SettingsSurfaceContext);
|
|
33
|
+
}
|
|
3
34
|
|
|
4
35
|
interface SettingsSectionProps {
|
|
5
36
|
id?: string;
|
|
@@ -15,10 +46,133 @@ interface SettingsSectionProps {
|
|
|
15
46
|
}
|
|
16
47
|
|
|
17
48
|
/**
|
|
18
|
-
* Collapsible settings section
|
|
19
|
-
*
|
|
49
|
+
* Collapsible settings section. Renders as a compact row in the agent sidebar
|
|
50
|
+
* and as a polished, shadcn-style card on the full settings page (so the
|
|
51
|
+
* framework tabs match app-owned General/Team cards). The visual surface is
|
|
52
|
+
* read from `SettingsSurfaceContext`.
|
|
20
53
|
*/
|
|
21
|
-
export function SettingsSection({
|
|
54
|
+
export function SettingsSection(props: SettingsSectionProps) {
|
|
55
|
+
const surface = useSettingsSurface();
|
|
56
|
+
return surface === "page" ? (
|
|
57
|
+
<PageSettingsSection {...props} />
|
|
58
|
+
) : (
|
|
59
|
+
<SidebarSettingsSection {...props} />
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function ConnectedDot({ size }: { size: "sm" | "md" }) {
|
|
64
|
+
const dim = size === "sm" ? "h-4 w-4" : "h-5 w-5";
|
|
65
|
+
const stroke = size === "sm" ? 3 : 2.5;
|
|
66
|
+
const glyph = size === "sm" ? 10 : 12;
|
|
67
|
+
return (
|
|
68
|
+
<span
|
|
69
|
+
className={cn(
|
|
70
|
+
"flex shrink-0 items-center justify-center rounded-full bg-green-500/15 text-green-500",
|
|
71
|
+
dim,
|
|
72
|
+
)}
|
|
73
|
+
>
|
|
74
|
+
<IconCheck size={glyph} stroke={stroke} />
|
|
75
|
+
</span>
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
function StatusBadge({
|
|
80
|
+
label,
|
|
81
|
+
tone,
|
|
82
|
+
size,
|
|
83
|
+
}: {
|
|
84
|
+
label: string;
|
|
85
|
+
tone: "muted" | "required";
|
|
86
|
+
size: "sm" | "md";
|
|
87
|
+
}) {
|
|
88
|
+
return (
|
|
89
|
+
<span
|
|
90
|
+
className={cn(
|
|
91
|
+
"shrink-0 rounded-full font-semibold uppercase tracking-wide",
|
|
92
|
+
size === "sm" ? "px-1.5 py-0.5 text-[9px]" : "px-2 py-0.5 text-[10px]",
|
|
93
|
+
tone === "required"
|
|
94
|
+
? "bg-amber-500/15 text-amber-600 dark:text-amber-400"
|
|
95
|
+
: "bg-muted text-muted-foreground",
|
|
96
|
+
)}
|
|
97
|
+
>
|
|
98
|
+
{label}
|
|
99
|
+
</span>
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
function PageSettingsSection({
|
|
104
|
+
id,
|
|
105
|
+
icon,
|
|
106
|
+
title,
|
|
107
|
+
subtitle,
|
|
108
|
+
badge,
|
|
109
|
+
required,
|
|
110
|
+
connected,
|
|
111
|
+
open = false,
|
|
112
|
+
onToggle,
|
|
113
|
+
children,
|
|
114
|
+
}: SettingsSectionProps) {
|
|
115
|
+
return (
|
|
116
|
+
<div
|
|
117
|
+
id={id}
|
|
118
|
+
className={cn(
|
|
119
|
+
"scroll-mt-16 overflow-hidden rounded-lg border bg-card text-card-foreground shadow-sm transition-colors",
|
|
120
|
+
open ? "border-border" : "border-border/60",
|
|
121
|
+
)}
|
|
122
|
+
>
|
|
123
|
+
<button
|
|
124
|
+
type="button"
|
|
125
|
+
onClick={onToggle}
|
|
126
|
+
aria-expanded={open}
|
|
127
|
+
className="flex w-full items-start justify-between gap-4 px-5 py-4 text-start transition-colors hover:bg-muted/40 sm:px-6 sm:py-5"
|
|
128
|
+
>
|
|
129
|
+
<div className="flex min-w-0 items-start gap-3">
|
|
130
|
+
<span className="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md bg-muted text-muted-foreground [&>svg]:size-[18px]">
|
|
131
|
+
{icon}
|
|
132
|
+
</span>
|
|
133
|
+
<span className="flex min-w-0 flex-col gap-1.5">
|
|
134
|
+
<span className="flex flex-wrap items-center gap-2">
|
|
135
|
+
<span className="text-base font-semibold leading-none tracking-tight text-foreground">
|
|
136
|
+
{title}
|
|
137
|
+
</span>
|
|
138
|
+
{connected && <ConnectedDot size="md" />}
|
|
139
|
+
{required && !connected && (
|
|
140
|
+
<StatusBadge label="Required" tone="required" size="md" />
|
|
141
|
+
)}
|
|
142
|
+
{badge && <StatusBadge label={badge} tone="muted" size="md" />}
|
|
143
|
+
</span>
|
|
144
|
+
{subtitle && (
|
|
145
|
+
<span className="text-sm leading-snug text-muted-foreground">
|
|
146
|
+
{subtitle}
|
|
147
|
+
</span>
|
|
148
|
+
)}
|
|
149
|
+
</span>
|
|
150
|
+
</div>
|
|
151
|
+
<IconChevronDown
|
|
152
|
+
size={18}
|
|
153
|
+
className={cn(
|
|
154
|
+
"mt-1 shrink-0 text-muted-foreground transition-transform",
|
|
155
|
+
open && "rotate-180",
|
|
156
|
+
)}
|
|
157
|
+
/>
|
|
158
|
+
</button>
|
|
159
|
+
{open && (
|
|
160
|
+
<div
|
|
161
|
+
// `data-agent-native-settings-page` lets the shared stylesheet nudge
|
|
162
|
+
// the smallest fixed type (authored dense for the compact sidebar) up
|
|
163
|
+
// to a comfortable, consistent size on the full settings page so every
|
|
164
|
+
// framework section body reads like the shadcn cards around it.
|
|
165
|
+
data-agent-native-settings-page=""
|
|
166
|
+
className="border-t border-border/60 px-5 pb-5 pt-5 sm:px-6 sm:pb-6"
|
|
167
|
+
>
|
|
168
|
+
{children}
|
|
169
|
+
</div>
|
|
170
|
+
)}
|
|
171
|
+
</div>
|
|
172
|
+
);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
function SidebarSettingsSection({
|
|
22
176
|
id,
|
|
23
177
|
icon,
|
|
24
178
|
title,
|
|
@@ -42,21 +196,11 @@ export function SettingsSection({
|
|
|
42
196
|
<span className="text-[12px] font-medium text-foreground truncate">
|
|
43
197
|
{title}
|
|
44
198
|
</span>
|
|
45
|
-
{connected &&
|
|
46
|
-
<span className="flex items-center justify-center shrink-0 rounded-full bg-green-500/15 text-green-500 w-4 h-4">
|
|
47
|
-
<IconCheck size={10} stroke={3} />
|
|
48
|
-
</span>
|
|
49
|
-
)}
|
|
199
|
+
{connected && <ConnectedDot size="sm" />}
|
|
50
200
|
{required && !connected && (
|
|
51
|
-
<
|
|
52
|
-
Required
|
|
53
|
-
</span>
|
|
54
|
-
)}
|
|
55
|
-
{badge && (
|
|
56
|
-
<span className="shrink-0 rounded-full bg-accent/60 px-1.5 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-muted-foreground">
|
|
57
|
-
{badge}
|
|
58
|
-
</span>
|
|
201
|
+
<StatusBadge label="Required" tone="muted" size="sm" />
|
|
59
202
|
)}
|
|
203
|
+
{badge && <StatusBadge label={badge} tone="muted" size="sm" />}
|
|
60
204
|
</div>
|
|
61
205
|
<IconChevronDown
|
|
62
206
|
size={12}
|
|
@@ -115,20 +115,33 @@ function normalizeTabId(value?: string | null): string | null {
|
|
|
115
115
|
if (normalized === "workspace" || normalized === "workspace-settings") {
|
|
116
116
|
return "workspace";
|
|
117
117
|
}
|
|
118
|
-
if (normalized === "organization" || normalized === "org") {
|
|
119
|
-
return "team";
|
|
120
|
-
}
|
|
121
118
|
return normalized;
|
|
122
119
|
}
|
|
123
120
|
|
|
121
|
+
function resolveTabId(
|
|
122
|
+
tabs: SettingsTabItem[],
|
|
123
|
+
value?: string | null,
|
|
124
|
+
): string | null {
|
|
125
|
+
const normalized = normalizeTabId(value);
|
|
126
|
+
if (!normalized) return null;
|
|
127
|
+
if (tabs.some((tab) => tab.id === normalized)) return normalized;
|
|
128
|
+
if (
|
|
129
|
+
normalized === "organization" ||
|
|
130
|
+
normalized === "org" ||
|
|
131
|
+
normalized === "team"
|
|
132
|
+
) {
|
|
133
|
+
if (tabs.some((tab) => tab.id === "organization")) return "organization";
|
|
134
|
+
if (tabs.some((tab) => tab.id === "team")) return "team";
|
|
135
|
+
}
|
|
136
|
+
return null;
|
|
137
|
+
}
|
|
138
|
+
|
|
124
139
|
function activeTabFromHash(
|
|
125
140
|
tabs: SettingsTabItem[],
|
|
126
141
|
defaultTab: string,
|
|
127
142
|
): string {
|
|
128
143
|
if (typeof window === "undefined") return defaultTab;
|
|
129
|
-
|
|
130
|
-
if (fromHash && tabs.some((tab) => tab.id === fromHash)) return fromHash;
|
|
131
|
-
return defaultTab;
|
|
144
|
+
return resolveTabId(tabs, window.location.hash) ?? defaultTab;
|
|
132
145
|
}
|
|
133
146
|
|
|
134
147
|
function updateHashForTab(tabId: string) {
|
|
@@ -159,6 +172,9 @@ export function SettingsTabsPage({
|
|
|
159
172
|
onValueChange,
|
|
160
173
|
}: SettingsTabsPageProps) {
|
|
161
174
|
const tabs = useMemo<SettingsTabItem[]>(() => {
|
|
175
|
+
const hasOrganizationTab = extraTabs.some(
|
|
176
|
+
(tab) => tab.id === "organization",
|
|
177
|
+
);
|
|
162
178
|
const next: SettingsTabItem[] = [
|
|
163
179
|
{
|
|
164
180
|
id: "general",
|
|
@@ -169,7 +185,7 @@ export function SettingsTabsPage({
|
|
|
169
185
|
},
|
|
170
186
|
];
|
|
171
187
|
next.push(...extraTabs);
|
|
172
|
-
if (team) {
|
|
188
|
+
if (team && !hasOrganizationTab) {
|
|
173
189
|
next.push({
|
|
174
190
|
id: "team",
|
|
175
191
|
label: teamLabel,
|
|
@@ -229,8 +245,8 @@ export function SettingsTabsPage({
|
|
|
229
245
|
// the active tab untouched to avoid bouncing back to General.
|
|
230
246
|
if (isControlled) return;
|
|
231
247
|
const handleHashChange = () => {
|
|
232
|
-
const fromHash =
|
|
233
|
-
if (fromHash
|
|
248
|
+
const fromHash = resolveTabId(tabs, window.location.hash);
|
|
249
|
+
if (fromHash) {
|
|
234
250
|
setInternalTab(fromHash);
|
|
235
251
|
}
|
|
236
252
|
};
|
|
@@ -15,6 +15,16 @@ import {
|
|
|
15
15
|
|
|
16
16
|
export type ContentPart =
|
|
17
17
|
| { type: "text"; text: string }
|
|
18
|
+
| {
|
|
19
|
+
/**
|
|
20
|
+
* Model chain-of-thought / extended-thinking prose. Streamed from
|
|
21
|
+
* server `thinking` SSE events (and code-agent thinking transcript
|
|
22
|
+
* items). Rendered as a collapsible plain-English cell — not a tool
|
|
23
|
+
* call.
|
|
24
|
+
*/
|
|
25
|
+
type: "reasoning";
|
|
26
|
+
text: string;
|
|
27
|
+
}
|
|
18
28
|
| {
|
|
19
29
|
type: "tool-call";
|
|
20
30
|
toolCallId: string;
|
|
@@ -669,7 +679,7 @@ function pendingToolNames(content: ContentPart[]): {
|
|
|
669
679
|
|
|
670
680
|
function contentSnapshot(content: ContentPart[]): ContentPart[] {
|
|
671
681
|
return content.map((part) => {
|
|
672
|
-
if (part.type === "text") return { ...part };
|
|
682
|
+
if (part.type === "text" || part.type === "reasoning") return { ...part };
|
|
673
683
|
return {
|
|
674
684
|
...part,
|
|
675
685
|
args: { ...part.args },
|
|
@@ -952,6 +962,23 @@ export function processEvent(
|
|
|
952
962
|
};
|
|
953
963
|
}
|
|
954
964
|
|
|
965
|
+
if (ev.type === "thinking") {
|
|
966
|
+
// Model chain-of-thought. Coalesce consecutive deltas into one reasoning
|
|
967
|
+
// part so the UI can render a single collapsible "Thinking" cell.
|
|
968
|
+
const delta = ev.text ?? "";
|
|
969
|
+
if (!delta) return { action: "continue" };
|
|
970
|
+
const lastPart = content[content.length - 1];
|
|
971
|
+
if (lastPart && lastPart.type === "reasoning") {
|
|
972
|
+
lastPart.text += delta;
|
|
973
|
+
} else {
|
|
974
|
+
content.push({ type: "reasoning", text: delta });
|
|
975
|
+
}
|
|
976
|
+
return {
|
|
977
|
+
action: "yield",
|
|
978
|
+
result: { content: contentSnapshot(content) } as ChatModelRunResult,
|
|
979
|
+
};
|
|
980
|
+
}
|
|
981
|
+
|
|
955
982
|
if (ev.type === "stream_keepalive") {
|
|
956
983
|
return { action: "continue" };
|
|
957
984
|
}
|
|
@@ -1400,7 +1427,7 @@ function clearAssistantDraftContent(content: ContentPart[]): void {
|
|
|
1400
1427
|
for (let index = content.length - 1; index >= 0; index--) {
|
|
1401
1428
|
const part = content[index];
|
|
1402
1429
|
if (!part) continue;
|
|
1403
|
-
if (part.type === "text") {
|
|
1430
|
+
if (part.type === "text" || part.type === "reasoning") {
|
|
1404
1431
|
content.splice(index, 1);
|
|
1405
1432
|
continue;
|
|
1406
1433
|
}
|
|
@@ -65,7 +65,7 @@ export function createDbAdminAgentTools(): Record<string, ActionEntry> {
|
|
|
65
65
|
"db-admin-rows": {
|
|
66
66
|
tool: {
|
|
67
67
|
description:
|
|
68
|
-
|
|
68
|
+
'DEV ONLY. Read rows from one table (unscoped) with pagination, sorting, and filters. Large text/JSON cells are previewed by default; pass includeLargeCells: "true" only when you need the full value.',
|
|
69
69
|
parameters: {
|
|
70
70
|
type: "object",
|
|
71
71
|
properties: {
|
|
@@ -88,6 +88,11 @@ export function createDbAdminAgentTools(): Record<string, ActionEntry> {
|
|
|
88
88
|
description:
|
|
89
89
|
'JSON array of filters, e.g. \'[{"column":"status","op":"eq","value":"draft"}]\'. Ops: eq, neq, lt, lte, gt, gte, like, ilike, in, is_null, not_null.',
|
|
90
90
|
},
|
|
91
|
+
includeLargeCells: {
|
|
92
|
+
type: "string",
|
|
93
|
+
description:
|
|
94
|
+
'Set to "true" to return full large text/JSON cells instead of previews.',
|
|
95
|
+
},
|
|
91
96
|
},
|
|
92
97
|
required: ["table"],
|
|
93
98
|
},
|
|
@@ -99,6 +104,7 @@ export function createDbAdminAgentTools(): Record<string, ActionEntry> {
|
|
|
99
104
|
pageSize: Number(args.pageSize) || 50,
|
|
100
105
|
sort: parseJson<DbAdminSort[]>(args.sort, "sort"),
|
|
101
106
|
filters: parseJson<DbAdminFilter[]>(args.filters, "filters"),
|
|
107
|
+
includeLargeCells: String(args.includeLargeCells) === "true",
|
|
102
108
|
});
|
|
103
109
|
return JSON.stringify(result);
|
|
104
110
|
},
|
|
@@ -158,7 +164,7 @@ export function createDbAdminAgentTools(): Record<string, ActionEntry> {
|
|
|
158
164
|
"db-admin-query": {
|
|
159
165
|
tool: {
|
|
160
166
|
description:
|
|
161
|
-
'DEV ONLY. Run arbitrary SQL against the full database (unscoped). PREFER
|
|
167
|
+
'DEV ONLY. Run arbitrary SQL against the full database (unscoped). PREFER this over db-query/db-exec for database-admin work and for tables without owner_email/org_id scoping. Bare SELECTs are auto-limited to 100 rows, and large string cells are truncated in the tool result. Destructive statements require confirmDestructive: "true".',
|
|
162
168
|
parameters: {
|
|
163
169
|
type: "object",
|
|
164
170
|
properties: {
|
|
@@ -40,6 +40,9 @@ import type {
|
|
|
40
40
|
// ---------------------------------------------------------------------------
|
|
41
41
|
|
|
42
42
|
const IDENT_RE = /^[A-Za-z_][A-Za-z0-9_]*$/;
|
|
43
|
+
const LARGE_CELL_PREVIEW_CHARS = 16 * 1024;
|
|
44
|
+
const LARGE_CELL_SUFFIX =
|
|
45
|
+
"\n...[db-admin truncated large cell; request includeLargeCells=true for the full value]";
|
|
43
46
|
|
|
44
47
|
export interface DbAdminRuntime {
|
|
45
48
|
db?: DbExec;
|
|
@@ -72,6 +75,103 @@ function isPostgresRuntime(runtime?: DbAdminRuntime): boolean {
|
|
|
72
75
|
return dialect(runtime) === "postgres";
|
|
73
76
|
}
|
|
74
77
|
|
|
78
|
+
function isPreviewableLargeColumn(column: DbAdminColumn): boolean {
|
|
79
|
+
const type = column.type.toLowerCase();
|
|
80
|
+
return /\b(text|char|varchar|character|jsonb?|xml|clob)\b/.test(type);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
function markLargeValuePreviewColumns(
|
|
84
|
+
columns: DbAdminColumn[],
|
|
85
|
+
includeLargeCells: boolean,
|
|
86
|
+
): DbAdminColumn[] {
|
|
87
|
+
if (includeLargeCells) return columns;
|
|
88
|
+
return columns.map((column) =>
|
|
89
|
+
isPreviewableLargeColumn(column)
|
|
90
|
+
? { ...column, largeValuePreview: true }
|
|
91
|
+
: column,
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function buildRowsSelectList(
|
|
96
|
+
columns: DbAdminColumn[],
|
|
97
|
+
includeLargeCells: boolean,
|
|
98
|
+
): string {
|
|
99
|
+
if (includeLargeCells) {
|
|
100
|
+
return columns.map((column) => quoteIdent(column.name)).join(", ");
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return columns
|
|
104
|
+
.map((column) => {
|
|
105
|
+
const quoted = quoteIdent(column.name);
|
|
106
|
+
if (!isPreviewableLargeColumn(column)) return quoted;
|
|
107
|
+
const textValue = `CAST(${quoted} AS TEXT)`;
|
|
108
|
+
return `CASE WHEN length(${textValue}) > ${LARGE_CELL_PREVIEW_CHARS} THEN substr(${textValue}, 1, ${LARGE_CELL_PREVIEW_CHARS}) || '${LARGE_CELL_SUFFIX.replace(/'/g, "''")}' ELSE ${textValue} END AS ${quoted}`;
|
|
109
|
+
})
|
|
110
|
+
.join(", ");
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
function truncateLargeResultCells(rows: Record<string, unknown>[]): {
|
|
114
|
+
rows: Record<string, unknown>[];
|
|
115
|
+
truncatedCells: number;
|
|
116
|
+
} {
|
|
117
|
+
let truncatedCells = 0;
|
|
118
|
+
const mapped = rows.map((row) => {
|
|
119
|
+
let changed = false;
|
|
120
|
+
const next: Record<string, unknown> = {};
|
|
121
|
+
for (const [key, value] of Object.entries(row)) {
|
|
122
|
+
if (
|
|
123
|
+
typeof value === "string" &&
|
|
124
|
+
value.length > LARGE_CELL_PREVIEW_CHARS
|
|
125
|
+
) {
|
|
126
|
+
next[key] =
|
|
127
|
+
`${value.slice(0, LARGE_CELL_PREVIEW_CHARS)}${LARGE_CELL_SUFFIX}`;
|
|
128
|
+
truncatedCells += 1;
|
|
129
|
+
changed = true;
|
|
130
|
+
} else {
|
|
131
|
+
next[key] = value;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return changed ? next : row;
|
|
135
|
+
});
|
|
136
|
+
return { rows: mapped, truncatedCells };
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
function countTruncatedResultCells(rows: Record<string, unknown>[]): number {
|
|
140
|
+
let truncatedCells = 0;
|
|
141
|
+
for (const row of rows) {
|
|
142
|
+
for (const value of Object.values(row)) {
|
|
143
|
+
if (typeof value === "string" && value.endsWith(LARGE_CELL_SUFFIX)) {
|
|
144
|
+
truncatedCells += 1;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return truncatedCells;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
function containsLargeCellPreview(value: unknown): boolean {
|
|
152
|
+
if (typeof value === "string") return value.endsWith(LARGE_CELL_SUFFIX);
|
|
153
|
+
if (Array.isArray(value)) return value.some(containsLargeCellPreview);
|
|
154
|
+
if (value && typeof value === "object") {
|
|
155
|
+
return Object.values(value as Record<string, unknown>).some(
|
|
156
|
+
containsLargeCellPreview,
|
|
157
|
+
);
|
|
158
|
+
}
|
|
159
|
+
return false;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
function assertNoLargeCellPreviewMutation(
|
|
163
|
+
row: Record<string, unknown>,
|
|
164
|
+
context: string,
|
|
165
|
+
): void {
|
|
166
|
+
for (const [column, value] of Object.entries(row)) {
|
|
167
|
+
if (containsLargeCellPreview(value)) {
|
|
168
|
+
throw new Error(
|
|
169
|
+
`Refusing to ${context} with previewed large-cell value in column "${column}". Reload the row with includeLargeCells=true before saving.`,
|
|
170
|
+
);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
75
175
|
// ---------------------------------------------------------------------------
|
|
76
176
|
// Notify the UI after a real mutation so polling refetches.
|
|
77
177
|
// ---------------------------------------------------------------------------
|
|
@@ -469,6 +569,8 @@ export async function getRows(
|
|
|
469
569
|
const where = buildWhere(req.filters, runtime);
|
|
470
570
|
const orderBy = buildOrderBy(req.sort);
|
|
471
571
|
const quoted = quoteIdent(table);
|
|
572
|
+
const includeLargeCells = req.includeLargeCells === true;
|
|
573
|
+
const selectList = buildRowsSelectList(schema.columns, includeLargeCells);
|
|
472
574
|
|
|
473
575
|
const countRes = await client.execute({
|
|
474
576
|
sql: `SELECT COUNT(*) AS c FROM ${quoted}${where.clause}`,
|
|
@@ -477,16 +579,18 @@ export async function getRows(
|
|
|
477
579
|
const total = Number((countRes.rows[0] as any)?.c ?? 0) || 0;
|
|
478
580
|
|
|
479
581
|
const rowsRes = await client.execute({
|
|
480
|
-
sql: `SELECT
|
|
582
|
+
sql: `SELECT ${selectList} FROM ${quoted}${where.clause}${orderBy} LIMIT ? OFFSET ?`,
|
|
481
583
|
args: [...where.args, pageSize, offset],
|
|
482
584
|
});
|
|
585
|
+
const rows = rowsRes.rows as Record<string, unknown>[];
|
|
483
586
|
|
|
484
587
|
return {
|
|
485
|
-
columns: schema.columns,
|
|
486
|
-
rows
|
|
588
|
+
columns: markLargeValuePreviewColumns(schema.columns, includeLargeCells),
|
|
589
|
+
rows,
|
|
487
590
|
total,
|
|
488
591
|
page,
|
|
489
592
|
pageSize,
|
|
593
|
+
truncatedCells: includeLargeCells ? 0 : countTruncatedResultCells(rows),
|
|
490
594
|
};
|
|
491
595
|
}
|
|
492
596
|
|
|
@@ -502,6 +606,7 @@ function buildInsert(
|
|
|
502
606
|
if (cols.length === 0) {
|
|
503
607
|
throw new Error("Cannot insert an empty row");
|
|
504
608
|
}
|
|
609
|
+
assertNoLargeCellPreviewMutation(row, "insert");
|
|
505
610
|
cols.forEach((c) => assertIdent(c, "column name"));
|
|
506
611
|
const sql = `INSERT INTO ${quoteIdent(table)} (${cols
|
|
507
612
|
.map(quoteIdent)
|
|
@@ -520,6 +625,8 @@ function buildUpdate(
|
|
|
520
625
|
if (whereCols.length === 0) {
|
|
521
626
|
throw new Error("Update requires a non-empty where clause");
|
|
522
627
|
}
|
|
628
|
+
assertNoLargeCellPreviewMutation(set, "update");
|
|
629
|
+
assertNoLargeCellPreviewMutation(where, "match rows");
|
|
523
630
|
setCols.forEach((c) => assertIdent(c, "column name"));
|
|
524
631
|
whereCols.forEach((c) => assertIdent(c, "column name"));
|
|
525
632
|
const setSql = setCols.map((c) => `${quoteIdent(c)} = ?`).join(", ");
|
|
@@ -539,6 +646,7 @@ function buildDelete(
|
|
|
539
646
|
if (whereCols.length === 0) {
|
|
540
647
|
throw new Error("Delete requires a non-empty where clause");
|
|
541
648
|
}
|
|
649
|
+
assertNoLargeCellPreviewMutation(where, "delete");
|
|
542
650
|
whereCols.forEach((c) => assertIdent(c, "column name"));
|
|
543
651
|
const whereSql = whereCols.map((c) => `${quoteIdent(c)} = ?`).join(" AND ");
|
|
544
652
|
const sql = `DELETE FROM ${quoteIdent(table)} WHERE ${whereSql}`;
|
|
@@ -674,7 +782,10 @@ export async function runSql(
|
|
|
674
782
|
);
|
|
675
783
|
const durationMs = Date.now() - started;
|
|
676
784
|
|
|
677
|
-
const
|
|
785
|
+
const truncation = truncateLargeResultCells(
|
|
786
|
+
(res.rows ?? []) as Record<string, unknown>[],
|
|
787
|
+
);
|
|
788
|
+
const rows = truncation.rows;
|
|
678
789
|
const columns =
|
|
679
790
|
rows.length > 0 && rows[0] && typeof rows[0] === "object"
|
|
680
791
|
? Object.keys(rows[0])
|
|
@@ -687,5 +798,6 @@ export async function runSql(
|
|
|
687
798
|
rows,
|
|
688
799
|
rowsAffected: res.rowsAffected ?? 0,
|
|
689
800
|
durationMs,
|
|
801
|
+
truncatedCells: truncation.truncatedCells,
|
|
690
802
|
};
|
|
691
803
|
}
|
|
@@ -15,6 +15,7 @@ export interface DbAdminColumn {
|
|
|
15
15
|
pk: boolean;
|
|
16
16
|
defaultValue: string | null;
|
|
17
17
|
autoIncrement?: boolean;
|
|
18
|
+
largeValuePreview?: boolean;
|
|
18
19
|
}
|
|
19
20
|
|
|
20
21
|
export interface DbAdminForeignKey {
|
|
@@ -74,6 +75,7 @@ export interface DbAdminRowsRequest {
|
|
|
74
75
|
pageSize: number;
|
|
75
76
|
sort?: DbAdminSort[];
|
|
76
77
|
filters?: DbAdminFilter[];
|
|
78
|
+
includeLargeCells?: boolean;
|
|
77
79
|
}
|
|
78
80
|
|
|
79
81
|
export interface DbAdminRowsResult {
|
|
@@ -82,6 +84,7 @@ export interface DbAdminRowsResult {
|
|
|
82
84
|
total: number;
|
|
83
85
|
page: number;
|
|
84
86
|
pageSize: number;
|
|
87
|
+
truncatedCells?: number;
|
|
85
88
|
}
|
|
86
89
|
|
|
87
90
|
export interface DbAdminMutation {
|
|
@@ -103,4 +106,5 @@ export interface DbAdminQueryResult {
|
|
|
103
106
|
rows: Record<string, unknown>[];
|
|
104
107
|
rowsAffected: number;
|
|
105
108
|
durationMs: number;
|
|
109
|
+
truncatedCells?: number;
|
|
106
110
|
}
|