@agent-native/core 0.80.8 → 0.80.10

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 (359) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +19 -0
  3. package/corpus/core/docs/content/locales/ar-SA/template-design.mdx +6 -0
  4. package/corpus/core/docs/content/locales/de-DE/template-design.mdx +8 -0
  5. package/corpus/core/docs/content/locales/es-ES/template-design.mdx +10 -2
  6. package/corpus/core/docs/content/locales/fr-FR/template-design.mdx +10 -2
  7. package/corpus/core/docs/content/locales/hi-IN/template-design.mdx +7 -0
  8. package/corpus/core/docs/content/locales/ja-JP/template-design.mdx +7 -0
  9. package/corpus/core/docs/content/locales/ko-KR/template-design.mdx +7 -0
  10. package/corpus/core/docs/content/locales/pt-BR/template-design.mdx +9 -2
  11. package/corpus/core/docs/content/locales/zh-CN/template-design.mdx +6 -0
  12. package/corpus/core/docs/content/locales/zh-TW/template-design.mdx +6 -0
  13. package/corpus/core/docs/content/template-design.mdx +9 -2
  14. package/corpus/core/package.json +1 -1
  15. package/corpus/core/src/cli/design-connect.ts +28 -2
  16. package/corpus/core/src/cli/mcp.ts +10 -0
  17. package/corpus/core/src/cli/skills.ts +103 -36
  18. package/corpus/core/src/client/error-format.ts +25 -0
  19. package/corpus/core/src/client/extensions/ExtensionViewer.tsx +13 -11
  20. package/corpus/core/src/client/guided-questions.tsx +32 -4
  21. package/corpus/core/src/client/onboarding/OnboardingPanel.tsx +33 -1
  22. package/corpus/core/src/client/resources/BuiltinCapabilityDetail.tsx +8 -0
  23. package/corpus/core/src/client/resources/use-builtin-capabilities.ts +4 -2
  24. package/corpus/core/src/client/session-replay.ts +34 -0
  25. package/corpus/core/src/client/sharing/ShareButton.tsx +106 -21
  26. package/corpus/core/src/coding-tools/index.ts +1 -1
  27. package/corpus/core/src/mcp/index.ts +2 -0
  28. package/corpus/core/src/mcp/screen-memory-stdio.ts +290 -0
  29. package/corpus/core/src/mcp-client/builtin-capabilities.ts +13 -1
  30. package/corpus/core/src/mcp-client/index.ts +9 -0
  31. package/corpus/core/src/mcp-client/screen-memory-local.ts +461 -0
  32. package/corpus/core/src/onboarding/types.ts +7 -0
  33. package/corpus/core/src/server/agent-chat-plugin.ts +25 -0
  34. package/corpus/core/src/server/agents-bundle.ts +35 -7
  35. package/corpus/core/src/styles/agent-native.css +5 -0
  36. package/corpus/core/src/templates/default/app/global.css +35 -35
  37. package/corpus/templates/analytics/AGENTS.md +6 -0
  38. package/corpus/templates/analytics/actions/github-repo-files.ts +9 -0
  39. package/corpus/templates/analytics/app/components/layout/Layout.tsx +4 -4
  40. package/corpus/templates/analytics/app/global.css +144 -40
  41. package/corpus/templates/analytics/app/pages/adhoc/explorer/index.tsx +1 -1
  42. package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/ChartCard.tsx +1 -1
  43. package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/index.tsx +1 -1
  44. package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +4 -4
  45. package/corpus/templates/analytics/app/pages/sessions/SessionsPage.tsx +9 -9
  46. package/corpus/templates/analytics/changelog/2026-06-29-agents-can-search-and-read-connected-github-repositories-whe.md +6 -0
  47. package/corpus/templates/analytics/changelog/2026-06-29-sessions-and-explorer-layouts-adapt-when-the-agent-sidebar-is.md +6 -0
  48. package/corpus/templates/assets/app/components/layout/Layout.tsx +3 -1
  49. package/corpus/templates/assets/app/components/library/LibraryPresetGrid.tsx +1 -1
  50. package/corpus/templates/assets/app/global.css +99 -35
  51. package/corpus/templates/assets/app/routes/asset.$id.tsx +2 -2
  52. package/corpus/templates/assets/app/routes/brand-kits.$id.tsx +4 -4
  53. package/corpus/templates/assets/app/routes/library.tsx +4 -4
  54. package/corpus/templates/assets/changelog/2026-06-29-asset-library-and-detail-layouts-adapt-when-the-agent-sidebar.md +6 -0
  55. package/corpus/templates/brain/app/components/layout/Layout.tsx +1 -1
  56. package/corpus/templates/brain/app/global.css +63 -35
  57. package/corpus/templates/brain/app/routes/search.tsx +1 -1
  58. package/corpus/templates/brain/app/routes/settings.tsx +1 -1
  59. package/corpus/templates/brain/app/routes/sources.tsx +2 -2
  60. package/corpus/templates/brain/changelog/2026-06-29-search-settings-and-source-layouts-adapt-when-the-agent-sidebar.md +6 -0
  61. package/corpus/templates/calendar/app/components/calendar/EventDetailPanel.tsx +4 -4
  62. package/corpus/templates/calendar/app/components/calendar/FindTimePanel.tsx +3 -2
  63. package/corpus/templates/calendar/app/components/layout/AppLayout.tsx +4 -2
  64. package/corpus/templates/calendar/app/global.css +69 -35
  65. package/corpus/templates/calendar/changelog/2026-06-29-event-and-find-time-layouts-adapt-when-the-agent-sidebar-is.md +6 -0
  66. package/corpus/templates/chat/app/components/layout/Layout.tsx +1 -1
  67. package/corpus/templates/chat/app/global.css +35 -35
  68. package/corpus/templates/chat/changelog/2026-06-29-chat-layouts-adapt-when-the-agent-sidebar-is-open.md +6 -0
  69. package/corpus/templates/clips/AGENTS.md +13 -0
  70. package/corpus/templates/clips/actions/get-screen-memory-status.ts +12 -0
  71. package/corpus/templates/clips/actions/query-screen-memory-context.ts +29 -0
  72. package/corpus/templates/clips/actions/view-screen.ts +2 -2
  73. package/corpus/templates/clips/app/components/library/library-layout.tsx +1 -1
  74. package/corpus/templates/clips/app/global.css +47 -35
  75. package/corpus/templates/clips/app/routes/_app.meetings.$meetingId.tsx +3 -3
  76. package/corpus/templates/clips/app/routes/r.$recordingId.tsx +45 -18
  77. package/corpus/templates/clips/changelog/2026-06-29-meeting-detail-layouts-adapt-when-the-agent-sidebar-is-open.md +6 -0
  78. package/corpus/templates/clips/changelog/2026-06-29-screen-memory-keeps-a-local-rolling-screen-buffer-for-agent-context.md +5 -0
  79. package/corpus/templates/clips/changelog/2026-06-29-video-chat-is-easier-to-find-on-recording-pages-and-s3-setup.md +6 -0
  80. package/corpus/templates/clips/chrome-extension/src/styles.css +39 -39
  81. package/corpus/templates/clips/desktop/src/app.tsx +290 -1
  82. package/corpus/templates/clips/desktop/src/shared/config.ts +83 -0
  83. package/corpus/templates/clips/desktop/src/styles.css +67 -52
  84. package/corpus/templates/clips/desktop/src-tauri/src/config.rs +50 -0
  85. package/corpus/templates/clips/desktop/src-tauri/src/lib.rs +17 -0
  86. package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +13 -13
  87. package/corpus/templates/clips/desktop/src-tauri/src/screen_memory.rs +990 -0
  88. package/corpus/templates/clips/server/plugins/onboarding.ts +2 -0
  89. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +3 -3
  90. package/corpus/templates/content/app/components/layout/Layout.tsx +1 -1
  91. package/corpus/templates/content/app/global.css +29 -15
  92. package/corpus/templates/content/changelog/2026-06-29-database-gallery-layouts-adapt-when-the-agent-sidebar-is-open.md +6 -0
  93. package/corpus/templates/design/.agents/skills/design-generation/SKILL.md +25 -20
  94. package/corpus/templates/design/.agents/skills/design-systems/SKILL.md +8 -0
  95. package/corpus/templates/design/.agents/skills/export-handoff/SKILL.md +8 -0
  96. package/corpus/templates/design/.agents/skills/visual-edit/SKILL.md +13 -0
  97. package/corpus/templates/design/AGENTS.md +20 -12
  98. package/corpus/templates/design/CODE_NATIVE_DESIGN_STUDIO_IMPLEMENTATION_PLAN.md +1054 -0
  99. package/corpus/templates/design/DESIGN-STUDIO-PLAN.md +717 -0
  100. package/corpus/templates/design/actions/add-breakpoint.ts +143 -0
  101. package/corpus/templates/design/actions/add-localhost-screens.ts +5 -0
  102. package/corpus/templates/design/actions/apply-a11y-fix.ts +317 -0
  103. package/corpus/templates/design/actions/apply-component-prop-edit.ts +433 -0
  104. package/corpus/templates/design/actions/apply-design-state.ts +200 -0
  105. package/corpus/templates/design/actions/apply-design-token-edit.ts +202 -0
  106. package/corpus/templates/design/actions/apply-motion-edit.ts +450 -0
  107. package/corpus/templates/design/actions/apply-shader-fill.ts +404 -0
  108. package/corpus/templates/design/actions/apply-visual-edit.ts +214 -8
  109. package/corpus/templates/design/actions/capture-design-state.ts +224 -0
  110. package/corpus/templates/design/actions/connect-builder-app.ts +162 -0
  111. package/corpus/templates/design/actions/create-component.ts +447 -0
  112. package/corpus/templates/design/actions/create-design-branch.ts +263 -0
  113. package/corpus/templates/design/actions/create-design-state.ts +162 -0
  114. package/corpus/templates/design/actions/delete-design-state.ts +55 -0
  115. package/corpus/templates/design/actions/deploy-design-preview.ts +275 -0
  116. package/corpus/templates/design/actions/export-coding-handoff.ts +12 -4
  117. package/corpus/templates/design/actions/generate-design.ts +6 -21
  118. package/corpus/templates/design/actions/generate-screens.ts +43 -2
  119. package/corpus/templates/design/actions/get-component-details.ts +242 -0
  120. package/corpus/templates/design/actions/get-design-branch-diff.ts +362 -0
  121. package/corpus/templates/design/actions/get-design-review.ts +314 -0
  122. package/corpus/templates/design/actions/get-design-surface-index.ts +582 -0
  123. package/corpus/templates/design/actions/get-design.ts +1 -0
  124. package/corpus/templates/design/actions/get-motion-timeline.ts +99 -0
  125. package/corpus/templates/design/actions/index-components.ts +258 -0
  126. package/corpus/templates/design/actions/index-design-tokens.ts +273 -0
  127. package/corpus/templates/design/actions/list-design-extensions.ts +309 -0
  128. package/corpus/templates/design/actions/list-design-source-capabilities.ts +153 -0
  129. package/corpus/templates/design/actions/list-design-states.ts +72 -0
  130. package/corpus/templates/design/actions/migrate-inline-design-to-app.ts +298 -0
  131. package/corpus/templates/design/actions/open-component-source.ts +237 -0
  132. package/corpus/templates/design/actions/present-design-variants.ts +355 -30
  133. package/corpus/templates/design/actions/preview-component-prop-edit.ts +254 -0
  134. package/corpus/templates/design/actions/preview-design-token-edit.ts +113 -0
  135. package/corpus/templates/design/actions/preview-shader-fill.ts +189 -0
  136. package/corpus/templates/design/actions/remove-breakpoint.ts +103 -0
  137. package/corpus/templates/design/actions/remove-motion-timeline.ts +196 -0
  138. package/corpus/templates/design/actions/run-design-audit.ts +421 -0
  139. package/corpus/templates/design/actions/run-design-extension-action.ts +284 -0
  140. package/corpus/templates/design/actions/set-active-breakpoint.ts +39 -0
  141. package/corpus/templates/design/actions/view-screen.ts +75 -31
  142. package/corpus/templates/design/app/components/design/DesignCanvas.tsx +1738 -135
  143. package/corpus/templates/design/app/components/design/DesignEditorSkeleton.tsx +1 -1
  144. package/corpus/templates/design/app/components/design/DesignExtensionsPanel.tsx +632 -43
  145. package/corpus/templates/design/app/components/design/DrawOverlay.tsx +1 -1
  146. package/corpus/templates/design/app/components/design/EditPanel.tsx +1873 -132
  147. package/corpus/templates/design/app/components/design/LayersPanel.tsx +384 -219
  148. package/corpus/templates/design/app/components/design/LocalSourceEditBanner.tsx +157 -0
  149. package/corpus/templates/design/app/components/design/MotionDock.tsx +1062 -0
  150. package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +2103 -295
  151. package/corpus/templates/design/app/components/design/QuestionFlow.tsx +83 -206
  152. package/corpus/templates/design/app/components/design/ReviewPanel.tsx +759 -0
  153. package/corpus/templates/design/app/components/design/StatesPanel.tsx +579 -0
  154. package/corpus/templates/design/app/components/design/TokensPanel.tsx +573 -0
  155. package/corpus/templates/design/app/components/design/TweaksPanel.tsx +1 -1
  156. package/corpus/templates/design/app/components/design/canvas-primitive-style.ts +241 -0
  157. package/corpus/templates/design/app/components/design/index.ts +16 -1
  158. package/corpus/templates/design/app/components/design/inspector/AutoLayoutMatrix.tsx +238 -137
  159. package/corpus/templates/design/app/components/design/inspector/DesignColorPicker.tsx +188 -14
  160. package/corpus/templates/design/app/components/design/inspector/ExportSettingsPanel.tsx +24 -5
  161. package/corpus/templates/design/app/components/design/inspector/ImageFillControls.tsx +57 -1
  162. package/corpus/templates/design/app/components/design/inspector/InspectorAiActions.tsx +145 -0
  163. package/corpus/templates/design/app/components/design/inspector/SHADER_INTEGRATION.md +42 -12
  164. package/corpus/templates/design/app/components/design/inspector/ScrubInput.tsx +37 -12
  165. package/corpus/templates/design/app/components/design/inspector/index.ts +1 -0
  166. package/corpus/templates/design/app/components/design/inspector/scrub-input-utils.ts +12 -5
  167. package/corpus/templates/design/app/components/design/types.ts +9 -0
  168. package/corpus/templates/design/app/components/layout/Layout.tsx +23 -5
  169. package/corpus/templates/design/app/components/visual-editor/DrawOverlay.tsx +1 -1
  170. package/corpus/templates/design/app/global.css +77 -49
  171. package/corpus/templates/design/app/hooks/use-question-flow.ts +2 -2
  172. package/corpus/templates/design/app/hooks/useAgentEditRequest.ts +131 -0
  173. package/corpus/templates/design/app/hooks/useDesignHotkeys.ts +11 -2
  174. package/corpus/templates/design/app/i18n/zh-TW.ts +34 -0
  175. package/corpus/templates/design/app/i18n-data.ts +314 -3
  176. package/corpus/templates/design/app/pages/DesignEditor.tsx +4929 -892
  177. package/corpus/templates/design/app/root.tsx +1 -1
  178. package/corpus/templates/design/changelog/2026-06-29-added-a-review-panel-in-the-design-editor-s-inspector-with-a.md +6 -0
  179. package/corpus/templates/design/changelog/2026-06-29-containers-no-longer-block-selecting-nested-elements-and-nor.md +6 -0
  180. package/corpus/templates/design/changelog/2026-06-29-copying-and-pasting-layers-no-longer-shows-success-notificat.md +6 -0
  181. package/corpus/templates/design/changelog/2026-06-29-design-agents-now-generate-and-refine-variants-from-stronger.md +6 -0
  182. package/corpus/templates/design/changelog/2026-06-29-design-inspector-controls-now-match-figmas-softer-dark-chrome.md +6 -0
  183. package/corpus/templates/design/changelog/2026-06-29-design-questions-now-appear-as-a-cleaner-canvas-intake-with-.md +6 -0
  184. package/corpus/templates/design/changelog/2026-06-29-design-variant-directions-now-appear-as-board-screens-with-chat-buttons.md +5 -0
  185. package/corpus/templates/design/changelog/2026-06-29-device-presets-in-all-screens-view-resize-the-selected-previ.md +6 -0
  186. package/corpus/templates/design/changelog/2026-06-29-element-selection-no-longer-snaps-back-to-the-previous-layer.md +6 -0
  187. package/corpus/templates/design/changelog/2026-06-29-frame-resize-measurements-now-stay-beside-the-cursor-while-d.md +6 -0
  188. package/corpus/templates/design/changelog/2026-06-29-inspector-number-fields-have-cleaner-tooltips-and-draggable-.md +6 -0
  189. package/corpus/templates/design/changelog/2026-06-29-layer-and-canvas-drags-keep-the-layer-list-stable-while-chan.md +6 -0
  190. package/corpus/templates/design/changelog/2026-06-29-layer-locking-layer-nesting-generated-question-intake-and-im.md +6 -0
  191. package/corpus/templates/design/changelog/2026-06-29-layer-moves-can-be-undone-and-redone-without-flashing-the-ca.md +6 -0
  192. package/corpus/templates/design/changelog/2026-06-29-layer-names-in-the-sidebar-can-scroll-horizontally-instead-o.md +6 -0
  193. package/corpus/templates/design/changelog/2026-06-29-layer-nesting-in-the-sidebar-now-uses-tighter-spacing-so-nam.md +6 -0
  194. package/corpus/templates/design/changelog/2026-06-29-layers-no-longer-repeat-document-wrapper-rows-when-a-screen-.md +6 -0
  195. package/corpus/templates/design/changelog/2026-06-29-overview-previews-now-keep-element-hover-and-selection-tied-.md +6 -0
  196. package/corpus/templates/design/changelog/2026-06-29-pressing-escape-now-cancels-a-stuck-screen-drag-in-the-overv.md +6 -0
  197. package/corpus/templates/design/changelog/2026-06-29-screen-overview-is-easier-to-find-and-named-screens-open-dir.md +6 -0
  198. package/corpus/templates/design/changelog/2026-06-29-screen-overview-only-highlights-screens-when-the-frame-or-ti.md +6 -0
  199. package/corpus/templates/design/changelog/2026-06-29-screen-overview-previews-now-resize-to-match-the-selected-de.md +6 -0
  200. package/corpus/templates/design/changelog/2026-06-29-screen-overview-selection-now-uses-a-pointer-cursor-instead-.md +6 -0
  201. package/corpus/templates/design/changelog/2026-06-29-screen-overview-selection-outlines-now-stay-locked-to-the-se.md +6 -0
  202. package/corpus/templates/design/changelog/2026-06-29-screen-overview-zoom-now-reports-real-screen-scale-separatel.md +6 -0
  203. package/corpus/templates/design/changelog/2026-06-29-screen-overview-zooming-feels-smoother-and-selection-outline.md +6 -0
  204. package/corpus/templates/design/changelog/2026-06-29-screen-overview-zooming-now-stays-on-the-overview-canvas-ins.md +6 -0
  205. package/corpus/templates/design/changelog/2026-06-29-screen-previews-use-a-single-blue-hover-border-in-all-screen.md +6 -0
  206. package/corpus/templates/design/changelog/2026-06-29-selected-containers-show-draggable-padding-and-gap-guides-on.md +6 -0
  207. package/corpus/templates/design/changelog/2026-06-29-selecting-a-nested-layer-from-all-screens-now-keeps-you-in-a.md +6 -0
  208. package/corpus/templates/design/changelog/2026-06-29-share-now-groups-link-sharing-exports-and-agent-handoff.md +6 -0
  209. package/corpus/templates/design/changelog/2026-06-29-the-design-editor-adds-a-studio-layer-with-tokens-respon.md +6 -0
  210. package/corpus/templates/design/changelog/2026-06-29-the-design-editor-loading-skeleton-now-uses-a-softer-charcoa.md +6 -0
  211. package/corpus/templates/design/changelog/2026-06-29-the-device-preview-menu-now-sits-next-to-the-preview-button-.md +6 -0
  212. package/corpus/templates/design/changelog/2026-06-29-the-inspector-stays-read-only-while-an-empty-design-is-still.md +6 -0
  213. package/corpus/templates/design/changelog/2026-06-29-the-missing-design-view-now-matches-the-rest-of-the-editor-c.md +6 -0
  214. package/corpus/templates/design/changelog/2026-06-29-the-pen-tool-icon-and-tool-option-menus-better-match-the-edi.md +6 -0
  215. package/corpus/templates/design/changelog/2026-06-29-typography-controls-now-keep-the-font-name-visible-and-move-.md +6 -0
  216. package/corpus/templates/design/changelog/2026-06-30-accessibility-findings-now-offer-a-one-click-fix.md +6 -0
  217. package/corpus/templates/design/changelog/2026-06-30-component-instances-now-have-editable-props-in-the-inspe.md +6 -0
  218. package/corpus/templates/design/changelog/2026-06-30-inspect-code-now-shows-the-elements-opening-tag-at-a-gla.md +6 -0
  219. package/corpus/templates/design/changelog/2026-06-30-shader-fill-presets-can-now-be-applied-to-an-element.md +6 -0
  220. package/corpus/templates/design/changelog/2026-06-30-the-motion-timeline-can-now-add-a-track-to-any-element-a.md +6 -0
  221. package/corpus/templates/design/changelog/2026-06-30-visual-editor-selection-layer-paint-and-drawing-controls-are-more-reliable.md +6 -0
  222. package/corpus/templates/design/e2e/README.md +3 -3
  223. package/corpus/templates/design/e2e/global-setup.ts +11 -22
  224. package/corpus/templates/design/e2e/helpers.ts +128 -11
  225. package/corpus/templates/design/playwright.config.ts +9 -3
  226. package/corpus/templates/design/server/db/schema.ts +123 -0
  227. package/corpus/templates/design/server/lib/coding-handoff.ts +126 -2
  228. package/corpus/templates/design/server/plugins/core-routes.ts +1 -2
  229. package/corpus/templates/design/server/plugins/db.ts +90 -0
  230. package/corpus/templates/design/server/routes/api/design-handoff/[id].zip.get.ts +86 -0
  231. package/corpus/templates/design/shared/builder-app.ts +297 -0
  232. package/corpus/templates/design/shared/capability-resolver.ts +123 -0
  233. package/corpus/templates/design/shared/capture-sanitize.ts +70 -0
  234. package/corpus/templates/design/shared/code-layer.ts +1141 -93
  235. package/corpus/templates/design/shared/component-model.ts +239 -0
  236. package/corpus/templates/design/shared/design-review.ts +275 -0
  237. package/corpus/templates/design/shared/design-source-capabilities.ts +286 -0
  238. package/corpus/templates/design/shared/design-state.ts +112 -0
  239. package/corpus/templates/design/shared/design-surface-index.ts +258 -0
  240. package/corpus/templates/design/shared/generation-session.ts +41 -0
  241. package/corpus/templates/design/shared/motion-compiler.ts +278 -0
  242. package/corpus/templates/design/shared/motion-timeline.ts +193 -0
  243. package/corpus/templates/design/shared/responsive-classes.ts +452 -0
  244. package/corpus/templates/design/shared/shader-fill.ts +323 -0
  245. package/corpus/templates/design/shared/source-mode.ts +245 -0
  246. package/corpus/templates/dispatch/app/global.css +79 -35
  247. package/corpus/templates/dispatch/app/routes/integrations.tsx +8 -7
  248. package/corpus/templates/dispatch/changelog/2026-06-29-integration-layouts-adapt-when-the-agent-sidebar-is-open.md +6 -0
  249. package/corpus/templates/forms/app/components/layout/Layout.tsx +6 -2
  250. package/corpus/templates/forms/app/global.css +64 -35
  251. package/corpus/templates/forms/app/pages/FormsListPage.tsx +2 -2
  252. package/corpus/templates/forms/app/pages/ResponseInsightsPage.tsx +3 -3
  253. package/corpus/templates/forms/changelog/2026-06-29-form-list-and-insight-layouts-adapt-when-the-agent-sidebar.md +6 -0
  254. package/corpus/templates/macros/app/components/layout/AppLayout.tsx +3 -1
  255. package/corpus/templates/macros/app/global.css +25 -9
  256. package/corpus/templates/macros/changelog/2026-06-29-macro-layouts-adapt-when-the-agent-sidebar-is-open.md +6 -0
  257. package/corpus/templates/mail/app/components/layout/AppLayout.tsx +6 -2
  258. package/corpus/templates/mail/app/global.css +42 -36
  259. package/corpus/templates/mail/app/pages/InboxPage.tsx +1 -1
  260. package/corpus/templates/mail/changelog/2026-06-29-the-contact-panel-now-adapts-to-the-available-mail-pane-width.md +6 -0
  261. package/corpus/templates/plan/app/components/layout/Layout.tsx +3 -1
  262. package/corpus/templates/plan/app/components/plan/CanvasArea.tsx +6 -2
  263. package/corpus/templates/plan/app/components/plan/DocumentArea.tsx +6 -7
  264. package/corpus/templates/plan/app/global.css +74 -42
  265. package/corpus/templates/plan/changelog/2026-06-29-plan-canvases-open-without-an-initial-pan-and-zoom-flicker.md +6 -0
  266. package/corpus/templates/plan/changelog/2026-06-29-plan-document-blocks-adapt-to-the-available-document-width.md +6 -0
  267. package/corpus/templates/plan/changelog/2026-06-29-plan-titles-and-summaries-can-be-edited-inline-without-focus.md +6 -0
  268. package/corpus/templates/slides/app/components/layout/Layout.tsx +3 -1
  269. package/corpus/templates/slides/app/global.css +49 -33
  270. package/corpus/templates/slides/changelog/2026-06-29-slide-layouts-adapt-when-the-agent-sidebar-is-open.md +6 -0
  271. package/corpus/templates/videos/app/components/layout/Layout.tsx +3 -1
  272. package/corpus/templates/videos/app/global.css +35 -35
  273. package/corpus/templates/videos/changelog/2026-06-29-video-layouts-adapt-when-the-agent-sidebar-is-open.md +6 -0
  274. package/dist/cli/design-connect.d.ts.map +1 -1
  275. package/dist/cli/design-connect.js +28 -2
  276. package/dist/cli/design-connect.js.map +1 -1
  277. package/dist/cli/mcp.d.ts.map +1 -1
  278. package/dist/cli/mcp.js +10 -0
  279. package/dist/cli/mcp.js.map +1 -1
  280. package/dist/cli/skills.d.ts.map +1 -1
  281. package/dist/cli/skills.js +95 -33
  282. package/dist/cli/skills.js.map +1 -1
  283. package/dist/client/error-format.d.ts.map +1 -1
  284. package/dist/client/error-format.js +17 -0
  285. package/dist/client/error-format.js.map +1 -1
  286. package/dist/client/extensions/ExtensionViewer.d.ts.map +1 -1
  287. package/dist/client/extensions/ExtensionViewer.js +3 -4
  288. package/dist/client/extensions/ExtensionViewer.js.map +1 -1
  289. package/dist/client/guided-questions.d.ts +4 -0
  290. package/dist/client/guided-questions.d.ts.map +1 -1
  291. package/dist/client/guided-questions.js +16 -7
  292. package/dist/client/guided-questions.js.map +1 -1
  293. package/dist/client/onboarding/OnboardingPanel.js +26 -1
  294. package/dist/client/onboarding/OnboardingPanel.js.map +1 -1
  295. package/dist/client/resources/BuiltinCapabilityDetail.d.ts.map +1 -1
  296. package/dist/client/resources/BuiltinCapabilityDetail.js +1 -1
  297. package/dist/client/resources/BuiltinCapabilityDetail.js.map +1 -1
  298. package/dist/client/resources/use-builtin-capabilities.d.ts +1 -1
  299. package/dist/client/resources/use-builtin-capabilities.d.ts.map +1 -1
  300. package/dist/client/resources/use-builtin-capabilities.js +2 -1
  301. package/dist/client/resources/use-builtin-capabilities.js.map +1 -1
  302. package/dist/client/session-replay.d.ts.map +1 -1
  303. package/dist/client/session-replay.js +31 -0
  304. package/dist/client/session-replay.js.map +1 -1
  305. package/dist/client/sharing/ShareButton.d.ts +14 -0
  306. package/dist/client/sharing/ShareButton.d.ts.map +1 -1
  307. package/dist/client/sharing/ShareButton.js +36 -7
  308. package/dist/client/sharing/ShareButton.js.map +1 -1
  309. package/dist/coding-tools/index.js +1 -1
  310. package/dist/coding-tools/index.js.map +1 -1
  311. package/dist/mcp/index.d.ts +2 -0
  312. package/dist/mcp/index.d.ts.map +1 -1
  313. package/dist/mcp/index.js +1 -0
  314. package/dist/mcp/index.js.map +1 -1
  315. package/dist/mcp/screen-memory-stdio.d.ts +6 -0
  316. package/dist/mcp/screen-memory-stdio.d.ts.map +1 -0
  317. package/dist/mcp/screen-memory-stdio.js +213 -0
  318. package/dist/mcp/screen-memory-stdio.js.map +1 -0
  319. package/dist/mcp-client/builtin-capabilities.d.ts +1 -1
  320. package/dist/mcp-client/builtin-capabilities.d.ts.map +1 -1
  321. package/dist/mcp-client/builtin-capabilities.js +10 -0
  322. package/dist/mcp-client/builtin-capabilities.js.map +1 -1
  323. package/dist/mcp-client/index.d.ts +1 -0
  324. package/dist/mcp-client/index.d.ts.map +1 -1
  325. package/dist/mcp-client/index.js +1 -0
  326. package/dist/mcp-client/index.js.map +1 -1
  327. package/dist/mcp-client/screen-memory-local.d.ts +61 -0
  328. package/dist/mcp-client/screen-memory-local.d.ts.map +1 -0
  329. package/dist/mcp-client/screen-memory-local.js +336 -0
  330. package/dist/mcp-client/screen-memory-local.js.map +1 -0
  331. package/dist/observability/routes.d.ts +3 -3
  332. package/dist/onboarding/types.d.ts +7 -0
  333. package/dist/onboarding/types.d.ts.map +1 -1
  334. package/dist/onboarding/types.js.map +1 -1
  335. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  336. package/dist/server/agent-chat-plugin.js +26 -0
  337. package/dist/server/agent-chat-plugin.js.map +1 -1
  338. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  339. package/dist/server/agents-bundle.d.ts.map +1 -1
  340. package/dist/server/agents-bundle.js +22 -7
  341. package/dist/server/agents-bundle.js.map +1 -1
  342. package/dist/styles/agent-native.css +5 -0
  343. package/dist/templates/default/app/global.css +35 -35
  344. package/docs/content/locales/ar-SA/template-design.mdx +6 -0
  345. package/docs/content/locales/de-DE/template-design.mdx +8 -0
  346. package/docs/content/locales/es-ES/template-design.mdx +10 -2
  347. package/docs/content/locales/fr-FR/template-design.mdx +10 -2
  348. package/docs/content/locales/hi-IN/template-design.mdx +7 -0
  349. package/docs/content/locales/ja-JP/template-design.mdx +7 -0
  350. package/docs/content/locales/ko-KR/template-design.mdx +7 -0
  351. package/docs/content/locales/pt-BR/template-design.mdx +9 -2
  352. package/docs/content/locales/zh-CN/template-design.mdx +6 -0
  353. package/docs/content/locales/zh-TW/template-design.mdx +6 -0
  354. package/docs/content/template-design.mdx +9 -2
  355. package/package.json +1 -1
  356. package/src/templates/default/app/global.css +35 -35
  357. package/corpus/templates/design/app/components/design/VariantGrid.tsx +0 -189
  358. package/corpus/templates/design/app/components/design/VariantHandoffCard.tsx +0 -115
  359. package/corpus/templates/design/app/hooks/use-variant-flow.ts +0 -342
package/corpus/README.md CHANGED
@@ -27,5 +27,5 @@ rg -n "defineAction|useActionQuery" node_modules/@agent-native/core/corpus
27
27
 
28
28
  ## Generated Counts
29
29
 
30
- - core files: 2041
31
- - template files: 4598
30
+ - core files: 2043
31
+ - template files: 4719
@@ -1,5 +1,24 @@
1
1
  # @agent-native/core
2
2
 
3
+ ## 0.80.10
4
+
5
+ ### Patch Changes
6
+
7
+ - d26a679: Design connect: document the per-element provenance contract (`data-source-file` / `data-source-line` / `data-source-column` / `data-component-name`, plus `data-loc` shorthand) used to map a selected element back to its source location, and surface it in `design connect --help`. The `resolveNodeToFile` bridge capability now carries a reason string describing this contract.
8
+ - d26a679: Harden the app-backed skill installer for visual-plan feedback: built-in skill folders now stage writes before replacing existing installs, include first-time install command metadata, and make `skills update` point first-time users to `skills add` for setup and MCP registration.
9
+
10
+ ## 0.80.9
11
+
12
+ ### Patch Changes
13
+
14
+ - 82c138c: Expose app main surfaces as named CSS query containers so templates can reflow against the available app pane instead of the viewport.
15
+ - 82c138c: ShareButton can render optional custom tabs beside the default share-link panel.
16
+ - 82c138c: Improve the exported Design skills with a clearer generation quality bar, updated variant-screen flow guidance, and more grounded visual-edit review instructions.
17
+ - 82c138c: Remove the extension viewer notification bell and place the vertical more menu before Share.
18
+ - 82c138c: Allow guided question options to submit immediately when selected, with optional per-question submit and skip message copy.
19
+ - 82c138c: Add a local Clips Screen Memory MCP stdio server for querying recent on-device screen context.
20
+ - 82c138c: Avoid CORS preflights for cross-origin session replay uploads so hosted apps can send recordings to the first-party analytics collector.
21
+
3
22
  ## 0.80.8
4
23
 
5
24
  ### Patch Changes
@@ -374,6 +374,12 @@ npx @agent-native/core@latest skills add visual-edit
374
374
  المرقمة مثل `localhost:1234/onboarding/1` و`/onboarding/2` و`/onboarding/3`
375
375
  كشاشات منفصلة ومرتبة في وضع النظرة العامة.
376
376
 
377
+ يمكن تحميل مسار الإدخال `/visual-edit` قبل تسجيل دخول المشاهد، كما يمكن لروابط
378
+ `/design/:id` العامة عرض تصاميم عامة للقراءة فقط بدون جلسة. ما يزال حفظ تخطيط
379
+ الشاشة أو إنشاء شاشات جديدة أو المشاركة ينشئ بيانات Design مرتبطة بحساب: يُرسَل
380
+ المستخدمون غير المسجلين إلى `/_agent-native/sign-in?return=...`، ثم يحفظ Design
381
+ المشروع أو ينسخه إلى ذلك الحساب قبل فتح مربع حوار المشاركة.
382
+
377
383
  لأسماء طبقات مستقرة، أضف `data-agent-native-layer-name` إلى العناصر المهمة.
378
384
  يستخدمه Design قبل البدائل الدلالية/النصية، ويمكنه حفظ إعادة تسمية الطبقات عبر
379
385
  تحرير هذا السمة. يدعم HTML المضمن تحرير طبقات الكود محليًا للنصوص والأصناف
@@ -376,6 +376,14 @@ zu platzieren. Nummerierte Flows wie `localhost:1234/onboarding/1`,
376
376
  `/onboarding/2` und `/onboarding/3` bleiben als getrennte, geordnete Screens im
377
377
  Overview-Modus erhalten.
378
378
 
379
+ Die Einstiegsroute `/visual-edit` kann laden, bevor der Betrachter angemeldet
380
+ ist, und öffentliche `/design/:id`-Links können öffentliche Designs ohne Sitzung
381
+ schreibgeschützt rendern. Das Speichern des Screen-Layouts, Generieren neuer
382
+ Screens oder Teilen erstellt weiterhin accountgebundene Design-Daten:
383
+ abgemeldete Benutzer gehen durch `/_agent-native/sign-in?return=...`;
384
+ anschließend speichert oder kopiert Design das Projekt in dieses Konto, bevor
385
+ der Teilen-Dialog geöffnet wird.
386
+
379
387
  Für stabile Ebenennamen fügen Sie wichtigen Elementen
380
388
  `data-agent-native-layer-name` hinzu. Design verwendet dies vor
381
389
  semantischen/textbasierten Fallbacks und kann Umbenennungen durch Bearbeiten
@@ -340,11 +340,11 @@ Cada operación invocable por el agente es un archivo TypeScript en `templates/d
340
340
  - **Sistemas de diseño**: `create-design-system`, `update-design-system`, `get-design-system`, `list-design-systems`, `delete-design-system`, `set-default-design-system` y `analyze-brand-assets` para recopilar datos de marca antes del análisis.
341
341
  - **Importar** — `index-design-system-with-builder` for Builder-backed code/GitHub/Figma file design-system indexing, plus `import-from-url`, `import-document` (DOCX/PPTX/PDF/XLSX), and `import-design-project` for other sources.
342
342
  - **Exportación y transferencia**: `export-html`, `export-pdf`, `export-svg`, `export-zip` y `export-coding-handoff` para convertir un diseño en una transferencia de herramienta de codificación.
343
- - **Contexto y navegación**: `view-screen` (diseño actual, archivo abierto, vista, pregunta pendiente o cuadrícula de variantes), `get-design-snapshot` (estado actual desde el cual un agente externo puede continuar) y `navigate`.
343
+ - **Contexto y navegación**: `view-screen` (diseño actual, archivo abierto, vista, pregunta pendiente o elección de variante), `get-design-snapshot` (estado actual desde el cual un agente externo puede continuar) y `navigate`.
344
344
 
345
345
  ### Trabajar con el agente
346
346
 
347
- El agente siempre sabe lo que tienes abierto. `view-screen` devuelve el diseño actual, el archivo abierto, la vista activa y cualquier pregunta pendiente o cuadrícula variante y los inyecta en cada mensaje, por lo que puede decir "hacer esto más denso" o "exportar esta variante" sin nombrar el diseño.
347
+ El agente siempre sabe lo que tienes abierto. `view-screen` devuelve el diseño actual, el archivo abierto, la vista activa y cualquier pregunta pendiente o elección de variante y los inyecta en cada mensaje, por lo que puede decir "hacer esto más denso" o "exportar esta variante" sin nombrar el diseño.
348
348
 
349
349
  Debido a que un diseño son solo archivos HTML/JSX independientes, el agente edita la misma fuente que representa el iframe y de donde proviene cada exportación; no hay un formato de "maqueta de IA" independiente para traducir. Un sistema de diseño vinculado proporciona tokens y `custom_instructions` el agente honra en cada paso de generación. Seleccione texto o una región en la vista previa y presione Cmd+I para enfocar al agente exactamente en esa parte.
350
350
 
@@ -375,6 +375,14 @@ por URL. Los flujos numerados como `localhost:1234/onboarding/1`,
375
375
  `/onboarding/2` y `/onboarding/3` se mantienen como pantallas separadas y
376
376
  ordenadas en modo de vista general.
377
377
 
378
+ La ruta de entrada `/visual-edit` puede cargar antes de que el visitante inicie
379
+ sesión, y los enlaces públicos `/design/:id` pueden renderizar diseños públicos
380
+ de solo lectura sin sesión. Persistir el diseño de pantallas, generar pantallas
381
+ nuevas o compartir sigue creando datos de Design vinculados a una cuenta: los
382
+ usuarios sin sesión pasan por `/_agent-native/sign-in?return=...`; después,
383
+ Design guarda o copia el proyecto en esa cuenta antes de abrir el diálogo de
384
+ compartir.
385
+
378
386
  Para nombres de capa estables, agrega `data-agent-native-layer-name` a los
379
387
  elementos importantes. Design lo usa antes de los respaldos semánticos/de texto
380
388
  y puede persistir cambios de nombre editando ese atributo. HTML inline admite
@@ -340,11 +340,11 @@ Chaque opération appelable par un agent est un fichier TypeScript dans `templat
340
340
  - **Systèmes de conception** : `create-design-system`, `update-design-system`, `get-design-system`, `list-design-systems`, `delete-design-system`, `set-default-design-system` et `analyze-brand-assets` pour collecter des données de marque avant l'analyse.
341
341
  - **Importer** — `index-design-system-with-builder` for Builder-backed code/GitHub/Figma file design-system indexing, plus `import-from-url`, `import-document` (DOCX/PPTX/PDF/XLSX), and `import-design-project` for other sources.
342
342
  - **Exportation et transfert** : `export-html`, `export-pdf`, `export-svg`, `export-zip` et `export-coding-handoff` pour transformer une conception en transfert d'outil de codage.
343
- - **Contexte et navigation** – `view-screen` (conception actuelle, fichier ouvert, vue, question en attente ou grille de variantes), `get-design-snapshot` (état actuel à partir duquel un agent externe peut continuer) et `navigate`.
343
+ - **Contexte et navigation** – `view-screen` (conception actuelle, fichier ouvert, vue, question en attente ou choix de variante), `get-design-snapshot` (état actuel à partir duquel un agent externe peut continuer) et `navigate`.
344
344
 
345
345
  ### Travailler avec l'agent
346
346
 
347
- L'agent sait toujours ce que vous avez ouvert. La conception actuelle, le fichier ouvert, la vue active et toute question en attente ou grille de variantes sont renvoyés par `view-screen` et injectés dans chaque message, vous pouvez donc dire « rendre cela plus dense » ou « exporter cette variante » sans nommer la conception.
347
+ L'agent sait toujours ce que vous avez ouvert. La conception actuelle, le fichier ouvert, la vue active et toute question en attente ou choix de variante sont renvoyés par `view-screen` et injectés dans chaque message, vous pouvez donc dire « rendre cela plus dense » ou « exporter cette variante » sans nommer la conception.
348
348
 
349
349
  Étant donné qu'une conception n'est constituée que de fichiers HTML/JSX autonomes, l'agent édite la même source que celle du rendu iframe et celle d'où provient chaque exportation : il n'existe pas de format de « maquette IA » distinct à traduire. Un système de conception lié fournit des jetons et `custom_instructions` que l'agent honore à chaque passage de génération. Sélectionnez du texte ou une région dans l'aperçu et appuyez sur Cmd+I pour concentrer l'agent exactement sur cette partie.
350
350
 
@@ -375,6 +375,14 @@ URL. Les flows numérotés comme `localhost:1234/onboarding/1`,
375
375
  `/onboarding/2` et `/onboarding/3` restent des écrans séparés et ordonnés en
376
376
  mode overview.
377
377
 
378
+ La route d'entrée `/visual-edit` peut se charger avant la connexion du visiteur,
379
+ et les liens publics `/design/:id` peuvent afficher des designs publics en
380
+ lecture seule sans session. Persister la disposition des écrans, générer de
381
+ nouveaux écrans ou partager crée toujours des données Design liées à un compte :
382
+ les utilisateurs non connectés passent par `/_agent-native/sign-in?return=...`,
383
+ puis Design enregistre ou copie le projet dans ce compte avant d'ouvrir la
384
+ boîte de dialogue de partage.
385
+
378
386
  Pour des noms de couche stables, ajoutez `data-agent-native-layer-name` aux
379
387
  éléments importants. Design l'utilise avant les replis sémantiques/textuels et
380
388
  peut persister les renommages en modifiant cet attribut. Le HTML inline prend en
@@ -374,6 +374,13 @@ place करता है। `localhost:1234/onboarding/1`, `/onboarding/2`, औ
374
374
  `/onboarding/3` जैसे numbered flows overview mode में separate ordered screens
375
375
  रहते हैं।
376
376
 
377
+ `/visual-edit` entry route viewer के sign in करने से पहले load हो सकता है, और
378
+ public `/design/:id` links बिना session के read-only public designs render कर
379
+ सकते हैं। Screen layout persist करना, नए screens generate करना, या sharing अभी
380
+ भी account-backed Design data बनाता है: signed-out users
381
+ `/_agent-native/sign-in?return=...` से गुजरते हैं, फिर Design share dialog खोलने
382
+ से पहले project को उस account में save या copy करता है।
383
+
377
384
  Stable layer names के लिए meaningful elements पर
378
385
  `data-agent-native-layer-name` जोड़ें। Design semantic/text fallbacks से पहले
379
386
  इसे उपयोग करता है और इसी attribute को edit करके layer renames persist कर सकता
@@ -376,6 +376,13 @@ npx @agent-native/core@latest skills add visual-edit
376
376
  のような番号付きフローは、overview mode で個別の順序付き画面として保持
377
377
  されます。
378
378
 
379
+ `/visual-edit` の入口ルートは閲覧者がサインインする前でも読み込めます。
380
+ 公開 `/design/:id` リンクも、セッションなしで読み取り専用の公開 Design を
381
+ 表示できます。画面レイアウトの保存、新しい画面の生成、共有は引き続きア
382
+ カウントに紐づく Design データを作成します。サインアウト中のユーザーは
383
+ `/_agent-native/sign-in?return=...` を経由し、その後 Design が共有ダイアロ
384
+ グを開く前にプロジェクトをそのアカウントへ保存またはコピーします。
385
+
379
386
  安定したレイヤー名には、意味のある要素に
380
387
  `data-agent-native-layer-name` を追加します。Design はセマンティック/テ
381
388
  キストのフォールバックより先にこれを使い、この属性を編集してレイヤー名
@@ -373,6 +373,13 @@ npx @agent-native/core@latest skills add visual-edit
373
373
  `localhost:1234/onboarding/1`, `/onboarding/2`, `/onboarding/3` 같은 번호가
374
374
  붙은 흐름은 overview mode에서 분리된 순서 있는 화면으로 유지됩니다.
375
375
 
376
+ `/visual-edit` 진입 route는 보는 사람이 sign in하기 전에도 load될 수 있고,
377
+ public `/design/:id` 링크는 session 없이 read-only public design을 render할 수
378
+ 있습니다. Screen layout을 persist하거나 새 screen을 generate하거나 share하는
379
+ 일은 여전히 account-backed Design data를 만듭니다. signed-out 사용자는
380
+ `/_agent-native/sign-in?return=...`를 거친 뒤, Design이 share dialog를 열기
381
+ 전에 project를 해당 account에 save하거나 copy합니다.
382
+
376
383
  안정적인 layer name을 위해 의미 있는 요소에 `data-agent-native-layer-name`을
377
384
  추가하세요. Design은 semantic/text fallback보다 이것을 먼저 사용하며, 해당
378
385
  attribute를 편집해 layer rename을 persist할 수 있습니다. Inline HTML은 text,
@@ -340,11 +340,11 @@ Cada operação que pode ser chamada pelo agente é um arquivo TypeScript em `te
340
340
  - **Sistemas de design** — `create-design-system`, `update-design-system`, `get-design-system`, `list-design-systems`, `delete-design-system`, `set-default-design-system` e `analyze-brand-assets` para coletar dados da marca antes da análise.
341
341
  - **Importar** — `index-design-system-with-builder` for Builder-backed code/GitHub/Figma file design-system indexing, plus `import-from-url`, `import-document` (DOCX/PPTX/PDF/XLSX), and `import-design-project` for other sources.
342
342
  - **Exportação e transferência** — `export-html`, `export-pdf`, `export-svg`, `export-zip` e `export-coding-handoff` para transformar um design em uma transferência de ferramenta de codificação.
343
- - **Contexto e navegação** — `view-screen` (design atual, arquivo aberto, visualização, pergunta pendente ou grade de variantes), `get-design-snapshot` (estado atual para um agente externo continuar) e `navigate`.
343
+ - **Contexto e navegação** — `view-screen` (design atual, arquivo aberto, visualização, pergunta pendente ou escolha de variante), `get-design-snapshot` (estado atual para um agente externo continuar) e `navigate`.
344
344
 
345
345
  ### Trabalhando com o agente
346
346
 
347
- O agente sempre sabe o que você tem em aberto. O design atual, o arquivo aberto, a visualização ativa e qualquer questão pendente ou grade de variantes são retornados por `view-screen` e injetados em cada mensagem, para que você possa dizer "tornar isso mais denso" ou "exportar esta variante" sem nomear o design.
347
+ O agente sempre sabe o que você tem em aberto. O design atual, o arquivo aberto, a visualização ativa e qualquer questão pendente ou escolha de variante são retornados por `view-screen` e injetados em cada mensagem, para que você possa dizer "tornar isso mais denso" ou "exportar esta variante" sem nomear o design.
348
348
 
349
349
  Como um design consiste apenas em arquivos HTML/JSX independentes, o agente edita a mesma fonte que o iframe renderiza e de onde vem cada exportação — não há um formato de "maquete de IA" separado para traduzir. Um sistema de design vinculado fornece tokens e `custom_instructions` que o agente homenageia em cada passagem de geração. Selecione o texto ou uma região na visualização e pressione Cmd+I para focar o agente exatamente nessa parte.
350
350
 
@@ -374,6 +374,13 @@ para posicionar cada path ou URL solicitado como sua própria tela iframe basead
374
374
  em URL. Fluxos numerados como `localhost:1234/onboarding/1`, `/onboarding/2` e
375
375
  `/onboarding/3` permanecem como telas separadas e ordenadas no modo overview.
376
376
 
377
+ A rota de entrada `/visual-edit` pode carregar antes de o visitante entrar, e
378
+ links públicos `/design/:id` podem renderizar designs públicos somente leitura
379
+ sem sessão. Persistir o layout das telas, gerar novas telas ou compartilhar
380
+ ainda cria dados do Design vinculados a uma conta: usuários desconectados passam
381
+ por `/_agent-native/sign-in?return=...`; depois, o Design salva ou copia o
382
+ projeto para essa conta antes de abrir o diálogo de compartilhamento.
383
+
377
384
  Para nomes de camada estáveis, adicione `data-agent-native-layer-name` a
378
385
  elementos importantes. O Design usa isso antes de fallbacks semânticos/de texto
379
386
  e pode persistir renomeações editando esse atributo. HTML inline aceita edições
@@ -370,6 +370,12 @@ npx @agent-native/core@latest skills add visual-edit
370
370
  `localhost:1234/onboarding/1`、`/onboarding/2`、`/onboarding/3` 这样的编号流程
371
371
  会在 overview 模式中保持为分开的有序屏幕。
372
372
 
373
+ `/visual-edit` 入口路由可以在查看者登录前加载,公开的 `/design/:id` 链接也
374
+ 可以在没有会话时以只读方式渲染公开 design。持久保存屏幕布局、生成新屏幕或
375
+ 共享仍会创建账号绑定的 Design 数据:未登录用户会经过
376
+ `/_agent-native/sign-in?return=...`,然后 Design 会在打开共享对话框前,把项
377
+ 目保存或复制到该账号。
378
+
373
379
  为了获得稳定的图层名称,请在有意义的元素上添加
374
380
  `data-agent-native-layer-name`。Design 会优先使用它,然后才使用语义/文本回
375
381
  退,并且可以通过编辑该属性来持久保存图层重命名。Inline HTML 支持本地代
@@ -371,6 +371,12 @@ npx @agent-native/core@latest skills add visual-edit
371
371
  `localhost:1234/onboarding/1`、`/onboarding/2`、`/onboarding/3` 這樣的編號流程
372
372
  會在 overview 模式中保持為分開的有序畫面。
373
373
 
374
+ `/visual-edit` 入口路由可以在檢視者登入前載入,公開的 `/design/:id` 連結也
375
+ 可以在沒有 session 時以唯讀方式渲染公開 design。持久保存畫面版面、產生新畫
376
+ 面或分享仍會建立帳號綁定的 Design 資料:未登入使用者會經過
377
+ `/_agent-native/sign-in?return=...`,然後 Design 會在開啟分享對話框前,把專
378
+ 案保存或複製到該帳號。
379
+
374
380
  若要取得穩定的圖層名稱,請在有意義的元素上加入
375
381
  `data-agent-native-layer-name`。Design 會優先使用它,然後才使用語意/文字
376
382
  後備,並且可以透過編輯該屬性來持久保存圖層重新命名。Inline HTML 支援本
@@ -340,11 +340,11 @@ Every agent-callable operation is a TypeScript file in `templates/design/actions
340
340
  - **Design systems** — `create-design-system`, `update-design-system`, `get-design-system`, `list-design-systems`, `delete-design-system`, `set-default-design-system`, and `analyze-brand-assets` for gathering brand data ahead of analysis.
341
341
  - **Import** — `index-design-system-with-builder` for Builder-backed code/GitHub/Figma file design-system indexing, plus `import-from-url`, `import-document` (DOCX/PPTX/PDF/XLSX), and `import-design-project` for other sources.
342
342
  - **Export & handoff** — `export-html`, `export-pdf`, `export-svg`, `export-zip`, and `export-coding-handoff` to turn a design into a coding-tool handoff.
343
- - **Context & navigation** — `view-screen` (current design, open file, view, pending question or variant grid), `get-design-snapshot` (current state for an external agent to continue from), and `navigate`.
343
+ - **Context & navigation** — `view-screen` (current design, open file, view, pending question or variant choice), `get-design-snapshot` (current state for an external agent to continue from), and `navigate`.
344
344
 
345
345
  ### Working with the agent
346
346
 
347
- The agent always knows what you have open. The current design, the open file, the active view, and any pending question or variant grid are returned by `view-screen` and injected into every message, so you can say "make this denser" or "export this variant" without naming the design.
347
+ The agent always knows what you have open. The current design, the open file, the active view, and any pending question or variant choice are returned by `view-screen` and injected into every message, so you can say "make this denser" or "export this variant" without naming the design.
348
348
 
349
349
  Because a design is just standalone HTML/JSX files, the agent edits the same source the iframe renders and every export comes from — there is no separate "AI mockup" format to translate. A linked design system supplies tokens and `custom_instructions` the agent honors on every generation pass. Select text or a region in the preview and hit Cmd+I to focus the agent on exactly that part.
350
350
 
@@ -374,6 +374,13 @@ place each requested path or URL as its own URL-backed iframe screen. Numbered
374
374
  flows such as `localhost:1234/onboarding/1`, `/onboarding/2`, and
375
375
  `/onboarding/3` stay as separate ordered screens in overview mode.
376
376
 
377
+ The `/visual-edit` entry route can load before the viewer signs in, and public
378
+ `/design/:id` links can render read-only public designs without a session.
379
+ Persisting the screen layout, generating new screens, or sharing still creates
380
+ account-backed Design data: signed-out users go through
381
+ `/_agent-native/sign-in?return=...`, then Design saves or copies the project
382
+ into that account before opening the share dialog.
383
+
377
384
  For stable layer names, add `data-agent-native-layer-name` to meaningful
378
385
  elements. Design uses it before semantic/text fallbacks and can persist layer
379
386
  renames by editing that attribute. Inline HTML supports local code-layer edits
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-native/core",
3
- "version": "0.80.8",
3
+ "version": "0.80.10",
4
4
  "description": "Framework for agent-native application development — where AI agents and UI share SQL state, actions, and context",
5
5
  "homepage": "https://github.com/BuilderIO/agent-native#readme",
6
6
  "bugs": {
@@ -367,7 +367,14 @@ export async function prepareDesignConnectManifest(
367
367
  reason:
368
368
  operation === "writeFile"
369
369
  ? "The bridge advertises the contract before enabling local file writes."
370
- : undefined,
370
+ : operation === "resolveNodeToFile"
371
+ ? // resolveNodeToFile maps a runtime DOM node id (from the editor's
372
+ // 'select' payload) to { file, line, component } provenance. The
373
+ // bridge endpoint exists; per-element provenance data must be
374
+ // emitted by the connected app at build time — see the provenance
375
+ // note in the help text below.
376
+ "Requires the connected app to emit data-source-file / data-source-line / data-component-name attributes (e.g. via @vitejs/plugin-react jsxDEV or a Babel source plugin)."
377
+ : undefined,
371
378
  })),
372
379
  };
373
380
  }
@@ -442,7 +449,26 @@ Options:
442
449
  --route-manifest <path> Non-destructive route manifest output path
443
450
  --json Print the manifest JSON and exit
444
451
  --once Prepare/scaffold the manifest and exit
445
- --dry-run Print what would be exposed without writing files`);
452
+ --dry-run Print what would be exposed without writing files
453
+
454
+ Element provenance (resolveNodeToFile):
455
+ The design editor can map a selected DOM element back to its source file,
456
+ line, and React component name when the connected app emits provenance
457
+ attributes at build time. Add one of the following to your app's build:
458
+
459
+ • @vitejs/plugin-react with jsxDEV enabled (development mode default):
460
+ Sets data-source-file and data-source-line on each JSX element
461
+ automatically when using the Babel transform.
462
+
463
+ • A Babel source plugin (e.g. babel-plugin-react-source or a custom plugin):
464
+ Emits data-source-file="src/Button.tsx" data-source-line="12"
465
+ data-source-column="4" data-component-name="Button" on each element.
466
+
467
+ • data-loc="src/Button.tsx:12:4" shorthand attribute (Babel source convention):
468
+ The bridge parses this as { sourceFile, line, column } automatically.
469
+
470
+ Without these attributes the editor still works; provenance is simply absent.
471
+ Cross-origin localhost iframes cannot be read regardless of attributes (CSP).`);
446
472
  }
447
473
 
448
474
  export async function runDesign(argv: string[]) {
@@ -17,6 +17,7 @@ import crypto from "node:crypto";
17
17
  import fs from "node:fs";
18
18
  import path from "node:path";
19
19
 
20
+ import { runScreenMemoryMCPStdio } from "../mcp/screen-memory-stdio.js";
20
21
  import { runMCPStdio } from "../mcp/stdio.js";
21
22
  import {
22
23
  findWorkspaceRoot,
@@ -46,6 +47,7 @@ interface ParsedArgs {
46
47
  client?: string;
47
48
  app?: string;
48
49
  port?: number;
50
+ screenMemoryDir?: string;
49
51
  scope?: string;
50
52
  standalone: boolean;
51
53
  rotate: boolean;
@@ -64,6 +66,7 @@ function parseArgs(argv: string[]): ParsedArgs {
64
66
  if ((v = eat("--client")) !== undefined) out.client = v;
65
67
  else if ((v = eat("--app")) !== undefined) out.app = v;
66
68
  else if ((v = eat("--port")) !== undefined) out.port = Number(v);
69
+ else if ((v = eat("--dir")) !== undefined) out.screenMemoryDir = v;
67
70
  else if ((v = eat("--scope")) !== undefined) out.scope = v;
68
71
  else if (a === "--standalone") out.standalone = true;
69
72
  else if (a === "--rotate") out.rotate = true;
@@ -537,6 +540,10 @@ Usage:
537
540
  Run the MCP stdio transport (what client configs spawn).
538
541
  Default: proxy to the running local app; --standalone builds from disk.
539
542
 
543
+ npx @agent-native/core@latest mcp screen-memory [--dir <path>]
544
+ Run the local Clips Screen Memory stdio server.
545
+ Defaults to the Clips app-data screen-memory folder.
546
+
540
547
  npx @agent-native/core@latest mcp install --client <c> [--app <id>] [--scope user|project]
541
548
  Provision a token and write the client's MCP config (idempotent).
542
549
  Clients: claude-code, codex, cowork, cursor, opencode, github-copilot
@@ -558,6 +565,9 @@ export async function runMcp(args: string[]): Promise<void> {
558
565
  case "serve":
559
566
  await cmdServe(p);
560
567
  return;
568
+ case "screen-memory":
569
+ await runScreenMemoryMCPStdio({ storeDir: p.screenMemoryDir });
570
+ return;
561
571
  case "install":
562
572
  await cmdInstall(p);
563
573
  return;
@@ -323,17 +323,18 @@ iteration, or a human-in-the-loop choice among design directions.
323
323
  - Use \`create-design\` first to create a project shell. Do not report the
324
324
  design as ready until it has renderable HTML.
325
325
  - For open-ended UX exploration, generate distinct, complete HTML directions
326
- (2-5, three by default) and call \`present-design-variants\`. The inline
327
- Design MCP app shows the options, lets the user pick one, and persists the
328
- selected variant.
329
- - If the Design app opens as a browser link instead of inline (CLI hosts like
330
- Codex / Claude Code, where the deep link carries \`handoff=chat\`), the user
331
- picks a direction there and the editor shows a copyable summary ask them to
332
- paste it back into chat so you can continue from the chosen direction. The
333
- \`present-design-variants\` result's \`fallbackInstructions\` describe this.
326
+ (2-5, three by default) and call \`present-design-variants\`. Design saves
327
+ every option as a normal screen on the overview board and renders an inline
328
+ chat choice with one button per screen name. After the user picks, delete the
329
+ unchosen variant screens and continue from the kept screen.
330
+ - If the chat choice buttons are not available in the host, ask the user to
331
+ tell you the screen name they prefer. The variants are already real screens
332
+ on the board, so do not ask them to paste HTML or copy a generated handoff
333
+ summary.
334
334
  - For direct refinements to an already chosen direction, call
335
- \`get-design-snapshot\`, edit from the current tuned HTML, then call
336
- \`generate-design\`.
335
+ \`get-design-snapshot\`, edit from the current tuned HTML, and use
336
+ \`edit-design\` for surgical changes. Use \`generate-design\` for new files
337
+ or larger structural rewrites.
337
338
  - Use \`export-coding-handoff\` when the user wants to implement the chosen
338
339
  design in a codebase.
339
340
 
@@ -347,8 +348,29 @@ iteration, or a human-in-the-loop choice among design directions.
347
348
  4. For product UI redesigns, prefer cleaner hierarchy, progressive disclosure,
348
349
  and realistic controls over decorative mockups.
349
350
  5. After \`present-design-variants\`, wait for the user's pick before
350
- generating the next version. If they say "I like #2 but...", snapshot the
351
- chosen design and refine that direction with \`generate-design\`.
351
+ generating the next version. Keep the chosen screen, delete the other
352
+ variant screens, then refine that direction with \`generate-design\` or
353
+ \`edit-design\`.
354
+
355
+ ## Design Quality Bar
356
+
357
+ - Before generating, name the concrete audience, the screen's primary job, and
358
+ the visual thesis. If the brief is vague, make a reasonable choice and state
359
+ it instead of producing a generic dashboard/landing-page default.
360
+ - For existing products, inspect the current screen, design system, tokens,
361
+ component language, or codebase context before inventing a new direction.
362
+ - Make each direction distinct in structure and behavior, not just palette.
363
+ Give every variant one memorable signature choice, then keep the surrounding
364
+ chrome disciplined.
365
+ - Treat copy, data, and imagery as design material. Use realistic domain
366
+ content and first-party/generated assets when images matter; avoid lorem
367
+ ipsum, vague SaaS filler, and decorative placeholder boxes.
368
+ - Build to a quiet quality floor: responsive desktop/mobile layout, visible
369
+ keyboard focus, useful loading/empty/error states for app UI, and reduced
370
+ motion support when custom motion is present.
371
+ - After broad generation or refinement, inspect the rendered Design surface or
372
+ a screenshot-capable host before calling it ready. Fix obvious hierarchy,
373
+ overflow, contrast, broken interaction, and placeholder-content issues first.
352
374
 
353
375
  ## Cross-App Use
354
376
 
@@ -382,6 +404,8 @@ name: visual-edit
382
404
  description: >-
383
405
  Open a running local app in Design overview mode as URL-backed iframe screens
384
406
  for visual editing, flow review, duplication, and route-state exploration.
407
+ Use when the user asks to inspect, compare, or edit a real local app visually
408
+ in Design.
385
409
  metadata:
386
410
  visibility: exported
387
411
  ---
@@ -409,6 +433,28 @@ iframe-backed screens on the infinite canvas.
409
433
  \`localhost:1234/onboarding/1\` means
410
434
  \`http://localhost:1234/onboarding/1\`.
411
435
 
436
+ ## Review Quality
437
+
438
+ - Treat the running app as the truth. Preserve its component language, tokens,
439
+ route state, and real content unless the user explicitly asks for a new visual
440
+ direction.
441
+ - Use multiple URL states to reveal meaningful UX moments: empty/loading/error
442
+ states, focused panels, modals, responsive breakpoints, and completed flow
443
+ steps when those matter to the review.
444
+ - For visual edits, compare before/after at the relevant viewport sizes and
445
+ check key hover/focus/scroll states when the app exposes them.
446
+
447
+ ## Account And Sharing Model
448
+
449
+ - The \`/visual-edit\` entry route can open before the viewer signs in. Public
450
+ \`/design/:id\` editor links can also render read-only public designs without a
451
+ session.
452
+ - Do not attempt anonymous write actions. Bridge registration, design creation,
453
+ screen placement, generation, saving, and sharing are account-backed. If a
454
+ signed-out visitor wants to save or share, send them through the framework
455
+ sign-in return flow, then save or copy the design into that account before
456
+ opening the share dialog.
457
+
412
458
  ## Required Local Bridge
413
459
 
414
460
  From the target app repo, make sure its dev server is running, then run:
@@ -3027,6 +3073,7 @@ interface SkillInstallMetadata {
3027
3073
  contentHash: string;
3028
3074
  mcpUrl: string;
3029
3075
  installedAt: string;
3076
+ installCommand: string;
3030
3077
  updateCommand: string;
3031
3078
  planMode?: PlanInstallMode;
3032
3079
  }
@@ -3443,30 +3490,48 @@ function writeSkillFolder(
3443
3490
  bundle: SkillFolderBundle,
3444
3491
  installedAt = new Date().toISOString(),
3445
3492
  ): void {
3446
- fs.rmSync(dir, { recursive: true, force: true });
3447
- fs.mkdirSync(dir, { recursive: true });
3448
- for (const [rel, content] of Object.entries(bundle.files)) {
3449
- const target = path.join(dir, rel);
3450
- fs.mkdirSync(path.dirname(target), { recursive: true });
3451
- fs.writeFileSync(target, content, "utf-8");
3452
- }
3453
- const metadata: SkillInstallMetadata = {
3454
- schemaVersion: 1,
3455
- source: "agent-native",
3456
- appSkillId: bundle.appSkillId,
3457
- displayName: bundle.displayName,
3458
- skillName: bundle.skillName,
3459
- contentHash: bundle.contentHash,
3460
- mcpUrl: bundle.mcpUrl,
3461
- installedAt,
3462
- updateCommand: `npx @agent-native/core@latest skills update ${bundle.skillName}`,
3463
- ...(bundle.planMode ? { planMode: bundle.planMode } : {}),
3464
- };
3465
- fs.writeFileSync(
3466
- path.join(dir, AGENT_NATIVE_SKILL_METADATA_FILE),
3467
- `${JSON.stringify(metadata, null, 2)}\n`,
3468
- "utf-8",
3493
+ const parent = path.dirname(dir);
3494
+ const tempDir = path.join(
3495
+ parent,
3496
+ `.${path.basename(dir)}.${process.pid}.${Date.now()}.tmp`,
3469
3497
  );
3498
+ try {
3499
+ fs.rmSync(tempDir, { recursive: true, force: true });
3500
+ fs.mkdirSync(tempDir, { recursive: true });
3501
+ for (const [rel, content] of Object.entries(bundle.files)) {
3502
+ const target = path.join(tempDir, rel);
3503
+ fs.mkdirSync(path.dirname(target), { recursive: true });
3504
+ fs.writeFileSync(target, content, "utf-8");
3505
+ }
3506
+ const metadata: SkillInstallMetadata = {
3507
+ schemaVersion: 1,
3508
+ source: "agent-native",
3509
+ appSkillId: bundle.appSkillId,
3510
+ displayName: bundle.displayName,
3511
+ skillName: bundle.skillName,
3512
+ contentHash: bundle.contentHash,
3513
+ mcpUrl: bundle.mcpUrl,
3514
+ installedAt,
3515
+ installCommand: `npx @agent-native/core@latest skills add ${bundle.skillName}`,
3516
+ updateCommand: `npx @agent-native/core@latest skills update ${bundle.skillName}`,
3517
+ ...(bundle.planMode ? { planMode: bundle.planMode } : {}),
3518
+ };
3519
+ fs.writeFileSync(
3520
+ path.join(tempDir, AGENT_NATIVE_SKILL_METADATA_FILE),
3521
+ `${JSON.stringify(metadata, null, 2)}\n`,
3522
+ "utf-8",
3523
+ );
3524
+ fs.rmSync(dir, { recursive: true, force: true });
3525
+ fs.renameSync(tempDir, dir);
3526
+ } catch (error: any) {
3527
+ try {
3528
+ fs.rmSync(tempDir, { recursive: true, force: true });
3529
+ } catch {}
3530
+ throw new Error(
3531
+ `Cannot write Agent Native skill folder ${dir}: ${error?.message ?? error}`,
3532
+ { cause: error },
3533
+ );
3534
+ }
3470
3535
  }
3471
3536
 
3472
3537
  function isJsonRecord(value: unknown): value is Record<string, unknown> {
@@ -6182,7 +6247,9 @@ function runSkillsStatusOrUpdate(
6182
6247
  const target = parsed.target ? ` for ${parsed.target}` : "";
6183
6248
  const hint = isScaffoldGuidanceTarget(parsed.target)
6184
6249
  ? `Run this from a generated Agent Native app or workspace root.\n`
6185
- : `Run "npx @agent-native/core@latest skills add ${parsed.target ?? "visual-plan"}" to install one.\n`;
6250
+ : update
6251
+ ? `The update command only refreshes skill folders that already exist; it does not do first-time install, MCP registration, or auth. Run "npx @agent-native/core@latest skills add ${parsed.target ?? "visual-plan"}" for one-step setup.\n`
6252
+ : `Run "npx @agent-native/core@latest skills add ${parsed.target ?? "visual-plan"}" to install one.\n`;
6186
6253
  process.stdout.write(
6187
6254
  `No installed Agent Native skill copies found${target}.\n${hint}`,
6188
6255
  );
@@ -81,6 +81,23 @@ function isProviderRateLimit(text: string, errorCode?: string): boolean {
81
81
  );
82
82
  }
83
83
 
84
+ function isProviderAuthenticationError(
85
+ text: string,
86
+ errorCode?: string,
87
+ ): boolean {
88
+ const code = normalizeErrorCode(errorCode);
89
+ const lower = text.toLowerCase();
90
+ return (
91
+ code === "authentication_error" ||
92
+ code === "http_401" ||
93
+ lower.includes("invalid x-api-key") ||
94
+ lower.includes("invalid api key") ||
95
+ lower.includes("incorrect api key") ||
96
+ lower.includes("api key is invalid") ||
97
+ (lower.includes("authentication_error") && lower.includes("api"))
98
+ );
99
+ }
100
+
84
101
  export function normalizeChatError(
85
102
  errorMessage: string,
86
103
  errorCode?: string,
@@ -97,6 +114,14 @@ export function normalizeChatError(
97
114
  };
98
115
  }
99
116
 
117
+ if (isProviderAuthenticationError(text, errorCode)) {
118
+ return {
119
+ message:
120
+ "The model provider rejected the saved API key. Update the key in API Keys & Connections, then retry.",
121
+ details: text,
122
+ };
123
+ }
124
+
100
125
  if (/^Gateway error \(no detail; raw event:/i.test(text)) {
101
126
  // The previous copy promised auto-recovery and suggested switching models,
102
127
  // but neither helps for this code: the server already retried once and