@agent-native/core 0.80.7 → 0.80.9

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 (302) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +18 -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/mcp.ts +10 -0
  16. package/corpus/core/src/cli/skills.ts +58 -12
  17. package/corpus/core/src/client/AssistantChat.tsx +70 -27
  18. package/corpus/core/src/client/analytics.ts +3 -1
  19. package/corpus/core/src/client/error-format.ts +25 -0
  20. package/corpus/core/src/client/extensions/ExtensionViewer.tsx +13 -11
  21. package/corpus/core/src/client/guided-questions.tsx +32 -4
  22. package/corpus/core/src/client/onboarding/OnboardingPanel.tsx +33 -1
  23. package/corpus/core/src/client/resources/BuiltinCapabilityDetail.tsx +8 -0
  24. package/corpus/core/src/client/resources/use-builtin-capabilities.ts +4 -2
  25. package/corpus/core/src/client/session-replay.ts +34 -0
  26. package/corpus/core/src/client/sharing/ShareButton.tsx +106 -21
  27. package/corpus/core/src/coding-tools/index.ts +1 -1
  28. package/corpus/core/src/mcp/index.ts +2 -0
  29. package/corpus/core/src/mcp/screen-memory-stdio.ts +290 -0
  30. package/corpus/core/src/mcp-client/builtin-capabilities.ts +13 -1
  31. package/corpus/core/src/mcp-client/index.ts +9 -0
  32. package/corpus/core/src/mcp-client/screen-memory-local.ts +461 -0
  33. package/corpus/core/src/onboarding/types.ts +7 -0
  34. package/corpus/core/src/server/agent-chat-plugin.ts +25 -0
  35. package/corpus/core/src/server/agents-bundle.ts +35 -7
  36. package/corpus/core/src/styles/agent-native.css +5 -0
  37. package/corpus/core/src/templates/default/app/global.css +35 -35
  38. package/corpus/templates/analytics/AGENTS.md +6 -0
  39. package/corpus/templates/analytics/actions/github-repo-files.ts +9 -0
  40. package/corpus/templates/analytics/app/components/layout/Layout.tsx +4 -4
  41. package/corpus/templates/analytics/app/global.css +144 -40
  42. package/corpus/templates/analytics/app/pages/adhoc/explorer/index.tsx +1 -1
  43. package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/ChartCard.tsx +1 -1
  44. package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/index.tsx +1 -1
  45. package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +4 -4
  46. package/corpus/templates/analytics/app/pages/sessions/SessionsPage.tsx +9 -9
  47. package/corpus/templates/analytics/changelog/2026-06-29-agents-can-search-and-read-connected-github-repositories-whe.md +6 -0
  48. package/corpus/templates/analytics/changelog/2026-06-29-sessions-and-explorer-layouts-adapt-when-the-agent-sidebar-is.md +6 -0
  49. package/corpus/templates/assets/app/components/layout/Layout.tsx +3 -1
  50. package/corpus/templates/assets/app/components/library/LibraryPresetGrid.tsx +1 -1
  51. package/corpus/templates/assets/app/global.css +99 -35
  52. package/corpus/templates/assets/app/routes/asset.$id.tsx +2 -2
  53. package/corpus/templates/assets/app/routes/brand-kits.$id.tsx +4 -4
  54. package/corpus/templates/assets/app/routes/library.tsx +4 -4
  55. package/corpus/templates/assets/changelog/2026-06-29-asset-library-and-detail-layouts-adapt-when-the-agent-sidebar.md +6 -0
  56. package/corpus/templates/brain/app/components/layout/Layout.tsx +1 -1
  57. package/corpus/templates/brain/app/global.css +63 -35
  58. package/corpus/templates/brain/app/routes/search.tsx +1 -1
  59. package/corpus/templates/brain/app/routes/settings.tsx +1 -1
  60. package/corpus/templates/brain/app/routes/sources.tsx +2 -2
  61. package/corpus/templates/brain/changelog/2026-06-29-search-settings-and-source-layouts-adapt-when-the-agent-sidebar.md +6 -0
  62. package/corpus/templates/calendar/app/components/calendar/EventDetailPanel.tsx +4 -4
  63. package/corpus/templates/calendar/app/components/calendar/FindTimePanel.tsx +3 -2
  64. package/corpus/templates/calendar/app/components/layout/AppLayout.tsx +4 -2
  65. package/corpus/templates/calendar/app/global.css +69 -35
  66. package/corpus/templates/calendar/changelog/2026-06-29-event-and-find-time-layouts-adapt-when-the-agent-sidebar-is.md +6 -0
  67. package/corpus/templates/chat/app/components/layout/Layout.tsx +1 -1
  68. package/corpus/templates/chat/app/global.css +35 -35
  69. package/corpus/templates/chat/changelog/2026-06-29-chat-layouts-adapt-when-the-agent-sidebar-is-open.md +6 -0
  70. package/corpus/templates/clips/AGENTS.md +13 -0
  71. package/corpus/templates/clips/actions/get-screen-memory-status.ts +12 -0
  72. package/corpus/templates/clips/actions/query-screen-memory-context.ts +29 -0
  73. package/corpus/templates/clips/actions/view-screen.ts +2 -2
  74. package/corpus/templates/clips/app/components/library/library-layout.tsx +1 -1
  75. package/corpus/templates/clips/app/global.css +47 -35
  76. package/corpus/templates/clips/app/routes/_app.meetings.$meetingId.tsx +3 -3
  77. package/corpus/templates/clips/app/routes/r.$recordingId.tsx +45 -18
  78. package/corpus/templates/clips/changelog/2026-06-29-meeting-detail-layouts-adapt-when-the-agent-sidebar-is-open.md +6 -0
  79. package/corpus/templates/clips/changelog/2026-06-29-screen-memory-keeps-a-local-rolling-screen-buffer-for-agent-context.md +5 -0
  80. package/corpus/templates/clips/changelog/2026-06-29-video-chat-is-easier-to-find-on-recording-pages-and-s3-setup.md +6 -0
  81. package/corpus/templates/clips/chrome-extension/src/styles.css +39 -39
  82. package/corpus/templates/clips/desktop/src/app.tsx +290 -1
  83. package/corpus/templates/clips/desktop/src/shared/config.ts +83 -0
  84. package/corpus/templates/clips/desktop/src/styles.css +67 -52
  85. package/corpus/templates/clips/desktop/src-tauri/src/config.rs +50 -0
  86. package/corpus/templates/clips/desktop/src-tauri/src/lib.rs +17 -0
  87. package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +13 -13
  88. package/corpus/templates/clips/desktop/src-tauri/src/screen_memory.rs +990 -0
  89. package/corpus/templates/clips/server/plugins/onboarding.ts +2 -0
  90. package/corpus/templates/content/app/components/editor/DocumentEditor.tsx +69 -16
  91. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +3 -3
  92. package/corpus/templates/content/app/components/layout/Layout.tsx +1 -1
  93. package/corpus/templates/content/app/global.css +29 -15
  94. package/corpus/templates/content/changelog/2026-06-29-database-gallery-layouts-adapt-when-the-agent-sidebar-is-open.md +6 -0
  95. package/corpus/templates/content/changelog/2026-06-29-read-only-pages-no-longer-try-to-autosave-or-open-editor-onl.md +6 -0
  96. package/corpus/templates/design/.agents/skills/design-generation/SKILL.md +25 -20
  97. package/corpus/templates/design/.agents/skills/design-systems/SKILL.md +8 -0
  98. package/corpus/templates/design/.agents/skills/export-handoff/SKILL.md +8 -0
  99. package/corpus/templates/design/.agents/skills/visual-edit/SKILL.md +13 -0
  100. package/corpus/templates/design/AGENTS.md +24 -14
  101. package/corpus/templates/design/CODE_NATIVE_DESIGN_STUDIO_IMPLEMENTATION_PLAN.md +1054 -0
  102. package/corpus/templates/design/actions/apply-visual-edit.ts +24 -4
  103. package/corpus/templates/design/actions/edit-design.ts +6 -3
  104. package/corpus/templates/design/actions/export-coding-handoff.ts +12 -4
  105. package/corpus/templates/design/actions/generate-design.ts +6 -21
  106. package/corpus/templates/design/actions/generate-screens.ts +48 -5
  107. package/corpus/templates/design/actions/get-design.ts +1 -0
  108. package/corpus/templates/design/actions/present-design-variants.ts +355 -30
  109. package/corpus/templates/design/actions/update-design.ts +47 -10
  110. package/corpus/templates/design/actions/update-file.ts +33 -8
  111. package/corpus/templates/design/actions/view-screen.ts +89 -31
  112. package/corpus/templates/design/app/components/design/DesignCanvas.tsx +389 -71
  113. package/corpus/templates/design/app/components/design/DesignEditorSkeleton.tsx +1 -1
  114. package/corpus/templates/design/app/components/design/EditPanel.tsx +596 -95
  115. package/corpus/templates/design/app/components/design/LayersPanel.tsx +428 -221
  116. package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +1197 -228
  117. package/corpus/templates/design/app/components/design/QuestionFlow.tsx +94 -217
  118. package/corpus/templates/design/app/components/design/TweaksPanel.tsx +28 -14
  119. package/corpus/templates/design/app/components/design/index.ts +0 -1
  120. package/corpus/templates/design/app/components/design/inspector/AutoLayoutMatrix.tsx +228 -170
  121. package/corpus/templates/design/app/components/design/inspector/DesignColorPicker.tsx +140 -13
  122. package/corpus/templates/design/app/components/design/inspector/ExportSettingsPanel.tsx +39 -8
  123. package/corpus/templates/design/app/components/design/inspector/GradientEditor.tsx +4 -2
  124. package/corpus/templates/design/app/components/design/inspector/ImageFillControls.tsx +75 -5
  125. package/corpus/templates/design/app/components/design/inspector/ScrubInput.tsx +37 -12
  126. package/corpus/templates/design/app/components/design/inspector/index.ts +1 -0
  127. package/corpus/templates/design/app/components/design/inspector/scrub-input-utils.ts +17 -4
  128. package/corpus/templates/design/app/components/design/types.ts +9 -0
  129. package/corpus/templates/design/app/components/layout/Layout.tsx +23 -5
  130. package/corpus/templates/design/app/components/visual-editor/DrawOverlay.tsx +448 -259
  131. package/corpus/templates/design/app/global.css +77 -49
  132. package/corpus/templates/design/app/hooks/use-question-flow.ts +2 -2
  133. package/corpus/templates/design/app/hooks/useDesignHotkeys.ts +8 -1
  134. package/corpus/templates/design/app/i18n/zh-TW.ts +4 -0
  135. package/corpus/templates/design/app/i18n-data.ts +55 -3
  136. package/corpus/templates/design/app/pages/DesignEditor.tsx +2783 -658
  137. package/corpus/templates/design/app/root.tsx +1 -1
  138. package/corpus/templates/design/changelog/2026-06-29-agent-edits-to-a-design-are-no-longer-occasionally-dropped-o.md +6 -0
  139. package/corpus/templates/design/changelog/2026-06-29-box-shadow-and-gradient-colors-keep-named-css-colors-like-re.md +6 -0
  140. package/corpus/templates/design/changelog/2026-06-29-containers-no-longer-block-selecting-nested-elements-and-nor.md +6 -0
  141. package/corpus/templates/design/changelog/2026-06-29-cut-cmd-ctrl-x-now-removes-the-selected-element-to-the-clipb.md +6 -0
  142. package/corpus/templates/design/changelog/2026-06-29-deleting-with-multiple-layers-selected-in-the-layers-panel-n.md +6 -0
  143. package/corpus/templates/design/changelog/2026-06-29-design-agents-now-generate-and-refine-variants-from-stronger.md +6 -0
  144. package/corpus/templates/design/changelog/2026-06-29-design-inspector-controls-now-match-figmas-softer-dark-chrome.md +6 -0
  145. package/corpus/templates/design/changelog/2026-06-29-design-questions-now-appear-as-a-cleaner-canvas-intake-with-.md +6 -0
  146. package/corpus/templates/design/changelog/2026-06-29-design-variant-directions-now-appear-as-board-screens-with-chat-buttons.md +5 -0
  147. package/corpus/templates/design/changelog/2026-06-29-duplicating-a-screen-now-gives-the-copy-its-own-layer-ids-so.md +6 -0
  148. package/corpus/templates/design/changelog/2026-06-29-element-selection-no-longer-snaps-back-to-the-previous-layer.md +6 -0
  149. package/corpus/templates/design/changelog/2026-06-29-frame-resize-measurements-now-stay-beside-the-cursor-while-d.md +6 -0
  150. package/corpus/templates/design/changelog/2026-06-29-hiding-and-re-showing-a-gradient-fill-now-preserves-each-sto.md +6 -0
  151. package/corpus/templates/design/changelog/2026-06-29-inspector-number-fields-have-cleaner-tooltips-and-draggable-.md +6 -0
  152. package/corpus/templates/design/changelog/2026-06-29-layer-locking-layer-nesting-generated-question-intake-and-im.md +6 -0
  153. package/corpus/templates/design/changelog/2026-06-29-layer-names-in-the-sidebar-can-scroll-horizontally-instead-o.md +6 -0
  154. package/corpus/templates/design/changelog/2026-06-29-layer-nesting-in-the-sidebar-now-uses-tighter-spacing-so-nam.md +6 -0
  155. package/corpus/templates/design/changelog/2026-06-29-layers-no-longer-repeat-document-wrapper-rows-when-a-screen-.md +6 -0
  156. package/corpus/templates/design/changelog/2026-06-29-overview-previews-now-keep-element-hover-and-selection-tied-.md +6 -0
  157. package/corpus/templates/design/changelog/2026-06-29-picking-a-design-direction-now-submits-to-the-agent-right-aw.md +6 -0
  158. package/corpus/templates/design/changelog/2026-06-29-pressing-escape-now-cancels-a-stuck-screen-drag-in-the-overv.md +6 -0
  159. package/corpus/templates/design/changelog/2026-06-29-screen-overview-is-easier-to-find-and-named-screens-open-dir.md +6 -0
  160. package/corpus/templates/design/changelog/2026-06-29-screen-overview-only-highlights-screens-when-the-frame-or-ti.md +6 -0
  161. package/corpus/templates/design/changelog/2026-06-29-screen-overview-previews-now-resize-to-match-the-selected-de.md +6 -0
  162. package/corpus/templates/design/changelog/2026-06-29-screen-overview-selection-now-uses-a-pointer-cursor-instead-.md +6 -0
  163. package/corpus/templates/design/changelog/2026-06-29-screen-overview-selection-outlines-now-stay-locked-to-the-se.md +6 -0
  164. package/corpus/templates/design/changelog/2026-06-29-screen-overview-zoom-now-reports-real-screen-scale-separatel.md +6 -0
  165. package/corpus/templates/design/changelog/2026-06-29-screen-overview-zooming-feels-smoother-and-selection-outline.md +6 -0
  166. package/corpus/templates/design/changelog/2026-06-29-screen-overview-zooming-now-stays-on-the-overview-canvas-ins.md +6 -0
  167. package/corpus/templates/design/changelog/2026-06-29-selecting-a-nested-layer-from-all-screens-now-keeps-you-in-a.md +6 -0
  168. package/corpus/templates/design/changelog/2026-06-29-share-now-groups-link-sharing-exports-and-agent-handoff.md +6 -0
  169. package/corpus/templates/design/changelog/2026-06-29-style-changes-that-set-several-properties-at-once-fixed-size.md +6 -0
  170. package/corpus/templates/design/changelog/2026-06-29-the-design-editor-loading-skeleton-now-uses-a-softer-charcoa.md +6 -0
  171. package/corpus/templates/design/changelog/2026-06-29-the-device-preview-menu-now-sits-next-to-the-preview-button-.md +6 -0
  172. package/corpus/templates/design/changelog/2026-06-29-the-editor-no-longer-crashes-when-a-screen-ends-up-with-dupl.md +6 -0
  173. package/corpus/templates/design/changelog/2026-06-29-the-inspector-stays-read-only-while-an-empty-design-is-still.md +6 -0
  174. package/corpus/templates/design/changelog/2026-06-29-the-missing-design-view-now-matches-the-rest-of-the-editor-c.md +6 -0
  175. package/corpus/templates/design/changelog/2026-06-29-the-pen-tool-icon-and-tool-option-menus-better-match-the-edi.md +6 -0
  176. package/corpus/templates/design/changelog/2026-06-29-typography-controls-now-keep-the-font-name-visible-and-move-.md +6 -0
  177. package/corpus/templates/design/e2e/README.md +4 -3
  178. package/corpus/templates/design/e2e/global-setup.ts +24 -23
  179. package/corpus/templates/design/e2e/helpers.ts +122 -11
  180. package/corpus/templates/design/playwright.config.ts +19 -4
  181. package/corpus/templates/design/server/lib/coding-handoff.ts +126 -2
  182. package/corpus/templates/design/server/plugins/core-routes.ts +1 -2
  183. package/corpus/templates/design/server/routes/api/design-handoff/[id].zip.get.ts +86 -0
  184. package/corpus/templates/design/shared/code-layer.ts +125 -22
  185. package/corpus/templates/design/shared/color-utils.ts +159 -0
  186. package/corpus/templates/design/shared/generation-session.ts +42 -0
  187. package/corpus/templates/dispatch/app/global.css +79 -35
  188. package/corpus/templates/dispatch/app/routes/integrations.tsx +8 -7
  189. package/corpus/templates/dispatch/changelog/2026-06-29-integration-layouts-adapt-when-the-agent-sidebar-is-open.md +6 -0
  190. package/corpus/templates/forms/app/components/layout/Layout.tsx +6 -2
  191. package/corpus/templates/forms/app/global.css +64 -35
  192. package/corpus/templates/forms/app/pages/FormsListPage.tsx +2 -2
  193. package/corpus/templates/forms/app/pages/ResponseInsightsPage.tsx +3 -3
  194. package/corpus/templates/forms/changelog/2026-06-29-form-list-and-insight-layouts-adapt-when-the-agent-sidebar.md +6 -0
  195. package/corpus/templates/macros/app/components/layout/AppLayout.tsx +3 -1
  196. package/corpus/templates/macros/app/global.css +25 -9
  197. package/corpus/templates/macros/changelog/2026-06-29-macro-layouts-adapt-when-the-agent-sidebar-is-open.md +6 -0
  198. package/corpus/templates/mail/app/components/layout/AppLayout.tsx +6 -2
  199. package/corpus/templates/mail/app/global.css +42 -36
  200. package/corpus/templates/mail/app/pages/InboxPage.tsx +1 -1
  201. package/corpus/templates/mail/changelog/2026-06-29-the-contact-panel-now-adapts-to-the-available-mail-pane-width.md +6 -0
  202. package/corpus/templates/plan/app/components/layout/Layout.tsx +3 -1
  203. package/corpus/templates/plan/app/components/plan/DocumentArea.tsx +6 -7
  204. package/corpus/templates/plan/app/global.css +74 -42
  205. package/corpus/templates/plan/changelog/2026-06-29-plan-document-blocks-adapt-to-the-available-document-width.md +6 -0
  206. package/corpus/templates/plan/changelog/2026-06-29-plan-titles-and-summaries-can-be-edited-inline-without-focus.md +6 -0
  207. package/corpus/templates/slides/app/components/layout/Layout.tsx +3 -1
  208. package/corpus/templates/slides/app/global.css +49 -33
  209. package/corpus/templates/slides/changelog/2026-06-29-slide-layouts-adapt-when-the-agent-sidebar-is-open.md +6 -0
  210. package/corpus/templates/videos/app/components/layout/Layout.tsx +3 -1
  211. package/corpus/templates/videos/app/global.css +35 -35
  212. package/corpus/templates/videos/changelog/2026-06-29-video-layouts-adapt-when-the-agent-sidebar-is-open.md +6 -0
  213. package/dist/cli/mcp.d.ts.map +1 -1
  214. package/dist/cli/mcp.js +10 -0
  215. package/dist/cli/mcp.js.map +1 -1
  216. package/dist/cli/skills.d.ts.map +1 -1
  217. package/dist/cli/skills.js +58 -12
  218. package/dist/cli/skills.js.map +1 -1
  219. package/dist/client/AssistantChat.d.ts.map +1 -1
  220. package/dist/client/AssistantChat.js +54 -24
  221. package/dist/client/AssistantChat.js.map +1 -1
  222. package/dist/client/analytics.d.ts.map +1 -1
  223. package/dist/client/analytics.js +2 -1
  224. package/dist/client/analytics.js.map +1 -1
  225. package/dist/client/error-format.d.ts.map +1 -1
  226. package/dist/client/error-format.js +17 -0
  227. package/dist/client/error-format.js.map +1 -1
  228. package/dist/client/extensions/ExtensionViewer.d.ts.map +1 -1
  229. package/dist/client/extensions/ExtensionViewer.js +3 -4
  230. package/dist/client/extensions/ExtensionViewer.js.map +1 -1
  231. package/dist/client/guided-questions.d.ts +4 -0
  232. package/dist/client/guided-questions.d.ts.map +1 -1
  233. package/dist/client/guided-questions.js +16 -7
  234. package/dist/client/guided-questions.js.map +1 -1
  235. package/dist/client/onboarding/OnboardingPanel.js +26 -1
  236. package/dist/client/onboarding/OnboardingPanel.js.map +1 -1
  237. package/dist/client/resources/BuiltinCapabilityDetail.d.ts.map +1 -1
  238. package/dist/client/resources/BuiltinCapabilityDetail.js +1 -1
  239. package/dist/client/resources/BuiltinCapabilityDetail.js.map +1 -1
  240. package/dist/client/resources/use-builtin-capabilities.d.ts +1 -1
  241. package/dist/client/resources/use-builtin-capabilities.d.ts.map +1 -1
  242. package/dist/client/resources/use-builtin-capabilities.js +2 -1
  243. package/dist/client/resources/use-builtin-capabilities.js.map +1 -1
  244. package/dist/client/session-replay.d.ts.map +1 -1
  245. package/dist/client/session-replay.js +31 -0
  246. package/dist/client/session-replay.js.map +1 -1
  247. package/dist/client/sharing/ShareButton.d.ts +14 -0
  248. package/dist/client/sharing/ShareButton.d.ts.map +1 -1
  249. package/dist/client/sharing/ShareButton.js +36 -7
  250. package/dist/client/sharing/ShareButton.js.map +1 -1
  251. package/dist/coding-tools/index.js +1 -1
  252. package/dist/coding-tools/index.js.map +1 -1
  253. package/dist/collab/routes.d.ts +1 -1
  254. package/dist/mcp/index.d.ts +2 -0
  255. package/dist/mcp/index.d.ts.map +1 -1
  256. package/dist/mcp/index.js +1 -0
  257. package/dist/mcp/index.js.map +1 -1
  258. package/dist/mcp/screen-memory-stdio.d.ts +6 -0
  259. package/dist/mcp/screen-memory-stdio.d.ts.map +1 -0
  260. package/dist/mcp/screen-memory-stdio.js +213 -0
  261. package/dist/mcp/screen-memory-stdio.js.map +1 -0
  262. package/dist/mcp-client/builtin-capabilities.d.ts +1 -1
  263. package/dist/mcp-client/builtin-capabilities.d.ts.map +1 -1
  264. package/dist/mcp-client/builtin-capabilities.js +10 -0
  265. package/dist/mcp-client/builtin-capabilities.js.map +1 -1
  266. package/dist/mcp-client/index.d.ts +1 -0
  267. package/dist/mcp-client/index.d.ts.map +1 -1
  268. package/dist/mcp-client/index.js +1 -0
  269. package/dist/mcp-client/index.js.map +1 -1
  270. package/dist/mcp-client/screen-memory-local.d.ts +61 -0
  271. package/dist/mcp-client/screen-memory-local.d.ts.map +1 -0
  272. package/dist/mcp-client/screen-memory-local.js +336 -0
  273. package/dist/mcp-client/screen-memory-local.js.map +1 -0
  274. package/dist/onboarding/types.d.ts +7 -0
  275. package/dist/onboarding/types.d.ts.map +1 -1
  276. package/dist/onboarding/types.js.map +1 -1
  277. package/dist/resources/handlers.d.ts +2 -2
  278. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  279. package/dist/server/agent-chat-plugin.js +26 -0
  280. package/dist/server/agent-chat-plugin.js.map +1 -1
  281. package/dist/server/agents-bundle.d.ts.map +1 -1
  282. package/dist/server/agents-bundle.js +22 -7
  283. package/dist/server/agents-bundle.js.map +1 -1
  284. package/dist/server/transcribe-voice.d.ts +1 -1
  285. package/dist/styles/agent-native.css +5 -0
  286. package/dist/templates/default/app/global.css +35 -35
  287. package/docs/content/locales/ar-SA/template-design.mdx +6 -0
  288. package/docs/content/locales/de-DE/template-design.mdx +8 -0
  289. package/docs/content/locales/es-ES/template-design.mdx +10 -2
  290. package/docs/content/locales/fr-FR/template-design.mdx +10 -2
  291. package/docs/content/locales/hi-IN/template-design.mdx +7 -0
  292. package/docs/content/locales/ja-JP/template-design.mdx +7 -0
  293. package/docs/content/locales/ko-KR/template-design.mdx +7 -0
  294. package/docs/content/locales/pt-BR/template-design.mdx +9 -2
  295. package/docs/content/locales/zh-CN/template-design.mdx +6 -0
  296. package/docs/content/locales/zh-TW/template-design.mdx +6 -0
  297. package/docs/content/template-design.mdx +9 -2
  298. package/package.json +1 -1
  299. package/src/templates/default/app/global.css +35 -35
  300. package/corpus/templates/design/app/components/design/VariantGrid.tsx +0 -189
  301. package/corpus/templates/design/app/components/design/VariantHandoffCard.tsx +0 -115
  302. package/corpus/templates/design/app/hooks/use-variant-flow.ts +0 -258
@@ -44,6 +44,12 @@ details live in `.agents/skills/`.
44
44
  request action uses the shared `@agent-native/core/provider-api` runtime,
45
45
  injects configured credentials, blocks private/internal URLs, and redacts
46
46
  secrets.
47
+ - For questions about tracking events or instrumentation in GitHub-hosted code,
48
+ use `github-repo-files` before raw provider requests: check
49
+ `data-source-status` for GitHub, `operation="search"` likely event names/calls
50
+ with `includeTextMatches=true`, then `operation="read"` the relevant files.
51
+ Report the repo, ref/default branch, queries used, files read, and any
52
+ truncation or GitHub incomplete-results flags so absence claims are auditable.
47
53
  - For named account/deal deep dives, call `account-deep-dive` first. It bundles
48
54
  HubSpot deal/account/contact activity with Gong call detail and compact
49
55
  transcript evidence so the final report can match Fusion-style depth.
@@ -0,0 +1,9 @@
1
+ import { createGitHubRepoFilesAction } from "@agent-native/core/provider-api/actions/github-repo-files";
2
+
3
+ import { getAnalyticsProviderApiRuntime } from "../server/lib/provider-api";
4
+
5
+ // Static action registry marker: createGitHubRepoFilesAction returns defineAction.
6
+ export default createGitHubRepoFilesAction(getAnalyticsProviderApiRuntime(), {
7
+ description:
8
+ "List, search, and read connected GitHub repository files through the Analytics GitHub data source. Use this to inspect remote repos for tracking-event instrumentation, event-name definitions, analytics calls, and related code context without cloning. Prefer operation='search' with includeTextMatches=true before operation='read'. Write and delete operations exist for explicit repo-maintenance requests only and require human approval.",
9
+ });
@@ -106,7 +106,7 @@ export function Layout({ children }: LayoutProps) {
106
106
  if (reportScreenshot) {
107
107
  return (
108
108
  <HeaderActionsProvider>
109
- <main className="min-h-screen bg-background p-6 text-foreground md:p-8">
109
+ <main className="agent-native-app-main min-h-screen bg-background p-6 text-foreground md:p-8">
110
110
  {children}
111
111
  </main>
112
112
  </HeaderActionsProvider>
@@ -121,10 +121,10 @@ export function Layout({ children }: LayoutProps) {
121
121
  <main
122
122
  className={
123
123
  isExtensionsRoute
124
- ? "flex-1 overflow-y-auto"
124
+ ? "agent-native-app-main flex-1 overflow-y-auto"
125
125
  : isAskRoute
126
- ? "flex-1 overflow-hidden p-0"
127
- : "flex-1 overflow-y-auto p-6 pt-2"
126
+ ? "agent-native-app-main flex-1 overflow-hidden p-0"
127
+ : "agent-native-app-main flex-1 overflow-y-auto p-6 pt-2"
128
128
  }
129
129
  >
130
130
  {children}
@@ -7,30 +7,30 @@
7
7
  @source "./**/*.{ts,tsx}";
8
8
 
9
9
  :root {
10
- /* Base - Linear/Vercel Dark Mode Style */
11
- --background: 240 10% 3.9%; /* #09090b */
12
- --foreground: 0 0% 98%; /* #fafafa */
10
+ /* Base */
11
+ --background: 0 0% 13%;
12
+ --foreground: 0 0% 98%;
13
13
 
14
- --card: 240 10% 3.9%; /* Same as bg for seamless look, or slightly lighter */
14
+ --card: 0 0% 15%;
15
15
  --card-foreground: 0 0% 98%;
16
16
 
17
- --popover: 240 10% 3.9%;
17
+ --popover: 0 0% 15%;
18
18
  --popover-foreground: 0 0% 98%;
19
19
 
20
20
  /* Primary - White/Off-white for high contrast */
21
21
  --primary: 0 0% 98%;
22
- --primary-foreground: 240 5.9% 10%;
22
+ --primary-foreground: 0 0% 10%;
23
23
 
24
24
  /* Secondary - Muted grays */
25
- --secondary: 240 3.7% 15.9%; /* #27272a */
25
+ --secondary: 0 0% 18%;
26
26
  --secondary-foreground: 0 0% 98%;
27
27
 
28
28
  /* Muted - Subtle text */
29
- --muted: 240 3.7% 15.9%;
30
- --muted-foreground: 240 5% 64.9%; /* #a1a1aa */
29
+ --muted: 0 0% 16%;
30
+ --muted-foreground: 0 0% 64.9%;
31
31
 
32
32
  /* Accent - Subtle interactive elements */
33
- --accent: 240 3.7% 15.9%;
33
+ --accent: 0 0% 18%;
34
34
  --accent-foreground: 0 0% 98%;
35
35
 
36
36
  /* Destructive - bright enough for text on dark surfaces */
@@ -38,9 +38,9 @@
38
38
  --destructive-foreground: 0 0% 98%;
39
39
 
40
40
  /* Borders - Subtle and thin */
41
- --border: 240 3.7% 15.9%; /* #27272a */
42
- --input: 240 3.7% 15.9%;
43
- --ring: 240 4.9% 83.9%;
41
+ --border: 0 0% 24%;
42
+ --input: 0 0% 24%;
43
+ --ring: 0 0% 83.9%;
44
44
 
45
45
  /* Charts */
46
46
  --chart-1: 220 70% 50%;
@@ -60,40 +60,40 @@
60
60
  --radius: 0.5rem;
61
61
 
62
62
  /* Table header - solid card color for sticky headers */
63
- --table-header: 240 10% 3.9%; /* Same as card, no opacity */
63
+ --table-header: 0 0% 15%;
64
64
 
65
- /* Sidebar - keeping consistent with dark theme */
66
- --sidebar-background: 240 10% 3.9%;
67
- --sidebar-foreground: 240 4.8% 95.9%;
65
+ /* Sidebar */
66
+ --sidebar-background: 0 0% 10%;
67
+ --sidebar-foreground: 0 0% 95.9%;
68
68
  --sidebar-primary: 224.3 76.3% 48%;
69
69
  --sidebar-primary-foreground: 0 0% 100%;
70
- --sidebar-accent: 240 3.7% 15.9%;
71
- --sidebar-accent-foreground: 240 4.8% 95.9%;
72
- --sidebar-border: 240 3.7% 15.9%;
70
+ --sidebar-accent: 0 0% 16%;
71
+ --sidebar-accent-foreground: 0 0% 95.9%;
72
+ --sidebar-border: 0 0% 20%;
73
73
  --sidebar-ring: 217.2 91.2% 59.8%;
74
74
  }
75
75
 
76
76
  .light {
77
77
  --background: 0 0% 100%;
78
- --foreground: 240 10% 3.9%;
78
+ --foreground: 0 0% 3.9%;
79
79
  --card: 0 0% 100%;
80
- --card-foreground: 240 10% 3.9%;
80
+ --card-foreground: 0 0% 3.9%;
81
81
  --popover: 0 0% 100%;
82
- --popover-foreground: 240 10% 3.9%;
83
- --primary: 240 5.9% 10%;
82
+ --popover-foreground: 0 0% 3.9%;
83
+ --primary: 0 0% 10%;
84
84
  --primary-foreground: 0 0% 98%;
85
- --secondary: 240 4.8% 95.9%;
86
- --secondary-foreground: 240 5.9% 10%;
87
- --muted: 240 4.8% 95.9%;
88
- --muted-foreground: 240 3.8% 46.1%;
89
- --accent: 240 4.8% 95.9%;
90
- --accent-foreground: 240 5.9% 10%;
85
+ --secondary: 0 0% 95.9%;
86
+ --secondary-foreground: 0 0% 10%;
87
+ --muted: 0 0% 95.9%;
88
+ --muted-foreground: 0 0% 46.1%;
89
+ --accent: 0 0% 95.9%;
90
+ --accent-foreground: 0 0% 10%;
91
91
  --destructive: 0 84.2% 60.2%;
92
92
  --destructive-foreground: 0 0% 98%;
93
- --border: 240 5.9% 90%;
93
+ --border: 0 0% 90%;
94
94
  --table-header: 0 0% 100%; /* Same as card for light mode */
95
- --input: 240 5.9% 90%;
96
- --ring: 240 5.9% 10%;
95
+ --input: 0 0% 90%;
96
+ --ring: 0 0% 10%;
97
97
  --chart-1: 220 70% 50%;
98
98
  --chart-2: 160 60% 45%;
99
99
  --chart-3: 30 80% 55%;
@@ -109,12 +109,12 @@
109
109
  --brand-teal: #0d9488;
110
110
 
111
111
  --sidebar-background: 0 0% 98%;
112
- --sidebar-foreground: 240 5.3% 26.1%;
113
- --sidebar-primary: 240 5.9% 10%;
112
+ --sidebar-foreground: 0 0% 26.1%;
113
+ --sidebar-primary: 0 0% 10%;
114
114
  --sidebar-primary-foreground: 0 0% 98%;
115
- --sidebar-accent: 240 4.8% 95.9%;
116
- --sidebar-accent-foreground: 240 5.9% 10%;
117
- --sidebar-border: 240 5.9% 90%;
115
+ --sidebar-accent: 0 0% 95.9%;
116
+ --sidebar-accent-foreground: 0 0% 10%;
117
+ --sidebar-border: 0 0% 90%;
118
118
  --sidebar-ring: 217.2 91.2% 59.8%;
119
119
  }
120
120
 
@@ -152,7 +152,10 @@
152
152
 
153
153
  .dark .agent-sidebar-panel[data-agent-sidebar-layout="desktop"],
154
154
  .dark .agent-sidebar-panel[data-agent-sidebar-layout="mobile"] {
155
- background: #000 !important;
155
+ background: var(
156
+ --agent-native-lower-surface,
157
+ hsl(var(--sidebar-background))
158
+ ) !important;
156
159
  }
157
160
 
158
161
  .analytics-chat-panel
@@ -230,7 +233,7 @@
230
233
  }
231
234
 
232
235
  .light .analytics-session-snippet .plan-code-surface-scroll {
233
- background: hsl(240 6% 96%);
236
+ background: hsl(0 0% 96%);
234
237
  }
235
238
 
236
239
  .an-replay-scrub {
@@ -388,6 +391,93 @@
388
391
  }
389
392
  }
390
393
 
394
+ .analytics-sessions-page {
395
+ container: analytics-sessions / inline-size;
396
+ }
397
+
398
+ .analytics-session-path {
399
+ overflow-wrap: anywhere;
400
+ }
401
+
402
+ @container agent-native-main (min-width: 720px) {
403
+ .analytics-sessions-page {
404
+ padding-inline: 1.5rem;
405
+ }
406
+ }
407
+
408
+ @container analytics-sessions (min-width: 640px) {
409
+ .analytics-session-row {
410
+ grid-template-columns: 104px minmax(0, 0.9fr) minmax(0, 1.15fr);
411
+ align-items: center;
412
+ }
413
+
414
+ .analytics-session-path {
415
+ grid-column: 3;
416
+ }
417
+
418
+ .analytics-session-app-meta {
419
+ grid-column: 2 / 4;
420
+ padding-inline-start: calc(104px + 0.75rem);
421
+ }
422
+ }
423
+
424
+ @container analytics-sessions (min-width: 760px) {
425
+ .analytics-session-row {
426
+ grid-template-columns:
427
+ 104px minmax(150px, 0.85fr) minmax(200px, 1.25fr)
428
+ minmax(120px, 0.55fr);
429
+ }
430
+
431
+ .analytics-session-app-meta {
432
+ grid-column: auto;
433
+ padding-inline-start: 0;
434
+ text-align: end;
435
+ }
436
+
437
+ .analytics-session-badges {
438
+ justify-content: flex-end;
439
+ }
440
+
441
+ .analytics-sessions-filter-extra {
442
+ grid-template-columns: repeat(2, minmax(0, 1fr));
443
+ }
444
+ }
445
+
446
+ @container analytics-sessions (min-width: 920px) {
447
+ .analytics-sessions-filter-grid {
448
+ grid-template-columns: 150px minmax(260px, 1fr) 160px auto auto;
449
+ align-items: center;
450
+ }
451
+
452
+ .analytics-sessions-filter-label {
453
+ min-width: 0;
454
+ }
455
+ }
456
+
457
+ @container analytics-sessions (min-width: 960px) {
458
+ .analytics-sessions-empty-grid {
459
+ grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
460
+ }
461
+ }
462
+
463
+ .analytics-session-detail-page {
464
+ container: analytics-session-detail / inline-size;
465
+ }
466
+
467
+ @container analytics-session-detail (min-width: 760px) {
468
+ .analytics-session-detail-header {
469
+ flex-direction: row;
470
+ align-items: center;
471
+ justify-content: space-between;
472
+ }
473
+ }
474
+
475
+ @container analytics-session-detail (min-width: 1040px) {
476
+ .analytics-session-detail-workbench {
477
+ grid-template-columns: minmax(0, 1fr) 330px;
478
+ }
479
+ }
480
+
391
481
  /* The dashboard grid responds to the available content width — which shrinks
392
482
  when the agent sidebar is open — not the viewport. Rows are rendered
393
483
  explicitly so deleting a card only expands the remaining cards in that row. */
@@ -480,6 +570,20 @@
480
570
  pointer-events: none;
481
571
  }
482
572
 
573
+ @container agent-native-main (min-width: 820px) {
574
+ .analytics-explorer-config-grid {
575
+ grid-template-columns: minmax(0, 1fr) auto;
576
+ }
577
+
578
+ .explorer-dashboard-grid {
579
+ grid-template-columns: repeat(2, minmax(0, 1fr));
580
+ }
581
+
582
+ .explorer-dashboard-card-wide {
583
+ grid-column: span 2 / span 2;
584
+ }
585
+ }
586
+
483
587
  @container dashboard-grid (min-width: 768px) {
484
588
  .dashboard-grid {
485
589
  flex-direction: row;
@@ -191,7 +191,7 @@ export default function ExplorerPage() {
191
191
  </div>
192
192
 
193
193
  {/* Config panel */}
194
- <div className="grid grid-cols-1 lg:grid-cols-[1fr_auto] gap-4 items-start">
194
+ <div className="analytics-explorer-config-grid grid grid-cols-1 gap-4 items-start">
195
195
  <div className="space-y-4">
196
196
  <EventPanel
197
197
  events={config.events}
@@ -106,7 +106,7 @@ export function DashboardChartCard({
106
106
  ref={setNodeRef}
107
107
  style={style}
108
108
  data-dragging={isDragging ? "true" : undefined}
109
- className={`group relative ${chart.width === 2 ? "md:col-span-2" : ""}`}
109
+ className={`explorer-dashboard-card group relative ${chart.width === 2 ? "explorer-dashboard-card-wide" : ""}`}
110
110
  >
111
111
  <Card className="h-full">
112
112
  <CardHeader className="pb-2 flex flex-row items-center gap-2">
@@ -741,7 +741,7 @@ export default function ExplorerDashboardPage() {
741
741
  strategy={rectSortingStrategy}
742
742
  >
743
743
  <div
744
- className="explorer-dashboard-grid grid grid-cols-1 md:grid-cols-2 gap-4"
744
+ className="explorer-dashboard-grid grid grid-cols-1 gap-4"
745
745
  data-dashboard-dragging={activeDragChartId ? "true" : undefined}
746
746
  >
747
747
  {dashboard.charts.map((chart) => (
@@ -159,9 +159,9 @@ export default function SessionDetailPage() {
159
159
  const recording = data?.recording;
160
160
 
161
161
  return (
162
- <div className="flex h-full min-h-0 w-full flex-col gap-3 overflow-hidden">
162
+ <div className="analytics-session-detail-page flex h-full min-h-0 w-full flex-col gap-3 overflow-hidden">
163
163
  {codeRequiredDialog}
164
- <div className="flex shrink-0 flex-col gap-3 md:flex-row md:items-center md:justify-between">
164
+ <div className="analytics-session-detail-header flex shrink-0 flex-col gap-3">
165
165
  <div className="flex min-w-0 items-center gap-2">
166
166
  <Button variant="ghost" size="sm" asChild className="shrink-0">
167
167
  <Link to="/sessions">
@@ -287,7 +287,7 @@ function ReplayWorkbench({
287
287
  }, [currentTime, markers]);
288
288
 
289
289
  return (
290
- <div className="grid h-full min-h-0 gap-3 xl:grid-cols-[minmax(0,1fr)_330px]">
290
+ <div className="analytics-session-detail-workbench grid h-full min-h-0 gap-3">
291
291
  <ReplayPlayer
292
292
  events={events}
293
293
  markers={markers}
@@ -923,7 +923,7 @@ function MarkerIcon({ kind }: { kind: ReplayMarker["kind"] }) {
923
923
 
924
924
  function DetailSkeleton() {
925
925
  return (
926
- <div className="grid min-h-0 flex-1 gap-3 xl:grid-cols-[minmax(0,1fr)_330px]">
926
+ <div className="analytics-session-detail-workbench grid min-h-0 flex-1 gap-3">
927
927
  <Skeleton className="h-full min-h-[420px] w-full" />
928
928
  <Skeleton className="h-full min-h-[420px] w-full" />
929
929
  </div>
@@ -108,11 +108,11 @@ export default function SessionsPage() {
108
108
  }
109
109
 
110
110
  return (
111
- <div className="mx-auto flex w-full max-w-7xl flex-col gap-4 px-4 py-5 md:px-6">
111
+ <div className="analytics-sessions-page mx-auto flex w-full max-w-7xl flex-col gap-4 px-4 py-5">
112
112
  <Card>
113
113
  <CardContent className="p-3">
114
- <div className="grid gap-2 lg:grid-cols-[150px_minmax(260px,1fr)_160px_auto_auto] lg:items-center">
115
- <div className="flex items-center gap-2 px-1 text-sm font-medium">
114
+ <div className="analytics-sessions-filter-grid grid gap-2">
115
+ <div className="analytics-sessions-filter-label flex items-center gap-2 px-1 text-sm font-medium">
116
116
  <IconFilter className="h-4 w-4 text-muted-foreground" />
117
117
  {t("sessions.segmentFilters")}
118
118
  </div>
@@ -171,7 +171,7 @@ export default function SessionsPage() {
171
171
  </Button>
172
172
  </div>
173
173
  {filtersOpen ? (
174
- <div className="mt-3 grid gap-3 border-t pt-3 lg:grid-cols-2">
174
+ <div className="analytics-sessions-filter-extra mt-3 grid gap-3 border-t pt-3">
175
175
  <div className="rounded-md border bg-muted/20 p-3">
176
176
  <div className="mb-2 text-[11px] font-semibold uppercase text-muted-foreground">
177
177
  {t("sessions.userFilters")}
@@ -229,7 +229,7 @@ export default function SessionsPage() {
229
229
  <button
230
230
  key={recording.id}
231
231
  type="button"
232
- className="grid w-full gap-3 px-4 py-3 text-left transition-colors hover:bg-muted/35 focus-visible:bg-muted/35 focus-visible:outline-none md:grid-cols-[104px_minmax(170px,0.85fr)_minmax(260px,1.25fr)_minmax(130px,0.55fr)] md:items-center"
232
+ className="analytics-session-row grid w-full gap-3 px-4 py-3 text-left transition-colors hover:bg-muted/35 focus-visible:bg-muted/35 focus-visible:outline-none"
233
233
  onClick={() => navigate(href)}
234
234
  aria-label={t("sessions.watchReplay")}
235
235
  >
@@ -248,7 +248,7 @@ export default function SessionsPage() {
248
248
  })}
249
249
  </span>
250
250
  </span>
251
- <span className="min-w-0">
251
+ <span className="analytics-session-path min-w-0">
252
252
  <span className="block truncate text-sm font-medium text-primary">
253
253
  {pathLabel(recording)}
254
254
  </span>
@@ -259,13 +259,13 @@ export default function SessionsPage() {
259
259
  shortId(recording.sessionId)}
260
260
  </span>
261
261
  </span>
262
- <span className="min-w-0 text-left md:text-right">
262
+ <span className="analytics-session-app-meta min-w-0 text-left">
263
263
  <span className="block truncate text-sm text-muted-foreground">
264
264
  {recording.app ||
265
265
  recording.template ||
266
266
  t("sessions.unknownApp")}
267
267
  </span>
268
- <span className="mt-1 flex flex-wrap gap-1.5 md:justify-end">
268
+ <span className="analytics-session-badges mt-1 flex flex-wrap gap-1.5">
269
269
  {recording.errorCount > 0 ? (
270
270
  <Badge variant="destructive">
271
271
  {t("sessions.errorCount", {
@@ -310,7 +310,7 @@ function EmptySessionsState() {
310
310
  return (
311
311
  <div className="p-6 lg:p-8">
312
312
  {showStorageHint ? <ReplayStorageHint /> : null}
313
- <div className="grid min-h-[380px] gap-6 lg:grid-cols-[minmax(0,0.9fr)_minmax(0,1.1fr)]">
313
+ <div className="analytics-sessions-empty-grid grid min-h-[380px] gap-6">
314
314
  <div className="flex flex-col justify-center gap-3">
315
315
  <div className="flex h-10 w-10 items-center justify-center rounded-md border bg-muted/40">
316
316
  <IconPlayerPlay className="h-5 w-5 text-primary" />
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: added
3
+ date: 2026-06-29
4
+ ---
5
+
6
+ Agents can search and read connected GitHub repositories when auditing tracking events.
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: fixed
3
+ date: 2026-06-29
4
+ ---
5
+
6
+ Sessions and explorer dashboard layouts now adapt cleanly when the agent sidebar narrows the app.
@@ -130,7 +130,9 @@ export function Layout({ children }: LayoutProps) {
130
130
  </div>
131
131
  {!hideHeader && <Header />}
132
132
  <InvitationBanner />
133
- <main className="min-h-0 flex-1 overflow-y-auto">{children}</main>
133
+ <main className="agent-native-app-main min-h-0 flex-1 overflow-y-auto">
134
+ {children}
135
+ </main>
134
136
  </div>
135
137
  </div>
136
138
  );
@@ -22,7 +22,7 @@ export function LibraryPresetGrid({
22
22
  if (!presets.length) return null;
23
23
 
24
24
  return (
25
- <div className="grid gap-3 md:grid-cols-2">
25
+ <div className="assets-library-preset-grid grid gap-3">
26
26
  {presets.map((preset, index) => {
27
27
  const Icon = PRESET_ICONS[index % PRESET_ICONS.length];
28
28
  const colors = preset.styleBrief.palette ?? [];
@@ -8,63 +8,63 @@
8
8
 
9
9
  :root {
10
10
  --background: 0 0% 100%;
11
- --foreground: 220 10% 10%;
11
+ --foreground: 0 0% 10%;
12
12
  --card: 0 0% 100%;
13
- --card-foreground: 220 10% 10%;
13
+ --card-foreground: 0 0% 10%;
14
14
  --popover: 0 0% 100%;
15
- --popover-foreground: 220 10% 10%;
16
- --primary: 220 10% 15%;
15
+ --popover-foreground: 0 0% 10%;
16
+ --primary: 0 0% 15%;
17
17
  --primary-foreground: 0 0% 100%;
18
- --secondary: 220 10% 95%;
19
- --secondary-foreground: 220 10% 15%;
20
- --muted: 220 10% 95%;
21
- --muted-foreground: 220 5% 45%;
22
- --accent: 220 10% 95%;
23
- --accent-foreground: 220 10% 15%;
18
+ --secondary: 0 0% 95%;
19
+ --secondary-foreground: 0 0% 15%;
20
+ --muted: 0 0% 95%;
21
+ --muted-foreground: 0 0% 45%;
22
+ --accent: 0 0% 95%;
23
+ --accent-foreground: 0 0% 15%;
24
24
  --destructive: 0 84% 60%;
25
25
  --destructive-foreground: 0 0% 98%;
26
- --border: 220 10% 90%;
27
- --input: 220 10% 90%;
28
- --ring: 220 10% 40%;
26
+ --border: 0 0% 90%;
27
+ --input: 0 0% 90%;
28
+ --ring: 0 0% 40%;
29
29
  --radius: 0.5rem;
30
- --sidebar-background: 220 10% 97%;
31
- --sidebar-foreground: 220 5% 45%;
32
- --sidebar-primary: 220 10% 15%;
30
+ --sidebar-background: 0 0% 97%;
31
+ --sidebar-foreground: 0 0% 45%;
32
+ --sidebar-primary: 0 0% 15%;
33
33
  --sidebar-primary-foreground: 0 0% 100%;
34
- --sidebar-accent: 220 10% 95%;
35
- --sidebar-accent-foreground: 220 10% 15%;
36
- --sidebar-border: 220 10% 90%;
37
- --sidebar-ring: 220 10% 40%;
34
+ --sidebar-accent: 0 0% 95%;
35
+ --sidebar-accent-foreground: 0 0% 15%;
36
+ --sidebar-border: 0 0% 90%;
37
+ --sidebar-ring: 0 0% 40%;
38
38
  }
39
39
 
40
40
  .dark {
41
- --background: 220 6% 6%;
41
+ --background: 0 0% 13%;
42
42
  --foreground: 0 0% 90%;
43
- --card: 220 5% 6%;
43
+ --card: 0 0% 15%;
44
44
  --card-foreground: 0 0% 90%;
45
- --popover: 220 5% 6%;
45
+ --popover: 0 0% 15%;
46
46
  --popover-foreground: 0 0% 90%;
47
47
  --primary: 0 0% 75%;
48
- --primary-foreground: 220 6% 6%;
49
- --secondary: 220 4% 12%;
48
+ --primary-foreground: 0 0% 10%;
49
+ --secondary: 0 0% 18%;
50
50
  --secondary-foreground: 0 0% 90%;
51
- --muted: 220 4% 10%;
52
- --muted-foreground: 220 4% 60%;
53
- --accent: 220 4% 13%;
51
+ --muted: 0 0% 16%;
52
+ --muted-foreground: 0 0% 60%;
53
+ --accent: 0 0% 18%;
54
54
  --accent-foreground: 0 0% 90%;
55
55
  --destructive: 0 63% 51%;
56
56
  --destructive-foreground: 0 0% 98%;
57
- --border: 220 4% 14%;
58
- --input: 0 0% 20%;
57
+ --border: 0 0% 24%;
58
+ --input: 0 0% 24%;
59
59
  --ring: 0 0% 60%;
60
60
  --radius: 0.5rem;
61
- --sidebar-background: 220 6% 4%;
62
- --sidebar-foreground: 220 4% 60%;
61
+ --sidebar-background: 0 0% 10%;
62
+ --sidebar-foreground: 0 0% 60%;
63
63
  --sidebar-primary: 0 0% 75%;
64
- --sidebar-primary-foreground: 220 6% 6%;
65
- --sidebar-accent: 220 4% 10%;
64
+ --sidebar-primary-foreground: 0 0% 10%;
65
+ --sidebar-accent: 0 0% 16%;
66
66
  --sidebar-accent-foreground: 0 0% 90%;
67
- --sidebar-border: 220 4% 10%;
67
+ --sidebar-border: 0 0% 20%;
68
68
  --sidebar-ring: 0 0% 60%;
69
69
  }
70
70
 
@@ -165,6 +165,70 @@
165
165
  outline-offset: 2px;
166
166
  }
167
167
 
168
+ @container agent-native-main (min-width: 940px) {
169
+ .assets-asset-detail-layout {
170
+ grid-template-columns: 360px minmax(0, 1fr);
171
+ }
172
+
173
+ .assets-asset-detail-sidebar {
174
+ border-bottom-width: 0;
175
+ border-inline-end-width: 1px;
176
+ }
177
+ }
178
+
179
+ @container agent-native-main (min-width: 640px) {
180
+ .assets-library-dense-grid,
181
+ .assets-library-grid {
182
+ grid-template-columns: repeat(3, minmax(0, 1fr));
183
+ }
184
+
185
+ .assets-library-preset-grid {
186
+ grid-template-columns: repeat(2, minmax(0, 1fr));
187
+ }
188
+
189
+ .assets-brand-kit-item-grid {
190
+ grid-template-columns: repeat(2, minmax(0, 1fr));
191
+ }
192
+ }
193
+
194
+ @container agent-native-main (min-width: 980px) {
195
+ .assets-brand-kit-preview-grid {
196
+ grid-template-columns: minmax(0, 1fr) 284px;
197
+ }
198
+
199
+ .assets-live-candidates-grid {
200
+ grid-template-columns: minmax(0, 1fr) minmax(18rem, 22rem);
201
+ }
202
+
203
+ .assets-brand-kit-settings-grid {
204
+ grid-template-columns: minmax(0, 1fr) 320px;
205
+ }
206
+
207
+ .assets-library-grid {
208
+ grid-template-columns: repeat(4, minmax(0, 1fr));
209
+ }
210
+ }
211
+
212
+ @container agent-native-main (min-width: 1180px) {
213
+ .assets-library-dense-grid {
214
+ grid-template-columns: repeat(4, minmax(0, 1fr));
215
+ }
216
+
217
+ .assets-brand-kit-item-grid {
218
+ grid-template-columns: repeat(3, minmax(0, 1fr));
219
+ }
220
+ }
221
+
222
+ @container agent-native-main (min-width: 1320px) {
223
+ .assets-library-grid {
224
+ grid-template-columns: repeat(5, minmax(0, 1fr));
225
+ }
226
+
227
+ .assets-brand-kit-item-grid {
228
+ grid-template-columns: repeat(4, minmax(0, 1fr));
229
+ }
230
+ }
231
+
168
232
  .assets-create-chat-panel
169
233
  [data-agent-empty-state="centered"]
170
234
  .agent-chat-scroll {
@@ -134,8 +134,8 @@ export default function AssetDetailPage() {
134
134
  }
135
135
 
136
136
  return (
137
- <div className="grid h-full min-h-0 grid-cols-1 lg:grid-cols-[360px_minmax(0,1fr)]">
138
- <aside className="overflow-y-auto border-b border-border bg-background p-5 lg:border-b-0 lg:border-r">
137
+ <div className="assets-asset-detail-layout grid h-full min-h-0 grid-cols-1">
138
+ <aside className="assets-asset-detail-sidebar overflow-y-auto border-b border-border bg-background p-5">
139
139
  <div className="mb-4">
140
140
  <Button variant="ghost" size="sm" asChild className="-ml-2 gap-2">
141
141
  <Link to={libraryBackPath}>