@agent-native/core 0.83.0 → 0.84.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/corpus/README.md +1 -1
- package/corpus/core/CHANGELOG.md +28 -0
- package/corpus/core/README.md +2 -2
- package/corpus/core/docs/content/cloneable-saas.mdx +2 -2
- package/corpus/core/docs/content/faq.mdx +1 -1
- package/corpus/core/docs/content/locales/ar-SA/cloneable-saas.mdx +2 -2
- package/corpus/core/docs/content/locales/ar-SA/faq.mdx +1 -1
- package/corpus/core/docs/content/locales/ar-SA/template-chat.mdx +1 -1
- package/corpus/core/docs/content/locales/de-DE/cloneable-saas.mdx +2 -2
- package/corpus/core/docs/content/locales/de-DE/faq.mdx +1 -1
- package/corpus/core/docs/content/locales/de-DE/template-chat.mdx +1 -1
- package/corpus/core/docs/content/locales/es-ES/cloneable-saas.mdx +2 -2
- package/corpus/core/docs/content/locales/es-ES/faq.mdx +1 -1
- package/corpus/core/docs/content/locales/es-ES/template-chat.mdx +1 -1
- package/corpus/core/docs/content/locales/fr-FR/cloneable-saas.mdx +2 -2
- package/corpus/core/docs/content/locales/fr-FR/faq.mdx +1 -1
- package/corpus/core/docs/content/locales/fr-FR/template-chat.mdx +1 -1
- package/corpus/core/docs/content/locales/hi-IN/cloneable-saas.mdx +2 -2
- package/corpus/core/docs/content/locales/hi-IN/faq.mdx +1 -1
- package/corpus/core/docs/content/locales/hi-IN/template-chat.mdx +1 -1
- package/corpus/core/docs/content/locales/ja-JP/cloneable-saas.mdx +2 -2
- package/corpus/core/docs/content/locales/ja-JP/faq.mdx +1 -1
- package/corpus/core/docs/content/locales/ja-JP/template-chat.mdx +1 -1
- package/corpus/core/docs/content/locales/ko-KR/cloneable-saas.mdx +2 -2
- package/corpus/core/docs/content/locales/ko-KR/faq.mdx +1 -1
- package/corpus/core/docs/content/locales/ko-KR/template-chat.mdx +1 -1
- package/corpus/core/docs/content/locales/pt-BR/cloneable-saas.mdx +2 -2
- package/corpus/core/docs/content/locales/pt-BR/faq.mdx +1 -1
- package/corpus/core/docs/content/locales/pt-BR/template-chat.mdx +1 -1
- package/corpus/core/docs/content/locales/zh-CN/cloneable-saas.mdx +2 -2
- package/corpus/core/docs/content/locales/zh-CN/faq.mdx +1 -1
- package/corpus/core/docs/content/locales/zh-CN/template-chat.mdx +1 -1
- package/corpus/core/docs/content/locales/zh-TW/cloneable-saas.mdx +2 -2
- package/corpus/core/docs/content/locales/zh-TW/faq.mdx +1 -1
- package/corpus/core/docs/content/locales/zh-TW/template-chat.mdx +1 -1
- package/corpus/core/docs/content/template-chat.mdx +1 -1
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/agent/engine/builtin.ts +1 -1
- package/corpus/core/src/agent/engine/output-tokens.ts +1 -1
- package/corpus/core/src/agent/harness/acp-adapter.ts +28 -4
- package/corpus/core/src/agent/harness/ai-sdk-adapter.ts +3 -0
- package/corpus/core/src/agent/harness/translate.ts +3 -0
- package/corpus/core/src/agent/harness/types.ts +1 -0
- package/corpus/core/src/agent/model-config.ts +34 -13
- package/corpus/core/src/agent/production-agent.ts +87 -10
- package/corpus/core/src/agent/thread-data-builder.ts +29 -4
- package/corpus/core/src/agent/tool-call-journal.ts +109 -48
- package/corpus/core/src/agent/types.ts +6 -1
- package/corpus/core/src/cli/design-connect.ts +106 -0
- package/corpus/core/src/cli/gateway-helpers.ts +17 -0
- package/corpus/core/src/cli/recap.ts +0 -2
- package/corpus/core/src/cli/skills.ts +54 -16
- package/corpus/core/src/cli/workspace-dev.ts +29 -5
- package/corpus/core/src/client/AssistantChat.tsx +89 -42
- package/corpus/core/src/client/DefaultSpinner.tsx +8 -1
- package/corpus/core/src/client/chat/message-components.tsx +49 -1
- package/corpus/core/src/client/chat/repo-helpers.ts +71 -0
- package/corpus/core/src/client/chat/run-recovery.tsx +15 -5
- package/corpus/core/src/client/components/ApiKeySettings.tsx +8 -8
- package/corpus/core/src/client/components/CodeRequiredDialog.tsx +26 -15
- package/corpus/core/src/client/components/MissingKeyCard.tsx +13 -6
- package/corpus/core/src/client/composer/TiptapComposer.tsx +4 -3
- package/corpus/core/src/client/extensions/ExtensionsSidebarSection.tsx +0 -1
- package/corpus/core/src/client/guided-questions.tsx +21 -27
- package/corpus/core/src/client/integrations/IntegrationCard.tsx +1 -1
- package/corpus/core/src/client/integrations/IntegrationsPanel.tsx +1 -1
- package/corpus/core/src/client/onboarding/OnboardingBanner.tsx +2 -2
- package/corpus/core/src/client/onboarding/OnboardingPanel.tsx +23 -19
- package/corpus/core/src/client/resources/ResourceEditor.tsx +18 -10
- package/corpus/core/src/client/resources/ResourcesPanel.tsx +5 -1
- package/corpus/core/src/client/settings/SettingsPanel.tsx +8 -3
- package/corpus/core/src/client/settings/useBuilderStatus.ts +8 -41
- package/corpus/core/src/client/useProductionAgent.ts +6 -2
- package/corpus/core/src/deploy/build.ts +1 -1
- package/corpus/core/src/observability/traces.ts +3 -3
- package/corpus/core/src/onboarding/default-steps.ts +1 -1
- package/corpus/core/src/scripts/agent-engines/manage-agent-engine.ts +1 -1
- package/corpus/core/src/scripts/agent-engines/set-agent-engine.ts +1 -1
- package/corpus/core/src/server/agent-chat-plugin.ts +177 -81
- package/corpus/core/src/server/core-routes-plugin.ts +7 -1
- package/corpus/core/src/server/open-route.ts +59 -40
- package/corpus/core/src/shared/reasoning-effort.ts +2 -0
- package/corpus/core/src/sharing/access.ts +22 -2
- package/corpus/core/src/sharing/registry.ts +18 -0
- package/corpus/core/src/styles/agent-native.css +104 -20
- package/corpus/core/src/styles/rich-markdown-editor.css +11 -10
- package/corpus/templates/analytics/app/components/dashboard/CumulativeNetChart.tsx +10 -10
- package/corpus/templates/analytics/app/components/dashboard/RevenueChart.tsx +10 -10
- package/corpus/templates/analytics/app/components/dashboard/RevenueComparisonChart.tsx +6 -5
- package/corpus/templates/analytics/app/components/dashboard/TimeSeriesChart.tsx +9 -9
- package/corpus/templates/analytics/app/global.css +4 -0
- package/corpus/templates/analytics/app/lib/chart-theme.ts +13 -0
- package/corpus/templates/analytics/app/pages/adhoc/_shared/KpiChart.tsx +22 -24
- package/corpus/templates/analytics/changelog/2026-06-30-dashboard-charts-now-use-theme-aware-tooltip-and-grid-colors.md +6 -0
- package/corpus/templates/analytics/changelog/2026-06-30-fixed-ask-composer-spacing-so-the-chat-field-has-a-comfortab.md +6 -0
- package/corpus/templates/calendar/AGENTS.md +4 -0
- package/corpus/templates/calendar/actions/connect-google-calendar.ts +80 -0
- package/corpus/templates/calendar/changelog/2026-06-30-calendar-now-gives-the-agent-a-safe-google-connection-link-i.md +6 -0
- package/corpus/templates/calendar/server/plugins/agent-chat.ts +4 -0
- package/corpus/templates/content/app/components/editor/BubbleToolbar.tsx +5 -5
- package/corpus/templates/content/app/global.css +6 -5
- package/corpus/templates/content/changelog/2026-06-30-editor-floating-toolbars-now-use-theme-aware-colors-in-light.md +6 -0
- package/corpus/templates/design/.agents/skills/visual-edit/SKILL.md +6 -1
- package/corpus/templates/design/actions/add-localhost-screens.ts +63 -8
- package/corpus/templates/design/actions/apply-motion-edit.ts +12 -46
- package/corpus/templates/design/actions/list-design-native-assets.ts +2 -1
- package/corpus/templates/design/actions/migrate-board-objects-to-file.ts +49 -1
- package/corpus/templates/design/actions/navigate.ts +3 -12
- package/corpus/templates/design/actions/open-visual-edit.ts +341 -0
- package/corpus/templates/design/actions/view-screen.ts +1 -1
- package/corpus/templates/design/app/components/design/CanvasContextMenu.tsx +1 -1
- package/corpus/templates/design/app/components/design/DesignCanvas.tsx +345 -14
- package/corpus/templates/design/app/components/design/DesignEditorSkeleton.tsx +71 -91
- package/corpus/templates/design/app/components/design/DesignExtensionsPanel.tsx +25 -27
- package/corpus/templates/design/app/components/design/DeviceFrame.tsx +1 -1
- package/corpus/templates/design/app/components/design/DrawOverlay.tsx +2 -2
- package/corpus/templates/design/app/components/design/EditPanel.tsx +1111 -570
- package/corpus/templates/design/app/components/design/LayersPanel.tsx +162 -32
- package/corpus/templates/design/app/components/design/MotionDock.tsx +268 -240
- package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +1038 -150
- package/corpus/templates/design/app/components/design/QuestionFlow.tsx +1 -1
- package/corpus/templates/design/app/components/design/ReviewPanel.tsx +81 -102
- package/corpus/templates/design/app/components/design/StatesPanel.tsx +6 -6
- package/corpus/templates/design/app/components/design/TokensPanel.tsx +11 -11
- package/corpus/templates/design/app/components/design/TweaksPanel.tsx +9 -7
- package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +1129 -155
- package/corpus/templates/design/app/components/design/bridge/hit-test.bridge.ts +130 -37
- package/corpus/templates/design/app/components/design/canvas-primitive-style.ts +24 -11
- package/corpus/templates/design/app/components/design/inspector/AutoLayoutMatrix.tsx +184 -162
- package/corpus/templates/design/app/components/design/inspector/ConstraintsWidget.tsx +137 -79
- package/corpus/templates/design/app/components/design/inspector/DesignColorPicker.tsx +13 -13
- package/corpus/templates/design/app/components/design/inspector/ExportSettingsPanel.tsx +8 -8
- package/corpus/templates/design/app/components/design/inspector/GradientEditor.tsx +2 -2
- package/corpus/templates/design/app/components/design/inspector/ImageFillControls.tsx +4 -4
- package/corpus/templates/design/app/components/design/inspector/InspectorAiActions.tsx +3 -3
- package/corpus/templates/design/app/components/design/inspector/ScrubInput.tsx +13 -7
- package/corpus/templates/design/app/components/design/inspector/ShaderControls.tsx +14 -11
- package/corpus/templates/design/app/components/design/inspector/ShaderFillsPanel.tsx +4 -4
- package/corpus/templates/design/app/components/design/inspector/index.ts +2 -0
- package/corpus/templates/design/app/components/design/types.ts +19 -0
- package/corpus/templates/design/app/components/editor/PromptDialog.tsx +61 -78
- package/corpus/templates/design/app/components/layout/Header.tsx +0 -1
- package/corpus/templates/design/app/components/layout/Layout.tsx +3 -2
- package/corpus/templates/design/app/components/layout/Sidebar.tsx +0 -2
- package/corpus/templates/design/app/components/visual-editor/CanvasCommentPins.tsx +5 -4
- package/corpus/templates/design/app/components/visual-editor/DrawOverlay.tsx +1 -1
- package/corpus/templates/design/app/components/visual-editor/SaveStatusIndicator.tsx +2 -2
- package/corpus/templates/design/app/global.css +56 -0
- package/corpus/templates/design/app/hooks/use-agent-generating.ts +4 -5
- package/corpus/templates/design/app/hooks/use-navigation-state.ts +6 -7
- package/corpus/templates/design/app/hooks/use-question-flow.ts +3 -2
- package/corpus/templates/design/app/hooks/useAgentEditRequest.ts +6 -4
- package/corpus/templates/design/app/i18n/zh-TW.ts +5 -14
- package/corpus/templates/design/app/i18n-data.ts +63 -188
- package/corpus/templates/design/app/lib/agent-chat.ts +13 -0
- package/corpus/templates/design/app/pages/DesignEditor.tsx +1428 -384
- package/corpus/templates/design/app/pages/DesignSystemSetup.tsx +9 -5
- package/corpus/templates/design/app/pages/DesignSystems.tsx +2 -2
- package/corpus/templates/design/app/pages/Index.tsx +49 -26
- package/corpus/templates/design/app/pages/NotFound.tsx +25 -8
- package/corpus/templates/design/app/pages/VisualEdit.tsx +17 -5
- package/corpus/templates/design/app/routes/examples.tsx +1 -7
- package/corpus/templates/design/app/routes/templates.tsx +7 -4
- package/corpus/templates/design/changelog/2026-06-30-board-shapes-and-auto-layout-controls-are-clearer.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-component-selections-now-use-purple-component-chrome-and-sho.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-constraints-now-stay-tucked-into-a-compact-inspector-preview.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-creating-a-component-now-opens-in-a-compact-inspector-popove.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-design-cards-no-longer-show-legacy-project-type-badges.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-design-chat-now-keeps-new-turns-in-the-visible-design-agent-.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-design-editor-panels-now-keep-their-compact-text-sizing-cons.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-design-no-longer-shows-the-connected-local-code-warning-bann.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-design-now-opens-to-the-files-panel-unless-a-generation-is-a.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-design-opens-with-a-cleaner-empty-canvas-and-loading-preview.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-design-tools-use-simpler-less-decorative-icons.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-dragging-absolute-elements-no-longer-shows-coordinate-labels.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-fixed-all-screens-opening-too-zoomed-in-by-default.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-fixed-the-public-design-assets-sidebar-so-native-components-.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-fixed-the-screen-overview-board-so-empty-board-space-no-long.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-full-view-screens-can-now-scroll-while-remaining-editable.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-inspector-element-headers-show-the-selected-html-tag-and-the.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-inspector-inputs-stay-compact-across-desktop-breakpoints.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-layers-can-be-multi-selected-from-the-canvas-and-edited-toge.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-local-visual-edit-links-can-edit-localhost-frames-without-si.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-localhost-visual-edit-frames-can-now-be-selected-and-edited.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-marquee-selection-now-works-inside-screens-multi-selected-la.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-motion-is-now-available-from-the-persistent-left-rail-and-th.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-motion-timeline-collapse-and-reopen-animations-feel-smoother.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-multi-select-outlines-now-stay-consistent-across-all-screens.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-new-board-shapes-now-start-with-neutral-gray-styling.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-new-designs-open-into-a-steadier-loading-state-before-the-ed.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-new-designs-show-a-loading-state-during-handoff-and-keep-edi.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-public-visual-edit-design-links-now-open-directly-instead-of.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-removed-the-confusing-states-section-from-the-design-editor-.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-removed-the-templates-gallery-from-design-navigation.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-share-stays-visible-as-soon-as-editable-designs-load.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-signed-out-save-and-share-controls-use-simpler-labels-and-op.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-text-added-on-the-canvas-now-focuses-cleanly-with-the-right-.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-the-design-editor-loading-skeleton-is-simpler-and-its-bottom.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-the-design-editor-loading-skeleton-now-follows-the-current-t.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-the-design-inspector-no-longer-shows-child-layout-controls-o.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-the-design-inspector-no-longer-shows-the-ask-ai-section-abov.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-the-design-review-panel-no-longer-shows-a-separate-inline-au.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-the-empty-designs-page-now-focuses-on-a-single-primary-new-d.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-the-layers-panel-header-stays-as-layers-while-multiple-items.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-the-missing-design-screen-now-uses-a-neutral-back-button.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-the-motion-timeline-now-closes-without-squeezing-the-canvas-.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-the-new-design-connect-ai-setup-now-lines-up-with-the-compos.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-the-screen-overview-board-now-blends-into-the-canvas-and-new.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-top-level-canvas-drops-now-show-screen-guides.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-top-level-canvas-layers-now-keep-a-transparent-backdrop-and-.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-top-level-canvas-layers-now-select-reliably-from-all-screens.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-visual-edit-can-open-and-refresh-localhost-screens-in-one-au.md +6 -0
- package/corpus/templates/design/e2e/helpers.ts +15 -4
- package/corpus/templates/design/server/db/index.ts +52 -0
- package/corpus/templates/design/server/plugins/agent-chat.ts +5 -0
- package/corpus/templates/design/server/plugins/auth.ts +1 -0
- package/corpus/templates/design/server/plugins/core-routes.ts +4 -0
- package/corpus/templates/design/shared/board-file.ts +380 -5
- package/corpus/templates/design/shared/board-objects.ts +2 -2
- package/corpus/templates/design/shared/code-layer.ts +50 -6
- package/corpus/templates/design/shared/motion-compiler.ts +27 -0
- package/corpus/templates/macros/app/components/DailyProgress.tsx +41 -37
- package/corpus/templates/macros/app/components/ExerciseCard.tsx +2 -2
- package/corpus/templates/macros/app/components/MealCard.tsx +2 -2
- package/corpus/templates/macros/app/components/VoiceDictation.tsx +1 -1
- package/corpus/templates/macros/app/components/WeeklyCaloriesChart.tsx +1 -1
- package/corpus/templates/macros/app/components/WeightCard.tsx +2 -2
- package/corpus/templates/macros/app/components/WeightTracker.tsx +1 -1
- package/corpus/templates/macros/app/components/layout/AppLayout.tsx +1 -1
- package/corpus/templates/macros/app/routes/_index.tsx +5 -5
- package/corpus/templates/macros/app/routes/analytics.tsx +1 -1
- package/corpus/templates/macros/changelog/2026-06-30-dashboard-loading-and-chart-surfaces-now-use-theme-aware-col.md +6 -0
- package/corpus/templates/mail/app/components/email/ComposeBubbleToolbar.tsx +14 -11
- package/corpus/templates/mail/app/global.css +3 -2
- package/corpus/templates/mail/changelog/2026-06-30-compose-floating-toolbars-now-use-theme-aware-colors-in-ligh.md +6 -0
- package/corpus/templates/plan/app/pages/PlansPage.tsx +2 -2
- package/corpus/templates/slides/app/components/deck/DeckCard.tsx +3 -3
- package/corpus/templates/slides/app/global.css +10 -0
- package/corpus/templates/slides/app/pages/Index.tsx +55 -51
- package/corpus/templates/slides/changelog/2026-06-30-deck-thumbnails-collapse-cleanly-to-one-column-when-the-chat.md +6 -0
- package/dist/agent/engine/anthropic-engine.d.ts +2 -2
- package/dist/agent/engine/anthropic-engine.d.ts.map +1 -1
- package/dist/agent/engine/builder-engine.d.ts +2 -2
- package/dist/agent/engine/builder-engine.d.ts.map +1 -1
- package/dist/agent/engine/builtin.js +1 -1
- package/dist/agent/engine/builtin.js.map +1 -1
- package/dist/agent/engine/output-tokens.js +1 -1
- package/dist/agent/engine/output-tokens.js.map +1 -1
- package/dist/agent/harness/acp-adapter.d.ts +4 -1
- package/dist/agent/harness/acp-adapter.d.ts.map +1 -1
- package/dist/agent/harness/acp-adapter.js +19 -2
- package/dist/agent/harness/acp-adapter.js.map +1 -1
- package/dist/agent/harness/ai-sdk-adapter.d.ts.map +1 -1
- package/dist/agent/harness/ai-sdk-adapter.js +3 -0
- package/dist/agent/harness/ai-sdk-adapter.js.map +1 -1
- package/dist/agent/harness/translate.d.ts.map +1 -1
- package/dist/agent/harness/translate.js +3 -0
- package/dist/agent/harness/translate.js.map +1 -1
- package/dist/agent/harness/types.d.ts +1 -0
- package/dist/agent/harness/types.d.ts.map +1 -1
- package/dist/agent/harness/types.js.map +1 -1
- package/dist/agent/model-config.d.ts +21 -20
- package/dist/agent/model-config.d.ts.map +1 -1
- package/dist/agent/model-config.js +31 -13
- package/dist/agent/model-config.js.map +1 -1
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +85 -10
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/thread-data-builder.d.ts.map +1 -1
- package/dist/agent/thread-data-builder.js +27 -6
- package/dist/agent/thread-data-builder.js.map +1 -1
- package/dist/agent/tool-call-journal.d.ts +11 -9
- package/dist/agent/tool-call-journal.d.ts.map +1 -1
- package/dist/agent/tool-call-journal.js +92 -40
- package/dist/agent/tool-call-journal.js.map +1 -1
- package/dist/agent/types.d.ts +5 -1
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/cli/design-connect.d.ts.map +1 -1
- package/dist/cli/design-connect.js +84 -0
- package/dist/cli/design-connect.js.map +1 -1
- package/dist/cli/gateway-helpers.d.ts +4 -0
- package/dist/cli/gateway-helpers.d.ts.map +1 -1
- package/dist/cli/gateway-helpers.js +9 -0
- package/dist/cli/gateway-helpers.js.map +1 -1
- package/dist/cli/recap.d.ts.map +1 -1
- package/dist/cli/recap.js +0 -2
- package/dist/cli/recap.js.map +1 -1
- package/dist/cli/skills.d.ts.map +1 -1
- package/dist/cli/skills.js +54 -16
- package/dist/cli/skills.js.map +1 -1
- package/dist/cli/workspace-dev.d.ts.map +1 -1
- package/dist/cli/workspace-dev.js +33 -6
- package/dist/cli/workspace-dev.js.map +1 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +72 -26
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/DefaultSpinner.d.ts.map +1 -1
- package/dist/client/DefaultSpinner.js +8 -1
- package/dist/client/DefaultSpinner.js.map +1 -1
- package/dist/client/chat/message-components.d.ts +7 -1
- package/dist/client/chat/message-components.d.ts.map +1 -1
- package/dist/client/chat/message-components.js +37 -1
- package/dist/client/chat/message-components.js.map +1 -1
- package/dist/client/chat/repo-helpers.d.ts +1 -0
- package/dist/client/chat/repo-helpers.d.ts.map +1 -1
- package/dist/client/chat/repo-helpers.js +59 -0
- package/dist/client/chat/repo-helpers.js.map +1 -1
- package/dist/client/chat/run-recovery.d.ts.map +1 -1
- package/dist/client/chat/run-recovery.js +4 -4
- package/dist/client/chat/run-recovery.js.map +1 -1
- package/dist/client/components/ApiKeySettings.js +8 -8
- package/dist/client/components/ApiKeySettings.js.map +1 -1
- package/dist/client/components/CodeRequiredDialog.d.ts.map +1 -1
- package/dist/client/components/CodeRequiredDialog.js +24 -15
- package/dist/client/components/CodeRequiredDialog.js.map +1 -1
- package/dist/client/components/MissingKeyCard.d.ts.map +1 -1
- package/dist/client/components/MissingKeyCard.js +11 -6
- package/dist/client/components/MissingKeyCard.js.map +1 -1
- package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
- package/dist/client/composer/TiptapComposer.js +4 -3
- package/dist/client/composer/TiptapComposer.js.map +1 -1
- package/dist/client/extensions/ExtensionsSidebarSection.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionsSidebarSection.js +1 -1
- package/dist/client/extensions/ExtensionsSidebarSection.js.map +1 -1
- package/dist/client/guided-questions.d.ts.map +1 -1
- package/dist/client/guided-questions.js +6 -6
- package/dist/client/guided-questions.js.map +1 -1
- package/dist/client/integrations/IntegrationCard.js +1 -1
- package/dist/client/integrations/IntegrationCard.js.map +1 -1
- package/dist/client/integrations/IntegrationsPanel.js +1 -1
- package/dist/client/integrations/IntegrationsPanel.js.map +1 -1
- package/dist/client/onboarding/OnboardingBanner.js +2 -2
- package/dist/client/onboarding/OnboardingBanner.js.map +1 -1
- package/dist/client/onboarding/OnboardingPanel.js +23 -19
- package/dist/client/onboarding/OnboardingPanel.js.map +1 -1
- package/dist/client/resources/ResourceEditor.d.ts.map +1 -1
- package/dist/client/resources/ResourceEditor.js +13 -10
- package/dist/client/resources/ResourceEditor.js.map +1 -1
- package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
- package/dist/client/resources/ResourcesPanel.js +2 -1
- package/dist/client/resources/ResourcesPanel.js.map +1 -1
- package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
- package/dist/client/settings/SettingsPanel.js +8 -3
- package/dist/client/settings/SettingsPanel.js.map +1 -1
- package/dist/client/settings/useBuilderStatus.d.ts.map +1 -1
- package/dist/client/settings/useBuilderStatus.js +6 -38
- package/dist/client/settings/useBuilderStatus.js.map +1 -1
- package/dist/client/useProductionAgent.d.ts +2 -1
- package/dist/client/useProductionAgent.d.ts.map +1 -1
- package/dist/client/useProductionAgent.js.map +1 -1
- package/dist/deploy/build.js +1 -1
- package/dist/deploy/build.js.map +1 -1
- package/dist/file-upload/actions/upload-image.d.ts +2 -2
- package/dist/notifications/routes.d.ts +1 -1
- package/dist/observability/routes.d.ts +5 -5
- package/dist/observability/traces.d.ts.map +1 -1
- package/dist/observability/traces.js.map +1 -1
- package/dist/onboarding/default-steps.js +1 -1
- package/dist/onboarding/default-steps.js.map +1 -1
- package/dist/scripts/agent-engines/manage-agent-engine.js +1 -1
- package/dist/scripts/agent-engines/manage-agent-engine.js.map +1 -1
- package/dist/scripts/agent-engines/set-agent-engine.js +1 -1
- package/dist/scripts/agent-engines/set-agent-engine.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts +3 -0
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +134 -72
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/core-routes-plugin.d.ts +3 -0
- package/dist/server/core-routes-plugin.d.ts.map +1 -1
- package/dist/server/core-routes-plugin.js +4 -1
- package/dist/server/core-routes-plugin.js.map +1 -1
- package/dist/server/open-route.d.ts +9 -0
- package/dist/server/open-route.d.ts.map +1 -1
- package/dist/server/open-route.js +48 -38
- package/dist/server/open-route.js.map +1 -1
- package/dist/shared/reasoning-effort.js +3 -0
- package/dist/shared/reasoning-effort.js.map +1 -1
- package/dist/sharing/access.d.ts.map +1 -1
- package/dist/sharing/access.js +18 -2
- package/dist/sharing/access.js.map +1 -1
- package/dist/sharing/registry.d.ts +10 -0
- package/dist/sharing/registry.d.ts.map +1 -1
- package/dist/sharing/registry.js.map +1 -1
- package/dist/styles/agent-native.css +104 -20
- package/dist/styles/rich-markdown-editor.css +11 -10
- package/docs/content/cloneable-saas.mdx +2 -2
- package/docs/content/faq.mdx +1 -1
- package/docs/content/locales/ar-SA/cloneable-saas.mdx +2 -2
- package/docs/content/locales/ar-SA/faq.mdx +1 -1
- package/docs/content/locales/ar-SA/template-chat.mdx +1 -1
- package/docs/content/locales/de-DE/cloneable-saas.mdx +2 -2
- package/docs/content/locales/de-DE/faq.mdx +1 -1
- package/docs/content/locales/de-DE/template-chat.mdx +1 -1
- package/docs/content/locales/es-ES/cloneable-saas.mdx +2 -2
- package/docs/content/locales/es-ES/faq.mdx +1 -1
- package/docs/content/locales/es-ES/template-chat.mdx +1 -1
- package/docs/content/locales/fr-FR/cloneable-saas.mdx +2 -2
- package/docs/content/locales/fr-FR/faq.mdx +1 -1
- package/docs/content/locales/fr-FR/template-chat.mdx +1 -1
- package/docs/content/locales/hi-IN/cloneable-saas.mdx +2 -2
- package/docs/content/locales/hi-IN/faq.mdx +1 -1
- package/docs/content/locales/hi-IN/template-chat.mdx +1 -1
- package/docs/content/locales/ja-JP/cloneable-saas.mdx +2 -2
- package/docs/content/locales/ja-JP/faq.mdx +1 -1
- package/docs/content/locales/ja-JP/template-chat.mdx +1 -1
- package/docs/content/locales/ko-KR/cloneable-saas.mdx +2 -2
- package/docs/content/locales/ko-KR/faq.mdx +1 -1
- package/docs/content/locales/ko-KR/template-chat.mdx +1 -1
- package/docs/content/locales/pt-BR/cloneable-saas.mdx +2 -2
- package/docs/content/locales/pt-BR/faq.mdx +1 -1
- package/docs/content/locales/pt-BR/template-chat.mdx +1 -1
- package/docs/content/locales/zh-CN/cloneable-saas.mdx +2 -2
- package/docs/content/locales/zh-CN/faq.mdx +1 -1
- package/docs/content/locales/zh-CN/template-chat.mdx +1 -1
- package/docs/content/locales/zh-TW/cloneable-saas.mdx +2 -2
- package/docs/content/locales/zh-TW/faq.mdx +1 -1
- package/docs/content/locales/zh-TW/template-chat.mdx +1 -1
- package/docs/content/template-chat.mdx +1 -1
- package/package.json +1 -1
- package/corpus/templates/design/app/components/design/LocalSourceEditBanner.tsx +0 -157
- package/corpus/templates/design/app/lib/design-templates.ts +0 -1305
- package/corpus/templates/design/app/pages/Templates.tsx +0 -279
|
@@ -333,11 +333,12 @@
|
|
|
333
333
|
display: flex;
|
|
334
334
|
align-items: center;
|
|
335
335
|
border-radius: 6px;
|
|
336
|
-
background: hsl(
|
|
336
|
+
background: hsl(var(--popover));
|
|
337
|
+
color: hsl(var(--popover-foreground));
|
|
337
338
|
padding: 3px;
|
|
338
339
|
box-shadow:
|
|
339
340
|
0 4px 16px rgb(0 0 0 / 0.25),
|
|
340
|
-
0 0 0 1px
|
|
341
|
+
0 0 0 1px hsl(var(--border));
|
|
341
342
|
}
|
|
342
343
|
|
|
343
344
|
.an-rich-md-bubble-items,
|
|
@@ -351,7 +352,7 @@
|
|
|
351
352
|
padding: 3px 6px;
|
|
352
353
|
border-radius: 4px;
|
|
353
354
|
font-size: 12px;
|
|
354
|
-
color:
|
|
355
|
+
color: hsl(var(--popover-foreground) / 0.76);
|
|
355
356
|
background: none;
|
|
356
357
|
border: none;
|
|
357
358
|
cursor: pointer;
|
|
@@ -359,20 +360,20 @@
|
|
|
359
360
|
}
|
|
360
361
|
|
|
361
362
|
.an-rich-md-bubble-button:hover {
|
|
362
|
-
background:
|
|
363
|
-
color:
|
|
363
|
+
background: hsl(var(--accent));
|
|
364
|
+
color: hsl(var(--accent-foreground));
|
|
364
365
|
}
|
|
365
366
|
|
|
366
367
|
.an-rich-md-bubble-button--active {
|
|
367
|
-
background:
|
|
368
|
-
color:
|
|
368
|
+
background: hsl(var(--accent));
|
|
369
|
+
color: hsl(var(--accent-foreground));
|
|
369
370
|
}
|
|
370
371
|
|
|
371
372
|
.an-rich-md-bubble-divider {
|
|
372
373
|
width: 1px;
|
|
373
374
|
height: 16px;
|
|
374
375
|
margin: 0 2px;
|
|
375
|
-
background:
|
|
376
|
+
background: hsl(var(--border));
|
|
376
377
|
}
|
|
377
378
|
|
|
378
379
|
.an-rich-md-link-editor {
|
|
@@ -384,7 +385,7 @@
|
|
|
384
385
|
border: none;
|
|
385
386
|
outline: none;
|
|
386
387
|
background: transparent;
|
|
387
|
-
color:
|
|
388
|
+
color: hsl(var(--popover-foreground));
|
|
388
389
|
font-size: 12px;
|
|
389
390
|
padding: 2px 4px;
|
|
390
391
|
}
|
|
@@ -392,7 +393,7 @@
|
|
|
392
393
|
.an-rich-md-link-editor button {
|
|
393
394
|
border: none;
|
|
394
395
|
background: none;
|
|
395
|
-
color:
|
|
396
|
+
color: hsl(var(--primary));
|
|
396
397
|
cursor: pointer;
|
|
397
398
|
font-size: 11px;
|
|
398
399
|
font-weight: 500;
|
|
@@ -12,6 +12,11 @@ import {
|
|
|
12
12
|
|
|
13
13
|
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
|
|
14
14
|
import { Skeleton } from "@/components/ui/skeleton";
|
|
15
|
+
import {
|
|
16
|
+
chartAxisStroke,
|
|
17
|
+
chartGridStroke,
|
|
18
|
+
chartTooltipContentStyle,
|
|
19
|
+
} from "@/lib/chart-theme";
|
|
15
20
|
|
|
16
21
|
interface CumulativeNetChartProps {
|
|
17
22
|
title: string;
|
|
@@ -78,14 +83,14 @@ export function CumulativeNetChart({
|
|
|
78
83
|
</defs>
|
|
79
84
|
<XAxis
|
|
80
85
|
dataKey="day"
|
|
81
|
-
stroke=
|
|
86
|
+
stroke={chartAxisStroke}
|
|
82
87
|
fontSize={12}
|
|
83
88
|
tickLine={false}
|
|
84
89
|
axisLine={false}
|
|
85
90
|
tickFormatter={formatDate}
|
|
86
91
|
/>
|
|
87
92
|
<YAxis
|
|
88
|
-
stroke=
|
|
93
|
+
stroke={chartAxisStroke}
|
|
89
94
|
fontSize={12}
|
|
90
95
|
tickLine={false}
|
|
91
96
|
axisLine={false}
|
|
@@ -93,17 +98,12 @@ export function CumulativeNetChart({
|
|
|
93
98
|
/>
|
|
94
99
|
<CartesianGrid
|
|
95
100
|
strokeDasharray="3 3"
|
|
96
|
-
stroke=
|
|
101
|
+
stroke={chartGridStroke}
|
|
97
102
|
vertical={false}
|
|
98
103
|
/>
|
|
99
|
-
<ReferenceLine y={0} stroke=
|
|
104
|
+
<ReferenceLine y={0} stroke={chartAxisStroke} strokeWidth={1} />
|
|
100
105
|
<Tooltip
|
|
101
|
-
contentStyle={
|
|
102
|
-
backgroundColor: "#09090b",
|
|
103
|
-
border: "1px solid #27272a",
|
|
104
|
-
borderRadius: "8px",
|
|
105
|
-
color: "#fafafa",
|
|
106
|
-
}}
|
|
106
|
+
contentStyle={chartTooltipContentStyle}
|
|
107
107
|
labelFormatter={formatDate}
|
|
108
108
|
formatter={(value: any) => [
|
|
109
109
|
`$${Number(value).toLocaleString(undefined, { maximumFractionDigits: 0 })}`,
|
|
@@ -10,6 +10,11 @@ import {
|
|
|
10
10
|
} from "recharts";
|
|
11
11
|
|
|
12
12
|
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
|
|
13
|
+
import {
|
|
14
|
+
chartAxisStroke,
|
|
15
|
+
chartGridStroke,
|
|
16
|
+
chartTooltipContentStyle,
|
|
17
|
+
} from "@/lib/chart-theme";
|
|
13
18
|
|
|
14
19
|
const data = [
|
|
15
20
|
{ name: "Jan", total: 1200 },
|
|
@@ -49,13 +54,13 @@ export function RevenueChart() {
|
|
|
49
54
|
</defs>
|
|
50
55
|
<XAxis
|
|
51
56
|
dataKey="name"
|
|
52
|
-
stroke=
|
|
57
|
+
stroke={chartAxisStroke}
|
|
53
58
|
fontSize={12}
|
|
54
59
|
tickLine={false}
|
|
55
60
|
axisLine={false}
|
|
56
61
|
/>
|
|
57
62
|
<YAxis
|
|
58
|
-
stroke=
|
|
63
|
+
stroke={chartAxisStroke}
|
|
59
64
|
fontSize={12}
|
|
60
65
|
tickLine={false}
|
|
61
66
|
axisLine={false}
|
|
@@ -63,17 +68,12 @@ export function RevenueChart() {
|
|
|
63
68
|
/>
|
|
64
69
|
<CartesianGrid
|
|
65
70
|
strokeDasharray="3 3"
|
|
66
|
-
stroke=
|
|
71
|
+
stroke={chartGridStroke}
|
|
67
72
|
vertical={false}
|
|
68
73
|
/>
|
|
69
74
|
<Tooltip
|
|
70
|
-
contentStyle={
|
|
71
|
-
|
|
72
|
-
border: "1px solid #27272a",
|
|
73
|
-
borderRadius: "8px",
|
|
74
|
-
color: "#fafafa",
|
|
75
|
-
}}
|
|
76
|
-
itemStyle={{ color: "#38bdf8" }}
|
|
75
|
+
contentStyle={chartTooltipContentStyle}
|
|
76
|
+
itemStyle={{ color: "var(--brand-blue)" }}
|
|
77
77
|
/>
|
|
78
78
|
<Area
|
|
79
79
|
type="monotone"
|
|
@@ -14,6 +14,7 @@ import {
|
|
|
14
14
|
|
|
15
15
|
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
|
|
16
16
|
import { Skeleton } from "@/components/ui/skeleton";
|
|
17
|
+
import { chartAxisStroke, chartGridStroke } from "@/lib/chart-theme";
|
|
17
18
|
|
|
18
19
|
interface RevenueComparisonChartProps {
|
|
19
20
|
title: string;
|
|
@@ -42,7 +43,7 @@ const formatDate = (value: string) => {
|
|
|
42
43
|
function CustomTooltip({ active, payload, label }: any) {
|
|
43
44
|
if (!active || !payload?.length) return null;
|
|
44
45
|
return (
|
|
45
|
-
<div className="rounded-lg border border-border bg-
|
|
46
|
+
<div className="rounded-lg border border-border bg-popover px-3 py-2 text-xs text-popover-foreground shadow-lg">
|
|
46
47
|
<p className="mb-1 font-medium">{formatDate(label)}</p>
|
|
47
48
|
{payload.map((entry: any) => (
|
|
48
49
|
<p
|
|
@@ -94,19 +95,19 @@ export function RevenueComparisonChart({
|
|
|
94
95
|
<ComposedChart data={chartData}>
|
|
95
96
|
<CartesianGrid
|
|
96
97
|
strokeDasharray="3 3"
|
|
97
|
-
stroke=
|
|
98
|
+
stroke={chartGridStroke}
|
|
98
99
|
vertical={false}
|
|
99
100
|
/>
|
|
100
101
|
<XAxis
|
|
101
102
|
dataKey="day"
|
|
102
|
-
stroke=
|
|
103
|
+
stroke={chartAxisStroke}
|
|
103
104
|
fontSize={12}
|
|
104
105
|
tickLine={false}
|
|
105
106
|
axisLine={false}
|
|
106
107
|
tickFormatter={formatDate}
|
|
107
108
|
/>
|
|
108
109
|
<YAxis
|
|
109
|
-
stroke=
|
|
110
|
+
stroke={chartAxisStroke}
|
|
110
111
|
fontSize={12}
|
|
111
112
|
tickLine={false}
|
|
112
113
|
axisLine={false}
|
|
@@ -116,7 +117,7 @@ export function RevenueComparisonChart({
|
|
|
116
117
|
return `$${v}`;
|
|
117
118
|
}}
|
|
118
119
|
/>
|
|
119
|
-
<ReferenceLine y={0} stroke=
|
|
120
|
+
<ReferenceLine y={0} stroke={chartAxisStroke} strokeWidth={1} />
|
|
120
121
|
<Tooltip content={<CustomTooltip />} />
|
|
121
122
|
<Legend
|
|
122
123
|
wrapperStyle={{ fontSize: "12px", paddingTop: "8px" }}
|
|
@@ -11,6 +11,11 @@ import {
|
|
|
11
11
|
|
|
12
12
|
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
|
|
13
13
|
import { Skeleton } from "@/components/ui/skeleton";
|
|
14
|
+
import {
|
|
15
|
+
chartAxisStroke,
|
|
16
|
+
chartGridStroke,
|
|
17
|
+
chartTooltipContentStyle,
|
|
18
|
+
} from "@/lib/chart-theme";
|
|
14
19
|
|
|
15
20
|
interface TimeSeriesChartProps {
|
|
16
21
|
title: string;
|
|
@@ -75,14 +80,14 @@ export function TimeSeriesChart({
|
|
|
75
80
|
</defs>
|
|
76
81
|
<XAxis
|
|
77
82
|
dataKey={xKey}
|
|
78
|
-
stroke=
|
|
83
|
+
stroke={chartAxisStroke}
|
|
79
84
|
fontSize={12}
|
|
80
85
|
tickLine={false}
|
|
81
86
|
axisLine={false}
|
|
82
87
|
tickFormatter={formatXLabel}
|
|
83
88
|
/>
|
|
84
89
|
<YAxis
|
|
85
|
-
stroke=
|
|
90
|
+
stroke={chartAxisStroke}
|
|
86
91
|
fontSize={12}
|
|
87
92
|
tickLine={false}
|
|
88
93
|
axisLine={false}
|
|
@@ -90,16 +95,11 @@ export function TimeSeriesChart({
|
|
|
90
95
|
/>
|
|
91
96
|
<CartesianGrid
|
|
92
97
|
strokeDasharray="3 3"
|
|
93
|
-
stroke=
|
|
98
|
+
stroke={chartGridStroke}
|
|
94
99
|
vertical={false}
|
|
95
100
|
/>
|
|
96
101
|
<Tooltip
|
|
97
|
-
contentStyle={
|
|
98
|
-
backgroundColor: "#09090b",
|
|
99
|
-
border: "1px solid #27272a",
|
|
100
|
-
borderRadius: "8px",
|
|
101
|
-
color: "#fafafa",
|
|
102
|
-
}}
|
|
102
|
+
contentStyle={chartTooltipContentStyle}
|
|
103
103
|
labelFormatter={formatXLabel}
|
|
104
104
|
/>
|
|
105
105
|
<Area
|
|
@@ -191,6 +191,10 @@
|
|
|
191
191
|
overflow: visible;
|
|
192
192
|
}
|
|
193
193
|
|
|
194
|
+
.analytics-chat-panel .agent-composer-area--hero {
|
|
195
|
+
padding-inline: 1rem;
|
|
196
|
+
}
|
|
197
|
+
|
|
194
198
|
.analytics-chat-panel [data-agent-empty-state="centered"] .agent-composer-area {
|
|
195
199
|
width: 100%;
|
|
196
200
|
max-width: min(760px, 90%);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { CSSProperties } from "react";
|
|
2
|
+
|
|
3
|
+
export const chartAxisStroke = "hsl(var(--muted-foreground))";
|
|
4
|
+
export const chartGridStroke = "hsl(var(--border))";
|
|
5
|
+
export const chartTooltipCursorStroke = "hsl(var(--muted-foreground) / 0.25)";
|
|
6
|
+
export const chartTooltipCursorFill = "hsl(var(--muted) / 0.5)";
|
|
7
|
+
|
|
8
|
+
export const chartTooltipContentStyle = {
|
|
9
|
+
backgroundColor: "hsl(var(--popover))",
|
|
10
|
+
border: "1px solid hsl(var(--border))",
|
|
11
|
+
borderRadius: "8px",
|
|
12
|
+
color: "hsl(var(--popover-foreground))",
|
|
13
|
+
} satisfies CSSProperties;
|
|
@@ -24,6 +24,13 @@ import {
|
|
|
24
24
|
TooltipContent,
|
|
25
25
|
TooltipTrigger,
|
|
26
26
|
} from "@/components/ui/tooltip";
|
|
27
|
+
import {
|
|
28
|
+
chartAxisStroke,
|
|
29
|
+
chartGridStroke,
|
|
30
|
+
chartTooltipContentStyle,
|
|
31
|
+
chartTooltipCursorFill,
|
|
32
|
+
chartTooltipCursorStroke,
|
|
33
|
+
} from "@/lib/chart-theme";
|
|
27
34
|
|
|
28
35
|
import { formatDate } from "./format";
|
|
29
36
|
|
|
@@ -122,31 +129,28 @@ export function KpiChart({
|
|
|
122
129
|
<BarChart data={data}>
|
|
123
130
|
<CartesianGrid
|
|
124
131
|
strokeDasharray="3 3"
|
|
125
|
-
stroke=
|
|
132
|
+
stroke={chartGridStroke}
|
|
126
133
|
vertical={false}
|
|
127
134
|
/>
|
|
128
135
|
<XAxis
|
|
129
136
|
dataKey="period"
|
|
130
|
-
stroke=
|
|
137
|
+
stroke={chartAxisStroke}
|
|
131
138
|
fontSize={11}
|
|
132
139
|
tickLine={false}
|
|
133
140
|
axisLine={false}
|
|
134
141
|
tickFormatter={formatDate}
|
|
135
142
|
/>
|
|
136
143
|
<YAxis
|
|
137
|
-
stroke=
|
|
144
|
+
stroke={chartAxisStroke}
|
|
138
145
|
fontSize={11}
|
|
139
146
|
tickLine={false}
|
|
140
147
|
axisLine={false}
|
|
141
148
|
tickFormatter={formatY}
|
|
142
149
|
/>
|
|
143
150
|
<Tooltip
|
|
144
|
-
cursor={{ fill:
|
|
151
|
+
cursor={{ fill: chartTooltipCursorFill }}
|
|
145
152
|
contentStyle={{
|
|
146
|
-
|
|
147
|
-
border: "1px solid #27272a",
|
|
148
|
-
borderRadius: "8px",
|
|
149
|
-
color: "#fafafa",
|
|
153
|
+
...chartTooltipContentStyle,
|
|
150
154
|
fontSize: "12px",
|
|
151
155
|
}}
|
|
152
156
|
labelFormatter={formatDate}
|
|
@@ -172,31 +176,28 @@ export function KpiChart({
|
|
|
172
176
|
<LineChart data={data}>
|
|
173
177
|
<CartesianGrid
|
|
174
178
|
strokeDasharray="3 3"
|
|
175
|
-
stroke=
|
|
179
|
+
stroke={chartGridStroke}
|
|
176
180
|
vertical={false}
|
|
177
181
|
/>
|
|
178
182
|
<XAxis
|
|
179
183
|
dataKey="period"
|
|
180
|
-
stroke=
|
|
184
|
+
stroke={chartAxisStroke}
|
|
181
185
|
fontSize={11}
|
|
182
186
|
tickLine={false}
|
|
183
187
|
axisLine={false}
|
|
184
188
|
tickFormatter={formatDate}
|
|
185
189
|
/>
|
|
186
190
|
<YAxis
|
|
187
|
-
stroke=
|
|
191
|
+
stroke={chartAxisStroke}
|
|
188
192
|
fontSize={11}
|
|
189
193
|
tickLine={false}
|
|
190
194
|
axisLine={false}
|
|
191
195
|
tickFormatter={formatY}
|
|
192
196
|
/>
|
|
193
197
|
<Tooltip
|
|
194
|
-
cursor={{ stroke:
|
|
198
|
+
cursor={{ stroke: chartTooltipCursorStroke }}
|
|
195
199
|
contentStyle={{
|
|
196
|
-
|
|
197
|
-
border: "1px solid #27272a",
|
|
198
|
-
borderRadius: "8px",
|
|
199
|
-
color: "#fafafa",
|
|
200
|
+
...chartTooltipContentStyle,
|
|
200
201
|
fontSize: "12px",
|
|
201
202
|
}}
|
|
202
203
|
labelFormatter={formatDate}
|
|
@@ -240,31 +241,28 @@ export function KpiChart({
|
|
|
240
241
|
</defs>
|
|
241
242
|
<CartesianGrid
|
|
242
243
|
strokeDasharray="3 3"
|
|
243
|
-
stroke=
|
|
244
|
+
stroke={chartGridStroke}
|
|
244
245
|
vertical={false}
|
|
245
246
|
/>
|
|
246
247
|
<XAxis
|
|
247
248
|
dataKey="period"
|
|
248
|
-
stroke=
|
|
249
|
+
stroke={chartAxisStroke}
|
|
249
250
|
fontSize={11}
|
|
250
251
|
tickLine={false}
|
|
251
252
|
axisLine={false}
|
|
252
253
|
tickFormatter={formatDate}
|
|
253
254
|
/>
|
|
254
255
|
<YAxis
|
|
255
|
-
stroke=
|
|
256
|
+
stroke={chartAxisStroke}
|
|
256
257
|
fontSize={11}
|
|
257
258
|
tickLine={false}
|
|
258
259
|
axisLine={false}
|
|
259
260
|
tickFormatter={formatY}
|
|
260
261
|
/>
|
|
261
262
|
<Tooltip
|
|
262
|
-
cursor={{ stroke:
|
|
263
|
+
cursor={{ stroke: chartTooltipCursorStroke }}
|
|
263
264
|
contentStyle={{
|
|
264
|
-
|
|
265
|
-
border: "1px solid #27272a",
|
|
266
|
-
borderRadius: "8px",
|
|
267
|
-
color: "#fafafa",
|
|
265
|
+
...chartTooltipContentStyle,
|
|
268
266
|
fontSize: "12px",
|
|
269
267
|
}}
|
|
270
268
|
labelFormatter={formatDate}
|
|
@@ -12,6 +12,10 @@ Detailed event, availability, booking, storage, and UI rules live in
|
|
|
12
12
|
- Never hardcode API keys, tokens, webhook URLs, signing secrets, private Builder/internal data, customer data, or credential-looking literals. Use secrets/OAuth/runtime configuration and obvious placeholders in examples.
|
|
13
13
|
- Use actions for events, availability, booking links, settings, navigation,
|
|
14
14
|
Google Calendar connection, and sharing. Do not bypass app access checks.
|
|
15
|
+
- Use `connect-google-calendar` when the user asks to connect or reconnect
|
|
16
|
+
Google Calendar. Return its link to the user; do not `fetch`
|
|
17
|
+
`/_agent-native/google/auth-url` from the agent backend because that route
|
|
18
|
+
requires the signed-in browser session.
|
|
15
19
|
- In dev, call actions with `pnpm action <name>`; in production, use native
|
|
16
20
|
tools. The action schema is authoritative.
|
|
17
21
|
- Use the current date from runtime context, not a visible calendar date, when
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { defineAction } from "@agent-native/core";
|
|
2
|
+
import { getRequestUserEmail } from "@agent-native/core/server";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
|
|
5
|
+
const CONNECT_PATH = "/_agent-native/google/auth-url";
|
|
6
|
+
const ADD_ACCOUNT_PATH = "/_agent-native/google/add-account/auth-url";
|
|
7
|
+
|
|
8
|
+
function normalizeReturnPath(value: string | undefined): string | undefined {
|
|
9
|
+
if (!value) return undefined;
|
|
10
|
+
try {
|
|
11
|
+
const url = new URL(value, "https://calendar.agent-native.local");
|
|
12
|
+
if (url.origin !== "https://calendar.agent-native.local") {
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
return `${url.pathname}${url.search}${url.hash}`;
|
|
16
|
+
} catch {
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export default defineAction({
|
|
22
|
+
description:
|
|
23
|
+
"Create a user-clickable Google Calendar OAuth link. Use this when the user asks to connect or reconnect Google Calendar. Do not fetch the returned URL as an API; the signed-in user must open it in their browser.",
|
|
24
|
+
schema: z.object({
|
|
25
|
+
addAccount: z
|
|
26
|
+
.boolean()
|
|
27
|
+
.optional()
|
|
28
|
+
.describe(
|
|
29
|
+
"Use true only when adding another Google Calendar account to an already connected Calendar workspace.",
|
|
30
|
+
),
|
|
31
|
+
returnPath: z
|
|
32
|
+
.string()
|
|
33
|
+
.optional()
|
|
34
|
+
.describe(
|
|
35
|
+
"Optional same-origin Calendar path to return to after the Google OAuth flow.",
|
|
36
|
+
),
|
|
37
|
+
}),
|
|
38
|
+
http: { method: "GET" },
|
|
39
|
+
readOnly: true,
|
|
40
|
+
parallelSafe: true,
|
|
41
|
+
run: async (args) => {
|
|
42
|
+
const owner = getRequestUserEmail();
|
|
43
|
+
if (!owner) {
|
|
44
|
+
throw new Error("Sign in to Calendar before connecting Google Calendar.");
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const path = args.addAccount ? ADD_ACCOUNT_PATH : CONNECT_PATH;
|
|
48
|
+
const params = new URLSearchParams({ redirect: "1" });
|
|
49
|
+
if (!args.addAccount) params.set("calendar", "1");
|
|
50
|
+
|
|
51
|
+
const returnPath = normalizeReturnPath(args.returnPath);
|
|
52
|
+
if (returnPath) params.set("return", returnPath);
|
|
53
|
+
|
|
54
|
+
const url = `${path}?${params.toString()}`;
|
|
55
|
+
const label = args.addAccount
|
|
56
|
+
? "Add Google Calendar account"
|
|
57
|
+
: "Connect Google Calendar";
|
|
58
|
+
return {
|
|
59
|
+
provider: "google_calendar",
|
|
60
|
+
url,
|
|
61
|
+
label,
|
|
62
|
+
markdown: `[${label}](${url})`,
|
|
63
|
+
message:
|
|
64
|
+
"Open this link in the signed-in Calendar browser session to connect Google Calendar. Do not fetch it from the agent backend.",
|
|
65
|
+
requiresUserGesture: true,
|
|
66
|
+
};
|
|
67
|
+
},
|
|
68
|
+
link: ({ result }) => {
|
|
69
|
+
const url =
|
|
70
|
+
result && typeof result === "object"
|
|
71
|
+
? (result as { url?: unknown }).url
|
|
72
|
+
: null;
|
|
73
|
+
if (typeof url !== "string" || !url) return null;
|
|
74
|
+
return {
|
|
75
|
+
url,
|
|
76
|
+
label: "Connect Google Calendar",
|
|
77
|
+
view: "settings",
|
|
78
|
+
};
|
|
79
|
+
},
|
|
80
|
+
});
|
|
@@ -70,6 +70,7 @@ const INITIAL_TOOL_NAMES = [
|
|
|
70
70
|
"find-a-time",
|
|
71
71
|
"search-people",
|
|
72
72
|
"navigate",
|
|
73
|
+
"connect-google-calendar",
|
|
73
74
|
"list-booking-links",
|
|
74
75
|
"create-booking-link",
|
|
75
76
|
"update-booking-link",
|
|
@@ -111,6 +112,7 @@ Provider-specific Calendar actions are shortcuts, not limits. If a first-class a
|
|
|
111
112
|
- \`pnpm action navigate --view=calendar --date=YYYY-MM-DD\` — Navigate to a specific date
|
|
112
113
|
- \`pnpm action navigate --view=availability\` — Show availability settings
|
|
113
114
|
- \`pnpm action navigate --view=booking-links\` — Show booking links
|
|
115
|
+
- \`pnpm action connect-google-calendar\` — Create a user-clickable Google Calendar OAuth link. Use this when the user asks to connect or reconnect Google Calendar. Do not fetch \`/_agent-native/google/auth-url\` yourself; OAuth must be opened by the signed-in user in their browser.
|
|
114
116
|
- \`pnpm action update-calendar-visual-preferences --colorMode multi\` — Color the local app UI by meeting type without modifying Google Calendar events
|
|
115
117
|
- \`pnpm action update-calendar-visual-preferences --colorMode single --singleColor '#5B9BD5'\` — Use one local display color for the user's Google events
|
|
116
118
|
- \`pnpm action check-availability --date YYYY-MM-DD --duration 60\` — Check free slots
|
|
@@ -125,6 +127,8 @@ Use \`create-event\` or \`update-event --colorId 1..11\` when the user wants one
|
|
|
125
127
|
## Google Connection Check
|
|
126
128
|
Before answering schedule questions, run view-screen first for context, then use list-events for the requested date range even if the user is currently on Settings, Booking Links, or another non-calendar page. Do not infer a Google Calendar connection problem just because the current page is Settings. Only ask the user to reconnect Google if list-events or the explicit Google status reports an auth/connection error.
|
|
127
129
|
|
|
130
|
+
When the user explicitly asks you to connect or reconnect Google Calendar, call \`connect-google-calendar\` and give them the returned link. Do not call raw HTTP/fetch/web-request against \`/_agent-native/google/auth-url\`; that route depends on the user's browser session and will return 401 from the agent backend.
|
|
131
|
+
|
|
128
132
|
For relationship-history or frequency questions such as "who have I met at Adobe?" or "how often do I meet with Mattel?", prefer the raw Google Calendar API through provider-api-request so you can choose the exact timeMin/timeMax, q, calendarId, maxResults, and pageToken behavior. Stage large paginated results before analysis. Do not conclude there are no recurring meetings from the visible range or from a convenience action alone.
|
|
129
133
|
|
|
130
134
|
## Context Awareness
|
|
@@ -301,11 +301,11 @@ export function BubbleToolbar({ editor, onComment }: BubbleToolbarProps) {
|
|
|
301
301
|
setLinkUrl("");
|
|
302
302
|
}
|
|
303
303
|
}}
|
|
304
|
-
className="bg-transparent border-none outline-none text-
|
|
304
|
+
className="bg-transparent border-none outline-none text-popover-foreground text-sm w-40 sm:w-48 px-1 py-1 placeholder:text-muted-foreground"
|
|
305
305
|
/>
|
|
306
306
|
<button
|
|
307
307
|
onClick={handleSetLink}
|
|
308
|
-
className="text-xs text-
|
|
308
|
+
className="text-xs text-primary hover:text-primary/80 px-2 py-1.5 font-medium"
|
|
309
309
|
>
|
|
310
310
|
{t("editor.apply")}
|
|
311
311
|
</button>
|
|
@@ -318,7 +318,7 @@ export function BubbleToolbar({ editor, onComment }: BubbleToolbarProps) {
|
|
|
318
318
|
{items.map((item, i) => {
|
|
319
319
|
if ("type" in item && item.type === "divider") {
|
|
320
320
|
return (
|
|
321
|
-
<div key={`d-${i}`} className="w-px h-5 bg-
|
|
321
|
+
<div key={`d-${i}`} className="w-px h-5 bg-border mx-0.5" />
|
|
322
322
|
);
|
|
323
323
|
}
|
|
324
324
|
const {
|
|
@@ -340,8 +340,8 @@ export function BubbleToolbar({ editor, onComment }: BubbleToolbarProps) {
|
|
|
340
340
|
className={cn(
|
|
341
341
|
"p-2 rounded",
|
|
342
342
|
isActive()
|
|
343
|
-
? "bg-
|
|
344
|
-
: "text-
|
|
343
|
+
? "bg-accent text-accent-foreground"
|
|
344
|
+
: "text-popover-foreground/75 hover:bg-accent hover:text-accent-foreground",
|
|
345
345
|
)}
|
|
346
346
|
>
|
|
347
347
|
<Icon size={16} strokeWidth={2.5} />
|
|
@@ -1537,10 +1537,10 @@ audio.media-block__content {
|
|
|
1537
1537
|
flex-direction: column;
|
|
1538
1538
|
gap: 0.18rem;
|
|
1539
1539
|
max-width: 22rem;
|
|
1540
|
-
border:
|
|
1540
|
+
border: 1px solid hsl(var(--border));
|
|
1541
1541
|
border-radius: 8px;
|
|
1542
|
-
background: hsl(
|
|
1543
|
-
color:
|
|
1542
|
+
background: hsl(var(--popover));
|
|
1543
|
+
color: hsl(var(--popover-foreground));
|
|
1544
1544
|
padding: 0.6rem 0.75rem;
|
|
1545
1545
|
box-shadow: 0 10px 24px hsl(0 0% 0% / 0.22);
|
|
1546
1546
|
}
|
|
@@ -2218,12 +2218,13 @@ audio.media-block__content {
|
|
|
2218
2218
|
.bubble-toolbar {
|
|
2219
2219
|
display: flex;
|
|
2220
2220
|
align-items: center;
|
|
2221
|
-
background: hsl(
|
|
2221
|
+
background: hsl(var(--popover));
|
|
2222
|
+
color: hsl(var(--popover-foreground));
|
|
2222
2223
|
border-radius: 8px;
|
|
2223
2224
|
padding: 4px;
|
|
2224
2225
|
box-shadow:
|
|
2225
2226
|
0 4px 20px rgb(0 0 0 / 0.25),
|
|
2226
|
-
0 0 0 1px
|
|
2227
|
+
0 0 0 1px hsl(var(--border));
|
|
2227
2228
|
}
|
|
2228
2229
|
|
|
2229
2230
|
/* ===== Inline comment highlights ===== */
|
|
@@ -65,9 +65,14 @@ For one-shot agent setup, ask for JSON and keep the long-running bridge open in
|
|
|
65
65
|
a second terminal if the user needs live updates:
|
|
66
66
|
|
|
67
67
|
```bash
|
|
68
|
-
npx @agent-native/core@latest design connect --url http://localhost:5173 --root .
|
|
68
|
+
npx @agent-native/core@latest design connect --url http://localhost:5173 --root .
|
|
69
|
+
curl http://127.0.0.1:7331/manifest.json
|
|
69
70
|
```
|
|
70
71
|
|
|
72
|
+
Do not use `--json` for an editable session. `--json`, `--once`, and
|
|
73
|
+
`--dry-run` print the manifest and exit, so Design will fall back to a
|
|
74
|
+
non-editable live iframe as soon as it tries to refresh the snapshot.
|
|
75
|
+
|
|
71
76
|
## Action Flow
|
|
72
77
|
|
|
73
78
|
1. Register or refresh the bridge in Design:
|