@agent-native/core 0.117.2 → 0.118.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 (776) hide show
  1. package/corpus/README.md +3 -3
  2. package/corpus/core/CHANGELOG.md +51 -0
  3. package/corpus/core/docs/content/custom-design-system.mdx +445 -0
  4. package/corpus/core/docs/content/toolkit-ui.mdx +16 -0
  5. package/corpus/core/package.json +1 -1
  6. package/corpus/core/src/a2a/client.ts +32 -10
  7. package/corpus/core/src/a2a/types.ts +1 -0
  8. package/corpus/core/src/agent/types.ts +1 -1
  9. package/corpus/core/src/cli/index.ts +18 -10
  10. package/corpus/core/src/cli/multi-frontier-runs.ts +5 -3
  11. package/corpus/core/src/cli/templates-meta.ts +0 -12
  12. package/corpus/core/src/cli/workspace-dev.ts +1 -1
  13. package/corpus/core/src/client/AgentPanel.tsx +99 -108
  14. package/corpus/core/src/client/AssistantChat.tsx +30 -13
  15. package/corpus/core/src/client/CommandMenu.tsx +68 -178
  16. package/corpus/core/src/client/RunStuckBanner.tsx +39 -47
  17. package/corpus/core/src/client/agent-chat-adapter.ts +3 -1
  18. package/corpus/core/src/client/app-providers.tsx +1 -1
  19. package/corpus/core/src/client/chat/action-chat-ui-surface.tsx +32 -0
  20. package/corpus/core/src/client/chat/message-components.tsx +169 -18
  21. package/corpus/core/src/client/chat/tool-call-display.tsx +50 -14
  22. package/corpus/core/src/client/chat/widgets/InlineExtensionWidget.tsx +13 -40
  23. package/corpus/core/src/client/chat/widgets/builtin-tool-renderers.tsx +7 -3
  24. package/corpus/core/src/client/components/ui/message-scroller.tsx +15 -1
  25. package/corpus/core/src/client/conversation/AgentConversation.tsx +12 -1
  26. package/corpus/core/src/client/error-capture.ts +2 -6
  27. package/corpus/core/src/client/i18n.tsx +22 -0
  28. package/corpus/core/src/client/index.ts +17 -0
  29. package/corpus/core/src/client/org/TeamPage.tsx +257 -153
  30. package/corpus/core/src/client/progress/RunsTray.tsx +89 -88
  31. package/corpus/core/src/client/resources/McpConnectionSuggestion.tsx +25 -16
  32. package/corpus/core/src/client/resources/McpIntegrationDialog.tsx +34 -13
  33. package/corpus/core/src/client/resources/ResourcesPanel.tsx +5 -1
  34. package/corpus/core/src/client/resources/mcp-integration-catalog.ts +20 -17
  35. package/corpus/core/src/client/resources/mcp-integration-logos.ts +2 -2
  36. package/corpus/core/src/client/route-chunk-recovery.ts +5 -3
  37. package/corpus/core/src/client/session-replay.ts +3 -3
  38. package/corpus/core/src/client/settings/DemoModeSection.tsx +6 -18
  39. package/corpus/core/src/client/settings/SecretsSection.tsx +97 -52
  40. package/corpus/core/src/client/settings/SettingsPanel.tsx +217 -252
  41. package/corpus/core/src/client/settings/SettingsTabsPage.tsx +23 -2
  42. package/corpus/core/src/client/settings/VoiceTranscriptionSection.tsx +7 -18
  43. package/corpus/core/src/client/settings/index.ts +7 -0
  44. package/corpus/core/src/client/settings/useSettingsPanelController.ts +155 -0
  45. package/corpus/core/src/client/setup-connections/BuilderConnectCard.tsx +116 -51
  46. package/corpus/core/src/client/setup-connections/index.ts +10 -0
  47. package/corpus/core/src/client/setup-connections/useBuilderConnectCardController.ts +82 -0
  48. package/corpus/core/src/client/sharing/ShareButton.tsx +64 -586
  49. package/corpus/core/src/client/sharing/ShareDialog.tsx +299 -633
  50. package/corpus/core/src/client/sharing/index.ts +42 -0
  51. package/corpus/core/src/client/sharing/share-controller-helpers.ts +318 -0
  52. package/corpus/core/src/client/sharing/useShareButtonController.ts +600 -0
  53. package/corpus/core/src/client/sharing/useShareDialogController.ts +559 -0
  54. package/corpus/core/src/client/sse-event-processor.ts +23 -0
  55. package/corpus/core/src/client/tool-display.ts +71 -0
  56. package/corpus/core/src/client/transcription/use-live-transcription.ts +64 -45
  57. package/corpus/core/src/client/use-agent-engine-configured.ts +12 -19
  58. package/corpus/core/src/client/use-chat-threads.ts +33 -12
  59. package/corpus/core/src/deploy/build.ts +2 -1
  60. package/corpus/core/src/guards/db-tool-scoping.ts +1 -1
  61. package/corpus/core/src/integrations/adapters/slack.ts +84 -5
  62. package/corpus/core/src/integrations/index.ts +5 -1
  63. package/corpus/core/src/localization/default-messages.ts +6 -1
  64. package/corpus/core/src/mcp-client/oauth-routes.ts +61 -14
  65. package/corpus/core/src/scripts/call-agent.ts +5 -1
  66. package/corpus/core/src/server/realtime-voice.ts +5 -2
  67. package/corpus/core/src/styles/agent-native.css +0 -24
  68. package/corpus/core/src/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
  69. package/corpus/core/src/templates/default/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  70. package/corpus/core/src/templates/default/.agents/skills/frontend-design/SKILL.md +22 -2
  71. package/corpus/core/src/templates/default/.agents/skills/shadcn-ui/SKILL.md +28 -4
  72. package/corpus/core/src/templates/default/app/components/ui/toolkit-provider.tsx +10 -0
  73. package/corpus/core/src/templates/default/app/design-system.ts +3 -0
  74. package/corpus/core/src/templates/default/app/root.tsx +5 -2
  75. package/corpus/core/src/templates/default/package.json +1 -0
  76. package/corpus/core/src/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
  77. package/corpus/core/src/templates/headless/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  78. package/corpus/core/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
  79. package/corpus/core/src/templates/workspace-core/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  80. package/corpus/core/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +22 -2
  81. package/corpus/core/src/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +28 -4
  82. package/corpus/core/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +7 -5
  83. package/corpus/core/src/terminal/cli-registry.ts +1 -1
  84. package/corpus/core/src/vite/client.ts +205 -1
  85. package/corpus/templates/analytics/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
  86. package/corpus/templates/analytics/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  87. package/corpus/templates/analytics/.agents/skills/frontend-design/SKILL.md +22 -2
  88. package/corpus/templates/analytics/.agents/skills/shadcn-ui/SKILL.md +28 -4
  89. package/corpus/templates/analytics/app/components/ui/toolkit-provider.tsx +6 -1
  90. package/corpus/templates/analytics/app/design-system.ts +3 -0
  91. package/corpus/templates/analytics/app/hooks/use-dashboard-views.ts +13 -1
  92. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/ViewsMenu.tsx +10 -0
  93. package/corpus/templates/analytics/changelog/2026-07-22-show-a-useful-error-when-saving-a-dashboard-view-fails.md +6 -0
  94. package/corpus/templates/assets/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
  95. package/corpus/templates/assets/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  96. package/corpus/templates/assets/.agents/skills/frontend-design/SKILL.md +22 -2
  97. package/corpus/templates/assets/.agents/skills/shadcn-ui/SKILL.md +28 -4
  98. package/corpus/templates/assets/app/components/ui/alert.tsx +1 -0
  99. package/corpus/templates/assets/app/components/ui/toolkit-provider.tsx +6 -1
  100. package/corpus/templates/assets/app/design-system.ts +3 -0
  101. package/corpus/templates/assets/app/routes/brand-kits.$id_.presets.$presetId.tsx +26 -30
  102. package/corpus/templates/brain/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
  103. package/corpus/templates/brain/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  104. package/corpus/templates/brain/.agents/skills/frontend-design/SKILL.md +22 -2
  105. package/corpus/templates/brain/.agents/skills/shadcn-ui/SKILL.md +28 -4
  106. package/corpus/templates/brain/app/components/ui/dialog.tsx +1 -0
  107. package/corpus/templates/brain/app/components/ui/toolkit-provider.tsx +6 -1
  108. package/corpus/templates/brain/app/design-system.ts +3 -0
  109. package/corpus/templates/brain/app/routes/sources.tsx +189 -122
  110. package/corpus/templates/calendar/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
  111. package/corpus/templates/calendar/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  112. package/corpus/templates/calendar/.agents/skills/frontend-design/SKILL.md +22 -2
  113. package/corpus/templates/calendar/.agents/skills/shadcn-ui/SKILL.md +28 -4
  114. package/corpus/templates/calendar/app/components/ui/toolkit-provider.tsx +6 -1
  115. package/corpus/templates/calendar/app/design-system.ts +3 -0
  116. package/corpus/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
  117. package/corpus/templates/chat/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  118. package/corpus/templates/chat/.agents/skills/frontend-design/SKILL.md +22 -2
  119. package/corpus/templates/chat/.agents/skills/shadcn-ui/SKILL.md +28 -4
  120. package/corpus/templates/chat/app/components/ui/toolkit-provider.tsx +6 -1
  121. package/corpus/templates/chat/app/design-system.ts +3 -0
  122. package/corpus/templates/clips/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
  123. package/corpus/templates/clips/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  124. package/corpus/templates/clips/.agents/skills/frontend-design/SKILL.md +22 -2
  125. package/corpus/templates/clips/.agents/skills/shadcn-ui/SKILL.md +28 -4
  126. package/corpus/templates/clips/AGENTS.md +8 -6
  127. package/corpus/templates/clips/actions/request-transcript.ts +90 -420
  128. package/corpus/templates/clips/actions/save-browser-transcript.ts +11 -28
  129. package/corpus/templates/clips/app/components/capture-install-options.tsx +5 -3
  130. package/corpus/templates/clips/app/components/player/transcript-panel.tsx +3 -136
  131. package/corpus/templates/clips/app/components/ui/toolkit-provider.tsx +6 -1
  132. package/corpus/templates/clips/app/design-system.ts +3 -0
  133. package/corpus/templates/clips/app/lib/capture-install-options.ts +15 -4
  134. package/corpus/templates/clips/app/routes/_app.library._index.tsx +1 -1
  135. package/corpus/templates/clips/app/routes/download.tsx +3 -2
  136. package/corpus/templates/clips/changelog/2026-07-22-fixed-an-intermittent-hydration-error-on-the-download-page.md +6 -0
  137. package/corpus/templates/clips/changelog/2026-07-22-fixed-transcript-generation-when-native-speech-capture-retur.md +6 -0
  138. package/corpus/templates/clips/changelog/2026-07-22-fixed-windows-recordings-aborting-during-the-countdown.md +6 -0
  139. package/corpus/templates/clips/changelog/2026-07-22-permissions-and-rewind-controls-are-now-grouped-with-clearer.md +6 -0
  140. package/corpus/templates/clips/changelog/2026-07-22-the-desktop-popover-opens-centered-under-the-menu-bar-icon-o.md +6 -0
  141. package/corpus/templates/clips/changelog/2026-07-22-transcript-generation-now-retries-with-backup-speech-recogni.md +6 -0
  142. package/corpus/templates/clips/desktop/src/app.tsx +86 -82
  143. package/corpus/templates/clips/desktop/src/styles.css +13 -0
  144. package/corpus/templates/clips/desktop/src-tauri/src/lib.rs +10 -1
  145. package/corpus/templates/clips/desktop/src-tauri/src/shortcuts.rs +37 -2
  146. package/corpus/templates/clips/desktop/src-tauri/src/tray.rs +18 -0
  147. package/corpus/templates/clips/server/lib/public-agent-context.ts +2 -2
  148. package/corpus/templates/clips/server/register-secrets.ts +7 -6
  149. package/corpus/templates/content/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
  150. package/corpus/templates/content/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  151. package/corpus/templates/content/.agents/skills/frontend-design/SKILL.md +22 -2
  152. package/corpus/templates/content/.agents/skills/shadcn-ui/SKILL.md +28 -4
  153. package/corpus/templates/content/app/components/editor/DocumentToolbar.tsx +41 -59
  154. package/corpus/templates/content/app/components/editor/SlashCommandMenu.tsx +16 -84
  155. package/corpus/templates/content/app/components/editor/VisualEditor.tsx +13 -7
  156. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +41 -41
  157. package/corpus/templates/content/app/components/editor/database/GalleryView.tsx +2 -1
  158. package/corpus/templates/content/app/components/editor/database/ListView.tsx +2 -1
  159. package/corpus/templates/content/app/components/editor/database/TimelineView.tsx +9 -9
  160. package/corpus/templates/content/app/components/editor/database/sidebar.tsx +7 -7
  161. package/corpus/templates/content/app/components/editor/database-sources/BuilderSourceReviewDialog.tsx +11 -11
  162. package/corpus/templates/content/app/components/editor/extensions/ImageBlock.tsx +2 -2
  163. package/corpus/templates/content/app/components/ui/checkbox.tsx +1 -0
  164. package/corpus/templates/content/app/components/ui/collapsible.tsx +1 -0
  165. package/corpus/templates/content/app/components/ui/toolkit-provider.tsx +6 -1
  166. package/corpus/templates/content/app/design-system.ts +3 -0
  167. package/corpus/templates/content/app/global.css +29 -3
  168. package/corpus/templates/content/app/i18n-data.ts +10 -0
  169. package/corpus/templates/content/changelog/2026-07-22-page-actions-are-grouped-into-the-three-dots-menu-for-a-clea.md +6 -0
  170. package/corpus/templates/design/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
  171. package/corpus/templates/design/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  172. package/corpus/templates/design/.agents/skills/frontend-design/SKILL.md +22 -2
  173. package/corpus/templates/design/.agents/skills/shadcn-ui/SKILL.md +28 -4
  174. package/corpus/templates/design/app/components/editor/PromptDialog.tsx +8 -8
  175. package/corpus/templates/design/app/components/ui/command.tsx +1 -0
  176. package/corpus/templates/design/app/components/ui/toolkit-provider.tsx +6 -1
  177. package/corpus/templates/design/app/design-system.ts +3 -0
  178. package/corpus/templates/design/server/lib/fig-file-decoder.ts +1 -0
  179. package/corpus/templates/dispatch/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
  180. package/corpus/templates/dispatch/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  181. package/corpus/templates/dispatch/.agents/skills/frontend-design/SKILL.md +22 -2
  182. package/corpus/templates/dispatch/.agents/skills/shadcn-ui/SKILL.md +28 -4
  183. package/corpus/templates/dispatch/app/components/ui/button.tsx +1 -0
  184. package/corpus/templates/dispatch/app/components/ui/toolkit-provider.tsx +17 -0
  185. package/corpus/templates/dispatch/app/design-system.ts +3 -0
  186. package/corpus/templates/dispatch/app/root.tsx +10 -7
  187. package/corpus/templates/dispatch/package.json +1 -0
  188. package/corpus/templates/forms/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
  189. package/corpus/templates/forms/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  190. package/corpus/templates/forms/.agents/skills/frontend-design/SKILL.md +22 -2
  191. package/corpus/templates/forms/.agents/skills/shadcn-ui/SKILL.md +28 -4
  192. package/corpus/templates/forms/app/components/ui/toolkit-provider.tsx +6 -1
  193. package/corpus/templates/forms/app/design-system.ts +3 -0
  194. package/corpus/templates/macros/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
  195. package/corpus/templates/macros/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  196. package/corpus/templates/macros/.agents/skills/frontend-design/SKILL.md +22 -2
  197. package/corpus/templates/macros/.agents/skills/shadcn-ui/SKILL.md +28 -4
  198. package/corpus/templates/macros/app/components/ui/toolkit-provider.tsx +6 -1
  199. package/corpus/templates/macros/app/design-system.ts +3 -0
  200. package/corpus/templates/mail/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
  201. package/corpus/templates/mail/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  202. package/corpus/templates/mail/.agents/skills/frontend-design/SKILL.md +22 -2
  203. package/corpus/templates/mail/.agents/skills/shadcn-ui/SKILL.md +28 -4
  204. package/corpus/templates/mail/app/components/email/EmailThread.tsx +134 -93
  205. package/corpus/templates/mail/app/components/email/email-iframe-document.ts +8 -2
  206. package/corpus/templates/mail/app/components/ui/textarea.tsx +1 -21
  207. package/corpus/templates/mail/app/components/ui/toolkit-provider.tsx +6 -1
  208. package/corpus/templates/mail/app/design-system.ts +3 -0
  209. package/corpus/templates/mail/changelog/2026-07-22-email-messages-no-longer-flash-with-an-unstyled-page-while-l.md +6 -0
  210. package/corpus/templates/plan/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
  211. package/corpus/templates/plan/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  212. package/corpus/templates/plan/.agents/skills/frontend-design/SKILL.md +22 -2
  213. package/corpus/templates/plan/.agents/skills/shadcn-ui/SKILL.md +28 -4
  214. package/corpus/templates/plan/app/components/plan/PlanContentRenderer.tsx +1 -1
  215. package/corpus/templates/plan/app/components/ui/toolkit-provider.tsx +6 -1
  216. package/corpus/templates/plan/app/design-system.ts +3 -0
  217. package/corpus/templates/plan/app/entry.client.tsx +3 -0
  218. package/corpus/templates/plan/changelog/2026-07-22-recover-stale-pages-after-a-deployment-refresh-automatically.md +6 -0
  219. package/corpus/templates/slides/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
  220. package/corpus/templates/slides/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  221. package/corpus/templates/slides/.agents/skills/frontend-design/SKILL.md +22 -2
  222. package/corpus/templates/slides/.agents/skills/shadcn-ui/SKILL.md +28 -4
  223. package/corpus/templates/slides/app/components/ui/toolkit-provider.tsx +6 -1
  224. package/corpus/templates/slides/app/design-system.ts +3 -0
  225. package/corpus/templates/slides/app/hooks/use-agent-generating.ts +10 -3
  226. package/corpus/templates/slides/app/pages/Index.tsx +1 -0
  227. package/corpus/templates/slides/changelog/2026-07-22-new-deck-prompts-now-open-in-their-own-visible-chat-thread.md +6 -0
  228. package/corpus/templates/tasks/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
  229. package/corpus/templates/tasks/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  230. package/corpus/templates/tasks/.agents/skills/frontend-design/SKILL.md +22 -2
  231. package/corpus/templates/tasks/.agents/skills/shadcn-ui/SKILL.md +28 -4
  232. package/corpus/templates/tasks/app/components/ui/toolkit-provider.tsx +17 -0
  233. package/corpus/templates/tasks/app/design-system.ts +3 -0
  234. package/corpus/templates/tasks/app/root.tsx +5 -2
  235. package/corpus/toolkit/CHANGELOG.md +23 -0
  236. package/corpus/toolkit/agent-native.eject.json +71 -0
  237. package/corpus/toolkit/package.json +31 -1
  238. package/corpus/toolkit/src/chat-history/ChatHistoryRail.tsx +100 -39
  239. package/corpus/toolkit/src/chat-history/index.ts +9 -0
  240. package/corpus/toolkit/src/chat-history/useChatHistoryRailController.ts +76 -0
  241. package/corpus/toolkit/src/chat-history.css +2 -0
  242. package/corpus/toolkit/src/composer/ComposerPlusMenu.tsx +11 -8
  243. package/corpus/toolkit/src/composer/PromptComposer.tsx +32 -7
  244. package/corpus/toolkit/src/composer/RealtimeVoiceMode.tsx +119 -31
  245. package/corpus/toolkit/src/composer/useRealtimeVoiceMode.tsx +124 -9
  246. package/corpus/toolkit/src/conformance/__fixtures__/css-in-js-adapter.tsx +401 -0
  247. package/corpus/toolkit/src/conformance/index.ts +3 -0
  248. package/corpus/toolkit/src/conformance/runner.tsx +862 -0
  249. package/corpus/toolkit/src/conformance/types.ts +45 -0
  250. package/corpus/toolkit/src/conformance/version.ts +22 -0
  251. package/corpus/toolkit/src/design-system/components.tsx +146 -0
  252. package/corpus/toolkit/src/design-system/context.tsx +31 -0
  253. package/corpus/toolkit/src/design-system/default-adapter.tsx +915 -0
  254. package/corpus/toolkit/src/design-system/definition.ts +14 -0
  255. package/corpus/toolkit/src/design-system/error-boundary.tsx +37 -0
  256. package/corpus/toolkit/src/design-system/index.ts +7 -0
  257. package/corpus/toolkit/src/design-system/theme.ts +145 -0
  258. package/corpus/toolkit/src/design-system/types.ts +363 -0
  259. package/corpus/toolkit/src/editor/SharedRichEditor.tsx +13 -2
  260. package/corpus/toolkit/src/editor/SlashCommandMenu.tsx +20 -0
  261. package/corpus/toolkit/src/editor/index.ts +2 -0
  262. package/corpus/toolkit/src/provider.tsx +98 -5
  263. package/corpus/toolkit/src/styles.css +52 -23
  264. package/corpus/toolkit/src/ui/button.tsx +95 -6
  265. package/corpus/toolkit/src/ui/dialog.tsx +48 -23
  266. package/corpus/toolkit/src/ui/popover.tsx +16 -2
  267. package/corpus/toolkit/src/ui/select.tsx +7 -3
  268. package/corpus/toolkit/src/ui/sidebar.tsx +47 -48
  269. package/corpus/toolkit/src/ui/tooltip.tsx +7 -3
  270. package/dist/a2a/client.d.ts +3 -1
  271. package/dist/a2a/client.d.ts.map +1 -1
  272. package/dist/a2a/client.js +17 -12
  273. package/dist/a2a/client.js.map +1 -1
  274. package/dist/a2a/types.d.ts +1 -1
  275. package/dist/a2a/types.d.ts.map +1 -1
  276. package/dist/a2a/types.js.map +1 -1
  277. package/dist/agent/types.d.ts +1 -1
  278. package/dist/agent/types.d.ts.map +1 -1
  279. package/dist/agent/types.js.map +1 -1
  280. package/dist/cli/index.js +18 -8
  281. package/dist/cli/index.js.map +1 -1
  282. package/dist/cli/multi-frontier-runs.js +3 -3
  283. package/dist/cli/multi-frontier-runs.js.map +1 -1
  284. package/dist/cli/templates-meta.d.ts.map +1 -1
  285. package/dist/cli/templates-meta.js +0 -12
  286. package/dist/cli/templates-meta.js.map +1 -1
  287. package/dist/cli/workspace-dev.js +1 -1
  288. package/dist/cli/workspace-dev.js.map +1 -1
  289. package/dist/client/AgentPanel.d.ts.map +1 -1
  290. package/dist/client/AgentPanel.js +18 -15
  291. package/dist/client/AgentPanel.js.map +1 -1
  292. package/dist/client/AssistantChat.d.ts.map +1 -1
  293. package/dist/client/AssistantChat.js +26 -15
  294. package/dist/client/AssistantChat.js.map +1 -1
  295. package/dist/client/CommandMenu.d.ts.map +1 -1
  296. package/dist/client/CommandMenu.js +18 -106
  297. package/dist/client/CommandMenu.js.map +1 -1
  298. package/dist/client/RunStuckBanner.d.ts +3 -5
  299. package/dist/client/RunStuckBanner.d.ts.map +1 -1
  300. package/dist/client/RunStuckBanner.js +17 -18
  301. package/dist/client/RunStuckBanner.js.map +1 -1
  302. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  303. package/dist/client/agent-chat-adapter.js +2 -1
  304. package/dist/client/agent-chat-adapter.js.map +1 -1
  305. package/dist/client/app-providers.d.ts.map +1 -1
  306. package/dist/client/app-providers.js +1 -1
  307. package/dist/client/app-providers.js.map +1 -1
  308. package/dist/client/chat/action-chat-ui-surface.d.ts +8 -0
  309. package/dist/client/chat/action-chat-ui-surface.d.ts.map +1 -0
  310. package/dist/client/chat/action-chat-ui-surface.js +10 -0
  311. package/dist/client/chat/action-chat-ui-surface.js.map +1 -0
  312. package/dist/client/chat/message-components.d.ts +12 -1
  313. package/dist/client/chat/message-components.d.ts.map +1 -1
  314. package/dist/client/chat/message-components.js +102 -14
  315. package/dist/client/chat/message-components.js.map +1 -1
  316. package/dist/client/chat/tool-call-display.d.ts +3 -1
  317. package/dist/client/chat/tool-call-display.d.ts.map +1 -1
  318. package/dist/client/chat/tool-call-display.js +33 -14
  319. package/dist/client/chat/tool-call-display.js.map +1 -1
  320. package/dist/client/chat/widgets/InlineExtensionWidget.d.ts.map +1 -1
  321. package/dist/client/chat/widgets/InlineExtensionWidget.js +9 -12
  322. package/dist/client/chat/widgets/InlineExtensionWidget.js.map +1 -1
  323. package/dist/client/chat/widgets/builtin-tool-renderers.d.ts.map +1 -1
  324. package/dist/client/chat/widgets/builtin-tool-renderers.js +5 -3
  325. package/dist/client/chat/widgets/builtin-tool-renderers.js.map +1 -1
  326. package/dist/client/components/ui/message-scroller.d.ts +1 -1
  327. package/dist/client/components/ui/message-scroller.d.ts.map +1 -1
  328. package/dist/client/components/ui/message-scroller.js +4 -3
  329. package/dist/client/components/ui/message-scroller.js.map +1 -1
  330. package/dist/client/conversation/AgentConversation.d.ts.map +1 -1
  331. package/dist/client/conversation/AgentConversation.js +3 -2
  332. package/dist/client/conversation/AgentConversation.js.map +1 -1
  333. package/dist/client/error-capture.d.ts.map +1 -1
  334. package/dist/client/error-capture.js +2 -2
  335. package/dist/client/error-capture.js.map +1 -1
  336. package/dist/client/i18n.d.ts.map +1 -1
  337. package/dist/client/i18n.js +9 -0
  338. package/dist/client/i18n.js.map +1 -1
  339. package/dist/client/index.d.ts +2 -2
  340. package/dist/client/index.d.ts.map +1 -1
  341. package/dist/client/index.js +2 -2
  342. package/dist/client/index.js.map +1 -1
  343. package/dist/client/org/TeamPage.d.ts.map +1 -1
  344. package/dist/client/org/TeamPage.js +41 -33
  345. package/dist/client/org/TeamPage.js.map +1 -1
  346. package/dist/client/progress/RunsTray.d.ts.map +1 -1
  347. package/dist/client/progress/RunsTray.js +9 -10
  348. package/dist/client/progress/RunsTray.js.map +1 -1
  349. package/dist/client/resources/McpConnectionSuggestion.d.ts +1 -0
  350. package/dist/client/resources/McpConnectionSuggestion.d.ts.map +1 -1
  351. package/dist/client/resources/McpConnectionSuggestion.js +14 -12
  352. package/dist/client/resources/McpConnectionSuggestion.js.map +1 -1
  353. package/dist/client/resources/McpIntegrationDialog.d.ts.map +1 -1
  354. package/dist/client/resources/McpIntegrationDialog.js +10 -8
  355. package/dist/client/resources/McpIntegrationDialog.js.map +1 -1
  356. package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
  357. package/dist/client/resources/ResourcesPanel.js +3 -1
  358. package/dist/client/resources/ResourcesPanel.js.map +1 -1
  359. package/dist/client/resources/mcp-integration-catalog.d.ts +2 -0
  360. package/dist/client/resources/mcp-integration-catalog.d.ts.map +1 -1
  361. package/dist/client/resources/mcp-integration-catalog.js +17 -17
  362. package/dist/client/resources/mcp-integration-catalog.js.map +1 -1
  363. package/dist/client/resources/mcp-integration-logos.js +2 -2
  364. package/dist/client/resources/mcp-integration-logos.js.map +1 -1
  365. package/dist/client/route-chunk-recovery.d.ts.map +1 -1
  366. package/dist/client/route-chunk-recovery.js +5 -3
  367. package/dist/client/route-chunk-recovery.js.map +1 -1
  368. package/dist/client/session-replay.js +3 -3
  369. package/dist/client/session-replay.js.map +1 -1
  370. package/dist/client/settings/DemoModeSection.d.ts.map +1 -1
  371. package/dist/client/settings/DemoModeSection.js +2 -5
  372. package/dist/client/settings/DemoModeSection.js.map +1 -1
  373. package/dist/client/settings/SecretsSection.d.ts.map +1 -1
  374. package/dist/client/settings/SecretsSection.js +18 -6
  375. package/dist/client/settings/SecretsSection.js.map +1 -1
  376. package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
  377. package/dist/client/settings/SettingsPanel.js +53 -118
  378. package/dist/client/settings/SettingsPanel.js.map +1 -1
  379. package/dist/client/settings/SettingsTabsPage.d.ts.map +1 -1
  380. package/dist/client/settings/SettingsTabsPage.js +16 -1
  381. package/dist/client/settings/SettingsTabsPage.js.map +1 -1
  382. package/dist/client/settings/VoiceTranscriptionSection.d.ts.map +1 -1
  383. package/dist/client/settings/VoiceTranscriptionSection.js +2 -5
  384. package/dist/client/settings/VoiceTranscriptionSection.js.map +1 -1
  385. package/dist/client/settings/index.d.ts +1 -0
  386. package/dist/client/settings/index.d.ts.map +1 -1
  387. package/dist/client/settings/index.js +1 -0
  388. package/dist/client/settings/index.js.map +1 -1
  389. package/dist/client/settings/useSettingsPanelController.d.ts +22 -0
  390. package/dist/client/settings/useSettingsPanelController.d.ts.map +1 -0
  391. package/dist/client/settings/useSettingsPanelController.js +103 -0
  392. package/dist/client/settings/useSettingsPanelController.js.map +1 -0
  393. package/dist/client/setup-connections/BuilderConnectCard.d.ts +14 -6
  394. package/dist/client/setup-connections/BuilderConnectCard.d.ts.map +1 -1
  395. package/dist/client/setup-connections/BuilderConnectCard.js +24 -16
  396. package/dist/client/setup-connections/BuilderConnectCard.js.map +1 -1
  397. package/dist/client/setup-connections/index.d.ts +2 -1
  398. package/dist/client/setup-connections/index.d.ts.map +1 -1
  399. package/dist/client/setup-connections/index.js +2 -1
  400. package/dist/client/setup-connections/index.js.map +1 -1
  401. package/dist/client/setup-connections/useBuilderConnectCardController.d.ts +34 -0
  402. package/dist/client/setup-connections/useBuilderConnectCardController.d.ts.map +1 -0
  403. package/dist/client/setup-connections/useBuilderConnectCardController.js +39 -0
  404. package/dist/client/setup-connections/useBuilderConnectCardController.js.map +1 -0
  405. package/dist/client/sharing/ShareButton.d.ts +2 -1
  406. package/dist/client/sharing/ShareButton.d.ts.map +1 -1
  407. package/dist/client/sharing/ShareButton.js +17 -463
  408. package/dist/client/sharing/ShareButton.js.map +1 -1
  409. package/dist/client/sharing/ShareDialog.d.ts +6 -6
  410. package/dist/client/sharing/ShareDialog.d.ts.map +1 -1
  411. package/dist/client/sharing/ShareDialog.js +69 -283
  412. package/dist/client/sharing/ShareDialog.js.map +1 -1
  413. package/dist/client/sharing/index.d.ts +3 -0
  414. package/dist/client/sharing/index.d.ts.map +1 -1
  415. package/dist/client/sharing/index.js +3 -0
  416. package/dist/client/sharing/index.js.map +1 -1
  417. package/dist/client/sharing/share-controller-helpers.d.ts +70 -0
  418. package/dist/client/sharing/share-controller-helpers.d.ts.map +1 -0
  419. package/dist/client/sharing/share-controller-helpers.js +224 -0
  420. package/dist/client/sharing/share-controller-helpers.js.map +1 -0
  421. package/dist/client/sharing/useShareButtonController.d.ts +91 -0
  422. package/dist/client/sharing/useShareButtonController.d.ts.map +1 -0
  423. package/dist/client/sharing/useShareButtonController.js +397 -0
  424. package/dist/client/sharing/useShareButtonController.js.map +1 -0
  425. package/dist/client/sharing/useShareDialogController.d.ts +109 -0
  426. package/dist/client/sharing/useShareDialogController.d.ts.map +1 -0
  427. package/dist/client/sharing/useShareDialogController.js +348 -0
  428. package/dist/client/sharing/useShareDialogController.js.map +1 -0
  429. package/dist/client/sse-event-processor.d.ts.map +1 -1
  430. package/dist/client/sse-event-processor.js +21 -0
  431. package/dist/client/sse-event-processor.js.map +1 -1
  432. package/dist/client/tool-display.d.ts +16 -0
  433. package/dist/client/tool-display.d.ts.map +1 -1
  434. package/dist/client/tool-display.js +52 -0
  435. package/dist/client/tool-display.js.map +1 -1
  436. package/dist/client/transcription/use-live-transcription.d.ts +3 -3
  437. package/dist/client/transcription/use-live-transcription.d.ts.map +1 -1
  438. package/dist/client/transcription/use-live-transcription.js +22 -11
  439. package/dist/client/transcription/use-live-transcription.js.map +1 -1
  440. package/dist/client/use-agent-engine-configured.d.ts +3 -2
  441. package/dist/client/use-agent-engine-configured.d.ts.map +1 -1
  442. package/dist/client/use-agent-engine-configured.js +7 -19
  443. package/dist/client/use-agent-engine-configured.js.map +1 -1
  444. package/dist/client/use-chat-threads.d.ts.map +1 -1
  445. package/dist/client/use-chat-threads.js +21 -8
  446. package/dist/client/use-chat-threads.js.map +1 -1
  447. package/dist/collab/routes.d.ts +1 -1
  448. package/dist/collab/struct-routes.d.ts +1 -1
  449. package/dist/deploy/build.d.ts.map +1 -1
  450. package/dist/deploy/build.js +1 -1
  451. package/dist/deploy/build.js.map +1 -1
  452. package/dist/guards/db-tool-scoping.js +1 -1
  453. package/dist/guards/db-tool-scoping.js.map +1 -1
  454. package/dist/integrations/adapters/slack.d.ts +1 -0
  455. package/dist/integrations/adapters/slack.d.ts.map +1 -1
  456. package/dist/integrations/adapters/slack.js +61 -5
  457. package/dist/integrations/adapters/slack.js.map +1 -1
  458. package/dist/integrations/index.d.ts +1 -1
  459. package/dist/integrations/index.d.ts.map +1 -1
  460. package/dist/integrations/index.js +1 -1
  461. package/dist/integrations/index.js.map +1 -1
  462. package/dist/localization/default-messages.d.ts +4 -0
  463. package/dist/localization/default-messages.d.ts.map +1 -1
  464. package/dist/localization/default-messages.js +5 -1
  465. package/dist/localization/default-messages.js.map +1 -1
  466. package/dist/mcp-client/oauth-routes.d.ts +5 -0
  467. package/dist/mcp-client/oauth-routes.d.ts.map +1 -1
  468. package/dist/mcp-client/oauth-routes.js +53 -14
  469. package/dist/mcp-client/oauth-routes.js.map +1 -1
  470. package/dist/notifications/routes.d.ts +2 -2
  471. package/dist/observability/routes.d.ts +1 -1
  472. package/dist/provider-api/actions/custom-provider-registration.d.ts +12 -12
  473. package/dist/provider-api/actions/provider-api.d.ts +11 -11
  474. package/dist/scripts/call-agent.d.ts.map +1 -1
  475. package/dist/scripts/call-agent.js +5 -1
  476. package/dist/scripts/call-agent.js.map +1 -1
  477. package/dist/secrets/routes.d.ts +6 -6
  478. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  479. package/dist/server/realtime-voice.d.ts.map +1 -1
  480. package/dist/server/realtime-voice.js +2 -2
  481. package/dist/server/realtime-voice.js.map +1 -1
  482. package/dist/styles/agent-native.css +0 -24
  483. package/dist/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
  484. package/dist/templates/chat/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  485. package/dist/templates/chat/.agents/skills/frontend-design/SKILL.md +22 -2
  486. package/dist/templates/chat/.agents/skills/shadcn-ui/SKILL.md +28 -4
  487. package/dist/templates/chat/app/components/ui/toolkit-provider.tsx +6 -1
  488. package/dist/templates/chat/app/design-system.ts +3 -0
  489. package/dist/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
  490. package/dist/templates/default/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  491. package/dist/templates/default/.agents/skills/frontend-design/SKILL.md +22 -2
  492. package/dist/templates/default/.agents/skills/shadcn-ui/SKILL.md +28 -4
  493. package/dist/templates/default/app/components/ui/toolkit-provider.tsx +10 -0
  494. package/dist/templates/default/app/design-system.ts +3 -0
  495. package/dist/templates/default/app/root.tsx +5 -2
  496. package/dist/templates/default/package.json +1 -0
  497. package/dist/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
  498. package/dist/templates/headless/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  499. package/dist/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
  500. package/dist/templates/workspace-core/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  501. package/dist/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +22 -2
  502. package/dist/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +28 -4
  503. package/dist/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +7 -5
  504. package/dist/terminal/cli-registry.js +1 -1
  505. package/dist/terminal/cli-registry.js.map +1 -1
  506. package/dist/vite/client.d.ts +11 -1
  507. package/dist/vite/client.d.ts.map +1 -1
  508. package/dist/vite/client.js +144 -2
  509. package/dist/vite/client.js.map +1 -1
  510. package/docs/content/custom-design-system.mdx +445 -0
  511. package/docs/content/toolkit-ui.mdx +16 -0
  512. package/package.json +2 -2
  513. package/src/a2a/client.ts +32 -10
  514. package/src/a2a/types.ts +1 -0
  515. package/src/agent/types.ts +1 -1
  516. package/src/cli/index.ts +18 -10
  517. package/src/cli/multi-frontier-runs.ts +5 -3
  518. package/src/cli/templates-meta.ts +0 -12
  519. package/src/cli/workspace-dev.ts +1 -1
  520. package/src/client/AgentPanel.tsx +99 -108
  521. package/src/client/AssistantChat.tsx +30 -13
  522. package/src/client/CommandMenu.tsx +68 -178
  523. package/src/client/RunStuckBanner.tsx +39 -47
  524. package/src/client/agent-chat-adapter.ts +3 -1
  525. package/src/client/app-providers.tsx +1 -1
  526. package/src/client/chat/action-chat-ui-surface.tsx +32 -0
  527. package/src/client/chat/message-components.tsx +169 -18
  528. package/src/client/chat/tool-call-display.tsx +50 -14
  529. package/src/client/chat/widgets/InlineExtensionWidget.tsx +13 -40
  530. package/src/client/chat/widgets/builtin-tool-renderers.tsx +7 -3
  531. package/src/client/components/ui/message-scroller.tsx +15 -1
  532. package/src/client/conversation/AgentConversation.tsx +12 -1
  533. package/src/client/error-capture.ts +2 -6
  534. package/src/client/i18n.tsx +22 -0
  535. package/src/client/index.ts +17 -0
  536. package/src/client/org/TeamPage.tsx +257 -153
  537. package/src/client/progress/RunsTray.tsx +89 -88
  538. package/src/client/resources/McpConnectionSuggestion.tsx +25 -16
  539. package/src/client/resources/McpIntegrationDialog.tsx +34 -13
  540. package/src/client/resources/ResourcesPanel.tsx +5 -1
  541. package/src/client/resources/mcp-integration-catalog.ts +20 -17
  542. package/src/client/resources/mcp-integration-logos.ts +2 -2
  543. package/src/client/route-chunk-recovery.ts +5 -3
  544. package/src/client/session-replay.ts +3 -3
  545. package/src/client/settings/DemoModeSection.tsx +6 -18
  546. package/src/client/settings/SecretsSection.tsx +97 -52
  547. package/src/client/settings/SettingsPanel.tsx +217 -252
  548. package/src/client/settings/SettingsTabsPage.tsx +23 -2
  549. package/src/client/settings/VoiceTranscriptionSection.tsx +7 -18
  550. package/src/client/settings/index.ts +7 -0
  551. package/src/client/settings/useSettingsPanelController.ts +155 -0
  552. package/src/client/setup-connections/BuilderConnectCard.tsx +116 -51
  553. package/src/client/setup-connections/index.ts +10 -0
  554. package/src/client/setup-connections/useBuilderConnectCardController.ts +82 -0
  555. package/src/client/sharing/ShareButton.tsx +64 -586
  556. package/src/client/sharing/ShareDialog.tsx +299 -633
  557. package/src/client/sharing/index.ts +42 -0
  558. package/src/client/sharing/share-controller-helpers.ts +318 -0
  559. package/src/client/sharing/useShareButtonController.ts +600 -0
  560. package/src/client/sharing/useShareDialogController.ts +559 -0
  561. package/src/client/sse-event-processor.ts +23 -0
  562. package/src/client/tool-display.ts +71 -0
  563. package/src/client/transcription/use-live-transcription.ts +64 -45
  564. package/src/client/use-agent-engine-configured.ts +12 -19
  565. package/src/client/use-chat-threads.ts +33 -12
  566. package/src/deploy/build.ts +2 -1
  567. package/src/guards/db-tool-scoping.ts +1 -1
  568. package/src/integrations/adapters/slack.ts +84 -5
  569. package/src/integrations/index.ts +5 -1
  570. package/src/localization/default-messages.ts +6 -1
  571. package/src/mcp-client/oauth-routes.ts +61 -14
  572. package/src/scripts/call-agent.ts +5 -1
  573. package/src/server/realtime-voice.ts +5 -2
  574. package/src/styles/agent-native.css +0 -24
  575. package/src/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
  576. package/src/templates/chat/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  577. package/src/templates/chat/.agents/skills/frontend-design/SKILL.md +22 -2
  578. package/src/templates/chat/.agents/skills/shadcn-ui/SKILL.md +28 -4
  579. package/src/templates/chat/app/components/ui/toolkit-provider.tsx +6 -1
  580. package/src/templates/chat/app/design-system.ts +3 -0
  581. package/src/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
  582. package/src/templates/default/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  583. package/src/templates/default/.agents/skills/frontend-design/SKILL.md +22 -2
  584. package/src/templates/default/.agents/skills/shadcn-ui/SKILL.md +28 -4
  585. package/src/templates/default/app/components/ui/toolkit-provider.tsx +10 -0
  586. package/src/templates/default/app/design-system.ts +3 -0
  587. package/src/templates/default/app/root.tsx +5 -2
  588. package/src/templates/default/package.json +1 -0
  589. package/src/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
  590. package/src/templates/headless/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  591. package/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
  592. package/src/templates/workspace-core/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  593. package/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +22 -2
  594. package/src/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +28 -4
  595. package/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +7 -5
  596. package/src/terminal/cli-registry.ts +1 -1
  597. package/src/vite/client.ts +205 -1
  598. package/corpus/templates/analytics/app/components/ui/calendar.tsx +0 -70
  599. package/corpus/templates/analytics/app/components/ui/chart.tsx +0 -386
  600. package/corpus/templates/calendar/app/components/ui/sonner.tsx +0 -58
  601. package/corpus/templates/crm/.agents/skills/agent-native-docs/SKILL.md +0 -115
  602. package/corpus/templates/crm/.agents/skills/agent-native-toolkit/SKILL.md +0 -142
  603. package/corpus/templates/crm/.agents/skills/crm/SKILL.md +0 -128
  604. package/corpus/templates/crm/.agents/skills/customizing-agent-native/SKILL.md +0 -145
  605. package/corpus/templates/crm/.agents/skills/feature-flags/SKILL.md +0 -169
  606. package/corpus/templates/crm/.agents/skills/upgrade-agent-native/SKILL.md +0 -100
  607. package/corpus/templates/crm/.env.example +0 -5
  608. package/corpus/templates/crm/AGENTS.md +0 -120
  609. package/corpus/templates/crm/CHANGELOG.md +0 -1
  610. package/corpus/templates/crm/DEVELOPING.md +0 -66
  611. package/corpus/templates/crm/README.md +0 -106
  612. package/corpus/templates/crm/_gitignore +0 -12
  613. package/corpus/templates/crm/actions/_crm-action-utils.ts +0 -87
  614. package/corpus/templates/crm/actions/_crm-dashboard.ts +0 -69
  615. package/corpus/templates/crm/actions/_crm-data-program-actions.ts +0 -15
  616. package/corpus/templates/crm/actions/_crm-signal-utils.ts +0 -79
  617. package/corpus/templates/crm/actions/apply-crm-proposals.ts +0 -203
  618. package/corpus/templates/crm/actions/attach-call-evidence.ts +0 -170
  619. package/corpus/templates/crm/actions/configure-crm-connection.ts +0 -126
  620. package/corpus/templates/crm/actions/configure-native-crm.ts +0 -44
  621. package/corpus/templates/crm/actions/create-crm-record.ts +0 -148
  622. package/corpus/templates/crm/actions/create-crm-signal-tracker.ts +0 -58
  623. package/corpus/templates/crm/actions/delete-staged-dataset.ts +0 -14
  624. package/corpus/templates/crm/actions/get-crm-automation-recipe.ts +0 -36
  625. package/corpus/templates/crm/actions/get-crm-dashboard-panel.ts +0 -35
  626. package/corpus/templates/crm/actions/get-crm-dashboard.ts +0 -14
  627. package/corpus/templates/crm/actions/get-crm-overview.ts +0 -13
  628. package/corpus/templates/crm/actions/get-crm-pipeline-data.ts +0 -61
  629. package/corpus/templates/crm/actions/get-crm-record.ts +0 -75
  630. package/corpus/templates/crm/actions/install-crm-pipeline-dashboard.ts +0 -81
  631. package/corpus/templates/crm/actions/list-crm-dashboard-revisions.ts +0 -15
  632. package/corpus/templates/crm/actions/list-crm-dashboards.ts +0 -15
  633. package/corpus/templates/crm/actions/list-crm-proposals.ts +0 -31
  634. package/corpus/templates/crm/actions/list-crm-records.ts +0 -79
  635. package/corpus/templates/crm/actions/list-crm-saved-views.ts +0 -15
  636. package/corpus/templates/crm/actions/list-crm-signal-hits.ts +0 -43
  637. package/corpus/templates/crm/actions/list-crm-signal-trackers.ts +0 -32
  638. package/corpus/templates/crm/actions/list-crm-tasks.ts +0 -22
  639. package/corpus/templates/crm/actions/list-staged-datasets.ts +0 -14
  640. package/corpus/templates/crm/actions/list-workspace-connections.ts +0 -47
  641. package/corpus/templates/crm/actions/manage-crm-signal-tracker.ts +0 -87
  642. package/corpus/templates/crm/actions/manage-crm-task.ts +0 -132
  643. package/corpus/templates/crm/actions/navigate.ts +0 -63
  644. package/corpus/templates/crm/actions/provider-api-catalog.ts +0 -22
  645. package/corpus/templates/crm/actions/provider-api-docs.ts +0 -54
  646. package/corpus/templates/crm/actions/provider-api-request.ts +0 -92
  647. package/corpus/templates/crm/actions/query-staged-dataset.ts +0 -44
  648. package/corpus/templates/crm/actions/record-crm-call-insight.ts +0 -160
  649. package/corpus/templates/crm/actions/record-crm-smart-signal.ts +0 -150
  650. package/corpus/templates/crm/actions/restore-crm-dashboard-revision.ts +0 -23
  651. package/corpus/templates/crm/actions/review-crm-signal.ts +0 -31
  652. package/corpus/templates/crm/actions/run-crm-saved-view-program.ts +0 -103
  653. package/corpus/templates/crm/actions/run-crm-signal-trackers.ts +0 -275
  654. package/corpus/templates/crm/actions/run.ts +0 -7
  655. package/corpus/templates/crm/actions/save-crm-dashboard.ts +0 -51
  656. package/corpus/templates/crm/actions/save-crm-saved-view.ts +0 -119
  657. package/corpus/templates/crm/actions/sync-crm.ts +0 -146
  658. package/corpus/templates/crm/actions/update-crm-record.ts +0 -510
  659. package/corpus/templates/crm/actions/view-screen.ts +0 -218
  660. package/corpus/templates/crm/agent-native.app-skill.json +0 -58
  661. package/corpus/templates/crm/app/components/crm/CreateCrmRecordDialog.tsx +0 -158
  662. package/corpus/templates/crm/app/components/crm/CrmDashboardPanel.tsx +0 -83
  663. package/corpus/templates/crm/app/components/crm/CrmSignalsPanel.tsx +0 -225
  664. package/corpus/templates/crm/app/components/crm/IntelligenceSettings.tsx +0 -413
  665. package/corpus/templates/crm/app/components/crm/RecordActions.tsx +0 -510
  666. package/corpus/templates/crm/app/components/crm/RecordGrid.tsx +0 -134
  667. package/corpus/templates/crm/app/components/crm/RecordWorkspace.tsx +0 -367
  668. package/corpus/templates/crm/app/components/crm/SavedViewDataProgram.tsx +0 -92
  669. package/corpus/templates/crm/app/components/crm/Surface.tsx +0 -96
  670. package/corpus/templates/crm/app/components/crm/WorkOverview.tsx +0 -180
  671. package/corpus/templates/crm/app/components/layout/CrmLayout.tsx +0 -112
  672. package/corpus/templates/crm/app/components/layout/CrmSidebar.tsx +0 -84
  673. package/corpus/templates/crm/app/entry.client.tsx +0 -16
  674. package/corpus/templates/crm/app/entry.server.tsx +0 -10
  675. package/corpus/templates/crm/app/global.css +0 -167
  676. package/corpus/templates/crm/app/hooks/use-navigation-state.ts +0 -60
  677. package/corpus/templates/crm/app/i18n/en-US.ts +0 -89
  678. package/corpus/templates/crm/app/i18n/index.ts +0 -34
  679. package/corpus/templates/crm/app/lib/dashboard.ts +0 -13
  680. package/corpus/templates/crm/app/lib/navigation.ts +0 -54
  681. package/corpus/templates/crm/app/lib/tab-id.ts +0 -1
  682. package/corpus/templates/crm/app/lib/types.ts +0 -172
  683. package/corpus/templates/crm/app/lib/utils.ts +0 -1
  684. package/corpus/templates/crm/app/root.tsx +0 -88
  685. package/corpus/templates/crm/app/routes/_index.tsx +0 -26
  686. package/corpus/templates/crm/app/routes/accounts.tsx +0 -41
  687. package/corpus/templates/crm/app/routes/agent.tsx +0 -5
  688. package/corpus/templates/crm/app/routes/ask.tsx +0 -53
  689. package/corpus/templates/crm/app/routes/dashboard.tsx +0 -118
  690. package/corpus/templates/crm/app/routes/opportunities.tsx +0 -41
  691. package/corpus/templates/crm/app/routes/people.tsx +0 -41
  692. package/corpus/templates/crm/app/routes/proposals.tsx +0 -266
  693. package/corpus/templates/crm/app/routes/records.$recordId.tsx +0 -35
  694. package/corpus/templates/crm/app/routes/settings.tsx +0 -63
  695. package/corpus/templates/crm/app/routes/setup.tsx +0 -308
  696. package/corpus/templates/crm/app/routes/tasks.tsx +0 -252
  697. package/corpus/templates/crm/app/routes/views.tsx +0 -333
  698. package/corpus/templates/crm/app/routes.ts +0 -17
  699. package/corpus/templates/crm/app/vite-env.d.ts +0 -6
  700. package/corpus/templates/crm/changelog/2026-07-21-agent-native-crm.md +0 -6
  701. package/corpus/templates/crm/changelog/2026-07-21-clips-call-evidence-review-recipe.md +0 -6
  702. package/corpus/templates/crm/changelog/2026-07-21-crm-can-now-find-and-review-evidence-grounded-call-signals-w.md +0 -6
  703. package/corpus/templates/crm/changelog/2026-07-21-crm-can-now-manage-keyword-and-smart-call-signal-trackers-fr.md +0 -6
  704. package/corpus/templates/crm/changelog/2026-07-21-delegated-local-crm-automation.md +0 -6
  705. package/corpus/templates/crm/changelog/2026-07-21-native-sql.md +0 -6
  706. package/corpus/templates/crm/changelog/2026-07-21-pipeline-dashboard.md +0 -6
  707. package/corpus/templates/crm/changelog/2026-07-21-pipeline-dashboards-now-install-correctly-from-the-crm-actio.md +0 -6
  708. package/corpus/templates/crm/changelog/2026-07-21-salesforce-connection.md +0 -6
  709. package/corpus/templates/crm/changelog/2026-07-22-crm-field-validation-now-explains-which-fields-cannot-be-edi.md +0 -6
  710. package/corpus/templates/crm/changelog/2026-07-22-fixed-hubspot-contact-syncs-missing-records-updated-after-th.md +0 -6
  711. package/corpus/templates/crm/changelog/2026-07-22-fixed-pipeline-dashboard-panels-so-their-opportunity-data-lo.md +0 -6
  712. package/corpus/templates/crm/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +0 -6
  713. package/corpus/templates/crm/components.json +0 -20
  714. package/corpus/templates/crm/docs/architecture/crm-contract.md +0 -180
  715. package/corpus/templates/crm/learnings.defaults.md +0 -5
  716. package/corpus/templates/crm/package.json +0 -59
  717. package/corpus/templates/crm/public/favicon.svg +0 -1
  718. package/corpus/templates/crm/public/icon-180.svg +0 -1
  719. package/corpus/templates/crm/public/manifest.json +0 -11
  720. package/corpus/templates/crm/react-router.config.ts +0 -7
  721. package/corpus/templates/crm/server/crm/adapter.ts +0 -32
  722. package/corpus/templates/crm/server/crm/crm-field-firewall.ts +0 -64
  723. package/corpus/templates/crm/server/crm/crm-mirror.ts +0 -711
  724. package/corpus/templates/crm/server/crm/hubspot-adapter.ts +0 -1146
  725. package/corpus/templates/crm/server/crm/native-adapter.ts +0 -1715
  726. package/corpus/templates/crm/server/crm/read-through.ts +0 -207
  727. package/corpus/templates/crm/server/crm/salesforce-adapter.ts +0 -1255
  728. package/corpus/templates/crm/server/db/crm-store.ts +0 -1170
  729. package/corpus/templates/crm/server/db/index.ts +0 -169
  730. package/corpus/templates/crm/server/db/schema.ts +0 -441
  731. package/corpus/templates/crm/server/lib/intelligence/default-detectors.ts +0 -65
  732. package/corpus/templates/crm/server/lib/intelligence/evidence.ts +0 -105
  733. package/corpus/templates/crm/server/lib/intelligence/keyword-detector.ts +0 -100
  734. package/corpus/templates/crm/server/lib/intelligence/smart-detector.ts +0 -144
  735. package/corpus/templates/crm/server/lib/intelligence/summary.ts +0 -141
  736. package/corpus/templates/crm/server/lib/provider-api.ts +0 -64
  737. package/corpus/templates/crm/server/middleware/auth.ts +0 -4
  738. package/corpus/templates/crm/server/plugins/agent-chat.ts +0 -68
  739. package/corpus/templates/crm/server/plugins/auth.ts +0 -14
  740. package/corpus/templates/crm/server/plugins/core-routes.ts +0 -17
  741. package/corpus/templates/crm/server/plugins/db.ts +0 -454
  742. package/corpus/templates/crm/server/routes/[...page].get.ts +0 -5
  743. package/corpus/templates/crm/shared/crm-automation-recipes.ts +0 -132
  744. package/corpus/templates/crm/shared/crm-contract.ts +0 -254
  745. package/corpus/templates/crm/shared/crm-sales-config.ts +0 -63
  746. package/corpus/templates/crm/ssr-entry.ts +0 -11
  747. package/corpus/templates/crm/tsconfig.json +0 -24
  748. package/corpus/templates/crm/vite.config.ts +0 -15
  749. package/corpus/templates/crm/vitest.config.ts +0 -5
  750. package/corpus/templates/forms/app/components/ui/calendar.tsx +0 -214
  751. package/corpus/templates/forms/app/components/ui/chart.tsx +0 -379
  752. package/corpus/templates/forms/app/components/ui/command.tsx +0 -153
  753. package/corpus/templates/forms/app/components/ui/context-menu.tsx +0 -198
  754. package/corpus/templates/forms/app/components/ui/menubar.tsx +0 -254
  755. package/corpus/templates/macros/app/components/ui/menubar.tsx +0 -238
  756. package/corpus/templates/macros/app/components/ui/progress.tsx +0 -26
  757. package/corpus/templates/mail/app/components/ui/calendar.tsx +0 -211
  758. package/corpus/templates/mail/app/components/ui/chart.tsx +0 -379
  759. package/corpus/templates/mail/app/components/ui/command.tsx +0 -153
  760. package/corpus/templates/mail/app/components/ui/context-menu.tsx +0 -198
  761. package/corpus/templates/mail/app/components/ui/menubar.tsx +0 -254
  762. package/corpus/templates/tasks/app/components/ui/accordion.tsx +0 -56
  763. package/corpus/templates/tasks/app/components/ui/aspect-ratio.tsx +0 -5
  764. package/corpus/templates/tasks/app/components/ui/breadcrumb.tsx +0 -115
  765. package/corpus/templates/tasks/app/components/ui/calendar.tsx +0 -70
  766. package/corpus/templates/tasks/app/components/ui/carousel.tsx +0 -260
  767. package/corpus/templates/tasks/app/components/ui/chart.tsx +0 -379
  768. package/corpus/templates/tasks/app/components/ui/form.tsx +0 -177
  769. package/corpus/templates/tasks/app/components/ui/hover-card.tsx +0 -27
  770. package/corpus/templates/tasks/app/components/ui/input-otp.tsx +0 -69
  771. package/corpus/templates/tasks/app/components/ui/menubar.tsx +0 -254
  772. package/corpus/templates/tasks/app/components/ui/navigation-menu.tsx +0 -128
  773. package/corpus/templates/tasks/app/components/ui/pagination.tsx +0 -121
  774. package/corpus/templates/tasks/app/components/ui/resizable.tsx +0 -43
  775. package/corpus/templates/tasks/app/components/ui/sidebar.tsx +0 -782
  776. package/corpus/templates/tasks/app/components/ui/toggle.tsx +0 -43
@@ -1,4 +1,9 @@
1
- import * as SelectPrimitive from "@radix-ui/react-select";
1
+ import {
2
+ Checkbox,
3
+ Picker,
4
+ TextField,
5
+ } from "@agent-native/toolkit/design-system";
6
+ import { Button as ToolkitButton } from "@agent-native/toolkit/ui/button";
2
7
  import {
3
8
  IconChevronDown,
4
9
  IconChevronRight,
@@ -35,6 +40,7 @@ import React, {
35
40
  useMemo,
36
41
  useRef,
37
42
  } from "react";
43
+ import { Link } from "react-router";
38
44
 
39
45
  import { PROVIDER_ENV_PLACEHOLDERS } from "../../agent/engine/provider-env-vars.js";
40
46
  import type { UserProfile } from "../../user-profile/shared.js";
@@ -62,7 +68,6 @@ import {
62
68
  AGENT_SETTINGS_SECTIONS,
63
69
  ALL_SETTINGS_SECTIONS,
64
70
  CONNECTION_SETTINGS_SECTIONS,
65
- SETTINGS_SECTION_IDS,
66
71
  WORKSPACE_SETTINGS_SECTIONS,
67
72
  getAgentSettingsSearchTabs,
68
73
  type SettingsSectionId,
@@ -84,8 +89,28 @@ import {
84
89
  useBuilderConnectFlow,
85
90
  useBuilderStatus,
86
91
  } from "./useBuilderStatus.js";
92
+ import {
93
+ settingsSectionDomId,
94
+ useSettingsPanelController,
95
+ } from "./useSettingsPanelController.js";
87
96
  import { VoiceTranscriptionSection } from "./VoiceTranscriptionSection.js";
88
97
 
98
+ const Button = React.forwardRef<
99
+ HTMLButtonElement,
100
+ React.ComponentPropsWithoutRef<typeof ToolkitButton>
101
+ >(({ className, ...props }, ref) => (
102
+ <ToolkitButton
103
+ ref={ref}
104
+ variant="ghost"
105
+ className={cn(
106
+ "h-auto p-0 hover:bg-transparent hover:text-inherit active:scale-100 [&_svg]:!size-auto",
107
+ className,
108
+ )}
109
+ {...props}
110
+ />
111
+ ));
112
+ Button.displayName = "SettingsPrimitiveButton";
113
+
89
114
  const IntegrationsPanel = lazy(() =>
90
115
  import("../integrations/IntegrationsPanel.js").then((m) => ({
91
116
  default: m.IntegrationsPanel,
@@ -189,7 +214,6 @@ function SettingsSelect({
189
214
  }) {
190
215
  const isPage = useSettingsSurface() === "page";
191
216
  const controlStyle = isPage ? CONTROL_STYLE_PAGE : CONTROL_STYLE;
192
- const selected = options.find((option) => option.value === value);
193
217
 
194
218
  return (
195
219
  <div className="space-y-1.5">
@@ -197,69 +221,27 @@ function SettingsSelect({
197
221
  <p className={fieldLabelClass(isPage)}>{label}</p>
198
222
  {labelAdornment}
199
223
  </div>
200
- <SelectPrimitive.Root
224
+ <Picker
225
+ mode="select"
226
+ options={options.map((option) => ({
227
+ value: option.value,
228
+ label: option.label,
229
+ description: option.description,
230
+ textValue: option.label,
231
+ }))}
201
232
  value={value}
202
- onValueChange={onValueChange}
233
+ onChange={(next) => {
234
+ if (next != null) onValueChange(String(next));
235
+ }}
203
236
  disabled={disabled}
204
- >
205
- <SelectPrimitive.Trigger
206
- className={cn(
207
- "flex w-full items-center justify-between rounded-md border border-border bg-background px-3 text-start text-foreground outline-none transition-colors hover:bg-accent/40 data-[placeholder]:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-60",
208
- isPage ? "h-10 text-sm" : "h-9 text-[12px]",
209
- )}
210
- aria-label={label}
211
- style={controlStyle}
212
- >
213
- <SelectPrimitive.Value>
214
- {selected?.label ?? value}
215
- </SelectPrimitive.Value>
216
- <SelectPrimitive.Icon asChild>
217
- <IconChevronDown size={16} className="text-muted-foreground" />
218
- </SelectPrimitive.Icon>
219
- </SelectPrimitive.Trigger>
220
- <SelectPrimitive.Portal>
221
- <SelectPrimitive.Content
222
- position="popper"
223
- sideOffset={6}
224
- className="z-[9999] w-[var(--radix-select-trigger-width)] overflow-hidden rounded-lg border border-border bg-popover shadow-lg"
225
- >
226
- <SelectPrimitive.Viewport className="p-1">
227
- {options.map((option) => (
228
- <SelectPrimitive.Item
229
- key={option.value}
230
- value={option.value}
231
- className={cn(
232
- "relative flex w-full cursor-pointer select-none items-start gap-2 rounded-md px-8 outline-none data-[highlighted]:bg-accent/60 data-[state=checked]:bg-accent/40",
233
- isPage ? "py-2.5 text-sm" : "py-2.5 text-[12px]",
234
- )}
235
- style={controlStyle}
236
- >
237
- <span className="absolute start-2 top-2.5 flex h-4 w-4 items-center justify-center text-muted-foreground">
238
- <SelectPrimitive.ItemIndicator>
239
- <IconCheck size={14} />
240
- </SelectPrimitive.ItemIndicator>
241
- </span>
242
- <div className="flex min-w-0 flex-col">
243
- <SelectPrimitive.ItemText>
244
- <span className="text-foreground">{option.label}</span>
245
- </SelectPrimitive.ItemText>
246
- {option.description ? (
247
- <span
248
- className={cn(
249
- "mt-0.5 leading-relaxed text-muted-foreground",
250
- isPage ? "text-xs" : "text-[11px]",
251
- )}
252
- >
253
- {option.description}
254
- </span>
255
- ) : null}
256
- </div>
257
- </SelectPrimitive.Item>
258
- ))}
259
- </SelectPrimitive.Viewport>
260
- </SelectPrimitive.Content>
261
- </SelectPrimitive.Portal>
262
- </SelectPrimitive.Root>
237
+ aria-label={label}
238
+ placeholder={value}
239
+ style={controlStyle}
240
+ className={cn(
241
+ "w-full text-start text-foreground",
242
+ isPage ? "text-sm" : "text-[12px]",
243
+ )}
244
+ />
263
245
  </div>
264
246
  );
265
247
  }
@@ -375,28 +357,34 @@ function DisconnectBuilderButton() {
375
357
  if (phase === "armed") {
376
358
  return (
377
359
  <>
378
- <button
360
+ <Button
379
361
  type="button"
362
+ intent="danger"
363
+ emphasis="solid"
380
364
  onClick={handleDisconnectClick}
381
365
  className="inline-flex items-center gap-1 rounded border border-destructive/40 bg-destructive/10 px-2 py-0.5 text-[10px] font-medium text-destructive hover:bg-destructive/20"
382
366
  >
383
367
  Confirm disconnect
384
- </button>
385
- <button
368
+ </Button>
369
+ <Button
386
370
  type="button"
371
+ intent="neutral"
372
+ emphasis="outline"
387
373
  onClick={handleCancel}
388
374
  className="inline-flex items-center gap-1 rounded border border-border px-2 py-0.5 text-[10px] text-muted-foreground hover:text-foreground hover:bg-accent/40"
389
375
  >
390
376
  Cancel
391
- </button>
377
+ </Button>
392
378
  </>
393
379
  );
394
380
  }
395
381
 
396
382
  return (
397
383
  <>
398
- <button
384
+ <Button
399
385
  type="button"
386
+ intent="danger"
387
+ emphasis="outline"
400
388
  onClick={handleDisconnectClick}
401
389
  disabled={phase === "busy"}
402
390
  className="inline-flex items-center gap-1 rounded border border-border px-2 py-0.5 text-[10px] text-muted-foreground hover:text-foreground hover:bg-accent/40 disabled:opacity-60 disabled:cursor-wait"
@@ -410,7 +398,7 @@ function DisconnectBuilderButton() {
410
398
  ) : (
411
399
  "Disconnect"
412
400
  )}
413
- </button>
401
+ </Button>
414
402
  {err && <span className="text-[10px] text-destructive">{err}</span>}
415
403
  </>
416
404
  );
@@ -485,8 +473,10 @@ function UseBuilderCard({
485
473
  {connectUrl || credentialSource !== "env" ? (
486
474
  <div className="flex items-center gap-2 mt-2.5">
487
475
  {connectUrl && (
488
- <button
476
+ <Button
489
477
  type="button"
478
+ intent="neutral"
479
+ emphasis="ghost"
490
480
  onClick={() =>
491
481
  builderFlow.start({ trackingSource, trackingFlow })
492
482
  }
@@ -499,7 +489,7 @@ function UseBuilderCard({
499
489
  ? "Connect account"
500
490
  : "Reconnect"}
501
491
  <IconExternalLink size={isPage ? 14 : 10} />
502
- </button>
492
+ </Button>
503
493
  )}
504
494
  {credentialSource !== "env" ? <DisconnectBuilderButton /> : null}
505
495
  </div>
@@ -511,13 +501,14 @@ function UseBuilderCard({
511
501
  if (!connectUrl) return null;
512
502
 
513
503
  return (
514
- <button
504
+ <Button
515
505
  type="button"
516
506
  onClick={() => builderFlow.start({ trackingSource, trackingFlow })}
517
507
  disabled={builderFlow.connecting}
518
508
  className={cn(
519
509
  "block w-full rounded-md border border-border text-start no-underline bg-gradient-to-br from-teal-500/10 via-transparent to-transparent hover:border-foreground/30 transition-colors disabled:cursor-wait disabled:opacity-70",
520
510
  isPage ? "px-4 py-3.5" : "px-3 py-3",
511
+ isPage ? "[&_svg]:!size-4" : "[&_svg]:!size-3.5",
521
512
  )}
522
513
  >
523
514
  <div className="flex items-start gap-2.5">
@@ -565,7 +556,7 @@ function UseBuilderCard({
565
556
  className="shrink-0 text-muted-foreground mt-0.5"
566
557
  />
567
558
  </div>
568
- </button>
559
+ </Button>
569
560
  );
570
561
  }
571
562
 
@@ -766,19 +757,21 @@ export function AppDefaultModelField({
766
757
  return (
767
758
  <div className="space-y-1.5">
768
759
  <p className={fieldLabelClass(isPage)}>Model</p>
769
- <input
770
- type="text"
771
- list={`app-model-suggestions-${engine}`}
760
+ <TextField
772
761
  value={value}
762
+ onChange={onValueChange}
773
763
  disabled={disabled}
774
- onChange={(event) => onValueChange(event.target.value)}
764
+ list={`app-model-suggestions-${engine}`}
775
765
  onKeyDown={(event) => {
776
766
  if (event.key === "Enter") onEnter?.();
777
767
  }}
778
768
  placeholder={defaultModel ?? "model-id"}
779
- spellCheck={false}
780
769
  autoComplete="off"
781
- className={cn(textInputClass(isPage), "disabled:opacity-60")}
770
+ aria-label="Model"
771
+ className={cn(
772
+ "w-full disabled:opacity-60",
773
+ isPage ? "text-sm" : "text-[12px]",
774
+ )}
782
775
  style={isPage ? CONTROL_STYLE_PAGE : CONTROL_STYLE}
783
776
  />
784
777
  {modelOptions.length > 0 && (
@@ -1126,12 +1119,7 @@ function LLMSectionInner({
1126
1119
  label="Connect Builder.io"
1127
1120
  />
1128
1121
  {!builderConnected && (
1129
- <ManualSetupCard
1130
- hint={manualSetupHint}
1131
- docsUrl={PROVIDER_DOCS[selectedEngine]}
1132
- sourceBadge={sourceBadge}
1133
- docsLabel="Get an API key"
1134
- >
1122
+ <ManualSetupCard hint={manualSetupHint} sourceBadge={sourceBadge}>
1135
1123
  <div className="space-y-2 mb-1">
1136
1124
  <SettingsSelect
1137
1125
  label="Provider"
@@ -1180,7 +1168,7 @@ function LLMSectionInner({
1180
1168
 
1181
1169
  {isOpenAiEngine && (
1182
1170
  <div className="border-t border-border/70 pt-2">
1183
- <button
1171
+ <Button
1184
1172
  type="button"
1185
1173
  onClick={() => setAdvancedOpen((v) => !v)}
1186
1174
  className="flex w-full cursor-pointer items-center justify-between gap-2 rounded px-0.5 py-1 text-left hover:text-foreground"
@@ -1199,7 +1187,7 @@ function LLMSectionInner({
1199
1187
  <span className="truncate text-[10px] text-muted-foreground">
1200
1188
  OpenAI-compatible endpoint
1201
1189
  </span>
1202
- </button>
1190
+ </Button>
1203
1191
 
1204
1192
  {advancedOpen && (
1205
1193
  <div className="mt-1.5 space-y-1.5">
@@ -1238,21 +1226,23 @@ function LLMSectionInner({
1238
1226
  </p>
1239
1227
  {baseUrlConfigured && (
1240
1228
  <label className="flex items-center gap-1.5 text-[10px] text-muted-foreground">
1241
- <input
1242
- type="checkbox"
1229
+ <Checkbox
1243
1230
  checked={clearBaseUrl}
1244
- onChange={(e) => {
1245
- setClearBaseUrl(e.target.checked);
1246
- if (e.target.checked) setBaseUrl("");
1231
+ onChange={(checked) => {
1232
+ setClearBaseUrl(checked);
1233
+ if (checked) setBaseUrl("");
1247
1234
  }}
1248
- className="h-3 w-3 accent-current"
1235
+ aria-label="Clear saved endpoint override"
1236
+ className="shrink-0"
1249
1237
  />
1250
1238
  Clear saved endpoint override
1251
1239
  </label>
1252
1240
  )}
1253
1241
  {envVar && envConfigured && endpointChanged && (
1254
- <button
1242
+ <Button
1255
1243
  type="button"
1244
+ intent="neutral"
1245
+ emphasis="solid"
1256
1246
  onClick={handleSave}
1257
1247
  disabled={saving}
1258
1248
  className="rounded bg-accent px-2.5 py-1 text-[10px] font-medium text-foreground hover:bg-accent/80 disabled:opacity-40"
@@ -1264,7 +1254,7 @@ function LLMSectionInner({
1264
1254
  ) : (
1265
1255
  "Save endpoint"
1266
1256
  )}
1267
- </button>
1257
+ </Button>
1268
1258
  )}
1269
1259
  </div>
1270
1260
  )}
@@ -1294,7 +1284,9 @@ function LLMSectionInner({
1294
1284
  className={cn(textInputClass(isPage), "flex-1")}
1295
1285
  style={isPage ? CONTROL_STYLE_PAGE : undefined}
1296
1286
  />
1297
- <button
1287
+ <Button
1288
+ intent="primary"
1289
+ emphasis="solid"
1298
1290
  onClick={handleSave}
1299
1291
  disabled={!providerSettingsChanged || saving}
1300
1292
  className={pillButtonClass(isPage, "solid")}
@@ -1309,12 +1301,14 @@ function LLMSectionInner({
1309
1301
  ) : (
1310
1302
  "Save"
1311
1303
  )}
1312
- </button>
1304
+ </Button>
1313
1305
  </div>
1314
1306
  ) : null}
1315
1307
 
1316
1308
  <div className="flex items-center gap-2">
1317
- <button
1309
+ <Button
1310
+ intent="neutral"
1311
+ emphasis="outline"
1318
1312
  onClick={handleTest}
1319
1313
  disabled={testing}
1320
1314
  className={pillButtonClass(isPage, "outline")}
@@ -1330,19 +1324,37 @@ function LLMSectionInner({
1330
1324
  ) : (
1331
1325
  "Test"
1332
1326
  )}
1333
- </button>
1327
+ </Button>
1328
+ {PROVIDER_DOCS[selectedEngine] ? (
1329
+ <a
1330
+ href={PROVIDER_DOCS[selectedEngine]}
1331
+ target="_blank"
1332
+ rel="noopener noreferrer"
1333
+ className={cn(
1334
+ pillButtonClass(isPage, "outline"),
1335
+ "no-underline",
1336
+ )}
1337
+ >
1338
+ Get an API key
1339
+ <IconExternalLink size={isPage ? 14 : 10} />
1340
+ </a>
1341
+ ) : null}
1334
1342
  {engineChanged && (
1335
- <button
1343
+ <Button
1344
+ intent="primary"
1345
+ emphasis="solid"
1336
1346
  onClick={handleApply}
1337
1347
  className={pillButtonClass(isPage, "solid")}
1338
1348
  >
1339
1349
  Apply
1340
- </button>
1350
+ </Button>
1341
1351
  )}
1342
1352
  {settingsStatus != null && (
1343
1353
  <Tooltip>
1344
1354
  <TooltipTrigger asChild>
1345
- <button
1355
+ <Button
1356
+ intent="danger"
1357
+ emphasis="outline"
1346
1358
  onClick={handleDisconnect}
1347
1359
  className={cn(
1348
1360
  pillButtonClass(isPage, "outline"),
@@ -1350,7 +1362,7 @@ function LLMSectionInner({
1350
1362
  )}
1351
1363
  >
1352
1364
  Disconnect
1353
- </button>
1365
+ </Button>
1354
1366
  </TooltipTrigger>
1355
1367
  <TooltipContent>
1356
1368
  Clear the saved engine — the app will fall back to the
@@ -1663,8 +1675,10 @@ function AppModelDefaultsSectionInner({
1663
1675
  />
1664
1676
 
1665
1677
  <div className="flex items-center gap-1.5">
1666
- <button
1678
+ <Button
1667
1679
  type="button"
1680
+ intent="primary"
1681
+ emphasis="solid"
1668
1682
  onClick={save}
1669
1683
  disabled={!hasPendingChange || saving}
1670
1684
  className={pillButtonClass(isPage, "solid")}
@@ -1679,15 +1693,17 @@ function AppModelDefaultsSectionInner({
1679
1693
  ) : (
1680
1694
  "Save"
1681
1695
  )}
1682
- </button>
1683
- <button
1696
+ </Button>
1697
+ <Button
1684
1698
  type="button"
1699
+ intent="neutral"
1700
+ emphasis="outline"
1685
1701
  onClick={reset}
1686
1702
  disabled={!settings.canUpdate || !hasAppDefault || saving}
1687
1703
  className={pillButtonClass(isPage, "outline")}
1688
1704
  >
1689
1705
  Reset
1690
- </button>
1706
+ </Button>
1691
1707
  </div>
1692
1708
  </div>
1693
1709
 
@@ -1839,27 +1855,17 @@ function EmailSectionInner({
1839
1855
  <SettingsSkeleton lines={2} />
1840
1856
  ) : (
1841
1857
  <div className="space-y-2">
1842
- <label className="block space-y-1">
1843
- <span
1844
- className={cn(
1845
- "uppercase tracking-wide text-muted-foreground",
1846
- noteTextClass(isPage),
1847
- )}
1848
- >
1849
- Provider
1850
- </span>
1851
- <select
1852
- value={emailProvider}
1853
- onChange={(e) =>
1854
- setEmailProvider(e.target.value as "resend" | "sendgrid")
1855
- }
1856
- className={cn(textInputClass(isPage), "w-full")}
1857
- style={isPage ? CONTROL_STYLE_PAGE : undefined}
1858
- >
1859
- <option value="resend">Resend</option>
1860
- <option value="sendgrid">SendGrid</option>
1861
- </select>
1862
- </label>
1858
+ <SettingsSelect
1859
+ label="Provider"
1860
+ value={emailProvider}
1861
+ options={[
1862
+ { value: "resend", label: "Resend" },
1863
+ { value: "sendgrid", label: "SendGrid" },
1864
+ ]}
1865
+ onValueChange={(value) =>
1866
+ setEmailProvider(value as "resend" | "sendgrid")
1867
+ }
1868
+ />
1863
1869
 
1864
1870
  {emailProvider === "resend" ? (
1865
1871
  <ManualSetupCard
@@ -1889,7 +1895,9 @@ function EmailSectionInner({
1889
1895
  placeholder="re_..."
1890
1896
  className={emailInputCls}
1891
1897
  />
1892
- <button
1898
+ <Button
1899
+ intent="primary"
1900
+ emphasis="solid"
1893
1901
  onClick={saveResend}
1894
1902
  disabled={!resendKey.trim() || saving}
1895
1903
  className={emailBtnCls}
@@ -1901,7 +1909,7 @@ function EmailSectionInner({
1901
1909
  ) : (
1902
1910
  "Save"
1903
1911
  )}
1904
- </button>
1912
+ </Button>
1905
1913
  </div>
1906
1914
  )}
1907
1915
  {fromConfigured ? (
@@ -1927,7 +1935,9 @@ function EmailSectionInner({
1927
1935
  className={emailInputCls}
1928
1936
  />
1929
1937
  {!resendConfigured ? null : (
1930
- <button
1938
+ <Button
1939
+ intent="primary"
1940
+ emphasis="solid"
1931
1941
  onClick={saveResend}
1932
1942
  disabled={!fromAddr.trim() || saving}
1933
1943
  className={emailBtnCls}
@@ -1939,7 +1949,7 @@ function EmailSectionInner({
1939
1949
  ) : (
1940
1950
  "Save"
1941
1951
  )}
1942
- </button>
1952
+ </Button>
1943
1953
  )}
1944
1954
  </div>
1945
1955
  )}
@@ -1972,7 +1982,9 @@ function EmailSectionInner({
1972
1982
  placeholder="SG...."
1973
1983
  className={emailInputCls}
1974
1984
  />
1975
- <button
1985
+ <Button
1986
+ intent="primary"
1987
+ emphasis="solid"
1976
1988
  onClick={saveSendgrid}
1977
1989
  disabled={!sendgridKey.trim() || saving}
1978
1990
  className={emailBtnCls}
@@ -1984,7 +1996,7 @@ function EmailSectionInner({
1984
1996
  ) : (
1985
1997
  "Save"
1986
1998
  )}
1987
- </button>
1999
+ </Button>
1988
2000
  </div>
1989
2001
  )}
1990
2002
  {fromConfigured ? (
@@ -2010,7 +2022,9 @@ function EmailSectionInner({
2010
2022
  className={emailInputCls}
2011
2023
  />
2012
2024
  {!sendgridConfigured ? null : (
2013
- <button
2025
+ <Button
2026
+ intent="primary"
2027
+ emphasis="solid"
2014
2028
  onClick={saveSendgrid}
2015
2029
  disabled={!fromAddr.trim() || saving}
2016
2030
  className={emailBtnCls}
@@ -2022,7 +2036,7 @@ function EmailSectionInner({
2022
2036
  ) : (
2023
2037
  "Save"
2024
2038
  )}
2025
- </button>
2039
+ </Button>
2026
2040
  )}
2027
2041
  </div>
2028
2042
  )}
@@ -2246,8 +2260,10 @@ function AgentLimitsSectionInner({
2246
2260
  )}
2247
2261
  style={isPage ? CONTROL_STYLE_PAGE : undefined}
2248
2262
  />
2249
- <button
2263
+ <Button
2250
2264
  type="button"
2265
+ intent="primary"
2266
+ emphasis="solid"
2251
2267
  onClick={save}
2252
2268
  disabled={!hasPendingChange || saving}
2253
2269
  className={pillButtonClass(isPage, "solid")}
@@ -2262,9 +2278,11 @@ function AgentLimitsSectionInner({
2262
2278
  ) : (
2263
2279
  "Save"
2264
2280
  )}
2265
- </button>
2266
- <button
2281
+ </Button>
2282
+ <Button
2267
2283
  type="button"
2284
+ intent="neutral"
2285
+ emphasis="outline"
2268
2286
  onClick={reset}
2269
2287
  disabled={
2270
2288
  !settings.canUpdate ||
@@ -2274,7 +2292,7 @@ function AgentLimitsSectionInner({
2274
2292
  className={pillButtonClass(isPage, "outline")}
2275
2293
  >
2276
2294
  Reset
2277
- </button>
2295
+ </Button>
2278
2296
  </div>
2279
2297
  {!settings.canUpdate && (
2280
2298
  <p
@@ -2313,51 +2331,6 @@ export interface SettingsPanelProps {
2313
2331
  sectionRequestKey?: number;
2314
2332
  }
2315
2333
 
2316
- function normalizeSettingsSection(
2317
- value?: string | null,
2318
- ): SettingsSectionId | null {
2319
- const normalized = value?.replace(/^#/, "").toLowerCase() ?? "";
2320
- if (!normalized) return null;
2321
- if (normalized.startsWith("secrets")) return "secrets";
2322
- if (
2323
- normalized === "workspace" ||
2324
- normalized === "workspace-settings" ||
2325
- normalized === "organization" ||
2326
- normalized === "org"
2327
- ) {
2328
- return "secrets";
2329
- }
2330
- if (normalized === "agent-engine") return "llm";
2331
- if (
2332
- normalized === "agent-model-defaults" ||
2333
- normalized === "app-model-defaults" ||
2334
- normalized === "models"
2335
- ) {
2336
- return "app-models";
2337
- }
2338
- if (normalized === "agent-limits" || normalized === "loop-settings") {
2339
- return "limits";
2340
- }
2341
- return SETTINGS_SECTION_IDS.has(normalized as SettingsSectionId)
2342
- ? (normalized as SettingsSectionId)
2343
- : null;
2344
- }
2345
-
2346
- function settingsSectionDomId(section: SettingsSectionId): string {
2347
- return `agent-settings-section-${section}`;
2348
- }
2349
-
2350
- function initialOpenSection(): SettingsSectionId {
2351
- if (typeof window === "undefined") return "llm";
2352
- return normalizeSettingsSection(window.location.hash) ?? "llm";
2353
- }
2354
-
2355
- function firstVisibleSection(
2356
- sections: readonly SettingsSectionId[],
2357
- ): SettingsSectionId {
2358
- return sections[0] ?? "llm";
2359
- }
2360
-
2361
2334
  // Agent capability modes. The internal values ("production"/"development") are
2362
2335
  // kept for back-compat with the AGENT_MODE wiring; only the visible labels
2363
2336
  // changed to "App mode" / "Code mode" so this control reads as the agent
@@ -2441,13 +2414,15 @@ function CapabilityStatusStrip({
2441
2414
  ) : builderConnected ? (
2442
2415
  "Connected"
2443
2416
  ) : (
2444
- <button
2417
+ <Button
2445
2418
  type="button"
2419
+ intent="neutral"
2420
+ emphasis="outline"
2446
2421
  onClick={onOpenLlm}
2447
2422
  className="rounded border border-border px-1.5 py-0.5 text-[10px] text-muted-foreground transition-colors hover:bg-accent/40 hover:text-foreground"
2448
2423
  >
2449
2424
  Connect
2450
- </button>
2425
+ </Button>
2451
2426
  )
2452
2427
  }
2453
2428
  />
@@ -2590,8 +2565,10 @@ function AccountSectionInner({
2590
2565
  className="hidden"
2591
2566
  onChange={handleAvatarChange}
2592
2567
  />
2593
- <button
2568
+ <Button
2594
2569
  type="button"
2570
+ intent="neutral"
2571
+ emphasis="outline"
2595
2572
  disabled={!email || uploading}
2596
2573
  onClick={() => fileInputRef.current?.click()}
2597
2574
  className={cn(
@@ -2602,7 +2579,7 @@ function AccountSectionInner({
2602
2579
  {uploading
2603
2580
  ? t("settings.profileUploading")
2604
2581
  : t("settings.profileChangePhoto")}
2605
- </button>
2582
+ </Button>
2606
2583
  </div>
2607
2584
  <form
2608
2585
  className="space-y-1.5"
@@ -2646,8 +2623,10 @@ function AccountSectionInner({
2646
2623
  </p>
2647
2624
  )}
2648
2625
  </div>
2649
- <button
2626
+ <Button
2650
2627
  type="submit"
2628
+ intent="primary"
2629
+ emphasis="solid"
2651
2630
  disabled={
2652
2631
  !email ||
2653
2632
  profileQuery.isLoading ||
@@ -2660,7 +2639,7 @@ function AccountSectionInner({
2660
2639
  {updateProfile.isPending
2661
2640
  ? t("settings.profileSaving")
2662
2641
  : t("settings.profileSave")}
2663
- </button>
2642
+ </Button>
2664
2643
  </div>
2665
2644
  </form>
2666
2645
  </SettingsSection>
@@ -2703,27 +2682,6 @@ function SettingsPanelContent({
2703
2682
  trackingSource: "settings_panel_builder_card",
2704
2683
  });
2705
2684
 
2706
- // When opened via a `#secrets:<KEY>` hash, focus that specific secret input
2707
- // inside the "API Keys & Connections" section.
2708
- const [focusSecretKey, setFocusSecretKey] = useState<string | undefined>(
2709
- undefined,
2710
- );
2711
- const visibleSections = useMemo(() => new Set(sections), [sections]);
2712
- const shouldShowSection = useCallback(
2713
- (section: SettingsSectionId) => visibleSections.has(section),
2714
- [visibleSections],
2715
- );
2716
-
2717
- // Accordion: only one section open at a time (null = all closed)
2718
- const [openSection, setOpenSection] = useState<string | null>(() => {
2719
- const initial = initialOpenSection();
2720
- return visibleSections.has(initial)
2721
- ? initial
2722
- : firstVisibleSection(sections);
2723
- });
2724
- const toggle = (id: string) =>
2725
- setOpenSection((prev) => (prev === id ? null : id));
2726
-
2727
2685
  const scrollSectionIntoView = useCallback((section: SettingsSectionId) => {
2728
2686
  window.requestAnimationFrame(() => {
2729
2687
  document.getElementById(settingsSectionDomId(section))?.scrollIntoView({
@@ -2732,47 +2690,23 @@ function SettingsPanelContent({
2732
2690
  });
2733
2691
  });
2734
2692
  }, []);
2735
-
2736
- const openSettingsSection = useCallback(
2737
- (section: SettingsSectionId, scroll = false) => {
2738
- setOpenSection(section);
2739
- if (scroll) scrollSectionIntoView(section);
2740
- },
2741
- [scrollSectionIntoView],
2742
- );
2743
-
2744
- useEffect(() => {
2745
- const section = normalizeSettingsSection(initialSection);
2746
- if (!section || !shouldShowSection(section)) return;
2747
- if (section !== "secrets") setFocusSecretKey(undefined);
2748
- openSettingsSection(section, true);
2749
- }, [
2693
+ const {
2694
+ focusSecretKey,
2695
+ isSectionVisible: shouldShowSection,
2696
+ openSection,
2697
+ toggleSection: toggle,
2698
+ openSettingsSection: openControllerSection,
2699
+ } = useSettingsPanelController({
2700
+ sections,
2750
2701
  initialSection,
2751
2702
  sectionRequestKey,
2752
- openSettingsSection,
2753
- shouldShowSection,
2754
- ]);
2755
-
2756
- // Support `#secrets:<KEY>` hash fragments from the onboarding CTA — opens
2757
- // the section and focuses the matching input.
2758
- useEffect(() => {
2759
- if (typeof window === "undefined") return;
2760
- const handleHash = () => {
2761
- const hash = window.location.hash?.replace(/^#/, "") ?? "";
2762
- const section = normalizeSettingsSection(hash);
2763
- if (!section || !shouldShowSection(section)) return;
2764
- if (hash.startsWith("secrets:") || hash === "secrets") {
2765
- const key = hash.slice("secrets:".length);
2766
- setFocusSecretKey(key || undefined);
2767
- } else {
2768
- setFocusSecretKey(undefined);
2769
- }
2770
- openSettingsSection(section, true);
2771
- };
2772
- handleHash();
2773
- window.addEventListener("hashchange", handleHash);
2774
- return () => window.removeEventListener("hashchange", handleHash);
2775
- }, [openSettingsSection, shouldShowSection]);
2703
+ onScrollToSection: scrollSectionIntoView,
2704
+ });
2705
+ const openSettingsSection = useCallback(
2706
+ (section: SettingsSectionId, scroll = false) =>
2707
+ openControllerSection(section, { scroll }),
2708
+ [openControllerSection],
2709
+ );
2776
2710
 
2777
2711
  const isPage = surface === "page";
2778
2712
 
@@ -3158,6 +3092,36 @@ export function SettingsPanel(props: SettingsPanelProps) {
3158
3092
  return <SettingsPanelContent {...props} />;
3159
3093
  }
3160
3094
 
3095
+ function McpConnectionsCard() {
3096
+ const t = useT();
3097
+
3098
+ return (
3099
+ <section className="rounded-lg border border-border bg-muted/20 p-3">
3100
+ <div className="flex items-start gap-2.5">
3101
+ <IconPlugConnected
3102
+ size={16}
3103
+ className="mt-0.5 shrink-0 text-muted-foreground"
3104
+ />
3105
+ <div className="min-w-0 flex-1">
3106
+ <h2 className="text-sm font-semibold text-foreground">
3107
+ {t("settings.mcpConnectionsTitle")}
3108
+ </h2>
3109
+ <p className="mt-1 text-xs leading-5 text-muted-foreground">
3110
+ {t("settings.mcpConnectionsDescription")}
3111
+ </p>
3112
+ <Link
3113
+ to="/agent#connections"
3114
+ className="mt-2 inline-flex items-center gap-1 text-xs font-medium text-foreground underline-offset-4 hover:underline"
3115
+ >
3116
+ {t("settings.openMcpConnections")}
3117
+ <IconExternalLink size={13} />
3118
+ </Link>
3119
+ </div>
3120
+ </div>
3121
+ </section>
3122
+ );
3123
+ }
3124
+
3161
3125
  export function ConnectionsSettingsContent({
3162
3126
  settingsPanelProps,
3163
3127
  }: {
@@ -3166,6 +3130,7 @@ export function ConnectionsSettingsContent({
3166
3130
  return (
3167
3131
  <div className="mx-auto w-full max-w-2xl space-y-4">
3168
3132
  <BuilderConnectCard trackingSource="settings_connections" />
3133
+ <McpConnectionsCard />
3169
3134
  <SettingsPanelContent
3170
3135
  {...settingsPanelProps}
3171
3136
  surface="page"