@agent-native/core 0.7.11 → 0.7.13

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 (327) hide show
  1. package/README.md +1 -1
  2. package/dist/action.js +30 -11
  3. package/dist/action.js.map +1 -1
  4. package/dist/agent/engine/ai-sdk-engine.d.ts.map +1 -1
  5. package/dist/agent/engine/ai-sdk-engine.js +26 -8
  6. package/dist/agent/engine/ai-sdk-engine.js.map +1 -1
  7. package/dist/agent/engine/builder-engine.d.ts +19 -0
  8. package/dist/agent/engine/builder-engine.d.ts.map +1 -0
  9. package/dist/agent/engine/builder-engine.js +430 -0
  10. package/dist/agent/engine/builder-engine.js.map +1 -0
  11. package/dist/agent/engine/builtin.d.ts.map +1 -1
  12. package/dist/agent/engine/builtin.js +26 -10
  13. package/dist/agent/engine/builtin.js.map +1 -1
  14. package/dist/agent/engine/index.d.ts +1 -1
  15. package/dist/agent/engine/index.d.ts.map +1 -1
  16. package/dist/agent/engine/index.js +1 -1
  17. package/dist/agent/engine/index.js.map +1 -1
  18. package/dist/agent/engine/provider-env-vars.d.ts +21 -0
  19. package/dist/agent/engine/provider-env-vars.d.ts.map +1 -0
  20. package/dist/agent/engine/provider-env-vars.js +50 -0
  21. package/dist/agent/engine/provider-env-vars.js.map +1 -0
  22. package/dist/agent/engine/registry.d.ts +37 -0
  23. package/dist/agent/engine/registry.d.ts.map +1 -1
  24. package/dist/agent/engine/registry.js +102 -4
  25. package/dist/agent/engine/registry.js.map +1 -1
  26. package/dist/agent/engine/types.d.ts +30 -0
  27. package/dist/agent/engine/types.d.ts.map +1 -1
  28. package/dist/agent/engine/types.js +19 -1
  29. package/dist/agent/engine/types.js.map +1 -1
  30. package/dist/agent/production-agent.d.ts +7 -1
  31. package/dist/agent/production-agent.d.ts.map +1 -1
  32. package/dist/agent/production-agent.js +67 -15
  33. package/dist/agent/production-agent.js.map +1 -1
  34. package/dist/agent/run-manager.d.ts.map +1 -1
  35. package/dist/agent/run-manager.js +11 -1
  36. package/dist/agent/run-manager.js.map +1 -1
  37. package/dist/agent/thread-data-builder.d.ts +4 -0
  38. package/dist/agent/thread-data-builder.d.ts.map +1 -1
  39. package/dist/agent/thread-data-builder.js +1 -0
  40. package/dist/agent/thread-data-builder.js.map +1 -1
  41. package/dist/agent/types.d.ts +8 -0
  42. package/dist/agent/types.d.ts.map +1 -1
  43. package/dist/checkpoints/service.d.ts +1 -0
  44. package/dist/checkpoints/service.d.ts.map +1 -1
  45. package/dist/checkpoints/service.js +26 -2
  46. package/dist/checkpoints/service.js.map +1 -1
  47. package/dist/cli/create.d.ts +30 -0
  48. package/dist/cli/create.d.ts.map +1 -1
  49. package/dist/cli/create.js +127 -10
  50. package/dist/cli/create.js.map +1 -1
  51. package/dist/cli/index.js +19 -2
  52. package/dist/cli/index.js.map +1 -1
  53. package/dist/cli/templates-meta.d.ts +2 -0
  54. package/dist/cli/templates-meta.d.ts.map +1 -1
  55. package/dist/cli/templates-meta.js +2 -0
  56. package/dist/cli/templates-meta.js.map +1 -1
  57. package/dist/cli/workspacify.d.ts.map +1 -1
  58. package/dist/cli/workspacify.js +7 -3
  59. package/dist/cli/workspacify.js.map +1 -1
  60. package/dist/client/AgentPanel.js +1 -1
  61. package/dist/client/AgentPanel.js.map +1 -1
  62. package/dist/client/AssistantChat.d.ts.map +1 -1
  63. package/dist/client/AssistantChat.js +93 -37
  64. package/dist/client/AssistantChat.js.map +1 -1
  65. package/dist/client/ConnectBuilderCard.d.ts +1 -7
  66. package/dist/client/ConnectBuilderCard.d.ts.map +1 -1
  67. package/dist/client/ConnectBuilderCard.js +30 -132
  68. package/dist/client/ConnectBuilderCard.js.map +1 -1
  69. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  70. package/dist/client/MultiTabAssistantChat.js +58 -26
  71. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  72. package/dist/client/analytics.d.ts +5 -8
  73. package/dist/client/analytics.d.ts.map +1 -1
  74. package/dist/client/analytics.js +53 -11
  75. package/dist/client/analytics.js.map +1 -1
  76. package/dist/client/builder-mark.d.ts +9 -0
  77. package/dist/client/builder-mark.d.ts.map +1 -0
  78. package/dist/client/builder-mark.js +10 -0
  79. package/dist/client/builder-mark.js.map +1 -0
  80. package/dist/client/components/ui/popover.d.ts +8 -0
  81. package/dist/client/components/ui/popover.d.ts.map +1 -0
  82. package/dist/client/components/ui/popover.js +11 -0
  83. package/dist/client/components/ui/popover.js.map +1 -0
  84. package/dist/client/composer/ComposerPlusMenu.d.ts +2 -0
  85. package/dist/client/composer/ComposerPlusMenu.d.ts.map +1 -0
  86. package/dist/client/composer/ComposerPlusMenu.js +244 -0
  87. package/dist/client/composer/ComposerPlusMenu.js.map +1 -0
  88. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  89. package/dist/client/composer/TiptapComposer.js +25 -7
  90. package/dist/client/composer/TiptapComposer.js.map +1 -1
  91. package/dist/client/composer/useVoiceDictation.d.ts.map +1 -1
  92. package/dist/client/composer/useVoiceDictation.js +4 -2
  93. package/dist/client/composer/useVoiceDictation.js.map +1 -1
  94. package/dist/client/error-format.d.ts +2 -0
  95. package/dist/client/error-format.d.ts.map +1 -0
  96. package/dist/client/error-format.js +31 -0
  97. package/dist/client/error-format.js.map +1 -0
  98. package/dist/client/index.d.ts +3 -1
  99. package/dist/client/index.d.ts.map +1 -1
  100. package/dist/client/index.js +3 -1
  101. package/dist/client/index.js.map +1 -1
  102. package/dist/client/observability/ObservabilityDashboard.d.ts +5 -0
  103. package/dist/client/observability/ObservabilityDashboard.d.ts.map +1 -0
  104. package/dist/client/observability/ObservabilityDashboard.js +169 -0
  105. package/dist/client/observability/ObservabilityDashboard.js.map +1 -0
  106. package/dist/client/observability/ThumbsFeedback.d.ts +8 -0
  107. package/dist/client/observability/ThumbsFeedback.d.ts.map +1 -0
  108. package/dist/client/observability/ThumbsFeedback.js +64 -0
  109. package/dist/client/observability/ThumbsFeedback.js.map +1 -0
  110. package/dist/client/observability/index.d.ts +4 -0
  111. package/dist/client/observability/index.d.ts.map +1 -0
  112. package/dist/client/observability/index.js +4 -0
  113. package/dist/client/observability/index.js.map +1 -0
  114. package/dist/client/observability/useObservability.d.ts +128 -0
  115. package/dist/client/observability/useObservability.d.ts.map +1 -0
  116. package/dist/client/observability/useObservability.js +109 -0
  117. package/dist/client/observability/useObservability.js.map +1 -0
  118. package/dist/client/onboarding/OnboardingPanel.d.ts.map +1 -1
  119. package/dist/client/onboarding/OnboardingPanel.js +34 -92
  120. package/dist/client/onboarding/OnboardingPanel.js.map +1 -1
  121. package/dist/client/org/RequireActiveOrg.d.ts +33 -0
  122. package/dist/client/org/RequireActiveOrg.d.ts.map +1 -0
  123. package/dist/client/org/RequireActiveOrg.js +63 -0
  124. package/dist/client/org/RequireActiveOrg.js.map +1 -0
  125. package/dist/client/org/hooks.d.ts.map +1 -1
  126. package/dist/client/org/hooks.js +50 -15
  127. package/dist/client/org/hooks.js.map +1 -1
  128. package/dist/client/org/index.d.ts +1 -0
  129. package/dist/client/org/index.d.ts.map +1 -1
  130. package/dist/client/org/index.js +1 -0
  131. package/dist/client/org/index.js.map +1 -1
  132. package/dist/client/resources/ResourcesPanel.js +3 -3
  133. package/dist/client/resources/ResourcesPanel.js.map +1 -1
  134. package/dist/client/settings/AutomationsSection.js +1 -1
  135. package/dist/client/settings/AutomationsSection.js.map +1 -1
  136. package/dist/client/settings/BrowserSection.js +1 -1
  137. package/dist/client/settings/BrowserSection.js.map +1 -1
  138. package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
  139. package/dist/client/settings/SettingsPanel.js +251 -42
  140. package/dist/client/settings/SettingsPanel.js.map +1 -1
  141. package/dist/client/settings/VoiceTranscriptionSection.d.ts.map +1 -1
  142. package/dist/client/settings/VoiceTranscriptionSection.js +10 -4
  143. package/dist/client/settings/VoiceTranscriptionSection.js.map +1 -1
  144. package/dist/client/settings/useBuilderStatus.d.ts +26 -0
  145. package/dist/client/settings/useBuilderStatus.d.ts.map +1 -1
  146. package/dist/client/settings/useBuilderStatus.js +128 -4
  147. package/dist/client/settings/useBuilderStatus.js.map +1 -1
  148. package/dist/client/sse-event-processor.d.ts +2 -0
  149. package/dist/client/sse-event-processor.d.ts.map +1 -1
  150. package/dist/client/sse-event-processor.js +6 -2
  151. package/dist/client/sse-event-processor.js.map +1 -1
  152. package/dist/client/transcription/BuilderTranscriptionCta.d.ts +9 -0
  153. package/dist/client/transcription/BuilderTranscriptionCta.d.ts.map +1 -0
  154. package/dist/client/transcription/BuilderTranscriptionCta.js +18 -0
  155. package/dist/client/transcription/BuilderTranscriptionCta.js.map +1 -0
  156. package/dist/client/transcription/use-live-transcription.d.ts +29 -0
  157. package/dist/client/transcription/use-live-transcription.d.ts.map +1 -0
  158. package/dist/client/transcription/use-live-transcription.js +156 -0
  159. package/dist/client/transcription/use-live-transcription.js.map +1 -0
  160. package/dist/client/use-builder-enabled.d.ts +17 -0
  161. package/dist/client/use-builder-enabled.d.ts.map +1 -0
  162. package/dist/client/use-builder-enabled.js +36 -0
  163. package/dist/client/use-builder-enabled.js.map +1 -0
  164. package/dist/client/use-db-sync.d.ts.map +1 -1
  165. package/dist/client/use-db-sync.js +4 -2
  166. package/dist/client/use-db-sync.js.map +1 -1
  167. package/dist/client/useProductionAgent.d.ts.map +1 -1
  168. package/dist/client/useProductionAgent.js +3 -1
  169. package/dist/client/useProductionAgent.js.map +1 -1
  170. package/dist/db/migrations.d.ts +9 -0
  171. package/dist/db/migrations.d.ts.map +1 -1
  172. package/dist/db/migrations.js +75 -10
  173. package/dist/db/migrations.js.map +1 -1
  174. package/dist/file-upload/builder.d.ts.map +1 -1
  175. package/dist/file-upload/builder.js +11 -4
  176. package/dist/file-upload/builder.js.map +1 -1
  177. package/dist/jobs/tools.d.ts.map +1 -1
  178. package/dist/jobs/tools.js +137 -161
  179. package/dist/jobs/tools.js.map +1 -1
  180. package/dist/notifications/actions.d.ts +2 -2
  181. package/dist/notifications/actions.d.ts.map +1 -1
  182. package/dist/notifications/actions.js +77 -69
  183. package/dist/notifications/actions.js.map +1 -1
  184. package/dist/observability/evals.d.ts +22 -0
  185. package/dist/observability/evals.d.ts.map +1 -0
  186. package/dist/observability/evals.js +371 -0
  187. package/dist/observability/evals.js.map +1 -0
  188. package/dist/observability/experiments.d.ts +24 -0
  189. package/dist/observability/experiments.d.ts.map +1 -0
  190. package/dist/observability/experiments.js +274 -0
  191. package/dist/observability/experiments.js.map +1 -0
  192. package/dist/observability/feedback.d.ts +14 -0
  193. package/dist/observability/feedback.d.ts.map +1 -0
  194. package/dist/observability/feedback.js +256 -0
  195. package/dist/observability/feedback.js.map +1 -0
  196. package/dist/observability/index.d.ts +6 -0
  197. package/dist/observability/index.d.ts.map +1 -0
  198. package/dist/observability/index.js +5 -0
  199. package/dist/observability/index.js.map +1 -0
  200. package/dist/observability/plugin.d.ts +2 -0
  201. package/dist/observability/plugin.d.ts.map +1 -0
  202. package/dist/observability/plugin.js +12 -0
  203. package/dist/observability/plugin.js.map +1 -0
  204. package/dist/observability/routes.d.ts +68 -0
  205. package/dist/observability/routes.d.ts.map +1 -0
  206. package/dist/observability/routes.js +301 -0
  207. package/dist/observability/routes.js.map +1 -0
  208. package/dist/observability/store.d.ts +77 -0
  209. package/dist/observability/store.d.ts.map +1 -0
  210. package/dist/observability/store.js +976 -0
  211. package/dist/observability/store.js.map +1 -0
  212. package/dist/observability/traces.d.ts +37 -0
  213. package/dist/observability/traces.d.ts.map +1 -0
  214. package/dist/observability/traces.js +182 -0
  215. package/dist/observability/traces.js.map +1 -0
  216. package/dist/observability/types.d.ts +159 -0
  217. package/dist/observability/types.d.ts.map +1 -0
  218. package/dist/observability/types.js +16 -0
  219. package/dist/observability/types.js.map +1 -0
  220. package/dist/onboarding/default-steps.d.ts.map +1 -1
  221. package/dist/onboarding/default-steps.js +68 -24
  222. package/dist/onboarding/default-steps.js.map +1 -1
  223. package/dist/onboarding/types.d.ts +10 -1
  224. package/dist/onboarding/types.d.ts.map +1 -1
  225. package/dist/org/context.d.ts +8 -1
  226. package/dist/org/context.d.ts.map +1 -1
  227. package/dist/org/context.js +163 -6
  228. package/dist/org/context.js.map +1 -1
  229. package/dist/org/handlers.d.ts.map +1 -1
  230. package/dist/org/handlers.js +49 -30
  231. package/dist/org/handlers.js.map +1 -1
  232. package/dist/progress/actions.d.ts +3 -0
  233. package/dist/progress/actions.d.ts.map +1 -1
  234. package/dist/progress/actions.js +86 -110
  235. package/dist/progress/actions.js.map +1 -1
  236. package/dist/progress/routes.d.ts +1 -1
  237. package/dist/progress/routes.js +1 -1
  238. package/dist/scripts/agent-engines/list-agent-engines.d.ts.map +1 -1
  239. package/dist/scripts/agent-engines/list-agent-engines.js +20 -6
  240. package/dist/scripts/agent-engines/list-agent-engines.js.map +1 -1
  241. package/dist/scripts/agent-engines/manage-agent-engine.d.ts +10 -0
  242. package/dist/scripts/agent-engines/manage-agent-engine.d.ts.map +1 -0
  243. package/dist/scripts/agent-engines/manage-agent-engine.js +47 -0
  244. package/dist/scripts/agent-engines/manage-agent-engine.js.map +1 -0
  245. package/dist/scripts/agent-engines/set-agent-engine.d.ts.map +1 -1
  246. package/dist/scripts/agent-engines/set-agent-engine.js +10 -9
  247. package/dist/scripts/agent-engines/set-agent-engine.js.map +1 -1
  248. package/dist/server/agent-chat-plugin.d.ts +39 -0
  249. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  250. package/dist/server/agent-chat-plugin.js +743 -452
  251. package/dist/server/agent-chat-plugin.js.map +1 -1
  252. package/dist/server/agent-teams.d.ts.map +1 -1
  253. package/dist/server/agent-teams.js +18 -7
  254. package/dist/server/agent-teams.js.map +1 -1
  255. package/dist/server/analytics.d.ts +9 -7
  256. package/dist/server/analytics.d.ts.map +1 -1
  257. package/dist/server/analytics.js +12 -11
  258. package/dist/server/analytics.js.map +1 -1
  259. package/dist/server/app-name.d.ts +5 -2
  260. package/dist/server/app-name.d.ts.map +1 -1
  261. package/dist/server/app-name.js +14 -3
  262. package/dist/server/app-name.js.map +1 -1
  263. package/dist/server/app-url.d.ts.map +1 -1
  264. package/dist/server/app-url.js +17 -5
  265. package/dist/server/app-url.js.map +1 -1
  266. package/dist/server/auth.d.ts +2 -0
  267. package/dist/server/auth.d.ts.map +1 -1
  268. package/dist/server/auth.js +153 -2
  269. package/dist/server/auth.js.map +1 -1
  270. package/dist/server/better-auth-instance.d.ts +2 -0
  271. package/dist/server/better-auth-instance.d.ts.map +1 -1
  272. package/dist/server/better-auth-instance.js +4 -0
  273. package/dist/server/better-auth-instance.js.map +1 -1
  274. package/dist/server/builder-browser.d.ts +59 -1
  275. package/dist/server/builder-browser.d.ts.map +1 -1
  276. package/dist/server/builder-browser.js +127 -11
  277. package/dist/server/builder-browser.js.map +1 -1
  278. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  279. package/dist/server/core-routes-plugin.js +278 -13
  280. package/dist/server/core-routes-plugin.js.map +1 -1
  281. package/dist/server/credential-provider.d.ts +7 -0
  282. package/dist/server/credential-provider.d.ts.map +1 -1
  283. package/dist/server/credential-provider.js +10 -0
  284. package/dist/server/credential-provider.js.map +1 -1
  285. package/dist/server/onboarding-html.d.ts.map +1 -1
  286. package/dist/server/onboarding-html.js +29 -4
  287. package/dist/server/onboarding-html.js.map +1 -1
  288. package/dist/server/poll.d.ts.map +1 -1
  289. package/dist/server/poll.js +46 -5
  290. package/dist/server/poll.js.map +1 -1
  291. package/dist/server/ssr-handler.d.ts.map +1 -1
  292. package/dist/server/ssr-handler.js +2 -1
  293. package/dist/server/ssr-handler.js.map +1 -1
  294. package/dist/server/transcribe-voice.d.ts.map +1 -1
  295. package/dist/server/transcribe-voice.js +44 -5
  296. package/dist/server/transcribe-voice.js.map +1 -1
  297. package/dist/styles/agent-native.css +11 -2
  298. package/dist/templates/default/.agents/skills/progress/SKILL.md +14 -12
  299. package/dist/templates/default/app/root.tsx +7 -0
  300. package/dist/templates/workspace-root/pnpm-workspace.yaml +6 -0
  301. package/dist/transcription/builder-transcription.d.ts +27 -0
  302. package/dist/transcription/builder-transcription.d.ts.map +1 -0
  303. package/dist/transcription/builder-transcription.js +41 -0
  304. package/dist/transcription/builder-transcription.js.map +1 -0
  305. package/dist/triggers/actions.d.ts +3 -0
  306. package/dist/triggers/actions.d.ts.map +1 -1
  307. package/dist/triggers/actions.js +189 -213
  308. package/dist/triggers/actions.js.map +1 -1
  309. package/docs/content/agent-mentions.md +1 -1
  310. package/docs/content/automations.md +22 -19
  311. package/docs/content/cloneable-saas.md +2 -2
  312. package/docs/content/deployment.md +21 -61
  313. package/docs/content/getting-started.md +1 -1
  314. package/docs/content/key-concepts.md +1 -1
  315. package/docs/content/{enterprise-workspace.md → multi-app-workspace.md} +3 -3
  316. package/docs/content/multi-tenancy.md +1 -1
  317. package/docs/content/progress.md +11 -11
  318. package/docs/content/template-dispatch.md +3 -3
  319. package/docs/content/workspace-management.md +1 -1
  320. package/package.json +13 -1
  321. package/src/templates/default/.agents/skills/progress/SKILL.md +14 -12
  322. package/src/templates/default/app/root.tsx +7 -0
  323. package/src/templates/workspace-root/pnpm-workspace.yaml +6 -0
  324. package/dist/client/settings/LLMSection.d.ts +0 -2
  325. package/dist/client/settings/LLMSection.d.ts.map +0 -1
  326. package/dist/client/settings/LLMSection.js +0 -191
  327. package/dist/client/settings/LLMSection.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"AutomationsSection.js","sourceRoot":"","sources":["../../../src/client/settings/AutomationsSection.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AutomationsSection.js","sourceRoot":"","sources":["../../../src/client/settings/AutomationsSection.tsx"],"names":[],"mappings":"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"}
@@ -5,6 +5,6 @@ import { useBuilderStatus } from "./useBuilderStatus.js";
5
5
  export function BrowserSection() {
6
6
  const { status: builder, loading } = useBuilderStatus();
7
7
  const connected = builder?.configured ?? false;
8
- return (_jsx(SettingsSection, { icon: _jsx(IconBrowser, { size: 14 }), title: "Browser Automation", subtitle: "Let agents control a real browser for web tasks. Requires Builder connection.", connected: connected, children: loading ? (_jsxs("div", { className: "flex items-center gap-1.5 text-[10px] text-muted-foreground", children: [_jsx(IconLoader2, { size: 10, className: "animate-spin" }), "Checking Builder connection..."] })) : connected ? (_jsxs("div", { className: "space-y-2", children: [_jsxs("div", { className: "flex items-center gap-1.5 text-[10px] text-green-500", children: [_jsx(IconCheck, { size: 10 }), "Browser access enabled", builder?.orgName && (_jsxs("span", { className: "text-muted-foreground", children: ["(", builder.orgName, ")"] }))] }), _jsxs("p", { className: "text-[10px] text-muted-foreground", children: ["Agents can request live browser sessions via", " ", _jsx("code", { className: "rounded bg-muted px-1 py-0.5 text-[9px]", children: "get-browser-connection" })] }), builder?.connectUrl && (_jsxs("a", { href: builder.connectUrl, 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", children: ["Reconnect", _jsx(IconExternalLink, { size: 10 })] }))] })) : (_jsxs("div", { className: "space-y-2", children: [_jsx("p", { className: "text-[10px] text-muted-foreground", children: "Connect Builder to provision browser sessions without wiring browser setup into every app." }), builder?.connectUrl && (_jsxs("a", { href: builder.connectUrl, className: "inline-flex items-center gap-1 rounded bg-accent px-2 py-1 text-[10px] font-medium text-foreground hover:bg-accent/80", children: ["Connect Builder", _jsx(IconExternalLink, { size: 10 })] }))] })) }));
8
+ return (_jsx(SettingsSection, { icon: _jsx(IconBrowser, { size: 14 }), title: "Browser Automation", subtitle: "Let agents control a real browser for web tasks. Requires Builder connection.", connected: connected, children: loading ? (_jsxs("div", { className: "flex items-center gap-1.5 text-[10px] text-muted-foreground", children: [_jsx(IconLoader2, { size: 10, className: "animate-spin" }), "Checking Builder connection..."] })) : connected ? (_jsxs("div", { className: "space-y-2", children: [_jsxs("div", { className: "flex items-center gap-1.5 text-[10px] text-green-500", children: [_jsx(IconCheck, { size: 10 }), "Browser access enabled", builder?.orgName && (_jsxs("span", { className: "text-muted-foreground", children: ["(", builder.orgName, ")"] }))] }), _jsxs("p", { className: "text-[10px] text-muted-foreground", children: ["Agents can request live browser sessions via", " ", _jsx("code", { className: "rounded bg-muted px-1 py-0.5 text-[9px]", children: "connect-builder" })] }), builder?.connectUrl && (_jsxs("a", { href: builder.connectUrl, 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", children: ["Reconnect", _jsx(IconExternalLink, { size: 10 })] }))] })) : (_jsxs("div", { className: "space-y-2", children: [_jsx("p", { className: "text-[10px] text-muted-foreground", children: "Connect Builder to provision browser sessions without wiring browser setup into every app." }), builder?.connectUrl && (_jsxs("a", { href: builder.connectUrl, className: "inline-flex items-center gap-1 rounded bg-accent px-2 py-1 text-[10px] font-medium text-foreground hover:bg-accent/80", children: ["Connect Builder", _jsx(IconExternalLink, { size: 10 })] }))] })) }));
9
9
  }
10
10
  //# sourceMappingURL=BrowserSection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserSection.js","sourceRoot":"","sources":["../../../src/client/settings/BrowserSection.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,UAAU,cAAc;IAC5B,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACxD,MAAM,SAAS,GAAG,OAAO,EAAE,UAAU,IAAI,KAAK,CAAC;IAE/C,OAAO,CACL,KAAC,eAAe,IACd,IAAI,EAAE,KAAC,WAAW,IAAC,IAAI,EAAE,EAAE,GAAI,EAC/B,KAAK,EAAC,oBAAoB,EAC1B,QAAQ,EAAC,+EAA+E,EACxF,SAAS,EAAE,SAAS,YAEnB,OAAO,CAAC,CAAC,CAAC,CACT,eAAK,SAAS,EAAC,6DAA6D,aAC1E,KAAC,WAAW,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,cAAc,GAAG,sCAE9C,CACP,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CACd,eAAK,SAAS,EAAC,WAAW,aACxB,eAAK,SAAS,EAAC,sDAAsD,aACnE,KAAC,SAAS,IAAC,IAAI,EAAE,EAAE,GAAI,4BAEtB,OAAO,EAAE,OAAO,IAAI,CACnB,gBAAM,SAAS,EAAC,uBAAuB,kBAAG,OAAO,CAAC,OAAO,SAAS,CACnE,IACG,EACN,aAAG,SAAS,EAAC,mCAAmC,6DACD,GAAG,EAChD,eAAM,SAAS,EAAC,yCAAyC,uCAElD,IACL,EACH,OAAO,EAAE,UAAU,IAAI,CACtB,aACE,IAAI,EAAE,OAAO,CAAC,UAAU,EACxB,SAAS,EAAC,oJAAoJ,0BAG9J,KAAC,gBAAgB,IAAC,IAAI,EAAE,EAAE,GAAI,IAC5B,CACL,IACG,CACP,CAAC,CAAC,CAAC,CACF,eAAK,SAAS,EAAC,WAAW,aACxB,YAAG,SAAS,EAAC,mCAAmC,2GAG5C,EACH,OAAO,EAAE,UAAU,IAAI,CACtB,aACE,IAAI,EAAE,OAAO,CAAC,UAAU,EACxB,SAAS,EAAC,uHAAuH,gCAGjI,KAAC,gBAAgB,IAAC,IAAI,EAAE,EAAE,GAAI,IAC5B,CACL,IACG,CACP,GACe,CACnB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"BrowserSection.js","sourceRoot":"","sources":["../../../src/client/settings/BrowserSection.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,UAAU,cAAc;IAC5B,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACxD,MAAM,SAAS,GAAG,OAAO,EAAE,UAAU,IAAI,KAAK,CAAC;IAE/C,OAAO,CACL,KAAC,eAAe,IACd,IAAI,EAAE,KAAC,WAAW,IAAC,IAAI,EAAE,EAAE,GAAI,EAC/B,KAAK,EAAC,oBAAoB,EAC1B,QAAQ,EAAC,+EAA+E,EACxF,SAAS,EAAE,SAAS,YAEnB,OAAO,CAAC,CAAC,CAAC,CACT,eAAK,SAAS,EAAC,6DAA6D,aAC1E,KAAC,WAAW,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,cAAc,GAAG,sCAE9C,CACP,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CACd,eAAK,SAAS,EAAC,WAAW,aACxB,eAAK,SAAS,EAAC,sDAAsD,aACnE,KAAC,SAAS,IAAC,IAAI,EAAE,EAAE,GAAI,4BAEtB,OAAO,EAAE,OAAO,IAAI,CACnB,gBAAM,SAAS,EAAC,uBAAuB,kBAAG,OAAO,CAAC,OAAO,SAAS,CACnE,IACG,EACN,aAAG,SAAS,EAAC,mCAAmC,6DACD,GAAG,EAChD,eAAM,SAAS,EAAC,yCAAyC,gCAElD,IACL,EACH,OAAO,EAAE,UAAU,IAAI,CACtB,aACE,IAAI,EAAE,OAAO,CAAC,UAAU,EACxB,SAAS,EAAC,oJAAoJ,0BAG9J,KAAC,gBAAgB,IAAC,IAAI,EAAE,EAAE,GAAI,IAC5B,CACL,IACG,CACP,CAAC,CAAC,CAAC,CACF,eAAK,SAAS,EAAC,WAAW,aACxB,YAAG,SAAS,EAAC,mCAAmC,2GAG5C,EACH,OAAO,EAAE,UAAU,IAAI,CACtB,aACE,IAAI,EAAE,OAAO,CAAC,UAAU,EACxB,SAAS,EAAC,uHAAuH,gCAGjI,KAAC,gBAAgB,IAAC,IAAI,EAAE,EAAE,GAAI,IAC5B,CACL,IACG,CACP,GACe,CACnB,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsPanel.d.ts","sourceRoot":"","sources":["../../../src/client/settings/SettingsPanel.tsx"],"names":[],"mappings":"AA8vBA,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAeD,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,eAAe,EACf,aAAa,EACb,SAAS,GACV,EAAE,kBAAkB,2CA2TpB"}
1
+ {"version":3,"file":"SettingsPanel.d.ts","sourceRoot":"","sources":["../../../src/client/settings/SettingsPanel.tsx"],"names":[],"mappings":"AAsnCA,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAeD,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,eAAe,EACf,aAAa,EACb,SAAS,GACV,EAAE,kBAAkB,2CAyTpB"}
@@ -1,14 +1,16 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Suspense, lazy, useState, useEffect } from "react";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { Suspense, lazy, useState, useEffect, useCallback, useRef, } from "react";
3
3
  import * as SelectPrimitive from "@radix-ui/react-select";
4
4
  import { IconChevronDown, IconCheck, IconExternalLink, IconBrain, IconBrowser, IconGitBranch, IconCloud, IconDatabase, IconShield, IconPlugConnected, IconTopologyRing2, IconLoader2, IconUpload, IconCoin, IconMail, IconKey, IconMicrophone, IconBolt, } from "@tabler/icons-react";
5
5
  import { SettingsSection } from "./SettingsSection.js";
6
6
  import { useBuilderStatus } from "./useBuilderStatus.js";
7
+ import { BuilderBMark } from "../builder-mark.js";
7
8
  import { AgentsSection } from "./AgentsSection.js";
8
9
  import { UsageSection } from "./UsageSection.js";
9
10
  import { SecretsSection } from "./SecretsSection.js";
10
11
  import { VoiceTranscriptionSection } from "./VoiceTranscriptionSection.js";
11
12
  import { AutomationsSection } from "./AutomationsSection.js";
13
+ import { PROVIDER_ENV_PLACEHOLDERS } from "../../agent/engine/provider-env-vars.js";
12
14
  const IntegrationsPanel = lazy(() => import("../integrations/IntegrationsPanel.js").then((m) => ({
13
15
  default: m.IntegrationsPanel,
14
16
  })));
@@ -20,18 +22,115 @@ function SettingsSelect({ label, labelAdornment, value, options, onValueChange,
20
22
  const selected = options.find((option) => option.value === value);
21
23
  return (_jsxs("div", { className: "space-y-1.5", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("p", { className: "text-[12px] font-medium text-foreground", children: label }), labelAdornment] }), _jsxs(SelectPrimitive.Root, { value: value, onValueChange: onValueChange, children: [_jsxs(SelectPrimitive.Trigger, { className: "flex h-9 w-full items-center justify-between rounded-md border border-border bg-background px-3 text-left text-[12px] text-foreground outline-none transition-colors hover:bg-accent/40 data-[placeholder]:text-muted-foreground", "aria-label": label, style: CONTROL_STYLE, children: [_jsx(SelectPrimitive.Value, { children: selected?.label ?? value }), _jsx(SelectPrimitive.Icon, { asChild: true, children: _jsx(IconChevronDown, { size: 14, className: "text-muted-foreground" }) })] }), _jsx(SelectPrimitive.Portal, { children: _jsx(SelectPrimitive.Content, { position: "popper", sideOffset: 6, className: "z-[9999] w-[var(--radix-select-trigger-width)] overflow-hidden rounded-lg border border-border bg-popover shadow-lg", children: _jsx(SelectPrimitive.Viewport, { className: "p-1", children: options.map((option) => (_jsxs(SelectPrimitive.Item, { value: option.value, className: "relative flex w-full cursor-pointer select-none items-start gap-2 rounded-md px-8 py-2.5 text-[12px] outline-none data-[highlighted]:bg-accent/60 data-[state=checked]:bg-accent/40", style: CONTROL_STYLE, children: [_jsx("span", { className: "absolute left-2 top-2.5 flex h-4 w-4 items-center justify-center text-muted-foreground", children: _jsx(SelectPrimitive.ItemIndicator, { children: _jsx(IconCheck, { size: 14 }) }) }), _jsxs("div", { className: "flex min-w-0 flex-col", children: [_jsx(SelectPrimitive.ItemText, { children: _jsx("span", { className: "text-foreground", children: option.label }) }), option.description ? (_jsx("span", { className: "mt-0.5 text-[11px] leading-relaxed text-muted-foreground", children: option.description })) : null] })] }, option.value))) }) }) })] })] }));
22
24
  }
25
+ // ─── Disconnect button for the Builder card's connected state ───────────────
26
+ //
27
+ // Two-step confirmation: first click arms the button ("Confirm?"), second
28
+ // click actually disconnects. Arm auto-reverts after 4s of idle so a user
29
+ // who wandered off doesn't come back to a disconnect waiting for them.
30
+ //
31
+ // Hits /_agent-native/builder/disconnect which scrubs BUILDER_* keys from the
32
+ // template `.env`, `process.env`, and the `persisted-env-vars` settings row.
33
+ // On success we dispatch `agent-engine:configured-changed` so dependent cards
34
+ // refresh inline (no hard reload — that was racing with nitro's env-runner
35
+ // restart and hitting React Router's error boundary).
36
+ function DisconnectBuilderButton() {
37
+ const [phase, setPhase] = useState("idle");
38
+ const [err, setErr] = useState(null);
39
+ const armedTimerRef = useRef(null);
40
+ const clearArmedTimer = useCallback(() => {
41
+ if (armedTimerRef.current) {
42
+ clearTimeout(armedTimerRef.current);
43
+ armedTimerRef.current = null;
44
+ }
45
+ }, []);
46
+ useEffect(() => {
47
+ return () => clearArmedTimer();
48
+ }, [clearArmedTimer]);
49
+ const performDisconnect = useCallback(async () => {
50
+ setPhase("busy");
51
+ setErr(null);
52
+ clearArmedTimer();
53
+ try {
54
+ const res = await fetch("/_agent-native/builder/disconnect", {
55
+ method: "POST",
56
+ headers: { "Content-Type": "application/json" },
57
+ });
58
+ // Parse defensively — a nitro 404 fallback returns HTML, not JSON,
59
+ // and res.json() on that would throw.
60
+ const text = await res.text();
61
+ let body = {};
62
+ if (text) {
63
+ try {
64
+ body = JSON.parse(text);
65
+ }
66
+ catch {
67
+ // Non-JSON response — likely a 404/HTML fallback.
68
+ }
69
+ }
70
+ if (!res.ok) {
71
+ throw new Error(body.error || `Failed (${res.status}). Is dev:all up to date?`);
72
+ }
73
+ if (body.ok !== true) {
74
+ throw new Error(body.error || "Disconnect didn't confirm ok");
75
+ }
76
+ if (body.warnings && Object.keys(body.warnings).length > 0) {
77
+ // Disconnect flag persisted (we only reach here when ok:true), so
78
+ // the user IS disconnected — but some ancillary cleanup failed.
79
+ // Log so it's visible during dev; don't block the success path.
80
+ console.warn("[builder-disconnect] completed with warnings:", body.warnings);
81
+ }
82
+ window.dispatchEvent(new CustomEvent("agent-engine:configured-changed"));
83
+ setPhase("idle");
84
+ }
85
+ catch (e) {
86
+ setErr(e instanceof Error ? e.message : "Disconnect failed");
87
+ setPhase("idle");
88
+ }
89
+ }, [clearArmedTimer]);
90
+ const handleDisconnectClick = useCallback(() => {
91
+ if (phase === "busy")
92
+ return;
93
+ if (phase === "idle") {
94
+ // First click — arm the button. Auto-revert after 4s to avoid a
95
+ // stale "confirm" state someone else could hit by accident.
96
+ setPhase("armed");
97
+ setErr(null);
98
+ clearArmedTimer();
99
+ armedTimerRef.current = setTimeout(() => {
100
+ setPhase("idle");
101
+ armedTimerRef.current = null;
102
+ }, 4000);
103
+ return;
104
+ }
105
+ // phase === "armed" — user confirmed, actually disconnect.
106
+ void performDisconnect();
107
+ }, [phase, performDisconnect, clearArmedTimer]);
108
+ const handleCancel = useCallback(() => {
109
+ clearArmedTimer();
110
+ setPhase("idle");
111
+ }, [clearArmedTimer]);
112
+ if (phase === "armed") {
113
+ return (_jsxs(_Fragment, { children: [_jsx("button", { type: "button", onClick: handleDisconnectClick, 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", children: "Confirm disconnect" }), _jsx("button", { type: "button", onClick: handleCancel, 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", children: "Cancel" })] }));
114
+ }
115
+ return (_jsxs(_Fragment, { children: [_jsx("button", { type: "button", onClick: handleDisconnectClick, disabled: phase === "busy", 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", "aria-busy": phase === "busy", children: phase === "busy" ? (_jsxs(_Fragment, { children: [_jsx(IconLoader2, { size: 10, className: "animate-spin" }), "Disconnecting\u2026"] })) : ("Disconnect") }), err && _jsx("span", { className: "text-[10px] text-destructive", children: err })] }));
116
+ }
23
117
  // ─── "Connect Builder.io" card (shared across all sections) ─────────────────
24
- function UseBuilderCard({ connectUrl, connected, orgName, comingSoon, builderEnabled, label = "Connect Builder.io", dim, }) {
118
+ function UseBuilderCard({ connectUrl, connected, orgName, comingSoon, builderEnabled, label = "Connect Builder.io", subtitle = "One click, no API key needed. Free during beta.", dim, }) {
25
119
  const showComingSoon = comingSoon && !builderEnabled;
26
120
  const bgClass = dim ? "" : "bg-accent/30";
27
121
  if (connected) {
28
- return (_jsxs("div", { className: `rounded-md border border-border px-2.5 py-2 ${bgClass}`, children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("div", { className: "text-[11px] font-medium text-foreground", children: "Builder.io" }), _jsxs("span", { className: "flex items-center gap-1 text-[10px] text-green-500", children: [_jsx(IconCheck, { size: 10 }), "Connected"] })] }), orgName && (_jsx("p", { className: "text-[10px] text-muted-foreground mt-0.5", children: orgName })), connectUrl && (_jsxs("a", { href: connectUrl, target: "_blank", rel: "noopener noreferrer", className: "inline-flex items-center gap-1 mt-2.5 rounded border border-border px-2 py-0.5 text-[10px] no-underline text-muted-foreground hover:text-foreground hover:bg-accent/40", children: ["Reconnect", _jsx(IconExternalLink, { size: 10 })] }))] }));
122
+ return (_jsxs("div", { className: `rounded-md border border-border px-2.5 py-2 ${bgClass}`, children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("div", { className: "text-[11px] font-medium text-foreground", children: "Builder.io" }), _jsxs("span", { className: "flex items-center gap-1 text-[10px] text-green-500", children: [_jsx(IconCheck, { size: 10 }), "Connected"] })] }), orgName && (_jsx("p", { className: "text-[10px] text-muted-foreground mt-0.5", children: orgName })), _jsxs("div", { className: "flex items-center gap-2 mt-2.5", children: [connectUrl && (_jsxs("a", { href: connectUrl, target: "_blank", rel: "noopener noreferrer", className: "inline-flex items-center gap-1 rounded border border-border px-2 py-0.5 text-[10px] no-underline text-muted-foreground hover:text-foreground hover:bg-accent/40", children: ["Reconnect", _jsx(IconExternalLink, { size: 10 })] })), _jsx(DisconnectBuilderButton, {})] })] }));
123
+ }
124
+ if (showComingSoon) {
125
+ return (_jsx("div", { className: `rounded-md border border-border px-2.5 py-2 ${bgClass}`, children: _jsxs("div", { className: "flex items-center justify-between", children: [_jsx("div", { className: "text-[11px] font-medium text-foreground", children: "Builder.io" }), _jsxs("a", { href: "https://forms.agent-native.com/f/builder-waitlist/36GWqf", target: "_blank", rel: "noopener noreferrer", className: "inline-flex items-center gap-1 rounded border border-border px-2 py-0.5 text-[10px] font-medium no-underline text-muted-foreground hover:text-foreground hover:bg-accent/40", children: ["Join waitlist", _jsx(IconExternalLink, { size: 10 })] })] }) }));
29
126
  }
30
- return (_jsx("div", { className: `rounded-md border border-border px-2.5 py-2 ${bgClass}`, children: _jsxs("div", { className: "flex items-center justify-between", children: [_jsx("div", { className: "text-[11px] font-medium text-foreground", children: "Builder.io" }), showComingSoon ? (_jsxs("a", { href: "https://forms.agent-native.com/f/builder-waitlist/36GWqf", target: "_blank", rel: "noopener noreferrer", className: "inline-flex items-center gap-1 rounded border border-border px-2 py-0.5 text-[10px] font-medium no-underline text-muted-foreground hover:text-foreground hover:bg-accent/40", children: ["Join waitlist", _jsx(IconExternalLink, { size: 10 })] })) : (connectUrl && (_jsxs("a", { href: connectUrl, target: "_blank", rel: "noopener noreferrer", className: "inline-flex items-center gap-1 rounded bg-foreground px-2.5 py-1 text-[10px] font-medium no-underline text-background hover:opacity-90", children: [label, _jsx(IconExternalLink, { size: 10 })] })))] }) }));
127
+ if (!connectUrl)
128
+ return null;
129
+ return (_jsx("a", { href: connectUrl, target: "_blank", rel: "noopener noreferrer", className: `block rounded-md border border-border px-3 py-3 no-underline bg-gradient-to-br from-teal-500/10 via-transparent to-transparent hover:border-foreground/30 transition-colors`, children: _jsxs("div", { className: "flex items-start gap-2.5", children: [_jsx("div", { className: "flex h-7 w-7 shrink-0 items-center justify-center rounded-md bg-foreground text-background", children: _jsx(BuilderBMark, { className: "h-3.5 w-3.5" }) }), _jsxs("div", { className: "flex-1 min-w-0", children: [_jsxs("div", { className: "flex items-center gap-1.5 flex-wrap", children: [_jsx("span", { className: "text-[12px] font-semibold text-foreground", children: label }), _jsx("span", { className: "inline-flex items-center rounded-sm bg-green-500/15 px-1 text-[9px] font-medium uppercase tracking-wide text-green-500", children: "Free" })] }), _jsx("p", { className: "text-[10.5px] text-muted-foreground mt-0.5 leading-snug", children: subtitle })] }), _jsx(IconExternalLink, { size: 12, className: "shrink-0 text-muted-foreground mt-0.5" })] }) }));
31
130
  }
32
131
  // ─── Manual setup card ──────────────────────────────────────────────────────
33
- function ManualSetupCard({ hint, docsUrl, docsLabel = "Read the docs", children, dim, }) {
34
- return (_jsxs("div", { className: `rounded-md border border-border px-2.5 py-2 ${dim ? "" : "bg-accent/30"}`, children: [_jsx("div", { className: "text-[11px] font-medium text-foreground mb-1", children: "Set up manually" }), hint && (_jsx("p", { className: "text-[10px] text-muted-foreground mb-1.5", children: hint })), children, docsUrl && (_jsxs("a", { href: docsUrl, target: "_blank", rel: "noopener noreferrer", className: "inline-flex items-center gap-1 mt-1.5 rounded border border-border px-2.5 py-1 text-[10px] font-medium no-underline text-muted-foreground hover:text-foreground hover:bg-accent/40", children: [docsLabel, _jsx(IconExternalLink, { size: 10 })] }))] }));
132
+ function ManualSetupCard({ hint, docsUrl, docsLabel = "Read the docs", children, dim, sourceBadge, }) {
133
+ return (_jsxs("div", { className: `rounded-md border border-border px-2.5 py-2 ${dim ? "" : "bg-accent/30"}`, children: [_jsxs("div", { className: "flex items-center justify-between mb-1", children: [_jsx("div", { className: "text-[11px] font-medium text-foreground", children: "Set up manually" }), sourceBadge ? (_jsxs("span", { className: "flex items-center gap-1 text-[10px] text-green-500", children: [_jsx(IconCheck, { size: 10 }), sourceBadge] })) : null] }), hint && (_jsx("p", { className: "text-[10px] text-muted-foreground mb-1.5", children: hint })), children, docsUrl && (_jsxs("a", { href: docsUrl, target: "_blank", rel: "noopener noreferrer", className: "inline-flex items-center gap-1 mt-1.5 rounded border border-border px-2.5 py-1 text-[10px] font-medium no-underline text-muted-foreground hover:text-foreground hover:bg-accent/40", children: [docsLabel, _jsx(IconExternalLink, { size: 10 })] }))] }));
35
134
  }
36
135
  // ─── LLM helpers ────────────────────────────────────────────────────────────
37
136
  function friendlyModelName(model) {
@@ -54,6 +153,20 @@ function friendlyModelName(model) {
54
153
  }
55
154
  return model;
56
155
  }
156
+ function computeSourceBadge(args) {
157
+ const { settingsConfigured, settingsStatus } = args;
158
+ if (settingsConfigured) {
159
+ if (settingsStatus?.source === "env") {
160
+ return `Connected via ${settingsStatus.envVar ?? args.envVar ?? "env"}`;
161
+ }
162
+ return "Connected via template (server-side)";
163
+ }
164
+ if (args.envConfigured)
165
+ return `Connected via ${args.envVar ?? "env"}`;
166
+ if (args.builderConnected)
167
+ return "Connected via Builder";
168
+ return undefined;
169
+ }
57
170
  function latestModelsOnly(models) {
58
171
  const seen = new Set();
59
172
  return models.filter((m) => {
@@ -75,22 +188,16 @@ function latestModelsOnly(models) {
75
188
  return true;
76
189
  });
77
190
  }
78
- const PROVIDER_LABELS = {
79
- anthropic: "Anthropic (Claude)",
80
- "ai-sdk:openai": "OpenAI",
81
- "ai-sdk:google": "Google Gemini",
82
- };
83
- const KEY_PLACEHOLDERS = {
84
- ANTHROPIC_API_KEY: "sk-ant-...",
85
- OPENAI_API_KEY: "sk-...",
86
- GOOGLE_GENERATIVE_AI_API_KEY: "AI...",
87
- };
88
191
  const PROVIDER_DOCS = {
89
192
  anthropic: "https://console.anthropic.com/settings/keys",
193
+ "ai-sdk:anthropic": "https://console.anthropic.com/settings/keys",
90
194
  "ai-sdk:openai": "https://platform.openai.com/api-keys",
91
195
  "ai-sdk:google": "https://aistudio.google.com/apikey",
196
+ "ai-sdk:openrouter": "https://openrouter.ai/keys",
197
+ "ai-sdk:groq": "https://console.groq.com/keys",
198
+ "ai-sdk:mistral": "https://console.mistral.ai/api-keys/",
199
+ "ai-sdk:cohere": "https://dashboard.cohere.com/api-keys",
92
200
  };
93
- const PRIMARY_PROVIDERS = ["anthropic", "ai-sdk:openai", "ai-sdk:google"];
94
201
  function LLMSectionInner({ builderEnabled, connectUrl, connected, orgName, open, onToggle, }) {
95
202
  const [envKeys, setEnvKeys] = useState([]);
96
203
  const [apiKey, setApiKey] = useState("");
@@ -102,17 +209,46 @@ function LLMSectionInner({ builderEnabled, connectUrl, connected, orgName, open,
102
209
  const [selectedEngine, setSelectedEngine] = useState("anthropic");
103
210
  const [selectedModel, setSelectedModel] = useState("");
104
211
  const [applyNote, setApplyNote] = useState(false);
212
+ const [testing, setTesting] = useState(false);
213
+ const [testResult, setTestResult] = useState(null);
214
+ const [settingsStatus, setSettingsStatus] = useState(null);
215
+ const [disconnectError, setDisconnectError] = useState(null);
105
216
  useEffect(() => {
106
217
  fetch("/_agent-native/env-status")
107
218
  .then((r) => (r.ok ? r.json() : []))
108
219
  .then(setEnvKeys)
109
220
  .catch(() => { });
110
221
  }, [saved]);
222
+ const notifyConfigChanged = useCallback(() => {
223
+ window.dispatchEvent(new CustomEvent("agent-engine:configured-changed"));
224
+ }, []);
225
+ const refreshSettingsStatus = useCallback(() => {
226
+ fetch("/_agent-native/agent-engine/status")
227
+ .then((r) => (r.ok ? r.json() : null))
228
+ .then((data) => {
229
+ if (data?.configured &&
230
+ typeof data.engine === "string" &&
231
+ (data.source === "env" || data.source === "settings")) {
232
+ setSettingsStatus({
233
+ engine: data.engine,
234
+ source: data.source,
235
+ envVar: typeof data.envVar === "string" ? data.envVar : null,
236
+ });
237
+ }
238
+ else {
239
+ setSettingsStatus(null);
240
+ }
241
+ })
242
+ .catch(() => { });
243
+ }, []);
111
244
  useEffect(() => {
112
- fetch("/_agent-native/actions/list-agent-engines", {
245
+ refreshSettingsStatus();
246
+ }, [refreshSettingsStatus]);
247
+ useEffect(() => {
248
+ fetch("/_agent-native/actions/manage-agent-engine", {
113
249
  method: "POST",
114
250
  headers: { "Content-Type": "application/json" },
115
- body: JSON.stringify({}),
251
+ body: JSON.stringify({ action: "list" }),
116
252
  })
117
253
  .then((r) => (r.ok ? r.json() : null))
118
254
  .then((data) => {
@@ -132,21 +268,23 @@ function LLMSectionInner({ builderEnabled, connectUrl, connected, orgName, open,
132
268
  const envConfigured = envVar
133
269
  ? (envKeys.find((k) => k.key === envVar)?.configured ?? false)
134
270
  : false;
135
- const anyKeyConfigured = envConfigured || connected;
271
+ const settingsConfigured = settingsStatus != null && settingsStatus.engine === currentEngine;
272
+ const anyKeyConfigured = envConfigured || connected || settingsConfigured;
273
+ const sourceBadge = computeSourceBadge({
274
+ settingsConfigured,
275
+ settingsStatus,
276
+ envConfigured,
277
+ envVar,
278
+ builderConnected: connected,
279
+ });
136
280
  const engineChanged = selectedEngine !== currentEngine || selectedModel !== currentModel;
137
- // Build provider options from engines, filtered and ordered
138
- const providerOptions = PRIMARY_PROVIDERS.filter((name) => engines.some((e) => e.name === name)).map((name) => ({
139
- value: name,
140
- label: PROVIDER_LABELS[name] ?? name,
141
- }));
142
- // If the currently selected engine isn't in the visible list, make sure it's shown
143
- if (!providerOptions.find((o) => o.value === selectedEngine) &&
144
- engines.some((e) => e.name === selectedEngine)) {
145
- providerOptions.push({
146
- value: selectedEngine,
147
- label: PROVIDER_LABELS[selectedEngine] ?? selectedEngine,
148
- });
149
- }
281
+ // Hide the Anthropic-via-AI-SDK alias (redundant with the native entry)
282
+ // and Ollama (no API key to set here). The currently-selected engine is
283
+ // always kept so a stale setting doesn't vanish from the picker.
284
+ const providerOptions = engines
285
+ .filter((e) => e.name === selectedEngine ||
286
+ (e.name !== "ai-sdk:anthropic" && e.name !== "ai-sdk:ollama"))
287
+ .map((e) => ({ value: e.name, label: e.label }));
150
288
  const modelOptions = latestModelsOnly(selectedEngineInfo?.supportedModels ?? []).map((m) => ({ value: m, label: friendlyModelName(m) }));
151
289
  const handleSave = async () => {
152
290
  if (!apiKey.trim() || !envVar)
@@ -163,6 +301,8 @@ function LLMSectionInner({ builderEnabled, connectUrl, connected, orgName, open,
163
301
  if (res.ok) {
164
302
  setSaved(true);
165
303
  setApiKey("");
304
+ refreshSettingsStatus();
305
+ notifyConfigChanged();
166
306
  setTimeout(() => setSaved(false), 2000);
167
307
  }
168
308
  }
@@ -170,12 +310,81 @@ function LLMSectionInner({ builderEnabled, connectUrl, connected, orgName, open,
170
310
  setSaving(false);
171
311
  }
172
312
  };
313
+ const handleDisconnect = async () => {
314
+ setDisconnectError(null);
315
+ try {
316
+ const res = await fetch("/_agent-native/agent-engine/disconnect", {
317
+ method: "POST",
318
+ });
319
+ if (res.ok) {
320
+ setTestResult(null);
321
+ setApplyNote(false);
322
+ refreshSettingsStatus();
323
+ notifyConfigChanged();
324
+ return;
325
+ }
326
+ const body = (await res.json().catch(() => null));
327
+ setDisconnectError(body?.error ??
328
+ (res.status === 401
329
+ ? "You must be signed in to disconnect."
330
+ : `Disconnect failed (HTTP ${res.status})`));
331
+ }
332
+ catch (err) {
333
+ setDisconnectError(err instanceof Error ? err.message : String(err));
334
+ }
335
+ };
336
+ const handleTest = async () => {
337
+ setTesting(true);
338
+ setTestResult(null);
339
+ try {
340
+ const res = await fetch("/_agent-native/actions/manage-agent-engine", {
341
+ method: "POST",
342
+ headers: { "Content-Type": "application/json" },
343
+ body: JSON.stringify({
344
+ action: "test",
345
+ engine: selectedEngine,
346
+ model: selectedModel || selectedEngineInfo?.defaultModel,
347
+ }),
348
+ });
349
+ // The action endpoint wraps tool output; some paths return the JSON
350
+ // string as-is, others wrap in { result }. Accept either shape.
351
+ const data = await res.json();
352
+ const parsed = typeof data === "string"
353
+ ? JSON.parse(data)
354
+ : typeof data?.result === "string"
355
+ ? JSON.parse(data.result)
356
+ : data;
357
+ if (parsed?.ok) {
358
+ setTestResult({
359
+ ok: true,
360
+ latencyMs: parsed.latencyMs ?? 0,
361
+ model: parsed.model ?? selectedModel,
362
+ });
363
+ }
364
+ else {
365
+ setTestResult({
366
+ ok: false,
367
+ error: parsed?.error ?? "Test failed (no error message)",
368
+ });
369
+ }
370
+ }
371
+ catch (err) {
372
+ setTestResult({
373
+ ok: false,
374
+ error: err instanceof Error ? err.message : String(err),
375
+ });
376
+ }
377
+ finally {
378
+ setTesting(false);
379
+ }
380
+ };
173
381
  const handleApply = async () => {
174
382
  try {
175
- const res = await fetch("/_agent-native/actions/set-agent-engine", {
383
+ const res = await fetch("/_agent-native/actions/manage-agent-engine", {
176
384
  method: "POST",
177
385
  headers: { "Content-Type": "application/json" },
178
386
  body: JSON.stringify({
387
+ action: "set",
179
388
  engine: selectedEngine,
180
389
  model: selectedModel,
181
390
  }),
@@ -184,22 +393,22 @@ function LLMSectionInner({ builderEnabled, connectUrl, connected, orgName, open,
184
393
  setCurrentEngine(selectedEngine);
185
394
  setCurrentModel(selectedModel);
186
395
  setApplyNote(true);
396
+ refreshSettingsStatus();
397
+ notifyConfigChanged();
187
398
  setTimeout(() => setApplyNote(false), 4000);
188
399
  }
189
400
  }
190
- catch {
191
- // ignore
192
- }
401
+ catch { }
193
402
  };
194
- return (_jsx(SettingsSection, { icon: _jsx(IconBrain, { size: 14 }), title: "LLM", subtitle: "Connect any major LLM \u2014 Claude, GPT, Gemini, and more.", required: true, connected: anyKeyConfigured, open: open, onToggle: onToggle, children: _jsxs("div", { className: "space-y-2", children: [_jsx(UseBuilderCard, { connectUrl: connectUrl, connected: connected, orgName: orgName, comingSoon: true, builderEnabled: builderEnabled, label: "Connect Builder.io" }), _jsx(ManualSetupCard, { hint: "Choose your AI provider and model.", docsUrl: PROVIDER_DOCS[selectedEngine], docsLabel: "Get an API key", dim: connected, children: _jsxs("div", { className: "space-y-2 mb-1", children: [_jsx(SettingsSelect, { label: "Provider", value: selectedEngine, options: providerOptions, onValueChange: (val) => {
403
+ return (_jsx(SettingsSection, { icon: _jsx(IconBrain, { size: 14 }), title: "LLM", subtitle: "Connect any major LLM \u2014 Claude, GPT, Gemini, and more.", required: true, connected: anyKeyConfigured, open: open, onToggle: onToggle, children: _jsxs("div", { className: "space-y-2", children: [_jsx(UseBuilderCard, { connectUrl: connectUrl, connected: connected, orgName: orgName, label: "Connect Builder.io" }), !connected && (_jsx(ManualSetupCard, { hint: "Choose your AI provider and model.", docsUrl: PROVIDER_DOCS[selectedEngine], sourceBadge: sourceBadge, docsLabel: "Get an API key", children: _jsxs("div", { className: "space-y-2 mb-1", children: [_jsx(SettingsSelect, { label: "Provider", value: selectedEngine, options: providerOptions, onValueChange: (val) => {
195
404
  setSelectedEngine(val);
196
405
  const info = engines.find((e) => e.name === val);
197
406
  setSelectedModel(info?.defaultModel ?? "");
198
407
  setApiKey("");
199
- } }), modelOptions.length > 0 && (_jsx(SettingsSelect, { label: "Model", value: selectedModel, options: modelOptions, onValueChange: setSelectedModel })), envVar && envConfigured ? (_jsxs("div", { className: "flex items-center gap-1.5 text-[10px] text-green-500", children: [_jsx(IconCheck, { size: 10 }), envVar, " configured"] })) : envVar ? (_jsxs("div", { className: "flex gap-1.5", children: [_jsx("input", { type: "password", value: apiKey, onChange: (e) => setApiKey(e.target.value), onKeyDown: (e) => {
408
+ } }), _jsxs("div", { className: "space-y-1.5", children: [_jsx("p", { className: "text-[12px] font-medium text-foreground", children: "Model" }), _jsx("input", { type: "text", list: `model-suggestions-${selectedEngine}`, value: selectedModel, onChange: (e) => setSelectedModel(e.target.value), placeholder: selectedEngineInfo?.defaultModel ?? "e.g. model-id", spellCheck: false, autoComplete: "off", className: "flex h-9 w-full rounded-md border border-border bg-background px-3 text-[12px] text-foreground outline-none transition-colors hover:bg-accent/40 focus:ring-1 focus:ring-accent placeholder:text-muted-foreground/50", style: CONTROL_STYLE }), modelOptions.length > 0 && (_jsx("datalist", { id: `model-suggestions-${selectedEngine}`, children: modelOptions.map((opt) => (_jsx("option", { value: opt.value, label: opt.label }, opt.value))) }))] }), envVar && envConfigured ? (_jsxs("div", { className: "flex items-center gap-1.5 text-[10px] text-green-500", children: [_jsx(IconCheck, { size: 10 }), envVar, " configured"] })) : envVar ? (_jsxs("div", { className: "flex gap-1.5", children: [_jsx("input", { type: "password", value: apiKey, onChange: (e) => setApiKey(e.target.value), onKeyDown: (e) => {
200
409
  if (e.key === "Enter")
201
410
  handleSave();
202
- }, placeholder: KEY_PLACEHOLDERS[envVar] ?? "...", className: "flex-1 rounded border border-border bg-background px-2 py-1 text-[11px] text-foreground outline-none placeholder:text-muted-foreground/50 focus:ring-1 focus:ring-accent" }), _jsx("button", { onClick: handleSave, disabled: !apiKey.trim() || saving, className: "rounded bg-accent px-2 py-1 text-[10px] font-medium text-foreground hover:bg-accent/80 disabled:opacity-40", children: saving ? (_jsx(IconLoader2, { size: 10, className: "animate-spin" })) : saved ? (_jsx(IconCheck, { size: 10 })) : ("Save") })] })) : null, engineChanged && (_jsx("button", { onClick: handleApply, className: "rounded bg-accent px-2.5 py-1 text-[10px] font-medium text-foreground hover:bg-accent/80", children: "Apply" })), applyNote && (_jsx("p", { className: "text-[10px] text-muted-foreground", children: "Changes take effect on next conversation" }))] }) })] }) }));
411
+ }, placeholder: PROVIDER_ENV_PLACEHOLDERS[envVar] ?? "...", className: "flex-1 rounded border border-border bg-background px-2 py-1 text-[11px] text-foreground outline-none placeholder:text-muted-foreground/50 focus:ring-1 focus:ring-accent" }), _jsx("button", { onClick: handleSave, disabled: !apiKey.trim() || saving, className: "rounded bg-accent px-2 py-1 text-[10px] font-medium text-foreground hover:bg-accent/80 disabled:opacity-40", children: saving ? (_jsx(IconLoader2, { size: 10, className: "animate-spin" })) : saved ? (_jsx(IconCheck, { size: 10 })) : ("Save") })] })) : null, _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("button", { onClick: handleTest, disabled: testing, className: "rounded border border-border px-2.5 py-1 text-[10px] font-medium text-foreground hover:bg-accent/40 disabled:opacity-40", children: testing ? (_jsxs("span", { className: "flex items-center gap-1", children: [_jsx(IconLoader2, { size: 10, className: "animate-spin" }), "Testing\u2026"] })) : ("Test") }), engineChanged && (_jsx("button", { onClick: handleApply, className: "rounded bg-accent px-2.5 py-1 text-[10px] font-medium text-foreground hover:bg-accent/80", children: "Apply" })), settingsStatus != null && (_jsx("button", { onClick: handleDisconnect, className: "ml-auto rounded border border-border px-2.5 py-1 text-[10px] font-medium text-muted-foreground hover:bg-destructive/10 hover:text-destructive hover:border-destructive/40", title: "Clear the saved engine \u2014 the app will fall back to the default until you re-apply.", children: "Disconnect" }))] }), testResult && testResult.ok && (_jsxs("p", { className: "flex items-center gap-1 text-[10px] text-green-500", children: [_jsx(IconCheck, { size: 10 }), "Test passed \u2014 ", testResult.latencyMs, "ms"] })), testResult && testResult.ok === false && (_jsxs("p", { className: "text-[10px] text-destructive", children: ["Test failed: ", testResult.error] })), disconnectError && (_jsxs("p", { className: "text-[10px] text-destructive", children: ["Disconnect failed: ", disconnectError] })), applyNote && (_jsx("p", { className: "text-[10px] text-muted-foreground", children: "Changes take effect on next conversation" }))] }) }))] }) }));
203
412
  }
204
413
  // ─── Email Section ──────────────────────────────────────────────────────────
205
414
  function EmailSectionInner({ open, onToggle, }) {
@@ -334,6 +543,6 @@ export function SettingsPanel({ isDevMode, onToggleDevMode, showDevToggle, devAp
334
543
  const nextIsDev = next === "development";
335
544
  if (nextIsDev !== isDevMode)
336
545
  onToggleDevMode();
337
- } })) })), _jsx(LLMSectionInner, { builderEnabled: builderEnabled, connectUrl: connectUrl, connected: connected, orgName: orgName, open: openSection === "llm", onToggle: () => toggle("llm") }), _jsx(SettingsSection, { icon: _jsx(IconMicrophone, { size: 14 }), title: "Voice Transcription", subtitle: "How the composer microphone turns your voice into text.", open: openSection === "voice", onToggle: () => toggle("voice"), children: _jsx(VoiceTranscriptionSection, {}) }), _jsx(SettingsSection, { icon: _jsx(IconBolt, { size: 14 }), title: "Automations", subtitle: "Event-triggered and scheduled automations.", open: openSection === "automations", onToggle: () => toggle("automations"), children: _jsx(AutomationsSection, {}) }), hasSecrets && (_jsx(SettingsSection, { icon: _jsx(IconKey, { size: 14 }), title: "API Keys & Connections", subtitle: "Service credentials registered by this app.", open: openSection === "secrets", onToggle: () => toggle("secrets"), children: _jsx(SecretsSection, { focusKey: focusSecretKey }) })), _jsx(SettingsSection, { icon: _jsx(IconCloud, { size: 14 }), title: "Hosting", subtitle: "Deploy your app to the cloud.", connected: connected, open: openSection === "hosting", onToggle: () => toggle("hosting"), children: _jsxs("div", { className: "space-y-2", children: [_jsx(UseBuilderCard, { connectUrl: connectUrl, connected: connected, orgName: orgName, comingSoon: true, builderEnabled: builderEnabled }), _jsx(ManualSetupCard, { hint: "Deploy manually to Netlify, Vercel, Cloudflare, or any Nitro-supported target.", docsUrl: "https://www.builder.io/c/docs/agent-native-deployment", dim: connected })] }) }), _jsx(SettingsSection, { icon: _jsx(IconDatabase, { size: 14 }), title: "Database", subtitle: "Connect a cloud database for persistent storage.", connected: connected, open: openSection === "database", onToggle: () => toggle("database"), children: _jsxs("div", { className: "space-y-2", children: [_jsx(UseBuilderCard, { connectUrl: connectUrl, connected: connected, orgName: orgName, comingSoon: true, builderEnabled: builderEnabled }), _jsx(ManualSetupCard, { hint: "Set DATABASE_URL in your .env to connect Neon, Supabase, Turso, or any Postgres/SQLite database.", docsUrl: "https://www.builder.io/c/docs/agent-native-database", dim: connected })] }) }), _jsx(SettingsSection, { icon: _jsx(IconUpload, { size: 14 }), title: "File uploads", subtitle: "Where user-uploaded files (avatars, chat attachments) are stored.", connected: connected, open: openSection === "uploads", onToggle: () => toggle("uploads"), children: _jsxs("div", { className: "space-y-2", children: [_jsx(UseBuilderCard, { connectUrl: connectUrl, connected: connected, orgName: orgName, comingSoon: true, builderEnabled: builderEnabled }), _jsx(ManualSetupCard, { hint: "Without a provider, files are stored as base64 in your database. Fine for dev, not recommended for production.", docsUrl: "https://www.builder.io/c/docs/agent-native-file-uploads", dim: connected })] }) }), _jsx(SettingsSection, { icon: _jsx(IconShield, { size: 14 }), title: "Authentication", subtitle: "Set up user authentication and access control.", connected: connected, open: openSection === "auth", onToggle: () => toggle("auth"), children: _jsxs("div", { className: "space-y-2", children: [_jsx(UseBuilderCard, { connectUrl: connectUrl, connected: connected, orgName: orgName, comingSoon: true, builderEnabled: builderEnabled }), _jsx(ManualSetupCard, { hint: "Configure Better Auth with BETTER_AUTH_SECRET and optional Google/GitHub OAuth providers.", docsUrl: "https://www.builder.io/c/docs/agent-native-authentication", dim: connected })] }) }), _jsx(EmailSectionInner, { open: openSection === "email", onToggle: () => toggle("email") }), _jsx(SettingsSection, { icon: _jsx(IconBrowser, { size: 14 }), title: "Browser Automation", subtitle: "Let agents control a real browser for web tasks.", connected: connected, open: openSection === "browser", onToggle: () => toggle("browser"), children: _jsx(UseBuilderCard, { connectUrl: connectUrl, connected: connected, orgName: orgName, comingSoon: true, builderEnabled: builderEnabled }) }), _jsx(SettingsSection, { icon: _jsx(IconGitBranch, { size: 14 }), title: "Background Agent", subtitle: "Make code changes from production mode via Builder.", connected: connected, open: openSection === "background", onToggle: () => toggle("background"), children: _jsx(UseBuilderCard, { connectUrl: connectUrl, connected: connected, orgName: orgName, comingSoon: true, builderEnabled: builderEnabled }) }), _jsx(SettingsSection, { icon: _jsx(IconPlugConnected, { size: 14 }), title: "Integrations", subtitle: "Connect messaging platforms and external services.", open: openSection === "integrations", onToggle: () => toggle("integrations"), children: _jsx(Suspense, { fallback: null, children: _jsx(IntegrationsPanel, {}) }) }), _jsx(SettingsSection, { icon: _jsx(IconCoin, { size: 14 }), title: "Usage", subtitle: "Track token consumption and estimated cost \u2014 broken down by chat, automations, and background jobs.", open: openSection === "usage", onToggle: () => toggle("usage"), children: _jsx(UsageSection, {}) }), _jsx(SettingsSection, { icon: _jsx(IconTopologyRing2, { size: 14 }), title: "Connected Agents (A2A)", subtitle: "Manage remote agents connected via the A2A protocol.", open: openSection === "a2a", onToggle: () => toggle("a2a"), children: _jsx(AgentsSection, {}) })] }));
546
+ } })) })), _jsx(LLMSectionInner, { builderEnabled: builderEnabled, connectUrl: connectUrl, connected: connected, orgName: orgName, open: openSection === "llm", onToggle: () => toggle("llm") }), _jsx(SettingsSection, { icon: _jsx(IconMicrophone, { size: 14 }), title: "Voice Transcription", subtitle: "How the composer microphone turns your voice into text.", open: openSection === "voice", onToggle: () => toggle("voice"), children: _jsx(VoiceTranscriptionSection, {}) }), _jsx(SettingsSection, { icon: _jsx(IconBolt, { size: 14 }), title: "Automations", subtitle: "Event-triggered and scheduled automations.", open: openSection === "automations", onToggle: () => toggle("automations"), children: _jsx(AutomationsSection, {}) }), hasSecrets && (_jsx(SettingsSection, { icon: _jsx(IconKey, { size: 14 }), title: "API Keys & Connections", subtitle: "Service credentials registered by this app.", open: openSection === "secrets", onToggle: () => toggle("secrets"), children: _jsx(SecretsSection, { focusKey: focusSecretKey }) })), _jsx(SettingsSection, { icon: _jsx(IconCloud, { size: 14 }), title: "Hosting", subtitle: "Deploy your app to the cloud.", connected: connected, open: openSection === "hosting", onToggle: () => toggle("hosting"), children: _jsxs("div", { className: "space-y-2", children: [_jsx(UseBuilderCard, { connectUrl: connectUrl, connected: connected, orgName: orgName, comingSoon: true, builderEnabled: builderEnabled }), _jsx(ManualSetupCard, { hint: "Deploy manually to Netlify, Vercel, Cloudflare, or any Nitro-supported target.", docsUrl: "https://www.builder.io/c/docs/agent-native-deployment", dim: connected })] }) }), _jsx(SettingsSection, { icon: _jsx(IconDatabase, { size: 14 }), title: "Database", subtitle: "Connect a cloud database for persistent storage.", connected: connected, open: openSection === "database", onToggle: () => toggle("database"), children: _jsxs("div", { className: "space-y-2", children: [_jsx(UseBuilderCard, { connectUrl: connectUrl, connected: connected, orgName: orgName, comingSoon: true, builderEnabled: builderEnabled }), _jsx(ManualSetupCard, { hint: "Set DATABASE_URL in your .env to connect Neon, Supabase, Turso, or any Postgres/SQLite database.", docsUrl: "https://www.builder.io/c/docs/agent-native-database", dim: connected })] }) }), _jsx(SettingsSection, { icon: _jsx(IconUpload, { size: 14 }), title: "File uploads", subtitle: "Where user-uploaded files (avatars, chat attachments) are stored.", connected: connected, open: openSection === "uploads", onToggle: () => toggle("uploads"), children: _jsxs("div", { className: "space-y-2", children: [_jsx(UseBuilderCard, { connectUrl: connectUrl, connected: connected, orgName: orgName }), _jsx(ManualSetupCard, { hint: "Without a provider, files are stored as base64 in your database. Fine for dev, not recommended for production.", docsUrl: "https://www.builder.io/c/docs/agent-native-file-uploads", dim: connected })] }) }), _jsx(SettingsSection, { icon: _jsx(IconShield, { size: 14 }), title: "Authentication", subtitle: "Set up user authentication and access control.", connected: connected, open: openSection === "auth", onToggle: () => toggle("auth"), children: _jsxs("div", { className: "space-y-2", children: [_jsx(UseBuilderCard, { connectUrl: connectUrl, connected: connected, orgName: orgName, comingSoon: true, builderEnabled: builderEnabled }), _jsx(ManualSetupCard, { hint: "Configure Better Auth with BETTER_AUTH_SECRET and optional Google/GitHub OAuth providers.", docsUrl: "https://www.builder.io/c/docs/agent-native-authentication", dim: connected })] }) }), _jsx(EmailSectionInner, { open: openSection === "email", onToggle: () => toggle("email") }), _jsx(SettingsSection, { icon: _jsx(IconBrowser, { size: 14 }), title: "Browser Automation", subtitle: "Let agents control a real browser for web tasks.", connected: connected, open: openSection === "browser", onToggle: () => toggle("browser"), children: _jsx(UseBuilderCard, { connectUrl: connectUrl, connected: connected, orgName: orgName, comingSoon: true, builderEnabled: builderEnabled }) }), _jsx(SettingsSection, { icon: _jsx(IconGitBranch, { size: 14 }), title: "Background Agent", subtitle: "Make code changes from production mode via Builder.", connected: connected, open: openSection === "background", onToggle: () => toggle("background"), children: _jsx(UseBuilderCard, { connectUrl: connectUrl, connected: connected, orgName: orgName, comingSoon: true, builderEnabled: builderEnabled }) }), _jsx(SettingsSection, { icon: _jsx(IconPlugConnected, { size: 14 }), title: "Integrations", subtitle: "Connect messaging platforms and external services.", open: openSection === "integrations", onToggle: () => toggle("integrations"), children: _jsx(Suspense, { fallback: null, children: _jsx(IntegrationsPanel, {}) }) }), _jsx(SettingsSection, { icon: _jsx(IconCoin, { size: 14 }), title: "Usage", subtitle: "Track token consumption and estimated cost \u2014 broken down by chat, automations, and background jobs.", open: openSection === "usage", onToggle: () => toggle("usage"), children: _jsx(UsageSection, {}) }), _jsx(SettingsSection, { icon: _jsx(IconTopologyRing2, { size: 14 }), title: "Connected Agents (A2A)", subtitle: "Manage remote agents connected via the A2A protocol.", open: openSection === "a2a", onToggle: () => toggle("a2a"), children: _jsx(AgentsSection, {}) })] }));
338
547
  }
339
548
  //# sourceMappingURL=SettingsPanel.js.map