@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
@@ -151,6 +151,7 @@ import {
151
151
  useExecuteBuilderSourceExecution,
152
152
  useMoveDatabaseItem,
153
153
  usePrepareBuilderSourceReview,
154
+ useProcessBuilderBodyHydration,
154
155
  useRefreshContentDatabaseSource,
155
156
  useSetContentDatabaseSourceWriteMode,
156
157
  useSuggestSourceJoinKey,
@@ -479,6 +480,7 @@ function DatabaseTable({
479
480
  const changeSourceRole = useChangeContentDatabaseSourceRole(document.id);
480
481
  const refreshSource = useRefreshContentDatabaseSource(document.id);
481
482
  const disconnectSource = useDisconnectContentDatabaseSource(document.id);
483
+ const processBuilderBodies = useProcessBuilderBodyHydration(document.id);
482
484
  const prepareBuilderReview = usePrepareBuilderSourceReview(document.id);
483
485
  const executeBuilderExecution = useExecuteBuilderSourceExecution(document.id);
484
486
  const setSourceWriteMode = useSetContentDatabaseSourceWriteMode(document.id);
@@ -1570,6 +1572,9 @@ function DatabaseTable({
1570
1572
  sourceId,
1571
1573
  })
1572
1574
  }
1575
+ onHydrateBuilderBodies={(sourceId) =>
1576
+ processBuilderBodies.mutate({ sourceId })
1577
+ }
1573
1578
  onDisconnectSource={(sourceId) =>
1574
1579
  disconnectSource.mutate(
1575
1580
  {
@@ -1635,6 +1640,7 @@ function DatabaseTable({
1635
1640
  attachSource.isPending ||
1636
1641
  changeSourceRole.isPending ||
1637
1642
  refreshSource.isPending ||
1643
+ processBuilderBodies.isPending ||
1638
1644
  disconnectSource.isPending ||
1639
1645
  prepareBuilderReview.isPending ||
1640
1646
  executeBuilderExecution.isPending ||
@@ -3539,6 +3545,7 @@ function DatabaseSettingsPanelSheet({
3539
3545
  onChangeSourceRole,
3540
3546
  onDisconnectSecondary,
3541
3547
  onRefreshSource,
3548
+ onHydrateBuilderBodies,
3542
3549
  onDisconnectSource,
3543
3550
  onReviewBuilderUpdate,
3544
3551
  onSetBuilderLiveWrites,
@@ -3580,6 +3587,7 @@ function DatabaseSettingsPanelSheet({
3580
3587
  ) => Promise<ContentDatabaseResponse>;
3581
3588
  onDisconnectSecondary: (sourceId: string) => void;
3582
3589
  onRefreshSource: (sourceId?: string) => void;
3590
+ onHydrateBuilderBodies: (sourceId: string) => void;
3583
3591
  onDisconnectSource: (sourceId?: string) => void;
3584
3592
  onReviewBuilderUpdate: () => void;
3585
3593
  onSetBuilderLiveWrites: (enabled: boolean) => void;
@@ -3677,6 +3685,7 @@ function DatabaseSettingsPanelSheet({
3677
3685
  setSourceNavStack([]);
3678
3686
  }}
3679
3687
  onRefreshSource={onRefreshSource}
3688
+ onHydrateBuilderBodies={onHydrateBuilderBodies}
3680
3689
  onDisconnectSource={onDisconnectSource}
3681
3690
  onReviewBuilderUpdate={onReviewBuilderUpdate}
3682
3691
  onSetBuilderLiveWrites={onSetBuilderLiveWrites}
@@ -3976,6 +3985,7 @@ function DatabaseSettingsSourcePanel({
3976
3985
  onChangeSourceRole,
3977
3986
  onDisconnectSecondary,
3978
3987
  onRefreshSource,
3988
+ onHydrateBuilderBodies,
3979
3989
  onDisconnectSource,
3980
3990
  onReviewBuilderUpdate,
3981
3991
  onSetBuilderLiveWrites,
@@ -4004,6 +4014,7 @@ function DatabaseSettingsSourcePanel({
4004
4014
  ) => Promise<ContentDatabaseResponse>;
4005
4015
  onDisconnectSecondary: (sourceId: string) => void;
4006
4016
  onRefreshSource: (sourceId?: string) => void;
4017
+ onHydrateBuilderBodies: (sourceId: string) => void;
4007
4018
  onDisconnectSource: (sourceId?: string) => void;
4008
4019
  onReviewBuilderUpdate: () => void;
4009
4020
  onSetBuilderLiveWrites: (enabled: boolean) => void;
@@ -4442,6 +4453,15 @@ function DatabaseSettingsSourcePanel({
4442
4453
  </div>
4443
4454
  ) : null}
4444
4455
 
4456
+ {isBuilderSource && source.bodyHydration ? (
4457
+ <BuilderBodyHydrationCard
4458
+ source={source}
4459
+ canEdit={canEdit}
4460
+ pending={sourceActionPending}
4461
+ onHydrate={() => onHydrateBuilderBodies(source.id)}
4462
+ />
4463
+ ) : null}
4464
+
4445
4465
  {isCodeMode ? (
4446
4466
  <>
4447
4467
  <div className="grid min-w-0 gap-2 rounded-lg border border-border bg-background p-3 text-sm">
@@ -5173,6 +5193,78 @@ function SourceRoleCard({
5173
5193
  );
5174
5194
  }
5175
5195
 
5196
+ function BuilderBodyHydrationCard({
5197
+ source,
5198
+ canEdit,
5199
+ pending,
5200
+ onHydrate,
5201
+ }: {
5202
+ source: ContentDatabaseSource;
5203
+ canEdit: boolean;
5204
+ pending: boolean;
5205
+ onHydrate: () => void;
5206
+ }) {
5207
+ const summary = source.bodyHydration;
5208
+ if (!summary || summary.total === 0) return null;
5209
+ const activeCount = summary.pending + summary.hydrating;
5210
+ const needsWork = activeCount > 0 || summary.error > 0;
5211
+ const hydratedLabel = dbText("builderBodiesHydrated", {
5212
+ hydrated: summary.hydrated,
5213
+ total: summary.total,
5214
+ });
5215
+ const detail = needsWork
5216
+ ? [
5217
+ activeCount > 0
5218
+ ? dbText("builderBodiesQueued", { count: activeCount })
5219
+ : null,
5220
+ summary.error > 0
5221
+ ? dbText("builderBodySyncFailed", { count: summary.error })
5222
+ : null,
5223
+ ]
5224
+ .filter(Boolean)
5225
+ .join(" · ")
5226
+ : dbText("builderBodiesReadyLocally");
5227
+
5228
+ return (
5229
+ <div className="grid min-w-0 gap-2 rounded-lg border border-border bg-background p-3">
5230
+ <div className="flex min-w-0 items-start justify-between gap-3">
5231
+ <div className="min-w-0">
5232
+ <div className="text-xs font-medium">{dbText("builderBodySync")}</div>
5233
+ <div className="mt-0.5 text-xs text-muted-foreground">
5234
+ {hydratedLabel}
5235
+ </div>
5236
+ </div>
5237
+ {needsWork ? (
5238
+ <Button
5239
+ type="button"
5240
+ size="sm"
5241
+ variant="outline"
5242
+ className="h-7 shrink-0 px-2 text-xs"
5243
+ disabled={!canEdit || pending}
5244
+ onClick={onHydrate}
5245
+ >
5246
+ {pending ? (
5247
+ <Spinner className="mr-1 size-3.5" />
5248
+ ) : (
5249
+ <IconRefresh className="mr-1 size-3.5" />
5250
+ )}
5251
+ {summary.error > 0 ? dbText("retry") : dbText("resume")}
5252
+ </Button>
5253
+ ) : null}
5254
+ </div>
5255
+ <div className="h-1.5 overflow-hidden rounded-full bg-muted">
5256
+ <div
5257
+ className="h-full rounded-full bg-foreground transition-[width]"
5258
+ style={{
5259
+ width: `${Math.round((summary.hydrated / summary.total) * 100)}%`,
5260
+ }}
5261
+ />
5262
+ </div>
5263
+ <div className="break-words text-xs text-muted-foreground">{detail}</div>
5264
+ </div>
5265
+ );
5266
+ }
5267
+
5176
5268
  const DETAIL_FIELD_NAME_HINTS = [
5177
5269
  "name",
5178
5270
  "title",
@@ -575,9 +575,11 @@ export function BuilderSourceReviewDialog({
575
575
  <div className="font-medium">
576
576
  {row.bodyChange.summary}
577
577
  </div>
578
- <div className="mt-1 text-muted-foreground">
579
- {t("database.builderBodyEditsNeedSaferPath")}
580
- </div>
578
+ {row.bodyChange.warnings?.length ? (
579
+ <div className="mt-1 text-muted-foreground">
580
+ {row.bodyChange.warnings.join(" ")}
581
+ </div>
582
+ ) : null}
581
583
  </div>
582
584
  ) : null}
583
585
  {showConflict ? (
@@ -1,4 +1,6 @@
1
1
  import { createRegistryBlockNode } from "@agent-native/core/client";
2
+ import { Extension } from "@tiptap/core";
3
+ import { Plugin, PluginKey } from "@tiptap/pm/state";
2
4
 
3
5
  /* -------------------------------------------------------------------------- */
4
6
  /* Content's registry-block Tiptap node — a thin wrapper over the core node. */
@@ -46,4 +48,43 @@ export const RegistryBlockNode = createRegistryBlockNode({
46
48
  mintId: createContentBlockId,
47
49
  });
48
50
 
51
+ function sourceComponentIdCounts(doc: { descendants: (fn: any) => void }) {
52
+ const counts = new Map<string, number>();
53
+ doc.descendants((node: any) => {
54
+ if (
55
+ node.type?.name === "registryBlock" &&
56
+ node.attrs?.blockType === "source-component" &&
57
+ typeof node.attrs.blockId === "string" &&
58
+ node.attrs.blockId
59
+ ) {
60
+ counts.set(node.attrs.blockId, (counts.get(node.attrs.blockId) ?? 0) + 1);
61
+ }
62
+ return true;
63
+ });
64
+ return counts;
65
+ }
66
+
67
+ export const LockedSourceComponentBlocks = Extension.create({
68
+ name: "lockedSourceComponentBlocks",
69
+
70
+ addProseMirrorPlugins() {
71
+ return [
72
+ new Plugin({
73
+ key: new PluginKey("lockedSourceComponentBlocks"),
74
+ filterTransaction(transaction, state) {
75
+ if (!transaction.docChanged) return true;
76
+ const before = sourceComponentIdCounts(state.doc);
77
+ if (before.size === 0) return true;
78
+ const after = sourceComponentIdCounts(transaction.doc);
79
+ if (after.size !== before.size) return false;
80
+ for (const [id, count] of before) {
81
+ if (after.get(id) !== count) return false;
82
+ }
83
+ return true;
84
+ },
85
+ }),
86
+ ];
87
+ },
88
+ });
89
+
49
90
  export default RegistryBlockNode;
@@ -102,6 +102,9 @@ export function buildRegistrySlashItems(
102
102
  // not a content-authoring block.
103
103
  // - `inline-database` is registered in Phase 2 for render/round-trip
104
104
  // compatibility; Phase 3 owns the `/database` insertion flow.
105
+ // - `source-component` is emitted by provider hydration to preserve
106
+ // source-native blocks; users should not author raw preservation
107
+ // markers by hand.
105
108
  // The genuinely document-friendly rich blocks (callout, decision, diagram,
106
109
  // wireframe, and the dev-doc/structured set) ARE offered.
107
110
  includeSpec: (spec) =>
@@ -110,6 +113,7 @@ export function buildRegistrySlashItems(
110
113
  "question-form",
111
114
  "visual-questions",
112
115
  "inline-database",
116
+ "source-component",
113
117
  ].includes(spec.type),
114
118
  toItem: (spec, insert) => ({
115
119
  title: spec.label,
@@ -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: 0;
1540
+ border: 1px solid hsl(var(--border));
1541
1541
  border-radius: 8px;
1542
- background: hsl(0 0% 15%);
1543
- color: white;
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(0 0% 15%);
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 rgb(255 255 255 / 0.06);
2227
+ 0 0 0 1px hsl(var(--border));
2227
2228
  }
2228
2229
 
2229
2230
  /* ===== Inline comment highlights ===== */
@@ -2298,25 +2299,32 @@ audio.media-block__content {
2298
2299
 
2299
2300
  /* ===== Collaboration cursors ===== */
2300
2301
  .notion-editor .collaboration-cursor__selection {
2301
- background-color: hsl(210 100% 52% / 0.14) !important;
2302
+ background-color: currentColor !important;
2302
2303
  border-radius: 2px;
2303
2304
  box-decoration-break: clone;
2304
2305
  -webkit-box-decoration-break: clone;
2306
+ opacity: 0.16;
2305
2307
  }
2306
2308
 
2307
- .collaboration-cursor__caret {
2309
+ .notion-editor .collaboration-cursor__caret {
2308
2310
  border-left: 2px solid;
2309
2311
  border-color: currentColor;
2312
+ display: inline;
2310
2313
  margin-left: -1px;
2311
2314
  margin-right: -1px;
2312
2315
  position: relative;
2313
2316
  word-break: normal;
2314
2317
  pointer-events: none;
2318
+ line-height: 1;
2315
2319
  }
2316
- .collaboration-cursor__label {
2320
+ .notion-editor .collaboration-cursor__label {
2317
2321
  position: absolute;
2318
2322
  top: -1.4em;
2319
2323
  left: -1px;
2324
+ display: inline-block;
2325
+ max-width: min(180px, 50vw);
2326
+ overflow: hidden;
2327
+ text-overflow: ellipsis;
2320
2328
  font-size: 11px;
2321
2329
  font-weight: 600;
2322
2330
  line-height: 1;
@@ -22,6 +22,8 @@ import type {
22
22
  PrepareBuilderSourceExecutionRequest,
23
23
  PrepareBuilderSourceReviewRequest,
24
24
  PrepareBuilderSourceReviewResponse,
25
+ ProcessBuilderBodyHydrationRequest,
26
+ ProcessBuilderBodyHydrationResponse,
25
27
  RefreshContentDatabaseSourceRequest,
26
28
  ReviewContentDatabaseSourceChangeSetRequest,
27
29
  SetContentDatabaseSourceWriteModeRequest,
@@ -408,6 +410,28 @@ export function useRefreshContentDatabaseSource(documentId: string) {
408
410
  });
409
411
  }
410
412
 
413
+ export function useProcessBuilderBodyHydration(documentId: string) {
414
+ const queryClient = useQueryClient();
415
+ return useActionMutation<
416
+ ProcessBuilderBodyHydrationResponse,
417
+ ProcessBuilderBodyHydrationRequest
418
+ >("process-builder-body-hydration", {
419
+ onSuccess: (_data, variables) => {
420
+ queryClient.invalidateQueries({
421
+ queryKey: contentDatabaseQueryKey(documentId),
422
+ });
423
+ queryClient.invalidateQueries({
424
+ queryKey: ["action", "get-content-database-source", { documentId }],
425
+ });
426
+ if (variables?.documentId) {
427
+ queryClient.invalidateQueries({
428
+ queryKey: ["action", "get-document", { id: variables.documentId }],
429
+ });
430
+ }
431
+ },
432
+ });
433
+ }
434
+
411
435
  export function useDisconnectContentDatabaseSource(documentId: string) {
412
436
  const queryClient = useQueryClient();
413
437
  return useActionMutation<
@@ -2,6 +2,16 @@ const messages = {
2
2
  root: {
3
3
  commandContent: "內容",
4
4
  commandSearchDocuments: "搜尋檔案",
5
+ commandSearchHeading: "搜尋",
6
+ commandSearchPlaceholder: "搜尋文件和資料庫...",
7
+ commandSearchLoading: "搜尋中...",
8
+ commandSearchError: "搜尋目前無法使用。",
9
+ commandSearchPartialError: "部分結果無法載入。",
10
+ commandSearchEmpty: "沒有相符的文件或資料庫。",
11
+ commandDocumentsHeading: "文件",
12
+ commandDatabasesHeading: "資料庫",
13
+ commandLocalFilesHeading: "本機檔案",
14
+ commandDatabaseResultDescription: "開啟資料庫頁面",
5
15
  commandAppearance: "外觀",
6
16
  toggleTheme: "切換主題",
7
17
  metaTitle:
@@ -154,6 +164,14 @@ const messages = {
154
164
  pathMissing: "引用路徑缺失",
155
165
  selfReference: "此引用指向目前文件。",
156
166
  },
167
+ sourceComponent: {
168
+ defaultTitle: "來源元件",
169
+ noPreviewRows: "沒有預覽列",
170
+ previewAvailable: "可預覽",
171
+ previewTruncated: "預覽已截斷",
172
+ previewUnavailable: "無法預覽",
173
+ needsAttention: "需要注意",
174
+ },
157
175
  media: {
158
176
  addAltTextDescription: "新增替代文字來描述該圖片。",
159
177
  addAudio: "新增音訊",
@@ -585,6 +603,11 @@ const messages = {
585
603
  builderSpace: "Builder 空間",
586
604
  builderUpdateFailed: "Builder 更新失敗",
587
605
  builderWriteModeWasNotChanged: "Builder 寫入模式未更改",
606
+ builderBodiesReadyLocally: "Builder 文章正文已在本機準備好。",
607
+ builderBodiesQueued: "{{count}} 個排隊中",
608
+ builderBodySync: "正文同步",
609
+ builderBodySyncFailed: "{{count}} 個失敗",
610
+ builderBodiesHydrated: "已同步 {{hydrated}} / {{total}} 個正文",
588
611
  closeDatabaseSettings: "關閉資料庫設定",
589
612
  closeSearch: "關閉搜尋",
590
613
  databaseRowsAndLocalPropertiesWereKeptIntact: "資料庫行和本機屬性已保留。",
@@ -754,6 +777,7 @@ const messages = {
754
777
  readOnly: "唯讀",
755
778
  removeThisSource: "移除此來源",
756
779
  renameView: "重新命名檢視",
780
+ resume: "繼續",
757
781
  retry: "Retry",
758
782
  reviewBeforeTheyReachBuilder: "在傳送到 Builder 前審核。",
759
783
  reviewDiff: "審核差異",