@agent-native/core 0.82.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.
Files changed (474) hide show
  1. package/README.md +2 -2
  2. package/corpus/README.md +1 -1
  3. package/corpus/core/CHANGELOG.md +34 -0
  4. package/corpus/core/README.md +2 -2
  5. package/corpus/core/docs/content/cloneable-saas.mdx +2 -2
  6. package/corpus/core/docs/content/faq.mdx +1 -1
  7. package/corpus/core/docs/content/locales/ar-SA/cloneable-saas.mdx +2 -2
  8. package/corpus/core/docs/content/locales/ar-SA/faq.mdx +1 -1
  9. package/corpus/core/docs/content/locales/ar-SA/template-chat.mdx +1 -1
  10. package/corpus/core/docs/content/locales/de-DE/cloneable-saas.mdx +2 -2
  11. package/corpus/core/docs/content/locales/de-DE/faq.mdx +1 -1
  12. package/corpus/core/docs/content/locales/de-DE/template-chat.mdx +1 -1
  13. package/corpus/core/docs/content/locales/es-ES/cloneable-saas.mdx +2 -2
  14. package/corpus/core/docs/content/locales/es-ES/faq.mdx +1 -1
  15. package/corpus/core/docs/content/locales/es-ES/template-chat.mdx +1 -1
  16. package/corpus/core/docs/content/locales/fr-FR/cloneable-saas.mdx +2 -2
  17. package/corpus/core/docs/content/locales/fr-FR/faq.mdx +1 -1
  18. package/corpus/core/docs/content/locales/fr-FR/template-chat.mdx +1 -1
  19. package/corpus/core/docs/content/locales/hi-IN/cloneable-saas.mdx +2 -2
  20. package/corpus/core/docs/content/locales/hi-IN/faq.mdx +1 -1
  21. package/corpus/core/docs/content/locales/hi-IN/template-chat.mdx +1 -1
  22. package/corpus/core/docs/content/locales/ja-JP/cloneable-saas.mdx +2 -2
  23. package/corpus/core/docs/content/locales/ja-JP/faq.mdx +1 -1
  24. package/corpus/core/docs/content/locales/ja-JP/template-chat.mdx +1 -1
  25. package/corpus/core/docs/content/locales/ko-KR/cloneable-saas.mdx +2 -2
  26. package/corpus/core/docs/content/locales/ko-KR/faq.mdx +1 -1
  27. package/corpus/core/docs/content/locales/ko-KR/template-chat.mdx +1 -1
  28. package/corpus/core/docs/content/locales/pt-BR/cloneable-saas.mdx +2 -2
  29. package/corpus/core/docs/content/locales/pt-BR/faq.mdx +1 -1
  30. package/corpus/core/docs/content/locales/pt-BR/template-chat.mdx +1 -1
  31. package/corpus/core/docs/content/locales/zh-CN/cloneable-saas.mdx +2 -2
  32. package/corpus/core/docs/content/locales/zh-CN/faq.mdx +1 -1
  33. package/corpus/core/docs/content/locales/zh-CN/template-chat.mdx +1 -1
  34. package/corpus/core/docs/content/locales/zh-TW/cloneable-saas.mdx +2 -2
  35. package/corpus/core/docs/content/locales/zh-TW/faq.mdx +1 -1
  36. package/corpus/core/docs/content/locales/zh-TW/template-chat.mdx +1 -1
  37. package/corpus/core/docs/content/template-chat.mdx +1 -1
  38. package/corpus/core/package.json +1 -1
  39. package/corpus/core/src/agent/engine/builtin.ts +1 -1
  40. package/corpus/core/src/agent/engine/output-tokens.ts +1 -1
  41. package/corpus/core/src/agent/harness/acp-adapter.ts +28 -4
  42. package/corpus/core/src/agent/harness/ai-sdk-adapter.ts +3 -0
  43. package/corpus/core/src/agent/harness/translate.ts +3 -0
  44. package/corpus/core/src/agent/harness/types.ts +1 -0
  45. package/corpus/core/src/agent/model-config.ts +34 -13
  46. package/corpus/core/src/agent/production-agent.ts +87 -10
  47. package/corpus/core/src/agent/thread-data-builder.ts +29 -4
  48. package/corpus/core/src/agent/tool-call-journal.ts +109 -48
  49. package/corpus/core/src/agent/types.ts +6 -1
  50. package/corpus/core/src/cli/design-connect.ts +106 -0
  51. package/corpus/core/src/cli/gateway-helpers.ts +17 -0
  52. package/corpus/core/src/cli/recap.ts +0 -2
  53. package/corpus/core/src/cli/skills.ts +54 -16
  54. package/corpus/core/src/cli/workspace-dev.ts +29 -5
  55. package/corpus/core/src/client/AssistantChat.tsx +89 -42
  56. package/corpus/core/src/client/CommandMenu.tsx +34 -12
  57. package/corpus/core/src/client/DefaultSpinner.tsx +8 -1
  58. package/corpus/core/src/client/chat/message-components.tsx +49 -1
  59. package/corpus/core/src/client/chat/repo-helpers.ts +71 -0
  60. package/corpus/core/src/client/chat/run-recovery.tsx +15 -5
  61. package/corpus/core/src/client/components/ApiKeySettings.tsx +8 -8
  62. package/corpus/core/src/client/components/CodeRequiredDialog.tsx +26 -15
  63. package/corpus/core/src/client/components/MissingKeyCard.tsx +13 -6
  64. package/corpus/core/src/client/composer/TiptapComposer.tsx +4 -3
  65. package/corpus/core/src/client/extensions/ExtensionsSidebarSection.tsx +0 -1
  66. package/corpus/core/src/client/guided-questions.tsx +21 -27
  67. package/corpus/core/src/client/integrations/IntegrationCard.tsx +1 -1
  68. package/corpus/core/src/client/integrations/IntegrationsPanel.tsx +1 -1
  69. package/corpus/core/src/client/onboarding/OnboardingBanner.tsx +2 -2
  70. package/corpus/core/src/client/onboarding/OnboardingPanel.tsx +23 -19
  71. package/corpus/core/src/client/resources/ResourceEditor.tsx +18 -10
  72. package/corpus/core/src/client/resources/ResourcesPanel.tsx +5 -1
  73. package/corpus/core/src/client/settings/SettingsPanel.tsx +8 -3
  74. package/corpus/core/src/client/settings/useBuilderStatus.ts +8 -41
  75. package/corpus/core/src/client/useProductionAgent.ts +6 -2
  76. package/corpus/core/src/deploy/build.ts +1 -1
  77. package/corpus/core/src/observability/traces.ts +3 -3
  78. package/corpus/core/src/onboarding/default-steps.ts +1 -1
  79. package/corpus/core/src/scripts/agent-engines/manage-agent-engine.ts +1 -1
  80. package/corpus/core/src/scripts/agent-engines/set-agent-engine.ts +1 -1
  81. package/corpus/core/src/server/agent-chat-plugin.ts +177 -81
  82. package/corpus/core/src/server/core-routes-plugin.ts +7 -1
  83. package/corpus/core/src/server/open-route.ts +59 -40
  84. package/corpus/core/src/shared/reasoning-effort.ts +2 -0
  85. package/corpus/core/src/sharing/access.ts +22 -2
  86. package/corpus/core/src/sharing/registry.ts +18 -0
  87. package/corpus/core/src/styles/agent-native.css +104 -20
  88. package/corpus/core/src/styles/rich-markdown-editor.css +11 -10
  89. package/corpus/templates/analytics/actions/hubspot-deals.ts +64 -4
  90. package/corpus/templates/analytics/app/components/dashboard/CumulativeNetChart.tsx +10 -10
  91. package/corpus/templates/analytics/app/components/dashboard/RevenueChart.tsx +10 -10
  92. package/corpus/templates/analytics/app/components/dashboard/RevenueComparisonChart.tsx +6 -5
  93. package/corpus/templates/analytics/app/components/dashboard/TimeSeriesChart.tsx +9 -9
  94. package/corpus/templates/analytics/app/global.css +4 -0
  95. package/corpus/templates/analytics/app/lib/chart-theme.ts +13 -0
  96. package/corpus/templates/analytics/app/pages/adhoc/_shared/KpiChart.tsx +22 -24
  97. package/corpus/templates/analytics/changelog/2026-06-30-dashboard-charts-now-use-theme-aware-tooltip-and-grid-colors.md +6 -0
  98. package/corpus/templates/analytics/changelog/2026-06-30-fixed-ask-composer-spacing-so-the-chat-field-has-a-comfortab.md +6 -0
  99. package/corpus/templates/calendar/AGENTS.md +4 -0
  100. package/corpus/templates/calendar/actions/connect-google-calendar.ts +80 -0
  101. package/corpus/templates/calendar/changelog/2026-06-30-calendar-now-gives-the-agent-a-safe-google-connection-link-i.md +6 -0
  102. package/corpus/templates/calendar/server/plugins/agent-chat.ts +4 -0
  103. package/corpus/templates/content/.env.local.example +6 -0
  104. package/corpus/templates/content/AGENTS.md +10 -1
  105. package/corpus/templates/content/actions/_builder-cms-read-client.ts +14 -1
  106. package/corpus/templates/content/actions/_builder-cms-source-adapter.ts +43 -0
  107. package/corpus/templates/content/actions/_builder-cms-write-adapter.ts +79 -7
  108. package/corpus/templates/content/actions/_database-source-utils.ts +987 -22
  109. package/corpus/templates/content/actions/_database-utils.ts +41 -0
  110. package/corpus/templates/content/actions/_local-file-documents.ts +74 -1
  111. package/corpus/templates/content/actions/attach-content-database-source.ts +33 -8
  112. package/corpus/templates/content/actions/change-content-database-source-role.ts +14 -0
  113. package/corpus/templates/content/actions/disconnect-content-database-source.ts +3 -0
  114. package/corpus/templates/content/actions/execute-builder-source-execution.ts +71 -3
  115. package/corpus/templates/content/actions/list-content-databases.ts +41 -33
  116. package/corpus/templates/content/actions/process-builder-body-hydration.ts +47 -0
  117. package/corpus/templates/content/actions/update-document.ts +93 -0
  118. package/corpus/templates/content/app/blocks/SourceComponentBlock.tsx +277 -0
  119. package/corpus/templates/content/app/blocks/contentBlockRegistry.tsx +2 -0
  120. package/corpus/templates/content/app/components/editor/BubbleToolbar.tsx +5 -5
  121. package/corpus/templates/content/app/components/editor/DocumentEditor.tsx +45 -4
  122. package/corpus/templates/content/app/components/editor/VisualEditor.tsx +5 -1
  123. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +92 -0
  124. package/corpus/templates/content/app/components/editor/database-sources/BuilderSourceReviewDialog.tsx +5 -3
  125. package/corpus/templates/content/app/components/editor/extensions/registryBlocks.ts +41 -0
  126. package/corpus/templates/content/app/components/editor/registrySlashItems.ts +4 -0
  127. package/corpus/templates/content/app/global.css +16 -8
  128. package/corpus/templates/content/app/hooks/use-content-database.ts +24 -0
  129. package/corpus/templates/content/app/i18n/zh-TW.ts +24 -0
  130. package/corpus/templates/content/app/i18n-data.ts +212 -0
  131. package/corpus/templates/content/app/lib/content-command-search.ts +64 -0
  132. package/corpus/templates/content/app/root.tsx +236 -8
  133. package/corpus/templates/content/changelog/2026-06-29-builder-cms-sources-now-sync-article-bodies-through-content.md +6 -0
  134. package/corpus/templates/content/changelog/2026-06-30-builder-article-media-now-render-as-images-and-embeds-when-r.md +6 -0
  135. package/corpus/templates/content/changelog/2026-06-30-builder-source-components-now-render-as-preserved-preview-bl.md +6 -0
  136. package/corpus/templates/content/changelog/2026-06-30-cmd-k-search-now-opens-from-the-editor-and-finds-real-content.md +6 -0
  137. package/corpus/templates/content/changelog/2026-06-30-editor-floating-toolbars-now-use-theme-aware-colors-in-light.md +6 -0
  138. package/corpus/templates/content/package.json +3 -1
  139. package/corpus/templates/content/scripts/check-native-deps.mjs +57 -0
  140. package/corpus/templates/content/scripts/dev-database.mjs +83 -0
  141. package/corpus/templates/content/scripts/seed-demo-user.mjs +107 -0
  142. package/corpus/templates/content/server/db/schema.ts +27 -0
  143. package/corpus/templates/content/server/plugins/db.ts +33 -0
  144. package/corpus/templates/content/shared/api.ts +45 -0
  145. package/corpus/templates/content/shared/builder-mdx.ts +905 -5
  146. package/corpus/templates/content/shared/nfm-registry.ts +2 -0
  147. package/corpus/templates/content/shared/source-component-block.ts +141 -0
  148. package/corpus/templates/design/.agents/skills/visual-edit/SKILL.md +6 -1
  149. package/corpus/templates/design/actions/add-localhost-screens.ts +63 -8
  150. package/corpus/templates/design/actions/apply-motion-edit.ts +12 -46
  151. package/corpus/templates/design/actions/list-design-native-assets.ts +2 -1
  152. package/corpus/templates/design/actions/migrate-board-objects-to-file.ts +49 -1
  153. package/corpus/templates/design/actions/navigate.ts +3 -12
  154. package/corpus/templates/design/actions/open-visual-edit.ts +341 -0
  155. package/corpus/templates/design/actions/view-screen.ts +1 -1
  156. package/corpus/templates/design/app/components/design/CanvasContextMenu.tsx +1 -1
  157. package/corpus/templates/design/app/components/design/DesignCanvas.tsx +350 -15
  158. package/corpus/templates/design/app/components/design/DesignEditorSkeleton.tsx +71 -91
  159. package/corpus/templates/design/app/components/design/DesignExtensionsPanel.tsx +25 -27
  160. package/corpus/templates/design/app/components/design/DeviceFrame.tsx +1 -1
  161. package/corpus/templates/design/app/components/design/DrawOverlay.tsx +2 -2
  162. package/corpus/templates/design/app/components/design/EditPanel.tsx +1111 -570
  163. package/corpus/templates/design/app/components/design/LayersPanel.tsx +162 -32
  164. package/corpus/templates/design/app/components/design/MotionDock.tsx +268 -240
  165. package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +1193 -207
  166. package/corpus/templates/design/app/components/design/QuestionFlow.tsx +1 -1
  167. package/corpus/templates/design/app/components/design/ReviewPanel.tsx +81 -102
  168. package/corpus/templates/design/app/components/design/StatesPanel.tsx +6 -6
  169. package/corpus/templates/design/app/components/design/TokensPanel.tsx +11 -11
  170. package/corpus/templates/design/app/components/design/TweaksPanel.tsx +9 -7
  171. package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +1225 -154
  172. package/corpus/templates/design/app/components/design/bridge/hit-test.bridge.ts +130 -37
  173. package/corpus/templates/design/app/components/design/canvas-primitive-style.ts +24 -11
  174. package/corpus/templates/design/app/components/design/inspector/AutoLayoutMatrix.tsx +184 -162
  175. package/corpus/templates/design/app/components/design/inspector/ConstraintsWidget.tsx +137 -79
  176. package/corpus/templates/design/app/components/design/inspector/DesignColorPicker.tsx +13 -13
  177. package/corpus/templates/design/app/components/design/inspector/ExportSettingsPanel.tsx +8 -8
  178. package/corpus/templates/design/app/components/design/inspector/GradientEditor.tsx +2 -2
  179. package/corpus/templates/design/app/components/design/inspector/ImageFillControls.tsx +4 -4
  180. package/corpus/templates/design/app/components/design/inspector/InspectorAiActions.tsx +3 -3
  181. package/corpus/templates/design/app/components/design/inspector/ScrubInput.tsx +13 -7
  182. package/corpus/templates/design/app/components/design/inspector/ShaderControls.tsx +14 -11
  183. package/corpus/templates/design/app/components/design/inspector/ShaderFillsPanel.tsx +4 -4
  184. package/corpus/templates/design/app/components/design/inspector/index.ts +2 -0
  185. package/corpus/templates/design/app/components/design/types.ts +19 -0
  186. package/corpus/templates/design/app/components/editor/PromptDialog.tsx +61 -78
  187. package/corpus/templates/design/app/components/layout/Header.tsx +0 -1
  188. package/corpus/templates/design/app/components/layout/Layout.tsx +3 -2
  189. package/corpus/templates/design/app/components/layout/Sidebar.tsx +0 -2
  190. package/corpus/templates/design/app/components/visual-editor/CanvasCommentPins.tsx +5 -4
  191. package/corpus/templates/design/app/components/visual-editor/DrawOverlay.tsx +1 -1
  192. package/corpus/templates/design/app/components/visual-editor/SaveStatusIndicator.tsx +2 -2
  193. package/corpus/templates/design/app/global.css +56 -0
  194. package/corpus/templates/design/app/hooks/use-agent-generating.ts +4 -5
  195. package/corpus/templates/design/app/hooks/use-navigation-state.ts +6 -7
  196. package/corpus/templates/design/app/hooks/use-question-flow.ts +3 -2
  197. package/corpus/templates/design/app/hooks/useAgentEditRequest.ts +6 -4
  198. package/corpus/templates/design/app/hooks/useDesignHotkeys.ts +6 -3
  199. package/corpus/templates/design/app/i18n/zh-TW.ts +5 -14
  200. package/corpus/templates/design/app/i18n-data.ts +63 -188
  201. package/corpus/templates/design/app/lib/agent-chat.ts +13 -0
  202. package/corpus/templates/design/app/pages/DesignEditor.tsx +1755 -401
  203. package/corpus/templates/design/app/pages/DesignSystemSetup.tsx +9 -5
  204. package/corpus/templates/design/app/pages/DesignSystems.tsx +2 -2
  205. package/corpus/templates/design/app/pages/Index.tsx +49 -26
  206. package/corpus/templates/design/app/pages/NotFound.tsx +25 -8
  207. package/corpus/templates/design/app/pages/VisualEdit.tsx +17 -5
  208. package/corpus/templates/design/app/routes/examples.tsx +1 -7
  209. package/corpus/templates/design/app/routes/templates.tsx +7 -4
  210. package/corpus/templates/design/changelog/2026-06-30-board-shapes-and-auto-layout-controls-are-clearer.md +6 -0
  211. package/corpus/templates/design/changelog/2026-06-30-canvas-editing-now-keeps-undo-redo-and-cross-screen-layer-mo.md +6 -0
  212. package/corpus/templates/design/changelog/2026-06-30-component-selections-now-use-purple-component-chrome-and-sho.md +6 -0
  213. package/corpus/templates/design/changelog/2026-06-30-constraints-now-stay-tucked-into-a-compact-inspector-preview.md +6 -0
  214. package/corpus/templates/design/changelog/2026-06-30-creating-a-component-now-opens-in-a-compact-inspector-popove.md +6 -0
  215. package/corpus/templates/design/changelog/2026-06-30-design-cards-no-longer-show-legacy-project-type-badges.md +6 -0
  216. package/corpus/templates/design/changelog/2026-06-30-design-chat-now-keeps-new-turns-in-the-visible-design-agent-.md +6 -0
  217. package/corpus/templates/design/changelog/2026-06-30-design-editor-panels-now-keep-their-compact-text-sizing-cons.md +6 -0
  218. package/corpus/templates/design/changelog/2026-06-30-design-no-longer-shows-the-connected-local-code-warning-bann.md +6 -0
  219. package/corpus/templates/design/changelog/2026-06-30-design-now-opens-to-the-files-panel-unless-a-generation-is-a.md +6 -0
  220. package/corpus/templates/design/changelog/2026-06-30-design-opens-with-a-cleaner-empty-canvas-and-loading-preview.md +6 -0
  221. package/corpus/templates/design/changelog/2026-06-30-design-tools-use-simpler-less-decorative-icons.md +6 -0
  222. package/corpus/templates/design/changelog/2026-06-30-dragging-absolute-elements-no-longer-shows-coordinate-labels.md +6 -0
  223. package/corpus/templates/design/changelog/2026-06-30-fixed-all-screens-opening-too-zoomed-in-by-default.md +6 -0
  224. package/corpus/templates/design/changelog/2026-06-30-fixed-the-public-design-assets-sidebar-so-native-components-.md +6 -0
  225. package/corpus/templates/design/changelog/2026-06-30-fixed-the-screen-overview-board-so-empty-board-space-no-long.md +6 -0
  226. package/corpus/templates/design/changelog/2026-06-30-full-view-screens-can-now-scroll-while-remaining-editable.md +6 -0
  227. package/corpus/templates/design/changelog/2026-06-30-inspector-element-headers-show-the-selected-html-tag-and-the.md +6 -0
  228. package/corpus/templates/design/changelog/2026-06-30-inspector-inputs-stay-compact-across-desktop-breakpoints.md +6 -0
  229. package/corpus/templates/design/changelog/2026-06-30-layers-can-be-multi-selected-from-the-canvas-and-edited-toge.md +6 -0
  230. package/corpus/templates/design/changelog/2026-06-30-local-visual-edit-links-can-edit-localhost-frames-without-si.md +6 -0
  231. package/corpus/templates/design/changelog/2026-06-30-localhost-visual-edit-frames-can-now-be-selected-and-edited.md +6 -0
  232. package/corpus/templates/design/changelog/2026-06-30-marquee-selection-now-works-inside-screens-multi-selected-la.md +6 -0
  233. package/corpus/templates/design/changelog/2026-06-30-motion-is-now-available-from-the-persistent-left-rail-and-th.md +6 -0
  234. package/corpus/templates/design/changelog/2026-06-30-motion-timeline-collapse-and-reopen-animations-feel-smoother.md +6 -0
  235. package/corpus/templates/design/changelog/2026-06-30-multi-select-outlines-now-stay-consistent-across-all-screens.md +6 -0
  236. package/corpus/templates/design/changelog/2026-06-30-new-board-shapes-now-start-with-neutral-gray-styling.md +6 -0
  237. package/corpus/templates/design/changelog/2026-06-30-new-designs-open-into-a-steadier-loading-state-before-the-ed.md +6 -0
  238. package/corpus/templates/design/changelog/2026-06-30-new-designs-show-a-loading-state-during-handoff-and-keep-edi.md +6 -0
  239. package/corpus/templates/design/changelog/2026-06-30-public-visual-edit-design-links-now-open-directly-instead-of.md +6 -0
  240. package/corpus/templates/design/changelog/2026-06-30-removed-the-confusing-states-section-from-the-design-editor-.md +6 -0
  241. package/corpus/templates/design/changelog/2026-06-30-removed-the-templates-gallery-from-design-navigation.md +6 -0
  242. package/corpus/templates/design/changelog/2026-06-30-share-stays-visible-as-soon-as-editable-designs-load.md +6 -0
  243. package/corpus/templates/design/changelog/2026-06-30-signed-out-save-and-share-controls-use-simpler-labels-and-op.md +6 -0
  244. package/corpus/templates/design/changelog/2026-06-30-text-added-on-the-canvas-now-focuses-cleanly-with-the-right-.md +6 -0
  245. package/corpus/templates/design/changelog/2026-06-30-the-design-editor-loading-skeleton-is-simpler-and-its-bottom.md +6 -0
  246. package/corpus/templates/design/changelog/2026-06-30-the-design-editor-loading-skeleton-now-follows-the-current-t.md +6 -0
  247. package/corpus/templates/design/changelog/2026-06-30-the-design-inspector-no-longer-shows-child-layout-controls-o.md +6 -0
  248. package/corpus/templates/design/changelog/2026-06-30-the-design-inspector-no-longer-shows-the-ask-ai-section-abov.md +6 -0
  249. package/corpus/templates/design/changelog/2026-06-30-the-design-review-panel-no-longer-shows-a-separate-inline-au.md +6 -0
  250. package/corpus/templates/design/changelog/2026-06-30-the-empty-designs-page-now-focuses-on-a-single-primary-new-d.md +6 -0
  251. package/corpus/templates/design/changelog/2026-06-30-the-layers-panel-header-stays-as-layers-while-multiple-items.md +6 -0
  252. package/corpus/templates/design/changelog/2026-06-30-the-missing-design-screen-now-uses-a-neutral-back-button.md +6 -0
  253. package/corpus/templates/design/changelog/2026-06-30-the-motion-timeline-now-closes-without-squeezing-the-canvas-.md +6 -0
  254. package/corpus/templates/design/changelog/2026-06-30-the-new-design-connect-ai-setup-now-lines-up-with-the-compos.md +6 -0
  255. package/corpus/templates/design/changelog/2026-06-30-the-screen-overview-board-now-blends-into-the-canvas-and-new.md +6 -0
  256. package/corpus/templates/design/changelog/2026-06-30-top-level-canvas-drops-now-show-screen-guides.md +6 -0
  257. package/corpus/templates/design/changelog/2026-06-30-top-level-canvas-layers-now-keep-a-transparent-backdrop-and-.md +6 -0
  258. package/corpus/templates/design/changelog/2026-06-30-top-level-canvas-layers-now-select-reliably-from-all-screens.md +6 -0
  259. package/corpus/templates/design/changelog/2026-06-30-visual-edit-can-open-and-refresh-localhost-screens-in-one-au.md +6 -0
  260. package/corpus/templates/design/e2e/helpers.ts +15 -4
  261. package/corpus/templates/design/server/db/index.ts +52 -0
  262. package/corpus/templates/design/server/plugins/agent-chat.ts +5 -0
  263. package/corpus/templates/design/server/plugins/auth.ts +1 -0
  264. package/corpus/templates/design/server/plugins/core-routes.ts +4 -0
  265. package/corpus/templates/design/shared/board-file.ts +380 -5
  266. package/corpus/templates/design/shared/board-objects.ts +2 -2
  267. package/corpus/templates/design/shared/code-layer.ts +50 -6
  268. package/corpus/templates/design/shared/motion-compiler.ts +27 -0
  269. package/corpus/templates/macros/app/components/DailyProgress.tsx +41 -37
  270. package/corpus/templates/macros/app/components/ExerciseCard.tsx +2 -2
  271. package/corpus/templates/macros/app/components/MealCard.tsx +2 -2
  272. package/corpus/templates/macros/app/components/VoiceDictation.tsx +1 -1
  273. package/corpus/templates/macros/app/components/WeeklyCaloriesChart.tsx +1 -1
  274. package/corpus/templates/macros/app/components/WeightCard.tsx +2 -2
  275. package/corpus/templates/macros/app/components/WeightTracker.tsx +1 -1
  276. package/corpus/templates/macros/app/components/layout/AppLayout.tsx +1 -1
  277. package/corpus/templates/macros/app/routes/_index.tsx +5 -5
  278. package/corpus/templates/macros/app/routes/analytics.tsx +1 -1
  279. package/corpus/templates/macros/changelog/2026-06-30-dashboard-loading-and-chart-surfaces-now-use-theme-aware-col.md +6 -0
  280. package/corpus/templates/mail/app/components/email/ComposeBubbleToolbar.tsx +14 -11
  281. package/corpus/templates/mail/app/global.css +3 -2
  282. package/corpus/templates/mail/changelog/2026-06-30-compose-floating-toolbars-now-use-theme-aware-colors-in-ligh.md +6 -0
  283. package/corpus/templates/plan/app/pages/PlansPage.tsx +2 -2
  284. package/corpus/templates/slides/app/components/deck/DeckCard.tsx +3 -3
  285. package/corpus/templates/slides/app/global.css +10 -0
  286. package/corpus/templates/slides/app/pages/Index.tsx +55 -51
  287. package/corpus/templates/slides/changelog/2026-06-30-deck-thumbnails-collapse-cleanly-to-one-column-when-the-chat.md +6 -0
  288. package/dist/agent/engine/anthropic-engine.d.ts +2 -2
  289. package/dist/agent/engine/anthropic-engine.d.ts.map +1 -1
  290. package/dist/agent/engine/builder-engine.d.ts +2 -2
  291. package/dist/agent/engine/builder-engine.d.ts.map +1 -1
  292. package/dist/agent/engine/builtin.js +1 -1
  293. package/dist/agent/engine/builtin.js.map +1 -1
  294. package/dist/agent/engine/output-tokens.js +1 -1
  295. package/dist/agent/engine/output-tokens.js.map +1 -1
  296. package/dist/agent/harness/acp-adapter.d.ts +4 -1
  297. package/dist/agent/harness/acp-adapter.d.ts.map +1 -1
  298. package/dist/agent/harness/acp-adapter.js +19 -2
  299. package/dist/agent/harness/acp-adapter.js.map +1 -1
  300. package/dist/agent/harness/ai-sdk-adapter.d.ts.map +1 -1
  301. package/dist/agent/harness/ai-sdk-adapter.js +3 -0
  302. package/dist/agent/harness/ai-sdk-adapter.js.map +1 -1
  303. package/dist/agent/harness/translate.d.ts.map +1 -1
  304. package/dist/agent/harness/translate.js +3 -0
  305. package/dist/agent/harness/translate.js.map +1 -1
  306. package/dist/agent/harness/types.d.ts +1 -0
  307. package/dist/agent/harness/types.d.ts.map +1 -1
  308. package/dist/agent/harness/types.js.map +1 -1
  309. package/dist/agent/model-config.d.ts +21 -20
  310. package/dist/agent/model-config.d.ts.map +1 -1
  311. package/dist/agent/model-config.js +31 -13
  312. package/dist/agent/model-config.js.map +1 -1
  313. package/dist/agent/production-agent.d.ts.map +1 -1
  314. package/dist/agent/production-agent.js +85 -10
  315. package/dist/agent/production-agent.js.map +1 -1
  316. package/dist/agent/thread-data-builder.d.ts.map +1 -1
  317. package/dist/agent/thread-data-builder.js +27 -6
  318. package/dist/agent/thread-data-builder.js.map +1 -1
  319. package/dist/agent/tool-call-journal.d.ts +11 -9
  320. package/dist/agent/tool-call-journal.d.ts.map +1 -1
  321. package/dist/agent/tool-call-journal.js +92 -40
  322. package/dist/agent/tool-call-journal.js.map +1 -1
  323. package/dist/agent/types.d.ts +5 -1
  324. package/dist/agent/types.d.ts.map +1 -1
  325. package/dist/agent/types.js.map +1 -1
  326. package/dist/cli/design-connect.d.ts.map +1 -1
  327. package/dist/cli/design-connect.js +84 -0
  328. package/dist/cli/design-connect.js.map +1 -1
  329. package/dist/cli/gateway-helpers.d.ts +4 -0
  330. package/dist/cli/gateway-helpers.d.ts.map +1 -1
  331. package/dist/cli/gateway-helpers.js +9 -0
  332. package/dist/cli/gateway-helpers.js.map +1 -1
  333. package/dist/cli/recap.d.ts.map +1 -1
  334. package/dist/cli/recap.js +0 -2
  335. package/dist/cli/recap.js.map +1 -1
  336. package/dist/cli/skills.d.ts.map +1 -1
  337. package/dist/cli/skills.js +54 -16
  338. package/dist/cli/skills.js.map +1 -1
  339. package/dist/cli/workspace-dev.d.ts.map +1 -1
  340. package/dist/cli/workspace-dev.js +33 -6
  341. package/dist/cli/workspace-dev.js.map +1 -1
  342. package/dist/client/AssistantChat.d.ts.map +1 -1
  343. package/dist/client/AssistantChat.js +72 -26
  344. package/dist/client/AssistantChat.js.map +1 -1
  345. package/dist/client/CommandMenu.d.ts +6 -2
  346. package/dist/client/CommandMenu.d.ts.map +1 -1
  347. package/dist/client/CommandMenu.js +25 -14
  348. package/dist/client/CommandMenu.js.map +1 -1
  349. package/dist/client/DefaultSpinner.d.ts.map +1 -1
  350. package/dist/client/DefaultSpinner.js +8 -1
  351. package/dist/client/DefaultSpinner.js.map +1 -1
  352. package/dist/client/chat/message-components.d.ts +7 -1
  353. package/dist/client/chat/message-components.d.ts.map +1 -1
  354. package/dist/client/chat/message-components.js +37 -1
  355. package/dist/client/chat/message-components.js.map +1 -1
  356. package/dist/client/chat/repo-helpers.d.ts +1 -0
  357. package/dist/client/chat/repo-helpers.d.ts.map +1 -1
  358. package/dist/client/chat/repo-helpers.js +59 -0
  359. package/dist/client/chat/repo-helpers.js.map +1 -1
  360. package/dist/client/chat/run-recovery.d.ts.map +1 -1
  361. package/dist/client/chat/run-recovery.js +4 -4
  362. package/dist/client/chat/run-recovery.js.map +1 -1
  363. package/dist/client/components/ApiKeySettings.js +8 -8
  364. package/dist/client/components/ApiKeySettings.js.map +1 -1
  365. package/dist/client/components/CodeRequiredDialog.d.ts.map +1 -1
  366. package/dist/client/components/CodeRequiredDialog.js +24 -15
  367. package/dist/client/components/CodeRequiredDialog.js.map +1 -1
  368. package/dist/client/components/MissingKeyCard.d.ts.map +1 -1
  369. package/dist/client/components/MissingKeyCard.js +11 -6
  370. package/dist/client/components/MissingKeyCard.js.map +1 -1
  371. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  372. package/dist/client/composer/TiptapComposer.js +4 -3
  373. package/dist/client/composer/TiptapComposer.js.map +1 -1
  374. package/dist/client/extensions/ExtensionsSidebarSection.d.ts.map +1 -1
  375. package/dist/client/extensions/ExtensionsSidebarSection.js +1 -1
  376. package/dist/client/extensions/ExtensionsSidebarSection.js.map +1 -1
  377. package/dist/client/guided-questions.d.ts.map +1 -1
  378. package/dist/client/guided-questions.js +6 -6
  379. package/dist/client/guided-questions.js.map +1 -1
  380. package/dist/client/integrations/IntegrationCard.js +1 -1
  381. package/dist/client/integrations/IntegrationCard.js.map +1 -1
  382. package/dist/client/integrations/IntegrationsPanel.js +1 -1
  383. package/dist/client/integrations/IntegrationsPanel.js.map +1 -1
  384. package/dist/client/onboarding/OnboardingBanner.js +2 -2
  385. package/dist/client/onboarding/OnboardingBanner.js.map +1 -1
  386. package/dist/client/onboarding/OnboardingPanel.js +23 -19
  387. package/dist/client/onboarding/OnboardingPanel.js.map +1 -1
  388. package/dist/client/resources/ResourceEditor.d.ts.map +1 -1
  389. package/dist/client/resources/ResourceEditor.js +13 -10
  390. package/dist/client/resources/ResourceEditor.js.map +1 -1
  391. package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
  392. package/dist/client/resources/ResourcesPanel.js +2 -1
  393. package/dist/client/resources/ResourcesPanel.js.map +1 -1
  394. package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
  395. package/dist/client/settings/SettingsPanel.js +8 -3
  396. package/dist/client/settings/SettingsPanel.js.map +1 -1
  397. package/dist/client/settings/useBuilderStatus.d.ts.map +1 -1
  398. package/dist/client/settings/useBuilderStatus.js +6 -38
  399. package/dist/client/settings/useBuilderStatus.js.map +1 -1
  400. package/dist/client/useProductionAgent.d.ts +2 -1
  401. package/dist/client/useProductionAgent.d.ts.map +1 -1
  402. package/dist/client/useProductionAgent.js.map +1 -1
  403. package/dist/deploy/build.js +1 -1
  404. package/dist/deploy/build.js.map +1 -1
  405. package/dist/notifications/routes.d.ts +3 -3
  406. package/dist/observability/routes.d.ts +3 -3
  407. package/dist/observability/traces.d.ts.map +1 -1
  408. package/dist/observability/traces.js.map +1 -1
  409. package/dist/onboarding/default-steps.js +1 -1
  410. package/dist/onboarding/default-steps.js.map +1 -1
  411. package/dist/scripts/agent-engines/manage-agent-engine.js +1 -1
  412. package/dist/scripts/agent-engines/manage-agent-engine.js.map +1 -1
  413. package/dist/scripts/agent-engines/set-agent-engine.js +1 -1
  414. package/dist/scripts/agent-engines/set-agent-engine.js.map +1 -1
  415. package/dist/server/agent-chat-plugin.d.ts +3 -0
  416. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  417. package/dist/server/agent-chat-plugin.js +134 -72
  418. package/dist/server/agent-chat-plugin.js.map +1 -1
  419. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  420. package/dist/server/core-routes-plugin.d.ts +3 -0
  421. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  422. package/dist/server/core-routes-plugin.js +4 -1
  423. package/dist/server/core-routes-plugin.js.map +1 -1
  424. package/dist/server/open-route.d.ts +9 -0
  425. package/dist/server/open-route.d.ts.map +1 -1
  426. package/dist/server/open-route.js +48 -38
  427. package/dist/server/open-route.js.map +1 -1
  428. package/dist/shared/reasoning-effort.js +3 -0
  429. package/dist/shared/reasoning-effort.js.map +1 -1
  430. package/dist/sharing/access.d.ts.map +1 -1
  431. package/dist/sharing/access.js +18 -2
  432. package/dist/sharing/access.js.map +1 -1
  433. package/dist/sharing/registry.d.ts +10 -0
  434. package/dist/sharing/registry.d.ts.map +1 -1
  435. package/dist/sharing/registry.js.map +1 -1
  436. package/dist/styles/agent-native.css +104 -20
  437. package/dist/styles/rich-markdown-editor.css +11 -10
  438. package/docs/content/cloneable-saas.mdx +2 -2
  439. package/docs/content/faq.mdx +1 -1
  440. package/docs/content/locales/ar-SA/cloneable-saas.mdx +2 -2
  441. package/docs/content/locales/ar-SA/faq.mdx +1 -1
  442. package/docs/content/locales/ar-SA/template-chat.mdx +1 -1
  443. package/docs/content/locales/de-DE/cloneable-saas.mdx +2 -2
  444. package/docs/content/locales/de-DE/faq.mdx +1 -1
  445. package/docs/content/locales/de-DE/template-chat.mdx +1 -1
  446. package/docs/content/locales/es-ES/cloneable-saas.mdx +2 -2
  447. package/docs/content/locales/es-ES/faq.mdx +1 -1
  448. package/docs/content/locales/es-ES/template-chat.mdx +1 -1
  449. package/docs/content/locales/fr-FR/cloneable-saas.mdx +2 -2
  450. package/docs/content/locales/fr-FR/faq.mdx +1 -1
  451. package/docs/content/locales/fr-FR/template-chat.mdx +1 -1
  452. package/docs/content/locales/hi-IN/cloneable-saas.mdx +2 -2
  453. package/docs/content/locales/hi-IN/faq.mdx +1 -1
  454. package/docs/content/locales/hi-IN/template-chat.mdx +1 -1
  455. package/docs/content/locales/ja-JP/cloneable-saas.mdx +2 -2
  456. package/docs/content/locales/ja-JP/faq.mdx +1 -1
  457. package/docs/content/locales/ja-JP/template-chat.mdx +1 -1
  458. package/docs/content/locales/ko-KR/cloneable-saas.mdx +2 -2
  459. package/docs/content/locales/ko-KR/faq.mdx +1 -1
  460. package/docs/content/locales/ko-KR/template-chat.mdx +1 -1
  461. package/docs/content/locales/pt-BR/cloneable-saas.mdx +2 -2
  462. package/docs/content/locales/pt-BR/faq.mdx +1 -1
  463. package/docs/content/locales/pt-BR/template-chat.mdx +1 -1
  464. package/docs/content/locales/zh-CN/cloneable-saas.mdx +2 -2
  465. package/docs/content/locales/zh-CN/faq.mdx +1 -1
  466. package/docs/content/locales/zh-CN/template-chat.mdx +1 -1
  467. package/docs/content/locales/zh-TW/cloneable-saas.mdx +2 -2
  468. package/docs/content/locales/zh-TW/faq.mdx +1 -1
  469. package/docs/content/locales/zh-TW/template-chat.mdx +1 -1
  470. package/docs/content/template-chat.mdx +1 -1
  471. package/package.json +1 -1
  472. package/corpus/templates/design/app/components/design/LocalSourceEditBanner.tsx +0 -157
  473. package/corpus/templates/design/app/lib/design-templates.ts +0 -1305
  474. package/corpus/templates/design/app/pages/Templates.tsx +0 -279
@@ -162,7 +162,9 @@ export function CodeRequiredDialog({
162
162
  Object.assign(e.currentTarget.style, s.optionCardHover)
163
163
  }
164
164
  onMouseLeave={(e) =>
165
- Object.assign(e.currentTarget.style, { borderColor: "#e5e7eb" })
165
+ Object.assign(e.currentTarget.style, {
166
+ borderColor: "hsl(var(--border))",
167
+ })
166
168
  }
167
169
  >
168
170
  <div style={s.optionIcon}>
@@ -190,7 +192,9 @@ export function CodeRequiredDialog({
190
192
  Object.assign(e.currentTarget.style, s.optionCardHover)
191
193
  }
192
194
  onMouseLeave={(e) =>
193
- Object.assign(e.currentTarget.style, { borderColor: "#e5e7eb" })
195
+ Object.assign(e.currentTarget.style, {
196
+ borderColor: "hsl(var(--border))",
197
+ })
194
198
  }
195
199
  onClick={handleBuilderAgent}
196
200
  >
@@ -254,7 +258,7 @@ export function CodeRequiredDialog({
254
258
  }
255
259
  onMouseLeave={(e) =>
256
260
  Object.assign(e.currentTarget.style, {
257
- borderColor: "#e5e7eb",
261
+ borderColor: "hsl(var(--border))",
258
262
  })
259
263
  }
260
264
  >
@@ -294,7 +298,13 @@ export function CodeRequiredDialog({
294
298
  )}
295
299
 
296
300
  {error && (
297
- <p style={{ color: "#ef4444", fontSize: 12, marginTop: 12 }}>
301
+ <p
302
+ style={{
303
+ color: "hsl(var(--destructive))",
304
+ fontSize: 12,
305
+ marginTop: 12,
306
+ }}
307
+ >
298
308
  {error}
299
309
  </p>
300
310
  )}
@@ -326,8 +336,9 @@ const s: Record<string, React.CSSProperties> = {
326
336
  },
327
337
  dialog: {
328
338
  position: "relative",
329
- background: "#fff",
339
+ background: "hsl(var(--popover))",
330
340
  borderRadius: "12px",
341
+ border: "1px solid hsl(var(--border))",
331
342
  maxWidth: "460px",
332
343
  width: "100%",
333
344
  padding: "24px",
@@ -335,7 +346,7 @@ const s: Record<string, React.CSSProperties> = {
335
346
  "0 20px 25px -5px rgba(0,0,0,.1), 0 8px 10px -6px rgba(0,0,0,.1)",
336
347
  fontFamily:
337
348
  '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
338
- color: "#111827",
349
+ color: "hsl(var(--popover-foreground))",
339
350
  },
340
351
  header: {
341
352
  display: "flex",
@@ -348,11 +359,11 @@ const s: Record<string, React.CSSProperties> = {
348
359
  width: "40px",
349
360
  height: "40px",
350
361
  borderRadius: "10px",
351
- background: "#f3f4f6",
362
+ background: "hsl(var(--muted))",
352
363
  display: "flex",
353
364
  alignItems: "center",
354
365
  justifyContent: "center",
355
- color: "#6b7280",
366
+ color: "hsl(var(--muted-foreground))",
356
367
  },
357
368
  title: {
358
369
  margin: 0,
@@ -363,7 +374,7 @@ const s: Record<string, React.CSSProperties> = {
363
374
  subtitle: {
364
375
  margin: "4px 0 0",
365
376
  fontSize: "13px",
366
- color: "#6b7280",
377
+ color: "hsl(var(--muted-foreground))",
367
378
  lineHeight: "1.5",
368
379
  },
369
380
  options: {
@@ -377,7 +388,7 @@ const s: Record<string, React.CSSProperties> = {
377
388
  alignItems: "flex-start",
378
389
  gap: "14px",
379
390
  padding: "14px",
380
- border: "1px solid #e5e7eb",
391
+ border: "1px solid hsl(var(--border))",
381
392
  borderRadius: "10px",
382
393
  background: "transparent",
383
394
  cursor: "pointer",
@@ -388,7 +399,7 @@ const s: Record<string, React.CSSProperties> = {
388
399
  color: "inherit",
389
400
  },
390
401
  optionCardHover: {
391
- borderColor: "#a5b4fc",
402
+ borderColor: "hsl(var(--ring))",
392
403
  },
393
404
  optionLink: {
394
405
  textDecoration: "none",
@@ -410,7 +421,7 @@ const s: Record<string, React.CSSProperties> = {
410
421
  },
411
422
  optionDesc: {
412
423
  fontSize: "12px",
413
- color: "#6b7280",
424
+ color: "hsl(var(--muted-foreground))",
414
425
  lineHeight: "1.5",
415
426
  },
416
427
  badge: {
@@ -420,7 +431,7 @@ const s: Record<string, React.CSSProperties> = {
420
431
  fontSize: "10px",
421
432
  fontWeight: 600,
422
433
  color: "#00B5FF",
423
- background: "#e0f2fe",
434
+ background: "hsl(var(--primary) / 0.08)",
424
435
  padding: "2px 8px",
425
436
  borderRadius: "99px",
426
437
  textTransform: "uppercase",
@@ -435,7 +446,7 @@ const s: Record<string, React.CSSProperties> = {
435
446
  cursor: "pointer",
436
447
  padding: "6px",
437
448
  borderRadius: "6px",
438
- color: "#9ca3af",
449
+ color: "hsl(var(--muted-foreground))",
439
450
  display: "flex",
440
451
  alignItems: "center",
441
452
  justifyContent: "center",
@@ -445,7 +456,7 @@ const s: Record<string, React.CSSProperties> = {
445
456
  padding: "12px",
446
457
  borderRadius: "8px",
447
458
  border: "1px solid #22c55e40",
448
- background: "#f0fdf4",
459
+ background: "rgba(34,197,94,0.08)",
449
460
  display: "flex",
450
461
  flexDirection: "column",
451
462
  gap: "4px",
@@ -12,12 +12,13 @@ export function MissingKeyCard({
12
12
  return (
13
13
  <div
14
14
  style={{
15
- border: "1px solid #e2e8f0",
15
+ border: "1px solid hsl(var(--border))",
16
16
  borderRadius: 8,
17
17
  padding: "24px 28px",
18
18
  maxWidth: 420,
19
19
  margin: "32px auto",
20
- background: "#f8fafc",
20
+ background: "hsl(var(--card))",
21
+ color: "hsl(var(--card-foreground))",
21
22
  textAlign: "center",
22
23
  }}
23
24
  >
@@ -25,13 +26,19 @@ export function MissingKeyCard({
25
26
  style={{
26
27
  fontSize: 14,
27
28
  fontWeight: 600,
28
- color: "#334155",
29
+ color: "hsl(var(--card-foreground))",
29
30
  marginBottom: 8,
30
31
  }}
31
32
  >
32
33
  {label}
33
34
  </div>
34
- <p style={{ fontSize: 13, color: "#64748b", margin: "0 0 16px" }}>
35
+ <p
36
+ style={{
37
+ fontSize: 13,
38
+ color: "hsl(var(--muted-foreground))",
39
+ margin: "0 0 16px",
40
+ }}
41
+ >
35
42
  {message}
36
43
  </p>
37
44
  <a
@@ -41,8 +48,8 @@ export function MissingKeyCard({
41
48
  padding: "8px 16px",
42
49
  fontSize: 13,
43
50
  fontWeight: 500,
44
- color: "#fff",
45
- background: "#3b82f6",
51
+ color: "hsl(var(--primary-foreground))",
52
+ background: "hsl(var(--primary))",
46
53
  borderRadius: 6,
47
54
  textDecoration: "none",
48
55
  }}
@@ -750,6 +750,7 @@ const FRIENDLY_MODEL_NAMES: Record<string, string> = {
750
750
  "qwen3-coder": "Qwen3 Coder",
751
751
  "kimi-k2-5": "Kimi K2.5",
752
752
  "deepseek-v3-1": "DeepSeek v3.1",
753
+ "z-ai/glm-5.2": "GLM 5.2",
753
754
  };
754
755
 
755
756
  export const MODEL_SELECTOR_POPOVER_STYLE = {
@@ -759,13 +760,13 @@ export const MODEL_SELECTOR_POPOVER_STYLE = {
759
760
 
760
761
  function friendlyModelName(model: string): string {
761
762
  if (FRIENDLY_MODEL_NAMES[model]) return FRIENDLY_MODEL_NAMES[model];
762
- // Claude: claude-{tier}-{major}-{minor}[-dateYYYYMMDD] → Tier Major.Minor
763
+ // Claude: claude-{tier}-{major}[-minor][-dateYYYYMMDD] → Tier Major[.Minor]
763
764
  const claude = model.match(
764
- /^claude-(opus|sonnet|haiku)-(\d+)-(\d+)(?:-\d{8,})?$/,
765
+ /^claude-(opus|sonnet|haiku)-(\d+)(?:-(\d+))?(?:-\d{8,})?$/,
765
766
  );
766
767
  if (claude) {
767
768
  const tier = claude[1][0].toUpperCase() + claude[1].slice(1);
768
- return `${tier} ${claude[2]}.${claude[3]}`;
769
+ return `${tier} ${claude[2]}${claude[3] ? `.${claude[3]}` : ""}`;
769
770
  }
770
771
  // GPT: gpt-{major}-{minor}[-suffix] or gpt-{major}.{minor}[-suffix]
771
772
  if (model.startsWith("gpt-")) {
@@ -596,7 +596,6 @@ function ExtensionSortMenu({
596
596
  <DropdownMenuRadioItem value="alphabetical">
597
597
  {copy.alphabetical}
598
598
  </DropdownMenuRadioItem>
599
- <DropdownMenuSeparator />
600
599
  <DropdownMenuRadioItem value="manual">
601
600
  {copy.manualOrder}
602
601
  </DropdownMenuRadioItem>
@@ -1,7 +1,6 @@
1
1
  import {
2
2
  IconCheck,
3
3
  IconChevronRight,
4
- IconHelpCircle,
5
4
  IconUpload,
6
5
  IconX,
7
6
  } from "@tabler/icons-react";
@@ -433,8 +432,8 @@ export function GuidedQuestionFlow({
433
432
  questions,
434
433
  onSubmit,
435
434
  onSkip,
436
- title = "A few choices before I generate",
437
- description = "Pick what you know. Use Other for anything that does not fit, or let the agent decide.",
435
+ title = "Before I generate",
436
+ description = "Use Other for custom details, or let the agent decide.",
438
437
  skipLabel = "Skip",
439
438
  submitLabel = "Continue",
440
439
  className,
@@ -465,28 +464,23 @@ export function GuidedQuestionFlow({
465
464
  return (
466
465
  <div
467
466
  className={cn(
468
- "flex h-full w-full items-center justify-center bg-background text-foreground",
467
+ "guided-question-flow flex h-full w-full items-center justify-center bg-background text-foreground",
469
468
  className,
470
469
  )}
471
470
  >
472
- <div className="flex max-h-full w-full max-w-3xl flex-col px-4 py-6 sm:px-8 sm:py-10">
473
- <div className="mb-6 flex items-start gap-3">
474
- <div className="mt-0.5 flex h-9 w-9 shrink-0 items-center justify-center rounded-md border border-border bg-muted/40 text-primary">
475
- <IconHelpCircle className="h-5 w-5" />
476
- </div>
477
- <div className="min-w-0">
478
- <h2 className="text-xl font-semibold tracking-normal text-foreground sm:text-2xl">
479
- {title}
480
- </h2>
481
- {description && (
482
- <p className="mt-1 max-w-2xl text-sm leading-5 text-muted-foreground">
483
- {description}
484
- </p>
485
- )}
486
- </div>
471
+ <div className="guided-question-flow-inner flex max-h-full w-full max-w-3xl flex-col px-3 py-4">
472
+ <div className="guided-question-flow-header mb-4 min-w-0">
473
+ <h2 className="guided-question-flow-title text-lg font-semibold leading-tight tracking-normal text-foreground">
474
+ {title}
475
+ </h2>
476
+ {description && (
477
+ <p className="guided-question-flow-description mt-1 max-w-2xl text-sm leading-5 text-muted-foreground">
478
+ {description}
479
+ </p>
480
+ )}
487
481
  </div>
488
482
 
489
- <div className="min-h-0 flex-1 space-y-4 overflow-y-auto pe-1">
483
+ <div className="guided-question-flow-list min-h-0 flex-1 overflow-y-auto pe-1">
490
484
  {questions.map((question, index) => (
491
485
  <QuestionCard
492
486
  key={question.id}
@@ -501,7 +495,7 @@ export function GuidedQuestionFlow({
501
495
  ))}
502
496
  </div>
503
497
 
504
- <div className="mt-5 flex shrink-0 items-center justify-between gap-4 border-t border-border pt-4">
498
+ <div className="guided-question-flow-footer mt-4 flex shrink-0 items-center justify-between gap-3 border-t border-border pt-3">
505
499
  <div className="flex items-center gap-1.5">
506
500
  {questions.map((question, index) => (
507
501
  <span
@@ -553,9 +547,9 @@ function QuestionCard({
553
547
  onSubmitAnswer: (value: unknown) => void;
554
548
  }) {
555
549
  return (
556
- <section className="rounded-lg border border-border bg-card/65 p-4 shadow-sm">
557
- <div className="mb-3 flex gap-3">
558
- <div className="flex h-6 min-w-6 items-center justify-center rounded-md bg-muted text-xs font-medium text-muted-foreground">
550
+ <section className="guided-question-card border-t border-border/60 py-3 first:border-t-0 first:pt-0 last:pb-0">
551
+ <div className="mb-2 flex gap-2.5">
552
+ <div className="guided-question-index mt-0.5 min-w-4 text-xs font-medium tabular-nums text-muted-foreground">
559
553
  {index + 1}
560
554
  </div>
561
555
  <div className="min-w-0">
@@ -670,8 +664,8 @@ function TextOptions({
670
664
  const allowOther = question.allowOther !== false;
671
665
 
672
666
  return (
673
- <div className="space-y-3">
674
- <div className="grid gap-2 sm:grid-cols-2">
667
+ <div className="space-y-2.5">
668
+ <div className="guided-question-flow-options grid grid-cols-1 gap-2">
675
669
  {options.map((option) => (
676
670
  <OptionButton
677
671
  key={`${option.value}:${option.label}`}
@@ -724,7 +718,7 @@ function OptionButton({
724
718
  onClick={onClick}
725
719
  aria-pressed={selected}
726
720
  className={cn(
727
- "group flex min-h-[56px] cursor-pointer items-start gap-2 rounded-md border px-3 py-2 text-start transition-colors",
721
+ "group flex min-h-11 min-w-0 cursor-pointer items-start gap-2 rounded-md border px-2.5 py-2 text-start transition-colors",
728
722
  selected
729
723
  ? "border-primary bg-primary/10 text-foreground ring-2 ring-primary/25"
730
724
  : "border-border bg-muted/30 text-muted-foreground hover:border-muted-foreground/50 hover:bg-muted/45 hover:text-foreground",
@@ -38,7 +38,7 @@ function StatusDot({
38
38
  ? "bg-green-500"
39
39
  : configured
40
40
  ? "bg-yellow-500"
41
- : "bg-gray-400";
41
+ : "bg-muted-foreground/55";
42
42
  return <span className={`inline-block h-2 w-2 rounded-full ${color}`} />;
43
43
  }
44
44
 
@@ -598,7 +598,7 @@ export function IntegrationsPanel() {
598
598
  ? "bg-green-500"
599
599
  : s.configured
600
600
  ? "bg-yellow-500"
601
- : "bg-gray-400"
601
+ : "bg-muted-foreground/55"
602
602
  }`}
603
603
  />
604
604
  )}
@@ -53,8 +53,8 @@ const styles: Record<string, React.CSSProperties> = {
53
53
  width: "100%",
54
54
  padding: "8px 12px",
55
55
  border: "none",
56
- borderBottom: "1px solid rgba(255,255,255,0.06)",
57
- background: "rgba(59,130,246,0.06)",
56
+ borderBottom: "1px solid hsl(var(--border) / 0.7)",
57
+ background: "hsl(var(--primary) / 0.06)",
58
58
  color: "inherit",
59
59
  fontSize: 12,
60
60
  cursor: "pointer",
@@ -749,9 +749,9 @@ function buttonPrimary(primary: boolean | undefined): React.CSSProperties {
749
749
  borderRadius: 6,
750
750
  border: primary
751
751
  ? "1px solid transparent"
752
- : "1px solid rgba(255,255,255,0.15)",
753
- background: primary ? "#3b82f6" : "rgba(255,255,255,0.04)",
754
- color: primary ? "#fff" : "inherit",
752
+ : "1px solid hsl(var(--border) / 0.8)",
753
+ background: primary ? "hsl(var(--primary))" : "hsl(var(--muted) / 0.4)",
754
+ color: primary ? "hsl(var(--primary-foreground))" : "inherit",
755
755
  fontSize: 12,
756
756
  fontWeight: 500,
757
757
  cursor: "pointer",
@@ -761,9 +761,9 @@ function buttonPrimary(primary: boolean | undefined): React.CSSProperties {
761
761
  function buttonDisabled(primary: boolean | undefined): React.CSSProperties {
762
762
  return {
763
763
  ...buttonPrimary(primary),
764
- border: "1px solid rgba(255,255,255,0.12)",
765
- background: primary ? "rgba(255,255,255,0.08)" : "rgba(255,255,255,0.04)",
766
- color: "rgba(255,255,255,0.5)",
764
+ border: "1px solid hsl(var(--border) / 0.6)",
765
+ background: "hsl(var(--muted) / 0.35)",
766
+ color: "hsl(var(--muted-foreground))",
767
767
  cursor: "not-allowed",
768
768
  };
769
769
  }
@@ -792,8 +792,8 @@ function badgeStyle(
792
792
 
793
793
  const styles: Record<string, React.CSSProperties> = {
794
794
  root: {
795
- borderBottom: "1px solid rgba(255,255,255,0.06)",
796
- background: "rgba(255,255,255,0.02)",
795
+ borderBottom: "1px solid hsl(var(--border) / 0.7)",
796
+ background: "hsl(var(--muted) / 0.25)",
797
797
  fontSize: 12,
798
798
  display: "flex",
799
799
  flexDirection: "column",
@@ -804,7 +804,7 @@ const styles: Record<string, React.CSSProperties> = {
804
804
  display: "flex",
805
805
  alignItems: "center",
806
806
  justifyContent: "space-between",
807
- borderBottom: "1px solid rgba(255,255,255,0.06)",
807
+ borderBottom: "1px solid hsl(var(--border) / 0.7)",
808
808
  background: "rgba(34,197,94,0.04)",
809
809
  fontSize: 12,
810
810
  },
@@ -915,7 +915,7 @@ const styles: Record<string, React.CSSProperties> = {
915
915
  width: 16,
916
916
  height: 16,
917
917
  borderRadius: "50%",
918
- border: "1px solid rgba(255,255,255,0.2)",
918
+ border: "1px solid hsl(var(--border))",
919
919
  },
920
920
  cardBody: {
921
921
  paddingBlock: "0 10px",
@@ -937,9 +937,9 @@ const styles: Record<string, React.CSSProperties> = {
937
937
  },
938
938
  method: {
939
939
  padding: "8px 10px",
940
- border: "1px solid rgba(255,255,255,0.06)",
940
+ border: "1px solid hsl(var(--border) / 0.65)",
941
941
  borderRadius: 6,
942
- background: "rgba(255,255,255,0.02)",
942
+ background: "hsl(var(--card) / 0.55)",
943
943
  display: "flex",
944
944
  flexDirection: "column",
945
945
  gap: 6,
@@ -967,8 +967,8 @@ const styles: Record<string, React.CSSProperties> = {
967
967
  gap: 8,
968
968
  padding: "7px 8px",
969
969
  borderRadius: 6,
970
- border: "1px solid rgba(255,255,255,0.08)",
971
- background: "rgba(255,255,255,0.025)",
970
+ border: "1px solid hsl(var(--border) / 0.7)",
971
+ background: "hsl(var(--muted) / 0.35)",
972
972
  color: "inherit",
973
973
  cursor: "pointer",
974
974
  fontSize: 11,
@@ -996,8 +996,8 @@ const styles: Record<string, React.CSSProperties> = {
996
996
  padding: "6px 8px",
997
997
  fontSize: 12,
998
998
  borderRadius: 5,
999
- border: "1px solid rgba(255,255,255,0.1)",
1000
- background: "rgba(0,0,0,0.25)",
999
+ border: "1px solid hsl(var(--input))",
1000
+ background: "hsl(var(--background))",
1001
1001
  color: "inherit",
1002
1002
  outline: "none",
1003
1003
  boxSizing: "border-box" as const,
@@ -1007,13 +1007,17 @@ const styles: Record<string, React.CSSProperties> = {
1007
1007
  padding: "6px 8px",
1008
1008
  fontSize: 12,
1009
1009
  borderRadius: 5,
1010
- border: "1px solid rgba(255,255,255,0.1)",
1011
- background: "rgba(0,0,0,0.25)",
1010
+ border: "1px solid hsl(var(--input))",
1011
+ background: "hsl(var(--background))",
1012
1012
  color: "inherit",
1013
1013
  outline: "none",
1014
1014
  boxSizing: "border-box" as const,
1015
1015
  },
1016
- methodHint: { margin: 0, fontSize: 11, color: "rgba(255,255,255,0.62)" },
1016
+ methodHint: {
1017
+ margin: 0,
1018
+ fontSize: 11,
1019
+ color: "hsl(var(--muted-foreground))",
1020
+ },
1017
1021
  errText: { margin: 0, fontSize: 11, color: "#f87171" },
1018
1022
  footer: {
1019
1023
  padding: "0 12px 10px",
@@ -11,6 +11,10 @@ import React, {
11
11
  } from "react";
12
12
  import { Markdown } from "tiptap-markdown";
13
13
 
14
+ import {
15
+ CLAUDE_SONNET_MODEL_ID,
16
+ CLAUDE_SONNET_MODEL_LABEL,
17
+ } from "../../agent/model-config.js";
14
18
  import {
15
19
  type ParsedFrontmatter,
16
20
  getRemoteAgentIdFromPath,
@@ -189,7 +193,9 @@ function FrontmatterBar({
189
193
  <option value="inherit">Default model</option>
190
194
  <option value="claude-fable-5">Claude Fable 5</option>
191
195
  <option value="claude-opus-4-8">Claude Opus 4.8</option>
192
- <option value="claude-sonnet-4-6">Claude Sonnet 4.6</option>
196
+ <option value={CLAUDE_SONNET_MODEL_ID}>
197
+ {CLAUDE_SONNET_MODEL_LABEL}
198
+ </option>
193
199
  <option value="claude-haiku-4-5-20251001">Claude Haiku 4.5</option>
194
200
  </select>
195
201
  ) : null}
@@ -665,7 +671,7 @@ function InlineBubbleToolbar({ editor }: { editor: any }) {
665
671
  onClick={handleSetLink}
666
672
  style={{
667
673
  fontSize: 11,
668
- color: "#60a5fa",
674
+ color: "hsl(var(--primary))",
669
675
  padding: "2px 6px",
670
676
  fontWeight: 500,
671
677
  background: "none",
@@ -689,7 +695,7 @@ function InlineBubbleToolbar({ editor }: { editor: any }) {
689
695
  style={{
690
696
  width: 1,
691
697
  height: 16,
692
- background: "rgba(255,255,255,0.2)",
698
+ background: "hsl(var(--border))",
693
699
  margin: "0 2px",
694
700
  }}
695
701
  />
@@ -1437,28 +1443,30 @@ const editorStyles = `
1437
1443
  .re-bubble-toolbar {
1438
1444
  display: flex;
1439
1445
  align-items: center;
1440
- background: hsl(0 0% 15%);
1446
+ background: hsl(var(--popover));
1447
+ color: hsl(var(--popover-foreground));
1448
+ border: 1px solid hsl(var(--border));
1441
1449
  border-radius: 6px;
1442
1450
  padding: 3px;
1443
- box-shadow: 0 4px 16px rgb(0 0 0 / 0.25), 0 0 0 1px rgb(255 255 255 / 0.06);
1451
+ box-shadow: 0 4px 16px rgb(0 0 0 / 0.12);
1444
1452
  }
1445
1453
  .re-bubble-btn {
1446
1454
  padding: 3px 6px;
1447
1455
  border-radius: 4px;
1448
1456
  font-size: 12px;
1449
- color: rgba(255,255,255,0.75);
1457
+ color: hsl(var(--muted-foreground));
1450
1458
  background: none;
1451
1459
  border: none;
1452
1460
  cursor: pointer;
1453
1461
  line-height: 1;
1454
1462
  }
1455
1463
  .re-bubble-btn:hover {
1456
- background: rgba(255,255,255,0.12);
1457
- color: white;
1464
+ background: hsl(var(--accent));
1465
+ color: hsl(var(--accent-foreground));
1458
1466
  }
1459
1467
  .re-bubble-btn--active {
1460
- background: rgba(255,255,255,0.18);
1461
- color: white;
1468
+ background: hsl(var(--accent));
1469
+ color: hsl(var(--accent-foreground));
1462
1470
  }
1463
1471
 
1464
1472
  /* Slash command menu */
@@ -22,6 +22,10 @@ import React, {
22
22
  useMemo,
23
23
  } from "react";
24
24
 
25
+ import {
26
+ CLAUDE_SONNET_MODEL_ID,
27
+ CLAUDE_SONNET_MODEL_LABEL,
28
+ } from "../../agent/model-config.js";
25
29
  import { serializeFrontmatter } from "../../resources/metadata.js";
26
30
  import { sendToAgentChat } from "../agent-chat.js";
27
31
  import { agentNativePath } from "../api-path.js";
@@ -90,7 +94,7 @@ const AGENT_MODEL_OPTIONS = [
90
94
  { value: "inherit", label: "Default model" },
91
95
  { value: "claude-fable-5", label: "Claude Fable 5" },
92
96
  { value: "claude-opus-4-8", label: "Claude Opus 4.8" },
93
- { value: "claude-sonnet-4-6", label: "Claude Sonnet 4.6" },
97
+ { value: CLAUDE_SONNET_MODEL_ID, label: CLAUDE_SONNET_MODEL_LABEL },
94
98
  { value: "claude-haiku-4-5-20251001", label: "Claude Haiku 4.5" },
95
99
  ] as const;
96
100
 
@@ -499,12 +499,13 @@ function ManualSetupCard({
499
499
  // ─── LLM helpers ────────────────────────────────────────────────────────────
500
500
 
501
501
  function friendlyModelName(model: string): string {
502
+ if (model === "z-ai/glm-5.2") return "GLM 5.2";
502
503
  const claude = model.match(
503
- /^claude-(opus|sonnet|haiku)-(\d+)-(\d+)(?:-\d{8,})?$/,
504
+ /^claude-(opus|sonnet|haiku)-(\d+)(?:-(\d+))?(?:-\d{8,})?$/,
504
505
  );
505
506
  if (claude) {
506
507
  const tier = claude[1][0].toUpperCase() + claude[1].slice(1);
507
- return `${tier} ${claude[2]}.${claude[3]}`;
508
+ return `${tier} ${claude[2]}${claude[3] ? `.${claude[3]}` : ""}`;
508
509
  }
509
510
  if (model.startsWith("gpt-")) return `GPT-${model.slice(4)}`;
510
511
  if (/^o\d/.test(model)) return model;
@@ -718,6 +719,10 @@ function LLMSectionInner({
718
719
  envVar,
719
720
  builderConnected,
720
721
  });
722
+ const manualSetupHint =
723
+ selectedEngine === "ai-sdk:openrouter"
724
+ ? "Provide an OpenRouter key to use OpenRouter models like GLM 5.2."
725
+ : "Choose your AI provider and model.";
721
726
 
722
727
  const engineChanged =
723
728
  selectedEngine !== currentEngine || selectedModel !== currentModel;
@@ -889,7 +894,7 @@ function LLMSectionInner({
889
894
  />
890
895
  {!builderConnected && (
891
896
  <ManualSetupCard
892
- hint="Choose your AI provider and model."
897
+ hint={manualSetupHint}
893
898
  docsUrl={PROVIDER_DOCS[selectedEngine]}
894
899
  sourceBadge={sourceBadge}
895
900
  docsLabel="Get an API key"