@agent-native/core 0.132.1 → 0.133.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (456) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +198 -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 +33 -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 +30 -3
  17. package/corpus/core/src/agent/thread-data-builder.ts +36 -4
  18. package/corpus/core/src/chat-threads/store.ts +42 -0
  19. package/corpus/core/src/cli/templates-meta.ts +13 -0
  20. package/corpus/core/src/cli/workspace-dev.ts +1 -0
  21. package/corpus/core/src/client/error-format.ts +12 -0
  22. package/corpus/core/src/client/use-chat-threads.ts +76 -16
  23. package/corpus/core/src/credentials/index.ts +51 -12
  24. package/corpus/core/src/extensions/url-safety.ts +46 -12
  25. package/corpus/core/src/integrations/adapters/slack.ts +32 -10
  26. package/corpus/core/src/integrations/google-docs-poller.ts +12 -1
  27. package/corpus/core/src/integrations/installations-store.ts +30 -0
  28. package/corpus/core/src/integrations/plugin.ts +5 -5
  29. package/corpus/core/src/integrations/types.ts +7 -0
  30. package/corpus/core/src/integrations/webhook-handler.ts +24 -1
  31. package/corpus/core/src/jobs/background-automation-runner.ts +38 -1
  32. package/corpus/core/src/provider-api/index.ts +8 -2
  33. package/corpus/core/src/scripts/call-agent.ts +6 -0
  34. package/corpus/core/src/server/agent-chat-plugin.ts +46 -10
  35. package/corpus/core/src/server/agent-discovery.ts +2 -0
  36. package/corpus/core/src/server/builder-design-systems.ts +21 -0
  37. package/corpus/core/src/server/credential-provider.ts +51 -12
  38. package/corpus/core/src/server/index.ts +1 -0
  39. package/corpus/core/src/server/onboarding-html.ts +37 -2
  40. package/corpus/core/src/shared/reasoning-effort.ts +1 -1
  41. package/corpus/core/src/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +11 -0
  42. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +6 -2
  43. package/corpus/templates/assets/app/components/layout/Sidebar.tsx +39 -19
  44. package/corpus/templates/assets/changelog/2026-07-31-the-agent-native-logo-stays-visible-when-the-sidebar-is-coll.md +6 -0
  45. package/corpus/templates/brain/app/components/layout/Sidebar.tsx +30 -3
  46. package/corpus/templates/brain/changelog/2026-07-31-clicking-the-agent-native-logo-now-toggles-the-app-sidebar.md +6 -0
  47. package/corpus/templates/calendar/app/components/layout/AppLayout.tsx +1 -1
  48. package/corpus/templates/calendar/app/components/layout/Sidebar.tsx +54 -25
  49. package/corpus/templates/calendar/changelog/2026-07-31-the-agent-native-logo-stays-visible-when-the-sidebar-is-coll.md +6 -0
  50. package/corpus/templates/chat/app/components/layout/Sidebar.tsx +30 -3
  51. package/corpus/templates/chat/changelog/2026-07-31-clicking-the-agent-native-logo-now-toggles-the-app-sidebar.md +6 -0
  52. package/corpus/templates/clips/app/components/library/library-layout.tsx +37 -21
  53. package/corpus/templates/clips/changelog/2026-07-30-meeting-microphone-transcription-works-reliably-from-the-fir.md +6 -0
  54. package/corpus/templates/clips/changelog/2026-07-31-the-agent-native-logo-stays-visible-when-the-sidebar-is-coll.md +6 -0
  55. package/corpus/templates/clips/desktop/src/hooks/useMediaDevices.ts +1 -1
  56. package/corpus/templates/clips/desktop/src/lib/media-capture-constraints.ts +1 -1
  57. package/corpus/templates/clips/desktop/src-tauri/src/native_screen/custom_capture.rs +13 -0
  58. package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +2 -0
  59. package/corpus/templates/clips/desktop/src-tauri/src/system_audio.rs +25 -132
  60. package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +34 -17
  61. package/corpus/templates/content/changelog/2026-07-31-the-agent-native-logo-stays-visible-when-the-sidebar-is-coll.md +6 -0
  62. package/corpus/templates/design/.agents/skills/design-systems/SKILL.md +6 -2
  63. package/corpus/templates/design/.generated/bridge/editor-chrome.generated.ts +5 -0
  64. package/corpus/templates/design/actions/create-design-system.ts +1 -0
  65. package/corpus/templates/design/actions/set-default-design-system.ts +34 -26
  66. package/corpus/templates/design/app/components/design/KeyboardShortcutsPanel.tsx +5 -3
  67. package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +23 -0
  68. package/corpus/templates/design/app/components/design/keyboard-shortcuts.ts +3 -0
  69. package/corpus/templates/design/app/components/layout/Sidebar.tsx +21 -4
  70. package/corpus/templates/design/app/hooks/useDesignHotkeys.ts +11 -7
  71. package/corpus/templates/design/app/i18n-data.ts +39 -0
  72. package/corpus/templates/design/app/pages/DesignSystemSetup.tsx +229 -12
  73. package/corpus/templates/design/app/pages/DesignSystems.tsx +10 -4
  74. package/corpus/templates/design/changelog/2026-07-30-fixed-the-keyboard-shortcuts-panel-not-opening-with-ctrl-shi.md +6 -0
  75. package/corpus/templates/design/changelog/2026-07-31-clicking-the-agent-native-logo-now-toggles-the-app-sidebar.md +6 -0
  76. package/corpus/templates/design/changelog/2026-07-31-design-system-indexing-keeps-your-chosen-name-when-you-uploa.md +6 -0
  77. package/corpus/templates/design/server/lib/builder-design-system-proxy.ts +19 -4
  78. package/corpus/templates/dispatch/AGENTS.md +4 -0
  79. package/corpus/templates/factory/.agents/skills/actions/SKILL.md +562 -0
  80. package/corpus/templates/factory/.agents/skills/adding-a-feature/SKILL.md +198 -0
  81. package/corpus/templates/factory/.agents/skills/agent-native-docs/SKILL.md +115 -0
  82. package/corpus/templates/factory/.agents/skills/agent-native-toolkit/SKILL.md +182 -0
  83. package/corpus/templates/factory/.agents/skills/capture-learnings/SKILL.md +89 -0
  84. package/corpus/templates/factory/.agents/skills/create-skill/SKILL.md +221 -0
  85. package/corpus/templates/factory/.agents/skills/customizing-agent-native/SKILL.md +220 -0
  86. package/corpus/templates/factory/.agents/skills/delegate-to-agent/SKILL.md +263 -0
  87. package/corpus/templates/factory/.agents/skills/factory-graphs/SKILL.md +52 -0
  88. package/corpus/templates/factory/.agents/skills/feature-flags/SKILL.md +169 -0
  89. package/corpus/templates/factory/.agents/skills/frontend-design/SKILL.md +174 -0
  90. package/corpus/templates/factory/.agents/skills/real-time-sync/SKILL.md +232 -0
  91. package/corpus/templates/factory/.agents/skills/security/SKILL.md +324 -0
  92. package/corpus/templates/factory/.agents/skills/self-modifying-code/SKILL.md +119 -0
  93. package/corpus/templates/factory/.agents/skills/shadcn-ui/SKILL.md +123 -0
  94. package/corpus/templates/factory/.agents/skills/sharing/SKILL.md +232 -0
  95. package/corpus/templates/factory/.agents/skills/storing-data/SKILL.md +178 -0
  96. package/corpus/templates/factory/.agents/skills/upgrade-agent-native/SKILL.md +122 -0
  97. package/corpus/templates/factory/.env.example +24 -0
  98. package/corpus/templates/factory/.ignore +0 -0
  99. package/corpus/templates/factory/.oxfmtrc.json +8 -0
  100. package/corpus/templates/factory/AGENTS.md +90 -0
  101. package/corpus/templates/factory/CHANGELOG.md +10 -0
  102. package/corpus/templates/factory/DEVELOPING.md +185 -0
  103. package/corpus/templates/factory/README.md +64 -0
  104. package/corpus/templates/factory/_gitignore +42 -0
  105. package/corpus/templates/factory/actions/add-factory-comment.ts +55 -0
  106. package/corpus/templates/factory/actions/approve-factory-item.ts +214 -0
  107. package/corpus/templates/factory/actions/babysit-pull-request.ts +126 -0
  108. package/corpus/templates/factory/actions/evaluate-triage-item.ts +172 -0
  109. package/corpus/templates/factory/actions/get-factory-graph.ts +62 -0
  110. package/corpus/templates/factory/actions/get-triage-config.ts +42 -0
  111. package/corpus/templates/factory/actions/get-triage-item.ts +74 -0
  112. package/corpus/templates/factory/actions/hello.ts +13 -0
  113. package/corpus/templates/factory/actions/ingest-github-observation.ts +100 -0
  114. package/corpus/templates/factory/actions/list-factories.ts +40 -0
  115. package/corpus/templates/factory/actions/list-factory-comments.ts +40 -0
  116. package/corpus/templates/factory/actions/list-triage-items.ts +85 -0
  117. package/corpus/templates/factory/actions/list-triage-rules.ts +44 -0
  118. package/corpus/templates/factory/actions/navigate.ts +41 -0
  119. package/corpus/templates/factory/actions/poll-slack-channel.ts +118 -0
  120. package/corpus/templates/factory/actions/reconcile-triage-run.ts +179 -0
  121. package/corpus/templates/factory/actions/record-triage-feedback.ts +58 -0
  122. package/corpus/templates/factory/actions/run.ts +2 -0
  123. package/corpus/templates/factory/actions/save-factory-graph.ts +129 -0
  124. package/corpus/templates/factory/actions/save-triage-config.ts +67 -0
  125. package/corpus/templates/factory/actions/save-triage-rule.ts +89 -0
  126. package/corpus/templates/factory/actions/suggest-factory-rules.ts +70 -0
  127. package/corpus/templates/factory/actions/view-screen.ts +73 -0
  128. package/corpus/templates/factory/app/components/factory/FactoryCanvas.tsx +441 -0
  129. package/corpus/templates/factory/app/components/factory/FactoryInspector.tsx +388 -0
  130. package/corpus/templates/factory/app/components/layout/Header.tsx +60 -0
  131. package/corpus/templates/factory/app/components/layout/Layout.tsx +190 -0
  132. package/corpus/templates/factory/app/components/layout/Sidebar.tsx +538 -0
  133. package/corpus/templates/factory/app/components/triage/triage-status-pill.tsx +28 -0
  134. package/corpus/templates/factory/app/components/ui/button.tsx +1 -0
  135. package/corpus/templates/factory/app/components/ui/card.tsx +1 -0
  136. package/corpus/templates/factory/app/components/ui/dropdown-menu.tsx +1 -0
  137. package/corpus/templates/factory/app/components/ui/input.tsx +1 -0
  138. package/corpus/templates/factory/app/components/ui/label.tsx +1 -0
  139. package/corpus/templates/factory/app/components/ui/sheet.tsx +1 -0
  140. package/corpus/templates/factory/app/components/ui/textarea.tsx +1 -0
  141. package/corpus/templates/factory/app/components/ui/toolkit-provider.tsx +17 -0
  142. package/corpus/templates/factory/app/components/ui/tooltip.tsx +1 -0
  143. package/corpus/templates/factory/app/design-system.ts +3 -0
  144. package/corpus/templates/factory/app/entry.client.tsx +22 -0
  145. package/corpus/templates/factory/app/entry.server.tsx +10 -0
  146. package/corpus/templates/factory/app/global.css +93 -0
  147. package/corpus/templates/factory/app/hooks/use-navigation-state.ts +113 -0
  148. package/corpus/templates/factory/app/i18n/en-US.ts +211 -0
  149. package/corpus/templates/factory/app/i18n/index.ts +34 -0
  150. package/corpus/templates/factory/app/i18n-data.ts +556 -0
  151. package/corpus/templates/factory/app/lib/agent-page.tsx +49 -0
  152. package/corpus/templates/factory/app/lib/app-config.ts +11 -0
  153. package/corpus/templates/factory/app/lib/tab-id.ts +1 -0
  154. package/corpus/templates/factory/app/lib/utils.ts +1 -0
  155. package/corpus/templates/factory/app/root.tsx +175 -0
  156. package/corpus/templates/factory/app/routes/_index.tsx +94 -0
  157. package/corpus/templates/factory/app/routes/agent.tsx +24 -0
  158. package/corpus/templates/factory/app/routes/chat.$threadId.tsx +1 -0
  159. package/corpus/templates/factory/app/routes/database.tsx +17 -0
  160. package/corpus/templates/factory/app/routes/extensions.$id.$slug.tsx +2 -0
  161. package/corpus/templates/factory/app/routes/extensions.$id.tsx +11 -0
  162. package/corpus/templates/factory/app/routes/extensions._index.tsx +11 -0
  163. package/corpus/templates/factory/app/routes/extensions.tsx +5 -0
  164. package/corpus/templates/factory/app/routes/factory.tsx +1003 -0
  165. package/corpus/templates/factory/app/routes/observability.tsx +19 -0
  166. package/corpus/templates/factory/app/routes/settings.tsx +89 -0
  167. package/corpus/templates/factory/app/routes/team.tsx +11 -0
  168. package/corpus/templates/factory/app/routes.ts +4 -0
  169. package/corpus/templates/factory/app/vite-env.d.ts +6 -0
  170. package/corpus/templates/factory/changelog/2026-06-24-a-new-settings-page-gives-quick-access-to-language-workspace.md +6 -0
  171. package/corpus/templates/factory/changelog/2026-06-24-added-a-language-picker-and-localized-app-chrome-for-support.md +6 -0
  172. package/corpus/templates/factory/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
  173. package/corpus/templates/factory/changelog/2026-06-28-left-sidebar-collapse-motion-and-footer-chrome-are-quieter.md +6 -0
  174. package/corpus/templates/factory/changelog/2026-06-29-chat-layouts-adapt-when-the-agent-sidebar-is-open.md +6 -0
  175. package/corpus/templates/factory/changelog/2026-07-08-settings-are-cleaner-and-searchable.md +5 -0
  176. package/corpus/templates/factory/changelog/2026-07-10-chat-now-makes-ai-connection-setup-clear-without-shifting-th.md +6 -0
  177. package/corpus/templates/factory/changelog/2026-07-13-a-full-agent-page-now-brings-context-files-connections-jobs-.md +6 -0
  178. package/corpus/templates/factory/changelog/2026-07-14-chat-opens-reliably-on-hosted-deployments-instead-of-failing.md +6 -0
  179. package/corpus/templates/factory/changelog/2026-07-14-fixed-chat-template-startup-with-older-core-versions.md +6 -0
  180. package/corpus/templates/factory/changelog/2026-07-15-chat-navigation-focuses-on-chat-and-agent.md +6 -0
  181. package/corpus/templates/factory/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
  182. package/corpus/templates/factory/changelog/2026-07-22-compact-sidebar-footer.md +6 -0
  183. package/corpus/templates/factory/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +6 -0
  184. package/corpus/templates/factory/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
  185. package/corpus/templates/factory/changelog/2026-07-22-recent-chats-are-easier-to-scan-and-expand.md +6 -0
  186. package/corpus/templates/factory/changelog/2026-07-23-full-page-chat-is-better-centered-with-quieter-chat-history-.md +6 -0
  187. package/corpus/templates/factory/changelog/2026-07-24-borderless-secondary-surfaces.md +6 -0
  188. package/corpus/templates/factory/changelog/2026-07-24-sidebar-footer-controls-follow-a-consistent-order.md +6 -0
  189. package/corpus/templates/factory/changelog/2026-07-25-settings-navigation-now-keeps-manage-agent-as-a-dedicated-li.md +6 -0
  190. package/corpus/templates/factory/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  191. package/corpus/templates/factory/changelog/2026-07-31-added-an-inspectable-observe-only-factory-queue-for-slack-.md +6 -0
  192. package/corpus/templates/factory/changelog/2026-07-31-clicking-the-agent-native-logo-now-toggles-the-app-sidebar.md +6 -0
  193. package/corpus/templates/factory/components.json +20 -0
  194. package/corpus/templates/factory/data/sync-config.json +1 -0
  195. package/corpus/templates/factory/learnings.defaults.md +5 -0
  196. package/corpus/templates/factory/netlify.toml +10 -0
  197. package/corpus/templates/factory/package.json +105 -0
  198. package/corpus/templates/factory/public/agent-native-icon-dark.svg +10 -0
  199. package/corpus/templates/factory/public/agent-native-icon-light.svg +10 -0
  200. package/corpus/templates/factory/public/agent-native-logo-dark.svg +21 -0
  201. package/corpus/templates/factory/public/agent-native-logo-light.svg +21 -0
  202. package/corpus/templates/factory/public/favicon.svg +1 -0
  203. package/corpus/templates/factory/public/icon-180.svg +1 -0
  204. package/corpus/templates/factory/public/icon-192.svg +1 -0
  205. package/corpus/templates/factory/public/icon-512.svg +1 -0
  206. package/corpus/templates/factory/public/manifest.json +21 -0
  207. package/corpus/templates/factory/react-router.config.ts +7 -0
  208. package/corpus/templates/factory/server/connectors/credentials.ts +129 -0
  209. package/corpus/templates/factory/server/connectors/slack.ts +129 -0
  210. package/corpus/templates/factory/server/db/index.ts +6 -0
  211. package/corpus/templates/factory/server/db/schema.ts +193 -0
  212. package/corpus/templates/factory/server/factory-graph/contracts.ts +212 -0
  213. package/corpus/templates/factory/server/factory-graph/store.ts +121 -0
  214. package/corpus/templates/factory/server/lib/require-workspace-member.ts +55 -0
  215. package/corpus/templates/factory/server/middleware/auth.ts +15 -0
  216. package/corpus/templates/factory/server/plugins/agent-chat.ts +58 -0
  217. package/corpus/templates/factory/server/plugins/auth.ts +14 -0
  218. package/corpus/templates/factory/server/plugins/factory-migrations.ts +247 -0
  219. package/corpus/templates/factory/server/plugins/factory-scheduler-job.ts +116 -0
  220. package/corpus/templates/factory/server/plugins/integrations.ts +46 -0
  221. package/corpus/templates/factory/server/routes/[...page].get.ts +5 -0
  222. package/corpus/templates/factory/server/routes/_agent-native/factory/builder-callback.post.ts +116 -0
  223. package/corpus/templates/factory/server/triage/ai-services-git.ts +197 -0
  224. package/corpus/templates/factory/server/triage/builder-executor.ts +118 -0
  225. package/corpus/templates/factory/server/triage/contracts.ts +164 -0
  226. package/corpus/templates/factory/server/triage/github-ingestion.ts +35 -0
  227. package/corpus/templates/factory/server/triage/guards.ts +121 -0
  228. package/corpus/templates/factory/server/triage/ids.ts +27 -0
  229. package/corpus/templates/factory/server/triage/pr-babysit.ts +100 -0
  230. package/corpus/templates/factory/server/triage/pr-monitor.ts +220 -0
  231. package/corpus/templates/factory/server/triage/slack-client.ts +55 -0
  232. package/corpus/templates/factory/server/triage/slack-poller.ts +152 -0
  233. package/corpus/templates/factory/ssr-entry.ts +15 -0
  234. package/corpus/templates/factory/tsconfig.json +21 -0
  235. package/corpus/templates/factory/vite.config.ts +19 -0
  236. package/corpus/templates/forms/app/components/layout/Sidebar.tsx +55 -5
  237. package/corpus/templates/forms/changelog/2026-07-31-the-agent-native-logo-stays-visible-when-the-sidebar-is-coll.md +6 -0
  238. package/corpus/templates/macros/app/components/layout/AppLayout.tsx +6 -2
  239. package/corpus/templates/plan/app/components/layout/Sidebar.tsx +21 -6
  240. package/corpus/templates/plan/changelog/2026-07-31-clicking-the-agent-native-logo-now-toggles-the-app-sidebar.md +6 -0
  241. package/corpus/templates/slides/.agents/skills/create-deck/SKILL.md +12 -0
  242. package/corpus/templates/slides/.agents/skills/design-systems/SKILL.md +9 -0
  243. package/corpus/templates/slides/.agents/skills/slide-editing/SKILL.md +11 -0
  244. package/corpus/templates/slides/AGENTS.md +5 -6
  245. package/corpus/templates/slides/actions/_await-fit-check.ts +20 -10
  246. package/corpus/templates/slides/actions/add-slide.ts +17 -4
  247. package/corpus/templates/slides/actions/create-design-system.ts +16 -4
  248. package/corpus/templates/slides/actions/delete-design-system.ts +18 -2
  249. package/corpus/templates/slides/actions/get-layout-overflows.ts +88 -0
  250. package/corpus/templates/slides/actions/import-file.ts +1 -0
  251. package/corpus/templates/slides/actions/index-design-system-with-builder.ts +8 -0
  252. package/corpus/templates/slides/actions/patch-deck.ts +48 -16
  253. package/corpus/templates/slides/actions/set-default-design-system.ts +49 -19
  254. package/corpus/templates/slides/actions/update-slide.ts +13 -3
  255. package/corpus/templates/slides/actions/view-screen.ts +87 -10
  256. package/corpus/templates/slides/app/components/deck/SlideRenderer.tsx +155 -28
  257. package/corpus/templates/slides/app/components/design-system/DesignSystemCard.tsx +21 -17
  258. package/corpus/templates/slides/app/components/design-system/DesignSystemSetup.tsx +849 -341
  259. package/corpus/templates/slides/app/components/editor/EditorSidebar.tsx +102 -2
  260. package/corpus/templates/slides/app/components/editor/PromptDialog.tsx +13 -16
  261. package/corpus/templates/slides/app/components/editor/SlideEditor.tsx +60 -12
  262. package/corpus/templates/slides/app/components/editor/SlideOverflowWarning.tsx +11 -1
  263. package/corpus/templates/slides/app/components/layout/Sidebar.tsx +66 -19
  264. package/corpus/templates/slides/app/i18n/en-US.ts +23 -0
  265. package/corpus/templates/slides/app/lib/normalize-slide-padding.ts +8 -15
  266. package/corpus/templates/slides/app/pages/DeckEditor.tsx +4 -3
  267. package/corpus/templates/slides/app/pages/DesignSystems.tsx +4 -3
  268. package/corpus/templates/slides/app/pages/Index.tsx +1 -1
  269. package/corpus/templates/slides/changelog/2026-07-31-design-system-details-now-show-their-source-and-indexing-sta.md +6 -0
  270. package/corpus/templates/slides/changelog/2026-07-31-design-system-indexing-keeps-your-chosen-name-when-you-uploa.md +6 -0
  271. package/corpus/templates/slides/changelog/2026-07-31-design-system-setup-keeps-focus-rings-visible-and-uses-a-sim.md +6 -0
  272. package/corpus/templates/slides/changelog/2026-07-31-skip-prompt-is-now-available-in-the-new-deck-prompt-header.md +6 -0
  273. package/corpus/templates/slides/changelog/2026-07-31-slides-now-detect-real-text-and-box-overflow-across-the-deck.md +6 -0
  274. package/corpus/templates/slides/changelog/2026-07-31-the-agent-native-logo-stays-visible-when-the-sidebar-is-coll.md +6 -0
  275. package/corpus/templates/slides/server/handlers/design-systems.ts +1 -0
  276. package/corpus/templates/slides/server/handlers/index-design-system-sources.ts +1 -0
  277. package/corpus/templates/slides/server/lib/builder-design-system-proxy.ts +23 -4
  278. package/corpus/templates/slides/server/plugins/agent-chat.ts +5 -0
  279. package/corpus/templates/slides/server/plugins/creative-context.ts +16 -3
  280. package/corpus/templates/slides/server/workspace-defaults.ts +5 -1
  281. package/corpus/templates/slides/shared/slide-fit.ts +26 -0
  282. package/corpus/templates/tasks/app/components/layout/Sidebar.tsx +30 -3
  283. package/corpus/templates/tasks/changelog/2026-07-31-clicking-the-agent-native-logo-now-toggles-the-app-sidebar.md +6 -0
  284. package/dist/a2a/correlation.d.ts +4 -1
  285. package/dist/a2a/correlation.d.ts.map +1 -1
  286. package/dist/a2a/correlation.js +8 -1
  287. package/dist/a2a/correlation.js.map +1 -1
  288. package/dist/a2a/types.d.ts +11 -3
  289. package/dist/a2a/types.d.ts.map +1 -1
  290. package/dist/a2a/types.js.map +1 -1
  291. package/dist/agent/engine/ai-sdk-engine.d.ts.map +1 -1
  292. package/dist/agent/engine/ai-sdk-engine.js +27 -41
  293. package/dist/agent/engine/ai-sdk-engine.js.map +1 -1
  294. package/dist/agent/engine/builder-engine.d.ts.map +1 -1
  295. package/dist/agent/engine/builder-engine.js +18 -8
  296. package/dist/agent/engine/builder-engine.js.map +1 -1
  297. package/dist/agent/engine/error-detail.d.ts +61 -0
  298. package/dist/agent/engine/error-detail.d.ts.map +1 -1
  299. package/dist/agent/engine/error-detail.js +145 -3
  300. package/dist/agent/engine/error-detail.js.map +1 -1
  301. package/dist/agent/engine/failure-taxonomy.d.ts +24 -0
  302. package/dist/agent/engine/failure-taxonomy.d.ts.map +1 -0
  303. package/dist/agent/engine/failure-taxonomy.js +88 -0
  304. package/dist/agent/engine/failure-taxonomy.js.map +1 -0
  305. package/dist/agent/engine/index.d.ts +2 -1
  306. package/dist/agent/engine/index.d.ts.map +1 -1
  307. package/dist/agent/engine/index.js +2 -1
  308. package/dist/agent/engine/index.js.map +1 -1
  309. package/dist/agent/engine/registry.d.ts +16 -0
  310. package/dist/agent/engine/registry.d.ts.map +1 -1
  311. package/dist/agent/engine/registry.js +71 -6
  312. package/dist/agent/engine/registry.js.map +1 -1
  313. package/dist/agent/engine/translate-ai-sdk.d.ts.map +1 -1
  314. package/dist/agent/engine/translate-ai-sdk.js +14 -2
  315. package/dist/agent/engine/translate-ai-sdk.js.map +1 -1
  316. package/dist/agent/production-agent.d.ts.map +1 -1
  317. package/dist/agent/production-agent.js +13 -24
  318. package/dist/agent/production-agent.js.map +1 -1
  319. package/dist/agent/run-loop-with-resume.js +1 -1
  320. package/dist/agent/run-loop-with-resume.js.map +1 -1
  321. package/dist/agent/run-manager.d.ts.map +1 -1
  322. package/dist/agent/run-manager.js +39 -10
  323. package/dist/agent/run-manager.js.map +1 -1
  324. package/dist/agent/run-store.d.ts +10 -0
  325. package/dist/agent/run-store.d.ts.map +1 -1
  326. package/dist/agent/run-store.js +20 -3
  327. package/dist/agent/run-store.js.map +1 -1
  328. package/dist/agent/thread-data-builder.d.ts.map +1 -1
  329. package/dist/agent/thread-data-builder.js +28 -4
  330. package/dist/agent/thread-data-builder.js.map +1 -1
  331. package/dist/chat-threads/store.d.ts +13 -0
  332. package/dist/chat-threads/store.d.ts.map +1 -1
  333. package/dist/chat-threads/store.js +35 -0
  334. package/dist/chat-threads/store.js.map +1 -1
  335. package/dist/cli/templates-meta.d.ts.map +1 -1
  336. package/dist/cli/templates-meta.js +13 -0
  337. package/dist/cli/templates-meta.js.map +1 -1
  338. package/dist/cli/workspace-dev.d.ts.map +1 -1
  339. package/dist/cli/workspace-dev.js +1 -0
  340. package/dist/cli/workspace-dev.js.map +1 -1
  341. package/dist/client/error-format.d.ts.map +1 -1
  342. package/dist/client/error-format.js +10 -0
  343. package/dist/client/error-format.js.map +1 -1
  344. package/dist/client/use-chat-threads.d.ts.map +1 -1
  345. package/dist/client/use-chat-threads.js +66 -16
  346. package/dist/client/use-chat-threads.js.map +1 -1
  347. package/dist/collab/awareness.d.ts +2 -2
  348. package/dist/collab/awareness.d.ts.map +1 -1
  349. package/dist/collab/struct-routes.d.ts +1 -1
  350. package/dist/credentials/index.d.ts +9 -2
  351. package/dist/credentials/index.d.ts.map +1 -1
  352. package/dist/credentials/index.js +50 -8
  353. package/dist/credentials/index.js.map +1 -1
  354. package/dist/extensions/url-safety.d.ts.map +1 -1
  355. package/dist/extensions/url-safety.js +38 -12
  356. package/dist/extensions/url-safety.js.map +1 -1
  357. package/dist/integrations/adapters/slack.d.ts.map +1 -1
  358. package/dist/integrations/adapters/slack.js +25 -8
  359. package/dist/integrations/adapters/slack.js.map +1 -1
  360. package/dist/integrations/google-docs-poller.d.ts.map +1 -1
  361. package/dist/integrations/google-docs-poller.js +13 -1
  362. package/dist/integrations/google-docs-poller.js.map +1 -1
  363. package/dist/integrations/installations-store.d.ts +10 -0
  364. package/dist/integrations/installations-store.d.ts.map +1 -1
  365. package/dist/integrations/installations-store.js +24 -0
  366. package/dist/integrations/installations-store.js.map +1 -1
  367. package/dist/integrations/plugin.d.ts.map +1 -1
  368. package/dist/integrations/plugin.js +6 -5
  369. package/dist/integrations/plugin.js.map +1 -1
  370. package/dist/integrations/types.d.ts +7 -0
  371. package/dist/integrations/types.d.ts.map +1 -1
  372. package/dist/integrations/types.js.map +1 -1
  373. package/dist/integrations/webhook-handler.d.ts.map +1 -1
  374. package/dist/integrations/webhook-handler.js +16 -1
  375. package/dist/integrations/webhook-handler.js.map +1 -1
  376. package/dist/jobs/background-automation-runner.d.ts.map +1 -1
  377. package/dist/jobs/background-automation-runner.js +35 -2
  378. package/dist/jobs/background-automation-runner.js.map +1 -1
  379. package/dist/notifications/routes.d.ts +6 -6
  380. package/dist/observability/routes.d.ts +3 -3
  381. package/dist/provider-api/actions/custom-provider-registration.d.ts +14 -14
  382. package/dist/provider-api/actions/provider-api.d.ts +8 -8
  383. package/dist/provider-api/index.js +7 -3
  384. package/dist/provider-api/index.js.map +1 -1
  385. package/dist/scripts/call-agent.d.ts.map +1 -1
  386. package/dist/scripts/call-agent.js +6 -1
  387. package/dist/scripts/call-agent.js.map +1 -1
  388. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  389. package/dist/server/agent-chat-plugin.js +38 -9
  390. package/dist/server/agent-chat-plugin.js.map +1 -1
  391. package/dist/server/agent-discovery.d.ts +2 -0
  392. package/dist/server/agent-discovery.d.ts.map +1 -1
  393. package/dist/server/agent-discovery.js.map +1 -1
  394. package/dist/server/builder-design-systems.d.ts +4 -1
  395. package/dist/server/builder-design-systems.d.ts.map +1 -1
  396. package/dist/server/builder-design-systems.js +11 -1
  397. package/dist/server/builder-design-systems.js.map +1 -1
  398. package/dist/server/credential-provider.d.ts.map +1 -1
  399. package/dist/server/credential-provider.js +49 -12
  400. package/dist/server/credential-provider.js.map +1 -1
  401. package/dist/server/index.d.ts +1 -1
  402. package/dist/server/index.d.ts.map +1 -1
  403. package/dist/server/index.js.map +1 -1
  404. package/dist/server/onboarding-html.d.ts.map +1 -1
  405. package/dist/server/onboarding-html.js +37 -2
  406. package/dist/server/onboarding-html.js.map +1 -1
  407. package/dist/server/transcribe-voice.d.ts +1 -1
  408. package/dist/shared/reasoning-effort.d.ts +1 -0
  409. package/dist/shared/reasoning-effort.d.ts.map +1 -1
  410. package/dist/shared/reasoning-effort.js +1 -1
  411. package/dist/shared/reasoning-effort.js.map +1 -1
  412. package/dist/templates/chat/app/components/layout/Sidebar.tsx +30 -3
  413. package/dist/templates/chat/changelog/2026-07-31-clicking-the-agent-native-logo-now-toggles-the-app-sidebar.md +6 -0
  414. package/dist/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +11 -0
  415. package/package.json +1 -1
  416. package/src/a2a/correlation.ts +11 -1
  417. package/src/a2a/types.ts +11 -3
  418. package/src/agent/engine/ai-sdk-engine.ts +33 -46
  419. package/src/agent/engine/builder-engine.ts +22 -10
  420. package/src/agent/engine/error-detail.ts +184 -3
  421. package/src/agent/engine/failure-taxonomy.ts +123 -0
  422. package/src/agent/engine/index.ts +8 -0
  423. package/src/agent/engine/registry.ts +92 -8
  424. package/src/agent/engine/translate-ai-sdk.ts +17 -2
  425. package/src/agent/production-agent.ts +13 -33
  426. package/src/agent/run-loop-with-resume.ts +1 -1
  427. package/src/agent/run-manager.ts +43 -14
  428. package/src/agent/run-store.ts +30 -3
  429. package/src/agent/thread-data-builder.ts +36 -4
  430. package/src/chat-threads/store.ts +42 -0
  431. package/src/cli/templates-meta.ts +13 -0
  432. package/src/cli/workspace-dev.ts +1 -0
  433. package/src/client/error-format.ts +12 -0
  434. package/src/client/use-chat-threads.ts +76 -16
  435. package/src/credentials/index.ts +51 -12
  436. package/src/extensions/url-safety.ts +46 -12
  437. package/src/integrations/adapters/slack.ts +32 -10
  438. package/src/integrations/google-docs-poller.ts +12 -1
  439. package/src/integrations/installations-store.ts +30 -0
  440. package/src/integrations/plugin.ts +5 -5
  441. package/src/integrations/types.ts +7 -0
  442. package/src/integrations/webhook-handler.ts +24 -1
  443. package/src/jobs/background-automation-runner.ts +38 -1
  444. package/src/provider-api/index.ts +8 -2
  445. package/src/scripts/call-agent.ts +6 -0
  446. package/src/server/agent-chat-plugin.ts +46 -10
  447. package/src/server/agent-discovery.ts +2 -0
  448. package/src/server/builder-design-systems.ts +21 -0
  449. package/src/server/credential-provider.ts +51 -12
  450. package/src/server/index.ts +1 -0
  451. package/src/server/onboarding-html.ts +37 -2
  452. package/src/shared/reasoning-effort.ts +1 -1
  453. package/src/templates/chat/app/components/layout/Sidebar.tsx +30 -3
  454. package/src/templates/chat/changelog/2026-07-31-clicking-the-agent-native-logo-now-toggles-the-app-sidebar.md +6 -0
  455. package/src/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +11 -0
  456. package/corpus/templates/clips/desktop/src/lib/media-device-selection.ts +0 -157
@@ -1452,6 +1452,10 @@ const enUS = {
1452
1452
  figmaCreateSuccess: "Design system created from Figma",
1453
1453
  figmaCreateError: "Could not create the design system",
1454
1454
  backToDesignSystems: "Back to design systems",
1455
+ otherSources: "Other",
1456
+ otherSourcesDescription:
1457
+ "Connect from a website, code, files, or an existing design system.",
1458
+ chooseSourcePrompt: "Choose one source to configure",
1455
1459
  continue: "Continue to generation",
1456
1460
  title: "Set up your design system",
1457
1461
  description:
@@ -1924,6 +1928,9 @@ const designLocaleOverrides = {
1924
1928
  figmaCreateSuccess: "由Figma创建的设计系统",
1925
1929
  figmaCreateError: "无法创建设计系统",
1926
1930
  backToDesignSystems: "返回设计系统",
1931
+ otherSources: "其他",
1932
+ otherSourcesDescription: "从网站、代码、文件或现有设计系统连接。",
1933
+ chooseSourcePrompt: "选择一个来源进行配置",
1927
1934
  continue: "继续生成",
1928
1935
  title: "设置您的设计系统",
1929
1936
  description:
@@ -2329,6 +2336,10 @@ const designLocaleOverrides = {
2329
2336
  figmaCreateSuccess: "Sistema de diseño creado a partir de Figma.",
2330
2337
  figmaCreateError: "No se pudo crear el sistema de diseño.",
2331
2338
  backToDesignSystems: "Volver a sistemas de diseño",
2339
+ otherSources: "Otros",
2340
+ otherSourcesDescription:
2341
+ "Conecta desde un sitio web, código, archivos o un sistema de diseño existente.",
2342
+ chooseSourcePrompt: "Elige una fuente para configurar",
2332
2343
  continue: "continuar con la generación",
2333
2344
  title: "Configure su sistema de diseño",
2334
2345
  description:
@@ -2756,6 +2767,10 @@ const designLocaleOverrides = {
2756
2767
  figmaCreateSuccess: "Système de conception créé à partir de Figma",
2757
2768
  figmaCreateError: "Impossible de créer le système de conception",
2758
2769
  backToDesignSystems: "Retour aux systèmes de conception",
2770
+ otherSources: "Autre",
2771
+ otherSourcesDescription:
2772
+ "Connectez-vous depuis un site web, du code, des fichiers ou un système de conception existant.",
2773
+ chooseSourcePrompt: "Choisissez une source à configurer",
2759
2774
  continue: "Continuer jusqu'à la génération",
2760
2775
  title: "Configurez votre système de conception",
2761
2776
  description:
@@ -3183,6 +3198,10 @@ const designLocaleOverrides = {
3183
3198
  figmaCreateSuccess: "Designsystem erstellt aus Figma",
3184
3199
  figmaCreateError: "Das Designsystem konnte nicht erstellt werden",
3185
3200
  backToDesignSystems: "Zurück zu Designsystemen",
3201
+ otherSources: "Andere",
3202
+ otherSourcesDescription:
3203
+ "Von einer Website, Code, Dateien oder einem vorhandenen Designsystem verbinden.",
3204
+ chooseSourcePrompt: "Quelle zum Konfigurieren auswählen",
3186
3205
  continue: "Weiter zur Generation",
3187
3206
  title: "Richten Sie Ihr Designsystem ein",
3188
3207
  description:
@@ -3610,6 +3629,10 @@ const designLocaleOverrides = {
3610
3629
  figmaCreateSuccess: "Figma から作成されたデザインシステム",
3611
3630
  figmaCreateError: "デザインシステムを作成できませんでした",
3612
3631
  backToDesignSystems: "設計システムに戻る",
3632
+ otherSources: "その他",
3633
+ otherSourcesDescription:
3634
+ "Webサイト、コード、ファイル、または既存のデザインシステムから接続します。",
3635
+ chooseSourcePrompt: "設定するソースを選択",
3613
3636
  continue: "世代を継続する",
3614
3637
  title: "デザインシステムをセットアップする",
3615
3638
  description:
@@ -4032,6 +4055,10 @@ const designLocaleOverrides = {
4032
4055
  figmaCreateSuccess: "Figma에서 생성된 디자인 시스템",
4033
4056
  figmaCreateError: "디자인 시스템을 만들 수 없습니다",
4034
4057
  backToDesignSystems: "디자인 시스템으로 돌아가기",
4058
+ otherSources: "기타",
4059
+ otherSourcesDescription:
4060
+ "웹사이트, 코드, 파일 또는 기존 디자인 시스템에서 연결합니다.",
4061
+ chooseSourcePrompt: "구성할 소스 선택",
4035
4062
  continue: "세대를 이어가다",
4036
4063
  title: "디자인 시스템 설정",
4037
4064
  description:
@@ -4448,6 +4475,10 @@ const designLocaleOverrides = {
4448
4475
  figmaCreateSuccess: "Sistema de design criado a partir de Figma",
4449
4476
  figmaCreateError: "Não foi possível criar o sistema de design",
4450
4477
  backToDesignSystems: "Voltar para sistemas de design",
4478
+ otherSources: "Outro",
4479
+ otherSourcesDescription:
4480
+ "Conecte-se de um site, código, arquivos ou um sistema de design existente.",
4481
+ chooseSourcePrompt: "Escolha uma fonte para configurar",
4451
4482
  continue: "Continuar para a geração",
4452
4483
  title: "Configure seu sistema de design",
4453
4484
  description:
@@ -4870,6 +4901,10 @@ const designLocaleOverrides = {
4870
4901
  figmaCreateSuccess: "Figma से डिज़ाइन सिस्टम बनाया गया",
4871
4902
  figmaCreateError: "डिज़ाइन सिस्टम नहीं बनाया जा सका",
4872
4903
  backToDesignSystems: "डिज़ाइन सिस्टम पर वापस जाएँ",
4904
+ otherSources: "अन्य",
4905
+ otherSourcesDescription:
4906
+ "वेबसाइट, कोड, फ़ाइलों या मौजूदा डिज़ाइन सिस्टम से कनेक्ट करें।",
4907
+ chooseSourcePrompt: "कॉन्फ़िगर करने के लिए एक स्रोत चुनें",
4873
4908
  continue: "पीढ़ी तक जारी रखें",
4874
4909
  title: "अपना डिज़ाइन सिस्टम सेट करें",
4875
4910
  description:
@@ -5282,6 +5317,10 @@ const designLocaleOverrides = {
5282
5317
  figmaCreateSuccess: "تم إنشاء نظام التصميم من Figma",
5283
5318
  figmaCreateError: "لا يمكن إنشاء نظام التصميم",
5284
5319
  backToDesignSystems: "العودة إلى أنظمة التصميم",
5320
+ otherSources: "أخرى",
5321
+ otherSourcesDescription:
5322
+ "الاتصال من موقع ويب أو رمز أو ملفات أو نظام تصميم موجود.",
5323
+ chooseSourcePrompt: "اختر مصدرًا لتهيئته",
5285
5324
  continue: "الاستمرار في الجيل",
5286
5325
  title: "قم بإعداد نظام التصميم الخاص بك",
5287
5326
  description:
@@ -1,4 +1,7 @@
1
- import { useActionQuery } from "@agent-native/core/client/hooks";
1
+ import {
2
+ useActionMutation,
3
+ useActionQuery,
4
+ } from "@agent-native/core/client/hooks";
2
5
  import { useT } from "@agent-native/core/client/i18n";
3
6
  import { openAgentSidebar } from "@agent-native/core/client/navigation";
4
7
  import { withBuilderUtmTrackingParams } from "@agent-native/core/shared";
@@ -19,6 +22,7 @@ import {
19
22
  IconPalette,
20
23
  IconCheck,
21
24
  IconExternalLink,
25
+ IconChevronDown,
22
26
  } from "@tabler/icons-react";
23
27
  import { useState, useCallback, useRef, useMemo, useEffect } from "react";
24
28
  import { Link, useNavigate, useSearchParams } from "react-router";
@@ -34,6 +38,7 @@ import {
34
38
  pollDecodeJobStatus,
35
39
  type DecodeJobStatus,
36
40
  } from "@/lib/builder-design-system-upload";
41
+ import { cn } from "@/lib/utils";
37
42
 
38
43
  interface GitHubLink {
39
44
  id: string;
@@ -48,6 +53,8 @@ interface UploadedFile {
48
53
  textContent?: string;
49
54
  }
50
55
 
56
+ type OtherSource = "brand" | "code" | "files" | "existing" | "notes";
57
+
51
58
  interface BuilderIndexResult {
52
59
  ok: boolean;
53
60
  source: "builder";
@@ -81,6 +88,8 @@ export default function DesignSystemSetup() {
81
88
  const [notes, setNotes] = useState("");
82
89
  const [customInstructions, setCustomInstructions] = useState("");
83
90
  const [validationError, setValidationError] = useState<string | null>(null);
91
+ const [sourcePanel, setSourcePanel] = useState<"figma" | "other">("figma");
92
+ const [otherSource, setOtherSource] = useState<OtherSource | null>(null);
84
93
 
85
94
  const docInputRef = useRef<HTMLInputElement>(null);
86
95
  const imageInputRef = useRef<HTMLInputElement>(null);
@@ -95,6 +104,7 @@ export default function DesignSystemSetup() {
95
104
  const { data: designSystemsData } = useActionQuery<{
96
105
  designSystems: Array<{ id: string; title: string }>;
97
106
  }>("list-design-systems");
107
+ const updateSystemMutation = useActionMutation("update-design-system");
98
108
 
99
109
  const existingProjects = designsData?.designs ?? [];
100
110
  const existingSystems = designSystemsData?.designSystems ?? [];
@@ -185,7 +195,7 @@ export default function DesignSystemSetup() {
185
195
  .replace(/[-_]+/g, " ")
186
196
  .trim() || "Imported brand";
187
197
  const json = await uploadAndIndexFigmaFiles([file], {
188
- projectName: suggestedTitle,
198
+ projectName: companyInfo.trim() || suggestedTitle,
189
199
  });
190
200
  const parsed = json as unknown as BuilderIndexResult;
191
201
  if (parsed.jobId) {
@@ -203,7 +213,7 @@ export default function DesignSystemSetup() {
203
213
  setBuilderIndexing(false);
204
214
  }
205
215
  },
206
- [t, startDecodePolling, stopDecodePolling],
216
+ [companyInfo, t, startDecodePolling, stopDecodePolling],
207
217
  );
208
218
 
209
219
  useEffect(() => {
@@ -248,6 +258,11 @@ export default function DesignSystemSetup() {
248
258
  customInstructions,
249
259
  ]);
250
260
 
261
+ const selectOtherSource = useCallback((source: OtherSource) => {
262
+ setSourcePanel("other");
263
+ setOtherSource((current) => (current === source ? null : source));
264
+ }, []);
265
+
251
266
  const addWebsiteUrl = useCallback(() => {
252
267
  const url = websiteUrl.trim();
253
268
  if (!url) {
@@ -386,7 +401,7 @@ export default function DesignSystemSetup() {
386
401
  [readTextFiles],
387
402
  );
388
403
 
389
- const handleContinue = useCallback(() => {
404
+ const handleContinue = useCallback(async () => {
390
405
  if (!hasAnySources) {
391
406
  setValidationError(t("designSystemSetup.errors.noSources"));
392
407
  return;
@@ -422,7 +437,9 @@ export default function DesignSystemSetup() {
422
437
  );
423
438
 
424
439
  if (companyInfo.trim()) {
425
- parts.push(`\n## Company / Brand\n${companyInfo.trim()}`);
440
+ parts.push(
441
+ `\n## Company / Brand\n${companyInfo.trim()}\n\nUse exactly this as the design system name. Never replace it with the uploaded Figma filename.`,
442
+ );
426
443
  }
427
444
 
428
445
  if (normalizedWebsiteUrls.length > 0) {
@@ -513,6 +530,23 @@ export default function DesignSystemSetup() {
513
530
  );
514
531
  }
515
532
 
533
+ const requestedTitle = companyInfo.trim();
534
+ const localDesignSystemId = builderIndexResult?.localDesignSystemId;
535
+ if (requestedTitle && localDesignSystemId) {
536
+ try {
537
+ await updateSystemMutation.mutateAsync({
538
+ id: localDesignSystemId,
539
+ title: requestedTitle,
540
+ });
541
+ } catch (error) {
542
+ toast.error(t("common.genericError"), {
543
+ description:
544
+ error instanceof Error ? error.message : t("common.genericError"),
545
+ });
546
+ return;
547
+ }
548
+ }
549
+
516
550
  parts.push(
517
551
  `\n---\nAfter processing all sources, if you started Builder DSI indexing, report the Builder job/design-system URL plus the local selectable design-system id returned by \`index-design-system-with-builder\`. Do not call \`create-design-system\` again for Builder-indexed Figma/code/design.md sources. If you processed non-Builder sources into concrete tokens, call \`create-design-system\` with the combined tokens${
518
552
  customInstructions.trim()
@@ -547,6 +581,7 @@ export default function DesignSystemSetup() {
547
581
  existingSystems,
548
582
  navigate,
549
583
  t,
584
+ updateSystemMutation,
550
585
  ]);
551
586
 
552
587
  useSetPageTitle(
@@ -597,11 +632,23 @@ export default function DesignSystemSetup() {
597
632
  </div>
598
633
  )}
599
634
 
600
- <div className="space-y-8">
635
+ <div className="space-y-5">
601
636
  {/* Start from a Figma file via Builder DSI. */}
637
+ <SourceAccordionRow
638
+ icon={IconBrandFigma}
639
+ title={t("designSystemSetup.sections.figma.title")}
640
+ description={t("designSystemSetup.sections.figma.description")}
641
+ expanded={sourcePanel === "figma"}
642
+ onClick={() => setSourcePanel("figma")}
643
+ panelId="design-system-figma-source"
644
+ />
602
645
  <Section
603
646
  title={t("designSystemSetup.sections.figma.title")}
604
647
  description={t("designSystemSetup.sections.figma.description")}
648
+ hidden={sourcePanel !== "figma"}
649
+ hideHeading
650
+ id="design-system-figma-source"
651
+ className="rounded-lg border border-border bg-card p-4"
605
652
  >
606
653
  {!builderIndexResult ? (
607
654
  <>
@@ -655,6 +702,7 @@ export default function DesignSystemSetup() {
655
702
  <BuilderIndexPreview
656
703
  result={builderIndexResult}
657
704
  decodeStatus={decodeStatus}
705
+ displayTitle={companyInfo.trim()}
658
706
  onReset={() => {
659
707
  stopDecodePolling();
660
708
  setDecodeStatus(null);
@@ -665,10 +713,97 @@ export default function DesignSystemSetup() {
665
713
  )}
666
714
  </Section>
667
715
 
716
+ <SourceAccordionRow
717
+ icon={IconPalette}
718
+ title={t("designSystemSetup.otherSources")}
719
+ description={t("designSystemSetup.otherSourcesDescription")}
720
+ expanded={sourcePanel === "other"}
721
+ onClick={() => setSourcePanel("other")}
722
+ panelId="design-system-other-sources"
723
+ />
724
+ {sourcePanel === "other" && (
725
+ <div
726
+ id="design-system-other-sources"
727
+ className="overflow-hidden rounded-lg border border-border"
728
+ >
729
+ <div className="border-b border-border px-4 py-3">
730
+ <p className="text-xs font-medium text-foreground/70">
731
+ {t("designSystemSetup.chooseSourcePrompt")}
732
+ </p>
733
+ </div>
734
+ <div className="divide-y divide-border">
735
+ <SourceAccordionRow
736
+ className="rounded-none border-0"
737
+ icon={IconPalette}
738
+ title={t("designSystemSetup.sections.company.title")}
739
+ description={t(
740
+ "designSystemSetup.sections.company.description",
741
+ )}
742
+ expanded={otherSource === "brand"}
743
+ onClick={() => selectOtherSource("brand")}
744
+ panelId="design-system-brand-source"
745
+ />
746
+ <SourceAccordionRow
747
+ className="rounded-none border-0"
748
+ icon={IconBrandGithub}
749
+ title={t("designSystemSetup.sections.code.title")}
750
+ description={t(
751
+ "designSystemSetup.sections.code.description",
752
+ )}
753
+ expanded={otherSource === "code"}
754
+ onClick={() => selectOtherSource("code")}
755
+ panelId="design-system-code-source"
756
+ />
757
+ <SourceAccordionRow
758
+ className="rounded-none border-0"
759
+ icon={IconFileDescription}
760
+ title={t("designSystemSetup.sections.designFiles.title")}
761
+ description={t(
762
+ "designSystemSetup.sections.designFiles.description",
763
+ )}
764
+ expanded={otherSource === "files"}
765
+ onClick={() => selectOtherSource("files")}
766
+ panelId="design-system-file-source"
767
+ />
768
+ {(existingProjects.length > 0 ||
769
+ existingSystems.length > 0) && (
770
+ <SourceAccordionRow
771
+ className="rounded-none border-0"
772
+ icon={IconPalette}
773
+ title={t(
774
+ "designSystemSetup.sections.importExisting.title",
775
+ )}
776
+ description={t(
777
+ "designSystemSetup.sections.importExisting.description",
778
+ )}
779
+ expanded={otherSource === "existing"}
780
+ onClick={() => selectOtherSource("existing")}
781
+ panelId="design-system-existing-source"
782
+ />
783
+ )}
784
+ <SourceAccordionRow
785
+ className="rounded-none border-0"
786
+ icon={IconFileDescription}
787
+ title={t("designSystemSetup.sections.notes.title")}
788
+ description={t(
789
+ "designSystemSetup.sections.notes.description",
790
+ )}
791
+ expanded={otherSource === "notes"}
792
+ onClick={() => selectOtherSource("notes")}
793
+ panelId="design-system-notes-source"
794
+ />
795
+ </div>
796
+ </div>
797
+ )}
798
+
668
799
  {/* Company / Brand */}
669
800
  <Section
670
801
  title={t("designSystemSetup.sections.company.title")}
671
802
  description={t("designSystemSetup.sections.company.description")}
803
+ hidden={sourcePanel !== "other" || otherSource !== "brand"}
804
+ hideHeading
805
+ id="design-system-brand-source"
806
+ className="rounded-lg border border-border bg-card p-4"
672
807
  >
673
808
  <Textarea
674
809
  value={companyInfo}
@@ -733,6 +868,10 @@ export default function DesignSystemSetup() {
733
868
  <Section
734
869
  title={t("designSystemSetup.sections.code.title")}
735
870
  description={t("designSystemSetup.sections.code.description")}
871
+ hidden={sourcePanel !== "other" || otherSource !== "code"}
872
+ hideHeading
873
+ id="design-system-code-source"
874
+ className="rounded-lg border border-border bg-card p-4"
736
875
  >
737
876
  {/* GitHub */}
738
877
  <div className="mb-4">
@@ -863,6 +1002,10 @@ export default function DesignSystemSetup() {
863
1002
  description={t(
864
1003
  "designSystemSetup.sections.designFiles.description",
865
1004
  )}
1005
+ hidden={sourcePanel !== "other" || otherSource !== "files"}
1006
+ hideHeading
1007
+ id="design-system-file-source"
1008
+ className="rounded-lg border border-border bg-card p-4"
866
1009
  >
867
1010
  {/* Figma .fig import lives in the "Start from a Figma file"
868
1011
  section at the top — it deeply parses the file in-process. */}
@@ -970,6 +1113,10 @@ export default function DesignSystemSetup() {
970
1113
  description={t(
971
1114
  "designSystemSetup.sections.importExisting.description",
972
1115
  )}
1116
+ hidden={sourcePanel !== "other" || otherSource !== "existing"}
1117
+ hideHeading
1118
+ id="design-system-existing-source"
1119
+ className="rounded-lg border border-border bg-card p-4"
973
1120
  >
974
1121
  <div className="grid grid-cols-2 gap-2">
975
1122
  {existingSystems.map((ds) => (
@@ -1027,6 +1174,10 @@ export default function DesignSystemSetup() {
1027
1174
  <Section
1028
1175
  title={t("designSystemSetup.sections.notes.title")}
1029
1176
  description={t("designSystemSetup.sections.notes.description")}
1177
+ hidden={sourcePanel !== "other" || otherSource !== "notes"}
1178
+ hideHeading
1179
+ id="design-system-notes-source"
1180
+ className="rounded-lg border border-border bg-card p-4"
1030
1181
  >
1031
1182
  <Textarea
1032
1183
  value={notes}
@@ -1043,6 +1194,9 @@ export default function DesignSystemSetup() {
1043
1194
  description={t(
1044
1195
  "designSystemSetup.sections.customInstructions.description",
1045
1196
  )}
1197
+ hidden={sourcePanel !== "other" || otherSource !== "notes"}
1198
+ hideHeading
1199
+ className="rounded-lg border border-border bg-card p-4"
1046
1200
  >
1047
1201
  <Textarea
1048
1202
  value={customInstructions}
@@ -1077,22 +1231,83 @@ function Section({
1077
1231
  title,
1078
1232
  description,
1079
1233
  children,
1234
+ hidden = false,
1235
+ hideHeading = false,
1236
+ id,
1237
+ className,
1080
1238
  }: {
1081
1239
  title: string;
1082
1240
  description: string;
1083
1241
  children: React.ReactNode;
1242
+ hidden?: boolean;
1243
+ hideHeading?: boolean;
1244
+ id?: string;
1245
+ className?: string;
1084
1246
  }) {
1247
+ if (hidden) return null;
1085
1248
  return (
1086
- <section>
1087
- <div className="mb-3">
1088
- <h2 className="text-sm font-medium text-foreground/70">{title}</h2>
1089
- <p className="text-xs text-muted-foreground/70 mt-0.5">{description}</p>
1090
- </div>
1249
+ <section id={id} className={className}>
1250
+ {!hideHeading && (
1251
+ <div className="mb-3">
1252
+ <h2 className="text-sm font-medium text-foreground/70">{title}</h2>
1253
+ <p className="mt-0.5 text-xs text-muted-foreground/70">
1254
+ {description}
1255
+ </p>
1256
+ </div>
1257
+ )}
1091
1258
  {children}
1092
1259
  </section>
1093
1260
  );
1094
1261
  }
1095
1262
 
1263
+ function SourceAccordionRow({
1264
+ icon: Icon,
1265
+ title,
1266
+ description,
1267
+ expanded,
1268
+ onClick,
1269
+ panelId,
1270
+ className,
1271
+ }: {
1272
+ icon: React.ComponentType<{ className?: string }>;
1273
+ title: string;
1274
+ description: string;
1275
+ expanded: boolean;
1276
+ onClick: () => void;
1277
+ panelId: string;
1278
+ className?: string;
1279
+ }) {
1280
+ return (
1281
+ <button
1282
+ type="button"
1283
+ aria-controls={panelId}
1284
+ aria-expanded={expanded}
1285
+ onClick={onClick}
1286
+ className={cn(
1287
+ "flex w-full items-center gap-3 rounded-lg border border-border px-4 py-3 text-left transition-[background-color,border-color] duration-150 hover:bg-accent/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
1288
+ expanded && "bg-accent/40",
1289
+ className,
1290
+ )}
1291
+ >
1292
+ <Icon className="size-4 shrink-0 text-muted-foreground" />
1293
+ <span className="min-w-0 flex-1">
1294
+ <span className="block text-sm font-medium text-foreground/90">
1295
+ {title}
1296
+ </span>
1297
+ <span className="mt-0.5 block truncate text-xs text-muted-foreground">
1298
+ {description}
1299
+ </span>
1300
+ </span>
1301
+ <IconChevronDown
1302
+ className={cn(
1303
+ "size-4 shrink-0 text-muted-foreground transition-transform duration-150",
1304
+ expanded && "rotate-180",
1305
+ )}
1306
+ />
1307
+ </button>
1308
+ );
1309
+ }
1310
+
1096
1311
  function FileList({
1097
1312
  files,
1098
1313
  onRemove,
@@ -1128,10 +1343,12 @@ function FileList({
1128
1343
  function BuilderIndexPreview({
1129
1344
  result,
1130
1345
  decodeStatus,
1346
+ displayTitle,
1131
1347
  onReset,
1132
1348
  }: {
1133
1349
  result: BuilderIndexResult;
1134
1350
  decodeStatus: DecodeJobStatus | null;
1351
+ displayTitle?: string;
1135
1352
  onReset: () => void;
1136
1353
  }) {
1137
1354
  const t = useT();
@@ -1146,7 +1363,7 @@ function BuilderIndexPreview({
1146
1363
  </div>
1147
1364
  <div className="min-w-0 flex-1">
1148
1365
  <h3 className="text-sm font-semibold text-foreground">
1149
- {result.suggestedTitle}
1366
+ {displayTitle || result.suggestedTitle}
1150
1367
  </h3>
1151
1368
  <p className="mt-1 text-xs leading-relaxed text-muted-foreground">
1152
1369
  {
@@ -220,7 +220,7 @@ export default function DesignSystems() {
220
220
  }, []);
221
221
 
222
222
  const handleSetDefault = useCallback(
223
- (id: string) => {
223
+ (id: string, isDefault: boolean) => {
224
224
  // Optimistic update
225
225
  queryClient.setQueryData(
226
226
  ["action", "list-design-systems", undefined],
@@ -230,13 +230,17 @@ export default function DesignSystems() {
230
230
  ...old,
231
231
  designSystems: old.designSystems.map((ds: DesignSystem) => ({
232
232
  ...ds,
233
- isDefault: ds.id === id,
233
+ isDefault: isDefault
234
+ ? ds.id === id
235
+ : ds.id === id
236
+ ? false
237
+ : ds.isDefault,
234
238
  })),
235
239
  };
236
240
  },
237
241
  );
238
242
 
239
- setDefaultMutation.mutate({ id } as any, {
243
+ setDefaultMutation.mutate({ id, isDefault } as any, {
240
244
  onError: () => {
241
245
  queryClient.invalidateQueries({
242
246
  queryKey: ["action", "list-design-systems"],
@@ -645,7 +649,9 @@ export default function DesignSystems() {
645
649
  <Tooltip>
646
650
  <TooltipTrigger asChild>
647
651
  <button
648
- onClick={() => handleSetDefault(ds.id)}
652
+ onClick={() =>
653
+ handleSetDefault(ds.id, !ds.isDefault)
654
+ }
649
655
  className="absolute top-2 end-2 opacity-0 group-hover:opacity-100 w-7 h-7 flex items-center justify-center rounded-md bg-black/60 hover:bg-black/80 cursor-pointer"
650
656
  >
651
657
  {ds.isDefault ? (
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: fixed
3
+ date: 2026-07-30
4
+ ---
5
+
6
+ Fixed the keyboard shortcuts panel not opening with Ctrl+Shift+? on macOS, inside the canvas, or during agent question flows
@@ -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.
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: fixed
3
+ date: 2026-07-31
4
+ ---
5
+
6
+ Design-system indexing keeps your chosen name when you upload a Figma file and shares new organization systems with teammates.
@@ -3,7 +3,7 @@ import {
3
3
  localBuilderDesignSystemId,
4
4
  type BuilderDesignSystemIndexResult,
5
5
  } from "@agent-native/core/server";
6
- import { eq } from "drizzle-orm";
6
+ import { and, eq, isNull } from "drizzle-orm";
7
7
  import { nanoid } from "nanoid";
8
8
 
9
9
  import { getDb, schema } from "../db/index.js";
@@ -36,15 +36,19 @@ export async function upsertBuilderProxyDesignSystem({
36
36
  .select({
37
37
  id: schema.designSystems.id,
38
38
  ownerEmail: schema.designSystems.ownerEmail,
39
+ orgId: schema.designSystems.orgId,
39
40
  })
40
41
  .from(schema.designSystems)
41
42
  .where(eq(schema.designSystems.id, baseLocalDesignSystemId))
42
43
  .limit(1);
44
+ const existingBelongsToScope =
45
+ existing?.ownerEmail === ownerEmail &&
46
+ (existing?.orgId ?? null) === (orgId ?? null);
43
47
  const localDesignSystemId =
44
- existing && existing.ownerEmail !== ownerEmail
48
+ existing && !existingBelongsToScope
45
49
  ? `${baseLocalDesignSystemId}-${nanoid(8)}`
46
50
  : baseLocalDesignSystemId;
47
- if (existing && existing.ownerEmail === ownerEmail) {
51
+ if (existingBelongsToScope) {
48
52
  await db
49
53
  .update(schema.designSystems)
50
54
  .set({
@@ -60,7 +64,17 @@ export async function upsertBuilderProxyDesignSystem({
60
64
  const [ownedSystem] = await db
61
65
  .select({ id: schema.designSystems.id })
62
66
  .from(schema.designSystems)
63
- .where(eq(schema.designSystems.ownerEmail, ownerEmail))
67
+ .where(
68
+ orgId
69
+ ? and(
70
+ eq(schema.designSystems.ownerEmail, ownerEmail),
71
+ eq(schema.designSystems.orgId, orgId),
72
+ )
73
+ : and(
74
+ eq(schema.designSystems.ownerEmail, ownerEmail),
75
+ isNull(schema.designSystems.orgId),
76
+ ),
77
+ )
64
78
  .limit(1);
65
79
  await db.insert(schema.designSystems).values({
66
80
  id: localDesignSystemId,
@@ -72,6 +86,7 @@ export async function upsertBuilderProxyDesignSystem({
72
86
  isDefault: !ownedSystem,
73
87
  ownerEmail,
74
88
  orgId: orgId ?? null,
89
+ visibility: orgId ? "org" : "private",
75
90
  createdAt: now,
76
91
  updatedAt: now,
77
92
  });
@@ -59,6 +59,10 @@ ladder.
59
59
  infer run failure from thread text search. Cross-app results may be partial;
60
60
  preserve the returned per-source health instead of treating an unavailable
61
61
  source as zero failures.
62
+ - For a Slack-linked issue, call `read-slack-thread-context` with the exact
63
+ permalink before diagnosing it. It resolves child links to the parent thread,
64
+ preserves attachments and related URLs, and reports whether pagination is
65
+ complete. Never treat an unreadable Slack thread as an empty one.
62
66
 
63
67
  ## Application State
64
68