@agent-native/core 0.132.2 → 0.133.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (437) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +181 -0
  3. package/corpus/core/package.json +1 -1
  4. package/corpus/core/src/a2a/correlation.ts +11 -1
  5. package/corpus/core/src/a2a/types.ts +11 -3
  6. package/corpus/core/src/agent/engine/ai-sdk-engine.ts +61 -46
  7. package/corpus/core/src/agent/engine/builder-engine.ts +22 -10
  8. package/corpus/core/src/agent/engine/error-detail.ts +184 -3
  9. package/corpus/core/src/agent/engine/failure-taxonomy.ts +123 -0
  10. package/corpus/core/src/agent/engine/index.ts +8 -0
  11. package/corpus/core/src/agent/engine/registry.ts +92 -8
  12. package/corpus/core/src/agent/engine/translate-ai-sdk.ts +17 -2
  13. package/corpus/core/src/agent/production-agent.ts +13 -33
  14. package/corpus/core/src/agent/run-loop-with-resume.ts +1 -1
  15. package/corpus/core/src/agent/run-manager.ts +43 -14
  16. package/corpus/core/src/agent/run-store.ts +49 -7
  17. package/corpus/core/src/agent/thread-data-builder.ts +36 -4
  18. package/corpus/core/src/cli/templates-meta.ts +13 -0
  19. package/corpus/core/src/cli/workspace-dev.ts +1 -0
  20. package/corpus/core/src/client/error-format.ts +12 -0
  21. package/corpus/core/src/credentials/index.ts +51 -12
  22. package/corpus/core/src/extensions/url-safety.ts +46 -12
  23. package/corpus/core/src/integrations/adapters/slack.ts +32 -10
  24. package/corpus/core/src/integrations/google-docs-poller.ts +12 -1
  25. package/corpus/core/src/integrations/installations-store.ts +30 -0
  26. package/corpus/core/src/integrations/plugin.ts +5 -5
  27. package/corpus/core/src/integrations/types.ts +7 -0
  28. package/corpus/core/src/integrations/webhook-handler.ts +24 -1
  29. package/corpus/core/src/jobs/background-automation-runner.ts +38 -1
  30. package/corpus/core/src/provider-api/index.ts +8 -2
  31. package/corpus/core/src/scripts/call-agent.ts +6 -0
  32. package/corpus/core/src/server/agent-chat-plugin.ts +30 -9
  33. package/corpus/core/src/server/agent-discovery.ts +2 -0
  34. package/corpus/core/src/server/builder-design-systems.ts +21 -0
  35. package/corpus/core/src/server/credential-provider.ts +51 -12
  36. package/corpus/core/src/server/index.ts +1 -0
  37. package/corpus/core/src/server/onboarding-html.ts +37 -2
  38. package/corpus/core/src/shared/reasoning-effort.ts +1 -1
  39. package/corpus/core/src/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +11 -0
  40. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +6 -2
  41. package/corpus/templates/assets/app/components/layout/Sidebar.tsx +39 -19
  42. package/corpus/templates/assets/changelog/2026-07-31-the-agent-native-logo-stays-visible-when-the-sidebar-is-coll.md +6 -0
  43. package/corpus/templates/brain/app/components/layout/Sidebar.tsx +30 -3
  44. package/corpus/templates/brain/changelog/2026-07-31-clicking-the-agent-native-logo-now-toggles-the-app-sidebar.md +6 -0
  45. package/corpus/templates/calendar/app/components/layout/AppLayout.tsx +1 -1
  46. package/corpus/templates/calendar/app/components/layout/Sidebar.tsx +54 -25
  47. package/corpus/templates/calendar/changelog/2026-07-31-the-agent-native-logo-stays-visible-when-the-sidebar-is-coll.md +6 -0
  48. package/corpus/templates/chat/app/components/layout/Sidebar.tsx +30 -3
  49. package/corpus/templates/chat/changelog/2026-07-31-clicking-the-agent-native-logo-now-toggles-the-app-sidebar.md +6 -0
  50. package/corpus/templates/clips/app/components/library/library-layout.tsx +37 -21
  51. package/corpus/templates/clips/changelog/2026-07-31-the-agent-native-logo-stays-visible-when-the-sidebar-is-coll.md +6 -0
  52. package/corpus/templates/clips/desktop/src/hooks/useMediaDevices.ts +1 -1
  53. package/corpus/templates/clips/desktop/src/lib/media-capture-constraints.ts +1 -1
  54. package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +34 -17
  55. package/corpus/templates/content/changelog/2026-07-31-the-agent-native-logo-stays-visible-when-the-sidebar-is-coll.md +6 -0
  56. package/corpus/templates/design/.agents/skills/design-systems/SKILL.md +6 -2
  57. package/corpus/templates/design/actions/create-design-system.ts +1 -0
  58. package/corpus/templates/design/actions/set-default-design-system.ts +34 -26
  59. package/corpus/templates/design/app/components/layout/Sidebar.tsx +21 -4
  60. package/corpus/templates/design/app/i18n-data.ts +39 -0
  61. package/corpus/templates/design/app/pages/DesignSystemSetup.tsx +229 -12
  62. package/corpus/templates/design/app/pages/DesignSystems.tsx +10 -4
  63. package/corpus/templates/design/changelog/2026-07-31-clicking-the-agent-native-logo-now-toggles-the-app-sidebar.md +6 -0
  64. package/corpus/templates/design/changelog/2026-07-31-design-system-indexing-keeps-your-chosen-name-when-you-uploa.md +6 -0
  65. package/corpus/templates/design/server/lib/builder-design-system-proxy.ts +19 -4
  66. package/corpus/templates/dispatch/AGENTS.md +4 -0
  67. package/corpus/templates/factory/.agents/skills/actions/SKILL.md +562 -0
  68. package/corpus/templates/factory/.agents/skills/adding-a-feature/SKILL.md +198 -0
  69. package/corpus/templates/factory/.agents/skills/agent-native-docs/SKILL.md +115 -0
  70. package/corpus/templates/factory/.agents/skills/agent-native-toolkit/SKILL.md +182 -0
  71. package/corpus/templates/factory/.agents/skills/capture-learnings/SKILL.md +89 -0
  72. package/corpus/templates/factory/.agents/skills/create-skill/SKILL.md +221 -0
  73. package/corpus/templates/factory/.agents/skills/customizing-agent-native/SKILL.md +220 -0
  74. package/corpus/templates/factory/.agents/skills/delegate-to-agent/SKILL.md +263 -0
  75. package/corpus/templates/factory/.agents/skills/factory-graphs/SKILL.md +52 -0
  76. package/corpus/templates/factory/.agents/skills/feature-flags/SKILL.md +169 -0
  77. package/corpus/templates/factory/.agents/skills/frontend-design/SKILL.md +174 -0
  78. package/corpus/templates/factory/.agents/skills/real-time-sync/SKILL.md +232 -0
  79. package/corpus/templates/factory/.agents/skills/security/SKILL.md +324 -0
  80. package/corpus/templates/factory/.agents/skills/self-modifying-code/SKILL.md +119 -0
  81. package/corpus/templates/factory/.agents/skills/shadcn-ui/SKILL.md +123 -0
  82. package/corpus/templates/factory/.agents/skills/sharing/SKILL.md +232 -0
  83. package/corpus/templates/factory/.agents/skills/storing-data/SKILL.md +178 -0
  84. package/corpus/templates/factory/.agents/skills/upgrade-agent-native/SKILL.md +122 -0
  85. package/corpus/templates/factory/.env.example +24 -0
  86. package/corpus/templates/factory/.ignore +0 -0
  87. package/corpus/templates/factory/.oxfmtrc.json +8 -0
  88. package/corpus/templates/factory/AGENTS.md +90 -0
  89. package/corpus/templates/factory/CHANGELOG.md +10 -0
  90. package/corpus/templates/factory/DEVELOPING.md +185 -0
  91. package/corpus/templates/factory/README.md +64 -0
  92. package/corpus/templates/factory/_gitignore +42 -0
  93. package/corpus/templates/factory/actions/add-factory-comment.ts +55 -0
  94. package/corpus/templates/factory/actions/approve-factory-item.ts +214 -0
  95. package/corpus/templates/factory/actions/babysit-pull-request.ts +126 -0
  96. package/corpus/templates/factory/actions/evaluate-triage-item.ts +172 -0
  97. package/corpus/templates/factory/actions/get-factory-graph.ts +62 -0
  98. package/corpus/templates/factory/actions/get-triage-config.ts +42 -0
  99. package/corpus/templates/factory/actions/get-triage-item.ts +74 -0
  100. package/corpus/templates/factory/actions/hello.ts +13 -0
  101. package/corpus/templates/factory/actions/ingest-github-observation.ts +100 -0
  102. package/corpus/templates/factory/actions/list-factories.ts +40 -0
  103. package/corpus/templates/factory/actions/list-factory-comments.ts +40 -0
  104. package/corpus/templates/factory/actions/list-triage-items.ts +85 -0
  105. package/corpus/templates/factory/actions/list-triage-rules.ts +44 -0
  106. package/corpus/templates/factory/actions/navigate.ts +41 -0
  107. package/corpus/templates/factory/actions/poll-slack-channel.ts +118 -0
  108. package/corpus/templates/factory/actions/reconcile-triage-run.ts +179 -0
  109. package/corpus/templates/factory/actions/record-triage-feedback.ts +58 -0
  110. package/corpus/templates/factory/actions/run.ts +2 -0
  111. package/corpus/templates/factory/actions/save-factory-graph.ts +129 -0
  112. package/corpus/templates/factory/actions/save-triage-config.ts +67 -0
  113. package/corpus/templates/factory/actions/save-triage-rule.ts +89 -0
  114. package/corpus/templates/factory/actions/suggest-factory-rules.ts +70 -0
  115. package/corpus/templates/factory/actions/view-screen.ts +73 -0
  116. package/corpus/templates/factory/app/components/factory/FactoryCanvas.tsx +441 -0
  117. package/corpus/templates/factory/app/components/factory/FactoryInspector.tsx +388 -0
  118. package/corpus/templates/factory/app/components/layout/Header.tsx +60 -0
  119. package/corpus/templates/factory/app/components/layout/Layout.tsx +190 -0
  120. package/corpus/templates/factory/app/components/layout/Sidebar.tsx +538 -0
  121. package/corpus/templates/factory/app/components/triage/triage-status-pill.tsx +28 -0
  122. package/corpus/templates/factory/app/components/ui/button.tsx +1 -0
  123. package/corpus/templates/factory/app/components/ui/card.tsx +1 -0
  124. package/corpus/templates/factory/app/components/ui/dropdown-menu.tsx +1 -0
  125. package/corpus/templates/factory/app/components/ui/input.tsx +1 -0
  126. package/corpus/templates/factory/app/components/ui/label.tsx +1 -0
  127. package/corpus/templates/factory/app/components/ui/sheet.tsx +1 -0
  128. package/corpus/templates/factory/app/components/ui/textarea.tsx +1 -0
  129. package/corpus/templates/factory/app/components/ui/toolkit-provider.tsx +17 -0
  130. package/corpus/templates/factory/app/components/ui/tooltip.tsx +1 -0
  131. package/corpus/templates/factory/app/design-system.ts +3 -0
  132. package/corpus/templates/factory/app/entry.client.tsx +22 -0
  133. package/corpus/templates/factory/app/entry.server.tsx +10 -0
  134. package/corpus/templates/factory/app/global.css +93 -0
  135. package/corpus/templates/factory/app/hooks/use-navigation-state.ts +113 -0
  136. package/corpus/templates/factory/app/i18n/en-US.ts +211 -0
  137. package/corpus/templates/factory/app/i18n/index.ts +34 -0
  138. package/corpus/templates/factory/app/i18n-data.ts +556 -0
  139. package/corpus/templates/factory/app/lib/agent-page.tsx +49 -0
  140. package/corpus/templates/factory/app/lib/app-config.ts +11 -0
  141. package/corpus/templates/factory/app/lib/tab-id.ts +1 -0
  142. package/corpus/templates/factory/app/lib/utils.ts +1 -0
  143. package/corpus/templates/factory/app/root.tsx +175 -0
  144. package/corpus/templates/factory/app/routes/_index.tsx +94 -0
  145. package/corpus/templates/factory/app/routes/agent.tsx +24 -0
  146. package/corpus/templates/factory/app/routes/chat.$threadId.tsx +1 -0
  147. package/corpus/templates/factory/app/routes/database.tsx +17 -0
  148. package/corpus/templates/factory/app/routes/extensions.$id.$slug.tsx +2 -0
  149. package/corpus/templates/factory/app/routes/extensions.$id.tsx +11 -0
  150. package/corpus/templates/factory/app/routes/extensions._index.tsx +11 -0
  151. package/corpus/templates/factory/app/routes/extensions.tsx +5 -0
  152. package/corpus/templates/factory/app/routes/factory.tsx +1003 -0
  153. package/corpus/templates/factory/app/routes/observability.tsx +19 -0
  154. package/corpus/templates/factory/app/routes/settings.tsx +89 -0
  155. package/corpus/templates/factory/app/routes/team.tsx +11 -0
  156. package/corpus/templates/factory/app/routes.ts +4 -0
  157. package/corpus/templates/factory/app/vite-env.d.ts +6 -0
  158. package/corpus/templates/factory/changelog/2026-06-24-a-new-settings-page-gives-quick-access-to-language-workspace.md +6 -0
  159. package/corpus/templates/factory/changelog/2026-06-24-added-a-language-picker-and-localized-app-chrome-for-support.md +6 -0
  160. package/corpus/templates/factory/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
  161. package/corpus/templates/factory/changelog/2026-06-28-left-sidebar-collapse-motion-and-footer-chrome-are-quieter.md +6 -0
  162. package/corpus/templates/factory/changelog/2026-06-29-chat-layouts-adapt-when-the-agent-sidebar-is-open.md +6 -0
  163. package/corpus/templates/factory/changelog/2026-07-08-settings-are-cleaner-and-searchable.md +5 -0
  164. package/corpus/templates/factory/changelog/2026-07-10-chat-now-makes-ai-connection-setup-clear-without-shifting-th.md +6 -0
  165. package/corpus/templates/factory/changelog/2026-07-13-a-full-agent-page-now-brings-context-files-connections-jobs-.md +6 -0
  166. package/corpus/templates/factory/changelog/2026-07-14-chat-opens-reliably-on-hosted-deployments-instead-of-failing.md +6 -0
  167. package/corpus/templates/factory/changelog/2026-07-14-fixed-chat-template-startup-with-older-core-versions.md +6 -0
  168. package/corpus/templates/factory/changelog/2026-07-15-chat-navigation-focuses-on-chat-and-agent.md +6 -0
  169. package/corpus/templates/factory/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
  170. package/corpus/templates/factory/changelog/2026-07-22-compact-sidebar-footer.md +6 -0
  171. package/corpus/templates/factory/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +6 -0
  172. package/corpus/templates/factory/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
  173. package/corpus/templates/factory/changelog/2026-07-22-recent-chats-are-easier-to-scan-and-expand.md +6 -0
  174. package/corpus/templates/factory/changelog/2026-07-23-full-page-chat-is-better-centered-with-quieter-chat-history-.md +6 -0
  175. package/corpus/templates/factory/changelog/2026-07-24-borderless-secondary-surfaces.md +6 -0
  176. package/corpus/templates/factory/changelog/2026-07-24-sidebar-footer-controls-follow-a-consistent-order.md +6 -0
  177. package/corpus/templates/factory/changelog/2026-07-25-settings-navigation-now-keeps-manage-agent-as-a-dedicated-li.md +6 -0
  178. package/corpus/templates/factory/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  179. package/corpus/templates/factory/changelog/2026-07-31-added-an-inspectable-observe-only-factory-queue-for-slack-.md +6 -0
  180. package/corpus/templates/factory/changelog/2026-07-31-clicking-the-agent-native-logo-now-toggles-the-app-sidebar.md +6 -0
  181. package/corpus/templates/factory/components.json +20 -0
  182. package/corpus/templates/factory/data/sync-config.json +1 -0
  183. package/corpus/templates/factory/learnings.defaults.md +5 -0
  184. package/corpus/templates/factory/netlify.toml +10 -0
  185. package/corpus/templates/factory/package.json +105 -0
  186. package/corpus/templates/factory/public/agent-native-icon-dark.svg +10 -0
  187. package/corpus/templates/factory/public/agent-native-icon-light.svg +10 -0
  188. package/corpus/templates/factory/public/agent-native-logo-dark.svg +21 -0
  189. package/corpus/templates/factory/public/agent-native-logo-light.svg +21 -0
  190. package/corpus/templates/factory/public/favicon.svg +1 -0
  191. package/corpus/templates/factory/public/icon-180.svg +1 -0
  192. package/corpus/templates/factory/public/icon-192.svg +1 -0
  193. package/corpus/templates/factory/public/icon-512.svg +1 -0
  194. package/corpus/templates/factory/public/manifest.json +21 -0
  195. package/corpus/templates/factory/react-router.config.ts +7 -0
  196. package/corpus/templates/factory/server/connectors/credentials.ts +129 -0
  197. package/corpus/templates/factory/server/connectors/slack.ts +129 -0
  198. package/corpus/templates/factory/server/db/index.ts +6 -0
  199. package/corpus/templates/factory/server/db/schema.ts +193 -0
  200. package/corpus/templates/factory/server/factory-graph/contracts.ts +212 -0
  201. package/corpus/templates/factory/server/factory-graph/store.ts +121 -0
  202. package/corpus/templates/factory/server/lib/require-workspace-member.ts +55 -0
  203. package/corpus/templates/factory/server/middleware/auth.ts +15 -0
  204. package/corpus/templates/factory/server/plugins/agent-chat.ts +58 -0
  205. package/corpus/templates/factory/server/plugins/auth.ts +14 -0
  206. package/corpus/templates/factory/server/plugins/factory-migrations.ts +247 -0
  207. package/corpus/templates/factory/server/plugins/factory-scheduler-job.ts +116 -0
  208. package/corpus/templates/factory/server/plugins/integrations.ts +46 -0
  209. package/corpus/templates/factory/server/routes/[...page].get.ts +5 -0
  210. package/corpus/templates/factory/server/routes/_agent-native/factory/builder-callback.post.ts +116 -0
  211. package/corpus/templates/factory/server/triage/ai-services-git.ts +197 -0
  212. package/corpus/templates/factory/server/triage/builder-executor.ts +118 -0
  213. package/corpus/templates/factory/server/triage/contracts.ts +164 -0
  214. package/corpus/templates/factory/server/triage/github-ingestion.ts +35 -0
  215. package/corpus/templates/factory/server/triage/guards.ts +121 -0
  216. package/corpus/templates/factory/server/triage/ids.ts +27 -0
  217. package/corpus/templates/factory/server/triage/pr-babysit.ts +100 -0
  218. package/corpus/templates/factory/server/triage/pr-monitor.ts +220 -0
  219. package/corpus/templates/factory/server/triage/slack-client.ts +55 -0
  220. package/corpus/templates/factory/server/triage/slack-poller.ts +152 -0
  221. package/corpus/templates/factory/ssr-entry.ts +15 -0
  222. package/corpus/templates/factory/tsconfig.json +21 -0
  223. package/corpus/templates/factory/vite.config.ts +19 -0
  224. package/corpus/templates/forms/app/components/layout/Sidebar.tsx +55 -5
  225. package/corpus/templates/forms/changelog/2026-07-31-the-agent-native-logo-stays-visible-when-the-sidebar-is-coll.md +6 -0
  226. package/corpus/templates/macros/app/components/layout/AppLayout.tsx +6 -2
  227. package/corpus/templates/plan/app/components/layout/Sidebar.tsx +21 -6
  228. package/corpus/templates/plan/changelog/2026-07-31-clicking-the-agent-native-logo-now-toggles-the-app-sidebar.md +6 -0
  229. package/corpus/templates/slides/.agents/skills/create-deck/SKILL.md +12 -0
  230. package/corpus/templates/slides/.agents/skills/design-systems/SKILL.md +9 -0
  231. package/corpus/templates/slides/.agents/skills/slide-editing/SKILL.md +11 -0
  232. package/corpus/templates/slides/AGENTS.md +5 -6
  233. package/corpus/templates/slides/actions/_await-fit-check.ts +20 -10
  234. package/corpus/templates/slides/actions/add-slide.ts +17 -4
  235. package/corpus/templates/slides/actions/create-design-system.ts +16 -4
  236. package/corpus/templates/slides/actions/delete-design-system.ts +18 -2
  237. package/corpus/templates/slides/actions/get-layout-overflows.ts +88 -0
  238. package/corpus/templates/slides/actions/import-file.ts +1 -0
  239. package/corpus/templates/slides/actions/index-design-system-with-builder.ts +8 -0
  240. package/corpus/templates/slides/actions/patch-deck.ts +48 -16
  241. package/corpus/templates/slides/actions/set-default-design-system.ts +49 -19
  242. package/corpus/templates/slides/actions/update-slide.ts +13 -3
  243. package/corpus/templates/slides/actions/view-screen.ts +87 -10
  244. package/corpus/templates/slides/app/components/deck/SlideRenderer.tsx +155 -28
  245. package/corpus/templates/slides/app/components/design-system/DesignSystemCard.tsx +21 -17
  246. package/corpus/templates/slides/app/components/design-system/DesignSystemSetup.tsx +849 -341
  247. package/corpus/templates/slides/app/components/editor/EditorSidebar.tsx +102 -2
  248. package/corpus/templates/slides/app/components/editor/PromptDialog.tsx +13 -16
  249. package/corpus/templates/slides/app/components/editor/SlideEditor.tsx +60 -12
  250. package/corpus/templates/slides/app/components/editor/SlideOverflowWarning.tsx +11 -1
  251. package/corpus/templates/slides/app/components/layout/Sidebar.tsx +66 -19
  252. package/corpus/templates/slides/app/i18n/en-US.ts +23 -0
  253. package/corpus/templates/slides/app/lib/normalize-slide-padding.ts +8 -15
  254. package/corpus/templates/slides/app/pages/DeckEditor.tsx +4 -3
  255. package/corpus/templates/slides/app/pages/DesignSystems.tsx +4 -3
  256. package/corpus/templates/slides/app/pages/Index.tsx +1 -1
  257. package/corpus/templates/slides/changelog/2026-07-31-design-system-details-now-show-their-source-and-indexing-sta.md +6 -0
  258. package/corpus/templates/slides/changelog/2026-07-31-design-system-indexing-keeps-your-chosen-name-when-you-uploa.md +6 -0
  259. package/corpus/templates/slides/changelog/2026-07-31-design-system-setup-keeps-focus-rings-visible-and-uses-a-sim.md +6 -0
  260. package/corpus/templates/slides/changelog/2026-07-31-skip-prompt-is-now-available-in-the-new-deck-prompt-header.md +6 -0
  261. package/corpus/templates/slides/changelog/2026-07-31-slides-now-detect-real-text-and-box-overflow-across-the-deck.md +6 -0
  262. package/corpus/templates/slides/changelog/2026-07-31-the-agent-native-logo-stays-visible-when-the-sidebar-is-coll.md +6 -0
  263. package/corpus/templates/slides/server/handlers/design-systems.ts +1 -0
  264. package/corpus/templates/slides/server/handlers/index-design-system-sources.ts +1 -0
  265. package/corpus/templates/slides/server/lib/builder-design-system-proxy.ts +23 -4
  266. package/corpus/templates/slides/server/plugins/agent-chat.ts +5 -0
  267. package/corpus/templates/slides/server/plugins/creative-context.ts +16 -3
  268. package/corpus/templates/slides/server/workspace-defaults.ts +5 -1
  269. package/corpus/templates/slides/shared/slide-fit.ts +26 -0
  270. package/corpus/templates/tasks/app/components/layout/Sidebar.tsx +30 -3
  271. package/corpus/templates/tasks/changelog/2026-07-31-clicking-the-agent-native-logo-now-toggles-the-app-sidebar.md +6 -0
  272. package/dist/a2a/correlation.d.ts +4 -1
  273. package/dist/a2a/correlation.d.ts.map +1 -1
  274. package/dist/a2a/correlation.js +8 -1
  275. package/dist/a2a/correlation.js.map +1 -1
  276. package/dist/a2a/types.d.ts +11 -3
  277. package/dist/a2a/types.d.ts.map +1 -1
  278. package/dist/a2a/types.js.map +1 -1
  279. package/dist/agent/engine/ai-sdk-engine.d.ts.map +1 -1
  280. package/dist/agent/engine/ai-sdk-engine.js +51 -41
  281. package/dist/agent/engine/ai-sdk-engine.js.map +1 -1
  282. package/dist/agent/engine/builder-engine.d.ts.map +1 -1
  283. package/dist/agent/engine/builder-engine.js +18 -8
  284. package/dist/agent/engine/builder-engine.js.map +1 -1
  285. package/dist/agent/engine/error-detail.d.ts +61 -0
  286. package/dist/agent/engine/error-detail.d.ts.map +1 -1
  287. package/dist/agent/engine/error-detail.js +145 -3
  288. package/dist/agent/engine/error-detail.js.map +1 -1
  289. package/dist/agent/engine/failure-taxonomy.d.ts +24 -0
  290. package/dist/agent/engine/failure-taxonomy.d.ts.map +1 -0
  291. package/dist/agent/engine/failure-taxonomy.js +88 -0
  292. package/dist/agent/engine/failure-taxonomy.js.map +1 -0
  293. package/dist/agent/engine/index.d.ts +2 -1
  294. package/dist/agent/engine/index.d.ts.map +1 -1
  295. package/dist/agent/engine/index.js +2 -1
  296. package/dist/agent/engine/index.js.map +1 -1
  297. package/dist/agent/engine/registry.d.ts +16 -0
  298. package/dist/agent/engine/registry.d.ts.map +1 -1
  299. package/dist/agent/engine/registry.js +71 -6
  300. package/dist/agent/engine/registry.js.map +1 -1
  301. package/dist/agent/engine/translate-ai-sdk.d.ts.map +1 -1
  302. package/dist/agent/engine/translate-ai-sdk.js +14 -2
  303. package/dist/agent/engine/translate-ai-sdk.js.map +1 -1
  304. package/dist/agent/production-agent.d.ts.map +1 -1
  305. package/dist/agent/production-agent.js +13 -24
  306. package/dist/agent/production-agent.js.map +1 -1
  307. package/dist/agent/run-loop-with-resume.js +1 -1
  308. package/dist/agent/run-loop-with-resume.js.map +1 -1
  309. package/dist/agent/run-manager.d.ts.map +1 -1
  310. package/dist/agent/run-manager.js +39 -10
  311. package/dist/agent/run-manager.js.map +1 -1
  312. package/dist/agent/run-store.d.ts +10 -0
  313. package/dist/agent/run-store.d.ts.map +1 -1
  314. package/dist/agent/run-store.js +38 -6
  315. package/dist/agent/run-store.js.map +1 -1
  316. package/dist/agent/thread-data-builder.d.ts.map +1 -1
  317. package/dist/agent/thread-data-builder.js +28 -4
  318. package/dist/agent/thread-data-builder.js.map +1 -1
  319. package/dist/cli/templates-meta.d.ts.map +1 -1
  320. package/dist/cli/templates-meta.js +13 -0
  321. package/dist/cli/templates-meta.js.map +1 -1
  322. package/dist/cli/workspace-dev.d.ts.map +1 -1
  323. package/dist/cli/workspace-dev.js +1 -0
  324. package/dist/cli/workspace-dev.js.map +1 -1
  325. package/dist/client/error-format.d.ts.map +1 -1
  326. package/dist/client/error-format.js +10 -0
  327. package/dist/client/error-format.js.map +1 -1
  328. package/dist/collab/struct-routes.d.ts +1 -1
  329. package/dist/credentials/index.d.ts +9 -2
  330. package/dist/credentials/index.d.ts.map +1 -1
  331. package/dist/credentials/index.js +50 -8
  332. package/dist/credentials/index.js.map +1 -1
  333. package/dist/extensions/url-safety.d.ts.map +1 -1
  334. package/dist/extensions/url-safety.js +38 -12
  335. package/dist/extensions/url-safety.js.map +1 -1
  336. package/dist/file-upload/actions/upload-image.d.ts +1 -1
  337. package/dist/integrations/adapters/slack.d.ts.map +1 -1
  338. package/dist/integrations/adapters/slack.js +25 -8
  339. package/dist/integrations/adapters/slack.js.map +1 -1
  340. package/dist/integrations/google-docs-poller.d.ts.map +1 -1
  341. package/dist/integrations/google-docs-poller.js +13 -1
  342. package/dist/integrations/google-docs-poller.js.map +1 -1
  343. package/dist/integrations/installations-store.d.ts +10 -0
  344. package/dist/integrations/installations-store.d.ts.map +1 -1
  345. package/dist/integrations/installations-store.js +24 -0
  346. package/dist/integrations/installations-store.js.map +1 -1
  347. package/dist/integrations/plugin.d.ts.map +1 -1
  348. package/dist/integrations/plugin.js +6 -5
  349. package/dist/integrations/plugin.js.map +1 -1
  350. package/dist/integrations/types.d.ts +7 -0
  351. package/dist/integrations/types.d.ts.map +1 -1
  352. package/dist/integrations/types.js.map +1 -1
  353. package/dist/integrations/webhook-handler.d.ts.map +1 -1
  354. package/dist/integrations/webhook-handler.js +16 -1
  355. package/dist/integrations/webhook-handler.js.map +1 -1
  356. package/dist/jobs/background-automation-runner.d.ts.map +1 -1
  357. package/dist/jobs/background-automation-runner.js +35 -2
  358. package/dist/jobs/background-automation-runner.js.map +1 -1
  359. package/dist/mcp/screen-memory-stdio.d.ts +7 -7
  360. package/dist/mcp/screen-memory-stdio.d.ts.map +1 -1
  361. package/dist/notifications/routes.d.ts +1 -1
  362. package/dist/observability/routes.d.ts +1 -1
  363. package/dist/provider-api/actions/custom-provider-registration.d.ts +14 -14
  364. package/dist/provider-api/actions/provider-api.d.ts +8 -8
  365. package/dist/provider-api/index.js +7 -3
  366. package/dist/provider-api/index.js.map +1 -1
  367. package/dist/resources/handlers.d.ts +1 -1
  368. package/dist/scripts/call-agent.d.ts.map +1 -1
  369. package/dist/scripts/call-agent.js +6 -1
  370. package/dist/scripts/call-agent.js.map +1 -1
  371. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  372. package/dist/server/agent-chat-plugin.js +25 -7
  373. package/dist/server/agent-chat-plugin.js.map +1 -1
  374. package/dist/server/agent-discovery.d.ts +2 -0
  375. package/dist/server/agent-discovery.d.ts.map +1 -1
  376. package/dist/server/agent-discovery.js.map +1 -1
  377. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  378. package/dist/server/builder-design-systems.d.ts +4 -1
  379. package/dist/server/builder-design-systems.d.ts.map +1 -1
  380. package/dist/server/builder-design-systems.js +11 -1
  381. package/dist/server/builder-design-systems.js.map +1 -1
  382. package/dist/server/credential-provider.d.ts.map +1 -1
  383. package/dist/server/credential-provider.js +49 -12
  384. package/dist/server/credential-provider.js.map +1 -1
  385. package/dist/server/index.d.ts +1 -1
  386. package/dist/server/index.d.ts.map +1 -1
  387. package/dist/server/index.js.map +1 -1
  388. package/dist/server/onboarding-html.d.ts.map +1 -1
  389. package/dist/server/onboarding-html.js +37 -2
  390. package/dist/server/onboarding-html.js.map +1 -1
  391. package/dist/shared/reasoning-effort.d.ts +1 -0
  392. package/dist/shared/reasoning-effort.d.ts.map +1 -1
  393. package/dist/shared/reasoning-effort.js +1 -1
  394. package/dist/shared/reasoning-effort.js.map +1 -1
  395. package/dist/templates/chat/app/components/layout/Sidebar.tsx +30 -3
  396. package/dist/templates/chat/changelog/2026-07-31-clicking-the-agent-native-logo-now-toggles-the-app-sidebar.md +6 -0
  397. package/dist/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +11 -0
  398. package/package.json +1 -1
  399. package/src/a2a/correlation.ts +11 -1
  400. package/src/a2a/types.ts +11 -3
  401. package/src/agent/engine/ai-sdk-engine.ts +61 -46
  402. package/src/agent/engine/builder-engine.ts +22 -10
  403. package/src/agent/engine/error-detail.ts +184 -3
  404. package/src/agent/engine/failure-taxonomy.ts +123 -0
  405. package/src/agent/engine/index.ts +8 -0
  406. package/src/agent/engine/registry.ts +92 -8
  407. package/src/agent/engine/translate-ai-sdk.ts +17 -2
  408. package/src/agent/production-agent.ts +13 -33
  409. package/src/agent/run-loop-with-resume.ts +1 -1
  410. package/src/agent/run-manager.ts +43 -14
  411. package/src/agent/run-store.ts +49 -7
  412. package/src/agent/thread-data-builder.ts +36 -4
  413. package/src/cli/templates-meta.ts +13 -0
  414. package/src/cli/workspace-dev.ts +1 -0
  415. package/src/client/error-format.ts +12 -0
  416. package/src/credentials/index.ts +51 -12
  417. package/src/extensions/url-safety.ts +46 -12
  418. package/src/integrations/adapters/slack.ts +32 -10
  419. package/src/integrations/google-docs-poller.ts +12 -1
  420. package/src/integrations/installations-store.ts +30 -0
  421. package/src/integrations/plugin.ts +5 -5
  422. package/src/integrations/types.ts +7 -0
  423. package/src/integrations/webhook-handler.ts +24 -1
  424. package/src/jobs/background-automation-runner.ts +38 -1
  425. package/src/provider-api/index.ts +8 -2
  426. package/src/scripts/call-agent.ts +6 -0
  427. package/src/server/agent-chat-plugin.ts +30 -9
  428. package/src/server/agent-discovery.ts +2 -0
  429. package/src/server/builder-design-systems.ts +21 -0
  430. package/src/server/credential-provider.ts +51 -12
  431. package/src/server/index.ts +1 -0
  432. package/src/server/onboarding-html.ts +37 -2
  433. package/src/shared/reasoning-effort.ts +1 -1
  434. package/src/templates/chat/app/components/layout/Sidebar.tsx +30 -3
  435. package/src/templates/chat/changelog/2026-07-31-clicking-the-agent-native-logo-now-toggles-the-app-sidebar.md +6 -0
  436. package/src/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +11 -0
  437. package/corpus/templates/clips/desktop/src/lib/media-device-selection.ts +0 -157
@@ -2229,13 +2229,17 @@ export function Sidebar({ mobile }: { mobile?: boolean } = {}) {
2229
2229
  src={appPath("/agent-native-icon-light.svg")}
2230
2230
  alt=""
2231
2231
  aria-hidden="true"
2232
- className="block h-5 w-auto shrink-0 dark:hidden"
2232
+ width={35}
2233
+ height={20}
2234
+ className="block h-5 w-[35px] shrink-0 object-contain object-center dark:hidden"
2233
2235
  />
2234
2236
  <img
2235
2237
  src={appPath("/agent-native-icon-dark.svg")}
2236
2238
  alt=""
2237
2239
  aria-hidden="true"
2238
- className="hidden h-5 w-auto shrink-0 dark:block"
2240
+ width={35}
2241
+ height={20}
2242
+ className="hidden h-5 w-[35px] shrink-0 object-contain object-center dark:block"
2239
2243
  />
2240
2244
  <span className="text-lg font-bold tracking-tight">
2241
2245
  {t("navigation.brand")}
@@ -377,6 +377,44 @@ export function Sidebar() {
377
377
  className={collapsed ? "h-8 w-8" : "min-w-0"}
378
378
  />
379
379
  );
380
+ const brandControl = (
381
+ <button
382
+ type="button"
383
+ onClick={() => setCollapsed((value) => !value)}
384
+ aria-label={
385
+ collapsed
386
+ ? t("navigation.expandSidebar")
387
+ : t("navigation.collapseSidebar")
388
+ }
389
+ className={cn(
390
+ "flex items-center gap-2 rounded outline-none transition-colors hover:bg-sidebar-accent/50 focus-visible:ring-2 focus-visible:ring-ring",
391
+ collapsed ? "size-8 justify-center" : "text-start",
392
+ )}
393
+ data-sidebar-brand-toggle
394
+ >
395
+ <img
396
+ src={appPath("/agent-native-icon-light.svg")}
397
+ alt=""
398
+ aria-hidden="true"
399
+ width={28}
400
+ height={16}
401
+ className="block h-4 w-7 shrink-0 object-contain object-center dark:hidden"
402
+ />
403
+ <img
404
+ src={appPath("/agent-native-icon-dark.svg")}
405
+ alt=""
406
+ aria-hidden="true"
407
+ width={28}
408
+ height={16}
409
+ className="hidden h-4 w-7 shrink-0 object-contain object-center dark:block"
410
+ />
411
+ {!collapsed && (
412
+ <span className="text-sm font-semibold tracking-tight">
413
+ {t("navigation.brand")}
414
+ </span>
415
+ )}
416
+ </button>
417
+ );
380
418
 
381
419
  return (
382
420
  <aside
@@ -391,25 +429,7 @@ export function Sidebar() {
391
429
  collapsed ? "justify-center px-2" : "justify-between px-4",
392
430
  )}
393
431
  >
394
- {!collapsed && (
395
- <div className="flex items-center gap-2">
396
- <img
397
- src={appPath("/agent-native-icon-light.svg")}
398
- alt=""
399
- aria-hidden="true"
400
- className="block h-4 w-auto dark:hidden"
401
- />
402
- <img
403
- src={appPath("/agent-native-icon-dark.svg")}
404
- alt=""
405
- aria-hidden="true"
406
- className="hidden h-4 w-auto dark:block"
407
- />
408
- <span className="text-sm font-semibold tracking-tight">
409
- {t("navigation.brand")}
410
- </span>
411
- </div>
412
- )}
432
+ {brandControl}
413
433
  </div>
414
434
 
415
435
  <div className="flex min-h-0 flex-1 flex-col overflow-y-auto">
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: improved
3
+ date: 2026-07-31
4
+ ---
5
+
6
+ The Agent Native logo stays visible when the sidebar is collapsed and toggles the sidebar when clicked.
@@ -310,23 +310,50 @@ export function Sidebar({
310
310
  >
311
311
  <Link
312
312
  to="/"
313
+ onClick={(event) => {
314
+ if (
315
+ !collapsible ||
316
+ !onCollapsedChange ||
317
+ event.metaKey ||
318
+ event.ctrlKey ||
319
+ event.shiftKey ||
320
+ event.altKey ||
321
+ event.button !== 0
322
+ ) {
323
+ return;
324
+ }
325
+ event.preventDefault();
326
+ onCollapsedChange(!collapsed);
327
+ }}
313
328
  className={cn(
314
329
  "flex min-w-0 items-center rounded outline-none focus-visible:ring-2 focus-visible:ring-ring",
315
330
  collapsed ? "size-8 justify-center" : "flex-1 gap-3",
316
331
  )}
317
- aria-label={collapsed ? t("navigation.brand") : undefined}
332
+ aria-label={
333
+ collapsible && onCollapsedChange
334
+ ? collapsed
335
+ ? t("navigation.expandSidebar")
336
+ : t("navigation.collapseSidebar")
337
+ : collapsed
338
+ ? t("navigation.brand")
339
+ : undefined
340
+ }
318
341
  >
319
342
  <img
320
343
  src={appPath("/agent-native-icon-light.svg")}
321
344
  alt=""
322
345
  aria-hidden="true"
323
- className="block h-4 w-auto shrink-0 dark:hidden"
346
+ width={28}
347
+ height={16}
348
+ className="block h-4 w-7 shrink-0 object-contain object-center dark:hidden"
324
349
  />
325
350
  <img
326
351
  src={appPath("/agent-native-icon-dark.svg")}
327
352
  alt=""
328
353
  aria-hidden="true"
329
- className="hidden h-4 w-auto shrink-0 dark:block"
354
+ width={28}
355
+ height={16}
356
+ className="hidden h-4 w-7 shrink-0 object-contain object-center dark:block"
330
357
  />
331
358
  <div className={cn("min-w-0", collapsed && "sr-only")}>
332
359
  <p className="truncate text-sm font-semibold text-sidebar-accent-foreground">
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: improved
3
+ date: 2026-07-31
4
+ ---
5
+
6
+ Clicking the Agent Native logo now toggles the app sidebar.
@@ -386,7 +386,7 @@ export function AppLayout({ children }: AppLayoutProps) {
386
386
  open={sidebarOpen}
387
387
  onClose={() => setSidebarOpen(false)}
388
388
  collapsed={!isMobile && sidebarCollapsed}
389
- onCollapsedChange={setSidebarCollapsed}
389
+ onCollapsedChange={isMobile ? undefined : setSidebarCollapsed}
390
390
  />
391
391
  <AgentSidebar
392
392
  position="right"
@@ -775,31 +775,60 @@ export function Sidebar({
775
775
  collapsed ? "px-1" : "px-4",
776
776
  )}
777
777
  >
778
- {!collapsed && (
779
- <>
780
- <Link
781
- to="/"
782
- onClick={onClose}
783
- className="flex items-center gap-2 rounded outline-none focus-visible:ring-2 focus-visible:ring-ring"
784
- >
785
- <img
786
- src={appPath("/agent-native-icon-light.svg")}
787
- alt=""
788
- aria-hidden="true"
789
- className="block h-4 w-auto shrink-0 dark:hidden"
790
- />
791
- <img
792
- src={appPath("/agent-native-icon-dark.svg")}
793
- alt=""
794
- aria-hidden="true"
795
- className="hidden h-4 w-auto shrink-0 dark:block"
796
- />
797
- <span className="text-base font-semibold tracking-tight">
798
- {t("navigation.brand")}
799
- </span>
800
- </Link>
801
- </>
802
- )}
778
+ <Link
779
+ to="/"
780
+ onClick={(event) => {
781
+ onClose();
782
+ if (
783
+ !onCollapsedChange ||
784
+ event.metaKey ||
785
+ event.ctrlKey ||
786
+ event.shiftKey ||
787
+ event.altKey ||
788
+ event.button !== 0
789
+ ) {
790
+ return;
791
+ }
792
+ event.preventDefault();
793
+ onCollapsedChange(!collapsed);
794
+ }}
795
+ className={cn(
796
+ "flex items-center gap-2 rounded outline-none focus-visible:ring-2 focus-visible:ring-ring",
797
+ collapsed ? "size-8 justify-center" : "flex-1",
798
+ )}
799
+ aria-label={
800
+ onCollapsedChange
801
+ ? collapsed
802
+ ? t("sidebar.expandSidebar")
803
+ : t("sidebar.collapseSidebar")
804
+ : collapsed
805
+ ? t("navigation.brand")
806
+ : undefined
807
+ }
808
+ data-sidebar-brand-toggle
809
+ >
810
+ <img
811
+ src={appPath("/agent-native-icon-light.svg")}
812
+ alt=""
813
+ aria-hidden="true"
814
+ width={28}
815
+ height={16}
816
+ className="block h-4 w-7 shrink-0 object-contain object-center dark:hidden"
817
+ />
818
+ <img
819
+ src={appPath("/agent-native-icon-dark.svg")}
820
+ alt=""
821
+ aria-hidden="true"
822
+ width={28}
823
+ height={16}
824
+ className="hidden h-4 w-7 shrink-0 object-contain object-center dark:block"
825
+ />
826
+ {!collapsed && (
827
+ <span className="text-base font-semibold tracking-tight">
828
+ {t("navigation.brand")}
829
+ </span>
830
+ )}
831
+ </Link>
803
832
  </div>
804
833
 
805
834
  <div className="min-h-0 flex-1 overflow-y-auto">
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: improved
3
+ date: 2026-07-31
4
+ ---
5
+
6
+ The Agent Native logo stays visible when the sidebar is collapsed and toggles the sidebar when clicked.
@@ -358,23 +358,50 @@ export function Sidebar({
358
358
  >
359
359
  <Link
360
360
  to="/"
361
+ onClick={(event) => {
362
+ if (
363
+ !collapsible ||
364
+ !onCollapsedChange ||
365
+ event.metaKey ||
366
+ event.ctrlKey ||
367
+ event.shiftKey ||
368
+ event.altKey ||
369
+ event.button !== 0
370
+ ) {
371
+ return;
372
+ }
373
+ event.preventDefault();
374
+ onCollapsedChange(!collapsed);
375
+ }}
361
376
  className={cn(
362
377
  "flex min-w-0 items-center rounded outline-none focus-visible:ring-2 focus-visible:ring-ring",
363
378
  collapsed ? "size-7 justify-center" : "flex-1 gap-3",
364
379
  )}
365
- aria-label={collapsed ? APP_TITLE : undefined}
380
+ aria-label={
381
+ collapsible && onCollapsedChange
382
+ ? collapsed
383
+ ? t("navigation.expandSidebar")
384
+ : t("navigation.collapseSidebar")
385
+ : collapsed
386
+ ? APP_TITLE
387
+ : undefined
388
+ }
366
389
  >
367
390
  <img
368
391
  src={appPath("/agent-native-icon-light.svg")}
369
392
  alt=""
370
393
  aria-hidden="true"
371
- className="block h-4 w-auto shrink-0 dark:hidden"
394
+ width={28}
395
+ height={16}
396
+ className="block h-4 w-7 shrink-0 object-contain object-center dark:hidden"
372
397
  />
373
398
  <img
374
399
  src={appPath("/agent-native-icon-dark.svg")}
375
400
  alt=""
376
401
  aria-hidden="true"
377
- className="hidden h-4 w-auto shrink-0 dark:block"
402
+ width={28}
403
+ height={16}
404
+ className="hidden h-4 w-7 shrink-0 object-contain object-center dark:block"
378
405
  />
379
406
  <div className={cn("min-w-0", collapsed && "sr-only")}>
380
407
  <p className="truncate text-sm font-semibold text-sidebar-accent-foreground">
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: improved
3
+ date: 2026-07-31
4
+ ---
5
+
6
+ Clicking the Agent Native logo now toggles the app sidebar.
@@ -336,32 +336,48 @@ export function LibraryLayout({ children }: LibraryLayoutProps) {
336
336
  showCollapsedSidebar ? "justify-center px-2" : "px-4",
337
337
  )}
338
338
  >
339
- <div
339
+ <button
340
+ type="button"
341
+ onClick={() => {
342
+ if (!isMobile) setSidebarCollapsed((value) => !value);
343
+ }}
344
+ aria-label={
345
+ isMobile
346
+ ? t("navigation.brand")
347
+ : showCollapsedSidebar
348
+ ? t("navigation.expandSidebar")
349
+ : t("navigation.collapseSidebar")
350
+ }
340
351
  className={cn(
341
- "flex min-w-0 items-center gap-2",
342
- !showCollapsedSidebar && "flex-1",
352
+ "flex min-w-0 items-center gap-2 rounded outline-none focus-visible:ring-2 focus-visible:ring-ring",
353
+ showCollapsedSidebar
354
+ ? "size-8 justify-center"
355
+ : "flex-1 text-start",
343
356
  )}
357
+ data-sidebar-brand-toggle
344
358
  >
359
+ <img
360
+ src={appPath("/agent-native-icon-light.svg")}
361
+ alt=""
362
+ aria-hidden="true"
363
+ width={28}
364
+ height={16}
365
+ className="block h-4 w-7 shrink-0 object-contain object-center dark:hidden"
366
+ />
367
+ <img
368
+ src={appPath("/agent-native-icon-dark.svg")}
369
+ alt=""
370
+ aria-hidden="true"
371
+ width={28}
372
+ height={16}
373
+ className="hidden h-4 w-7 shrink-0 object-contain object-center dark:block"
374
+ />
345
375
  {!showCollapsedSidebar && (
346
- <>
347
- <img
348
- src={appPath("/agent-native-icon-light.svg")}
349
- alt=""
350
- aria-hidden="true"
351
- className="block h-4 w-auto shrink-0 dark:hidden"
352
- />
353
- <img
354
- src={appPath("/agent-native-icon-dark.svg")}
355
- alt=""
356
- aria-hidden="true"
357
- className="hidden h-4 w-auto shrink-0 dark:block"
358
- />
359
- <span className="truncate text-sm font-semibold text-foreground">
360
- {t("navigation.brand")}
361
- </span>
362
- </>
376
+ <span className="truncate text-sm font-semibold text-foreground">
377
+ {t("navigation.brand")}
378
+ </span>
363
379
  )}
364
- </div>
380
+ </button>
365
381
  </div>
366
382
  <div className="min-h-0 flex-1 overflow-y-auto">
367
383
  {showCollapsedSidebar ? (
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: improved
3
+ date: 2026-07-31
4
+ ---
5
+
6
+ The Agent Native logo stays visible when the sidebar is collapsed and toggles the sidebar when clicked.
@@ -13,7 +13,7 @@ import {
13
13
  isPseudoMediaDeviceId,
14
14
  isSelectableAudioInputDevice,
15
15
  normalizedMediaDeviceId,
16
- } from "../lib/media-device-selection";
16
+ } from "../../../shared/media-device-selection";
17
17
  import {
18
18
  isHardCapturePermissionError,
19
19
  MACOS_CAPTURE_PERMISSION_MESSAGE,
@@ -3,7 +3,7 @@ import {
3
3
  enumerateAudioInputDevices,
4
4
  isLikelyPhoneMicLabel,
5
5
  type AudioInputFallback,
6
- } from "./media-device-selection";
6
+ } from "../../../shared/media-device-selection";
7
7
 
8
8
  export const VOICE_FOCUSED_AUDIO_CONSTRAINTS: MediaTrackConstraints = {
9
9
  echoCancellation: { ideal: true },
@@ -1617,6 +1617,38 @@ export function DocumentSidebar({
1617
1617
  className={collapsed ? "size-8" : "h-8 min-w-0"}
1618
1618
  />
1619
1619
  );
1620
+ const brandButton = (isCollapsed: boolean) => (
1621
+ <button
1622
+ type="button"
1623
+ onClick={onToggleCollapsed}
1624
+ aria-label={isCollapsed ? t("sidebar.expand") : t("sidebar.collapse")}
1625
+ className={cn(
1626
+ "flex items-center gap-2 rounded outline-none text-foreground transition-colors hover:bg-accent/50 focus-visible:ring-2 focus-visible:ring-ring",
1627
+ isCollapsed ? "size-8 justify-center" : "min-w-0 text-start",
1628
+ )}
1629
+ data-sidebar-brand-toggle
1630
+ >
1631
+ <img
1632
+ src={appPath("/agent-native-icon-light.svg")}
1633
+ alt=""
1634
+ aria-hidden="true"
1635
+ width={28}
1636
+ height={16}
1637
+ className="block h-4 w-7 shrink-0 object-contain object-center dark:hidden"
1638
+ />
1639
+ <img
1640
+ src={appPath("/agent-native-icon-dark.svg")}
1641
+ alt=""
1642
+ aria-hidden="true"
1643
+ width={28}
1644
+ height={16}
1645
+ className="hidden h-4 w-7 shrink-0 object-contain object-center dark:block"
1646
+ />
1647
+ {!isCollapsed && (
1648
+ <span className="text-base font-semibold tracking-tight">Content</span>
1649
+ )}
1650
+ </button>
1651
+ );
1620
1652
 
1621
1653
  const toggleSection = (id: SidebarSectionId) => {
1622
1654
  setStoredCollapsedSections((current) => {
@@ -2118,6 +2150,7 @@ export function DocumentSidebar({
2118
2150
  if (collapsed) {
2119
2151
  return (
2120
2152
  <div className="agent-layout-left-drawer flex h-full w-12 flex-col items-center gap-1 border-e border-border bg-sidebar py-3 transition-[width] duration-200 ease-out">
2153
+ {brandButton(true)}
2121
2154
  {renderCollapsedNewButton()}
2122
2155
  <Tooltip>
2123
2156
  <TooltipTrigger asChild>
@@ -2156,23 +2189,7 @@ export function DocumentSidebar({
2156
2189
  >
2157
2190
  {/* Header */}
2158
2191
  <div className="flex h-12 shrink-0 items-center justify-between border-b border-border px-3">
2159
- <div className="flex items-center gap-2 min-w-0">
2160
- <img
2161
- src={appPath("/agent-native-icon-light.svg")}
2162
- alt=""
2163
- aria-hidden="true"
2164
- className="block h-4 w-auto shrink-0 dark:hidden"
2165
- />
2166
- <img
2167
- src={appPath("/agent-native-icon-dark.svg")}
2168
- alt=""
2169
- aria-hidden="true"
2170
- className="hidden h-4 w-auto shrink-0 dark:block"
2171
- />
2172
- <span className="text-base font-semibold tracking-tight text-foreground">
2173
- Content
2174
- </span>
2175
- </div>
2192
+ {brandButton(false)}
2176
2193
  </div>
2177
2194
 
2178
2195
  {/* Search */}
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: improved
3
+ date: 2026-07-31
4
+ ---
5
+
6
+ The Agent Native logo stays visible when the sidebar is collapsed and toggles the sidebar when clicked.
@@ -30,6 +30,7 @@ Design systems are stored in the `design_systems` SQL table. Each has:
30
30
  - `is_default` — boolean, whether this is the user's default design system
31
31
  - `owner_email` — auto-set from session
32
32
  - `org_id` — organization scope
33
+ - `visibility` — defaults to `org` inside an organization, otherwise `private`
33
34
 
34
35
  ### DesignSystemData Schema
35
36
 
@@ -125,7 +126,9 @@ brand's actual extracted fonts) rather than defaulting to Space Grotesk/DM
125
126
  Sans every time; that pairing is this skill's own most common convergence
126
127
  fingerprint.
127
128
 
128
- If this is the user's first design system, it is automatically set as the default.
129
+ If this is the user's first design system in the active organization, it is
130
+ automatically set as the default. Organization-scoped systems are shared with
131
+ that organization by default.
129
132
 
130
133
  ### Starting from an established public system
131
134
 
@@ -175,7 +178,8 @@ Only provided fields are updated. You can also update `--title`, `--description`
175
178
  pnpm action set-default-design-system --id <id>
176
179
  ```
177
180
 
178
- Unsets any previously-default design system for this user.
181
+ Pass `--isDefault false` to clear the current default. Setting a system as the
182
+ default unsets the previous default in the same user and organization scope.
179
183
 
180
184
  ## Multi-Source Import Flow
181
185
 
@@ -166,6 +166,7 @@ export default defineAction({
166
166
  isDefault,
167
167
  ownerEmail,
168
168
  orgId,
169
+ visibility: orgId ? "org" : "private",
169
170
  createdAt: now,
170
171
  updatedAt: now,
171
172
  });
@@ -11,11 +11,16 @@ import { getDb, schema } from "../server/db/index.js";
11
11
 
12
12
  export default defineAction({
13
13
  description:
14
- "Set a design system as the default. Unsets any previously-default design system for this user.",
14
+ "Set or unset a design system as the default for the current user and organization.",
15
15
  schema: z.object({
16
16
  id: z.string().describe("Design system ID to set as default"),
17
+ isDefault: z
18
+ .boolean()
19
+ .optional()
20
+ .default(true)
21
+ .describe("Whether this design system should be the default"),
17
22
  }),
18
- run: async ({ id }) => {
23
+ run: async ({ id, isDefault = true }) => {
19
24
  await assertAccess("design-system", id, "editor");
20
25
 
21
26
  const db = getDb();
@@ -26,42 +31,45 @@ export default defineAction({
26
31
  const orgId = getRequestOrgId();
27
32
 
28
33
  const [target] = await db
29
- .select({ ownerEmail: schema.designSystems.ownerEmail })
34
+ .select({
35
+ ownerEmail: schema.designSystems.ownerEmail,
36
+ orgId: schema.designSystems.orgId,
37
+ })
30
38
  .from(schema.designSystems)
31
39
  .where(eq(schema.designSystems.id, id))
32
40
  .limit(1);
33
41
 
34
- if (target?.ownerEmail !== userEmail) {
42
+ if (
43
+ target?.ownerEmail !== userEmail ||
44
+ (target.orgId ?? null) !== (orgId ?? null)
45
+ ) {
35
46
  throw new Error("Only the owner can set a design system as default");
36
47
  }
37
48
 
38
49
  await db.transaction(async (tx) => {
39
- await tx
40
- .update(schema.designSystems)
41
- .set({ isDefault: false, updatedAt: now })
42
- .where(
43
- orgId
44
- ? and(
45
- eq(schema.designSystems.ownerEmail, userEmail),
46
- eq(schema.designSystems.orgId, orgId),
47
- )
48
- : and(
49
- eq(schema.designSystems.ownerEmail, userEmail),
50
- isNull(schema.designSystems.orgId),
51
- ),
52
- );
50
+ const targetScope = orgId
51
+ ? and(
52
+ eq(schema.designSystems.ownerEmail, userEmail),
53
+ eq(schema.designSystems.orgId, orgId),
54
+ )
55
+ : and(
56
+ eq(schema.designSystems.ownerEmail, userEmail),
57
+ isNull(schema.designSystems.orgId),
58
+ );
59
+
60
+ if (isDefault) {
61
+ await tx
62
+ .update(schema.designSystems)
63
+ .set({ isDefault: false, updatedAt: now })
64
+ .where(targetScope);
65
+ }
53
66
 
54
67
  await tx
55
68
  .update(schema.designSystems)
56
- .set({ isDefault: true, updatedAt: now })
57
- .where(
58
- and(
59
- eq(schema.designSystems.id, id),
60
- eq(schema.designSystems.ownerEmail, userEmail),
61
- ),
62
- );
69
+ .set({ isDefault, updatedAt: now })
70
+ .where(and(eq(schema.designSystems.id, id), targetScope));
63
71
  });
64
72
 
65
- return { id, isDefault: true };
73
+ return { id, isDefault };
66
74
  },
67
75
  });