@agent-native/core 0.83.0 → 0.84.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (508) 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/evals.mdx +34 -12
  7. package/corpus/core/docs/content/faq.mdx +1 -1
  8. package/corpus/core/docs/content/locales/ar-SA/cloneable-saas.mdx +2 -2
  9. package/corpus/core/docs/content/locales/ar-SA/evals.mdx +7 -0
  10. package/corpus/core/docs/content/locales/ar-SA/faq.mdx +1 -1
  11. package/corpus/core/docs/content/locales/ar-SA/template-chat.mdx +1 -1
  12. package/corpus/core/docs/content/locales/de-DE/cloneable-saas.mdx +2 -2
  13. package/corpus/core/docs/content/locales/de-DE/evals.mdx +8 -0
  14. package/corpus/core/docs/content/locales/de-DE/faq.mdx +1 -1
  15. package/corpus/core/docs/content/locales/de-DE/template-chat.mdx +1 -1
  16. package/corpus/core/docs/content/locales/es-ES/cloneable-saas.mdx +2 -2
  17. package/corpus/core/docs/content/locales/es-ES/evals.mdx +8 -0
  18. package/corpus/core/docs/content/locales/es-ES/faq.mdx +1 -1
  19. package/corpus/core/docs/content/locales/es-ES/template-chat.mdx +1 -1
  20. package/corpus/core/docs/content/locales/fr-FR/cloneable-saas.mdx +2 -2
  21. package/corpus/core/docs/content/locales/fr-FR/evals.mdx +8 -0
  22. package/corpus/core/docs/content/locales/fr-FR/faq.mdx +1 -1
  23. package/corpus/core/docs/content/locales/fr-FR/template-chat.mdx +1 -1
  24. package/corpus/core/docs/content/locales/hi-IN/cloneable-saas.mdx +2 -2
  25. package/corpus/core/docs/content/locales/hi-IN/evals.mdx +8 -0
  26. package/corpus/core/docs/content/locales/hi-IN/faq.mdx +1 -1
  27. package/corpus/core/docs/content/locales/hi-IN/template-chat.mdx +1 -1
  28. package/corpus/core/docs/content/locales/ja-JP/cloneable-saas.mdx +2 -2
  29. package/corpus/core/docs/content/locales/ja-JP/evals.mdx +7 -0
  30. package/corpus/core/docs/content/locales/ja-JP/faq.mdx +1 -1
  31. package/corpus/core/docs/content/locales/ja-JP/template-chat.mdx +1 -1
  32. package/corpus/core/docs/content/locales/ko-KR/cloneable-saas.mdx +2 -2
  33. package/corpus/core/docs/content/locales/ko-KR/evals.mdx +7 -0
  34. package/corpus/core/docs/content/locales/ko-KR/faq.mdx +1 -1
  35. package/corpus/core/docs/content/locales/ko-KR/template-chat.mdx +1 -1
  36. package/corpus/core/docs/content/locales/pt-BR/cloneable-saas.mdx +2 -2
  37. package/corpus/core/docs/content/locales/pt-BR/evals.mdx +8 -0
  38. package/corpus/core/docs/content/locales/pt-BR/faq.mdx +1 -1
  39. package/corpus/core/docs/content/locales/pt-BR/template-chat.mdx +1 -1
  40. package/corpus/core/docs/content/locales/zh-CN/cloneable-saas.mdx +2 -2
  41. package/corpus/core/docs/content/locales/zh-CN/evals.mdx +7 -0
  42. package/corpus/core/docs/content/locales/zh-CN/faq.mdx +1 -1
  43. package/corpus/core/docs/content/locales/zh-CN/template-chat.mdx +1 -1
  44. package/corpus/core/docs/content/locales/zh-TW/cloneable-saas.mdx +2 -2
  45. package/corpus/core/docs/content/locales/zh-TW/evals.mdx +7 -0
  46. package/corpus/core/docs/content/locales/zh-TW/faq.mdx +1 -1
  47. package/corpus/core/docs/content/locales/zh-TW/template-chat.mdx +1 -1
  48. package/corpus/core/docs/content/template-chat.mdx +1 -1
  49. package/corpus/core/package.json +1 -1
  50. package/corpus/core/src/agent/engine/builtin.ts +1 -1
  51. package/corpus/core/src/agent/engine/output-tokens.ts +1 -1
  52. package/corpus/core/src/agent/harness/acp-adapter.ts +28 -4
  53. package/corpus/core/src/agent/harness/ai-sdk-adapter.ts +3 -0
  54. package/corpus/core/src/agent/harness/translate.ts +3 -0
  55. package/corpus/core/src/agent/harness/types.ts +1 -0
  56. package/corpus/core/src/agent/model-config.ts +34 -13
  57. package/corpus/core/src/agent/production-agent.ts +87 -10
  58. package/corpus/core/src/agent/thread-data-builder.ts +29 -4
  59. package/corpus/core/src/agent/tool-call-journal.ts +109 -48
  60. package/corpus/core/src/agent/types.ts +6 -1
  61. package/corpus/core/src/cli/design-connect.ts +106 -0
  62. package/corpus/core/src/cli/gateway-helpers.ts +17 -0
  63. package/corpus/core/src/cli/recap.ts +0 -2
  64. package/corpus/core/src/cli/skills.ts +54 -16
  65. package/corpus/core/src/cli/workspace-dev.ts +29 -5
  66. package/corpus/core/src/client/AssistantChat.tsx +89 -42
  67. package/corpus/core/src/client/DefaultSpinner.tsx +8 -1
  68. package/corpus/core/src/client/chat/message-components.tsx +49 -1
  69. package/corpus/core/src/client/chat/repo-helpers.ts +71 -0
  70. package/corpus/core/src/client/chat/run-recovery.tsx +15 -5
  71. package/corpus/core/src/client/components/ApiKeySettings.tsx +8 -8
  72. package/corpus/core/src/client/components/CodeRequiredDialog.tsx +26 -15
  73. package/corpus/core/src/client/components/MissingKeyCard.tsx +13 -6
  74. package/corpus/core/src/client/composer/TiptapComposer.tsx +4 -3
  75. package/corpus/core/src/client/extensions/ExtensionsSidebarSection.tsx +0 -1
  76. package/corpus/core/src/client/guided-questions.tsx +21 -27
  77. package/corpus/core/src/client/integrations/IntegrationCard.tsx +1 -1
  78. package/corpus/core/src/client/integrations/IntegrationsPanel.tsx +1 -1
  79. package/corpus/core/src/client/onboarding/OnboardingBanner.tsx +2 -2
  80. package/corpus/core/src/client/onboarding/OnboardingPanel.tsx +23 -19
  81. package/corpus/core/src/client/resources/ResourceEditor.tsx +18 -10
  82. package/corpus/core/src/client/resources/ResourcesPanel.tsx +5 -1
  83. package/corpus/core/src/client/settings/SettingsPanel.tsx +8 -3
  84. package/corpus/core/src/client/settings/useBuilderStatus.ts +8 -41
  85. package/corpus/core/src/client/useProductionAgent.ts +6 -2
  86. package/corpus/core/src/deploy/build.ts +1 -1
  87. package/corpus/core/src/eval/define-eval.ts +4 -1
  88. package/corpus/core/src/eval/report.ts +23 -8
  89. package/corpus/core/src/eval/runner.ts +41 -6
  90. package/corpus/core/src/eval/types.ts +11 -0
  91. package/corpus/core/src/observability/traces.ts +3 -3
  92. package/corpus/core/src/onboarding/default-steps.ts +1 -1
  93. package/corpus/core/src/scripts/agent-engines/manage-agent-engine.ts +1 -1
  94. package/corpus/core/src/scripts/agent-engines/set-agent-engine.ts +1 -1
  95. package/corpus/core/src/server/agent-chat-plugin.ts +177 -81
  96. package/corpus/core/src/server/core-routes-plugin.ts +7 -1
  97. package/corpus/core/src/server/open-route.ts +59 -40
  98. package/corpus/core/src/shared/reasoning-effort.ts +2 -0
  99. package/corpus/core/src/sharing/access.ts +22 -2
  100. package/corpus/core/src/sharing/registry.ts +18 -0
  101. package/corpus/core/src/styles/agent-native.css +104 -20
  102. package/corpus/core/src/styles/rich-markdown-editor.css +11 -10
  103. package/corpus/templates/analytics/app/components/dashboard/CumulativeNetChart.tsx +10 -10
  104. package/corpus/templates/analytics/app/components/dashboard/RevenueChart.tsx +10 -10
  105. package/corpus/templates/analytics/app/components/dashboard/RevenueComparisonChart.tsx +6 -5
  106. package/corpus/templates/analytics/app/components/dashboard/TimeSeriesChart.tsx +9 -9
  107. package/corpus/templates/analytics/app/global.css +4 -0
  108. package/corpus/templates/analytics/app/lib/chart-theme.ts +13 -0
  109. package/corpus/templates/analytics/app/pages/adhoc/_shared/KpiChart.tsx +22 -24
  110. package/corpus/templates/analytics/changelog/2026-06-30-dashboard-charts-now-use-theme-aware-tooltip-and-grid-colors.md +6 -0
  111. package/corpus/templates/analytics/changelog/2026-06-30-fixed-ask-composer-spacing-so-the-chat-field-has-a-comfortab.md +6 -0
  112. package/corpus/templates/calendar/AGENTS.md +4 -0
  113. package/corpus/templates/calendar/actions/connect-google-calendar.ts +80 -0
  114. package/corpus/templates/calendar/changelog/2026-06-30-calendar-now-gives-the-agent-a-safe-google-connection-link-i.md +6 -0
  115. package/corpus/templates/calendar/server/plugins/agent-chat.ts +4 -0
  116. package/corpus/templates/content/AGENTS.md +9 -2
  117. package/corpus/templates/content/actions/_database-row-batch.ts +230 -0
  118. package/corpus/templates/content/actions/_database-utils.ts +17 -9
  119. package/corpus/templates/content/actions/_notion-action-utils.ts +26 -0
  120. package/corpus/templates/content/actions/connect-notion-status.ts +13 -4
  121. package/corpus/templates/content/actions/create-and-link-notion-page.ts +23 -0
  122. package/corpus/templates/content/actions/delete-database-items.ts +55 -0
  123. package/corpus/templates/content/actions/delete-document.ts +4 -4
  124. package/corpus/templates/content/actions/disconnect-notion.ts +16 -0
  125. package/corpus/templates/content/actions/duplicate-database-item.ts +1 -1
  126. package/corpus/templates/content/actions/duplicate-database-items.ts +191 -0
  127. package/corpus/templates/content/actions/link-notion-page.ts +10 -7
  128. package/corpus/templates/content/actions/list-notion-links.ts +3 -4
  129. package/corpus/templates/content/actions/pull-notion-page.ts +7 -9
  130. package/corpus/templates/content/actions/push-notion-page.ts +7 -9
  131. package/corpus/templates/content/actions/refresh-notion-sync-status.ts +24 -0
  132. package/corpus/templates/content/actions/resolve-notion-sync-conflict.ts +23 -0
  133. package/corpus/templates/content/actions/search-notion-pages.ts +67 -0
  134. package/corpus/templates/content/actions/unlink-notion-page.ts +23 -0
  135. package/corpus/templates/content/app/components/editor/BubbleToolbar.tsx +5 -5
  136. package/corpus/templates/content/app/components/editor/DocumentDatabase.tsx +27 -34
  137. package/corpus/templates/content/app/components/editor/DocumentEditor.tsx +16 -13
  138. package/corpus/templates/content/app/components/editor/DocumentToolbar.tsx +10 -10
  139. package/corpus/templates/content/app/components/editor/NotionConflictBanner.tsx +1 -1
  140. package/corpus/templates/content/app/components/editor/NotionSyncBar.tsx +18 -9
  141. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +27 -34
  142. package/corpus/templates/content/app/components/editor/database/navigation-state.ts +10 -4
  143. package/corpus/templates/content/app/components/sidebar/NotionButton.tsx +32 -17
  144. package/corpus/templates/content/app/global.css +6 -5
  145. package/corpus/templates/content/app/hooks/use-content-database.ts +35 -0
  146. package/corpus/templates/content/app/hooks/use-notion.ts +108 -99
  147. package/corpus/templates/content/changelog/2026-06-30-editor-floating-toolbars-now-use-theme-aware-colors-in-light.md +6 -0
  148. package/corpus/templates/content/package.json +3 -0
  149. package/corpus/templates/content/parity/README.md +69 -0
  150. package/corpus/templates/content/parity/eval-scenarios.ts +118 -0
  151. package/corpus/templates/content/parity/exceptions.allowlist.ts +17 -0
  152. package/corpus/templates/content/parity/matrix.md +28 -0
  153. package/corpus/templates/content/parity/matrix.ts +606 -0
  154. package/corpus/templates/content/parity/matrix.types.ts +42 -0
  155. package/corpus/templates/content/parity/parity-evals.eval.ts +4 -0
  156. package/corpus/templates/content/parity/render-matrix.ts +90 -0
  157. package/corpus/templates/content/parity/scenario-to-eval.ts +57 -0
  158. package/corpus/templates/content/shared/api.ts +11 -0
  159. package/corpus/templates/design/.agents/skills/visual-edit/SKILL.md +6 -1
  160. package/corpus/templates/design/actions/add-localhost-screens.ts +63 -8
  161. package/corpus/templates/design/actions/apply-motion-edit.ts +12 -46
  162. package/corpus/templates/design/actions/list-design-native-assets.ts +2 -1
  163. package/corpus/templates/design/actions/migrate-board-objects-to-file.ts +49 -1
  164. package/corpus/templates/design/actions/navigate.ts +3 -12
  165. package/corpus/templates/design/actions/open-visual-edit.ts +341 -0
  166. package/corpus/templates/design/actions/view-screen.ts +1 -1
  167. package/corpus/templates/design/app/components/design/CanvasContextMenu.tsx +1 -1
  168. package/corpus/templates/design/app/components/design/DesignCanvas.tsx +345 -14
  169. package/corpus/templates/design/app/components/design/DesignEditorSkeleton.tsx +71 -91
  170. package/corpus/templates/design/app/components/design/DesignExtensionsPanel.tsx +25 -27
  171. package/corpus/templates/design/app/components/design/DeviceFrame.tsx +1 -1
  172. package/corpus/templates/design/app/components/design/DrawOverlay.tsx +2 -2
  173. package/corpus/templates/design/app/components/design/EditPanel.tsx +1111 -570
  174. package/corpus/templates/design/app/components/design/LayersPanel.tsx +162 -32
  175. package/corpus/templates/design/app/components/design/MotionDock.tsx +268 -240
  176. package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +1038 -150
  177. package/corpus/templates/design/app/components/design/QuestionFlow.tsx +1 -1
  178. package/corpus/templates/design/app/components/design/ReviewPanel.tsx +81 -102
  179. package/corpus/templates/design/app/components/design/StatesPanel.tsx +6 -6
  180. package/corpus/templates/design/app/components/design/TokensPanel.tsx +11 -11
  181. package/corpus/templates/design/app/components/design/TweaksPanel.tsx +9 -7
  182. package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +1129 -155
  183. package/corpus/templates/design/app/components/design/bridge/hit-test.bridge.ts +130 -37
  184. package/corpus/templates/design/app/components/design/canvas-primitive-style.ts +24 -11
  185. package/corpus/templates/design/app/components/design/inspector/AutoLayoutMatrix.tsx +184 -162
  186. package/corpus/templates/design/app/components/design/inspector/ConstraintsWidget.tsx +137 -79
  187. package/corpus/templates/design/app/components/design/inspector/DesignColorPicker.tsx +13 -13
  188. package/corpus/templates/design/app/components/design/inspector/ExportSettingsPanel.tsx +8 -8
  189. package/corpus/templates/design/app/components/design/inspector/GradientEditor.tsx +2 -2
  190. package/corpus/templates/design/app/components/design/inspector/ImageFillControls.tsx +4 -4
  191. package/corpus/templates/design/app/components/design/inspector/InspectorAiActions.tsx +3 -3
  192. package/corpus/templates/design/app/components/design/inspector/ScrubInput.tsx +13 -7
  193. package/corpus/templates/design/app/components/design/inspector/ShaderControls.tsx +14 -11
  194. package/corpus/templates/design/app/components/design/inspector/ShaderFillsPanel.tsx +4 -4
  195. package/corpus/templates/design/app/components/design/inspector/index.ts +2 -0
  196. package/corpus/templates/design/app/components/design/types.ts +19 -0
  197. package/corpus/templates/design/app/components/editor/PromptDialog.tsx +61 -78
  198. package/corpus/templates/design/app/components/layout/Header.tsx +0 -1
  199. package/corpus/templates/design/app/components/layout/Layout.tsx +3 -2
  200. package/corpus/templates/design/app/components/layout/Sidebar.tsx +0 -2
  201. package/corpus/templates/design/app/components/visual-editor/CanvasCommentPins.tsx +5 -4
  202. package/corpus/templates/design/app/components/visual-editor/DrawOverlay.tsx +1 -1
  203. package/corpus/templates/design/app/components/visual-editor/SaveStatusIndicator.tsx +2 -2
  204. package/corpus/templates/design/app/global.css +56 -0
  205. package/corpus/templates/design/app/hooks/use-agent-generating.ts +4 -5
  206. package/corpus/templates/design/app/hooks/use-navigation-state.ts +6 -7
  207. package/corpus/templates/design/app/hooks/use-question-flow.ts +3 -2
  208. package/corpus/templates/design/app/hooks/useAgentEditRequest.ts +6 -4
  209. package/corpus/templates/design/app/i18n/zh-TW.ts +5 -14
  210. package/corpus/templates/design/app/i18n-data.ts +63 -188
  211. package/corpus/templates/design/app/lib/agent-chat.ts +13 -0
  212. package/corpus/templates/design/app/pages/DesignEditor.tsx +1428 -384
  213. package/corpus/templates/design/app/pages/DesignSystemSetup.tsx +9 -5
  214. package/corpus/templates/design/app/pages/DesignSystems.tsx +2 -2
  215. package/corpus/templates/design/app/pages/Index.tsx +49 -26
  216. package/corpus/templates/design/app/pages/NotFound.tsx +25 -8
  217. package/corpus/templates/design/app/pages/VisualEdit.tsx +17 -5
  218. package/corpus/templates/design/app/routes/examples.tsx +1 -7
  219. package/corpus/templates/design/app/routes/templates.tsx +7 -4
  220. package/corpus/templates/design/changelog/2026-06-30-board-shapes-and-auto-layout-controls-are-clearer.md +6 -0
  221. package/corpus/templates/design/changelog/2026-06-30-component-selections-now-use-purple-component-chrome-and-sho.md +6 -0
  222. package/corpus/templates/design/changelog/2026-06-30-constraints-now-stay-tucked-into-a-compact-inspector-preview.md +6 -0
  223. package/corpus/templates/design/changelog/2026-06-30-creating-a-component-now-opens-in-a-compact-inspector-popove.md +6 -0
  224. package/corpus/templates/design/changelog/2026-06-30-design-cards-no-longer-show-legacy-project-type-badges.md +6 -0
  225. package/corpus/templates/design/changelog/2026-06-30-design-chat-now-keeps-new-turns-in-the-visible-design-agent-.md +6 -0
  226. package/corpus/templates/design/changelog/2026-06-30-design-editor-panels-now-keep-their-compact-text-sizing-cons.md +6 -0
  227. package/corpus/templates/design/changelog/2026-06-30-design-no-longer-shows-the-connected-local-code-warning-bann.md +6 -0
  228. package/corpus/templates/design/changelog/2026-06-30-design-now-opens-to-the-files-panel-unless-a-generation-is-a.md +6 -0
  229. package/corpus/templates/design/changelog/2026-06-30-design-opens-with-a-cleaner-empty-canvas-and-loading-preview.md +6 -0
  230. package/corpus/templates/design/changelog/2026-06-30-design-tools-use-simpler-less-decorative-icons.md +6 -0
  231. package/corpus/templates/design/changelog/2026-06-30-dragging-absolute-elements-no-longer-shows-coordinate-labels.md +6 -0
  232. package/corpus/templates/design/changelog/2026-06-30-fixed-all-screens-opening-too-zoomed-in-by-default.md +6 -0
  233. package/corpus/templates/design/changelog/2026-06-30-fixed-the-public-design-assets-sidebar-so-native-components-.md +6 -0
  234. package/corpus/templates/design/changelog/2026-06-30-fixed-the-screen-overview-board-so-empty-board-space-no-long.md +6 -0
  235. package/corpus/templates/design/changelog/2026-06-30-full-view-screens-can-now-scroll-while-remaining-editable.md +6 -0
  236. package/corpus/templates/design/changelog/2026-06-30-inspector-element-headers-show-the-selected-html-tag-and-the.md +6 -0
  237. package/corpus/templates/design/changelog/2026-06-30-inspector-inputs-stay-compact-across-desktop-breakpoints.md +6 -0
  238. package/corpus/templates/design/changelog/2026-06-30-layers-can-be-multi-selected-from-the-canvas-and-edited-toge.md +6 -0
  239. package/corpus/templates/design/changelog/2026-06-30-local-visual-edit-links-can-edit-localhost-frames-without-si.md +6 -0
  240. package/corpus/templates/design/changelog/2026-06-30-localhost-visual-edit-frames-can-now-be-selected-and-edited.md +6 -0
  241. package/corpus/templates/design/changelog/2026-06-30-marquee-selection-now-works-inside-screens-multi-selected-la.md +6 -0
  242. package/corpus/templates/design/changelog/2026-06-30-motion-is-now-available-from-the-persistent-left-rail-and-th.md +6 -0
  243. package/corpus/templates/design/changelog/2026-06-30-motion-timeline-collapse-and-reopen-animations-feel-smoother.md +6 -0
  244. package/corpus/templates/design/changelog/2026-06-30-multi-select-outlines-now-stay-consistent-across-all-screens.md +6 -0
  245. package/corpus/templates/design/changelog/2026-06-30-new-board-shapes-now-start-with-neutral-gray-styling.md +6 -0
  246. package/corpus/templates/design/changelog/2026-06-30-new-designs-open-into-a-steadier-loading-state-before-the-ed.md +6 -0
  247. package/corpus/templates/design/changelog/2026-06-30-new-designs-show-a-loading-state-during-handoff-and-keep-edi.md +6 -0
  248. package/corpus/templates/design/changelog/2026-06-30-public-visual-edit-design-links-now-open-directly-instead-of.md +6 -0
  249. package/corpus/templates/design/changelog/2026-06-30-removed-the-confusing-states-section-from-the-design-editor-.md +6 -0
  250. package/corpus/templates/design/changelog/2026-06-30-removed-the-templates-gallery-from-design-navigation.md +6 -0
  251. package/corpus/templates/design/changelog/2026-06-30-share-stays-visible-as-soon-as-editable-designs-load.md +6 -0
  252. package/corpus/templates/design/changelog/2026-06-30-signed-out-save-and-share-controls-use-simpler-labels-and-op.md +6 -0
  253. package/corpus/templates/design/changelog/2026-06-30-text-added-on-the-canvas-now-focuses-cleanly-with-the-right-.md +6 -0
  254. package/corpus/templates/design/changelog/2026-06-30-the-design-editor-loading-skeleton-is-simpler-and-its-bottom.md +6 -0
  255. package/corpus/templates/design/changelog/2026-06-30-the-design-editor-loading-skeleton-now-follows-the-current-t.md +6 -0
  256. package/corpus/templates/design/changelog/2026-06-30-the-design-inspector-no-longer-shows-child-layout-controls-o.md +6 -0
  257. package/corpus/templates/design/changelog/2026-06-30-the-design-inspector-no-longer-shows-the-ask-ai-section-abov.md +6 -0
  258. package/corpus/templates/design/changelog/2026-06-30-the-design-review-panel-no-longer-shows-a-separate-inline-au.md +6 -0
  259. package/corpus/templates/design/changelog/2026-06-30-the-empty-designs-page-now-focuses-on-a-single-primary-new-d.md +6 -0
  260. package/corpus/templates/design/changelog/2026-06-30-the-layers-panel-header-stays-as-layers-while-multiple-items.md +6 -0
  261. package/corpus/templates/design/changelog/2026-06-30-the-missing-design-screen-now-uses-a-neutral-back-button.md +6 -0
  262. package/corpus/templates/design/changelog/2026-06-30-the-motion-timeline-now-closes-without-squeezing-the-canvas-.md +6 -0
  263. package/corpus/templates/design/changelog/2026-06-30-the-new-design-connect-ai-setup-now-lines-up-with-the-compos.md +6 -0
  264. package/corpus/templates/design/changelog/2026-06-30-the-screen-overview-board-now-blends-into-the-canvas-and-new.md +6 -0
  265. package/corpus/templates/design/changelog/2026-06-30-top-level-canvas-drops-now-show-screen-guides.md +6 -0
  266. package/corpus/templates/design/changelog/2026-06-30-top-level-canvas-layers-now-keep-a-transparent-backdrop-and-.md +6 -0
  267. package/corpus/templates/design/changelog/2026-06-30-top-level-canvas-layers-now-select-reliably-from-all-screens.md +6 -0
  268. package/corpus/templates/design/changelog/2026-06-30-visual-edit-can-open-and-refresh-localhost-screens-in-one-au.md +6 -0
  269. package/corpus/templates/design/e2e/helpers.ts +15 -4
  270. package/corpus/templates/design/server/db/index.ts +52 -0
  271. package/corpus/templates/design/server/plugins/agent-chat.ts +5 -0
  272. package/corpus/templates/design/server/plugins/auth.ts +1 -0
  273. package/corpus/templates/design/server/plugins/core-routes.ts +4 -0
  274. package/corpus/templates/design/shared/board-file.ts +380 -5
  275. package/corpus/templates/design/shared/board-objects.ts +2 -2
  276. package/corpus/templates/design/shared/code-layer.ts +50 -6
  277. package/corpus/templates/design/shared/motion-compiler.ts +27 -0
  278. package/corpus/templates/macros/app/components/DailyProgress.tsx +41 -37
  279. package/corpus/templates/macros/app/components/ExerciseCard.tsx +2 -2
  280. package/corpus/templates/macros/app/components/MealCard.tsx +2 -2
  281. package/corpus/templates/macros/app/components/VoiceDictation.tsx +1 -1
  282. package/corpus/templates/macros/app/components/WeeklyCaloriesChart.tsx +1 -1
  283. package/corpus/templates/macros/app/components/WeightCard.tsx +2 -2
  284. package/corpus/templates/macros/app/components/WeightTracker.tsx +1 -1
  285. package/corpus/templates/macros/app/components/layout/AppLayout.tsx +1 -1
  286. package/corpus/templates/macros/app/routes/_index.tsx +5 -5
  287. package/corpus/templates/macros/app/routes/analytics.tsx +1 -1
  288. package/corpus/templates/macros/changelog/2026-06-30-dashboard-loading-and-chart-surfaces-now-use-theme-aware-col.md +6 -0
  289. package/corpus/templates/mail/app/components/email/ComposeBubbleToolbar.tsx +14 -11
  290. package/corpus/templates/mail/app/global.css +3 -2
  291. package/corpus/templates/mail/changelog/2026-06-30-compose-floating-toolbars-now-use-theme-aware-colors-in-ligh.md +6 -0
  292. package/corpus/templates/plan/app/pages/PlansPage.tsx +2 -2
  293. package/corpus/templates/slides/app/components/deck/DeckCard.tsx +3 -3
  294. package/corpus/templates/slides/app/global.css +10 -0
  295. package/corpus/templates/slides/app/pages/Index.tsx +55 -51
  296. package/corpus/templates/slides/changelog/2026-06-30-deck-thumbnails-collapse-cleanly-to-one-column-when-the-chat.md +6 -0
  297. package/dist/agent/engine/anthropic-engine.d.ts +2 -2
  298. package/dist/agent/engine/anthropic-engine.d.ts.map +1 -1
  299. package/dist/agent/engine/builder-engine.d.ts +2 -2
  300. package/dist/agent/engine/builder-engine.d.ts.map +1 -1
  301. package/dist/agent/engine/builtin.js +1 -1
  302. package/dist/agent/engine/builtin.js.map +1 -1
  303. package/dist/agent/engine/output-tokens.js +1 -1
  304. package/dist/agent/engine/output-tokens.js.map +1 -1
  305. package/dist/agent/harness/acp-adapter.d.ts +4 -1
  306. package/dist/agent/harness/acp-adapter.d.ts.map +1 -1
  307. package/dist/agent/harness/acp-adapter.js +19 -2
  308. package/dist/agent/harness/acp-adapter.js.map +1 -1
  309. package/dist/agent/harness/ai-sdk-adapter.d.ts.map +1 -1
  310. package/dist/agent/harness/ai-sdk-adapter.js +3 -0
  311. package/dist/agent/harness/ai-sdk-adapter.js.map +1 -1
  312. package/dist/agent/harness/translate.d.ts.map +1 -1
  313. package/dist/agent/harness/translate.js +3 -0
  314. package/dist/agent/harness/translate.js.map +1 -1
  315. package/dist/agent/harness/types.d.ts +1 -0
  316. package/dist/agent/harness/types.d.ts.map +1 -1
  317. package/dist/agent/harness/types.js.map +1 -1
  318. package/dist/agent/model-config.d.ts +21 -20
  319. package/dist/agent/model-config.d.ts.map +1 -1
  320. package/dist/agent/model-config.js +31 -13
  321. package/dist/agent/model-config.js.map +1 -1
  322. package/dist/agent/production-agent.d.ts.map +1 -1
  323. package/dist/agent/production-agent.js +85 -10
  324. package/dist/agent/production-agent.js.map +1 -1
  325. package/dist/agent/thread-data-builder.d.ts.map +1 -1
  326. package/dist/agent/thread-data-builder.js +27 -6
  327. package/dist/agent/thread-data-builder.js.map +1 -1
  328. package/dist/agent/tool-call-journal.d.ts +11 -9
  329. package/dist/agent/tool-call-journal.d.ts.map +1 -1
  330. package/dist/agent/tool-call-journal.js +92 -40
  331. package/dist/agent/tool-call-journal.js.map +1 -1
  332. package/dist/agent/types.d.ts +5 -1
  333. package/dist/agent/types.d.ts.map +1 -1
  334. package/dist/agent/types.js.map +1 -1
  335. package/dist/cli/design-connect.d.ts.map +1 -1
  336. package/dist/cli/design-connect.js +84 -0
  337. package/dist/cli/design-connect.js.map +1 -1
  338. package/dist/cli/gateway-helpers.d.ts +4 -0
  339. package/dist/cli/gateway-helpers.d.ts.map +1 -1
  340. package/dist/cli/gateway-helpers.js +9 -0
  341. package/dist/cli/gateway-helpers.js.map +1 -1
  342. package/dist/cli/recap.d.ts.map +1 -1
  343. package/dist/cli/recap.js +0 -2
  344. package/dist/cli/recap.js.map +1 -1
  345. package/dist/cli/skills.d.ts.map +1 -1
  346. package/dist/cli/skills.js +54 -16
  347. package/dist/cli/skills.js.map +1 -1
  348. package/dist/cli/workspace-dev.d.ts.map +1 -1
  349. package/dist/cli/workspace-dev.js +33 -6
  350. package/dist/cli/workspace-dev.js.map +1 -1
  351. package/dist/client/AssistantChat.d.ts.map +1 -1
  352. package/dist/client/AssistantChat.js +72 -26
  353. package/dist/client/AssistantChat.js.map +1 -1
  354. package/dist/client/DefaultSpinner.d.ts.map +1 -1
  355. package/dist/client/DefaultSpinner.js +8 -1
  356. package/dist/client/DefaultSpinner.js.map +1 -1
  357. package/dist/client/chat/message-components.d.ts +7 -1
  358. package/dist/client/chat/message-components.d.ts.map +1 -1
  359. package/dist/client/chat/message-components.js +37 -1
  360. package/dist/client/chat/message-components.js.map +1 -1
  361. package/dist/client/chat/repo-helpers.d.ts +1 -0
  362. package/dist/client/chat/repo-helpers.d.ts.map +1 -1
  363. package/dist/client/chat/repo-helpers.js +59 -0
  364. package/dist/client/chat/repo-helpers.js.map +1 -1
  365. package/dist/client/chat/run-recovery.d.ts.map +1 -1
  366. package/dist/client/chat/run-recovery.js +4 -4
  367. package/dist/client/chat/run-recovery.js.map +1 -1
  368. package/dist/client/components/ApiKeySettings.js +8 -8
  369. package/dist/client/components/ApiKeySettings.js.map +1 -1
  370. package/dist/client/components/CodeRequiredDialog.d.ts.map +1 -1
  371. package/dist/client/components/CodeRequiredDialog.js +24 -15
  372. package/dist/client/components/CodeRequiredDialog.js.map +1 -1
  373. package/dist/client/components/MissingKeyCard.d.ts.map +1 -1
  374. package/dist/client/components/MissingKeyCard.js +11 -6
  375. package/dist/client/components/MissingKeyCard.js.map +1 -1
  376. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  377. package/dist/client/composer/TiptapComposer.js +4 -3
  378. package/dist/client/composer/TiptapComposer.js.map +1 -1
  379. package/dist/client/extensions/ExtensionsSidebarSection.d.ts.map +1 -1
  380. package/dist/client/extensions/ExtensionsSidebarSection.js +1 -1
  381. package/dist/client/extensions/ExtensionsSidebarSection.js.map +1 -1
  382. package/dist/client/guided-questions.d.ts.map +1 -1
  383. package/dist/client/guided-questions.js +6 -6
  384. package/dist/client/guided-questions.js.map +1 -1
  385. package/dist/client/integrations/IntegrationCard.js +1 -1
  386. package/dist/client/integrations/IntegrationCard.js.map +1 -1
  387. package/dist/client/integrations/IntegrationsPanel.js +1 -1
  388. package/dist/client/integrations/IntegrationsPanel.js.map +1 -1
  389. package/dist/client/onboarding/OnboardingBanner.js +2 -2
  390. package/dist/client/onboarding/OnboardingBanner.js.map +1 -1
  391. package/dist/client/onboarding/OnboardingPanel.js +23 -19
  392. package/dist/client/onboarding/OnboardingPanel.js.map +1 -1
  393. package/dist/client/resources/ResourceEditor.d.ts.map +1 -1
  394. package/dist/client/resources/ResourceEditor.js +13 -10
  395. package/dist/client/resources/ResourceEditor.js.map +1 -1
  396. package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
  397. package/dist/client/resources/ResourcesPanel.js +2 -1
  398. package/dist/client/resources/ResourcesPanel.js.map +1 -1
  399. package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
  400. package/dist/client/settings/SettingsPanel.js +8 -3
  401. package/dist/client/settings/SettingsPanel.js.map +1 -1
  402. package/dist/client/settings/useBuilderStatus.d.ts.map +1 -1
  403. package/dist/client/settings/useBuilderStatus.js +6 -38
  404. package/dist/client/settings/useBuilderStatus.js.map +1 -1
  405. package/dist/client/useProductionAgent.d.ts +2 -1
  406. package/dist/client/useProductionAgent.d.ts.map +1 -1
  407. package/dist/client/useProductionAgent.js.map +1 -1
  408. package/dist/collab/awareness.d.ts +2 -2
  409. package/dist/collab/awareness.d.ts.map +1 -1
  410. package/dist/collab/routes.d.ts +1 -1
  411. package/dist/deploy/build.js +1 -1
  412. package/dist/deploy/build.js.map +1 -1
  413. package/dist/eval/define-eval.d.ts.map +1 -1
  414. package/dist/eval/define-eval.js +2 -1
  415. package/dist/eval/define-eval.js.map +1 -1
  416. package/dist/eval/report.d.ts.map +1 -1
  417. package/dist/eval/report.js +19 -4
  418. package/dist/eval/report.js.map +1 -1
  419. package/dist/eval/runner.d.ts.map +1 -1
  420. package/dist/eval/runner.js +38 -6
  421. package/dist/eval/runner.js.map +1 -1
  422. package/dist/eval/types.d.ts +11 -0
  423. package/dist/eval/types.d.ts.map +1 -1
  424. package/dist/eval/types.js.map +1 -1
  425. package/dist/file-upload/actions/upload-image.d.ts +2 -2
  426. package/dist/notifications/routes.d.ts +3 -3
  427. package/dist/observability/routes.d.ts +5 -5
  428. package/dist/observability/traces.d.ts.map +1 -1
  429. package/dist/observability/traces.js.map +1 -1
  430. package/dist/onboarding/default-steps.js +1 -1
  431. package/dist/onboarding/default-steps.js.map +1 -1
  432. package/dist/progress/routes.d.ts +1 -1
  433. package/dist/resources/handlers.d.ts +1 -1
  434. package/dist/scripts/agent-engines/manage-agent-engine.js +1 -1
  435. package/dist/scripts/agent-engines/manage-agent-engine.js.map +1 -1
  436. package/dist/scripts/agent-engines/set-agent-engine.js +1 -1
  437. package/dist/scripts/agent-engines/set-agent-engine.js.map +1 -1
  438. package/dist/server/agent-chat-plugin.d.ts +3 -0
  439. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  440. package/dist/server/agent-chat-plugin.js +134 -72
  441. package/dist/server/agent-chat-plugin.js.map +1 -1
  442. package/dist/server/core-routes-plugin.d.ts +3 -0
  443. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  444. package/dist/server/core-routes-plugin.js +4 -1
  445. package/dist/server/core-routes-plugin.js.map +1 -1
  446. package/dist/server/open-route.d.ts +9 -0
  447. package/dist/server/open-route.d.ts.map +1 -1
  448. package/dist/server/open-route.js +48 -38
  449. package/dist/server/open-route.js.map +1 -1
  450. package/dist/shared/reasoning-effort.js +3 -0
  451. package/dist/shared/reasoning-effort.js.map +1 -1
  452. package/dist/sharing/access.d.ts.map +1 -1
  453. package/dist/sharing/access.js +18 -2
  454. package/dist/sharing/access.js.map +1 -1
  455. package/dist/sharing/registry.d.ts +10 -0
  456. package/dist/sharing/registry.d.ts.map +1 -1
  457. package/dist/sharing/registry.js.map +1 -1
  458. package/dist/styles/agent-native.css +104 -20
  459. package/dist/styles/rich-markdown-editor.css +11 -10
  460. package/docs/content/cloneable-saas.mdx +2 -2
  461. package/docs/content/evals.mdx +34 -12
  462. package/docs/content/faq.mdx +1 -1
  463. package/docs/content/locales/ar-SA/cloneable-saas.mdx +2 -2
  464. package/docs/content/locales/ar-SA/evals.mdx +7 -0
  465. package/docs/content/locales/ar-SA/faq.mdx +1 -1
  466. package/docs/content/locales/ar-SA/template-chat.mdx +1 -1
  467. package/docs/content/locales/de-DE/cloneable-saas.mdx +2 -2
  468. package/docs/content/locales/de-DE/evals.mdx +8 -0
  469. package/docs/content/locales/de-DE/faq.mdx +1 -1
  470. package/docs/content/locales/de-DE/template-chat.mdx +1 -1
  471. package/docs/content/locales/es-ES/cloneable-saas.mdx +2 -2
  472. package/docs/content/locales/es-ES/evals.mdx +8 -0
  473. package/docs/content/locales/es-ES/faq.mdx +1 -1
  474. package/docs/content/locales/es-ES/template-chat.mdx +1 -1
  475. package/docs/content/locales/fr-FR/cloneable-saas.mdx +2 -2
  476. package/docs/content/locales/fr-FR/evals.mdx +8 -0
  477. package/docs/content/locales/fr-FR/faq.mdx +1 -1
  478. package/docs/content/locales/fr-FR/template-chat.mdx +1 -1
  479. package/docs/content/locales/hi-IN/cloneable-saas.mdx +2 -2
  480. package/docs/content/locales/hi-IN/evals.mdx +8 -0
  481. package/docs/content/locales/hi-IN/faq.mdx +1 -1
  482. package/docs/content/locales/hi-IN/template-chat.mdx +1 -1
  483. package/docs/content/locales/ja-JP/cloneable-saas.mdx +2 -2
  484. package/docs/content/locales/ja-JP/evals.mdx +7 -0
  485. package/docs/content/locales/ja-JP/faq.mdx +1 -1
  486. package/docs/content/locales/ja-JP/template-chat.mdx +1 -1
  487. package/docs/content/locales/ko-KR/cloneable-saas.mdx +2 -2
  488. package/docs/content/locales/ko-KR/evals.mdx +7 -0
  489. package/docs/content/locales/ko-KR/faq.mdx +1 -1
  490. package/docs/content/locales/ko-KR/template-chat.mdx +1 -1
  491. package/docs/content/locales/pt-BR/cloneable-saas.mdx +2 -2
  492. package/docs/content/locales/pt-BR/evals.mdx +8 -0
  493. package/docs/content/locales/pt-BR/faq.mdx +1 -1
  494. package/docs/content/locales/pt-BR/template-chat.mdx +1 -1
  495. package/docs/content/locales/zh-CN/cloneable-saas.mdx +2 -2
  496. package/docs/content/locales/zh-CN/evals.mdx +7 -0
  497. package/docs/content/locales/zh-CN/faq.mdx +1 -1
  498. package/docs/content/locales/zh-CN/template-chat.mdx +1 -1
  499. package/docs/content/locales/zh-TW/cloneable-saas.mdx +2 -2
  500. package/docs/content/locales/zh-TW/evals.mdx +7 -0
  501. package/docs/content/locales/zh-TW/faq.mdx +1 -1
  502. package/docs/content/locales/zh-TW/template-chat.mdx +1 -1
  503. package/docs/content/template-chat.mdx +1 -1
  504. package/package.json +1 -1
  505. package/corpus/templates/content/server/routes/api/notion/disconnect.post.ts +0 -12
  506. package/corpus/templates/design/app/components/design/LocalSourceEditBanner.tsx +0 -157
  507. package/corpus/templates/design/app/lib/design-templates.ts +0 -1305
  508. package/corpus/templates/design/app/pages/Templates.tsx +0 -279
@@ -0,0 +1,606 @@
1
+ import type { ParityRow } from "./matrix.types";
2
+
3
+ export const parityMatrix: ParityRow[] = [
4
+ {
5
+ id: "sidebar.document-tree-crud",
6
+ surface: "sidebar",
7
+ label: "Create, delete, move, favorite, list, search, and open pages",
8
+ uiEntrypoints: [
9
+ "app/components/sidebar/DocumentSidebar.tsx",
10
+ "app/components/sidebar/DocumentTreeItem.tsx",
11
+ "app/hooks/use-documents.ts",
12
+ ],
13
+ durableEffect:
14
+ "Document tree rows and document metadata are created, updated, deleted, moved, searched, or read.",
15
+ uiImplementation:
16
+ "Sidebar and hooks call document actions with optimistic cache updates for visible responsiveness.",
17
+ status: "action-backed",
18
+ actions: [
19
+ "create-document",
20
+ "delete-document",
21
+ "get-document",
22
+ "list-documents",
23
+ "move-document",
24
+ "search-documents",
25
+ "update-document",
26
+ ],
27
+ exception: null,
28
+ reliabilityRisk: "none",
29
+ spinePriority: "P0",
30
+ testCoverage: "covered",
31
+ followUpPR: null,
32
+ coverageRefs: [
33
+ "actions/content-database-lifecycle.db.test.ts",
34
+ "actions/_local-file-documents.test.ts",
35
+ ],
36
+ evalScenarioIds: ["document-search-edit"],
37
+ },
38
+ {
39
+ id: "sidebar.navigation-and-screen-context",
40
+ surface: "sidebar",
41
+ label: "Navigate between documents and expose current screen context",
42
+ uiEntrypoints: [
43
+ "app/components/sidebar/DocumentSidebar.tsx",
44
+ "actions/navigate.ts",
45
+ "actions/view-screen.ts",
46
+ ],
47
+ durableEffect:
48
+ "Application navigation state is updated or read so the agent can reason about the user's current page/view.",
49
+ uiImplementation:
50
+ "The UI uses React Router and application-state writes; agents use navigation and screen-context actions.",
51
+ status: "action-equivalent",
52
+ actions: ["navigate", "view-screen"],
53
+ exception:
54
+ "Human navigation is router-local, while agent navigation/screen inspection uses application-state actions to produce the same workspace orientation effect.",
55
+ reliabilityRisk: "none",
56
+ spinePriority: "P1",
57
+ testCoverage: "seeded",
58
+ followUpPR: null,
59
+ },
60
+ {
61
+ id: "sidebar.chrome-state",
62
+ surface: "sidebar",
63
+ label: "Collapse sections and resize the sidebar",
64
+ uiEntrypoints: [
65
+ "app/components/sidebar/DocumentSidebar.tsx",
66
+ "app/components/layout/Layout.tsx",
67
+ ],
68
+ durableEffect: null,
69
+ uiImplementation:
70
+ "Sidebar expansion, section collapse, and width are client-local UI state.",
71
+ status: "client-only-ephemeral",
72
+ actions: [],
73
+ exception: null,
74
+ reliabilityRisk: "none",
75
+ spinePriority: "P2",
76
+ testCoverage: "none",
77
+ followUpPR: null,
78
+ },
79
+ {
80
+ id: "editor.document-body-and-title",
81
+ surface: "editor",
82
+ label: "Edit document title, body, icon, image alt text, and precise text",
83
+ uiEntrypoints: [
84
+ "app/components/editor/DocumentEditor.tsx",
85
+ "app/components/editor/DocumentDatabase.tsx",
86
+ "app/components/editor/extensions/ImageBlock.tsx",
87
+ "app/components/editor/SlashCommandMenu.tsx",
88
+ ],
89
+ durableEffect:
90
+ "Document content, title, icon, image metadata, and text replacements are saved to the same document source.",
91
+ uiImplementation:
92
+ "The editor autosaves through update-document; agents can use update-document, edit-document, pull-document, and media-specific helpers.",
93
+ status: "action-backed",
94
+ actions: [
95
+ "edit-document",
96
+ "pull-document",
97
+ "set-image-alt-text",
98
+ "transcribe-media",
99
+ "update-document",
100
+ ],
101
+ exception: null,
102
+ reliabilityRisk: "none",
103
+ spinePriority: "P0",
104
+ testCoverage: "covered",
105
+ followUpPR: null,
106
+ coverageRefs: [
107
+ "actions/content-database-lifecycle.db.test.ts",
108
+ "actions/_local-file-documents.test.ts",
109
+ ],
110
+ evalScenarioIds: ["document-search-edit"],
111
+ },
112
+ {
113
+ id: "editor.client-formatting-and-insertions",
114
+ surface: "editor",
115
+ label:
116
+ "Rich text formatting, selection state, slash block insertion, and copy actions",
117
+ uiEntrypoints: [
118
+ "app/components/editor/BubbleToolbar.tsx",
119
+ "app/components/editor/SlashCommandMenu.tsx",
120
+ "app/components/editor/DocumentToolbar.tsx",
121
+ ],
122
+ durableEffect: null,
123
+ uiImplementation:
124
+ "Formatting and insertion controls mutate the local editor transaction; persistence is covered by the document save row.",
125
+ status: "client-only-ephemeral",
126
+ actions: [],
127
+ exception: null,
128
+ reliabilityRisk: "none",
129
+ spinePriority: "P1",
130
+ testCoverage: "none",
131
+ followUpPR: null,
132
+ },
133
+ {
134
+ id: "editor.agent-assist-prompts",
135
+ surface: "editor",
136
+ label: "Ask AI from slash generation or comment context",
137
+ uiEntrypoints: [
138
+ "app/components/editor/SlashCommandMenu.tsx",
139
+ "app/components/editor/CommentsSidebar.tsx",
140
+ ],
141
+ durableEffect:
142
+ "No direct durable mutation; the prompt asks the agent to use document actions when it decides to write.",
143
+ uiImplementation:
144
+ "Client composes context and sends it to agent chat rather than directly calling an LLM or mutating data.",
145
+ status: "client-assist",
146
+ actions: [],
147
+ exception: null,
148
+ reliabilityRisk: "none",
149
+ spinePriority: "P1",
150
+ testCoverage: "none",
151
+ followUpPR: null,
152
+ },
153
+ {
154
+ id: "sharing.document-discoverability-and-export",
155
+ surface: "sharing",
156
+ label: "Share, hide from search, export, and reveal documents",
157
+ uiEntrypoints: [
158
+ "app/components/editor/DocumentToolbar.tsx",
159
+ "app/hooks/use-documents.ts",
160
+ ],
161
+ durableEffect:
162
+ "Search discoverability, shareable copies, exports, and OS reveal requests are managed through Content actions.",
163
+ uiImplementation:
164
+ "Toolbar actions call sharing/export/discoverability actions; local source reveal is host-only and hidden from model tools.",
165
+ status: "action-backed",
166
+ actions: [
167
+ "export-document",
168
+ "reveal-local-source-file",
169
+ "set-document-discoverability",
170
+ "share-local-file-document",
171
+ ],
172
+ exception: null,
173
+ reliabilityRisk: "none",
174
+ spinePriority: "P0",
175
+ testCoverage: "covered",
176
+ followUpPR: null,
177
+ coverageRefs: ["actions/_local-file-documents.test.ts"],
178
+ evalScenarioIds: ["local-file-source-truth"],
179
+ },
180
+ {
181
+ id: "sharing.os-reveal-local-source",
182
+ surface: "sharing",
183
+ label: "Reveal a local source file in the system file manager",
184
+ uiEntrypoints: [
185
+ "app/components/editor/DocumentToolbar.tsx",
186
+ "actions/reveal-local-source-file.ts",
187
+ ],
188
+ durableEffect: null,
189
+ uiImplementation:
190
+ "A trusted host opens the OS file manager for a local file path; the action is intentionally hidden from the model with agentTool: false.",
191
+ status: "host-only",
192
+ actions: ["reveal-local-source-file"],
193
+ exception:
194
+ "OS reveal depends on trusted local host capabilities and should not spend agent tool surface or imply portable hosted behavior.",
195
+ reliabilityRisk: "none",
196
+ spinePriority: "P2",
197
+ testCoverage: "seeded",
198
+ followUpPR: "Local folder exception/docs PR",
199
+ },
200
+ {
201
+ id: "database.lifecycle-and-trash",
202
+ surface: "database",
203
+ label: "Create, soft-delete, restore, list, and inspect content databases",
204
+ uiEntrypoints: [
205
+ "app/components/editor/SlashCommandMenu.tsx",
206
+ "app/hooks/use-content-database.ts",
207
+ "app/hooks/use-documents.ts",
208
+ ],
209
+ durableEffect:
210
+ "Database pages and database records are created, read, soft-deleted, restored, and listed.",
211
+ uiImplementation:
212
+ "Database creation and lifecycle controls call content database actions.",
213
+ status: "action-backed",
214
+ actions: [
215
+ "create-content-database",
216
+ "create-inline-content-database",
217
+ "delete-content-database",
218
+ "get-content-database",
219
+ "list-content-databases",
220
+ "list-trashed-content-databases",
221
+ "restore-content-database",
222
+ ],
223
+ exception: null,
224
+ reliabilityRisk: "none",
225
+ spinePriority: "P0",
226
+ testCoverage: "covered",
227
+ followUpPR: null,
228
+ coverageRefs: ["actions/content-database-lifecycle.db.test.ts"],
229
+ evalScenarioIds: ["database-source-scope"],
230
+ },
231
+ {
232
+ id: "database.rows",
233
+ surface: "database",
234
+ label: "Add, duplicate, move, open, and delete database rows",
235
+ uiEntrypoints: [
236
+ "app/components/editor/DocumentDatabase.tsx",
237
+ "app/components/editor/database/DatabaseView.tsx",
238
+ ],
239
+ durableEffect:
240
+ "Database row backing documents and row ordering are created, duplicated, moved, edited, and deleted.",
241
+ uiImplementation:
242
+ "Row controls call row actions; selected-row duplicate/delete call bounded batch actions, while bulk property edits remain a later reliability slice.",
243
+ status: "action-backed",
244
+ actions: [
245
+ "add-database-item",
246
+ "delete-database-items",
247
+ "delete-document",
248
+ "duplicate-database-items",
249
+ "duplicate-database-item",
250
+ "move-database-item",
251
+ "set-document-property",
252
+ ],
253
+ exception: null,
254
+ reliabilityRisk: "none",
255
+ spinePriority: "P0",
256
+ testCoverage: "covered",
257
+ followUpPR: null,
258
+ coverageRefs: [
259
+ "actions/database-row-batch-actions.db.test.ts",
260
+ "parity/__tests__/database-row-batch-reliability.test.ts",
261
+ ],
262
+ evalScenarioIds: ["database-bulk-row-reliability"],
263
+ },
264
+ {
265
+ id: "database.properties-and-view-config",
266
+ surface: "database",
267
+ label: "Configure properties, values, ordering, and saved views",
268
+ uiEntrypoints: [
269
+ "app/components/editor/DocumentProperties.tsx",
270
+ "app/components/editor/DocumentDatabase.tsx",
271
+ "app/components/editor/database/DatabaseView.tsx",
272
+ "app/hooks/use-document-properties.ts",
273
+ ],
274
+ durableEffect:
275
+ "Property schemas, property values, property order, filters, sorts, grouping, hidden columns, view type, and view settings are stored.",
276
+ uiImplementation:
277
+ "Property popovers and database view controls call document property and view actions.",
278
+ status: "action-backed",
279
+ actions: [
280
+ "configure-document-property",
281
+ "delete-document-property",
282
+ "duplicate-document-property",
283
+ "list-document-properties",
284
+ "reorder-document-property",
285
+ "set-document-property",
286
+ "update-content-database-view",
287
+ ],
288
+ exception: null,
289
+ reliabilityRisk: "none",
290
+ spinePriority: "P0",
291
+ testCoverage: "covered",
292
+ followUpPR: null,
293
+ coverageRefs: [
294
+ "actions/bind-content-database-source-field.db.test.ts",
295
+ "actions/content-database-source-actions.test.ts",
296
+ "actions/resync-content-database-source.db.test.ts",
297
+ ],
298
+ evalScenarioIds: ["database-source-scope"],
299
+ },
300
+ {
301
+ id: "source-sync.database-source-bindings",
302
+ surface: "source-sync",
303
+ label:
304
+ "Attach, inspect, refresh, disconnect, join, and bind database sources",
305
+ uiEntrypoints: [
306
+ "app/components/editor/DocumentDatabase.tsx",
307
+ "app/components/editor/DocumentProperties.tsx",
308
+ "app/components/editor/database/DatabaseView.tsx",
309
+ "app/hooks/use-content-database.ts",
310
+ ],
311
+ durableEffect:
312
+ "Mounted database source metadata, fields, source role, join keys, and source-field/property bindings are stored and refreshed.",
313
+ uiImplementation:
314
+ "Database settings and property UI call source actions through Content database hooks.",
315
+ status: "action-backed",
316
+ actions: [
317
+ "add-content-database-source-field-property",
318
+ "attach-content-database-source",
319
+ "bind-content-database-source-field",
320
+ "change-content-database-source-role",
321
+ "disconnect-content-database-source",
322
+ "get-content-database-source",
323
+ "list-builder-cms-models",
324
+ "refresh-content-database-source",
325
+ "suggest-source-join-key",
326
+ ],
327
+ exception: null,
328
+ reliabilityRisk: "none",
329
+ spinePriority: "P0",
330
+ testCoverage: "covered",
331
+ followUpPR: null,
332
+ coverageRefs: [
333
+ "actions/bind-content-database-source-field.db.test.ts",
334
+ "actions/content-database-source-actions.test.ts",
335
+ "actions/resync-content-database-source.db.test.ts",
336
+ ],
337
+ evalScenarioIds: ["database-source-scope"],
338
+ },
339
+ {
340
+ id: "source-sync.builder-cms-review-and-write-gates",
341
+ surface: "source-sync",
342
+ label: "Review, stage, validate, and execute Builder CMS source writes",
343
+ uiEntrypoints: [
344
+ "app/components/editor/DocumentDatabase.tsx",
345
+ "app/components/editor/database/DatabaseView.tsx",
346
+ "app/components/editor/database-sources/BuilderSourceReviewDialog.tsx",
347
+ ],
348
+ durableEffect:
349
+ "Builder source write mode, staged reviews, validation records, and bounded execution records are created through guarded actions.",
350
+ uiImplementation:
351
+ "Builder source dialogs call review, write-mode, validation, staging, and execution actions.",
352
+ status: "action-backed",
353
+ actions: [
354
+ "execute-builder-source-batch",
355
+ "execute-builder-source-execution",
356
+ "prepare-builder-source-execution",
357
+ "prepare-builder-source-review",
358
+ "review-content-database-source-change-set",
359
+ "set-content-database-source-write-mode",
360
+ "stage-builder-revision",
361
+ "validate-builder-source-execution",
362
+ ],
363
+ exception: null,
364
+ reliabilityRisk: "none",
365
+ spinePriority: "P0",
366
+ testCoverage: "covered",
367
+ followUpPR: null,
368
+ coverageRefs: [
369
+ "actions/builder-source-review-gates.db.test.ts",
370
+ "actions/execute-builder-source-execution.test.ts",
371
+ ],
372
+ evalScenarioIds: ["builder-source-review-readonly"],
373
+ },
374
+ {
375
+ id: "source-sync.builder-body-hydration-worker",
376
+ surface: "source-sync",
377
+ label: "Process queued Builder CMS body hydration work",
378
+ uiEntrypoints: [
379
+ "app/components/editor/DocumentEditor.tsx",
380
+ "app/components/editor/database/DatabaseView.tsx",
381
+ "app/hooks/use-content-database.ts",
382
+ ],
383
+ durableEffect:
384
+ "Queued Builder body hydration entries are processed into readable Content document/database body state.",
385
+ uiImplementation:
386
+ "Editor and database views trigger bounded queue processing through the shared action surface after source sync exposes hydration work.",
387
+ status: "action-backed",
388
+ actions: ["process-builder-body-hydration"],
389
+ exception:
390
+ "This action is intentionally hidden from the model with agentTool: false because it is an internal bounded queue worker; agents should use source refresh, review, and execution actions rather than manually driving hydration internals.",
391
+ reliabilityRisk: "none",
392
+ spinePriority: "P0",
393
+ testCoverage: "covered",
394
+ followUpPR: null,
395
+ coverageRefs: ["actions/_database-source-utils.test.ts"],
396
+ },
397
+ {
398
+ id: "source-sync.builder-documents",
399
+ surface: "source-sync",
400
+ label: "List, pull, check, and push Builder docs/blog MDX documents",
401
+ uiEntrypoints: [
402
+ "actions/list-builder-docs.ts",
403
+ "actions/pull-builder-doc.ts",
404
+ "actions/check-builder-doc.ts",
405
+ "actions/push-builder-doc.ts",
406
+ ],
407
+ durableEffect:
408
+ "Builder docs/blog entries can be read into Content, checked locally, and pushed through guarded Builder document actions.",
409
+ uiImplementation:
410
+ "Currently agent/action-facing rather than a primary visible UI surface.",
411
+ status: "action-backed",
412
+ actions: [
413
+ "check-builder-doc",
414
+ "list-builder-docs",
415
+ "pull-builder-doc",
416
+ "push-builder-doc",
417
+ ],
418
+ exception: null,
419
+ reliabilityRisk: "none",
420
+ spinePriority: "P1",
421
+ testCoverage: "seeded",
422
+ followUpPR: null,
423
+ },
424
+ {
425
+ id: "source-sync.provider-api-and-staged-datasets",
426
+ surface: "source-sync",
427
+ label:
428
+ "Inspect provider APIs and stage/query/delete large provider datasets",
429
+ uiEntrypoints: [
430
+ "actions/provider-api-catalog.ts",
431
+ "actions/provider-api-docs.ts",
432
+ "actions/provider-api-request.ts",
433
+ "actions/query-staged-dataset.ts",
434
+ ],
435
+ durableEffect:
436
+ "Provider API metadata and staged dataset scratch storage support scoped agent/source analysis.",
437
+ uiImplementation:
438
+ "Agent-facing provider API substrate; UI parity is capability parity rather than a visible button-by-button mapping.",
439
+ status: "action-backed",
440
+ actions: [
441
+ "delete-staged-dataset",
442
+ "list-staged-datasets",
443
+ "provider-api-catalog",
444
+ "provider-api-docs",
445
+ "provider-api-request",
446
+ "query-staged-dataset",
447
+ ],
448
+ exception: null,
449
+ reliabilityRisk: "none",
450
+ spinePriority: "P1",
451
+ testCoverage: "seeded",
452
+ followUpPR: null,
453
+ },
454
+ {
455
+ id: "local-files.import-export-mounted-folder",
456
+ surface: "local-files",
457
+ label: "Import, check, export, and push local folder source files",
458
+ uiEntrypoints: [
459
+ "app/routes/_app.local-files.tsx",
460
+ "actions/import-content-source.ts",
461
+ "actions/export-content-source.ts",
462
+ ],
463
+ durableEffect:
464
+ "Local Markdown/MDX source files are imported into Content documents, and editable Content documents are exported back to source-friendly files.",
465
+ uiImplementation:
466
+ "UI reads/writes browser or Desktop folder handles around import/export actions.",
467
+ status: "action-backed",
468
+ actions: ["export-content-source", "import-content-source"],
469
+ exception: null,
470
+ reliabilityRisk: "none",
471
+ spinePriority: "P0",
472
+ testCoverage: "covered",
473
+ followUpPR: null,
474
+ coverageRefs: ["actions/_local-file-documents.test.ts"],
475
+ evalScenarioIds: ["local-file-source-truth"],
476
+ },
477
+ {
478
+ id: "local-files.host-folder-handles",
479
+ surface: "local-files",
480
+ label: "Choose, persist, remove, and write trusted local folder handles",
481
+ uiEntrypoints: ["app/routes/_app.local-files.tsx"],
482
+ durableEffect:
483
+ "Host directory handles and browser/Desktop write permissions are managed outside SQL action state.",
484
+ uiImplementation:
485
+ "Browser File System Access and Desktop bridge APIs own the physical folder handles and writes.",
486
+ status: "host-only",
487
+ actions: [],
488
+ exception:
489
+ "Mounted local folders require browser/Desktop host handles that agents cannot safely or portably hold as normal tools.",
490
+ reliabilityRisk: "none",
491
+ spinePriority: "P0",
492
+ testCoverage: "none",
493
+ followUpPR: "Local folder exception/docs PR",
494
+ },
495
+ {
496
+ id: "local-files.components-workspace",
497
+ surface: "local-files",
498
+ label: "Register, list, and write local MDX component workspaces",
499
+ uiEntrypoints: [
500
+ "app/routes/_app.local-files.tsx",
501
+ "actions/register-local-component-workspace.ts",
502
+ "actions/list-local-component-files.ts",
503
+ "actions/write-local-component-file.ts",
504
+ ],
505
+ durableEffect:
506
+ "Trusted local component workspace registration and component file reads/writes support local MDX previews.",
507
+ uiImplementation:
508
+ "Desktop-host workspace registration is hidden from model tools; listed/written files use Content actions once registered.",
509
+ status: "host-only",
510
+ actions: [
511
+ "list-local-component-files",
512
+ "register-local-component-workspace",
513
+ "write-local-component-file",
514
+ ],
515
+ exception:
516
+ "Workspace registration depends on a trusted Desktop folder path and is intentionally hidden with agentTool: false.",
517
+ reliabilityRisk: "none",
518
+ spinePriority: "P1",
519
+ testCoverage: "seeded",
520
+ followUpPR: "Local folder exception/docs PR",
521
+ },
522
+ {
523
+ id: "notion.route-backed-document-sync",
524
+ surface: "source-sync",
525
+ label:
526
+ "Notion document sync status, link, unlink, pull, push, resolve, create, search, and disconnect",
527
+ uiEntrypoints: [
528
+ "app/hooks/use-notion.ts",
529
+ "app/components/editor/DocumentToolbar.tsx",
530
+ "app/components/editor/NotionSyncBar.tsx",
531
+ "app/components/editor/DocumentEditor.tsx",
532
+ ],
533
+ durableEffect:
534
+ "Notion connection state, page search, link metadata, and local/remote document body sync state are read or mutated through Content actions.",
535
+ uiImplementation:
536
+ "Notion document sync hooks call the shared action surface; OAuth auth-url/callback routes remain route-shaped because they depend on browser redirects.",
537
+ status: "action-backed",
538
+ actions: [
539
+ "connect-notion-status",
540
+ "create-and-link-notion-page",
541
+ "disconnect-notion",
542
+ "link-notion-page",
543
+ "list-notion-links",
544
+ "pull-notion-page",
545
+ "push-notion-page",
546
+ "refresh-notion-sync-status",
547
+ "resolve-notion-sync-conflict",
548
+ "search-notion-pages",
549
+ "sync-notion-comments",
550
+ "unlink-notion-page",
551
+ ],
552
+ exception:
553
+ "Notion OAuth auth-url and callback routes remain route-shaped because they initiate and receive browser redirects rather than normal app data mutations.",
554
+ reliabilityRisk: "none",
555
+ spinePriority: "P0",
556
+ testCoverage: "covered",
557
+ followUpPR: null,
558
+ coverageRefs: ["parity/__tests__/matrix-route-gap-classify.test.ts"],
559
+ routePatterns: ["/api/notion/auth-url", "/api/notion/callback"],
560
+ },
561
+ {
562
+ id: "comments.threads",
563
+ surface: "comments",
564
+ label: "List, add, reply, resolve, reopen, and delete comment threads",
565
+ uiEntrypoints: [
566
+ "app/components/editor/CommentsSidebar.tsx",
567
+ "app/hooks/use-comments.ts",
568
+ ],
569
+ durableEffect:
570
+ "Comment threads, replies, anchors, mentions, resolution state, and deletion are stored through comment actions.",
571
+ uiImplementation:
572
+ "Comment hooks call comment actions; comment positioning is client-only editor geometry.",
573
+ status: "action-backed",
574
+ actions: [
575
+ "add-comment",
576
+ "delete-comment",
577
+ "list-comments",
578
+ "update-comment",
579
+ ],
580
+ exception: null,
581
+ reliabilityRisk: "none",
582
+ spinePriority: "P0",
583
+ testCoverage: "seeded",
584
+ followUpPR: null,
585
+ },
586
+ {
587
+ id: "versions.history-and-restore",
588
+ surface: "versions",
589
+ label: "Open version history and restore a previous document version",
590
+ uiEntrypoints: [
591
+ "app/components/editor/VersionHistoryPanel.tsx",
592
+ "app/hooks/use-document-versions.ts",
593
+ ],
594
+ durableEffect:
595
+ "Document versions are listed and selected versions can restore the document while snapshotting current state.",
596
+ uiImplementation:
597
+ "Version panel reads and restores through document version actions.",
598
+ status: "action-backed",
599
+ actions: ["list-document-versions", "restore-document-version"],
600
+ exception: null,
601
+ reliabilityRisk: "none",
602
+ spinePriority: "P0",
603
+ testCoverage: "seeded",
604
+ followUpPR: null,
605
+ },
606
+ ];
@@ -0,0 +1,42 @@
1
+ export type ParitySurface =
2
+ | "sidebar"
3
+ | "header"
4
+ | "editor"
5
+ | "database"
6
+ | "local-files"
7
+ | "sharing"
8
+ | "source-sync"
9
+ | "comments"
10
+ | "versions";
11
+
12
+ export type ParityStatus =
13
+ | "action-backed"
14
+ | "action-equivalent"
15
+ | "route-backed-gap"
16
+ | "host-only"
17
+ | "client-only-ephemeral"
18
+ | "client-assist"
19
+ | "missing";
20
+
21
+ export type ReliabilityRisk = "none" | "per-row-loop";
22
+ export type SpinePriority = "P0" | "P1" | "P2";
23
+ export type TestCoverage = "covered" | "seeded" | "none";
24
+
25
+ export interface ParityRow {
26
+ id: string;
27
+ surface: ParitySurface;
28
+ label: string;
29
+ uiEntrypoints: string[];
30
+ durableEffect: string | null;
31
+ uiImplementation: string;
32
+ status: ParityStatus;
33
+ actions: string[];
34
+ exception: string | null;
35
+ reliabilityRisk: ReliabilityRisk;
36
+ spinePriority: SpinePriority;
37
+ testCoverage: TestCoverage;
38
+ followUpPR: string | null;
39
+ coverageRefs?: string[];
40
+ evalScenarioIds?: string[];
41
+ routePatterns?: string[];
42
+ }
@@ -0,0 +1,4 @@
1
+ import { parityEvalScenarios } from "./eval-scenarios.ts";
2
+ import { scenarioToEval } from "./scenario-to-eval.ts";
3
+
4
+ export default parityEvalScenarios.map((scenario) => scenarioToEval(scenario));