@agent-native/core 0.120.1 → 0.120.2
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.
- package/corpus/README.md +2 -2
- package/corpus/core/CHANGELOG.md +9 -0
- package/corpus/core/docs/content/extensions.mdx +23 -4
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/agent/production-agent.ts +4 -0
- package/corpus/core/src/agent/run-manager.ts +36 -10
- package/corpus/core/src/agent/types.ts +2 -0
- package/corpus/core/src/client/extensions/ExtensionsListPage.tsx +16 -3
- package/corpus/core/src/client/settings/ExtensionsSettingsContent.tsx +24 -0
- package/corpus/core/src/client/settings/SettingsPanel.tsx +10 -0
- package/corpus/core/src/deploy/build.ts +3 -0
- package/corpus/core/src/server/analytics.ts +154 -25
- package/corpus/core/src/templates/chat/app/components/layout/Sidebar.tsx +35 -6
- package/corpus/core/src/templates/chat/app/routes/extensions._index.tsx +2 -2
- package/corpus/core/src/templates/chat/netlify.toml +1 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +16 -0
- package/corpus/core/src/vite/client.ts +6 -0
- package/corpus/templates/analytics/.agents/skills/adhoc-analysis/SKILL.md +27 -43
- package/corpus/templates/analytics/.agents/skills/dashboard-management/SKILL.md +19 -8
- package/corpus/templates/analytics/.agents/skills/data-querying/SKILL.md +2 -2
- package/corpus/templates/analytics/AGENTS.md +20 -8
- package/corpus/templates/analytics/actions/get-explorer-dashboard.ts +3 -0
- package/corpus/templates/analytics/actions/list-dashboard-usage-stats.ts +140 -46
- package/corpus/templates/analytics/actions/migrate-analytics-artifacts.ts +48 -0
- package/corpus/templates/analytics/actions/save-analysis.ts +2 -3
- package/corpus/templates/analytics/actions/view-screen.ts +1 -1
- package/corpus/templates/analytics/app/components/dashboard/DashboardMetadata.tsx +77 -0
- package/corpus/templates/analytics/app/components/dashboard/DashboardPanelSkeleton.tsx +7 -1
- package/corpus/templates/analytics/app/components/layout/NewDashboardDialog.tsx +1 -0
- package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +103 -502
- package/corpus/templates/analytics/app/global.css +30 -0
- package/corpus/templates/analytics/app/hooks/use-navigation-state.ts +2 -2
- package/corpus/templates/analytics/app/i18n-data.ts +80 -0
- package/corpus/templates/analytics/app/pages/Agents.tsx +49 -2
- package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/index.tsx +54 -11
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/SqlChartCard.tsx +3 -53
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +23 -25
- package/corpus/templates/analytics/app/pages/analyses/AnalysisDetail.tsx +2 -2
- package/corpus/templates/analytics/app/routes/analyses._index.tsx +3 -2
- package/corpus/templates/analytics/app/routes/extensions._index.tsx +2 -2
- package/corpus/templates/analytics/changelog/2026-07-23-analytics-now-groups-saved-analyses-and-embedded-extensions-.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-23-dashboard-menus-show-who-created-and-last-updated-each-dashb.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-23-dashboard-usage-now-loads-reliably-for-organizations-with-ma.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-23-long-dashboard-building-requests-now-continue-without-stoppi.md +6 -0
- package/corpus/templates/analytics/netlify.toml +4 -0
- package/corpus/templates/analytics/server/db/schema.ts +4 -0
- package/corpus/templates/analytics/server/lib/agent-chat-plan-mode.ts +0 -1
- package/corpus/templates/analytics/server/lib/agent-readable-resource-context.ts +1 -0
- package/corpus/templates/analytics/server/lib/migrate-analytics-artifacts.ts +1062 -0
- package/corpus/templates/analytics/server/plugins/agent-chat.ts +6 -52
- package/corpus/templates/analytics/server/plugins/core-routes.ts +1 -1
- package/corpus/templates/analytics/server/plugins/db.ts +10 -0
- package/corpus/templates/assets/actions/generate-image-batch.ts +36 -1
- package/corpus/templates/assets/actions/generate-image.ts +28 -1
- package/corpus/templates/assets/app/components/layout/Sidebar.tsx +46 -8
- package/corpus/templates/assets/app/routes/extensions._index.tsx +2 -2
- package/corpus/templates/assets/changelog/2026-07-23-assets-image-generation-now-recovers-after-a-completed-tool-.md +6 -0
- package/corpus/templates/assets/netlify.toml +1 -0
- package/corpus/templates/brain/app/components/layout/Sidebar.tsx +38 -8
- package/corpus/templates/brain/app/routes/extensions._index.tsx +2 -2
- package/corpus/templates/brain/netlify.toml +1 -0
- package/corpus/templates/calendar/app/components/layout/Sidebar.tsx +43 -5
- package/corpus/templates/calendar/app/routes/_app.extensions._index.tsx +2 -16
- package/corpus/templates/calendar/netlify.toml +1 -0
- package/corpus/templates/chat/app/components/layout/Sidebar.tsx +35 -6
- package/corpus/templates/chat/app/routes/extensions._index.tsx +2 -2
- package/corpus/templates/chat/netlify.toml +1 -0
- package/corpus/templates/clips/app/components/library/library-layout.tsx +52 -6
- package/corpus/templates/clips/app/routes/_app.extensions._index.tsx +2 -16
- package/corpus/templates/clips/changelog/2026-07-23-agent-settings-are-clearly-labeled-manage-agent-in-the-sideb.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-23-meeting-recording-meters-and-dismissed-prompts.md +6 -0
- package/corpus/templates/clips/desktop/src/hooks/useMicMeter.ts +1 -1
- package/corpus/templates/clips/desktop/src/lib/meeting-notification-dismissal.ts +2 -0
- package/corpus/templates/clips/desktop/src/lib/voice-dictation.ts +1 -3
- package/corpus/templates/clips/desktop/src/overlays/live-audio-bars.tsx +86 -0
- package/corpus/templates/clips/desktop/src/overlays/meeting-notification.tsx +24 -0
- package/corpus/templates/clips/desktop/src/overlays/recording-pill.tsx +5 -69
- package/corpus/templates/clips/desktop/src/styles.css +35 -3
- package/corpus/templates/clips/desktop/src-tauri/src/adhoc_meetings_watcher.rs +13 -44
- package/corpus/templates/clips/desktop/src-tauri/src/notifications.rs +119 -17
- package/corpus/templates/clips/netlify.toml +1 -0
- package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +3 -7
- package/corpus/templates/content/app/routes/_app.extensions._index.tsx +2 -2
- package/corpus/templates/content/changelog/2026-07-23-agent-settings-are-clearly-labeled-manage-agent-in-the-sideb.md +6 -0
- package/corpus/templates/content/netlify.toml +1 -0
- package/corpus/templates/design/app/components/layout/Sidebar.tsx +55 -17
- package/corpus/templates/design/app/routes/extensions._index.tsx +2 -2
- package/corpus/templates/design/changelog/2026-07-23-agent-settings-are-clearly-labeled-manage-agent-in-the-sideb.md +6 -0
- package/corpus/templates/design/netlify.toml +1 -0
- package/corpus/templates/dispatch/app/dispatch-extensions.tsx +1 -1
- package/corpus/templates/dispatch/changelog/2026-07-23-agent-settings-are-clearly-labeled-manage-agent-in-the-sideb.md +6 -0
- package/corpus/templates/dispatch/netlify.toml +1 -0
- package/corpus/templates/forms/app/components/layout/Sidebar.tsx +41 -45
- package/corpus/templates/forms/app/routes/_app.extensions._index.tsx +2 -2
- package/corpus/templates/forms/changelog/2026-07-23-agent-settings-are-clearly-labeled-manage-agent-in-the-sideb.md +6 -0
- package/corpus/templates/forms/netlify.toml +1 -0
- package/corpus/templates/macros/app/components/layout/AppLayout.tsx +36 -5
- package/corpus/templates/macros/app/routes/extensions._index.tsx +2 -2
- package/corpus/templates/macros/netlify.toml +1 -0
- package/corpus/templates/mail/app/components/layout/AppLayout.tsx +0 -9
- package/corpus/templates/mail/app/routes/extensions._index.tsx +2 -2
- package/corpus/templates/mail/netlify.toml +1 -0
- package/corpus/templates/plan/app/components/layout/Sidebar.tsx +38 -5
- package/corpus/templates/plan/app/routes/extensions._index.tsx +2 -2
- package/corpus/templates/plan/netlify.toml +1 -0
- package/corpus/templates/slides/app/components/layout/Sidebar.tsx +47 -4
- package/corpus/templates/slides/app/routes/extensions._index.tsx +2 -2
- package/corpus/templates/slides/netlify.toml +1 -0
- package/corpus/templates/tasks/app/components/layout/Sidebar.tsx +37 -6
- package/corpus/templates/tasks/app/routes/extensions._index.tsx +2 -2
- package/corpus/templates/tasks/app/routes/settings.tsx +31 -0
- package/corpus/templates/tasks/netlify.toml +1 -0
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +4 -0
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/run-manager.d.ts +9 -0
- package/dist/agent/run-manager.d.ts.map +1 -1
- package/dist/agent/run-manager.js +25 -10
- package/dist/agent/run-manager.js.map +1 -1
- package/dist/agent/types.d.ts +2 -2
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/client/extensions/ExtensionsListPage.d.ts +5 -1
- package/dist/client/extensions/ExtensionsListPage.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionsListPage.js +5 -3
- package/dist/client/extensions/ExtensionsListPage.js.map +1 -1
- package/dist/client/settings/ExtensionsSettingsContent.d.ts +2 -0
- package/dist/client/settings/ExtensionsSettingsContent.d.ts.map +1 -0
- package/dist/client/settings/ExtensionsSettingsContent.js +10 -0
- package/dist/client/settings/ExtensionsSettingsContent.js.map +1 -0
- package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
- package/dist/client/settings/SettingsPanel.js +10 -1
- package/dist/client/settings/SettingsPanel.js.map +1 -1
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/collab/awareness.d.ts.map +1 -1
- package/dist/deploy/build.js +1 -0
- package/dist/deploy/build.js.map +1 -1
- package/dist/observability/routes.d.ts +3 -3
- package/dist/progress/routes.d.ts +1 -1
- package/dist/provider-api/actions/custom-provider-registration.d.ts +7 -7
- package/dist/provider-api/actions/provider-api.d.ts +11 -11
- package/dist/provider-api/corpus-jobs.d.ts +2 -2
- package/dist/server/analytics.d.ts +9 -4
- package/dist/server/analytics.d.ts.map +1 -1
- package/dist/server/analytics.js +111 -22
- package/dist/server/analytics.js.map +1 -1
- package/dist/templates/chat/app/components/layout/Sidebar.tsx +35 -6
- package/dist/templates/chat/app/routes/extensions._index.tsx +2 -2
- package/dist/templates/chat/netlify.toml +1 -0
- package/dist/templates/workspace-core/.agents/skills/extensions/SKILL.md +16 -0
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +2 -0
- package/dist/vite/client.js.map +1 -1
- package/docs/content/extensions.mdx +23 -4
- package/package.json +1 -1
- package/src/agent/production-agent.ts +4 -0
- package/src/agent/run-manager.ts +36 -10
- package/src/agent/types.ts +2 -0
- package/src/client/extensions/ExtensionsListPage.tsx +16 -3
- package/src/client/settings/ExtensionsSettingsContent.tsx +24 -0
- package/src/client/settings/SettingsPanel.tsx +10 -0
- package/src/deploy/build.ts +3 -0
- package/src/server/analytics.ts +154 -25
- package/src/templates/chat/app/components/layout/Sidebar.tsx +35 -6
- package/src/templates/chat/app/routes/extensions._index.tsx +2 -2
- package/src/templates/chat/netlify.toml +1 -0
- package/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +16 -0
- package/src/vite/client.ts +6 -0
- package/corpus/templates/analytics/app/components/layout/NewAnalysisDialog.tsx +0 -165
- package/corpus/templates/analytics/app/pages/analyses/AnalysesList.tsx +0 -175
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsPanel.js","sourceRoot":"","sources":["../../../src/client/settings/SettingsPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Checkbox,\n Picker,\n TextField,\n} from \"@agent-native/toolkit/design-system\";\nimport { Button as ToolkitButton } from \"@agent-native/toolkit/ui/button\";\nimport {\n IconChevronDown,\n IconChevronRight,\n IconCheck,\n IconExternalLink,\n IconBrain,\n IconHierarchy2,\n IconBrowser,\n IconGitBranch,\n IconCloud,\n IconDatabase,\n IconShield,\n IconPlugConnected,\n IconTopologyRing2,\n IconLoader2,\n IconUpload,\n IconCoin,\n IconMail,\n IconKey,\n IconMicrophone,\n IconEyeOff,\n IconBolt,\n IconGauge,\n IconApps,\n IconUsersGroup,\n} from \"@tabler/icons-react\";\nimport React, {\n Suspense,\n lazy,\n useState,\n useEffect,\n useCallback,\n useMemo,\n useRef,\n} from \"react\";\nimport { Link, Navigate } from \"react-router\";\n\nimport { PROVIDER_ENV_PLACEHOLDERS } from \"../../agent/engine/provider-env-vars.js\";\nimport { saveAgentEngineProviderSettings } from \"../agent-engine-key.js\";\nimport { agentNativePath } from \"../api-path.js\";\nimport { BuilderBMark } from \"../builder-mark.js\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from \"../components/ui/tooltip.js\";\nimport { useT } from \"../i18n.js\";\nimport { TeamPage } from \"../org/TeamPage.js\";\nimport { BuilderConnectCard } from \"../setup-connections/BuilderConnectCard.js\";\nimport { callAction } from \"../use-action.js\";\nimport { useDevMode } from \"../use-dev-mode.js\";\nimport { cn } from \"../utils.js\";\nimport {\n AGENT_SETTINGS_SECTIONS,\n ALL_SETTINGS_SECTIONS,\n CONNECTION_SETTINGS_SECTIONS,\n WORKSPACE_SETTINGS_SECTIONS,\n getAgentSettingsSearchTabs,\n type SettingsSectionId,\n} from \"./agent-settings-search.js\";\nimport { AgentsSection } from \"./AgentsSection.js\";\nimport { AutomationsSection } from \"./AutomationsSection.js\";\nimport { DemoModeSection } from \"./DemoModeSection.js\";\nimport { SecretsSection } from \"./SecretsSection.js\";\nimport {\n SettingsSection,\n SettingsSurfaceProvider,\n useSettingsSurface,\n type SettingsSurface,\n} from \"./SettingsSection.js\";\nimport type { SettingsTabItem } from \"./SettingsTabsPage.js\";\nimport { UsageSection } from \"./UsageSection.js\";\nimport {\n type BuilderConnectFlow,\n useBuilderConnectFlow,\n useBuilderStatus,\n} from \"./useBuilderStatus.js\";\nimport {\n settingsSectionDomId,\n useSettingsPanelController,\n} from \"./useSettingsPanelController.js\";\nimport { VoiceTranscriptionSection } from \"./VoiceTranscriptionSection.js\";\n\nconst Button = React.forwardRef<\n HTMLButtonElement,\n React.ComponentPropsWithoutRef<typeof ToolkitButton>\n>(({ className, ...props }, ref) => (\n <ToolkitButton\n ref={ref}\n variant=\"ghost\"\n className={cn(\n \"h-auto p-0 hover:bg-transparent hover:text-inherit active:scale-100 [&_svg]:!size-auto\",\n className,\n )}\n {...props}\n />\n));\nButton.displayName = \"SettingsPrimitiveButton\";\n\nconst IntegrationsPanel = lazy(() =>\n import(\"../integrations/IntegrationsPanel.js\").then((m) => ({\n default: m.IntegrationsPanel,\n })),\n);\n\n// ─── Shared helpers ─────────────────────────────────────────────────────────\n\nfunction SettingsSkeleton({ lines = 3 }: { lines?: number }) {\n return (\n <div className=\"space-y-3 animate-pulse\">\n {Array.from({ length: lines }, (_, i) => (\n <div key={i} className=\"space-y-1.5\">\n <div\n className=\"h-3 rounded bg-muted-foreground/10\"\n style={{ width: i === 0 ? \"30%\" : i === 1 ? \"100%\" : \"60%\" }}\n />\n {i < 2 && (\n <div className=\"h-9 rounded-md border border-border bg-muted-foreground/5\" />\n )}\n </div>\n ))}\n </div>\n );\n}\n\ninterface SettingsSelectOption {\n value: string;\n label: string;\n description?: string;\n}\n\nconst CONTROL_STYLE = {\n fontSize: 12,\n lineHeight: 1,\n} satisfies React.CSSProperties;\n\nconst CONTROL_STYLE_PAGE = {\n fontSize: 14,\n lineHeight: 1.2,\n} satisfies React.CSSProperties;\n\n// Surface-aware class helpers so section bodies (shared with the compact\n// sidebar) read as roomy, shadcn-style forms on the full settings page while\n// staying dense in the sidebar.\nfunction fieldLabelClass(isPage: boolean): string {\n return cn(\"font-medium text-foreground\", isPage ? \"text-sm\" : \"text-[12px]\");\n}\n\n// Secondary label / row-title size (e.g. \"This app\", provider names).\nfunction subTextClass(isPage: boolean): string {\n return isPage ? \"text-sm\" : \"text-[11px]\";\n}\n\n// Helper / hint / status note size.\nfunction noteTextClass(isPage: boolean): string {\n return isPage ? \"text-xs\" : \"text-[10px]\";\n}\n\nfunction textInputClass(isPage: boolean): string {\n return cn(\n \"flex w-full rounded-md border border-border bg-background text-foreground outline-none transition-colors hover:bg-accent/40 focus:ring-1 focus:ring-accent placeholder:text-muted-foreground/50\",\n isPage ? \"h-10 px-3 text-sm\" : \"h-9 px-3 text-[12px]\",\n );\n}\n\nfunction pillButtonClass(\n isPage: boolean,\n tone: \"solid\" | \"outline\" | \"ghost\" = \"outline\",\n): string {\n const base = cn(\n \"inline-flex items-center justify-center gap-1 rounded-md font-medium transition-colors disabled:opacity-40\",\n isPage ? \"px-3 py-1.5 text-sm\" : \"px-2.5 py-1 text-[10px]\",\n );\n if (tone === \"solid\") {\n return cn(base, \"bg-accent text-foreground hover:bg-accent/80\");\n }\n if (tone === \"ghost\") {\n return cn(\n base,\n \"text-muted-foreground hover:bg-accent/40 hover:text-foreground\",\n );\n }\n return cn(base, \"border border-border text-foreground hover:bg-accent/40\");\n}\n\nfunction SettingsSelect({\n label,\n labelAdornment,\n value,\n options,\n onValueChange,\n disabled = false,\n}: {\n label: string;\n labelAdornment?: React.ReactNode;\n value: string;\n options: SettingsSelectOption[];\n onValueChange: (value: string) => void;\n disabled?: boolean;\n}) {\n const isPage = useSettingsSurface() === \"page\";\n const controlStyle = isPage ? CONTROL_STYLE_PAGE : CONTROL_STYLE;\n\n return (\n <div className=\"space-y-1.5\">\n <div className=\"flex items-center justify-between\">\n <p className={fieldLabelClass(isPage)}>{label}</p>\n {labelAdornment}\n </div>\n <Picker\n mode=\"select\"\n options={options.map((option) => ({\n value: option.value,\n label: option.label,\n description: option.description,\n textValue: option.label,\n }))}\n value={value}\n onChange={(next) => {\n if (next != null) onValueChange(String(next));\n }}\n disabled={disabled}\n aria-label={label}\n placeholder={value}\n style={controlStyle}\n className={cn(\n \"w-full text-start text-foreground\",\n isPage ? \"text-sm\" : \"text-[12px]\",\n )}\n />\n </div>\n );\n}\n\n// ─── Disconnect button for the Builder card's connected state ───────────────\n//\n// Two-step confirmation: first click arms the button (\"Confirm?\"), second\n// click actually disconnects. Arm auto-reverts after 4s of idle so a user\n// who wandered off doesn't come back to a disconnect waiting for them.\n//\n// Hits /_agent-native/builder/disconnect which removes request-scoped\n// Builder credentials from app_secrets. Deployment env credentials are left\n// alone and remain as fallback. On success we dispatch\n// `agent-engine:configured-changed` so dependent cards refresh inline.\nfunction DisconnectBuilderButton() {\n const { status } = useBuilderStatus();\n const [phase, setPhase] = useState<\"idle\" | \"armed\" | \"busy\">(\"idle\");\n const [err, setErr] = useState<string | null>(null);\n const armedTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const clearArmedTimer = useCallback(() => {\n if (armedTimerRef.current) {\n clearTimeout(armedTimerRef.current);\n armedTimerRef.current = null;\n }\n }, []);\n\n useEffect(() => {\n return () => clearArmedTimer();\n }, [clearArmedTimer]);\n\n const performDisconnect = useCallback(async () => {\n setPhase(\"busy\");\n setErr(null);\n clearArmedTimer();\n try {\n const res = await fetch(\n agentNativePath(\"/_agent-native/builder/disconnect\"),\n {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n },\n );\n // Parse defensively — a nitro 404 fallback returns HTML, not JSON,\n // and res.json() on that would throw.\n const text = await res.text();\n let body: {\n ok?: boolean;\n error?: string;\n warnings?: Record<string, string>;\n } = {};\n if (text) {\n try {\n body = JSON.parse(text);\n } catch {\n // Non-JSON response — likely a 404/HTML fallback.\n }\n }\n if (!res.ok) {\n throw new Error(\n body.error ||\n `Failed (${res.status}). Is your dev server up to date?`,\n );\n }\n if (body.ok !== true) {\n throw new Error(body.error || \"Disconnect didn't confirm ok\");\n }\n if (body.warnings && Object.keys(body.warnings).length > 0) {\n // Disconnect flag persisted (we only reach here when ok:true), so\n // the user IS disconnected — but some ancillary cleanup failed.\n // Log so it's visible during dev; don't block the success path.\n console.warn(\n \"[builder-disconnect] completed with warnings:\",\n body.warnings,\n );\n }\n window.dispatchEvent(new CustomEvent(\"agent-engine:configured-changed\"));\n setPhase(\"idle\");\n } catch (e) {\n setErr(e instanceof Error ? e.message : \"Disconnect failed\");\n setPhase(\"idle\");\n }\n }, [clearArmedTimer]);\n\n const handleDisconnectClick = useCallback(() => {\n if (phase === \"busy\") return;\n if (phase === \"idle\") {\n // First click — arm the button. Auto-revert after 4s to avoid a\n // stale \"confirm\" state someone else could hit by accident.\n setPhase(\"armed\");\n setErr(null);\n clearArmedTimer();\n armedTimerRef.current = setTimeout(() => {\n setPhase(\"idle\");\n armedTimerRef.current = null;\n }, 4000);\n return;\n }\n // phase === \"armed\" — user confirmed, actually disconnect.\n void performDisconnect();\n }, [phase, performDisconnect, clearArmedTimer]);\n\n const handleCancel = useCallback(() => {\n clearArmedTimer();\n setPhase(\"idle\");\n }, [clearArmedTimer]);\n\n // When only the deploy fallback is active there is nothing request-scoped\n // for this button to remove. The early return MUST come after every hook\n // above to satisfy rules-of-hooks.\n if (status?.credentialSource === \"env\") return null;\n\n if (phase === \"armed\") {\n return (\n <>\n <Button\n type=\"button\"\n intent=\"danger\"\n emphasis=\"solid\"\n onClick={handleDisconnectClick}\n 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\"\n >\n Confirm disconnect\n </Button>\n <Button\n type=\"button\"\n intent=\"neutral\"\n emphasis=\"outline\"\n onClick={handleCancel}\n 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\"\n >\n Cancel\n </Button>\n </>\n );\n }\n\n return (\n <>\n <Button\n type=\"button\"\n intent=\"danger\"\n emphasis=\"outline\"\n onClick={handleDisconnectClick}\n disabled={phase === \"busy\"}\n 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\"\n aria-busy={phase === \"busy\"}\n >\n {phase === \"busy\" ? (\n <>\n <IconLoader2 size={10} className=\"animate-spin\" />\n Disconnecting…\n </>\n ) : (\n \"Disconnect\"\n )}\n </Button>\n {err && <span className=\"text-[10px] text-destructive\">{err}</span>}\n </>\n );\n}\n\n// ─── \"Connect Builder.io\" card (shared across all sections) ─────────────────\n\nfunction UseBuilderCard({\n builderFlow,\n connectUrl,\n connected,\n orgName,\n envManaged,\n credentialSource,\n trackingSource = \"settings_panel_builder_card\",\n trackingFlow = \"connect_llm\",\n label = \"Connect Builder.io\",\n subtitle = \"Free credits to start — no API key needed.\",\n dim,\n}: {\n builderFlow: BuilderConnectFlow;\n connectUrl?: string;\n connected: boolean;\n orgName?: string;\n envManaged?: boolean;\n credentialSource?: \"user\" | \"org\" | \"workspace\" | \"env\";\n trackingSource?: string;\n trackingFlow?: string;\n label?: string;\n subtitle?: string;\n dim?: boolean;\n}) {\n const isPage = useSettingsSurface() === \"page\";\n const effectiveConnected = connected || builderFlow.configured;\n const effectiveOrgName = builderFlow.orgName ?? orgName;\n const bgClass = dim ? \"\" : \"bg-accent/30\";\n const titleCls = isPage ? \"text-sm\" : \"text-[11px]\";\n const bodyCls = isPage ? \"text-xs\" : \"text-[10px]\";\n\n if (effectiveConnected) {\n return (\n <div\n className={cn(\n \"rounded-md border border-border\",\n isPage ? \"px-3.5 py-3\" : \"px-2.5 py-2\",\n bgClass,\n )}\n >\n <div className=\"flex items-center justify-between\">\n <div className={cn(\"font-medium text-foreground\", titleCls)}>\n Builder.io\n </div>\n <span\n className={cn(\"flex items-center gap-1 text-green-500\", bodyCls)}\n >\n <IconCheck size={isPage ? 14 : 10} />\n Connected\n </span>\n </div>\n {effectiveOrgName && (\n <p className={cn(\"text-muted-foreground mt-0.5\", bodyCls)}>\n {effectiveOrgName}\n </p>\n )}\n {envManaged ? (\n <p className={cn(\"text-muted-foreground mt-1\", bodyCls)}>\n {credentialSource === \"env\"\n ? \"Deployment fallback is available. Connect your own account to override it.\"\n : \"Using your connected Builder account. Deployment fallback is still available.\"}\n </p>\n ) : null}\n {connectUrl || credentialSource !== \"env\" ? (\n <div className=\"flex items-center gap-2 mt-2.5\">\n {connectUrl && (\n <Button\n type=\"button\"\n intent=\"neutral\"\n emphasis=\"ghost\"\n onClick={() =>\n builderFlow.start({ trackingSource, trackingFlow })\n }\n disabled={builderFlow.connecting}\n className={cn(pillButtonClass(isPage, \"ghost\"), \"no-underline\")}\n >\n {builderFlow.connecting\n ? \"Connecting...\"\n : credentialSource === \"env\"\n ? \"Connect account\"\n : \"Reconnect\"}\n <IconExternalLink size={isPage ? 14 : 10} />\n </Button>\n )}\n {credentialSource !== \"env\" ? <DisconnectBuilderButton /> : null}\n </div>\n ) : null}\n </div>\n );\n }\n\n if (!connectUrl) return null;\n\n return (\n <Button\n type=\"button\"\n onClick={() => builderFlow.start({ trackingSource, trackingFlow })}\n disabled={builderFlow.connecting}\n className={cn(\n \"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\",\n isPage ? \"px-4 py-3.5\" : \"px-3 py-3\",\n isPage ? \"[&_svg]:!size-4\" : \"[&_svg]:!size-3.5\",\n )}\n >\n <div className=\"flex items-start gap-2.5\">\n <div\n className={cn(\n \"flex shrink-0 items-center justify-center rounded-md bg-foreground text-background\",\n isPage ? \"h-8 w-8\" : \"h-7 w-7\",\n )}\n >\n <BuilderBMark className={isPage ? \"h-4 w-4\" : \"h-3.5 w-3.5\"} />\n </div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-1.5 flex-wrap\">\n <span\n className={cn(\n \"font-semibold text-foreground\",\n isPage ? \"text-sm\" : \"text-[12px]\",\n )}\n >\n {builderFlow.connecting ? \"Connecting Builder.io...\" : label}\n </span>\n {builderFlow.connecting && (\n <IconLoader2\n size={isPage ? 14 : 12}\n className=\"shrink-0 animate-spin text-muted-foreground\"\n />\n )}\n </div>\n <p\n className={cn(\n \"text-muted-foreground mt-0.5 leading-snug\",\n isPage ? \"text-xs\" : \"text-[10.5px]\",\n )}\n >\n {subtitle}\n </p>\n {builderFlow.error && (\n <p className={cn(\"mt-1 text-destructive\", bodyCls)}>\n {builderFlow.error}\n </p>\n )}\n </div>\n <IconExternalLink\n size={isPage ? 14 : 12}\n className=\"shrink-0 text-muted-foreground mt-0.5\"\n />\n </div>\n </Button>\n );\n}\n\n// ─── Manual setup card ──────────────────────────────────────────────────────\n\nfunction ManualSetupCard({\n id,\n hint,\n docsUrl,\n docsLabel = \"Read the docs\",\n children,\n dim,\n sourceBadge,\n}: {\n id?: string;\n hint?: string;\n docsUrl?: string;\n docsLabel?: string;\n children?: React.ReactNode;\n dim?: boolean;\n /** Optional \"Connected via X\" badge shown in the header row. */\n sourceBadge?: string;\n}) {\n const isPage = useSettingsSurface() === \"page\";\n const titleCls = isPage ? \"text-sm\" : \"text-[11px]\";\n const bodyCls = isPage ? \"text-xs\" : \"text-[10px]\";\n return (\n <div\n id={id}\n className={cn(\n \"rounded-md border border-border\",\n isPage ? \"px-3.5 py-3\" : \"px-2.5 py-2\",\n dim ? \"\" : \"bg-accent/30\",\n )}\n >\n <div className=\"flex items-center justify-between mb-1\">\n <div className={cn(\"font-medium text-foreground\", titleCls)}>\n Set up manually\n </div>\n {sourceBadge ? (\n <span\n className={cn(\"flex items-center gap-1 text-green-500\", bodyCls)}\n >\n <IconCheck size={isPage ? 14 : 10} />\n {sourceBadge}\n </span>\n ) : null}\n </div>\n {hint && (\n <p className={cn(\"text-muted-foreground mb-1.5\", bodyCls)}>{hint}</p>\n )}\n {children}\n {docsUrl && (\n <a\n href={docsUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={cn(\n pillButtonClass(isPage, \"outline\"),\n \"mt-1.5 no-underline\",\n )}\n >\n {docsLabel}\n <IconExternalLink size={isPage ? 14 : 10} />\n </a>\n )}\n </div>\n );\n}\n\n// ─── LLM helpers ────────────────────────────────────────────────────────────\n\nfunction friendlyModelName(model: string): string {\n if (model === \"z-ai/glm-5.2\") return \"GLM 5.2\";\n const claude = model.match(\n /^claude-(opus|sonnet|haiku)-(\\d+)(?:-(\\d+))?(?:-\\d{8,})?$/,\n );\n if (claude) {\n const tier = claude[1][0].toUpperCase() + claude[1].slice(1);\n return `${tier} ${claude[2]}${claude[3] ? `.${claude[3]}` : \"\"}`;\n }\n if (model.startsWith(\"gpt-\")) {\n const rest = model.slice(4);\n const gpt = rest.match(/^(\\d+)[.-](\\d+)(?:[.-](.+))?$/);\n if (gpt) {\n const suffix = gpt[3]\n ? ` ${gpt[3]\n .split(\"-\")\n .map((part) => part[0].toUpperCase() + part.slice(1))\n .join(\" \")}`\n : \"\";\n return `GPT-${gpt[1]}.${gpt[2]}${suffix}`;\n }\n return `GPT-${rest}`;\n }\n if (/^o\\d/.test(model)) return model;\n const geminiVersioned = model.match(\n /^gemini-(\\d+)-(\\d+)-(.+?)(?:-preview)?$/,\n );\n if (geminiVersioned) {\n const variant = geminiVersioned[3]\n .split(\"-\")\n .map((part) => part[0].toUpperCase() + part.slice(1))\n .join(\" \");\n return `Gemini ${geminiVersioned[1]}.${geminiVersioned[2]} ${variant}`;\n }\n const gemini = model.match(/^gemini-(.+?)(?:-preview)?$/);\n if (gemini) {\n const parts = gemini[1]\n .split(\"-\")\n .map((s) => s[0].toUpperCase() + s.slice(1))\n .join(\" \");\n return `Gemini ${parts}${model.endsWith(\"-preview\") ? \" (preview)\" : \"\"}`;\n }\n return model;\n}\n\ntype SettingsStatus = {\n engine: string;\n source: \"env\" | \"settings\";\n envVar: string | null;\n} | null;\n\nfunction computeSourceBadge(args: {\n settingsConfigured: boolean;\n settingsStatus: SettingsStatus;\n envConfigured: boolean;\n envVar: string | undefined;\n builderConnected: boolean;\n}): string | undefined {\n const { settingsConfigured, settingsStatus } = args;\n if (args.builderConnected) return \"Connected via Builder\";\n if (settingsConfigured) {\n if (settingsStatus?.source === \"env\") {\n return `Connected via ${settingsStatus.envVar ?? args.envVar ?? \"env\"}`;\n }\n return \"Connected via template (server-side)\";\n }\n if (args.envConfigured) return `Connected via ${args.envVar ?? \"env\"}`;\n return undefined;\n}\n\nfunction latestModelsOnly(models: string[]): string[] {\n const seen = new Set<string>();\n return models.filter((m) => {\n const claude = m.match(/^claude-(opus|sonnet|haiku)-/);\n if (claude) {\n if (seen.has(claude[1])) return false;\n seen.add(claude[1]);\n return true;\n }\n const gemini = m.match(/^gemini-(\\d+(?:\\.\\d+)?)-(.+?)(?:-preview)?$/);\n if (gemini) {\n const family = gemini[2];\n if (seen.has(`gemini-${family}`)) return false;\n seen.add(`gemini-${family}`);\n return true;\n }\n return true;\n });\n}\n\nexport function AppDefaultModelField({\n engine,\n models,\n value,\n defaultModel,\n disabled,\n onValueChange,\n onEnter,\n}: {\n engine: string;\n models: string[];\n value: string;\n defaultModel?: string;\n disabled?: boolean;\n onValueChange: (value: string) => void;\n onEnter?: () => void;\n}) {\n const isPage = useSettingsSurface() === \"page\";\n const modelOptions: SettingsSelectOption[] = latestModelsOnly(models).map(\n (model) => ({ value: model, label: friendlyModelName(model) }),\n );\n\n // Builder models are a closed catalog (and are validated server-side), so a\n // real select keeps every available model visible even when one is already\n // selected. Native datalists filter against the current input value, which\n // made this field appear to contain only the active model.\n if (engine === \"builder\" && modelOptions.length > 0) {\n return (\n <SettingsSelect\n label=\"Model\"\n value={value}\n options={modelOptions}\n onValueChange={onValueChange}\n disabled={disabled}\n />\n );\n }\n\n return (\n <div className=\"space-y-1.5\">\n <p className={fieldLabelClass(isPage)}>Model</p>\n <TextField\n value={value}\n onChange={onValueChange}\n disabled={disabled}\n list={`app-model-suggestions-${engine}`}\n onKeyDown={(event) => {\n if (event.key === \"Enter\") onEnter?.();\n }}\n placeholder={defaultModel ?? \"model-id\"}\n autoComplete=\"off\"\n aria-label=\"Model\"\n className={cn(\n \"w-full disabled:opacity-60\",\n isPage ? \"text-sm\" : \"text-[12px]\",\n )}\n style={isPage ? CONTROL_STYLE_PAGE : CONTROL_STYLE}\n />\n {modelOptions.length > 0 && (\n <datalist id={`app-model-suggestions-${engine}`}>\n {modelOptions.map((option) => (\n <option\n key={option.value}\n value={option.value}\n label={option.label}\n />\n ))}\n </datalist>\n )}\n </div>\n );\n}\n\n// ─── LLM Section ────────────────────────────────────────────────────────────\n\ninterface EngineInfo {\n name: string;\n label: string;\n description: string;\n defaultModel: string;\n supportedModels: string[];\n requiredEnvVars: string[];\n installPackage?: string;\n packageInstalled?: boolean;\n}\n\nconst PROVIDER_DOCS: Record<string, string> = {\n anthropic: \"https://console.anthropic.com/settings/keys\",\n \"ai-sdk:anthropic\": \"https://console.anthropic.com/settings/keys\",\n \"ai-sdk:openai\": \"https://platform.openai.com/api-keys\",\n \"ai-sdk:google\": \"https://aistudio.google.com/apikey\",\n \"ai-sdk:openrouter\": \"https://openrouter.ai/keys\",\n \"ai-sdk:groq\": \"https://console.groq.com/keys\",\n \"ai-sdk:mistral\": \"https://console.mistral.ai/api-keys/\",\n \"ai-sdk:cohere\": \"https://dashboard.cohere.com/api-keys\",\n};\n\nfunction LLMSectionInner({\n builderFlow,\n builderLoading,\n connectUrl,\n connected,\n orgName,\n envManaged,\n credentialSource,\n open,\n onToggle,\n}: {\n builderFlow: BuilderConnectFlow;\n builderLoading?: boolean;\n connectUrl?: string;\n connected: boolean;\n orgName?: string;\n envManaged?: boolean;\n credentialSource?: \"user\" | \"org\" | \"workspace\" | \"env\";\n open?: boolean;\n onToggle?: () => void;\n}) {\n const isPage = useSettingsSurface() === \"page\";\n const t = useT();\n const [envKeys, setEnvKeys] = useState<\n Array<{ key: string; configured: boolean }>\n >([]);\n const [apiKey, setApiKey] = useState(\"\");\n const [saving, setSaving] = useState(false);\n const [saved, setSaved] = useState(false);\n const [engines, setEngines] = useState<EngineInfo[]>([]);\n const [currentEngine, setCurrentEngine] = useState(\"anthropic\");\n const [currentModel, setCurrentModel] = useState(\"\");\n const [selectedEngine, setSelectedEngine] = useState(\"anthropic\");\n const [selectedModel, setSelectedModel] = useState(\"\");\n const [baseUrl, setBaseUrl] = useState(\"\");\n const [baseUrlConfigured, setBaseUrlConfigured] = useState(false);\n const [clearBaseUrl, setClearBaseUrl] = useState(false);\n const [advancedOpen, setAdvancedOpen] = useState(false);\n const [manualSetupOpen, setManualSetupOpen] = useState(false);\n const [applyNote, setApplyNote] = useState(false);\n const [testing, setTesting] = useState(false);\n const [testResult, setTestResult] = useState<\n | { ok: true; latencyMs: number; model: string }\n | { ok: false; error: string }\n | null\n >(null);\n const [settingsStatus, setSettingsStatus] = useState<SettingsStatus>(null);\n const [disconnectError, setDisconnectError] = useState<string | null>(null);\n const [envLoaded, setEnvLoaded] = useState(false);\n const [enginesLoaded, setEnginesLoaded] = useState(false);\n const [statusLoaded, setStatusLoaded] = useState(false);\n\n const initialLoading =\n !envLoaded || !enginesLoaded || !statusLoaded || !!builderLoading;\n\n useEffect(() => {\n fetch(agentNativePath(\"/_agent-native/env-status\"))\n .then((r) => (r.ok ? r.json() : []))\n .then(setEnvKeys)\n .catch(() => {})\n .finally(() => setEnvLoaded(true));\n }, [saved]);\n\n const notifyConfigChanged = useCallback(() => {\n window.dispatchEvent(new CustomEvent(\"agent-engine:configured-changed\"));\n }, []);\n\n const refreshSettingsStatus = useCallback(() => {\n fetch(agentNativePath(\"/_agent-native/agent-engine/status\"))\n .then((r) => (r.ok ? r.json() : null))\n .then((data) => {\n setBaseUrlConfigured(Boolean(data?.openAiBaseUrlConfigured));\n if (\n data?.configured &&\n typeof data.engine === \"string\" &&\n (data.source === \"env\" || data.source === \"settings\")\n ) {\n setSettingsStatus({\n engine: data.engine,\n source: data.source,\n envVar: typeof data.envVar === \"string\" ? data.envVar : null,\n });\n } else {\n setSettingsStatus(null);\n }\n })\n .catch(() => {})\n .finally(() => setStatusLoaded(true));\n }, []);\n\n useEffect(() => {\n refreshSettingsStatus();\n }, [refreshSettingsStatus]);\n\n useEffect(() => {\n callAction(\"manage-agent-engine\" as any, { action: \"list\" } as any)\n .then((data) => {\n if (!data) return;\n const engineData = data as {\n engines?: EngineInfo[];\n current?: { engine?: string; model?: string };\n };\n setEngines(engineData.engines ?? []);\n const cur = engineData.current ?? {};\n setCurrentEngine(cur.engine ?? \"anthropic\");\n setCurrentModel(cur.model ?? \"\");\n setSelectedEngine(cur.engine ?? \"anthropic\");\n setSelectedModel(cur.model ?? \"\");\n })\n .catch(() => {})\n .finally(() => setEnginesLoaded(true));\n }, []);\n\n const selectedEngineInfo = engines.find((e) => e.name === selectedEngine);\n const envVar = selectedEngineInfo?.requiredEnvVars?.[0];\n const selectedEnginePackageInstalled =\n selectedEngineInfo?.packageInstalled !== false;\n const envConfigured = envVar\n ? (envKeys.find((k) => k.key === envVar)?.configured ?? false)\n : false;\n const settingsConfigured =\n settingsStatus != null && settingsStatus.engine === currentEngine;\n const builderConnected = connected || builderFlow.configured;\n const anyKeyConfigured =\n builderConnected ||\n (selectedEnginePackageInstalled && (envConfigured || settingsConfigured));\n const sourceBadge = computeSourceBadge({\n settingsConfigured,\n settingsStatus,\n envConfigured,\n envVar,\n builderConnected,\n });\n const manualSetupHint =\n selectedEngine === \"ai-sdk:openrouter\"\n ? \"Provide an OpenRouter key to use OpenRouter models like GLM 5.2.\"\n : \"Choose your AI provider and model.\";\n\n const engineChanged =\n selectedEngine !== currentEngine || selectedModel !== currentModel;\n const isOpenAiEngine = selectedEngine === \"ai-sdk:openai\";\n const endpointChanged = isOpenAiEngine && (!!baseUrl.trim() || clearBaseUrl);\n const providerSettingsChanged = !!apiKey.trim() || endpointChanged;\n\n // Hide the Anthropic-via-AI-SDK alias (redundant with the native entry)\n // and Ollama (no API key to set here). The currently-selected engine is\n // always kept so a stale setting doesn't vanish from the picker.\n const providerOptions: SettingsSelectOption[] = engines\n .filter(\n (e) =>\n e.name === selectedEngine ||\n (e.name !== \"ai-sdk:anthropic\" && e.name !== \"ai-sdk:ollama\"),\n )\n .map((e) => ({ value: e.name, label: e.label }));\n\n const modelOptions: SettingsSelectOption[] = latestModelsOnly(\n selectedEngineInfo?.supportedModels ?? [],\n ).map((m) => ({ value: m, label: friendlyModelName(m) }));\n\n const handleSave = async () => {\n if (!providerSettingsChanged || !envVar) return;\n setSaving(true);\n try {\n const nextBaseUrl = isOpenAiEngine ? baseUrl.trim() : \"\";\n await saveAgentEngineProviderSettings({\n key: envVar,\n ...(apiKey.trim() ? { apiKey } : {}),\n ...(nextBaseUrl ? { baseUrl: nextBaseUrl } : {}),\n ...(isOpenAiEngine && clearBaseUrl ? { clearBaseUrl: true } : {}),\n });\n setSaved(true);\n setApiKey(\"\");\n setBaseUrl(\"\");\n setClearBaseUrl(false);\n if (nextBaseUrl) setBaseUrlConfigured(true);\n if (clearBaseUrl) setBaseUrlConfigured(false);\n refreshSettingsStatus();\n notifyConfigChanged();\n setTimeout(() => setSaved(false), 2000);\n } finally {\n setSaving(false);\n }\n };\n\n const handleDisconnect = async () => {\n setDisconnectError(null);\n try {\n const res = await fetch(\n agentNativePath(\"/_agent-native/agent-engine/disconnect\"),\n {\n method: \"POST\",\n },\n );\n if (res.ok) {\n setTestResult(null);\n setApplyNote(false);\n refreshSettingsStatus();\n notifyConfigChanged();\n return;\n }\n const body = (await res.json().catch(() => null)) as {\n error?: string;\n } | null;\n setDisconnectError(\n body?.error ??\n (res.status === 401\n ? \"You must be signed in to disconnect.\"\n : `Disconnect failed (HTTP ${res.status})`),\n );\n } catch (err) {\n setDisconnectError(err instanceof Error ? err.message : String(err));\n }\n };\n\n const handleTest = async () => {\n setTesting(true);\n setTestResult(null);\n try {\n const data = await callAction(\n \"manage-agent-engine\" as any,\n {\n action: \"test\",\n engine: selectedEngine,\n model: selectedModel || selectedEngineInfo?.defaultModel,\n } as any,\n );\n // Older action paths wrapped tool output in { result }. Accept either\n // shape while the action route normalizes JSON-string script output.\n const parsed =\n typeof data === \"string\"\n ? JSON.parse(data)\n : typeof data?.result === \"string\"\n ? JSON.parse(data.result)\n : data;\n if (parsed?.ok) {\n setTestResult({\n ok: true,\n latencyMs: parsed.latencyMs ?? 0,\n model: parsed.model ?? selectedModel,\n });\n } else {\n setTestResult({\n ok: false,\n error: parsed?.error ?? \"Test failed (no error message)\",\n });\n }\n } catch (err) {\n setTestResult({\n ok: false,\n error: err instanceof Error ? err.message : String(err),\n });\n } finally {\n setTesting(false);\n }\n };\n\n const handleApply = async () => {\n try {\n const res = await fetch(\n agentNativePath(\"/_agent-native/actions/manage-agent-engine\"),\n {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n action: \"set\",\n engine: selectedEngine,\n model: selectedModel,\n }),\n },\n );\n if (res.ok) {\n setCurrentEngine(selectedEngine);\n setCurrentModel(selectedModel);\n setApplyNote(true);\n refreshSettingsStatus();\n notifyConfigChanged();\n setTimeout(() => setApplyNote(false), 4000);\n }\n } catch {}\n };\n\n return (\n <SettingsSection\n id={settingsSectionDomId(\"llm\")}\n icon={<IconBrain size={14} />}\n title=\"LLM\"\n subtitle=\"Connect any major LLM — Claude, GPT, Gemini, and more.\"\n required\n connected={initialLoading ? undefined : anyKeyConfigured}\n open={open}\n onToggle={onToggle}\n >\n {initialLoading ? (\n <SettingsSkeleton lines={3} />\n ) : (\n <div className=\"space-y-2\">\n <UseBuilderCard\n builderFlow={builderFlow}\n connectUrl={connectUrl}\n connected={connected}\n orgName={orgName}\n envManaged={envManaged}\n credentialSource={credentialSource}\n trackingSource=\"llm_settings\"\n trackingFlow=\"connect_llm\"\n label=\"Connect Builder.io\"\n />\n {builderConnected && (\n <Button\n type=\"button\"\n intent=\"neutral\"\n emphasis=\"ghost\"\n aria-expanded={manualSetupOpen}\n aria-controls=\"llm-manual-setup\"\n onClick={() => setManualSetupOpen((open) => !open)}\n className={cn(\n \"inline-flex items-center gap-1 px-0.5 text-muted-foreground hover:text-foreground\",\n isPage ? \"text-xs\" : \"text-[10px]\",\n )}\n >\n {t(\"agentPanel.addOwnKeys\", {\n defaultValue: \"Add your own keys\",\n })}\n <IconChevronDown\n size={isPage ? 14 : 11}\n className={cn(\n \"transition-transform\",\n manualSetupOpen && \"rotate-180\",\n )}\n />\n </Button>\n )}\n {(!builderConnected || manualSetupOpen) && (\n <ManualSetupCard\n id=\"llm-manual-setup\"\n hint={manualSetupHint}\n sourceBadge={builderConnected ? undefined : sourceBadge}\n >\n <div className=\"space-y-2 mb-1\">\n <SettingsSelect\n label=\"Provider\"\n value={selectedEngine}\n options={providerOptions}\n onValueChange={(val) => {\n setSelectedEngine(val);\n const info = engines.find((e) => e.name === val);\n setSelectedModel(info?.defaultModel ?? \"\");\n setApiKey(\"\");\n setBaseUrl(\"\");\n setClearBaseUrl(false);\n setAdvancedOpen(false);\n }}\n />\n\n {/* Free-form input so OpenRouter/Ollama custom model IDs can\n be typed — the registry's supportedModels is only suggestions. */}\n <div className=\"space-y-1.5\">\n <p className={fieldLabelClass(isPage)}>Model</p>\n <input\n type=\"text\"\n list={`model-suggestions-${selectedEngine}`}\n value={selectedModel}\n onChange={(e) => setSelectedModel(e.target.value)}\n placeholder={\n selectedEngineInfo?.defaultModel ?? \"e.g. model-id\"\n }\n spellCheck={false}\n autoComplete=\"off\"\n className={textInputClass(isPage)}\n style={isPage ? CONTROL_STYLE_PAGE : CONTROL_STYLE}\n />\n {modelOptions.length > 0 && (\n <datalist id={`model-suggestions-${selectedEngine}`}>\n {modelOptions.map((opt) => (\n <option\n key={opt.value}\n value={opt.value}\n label={opt.label}\n />\n ))}\n </datalist>\n )}\n </div>\n\n {isOpenAiEngine && (\n <div className=\"border-t border-border/70 pt-2\">\n <Button\n type=\"button\"\n onClick={() => setAdvancedOpen((v) => !v)}\n className=\"flex w-full cursor-pointer items-center justify-between gap-2 rounded px-0.5 py-1 text-left hover:text-foreground\"\n >\n <span className=\"inline-flex min-w-0 items-center gap-1.5 text-[11px] font-medium text-foreground\">\n {advancedOpen ? (\n <IconChevronDown size={12} />\n ) : (\n <IconChevronRight\n size={12}\n className=\"rtl:-scale-x-100\"\n />\n )}\n Advanced\n </span>\n <span className=\"truncate text-[10px] text-muted-foreground\">\n OpenAI-compatible endpoint\n </span>\n </Button>\n\n {advancedOpen && (\n <div className=\"mt-1.5 space-y-1.5\">\n <div className=\"flex items-center justify-between gap-2\">\n <p className=\"text-[12px] font-medium text-foreground\">\n Endpoint URL\n </p>\n <span className=\"text-[10px] text-muted-foreground\">\n {baseUrlConfigured ? \"Configured\" : \"Optional\"}\n </span>\n </div>\n <input\n type=\"url\"\n value={baseUrl}\n onChange={(e) => {\n setBaseUrl(e.target.value);\n if (e.target.value.trim()) setClearBaseUrl(false);\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") handleSave();\n }}\n placeholder={\n baseUrlConfigured\n ? \"Leave blank to keep current endpoint\"\n : \"https://gateway.example/v1\"\n }\n disabled={clearBaseUrl}\n spellCheck={false}\n autoComplete=\"off\"\n 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 disabled:opacity-50 placeholder:text-muted-foreground/50\"\n style={CONTROL_STYLE}\n />\n <p className=\"text-[10px] leading-relaxed text-muted-foreground\">\n Use for LiteLLM or another OpenAI-compatible chat\n gateway. Leave blank for OpenAI.\n </p>\n {baseUrlConfigured && (\n <label className=\"flex items-center gap-1.5 text-[10px] text-muted-foreground\">\n <Checkbox\n checked={clearBaseUrl}\n onChange={(checked) => {\n setClearBaseUrl(checked);\n if (checked) setBaseUrl(\"\");\n }}\n aria-label=\"Clear saved endpoint override\"\n className=\"shrink-0\"\n />\n Clear saved endpoint override\n </label>\n )}\n {envVar && envConfigured && endpointChanged && (\n <Button\n type=\"button\"\n intent=\"neutral\"\n emphasis=\"solid\"\n onClick={handleSave}\n disabled={saving}\n className=\"rounded bg-accent px-2.5 py-1 text-[10px] font-medium text-foreground hover:bg-accent/80 disabled:opacity-40\"\n >\n {saving ? (\n <IconLoader2 size={10} className=\"animate-spin\" />\n ) : saved ? (\n <IconCheck size={10} />\n ) : (\n \"Save endpoint\"\n )}\n </Button>\n )}\n </div>\n )}\n </div>\n )}\n\n {envVar && envConfigured ? (\n <div\n className={cn(\n \"flex items-center gap-1.5 text-green-500\",\n isPage ? \"text-xs\" : \"text-[10px]\",\n )}\n >\n <IconCheck size={isPage ? 14 : 10} />\n {envVar} configured\n </div>\n ) : envVar ? (\n <div className=\"flex gap-1.5\">\n <input\n type=\"password\"\n value={apiKey}\n onChange={(e) => setApiKey(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") handleSave();\n }}\n placeholder={PROVIDER_ENV_PLACEHOLDERS[envVar] ?? \"...\"}\n className={cn(textInputClass(isPage), \"flex-1\")}\n style={isPage ? CONTROL_STYLE_PAGE : undefined}\n />\n <Button\n intent=\"primary\"\n emphasis=\"solid\"\n onClick={handleSave}\n disabled={!providerSettingsChanged || saving}\n className={pillButtonClass(isPage, \"solid\")}\n >\n {saving ? (\n <IconLoader2\n size={isPage ? 14 : 10}\n className=\"animate-spin\"\n />\n ) : saved ? (\n <IconCheck size={isPage ? 14 : 10} />\n ) : (\n \"Save\"\n )}\n </Button>\n </div>\n ) : null}\n\n <div className=\"flex items-center gap-2\">\n <Button\n intent=\"neutral\"\n emphasis=\"outline\"\n onClick={handleTest}\n disabled={testing}\n className={pillButtonClass(isPage, \"outline\")}\n >\n {testing ? (\n <span className=\"flex items-center gap-1\">\n <IconLoader2\n size={isPage ? 14 : 10}\n className=\"animate-spin\"\n />\n Testing…\n </span>\n ) : (\n \"Test\"\n )}\n </Button>\n {PROVIDER_DOCS[selectedEngine] ? (\n <a\n href={PROVIDER_DOCS[selectedEngine]}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={cn(\n pillButtonClass(isPage, \"outline\"),\n \"no-underline\",\n )}\n >\n Get an API key\n <IconExternalLink size={isPage ? 14 : 10} />\n </a>\n ) : null}\n {engineChanged && (\n <Button\n intent=\"primary\"\n emphasis=\"solid\"\n onClick={handleApply}\n className={pillButtonClass(isPage, \"solid\")}\n >\n Apply\n </Button>\n )}\n {settingsStatus != null && (\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n intent=\"danger\"\n emphasis=\"outline\"\n onClick={handleDisconnect}\n className={cn(\n pillButtonClass(isPage, \"outline\"),\n \"ms-auto text-muted-foreground hover:bg-destructive/10 hover:text-destructive hover:border-destructive/40\",\n )}\n >\n Disconnect\n </Button>\n </TooltipTrigger>\n <TooltipContent>\n Clear the saved engine — the app will fall back to the\n default until you re-apply.\n </TooltipContent>\n </Tooltip>\n )}\n </div>\n {testResult && testResult.ok && (\n <p\n className={cn(\n \"flex items-center gap-1 text-green-500\",\n isPage ? \"text-xs\" : \"text-[10px]\",\n )}\n >\n <IconCheck size={isPage ? 14 : 10} />\n Test passed — {testResult.latencyMs}ms\n </p>\n )}\n {testResult && testResult.ok === false && (\n <p\n className={cn(\n \"text-destructive\",\n isPage ? \"text-xs\" : \"text-[10px]\",\n )}\n >\n Test failed: {testResult.error}\n </p>\n )}\n {disconnectError && (\n <p\n className={cn(\n \"text-destructive\",\n isPage ? \"text-xs\" : \"text-[10px]\",\n )}\n >\n Disconnect failed: {disconnectError}\n </p>\n )}\n {applyNote && (\n <p\n className={cn(\n \"text-muted-foreground\",\n isPage ? \"text-xs\" : \"text-[10px]\",\n )}\n >\n Changes take effect on next conversation\n </p>\n )}\n </div>\n </ManualSetupCard>\n )}\n </div>\n )}\n </SettingsSection>\n );\n}\n\n// ─── App Default Model Section ──────────────────────────────────────────────\n\ninterface AppModelDefaultEngine extends EngineInfo {\n configured: boolean;\n}\n\ninterface AppModelDefaultsResponse {\n appId: string;\n engine: string | null;\n model: string | null;\n scope: \"org\" | \"user\" | \"default\";\n source: \"org\" | \"user\" | \"default\";\n canUpdate: boolean;\n orgId?: string | null;\n orgName?: string | null;\n role?: string | null;\n engines: AppModelDefaultEngine[];\n}\n\nfunction friendlyAppName(appId: string): string {\n return appId\n .split(\"-\")\n .filter(Boolean)\n .map((part) => part[0]?.toUpperCase() + part.slice(1))\n .join(\" \");\n}\n\nfunction AppModelDefaultsSectionInner({\n open,\n onToggle,\n}: {\n open?: boolean;\n onToggle?: () => void;\n}) {\n const isPage = useSettingsSurface() === \"page\";\n const [settings, setSettings] = useState<AppModelDefaultsResponse | null>(\n null,\n );\n const [selectedEngine, setSelectedEngine] = useState(\"\");\n const [selectedModel, setSelectedModel] = useState(\"\");\n const [loading, setLoading] = useState(true);\n const [saving, setSaving] = useState(false);\n const [saved, setSaved] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const load = useCallback(() => {\n let cancelled = false;\n setLoading(true);\n fetch(agentNativePath(\"/_agent-native/agent-model-defaults\"))\n .then((r) => (r.ok ? r.json() : null))\n .then((data: AppModelDefaultsResponse | null) => {\n if (cancelled || !data) return;\n setSettings(data);\n const firstConfigured =\n data.engines.find((engine) => engine.configured) ?? data.engines[0];\n const nextEngine = data.engine ?? firstConfigured?.name ?? \"\";\n const nextEngineInfo =\n data.engines.find((engine) => engine.name === nextEngine) ??\n firstConfigured;\n setSelectedEngine(nextEngine);\n setSelectedModel(data.model ?? nextEngineInfo?.defaultModel ?? \"\");\n })\n .catch(() => {})\n .finally(() => {\n if (!cancelled) setLoading(false);\n });\n return () => {\n cancelled = true;\n };\n }, []);\n\n useEffect(() => load(), [load]);\n\n const selectedEngineInfo =\n settings?.engines.find((engine) => engine.name === selectedEngine) ?? null;\n const engineOptions: SettingsSelectOption[] = (settings?.engines ?? [])\n .filter(\n (engine) =>\n engine.name === selectedEngine ||\n (engine.name !== \"ai-sdk:anthropic\" && engine.name !== \"ai-sdk:ollama\"),\n )\n .map((engine) => ({\n value: engine.name,\n label:\n engine.name === \"builder\"\n ? \"Builder.io Gateway\"\n : engine.label || engine.name,\n description: engine.configured\n ? \"Configured for this workspace\"\n : engine.packageInstalled === false\n ? `Install ${engine.installPackage ?? \"the provider packages\"} to use this provider`\n : \"Credentials not detected yet\",\n }));\n const hasPendingChange =\n !!settings &&\n settings.canUpdate &&\n !!selectedEngine &&\n !!selectedModel.trim() &&\n (selectedEngine !== settings.engine ||\n selectedModel.trim() !== settings.model);\n const hasAppDefault = settings?.source !== \"default\";\n const scopeLabel =\n settings?.scope === \"org\"\n ? settings.orgName\n ? `${settings.orgName} organization`\n : \"organization\"\n : \"your account\";\n\n const notifyChanged = () => {\n window.dispatchEvent(new CustomEvent(\"agent-engine:configured-changed\"));\n };\n\n const save = async () => {\n if (!hasPendingChange) return;\n setSaving(true);\n setSaved(false);\n setError(null);\n try {\n const res = await fetch(\n agentNativePath(\"/_agent-native/agent-model-defaults\"),\n {\n method: \"PUT\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n engine: selectedEngine,\n model: selectedModel.trim(),\n }),\n },\n );\n const body = await res.json().catch(() => ({}));\n if (!res.ok)\n throw new Error(body?.error ?? `Save failed (${res.status})`);\n const next = body as AppModelDefaultsResponse;\n setSettings(next);\n setSelectedEngine(next.engine ?? selectedEngine);\n setSelectedModel(next.model ?? selectedModel.trim());\n setSaved(true);\n notifyChanged();\n setTimeout(() => setSaved(false), 2000);\n } catch (err) {\n setError(err instanceof Error ? err.message : \"Save failed\");\n } finally {\n setSaving(false);\n }\n };\n\n const reset = async () => {\n if (!settings?.canUpdate || !hasAppDefault) return;\n setSaving(true);\n setSaved(false);\n setError(null);\n try {\n const res = await fetch(\n agentNativePath(\"/_agent-native/agent-model-defaults\"),\n { method: \"DELETE\" },\n );\n const body = await res.json().catch(() => ({}));\n if (!res.ok)\n throw new Error(body?.error ?? `Reset failed (${res.status})`);\n const next = body as AppModelDefaultsResponse;\n setSettings(next);\n const fallback = next.engines.find((engine) => engine.configured);\n setSelectedEngine(next.engine ?? fallback?.name ?? selectedEngine);\n setSelectedModel(next.model ?? fallback?.defaultModel ?? selectedModel);\n notifyChanged();\n } catch (err) {\n setError(err instanceof Error ? err.message : \"Reset failed\");\n } finally {\n setSaving(false);\n }\n };\n\n return (\n <SettingsSection\n id={settingsSectionDomId(\"app-models\")}\n icon={<IconApps size={14} />}\n title=\"App Default Model\"\n subtitle=\"Choose the default model for this app/template when no one-off composer model is selected.\"\n connected={loading ? undefined : hasAppDefault}\n open={open}\n onToggle={onToggle}\n >\n {loading ? (\n <SettingsSkeleton lines={2} />\n ) : settings ? (\n <div className=\"space-y-2\">\n <div\n className={cn(\n \"rounded-md border border-border bg-accent/20\",\n isPage ? \"px-3.5 py-3\" : \"px-2.5 py-2\",\n )}\n >\n <div className=\"mb-2 flex items-center justify-between gap-2\">\n <div className=\"min-w-0\">\n <p\n className={cn(\n \"truncate font-medium text-foreground\",\n subTextClass(isPage),\n )}\n >\n {friendlyAppName(settings.appId) || \"This app\"}\n </p>\n <p\n className={cn(\n \"mt-0.5 text-muted-foreground\",\n noteTextClass(isPage),\n )}\n >\n {hasAppDefault\n ? `Applies to ${scopeLabel}.`\n : \"Using the global LLM default.\"}\n </p>\n </div>\n <span\n className={cn(\n \"shrink-0 rounded-full bg-background px-2 py-0.5 font-medium text-muted-foreground\",\n noteTextClass(isPage),\n )}\n >\n {settings.source}\n </span>\n </div>\n\n <div className=\"space-y-2\">\n <SettingsSelect\n label=\"Provider\"\n value={selectedEngine}\n options={engineOptions}\n onValueChange={(value) => {\n setSelectedEngine(value);\n const info = settings.engines.find(\n (engine) => engine.name === value,\n );\n setSelectedModel(info?.defaultModel ?? \"\");\n setError(null);\n }}\n />\n\n <AppDefaultModelField\n engine={selectedEngine}\n models={selectedEngineInfo?.supportedModels ?? []}\n value={selectedModel}\n defaultModel={selectedEngineInfo?.defaultModel}\n disabled={!settings.canUpdate || saving}\n onValueChange={(value) => {\n setSelectedModel(value);\n setError(null);\n }}\n onEnter={() => {\n if (hasPendingChange) void save();\n }}\n />\n\n <div className=\"flex items-center gap-1.5\">\n <Button\n type=\"button\"\n intent=\"primary\"\n emphasis=\"solid\"\n onClick={save}\n disabled={!hasPendingChange || saving}\n className={pillButtonClass(isPage, \"solid\")}\n >\n {saving ? (\n <IconLoader2\n size={isPage ? 14 : 10}\n className=\"animate-spin\"\n />\n ) : saved ? (\n <IconCheck size={isPage ? 14 : 10} />\n ) : (\n \"Save\"\n )}\n </Button>\n <Button\n type=\"button\"\n intent=\"neutral\"\n emphasis=\"outline\"\n onClick={reset}\n disabled={!settings.canUpdate || !hasAppDefault || saving}\n className={pillButtonClass(isPage, \"outline\")}\n >\n Reset\n </Button>\n </div>\n </div>\n\n {!settings.canUpdate && (\n <p\n className={cn(\n \"mt-2 text-muted-foreground\",\n noteTextClass(isPage),\n )}\n >\n Only organization owners and admins can change app model\n defaults.\n </p>\n )}\n {selectedEngineInfo?.packageInstalled === false ? (\n <p\n className={cn(\n \"mt-2 text-muted-foreground\",\n noteTextClass(isPage),\n )}\n >\n This app does not include the optional runtime packages for this\n provider.\n </p>\n ) : selectedEngineInfo && !selectedEngineInfo.configured ? (\n <p\n className={cn(\n \"mt-2 text-muted-foreground\",\n noteTextClass(isPage),\n )}\n >\n Credentials for this provider were not detected; runtime will\n fall back if the model cannot be used.\n </p>\n ) : null}\n {error && (\n <p className={cn(\"mt-2 text-destructive\", noteTextClass(isPage))}>\n {error}\n </p>\n )}\n </div>\n </div>\n ) : (\n <p className={cn(\"text-muted-foreground\", noteTextClass(isPage))}>\n App model defaults are unavailable.\n </p>\n )}\n </SettingsSection>\n );\n}\n\n// ─── Email Section ──────────────────────────────────────────────────────────\n\nfunction EmailSectionInner({\n open,\n onToggle,\n}: {\n open?: boolean;\n onToggle?: () => void;\n}) {\n const isPage = useSettingsSurface() === \"page\";\n const emailInputCls = cn(textInputClass(isPage), \"flex-1\");\n const emailBtnCls = pillButtonClass(isPage, \"solid\");\n const emailIconSize = isPage ? 14 : 10;\n const [envKeys, setEnvKeys] = useState<\n Array<{ key: string; configured: boolean }>\n >([]);\n const [resendKey, setResendKey] = useState(\"\");\n const [sendgridKey, setSendgridKey] = useState(\"\");\n const [fromAddr, setFromAddr] = useState(\"\");\n const [saving, setSaving] = useState(false);\n const [saved, setSaved] = useState(false);\n const [emailProvider, setEmailProvider] = useState<\"resend\" | \"sendgrid\">(\n \"resend\",\n );\n const [envLoaded, setEnvLoaded] = useState(false);\n\n useEffect(() => {\n fetch(agentNativePath(\"/_agent-native/env-status\"))\n .then((r) => (r.ok ? r.json() : []))\n .then(setEnvKeys)\n .catch(() => {})\n .finally(() => setEnvLoaded(true));\n }, [saved]);\n\n const resendConfigured =\n envKeys.find((k) => k.key === \"RESEND_API_KEY\")?.configured ?? false;\n const sendgridConfigured =\n envKeys.find((k) => k.key === \"SENDGRID_API_KEY\")?.configured ?? false;\n const fromConfigured =\n envKeys.find((k) => k.key === \"EMAIL_FROM\")?.configured ?? false;\n const anyConfigured = resendConfigured || sendgridConfigured;\n\n useEffect(() => {\n if (sendgridConfigured && !resendConfigured) {\n setEmailProvider(\"sendgrid\");\n }\n }, [resendConfigured, sendgridConfigured]);\n\n const save = async (vars: Array<{ key: string; value: string }>) => {\n setSaving(true);\n try {\n const res = await fetch(agentNativePath(\"/_agent-native/env-vars\"), {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ vars }),\n });\n if (res.ok) {\n setSaved(true);\n setResendKey(\"\");\n setSendgridKey(\"\");\n setFromAddr(\"\");\n setTimeout(() => setSaved(false), 2000);\n }\n } finally {\n setSaving(false);\n }\n };\n\n const saveResend = () => {\n const vars: Array<{ key: string; value: string }> = [];\n if (resendKey.trim())\n vars.push({ key: \"RESEND_API_KEY\", value: resendKey.trim() });\n if (fromAddr.trim())\n vars.push({ key: \"EMAIL_FROM\", value: fromAddr.trim() });\n if (vars.length) save(vars);\n };\n\n const saveSendgrid = () => {\n const vars: Array<{ key: string; value: string }> = [];\n if (sendgridKey.trim())\n vars.push({ key: \"SENDGRID_API_KEY\", value: sendgridKey.trim() });\n if (fromAddr.trim())\n vars.push({ key: \"EMAIL_FROM\", value: fromAddr.trim() });\n if (vars.length) save(vars);\n };\n\n return (\n <SettingsSection\n id={settingsSectionDomId(\"email\")}\n icon={<IconMail size={14} />}\n title=\"Email\"\n subtitle=\"Needed before deploy for password resets, team invitations, share notifications, and dashboard email reports. Local development can run without it.\"\n connected={!envLoaded ? undefined : anyConfigured}\n open={open}\n onToggle={onToggle}\n >\n {!envLoaded ? (\n <SettingsSkeleton lines={2} />\n ) : (\n <div className=\"space-y-2\">\n <SettingsSelect\n label=\"Provider\"\n value={emailProvider}\n options={[\n { value: \"resend\", label: \"Resend\" },\n { value: \"sendgrid\", label: \"SendGrid\" },\n ]}\n onValueChange={(value) =>\n setEmailProvider(value as \"resend\" | \"sendgrid\")\n }\n />\n\n {emailProvider === \"resend\" ? (\n <ManualSetupCard\n hint=\"Use Resend for transactional email.\"\n docsUrl=\"https://resend.com/api-keys\"\n docsLabel=\"Get a Resend key\"\n >\n {resendConfigured ? (\n <div\n className={cn(\n \"mb-1 flex items-center gap-1.5 text-green-500\",\n noteTextClass(isPage),\n )}\n >\n <IconCheck size={emailIconSize} />\n RESEND_API_KEY configured\n </div>\n ) : (\n <div className=\"mb-1 flex gap-1.5\">\n <input\n type=\"password\"\n value={resendKey}\n onChange={(e) => setResendKey(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") saveResend();\n }}\n placeholder=\"re_...\"\n className={emailInputCls}\n />\n <Button\n intent=\"primary\"\n emphasis=\"solid\"\n onClick={saveResend}\n disabled={!resendKey.trim() || saving}\n className={emailBtnCls}\n >\n {saving ? (\n <IconLoader2 size={10} className=\"animate-spin\" />\n ) : saved ? (\n <IconCheck size={10} />\n ) : (\n \"Save\"\n )}\n </Button>\n </div>\n )}\n {fromConfigured ? (\n <div\n className={cn(\n \"flex items-center gap-1.5 text-green-500\",\n noteTextClass(isPage),\n )}\n >\n <IconCheck size={emailIconSize} />\n EMAIL_FROM configured\n </div>\n ) : (\n <div className=\"flex gap-1.5\">\n <input\n type=\"text\"\n value={fromAddr}\n onChange={(e) => setFromAddr(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") saveResend();\n }}\n placeholder=\"From address - e.g. Acme <hi@acme.com>\"\n className={emailInputCls}\n />\n {!resendConfigured ? null : (\n <Button\n intent=\"primary\"\n emphasis=\"solid\"\n onClick={saveResend}\n disabled={!fromAddr.trim() || saving}\n className={emailBtnCls}\n >\n {saving ? (\n <IconLoader2 size={10} className=\"animate-spin\" />\n ) : saved ? (\n <IconCheck size={10} />\n ) : (\n \"Save\"\n )}\n </Button>\n )}\n </div>\n )}\n </ManualSetupCard>\n ) : (\n <ManualSetupCard\n hint=\"Use SendGrid for transactional email. SendGrid requires a verified from address.\"\n docsUrl=\"https://app.sendgrid.com/settings/api_keys\"\n docsLabel=\"Get a SendGrid key\"\n >\n {sendgridConfigured ? (\n <div\n className={cn(\n \"mb-1 flex items-center gap-1.5 text-green-500\",\n noteTextClass(isPage),\n )}\n >\n <IconCheck size={emailIconSize} />\n SENDGRID_API_KEY configured\n </div>\n ) : (\n <div className=\"mb-1 flex gap-1.5\">\n <input\n type=\"password\"\n value={sendgridKey}\n onChange={(e) => setSendgridKey(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") saveSendgrid();\n }}\n placeholder=\"SG....\"\n className={emailInputCls}\n />\n <Button\n intent=\"primary\"\n emphasis=\"solid\"\n onClick={saveSendgrid}\n disabled={!sendgridKey.trim() || saving}\n className={emailBtnCls}\n >\n {saving ? (\n <IconLoader2 size={10} className=\"animate-spin\" />\n ) : saved ? (\n <IconCheck size={10} />\n ) : (\n \"Save\"\n )}\n </Button>\n </div>\n )}\n {fromConfigured ? (\n <div\n className={cn(\n \"flex items-center gap-1.5 text-green-500\",\n noteTextClass(isPage),\n )}\n >\n <IconCheck size={emailIconSize} />\n EMAIL_FROM configured\n </div>\n ) : (\n <div className=\"flex gap-1.5\">\n <input\n type=\"text\"\n value={fromAddr}\n onChange={(e) => setFromAddr(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") saveSendgrid();\n }}\n placeholder=\"From address - e.g. Acme <hi@acme.com>\"\n className={emailInputCls}\n />\n {!sendgridConfigured ? null : (\n <Button\n intent=\"primary\"\n emphasis=\"solid\"\n onClick={saveSendgrid}\n disabled={!fromAddr.trim() || saving}\n className={emailBtnCls}\n >\n {saving ? (\n <IconLoader2 size={10} className=\"animate-spin\" />\n ) : saved ? (\n <IconCheck size={10} />\n ) : (\n \"Save\"\n )}\n </Button>\n )}\n </div>\n )}\n </ManualSetupCard>\n )}\n </div>\n )}\n </SettingsSection>\n );\n}\n\n// ─── Agent Limits Section ──────────────────────────────────────────────────\n\ninterface AgentLoopSettingsResponse {\n maxIterations: number;\n defaultMaxIterations: number;\n minMaxIterations: number;\n maxMaxIterations: number;\n scope: \"org\" | \"user\" | \"default\";\n source: \"org\" | \"user\" | \"env\" | \"default\";\n canUpdate: boolean;\n orgName?: string | null;\n role?: string | null;\n}\n\nfunction AgentLimitsSectionInner({\n open,\n onToggle,\n}: {\n open?: boolean;\n onToggle?: () => void;\n}) {\n const isPage = useSettingsSurface() === \"page\";\n const [settings, setSettings] = useState<AgentLoopSettingsResponse | null>(\n null,\n );\n const [value, setValue] = useState(\"\");\n const [loading, setLoading] = useState(true);\n const [saving, setSaving] = useState(false);\n const [saved, setSaved] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const load = useCallback(() => {\n let cancelled = false;\n setLoading(true);\n fetch(agentNativePath(\"/_agent-native/agent-loop-settings\"))\n .then((r) => (r.ok ? r.json() : null))\n .then((data: AgentLoopSettingsResponse | null) => {\n if (cancelled || !data) return;\n setSettings(data);\n setValue(String(data.maxIterations));\n })\n .catch(() => {})\n .finally(() => {\n if (!cancelled) setLoading(false);\n });\n return () => {\n cancelled = true;\n };\n }, []);\n\n useEffect(() => load(), [load]);\n\n useEffect(() => {\n const handler = (event: Event) => {\n const detail = (event as CustomEvent).detail as\n | AgentLoopSettingsResponse\n | undefined;\n if (!detail?.maxIterations) return;\n setSettings(detail);\n setValue(String(detail.maxIterations));\n };\n window.addEventListener(\"agent-loop-settings:changed\", handler);\n return () =>\n window.removeEventListener(\"agent-loop-settings:changed\", handler);\n }, []);\n\n const numericValue = Number(value);\n const hasPendingChange =\n !!settings &&\n settings.canUpdate &&\n Number.isInteger(numericValue) &&\n numericValue !== settings.maxIterations;\n const scopeLabel =\n settings?.scope === \"org\"\n ? settings.orgName\n ? `${settings.orgName} organization`\n : \"organization\"\n : \"your account\";\n\n const save = async () => {\n if (!settings?.canUpdate) return;\n setSaving(true);\n setSaved(false);\n setError(null);\n try {\n const res = await fetch(\n agentNativePath(\"/_agent-native/agent-loop-settings\"),\n {\n method: \"PUT\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ maxIterations: numericValue }),\n },\n );\n const body = await res.json().catch(() => ({}));\n if (!res.ok) {\n throw new Error(body?.error ?? `Save failed (${res.status})`);\n }\n setSettings(body as AgentLoopSettingsResponse);\n setValue(String((body as AgentLoopSettingsResponse).maxIterations));\n setSaved(true);\n window.dispatchEvent(\n new CustomEvent(\"agent-loop-settings:changed\", { detail: body }),\n );\n setTimeout(() => setSaved(false), 2000);\n } catch (err) {\n setError(err instanceof Error ? err.message : \"Save failed\");\n } finally {\n setSaving(false);\n }\n };\n\n const reset = async () => {\n if (!settings?.canUpdate) return;\n setSaving(true);\n setSaved(false);\n setError(null);\n try {\n const res = await fetch(\n agentNativePath(\"/_agent-native/agent-loop-settings\"),\n { method: \"DELETE\" },\n );\n const body = await res.json().catch(() => ({}));\n if (!res.ok) {\n throw new Error(body?.error ?? `Reset failed (${res.status})`);\n }\n setSettings(body as AgentLoopSettingsResponse);\n setValue(String((body as AgentLoopSettingsResponse).maxIterations));\n window.dispatchEvent(\n new CustomEvent(\"agent-loop-settings:changed\", { detail: body }),\n );\n } catch (err) {\n setError(err instanceof Error ? err.message : \"Reset failed\");\n } finally {\n setSaving(false);\n }\n };\n\n return (\n <SettingsSection\n id={settingsSectionDomId(\"limits\")}\n icon={<IconGauge size={14} />}\n title=\"Agent Limits\"\n subtitle=\"Control how long a single agent response can work before pausing.\"\n connected={\n loading\n ? undefined\n : settings\n ? settings.maxIterations !== settings.defaultMaxIterations\n : false\n }\n open={open}\n onToggle={onToggle}\n >\n {loading ? (\n <SettingsSkeleton lines={2} />\n ) : settings ? (\n <div className=\"space-y-2\">\n <div\n className={cn(\n \"rounded-md border border-border bg-accent/20\",\n isPage ? \"px-3.5 py-3\" : \"px-2.5 py-2\",\n )}\n >\n <div className=\"flex items-center justify-between gap-2\">\n <div>\n <p\n className={cn(\n \"font-medium text-foreground\",\n subTextClass(isPage),\n )}\n >\n Max iterations\n </p>\n <p\n className={cn(\n \"mt-0.5 text-muted-foreground\",\n noteTextClass(isPage),\n )}\n >\n Applies to {scopeLabel}. Default is{\" \"}\n {settings.defaultMaxIterations.toLocaleString()}.\n </p>\n </div>\n <span\n className={cn(\n \"rounded-full bg-background px-2 py-0.5 font-medium text-muted-foreground\",\n noteTextClass(isPage),\n )}\n >\n {settings.source}\n </span>\n </div>\n <div className=\"mt-2 flex items-center gap-1.5\">\n <input\n type=\"number\"\n min={settings.minMaxIterations}\n max={settings.maxMaxIterations}\n value={value}\n disabled={!settings.canUpdate || saving}\n onChange={(e) => {\n setValue(e.target.value);\n setError(null);\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" && hasPendingChange) void save();\n }}\n className={cn(\n textInputClass(isPage),\n \"min-w-0 flex-1 disabled:opacity-60\",\n )}\n style={isPage ? CONTROL_STYLE_PAGE : undefined}\n />\n <Button\n type=\"button\"\n intent=\"primary\"\n emphasis=\"solid\"\n onClick={save}\n disabled={!hasPendingChange || saving}\n className={pillButtonClass(isPage, \"solid\")}\n >\n {saving ? (\n <IconLoader2\n size={isPage ? 14 : 10}\n className=\"animate-spin\"\n />\n ) : saved ? (\n <IconCheck size={isPage ? 14 : 10} />\n ) : (\n \"Save\"\n )}\n </Button>\n <Button\n type=\"button\"\n intent=\"neutral\"\n emphasis=\"outline\"\n onClick={reset}\n disabled={\n !settings.canUpdate ||\n saving ||\n settings.maxIterations === settings.defaultMaxIterations\n }\n className={pillButtonClass(isPage, \"outline\")}\n >\n Reset\n </Button>\n </div>\n {!settings.canUpdate && (\n <p\n className={cn(\n \"mt-2 text-muted-foreground\",\n noteTextClass(isPage),\n )}\n >\n Only organization owners and admins can change this limit.\n </p>\n )}\n {error && (\n <p className={cn(\"mt-2 text-destructive\", noteTextClass(isPage))}>\n {error}\n </p>\n )}\n </div>\n </div>\n ) : (\n <p className={cn(\"text-muted-foreground\", noteTextClass(isPage))}>\n Agent limit settings are unavailable.\n </p>\n )}\n </SettingsSection>\n );\n}\n\n// ─── Main SettingsPanel ─────────────────────────────────────────────────────\n\nexport interface SettingsPanelProps {\n isDevMode: boolean;\n onToggleDevMode: () => void;\n showDevToggle: boolean;\n devAppUrl?: string;\n initialSection?: string | null;\n sectionRequestKey?: number;\n}\n\n// Agent capability modes. The internal values (\"production\"/\"development\") are\n// kept for back-compat with the AGENT_MODE wiring; only the visible labels\n// changed to \"App mode\" / \"Code mode\" so this control reads as the agent\n// capability it is — not the deployment environment (NODE_ENV).\nconst agentModeOptions: SettingsSelectOption[] = [\n {\n value: \"production\",\n label: \"App mode\",\n description:\n \"App tools only; code, bash, and files require Builder or a local clone.\",\n },\n {\n value: \"development\",\n label: \"Code mode\",\n description: \"Full access to code editing, bash, and files.\",\n },\n];\n\nfunction CapabilityStatusRow({\n label,\n value,\n active,\n}: {\n label: string;\n value: React.ReactNode;\n active: boolean;\n}) {\n return (\n <div className=\"flex items-center justify-between gap-2 text-[10px]\">\n <span className=\"flex items-center gap-1.5 text-muted-foreground\">\n <span\n className={`h-1.5 w-1.5 rounded-full ${active ? \"bg-green-500\" : \"bg-muted-foreground/30\"}`}\n aria-hidden=\"true\"\n />\n {label}\n </span>\n <span className=\"min-w-0 truncate text-end text-foreground\">{value}</span>\n </div>\n );\n}\n\nfunction CapabilityStatusStrip({\n isDevMode,\n builderConnected,\n builderLoading,\n builderBranchesAvailable,\n onOpenLlm,\n}: {\n isDevMode: boolean;\n builderConnected: boolean;\n builderLoading: boolean;\n builderBranchesAvailable: boolean;\n onOpenLlm: () => void;\n}) {\n const codeAvailable =\n isDevMode || (builderConnected && builderBranchesAvailable);\n const codeLabel = isDevMode\n ? \"Local tools\"\n : builderConnected && builderBranchesAvailable\n ? \"Builder branches\"\n : \"Desktop/local\";\n\n return (\n <div className=\"rounded-md border border-border bg-muted/20 px-2.5 py-2\">\n <div className=\"mb-1.5 text-[10px] font-medium text-muted-foreground\">\n Available now\n </div>\n <div className=\"space-y-1.5\">\n <CapabilityStatusRow label=\"App\" value=\"Chat + actions\" active />\n <CapabilityStatusRow\n label=\"Code\"\n value={codeLabel}\n active={codeAvailable}\n />\n <CapabilityStatusRow\n label=\"Builder\"\n active={builderConnected}\n value={\n builderLoading ? (\n \"Checking...\"\n ) : builderConnected ? (\n \"Connected\"\n ) : (\n <Button\n type=\"button\"\n intent=\"neutral\"\n emphasis=\"outline\"\n onClick={onOpenLlm}\n 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\"\n >\n Connect\n </Button>\n )\n }\n />\n </div>\n </div>\n );\n}\n\ninterface SettingsPanelContentProps extends SettingsPanelProps {\n sections?: readonly SettingsSectionId[];\n showCapabilityStrip?: boolean;\n className?: string;\n surface?: SettingsSurface;\n builderConnectionOwnedExternally?: boolean;\n}\n\nfunction SettingsPanelContent({\n isDevMode,\n onToggleDevMode,\n showDevToggle,\n devAppUrl,\n initialSection,\n sectionRequestKey,\n sections = ALL_SETTINGS_SECTIONS,\n showCapabilityStrip = true,\n className,\n surface = \"sidebar\",\n builderConnectionOwnedExternally = false,\n}: SettingsPanelContentProps) {\n const { status: builder, loading: builderLoading } = useBuilderStatus({\n enabled: !builderConnectionOwnedExternally,\n });\n const connected = builder?.configured ?? false;\n const connectUrl = builder?.cliAuthUrl ?? builder?.connectUrl;\n const orgName = builder?.orgName;\n const envManaged = !!builder?.envManaged;\n const credentialSource = builder?.credentialSource;\n const builderBranchesAvailable = !!builder?.builderEnabled;\n const builderFlow = useBuilderConnectFlow({\n enabled: !builderConnectionOwnedExternally,\n popupUrl: connectUrl,\n trackingSource: \"settings_panel_builder_card\",\n });\n\n const scrollSectionIntoView = useCallback((section: SettingsSectionId) => {\n window.requestAnimationFrame(() => {\n document.getElementById(settingsSectionDomId(section))?.scrollIntoView({\n block: \"start\",\n behavior: \"smooth\",\n });\n });\n }, []);\n const {\n focusSecretKey,\n isSectionVisible: shouldShowSection,\n openSection,\n toggleSection: toggle,\n openSettingsSection: openControllerSection,\n } = useSettingsPanelController({\n sections,\n initialSection,\n sectionRequestKey,\n onScrollToSection: scrollSectionIntoView,\n });\n const openSettingsSection = useCallback(\n (section: SettingsSectionId, scroll = false) =>\n openControllerSection(section, { scroll }),\n [openControllerSection],\n );\n\n const isPage = surface === \"page\";\n\n return (\n <SettingsSurfaceProvider surface={surface}>\n <div\n className={cn(\n isPage ? \"space-y-3\" : \"flex-1 min-h-0 overflow-y-auto p-3 space-y-2\",\n className,\n )}\n style={isPage ? undefined : { overflowY: \"auto\" }}\n >\n {/* Agent capability mode (App vs Code) + app link */}\n {(showDevToggle || devAppUrl) && (\n <div className=\"space-y-2 pb-2 border-b border-border mb-2\">\n {showDevToggle && (\n <SettingsSelect\n label=\"Agent mode\"\n labelAdornment={\n devAppUrl ? (\n <Tooltip>\n <TooltipTrigger asChild>\n <a\n href={devAppUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n aria-label=\"Open app in new tab\"\n className=\"flex items-center text-muted-foreground hover:text-foreground\"\n >\n <IconExternalLink size={14} />\n </a>\n </TooltipTrigger>\n <TooltipContent>Open app in new tab</TooltipContent>\n </Tooltip>\n ) : undefined\n }\n value={isDevMode ? \"development\" : \"production\"}\n options={agentModeOptions}\n onValueChange={(next) => {\n const nextIsDev = next === \"development\";\n if (nextIsDev !== isDevMode) onToggleDevMode();\n }}\n />\n )}\n </div>\n )}\n\n {showCapabilityStrip && (\n <CapabilityStatusStrip\n isDevMode={isDevMode}\n builderConnected={connected}\n builderLoading={builderLoading}\n builderBranchesAvailable={builderBranchesAvailable}\n onOpenLlm={() => openSettingsSection(\"llm\", true)}\n />\n )}\n\n {/* LLM */}\n {shouldShowSection(\"llm\") && (\n <LLMSectionInner\n builderFlow={builderFlow}\n builderLoading={builderLoading}\n connectUrl={connectUrl}\n connected={connected}\n orgName={orgName}\n envManaged={envManaged}\n credentialSource={credentialSource}\n open={openSection === \"llm\"}\n onToggle={() => toggle(\"llm\")}\n />\n )}\n\n {/* App default model */}\n {shouldShowSection(\"app-models\") && (\n <AppModelDefaultsSectionInner\n open={openSection === \"app-models\"}\n onToggle={() => toggle(\"app-models\")}\n />\n )}\n\n {/* Agent limits */}\n {shouldShowSection(\"limits\") && (\n <AgentLimitsSectionInner\n open={openSection === \"limits\"}\n onToggle={() => toggle(\"limits\")}\n />\n )}\n\n {/* Voice transcription */}\n {shouldShowSection(\"voice\") && (\n <SettingsSection\n id={settingsSectionDomId(\"voice\")}\n icon={<IconMicrophone size={14} />}\n title=\"Voice Transcription\"\n subtitle=\"How the composer microphone turns your voice into text.\"\n open={openSection === \"voice\"}\n onToggle={() => toggle(\"voice\")}\n >\n <VoiceTranscriptionSection />\n </SettingsSection>\n )}\n\n {/* Demo mode */}\n {shouldShowSection(\"demo-mode\") && (\n <SettingsSection\n id={settingsSectionDomId(\"demo-mode\")}\n icon={<IconEyeOff size={14} />}\n title=\"Demo mode\"\n subtitle=\"Replace displayed emails with realistic fake data in this browser and reshape supported charts for presentations. Backend, MCP, and agent results stay real and access-scoped.\"\n open={openSection === \"demo-mode\"}\n onToggle={() => toggle(\"demo-mode\")}\n >\n <DemoModeSection />\n </SettingsSection>\n )}\n\n {/* Automations */}\n {shouldShowSection(\"automations\") && (\n <SettingsSection\n id={settingsSectionDomId(\"automations\")}\n icon={<IconBolt size={14} />}\n title=\"Automations\"\n subtitle=\"Event-triggered and scheduled automations.\"\n open={openSection === \"automations\"}\n onToggle={() => toggle(\"automations\")}\n >\n <AutomationsSection />\n </SettingsSection>\n )}\n\n {/* API Keys & Connections */}\n {shouldShowSection(\"secrets\") && (\n <SettingsSection\n id={settingsSectionDomId(\"secrets\")}\n icon={<IconKey size={14} />}\n title=\"API Keys & Connections\"\n subtitle=\"Service credentials and automation keys.\"\n open={openSection === \"secrets\"}\n onToggle={() => toggle(\"secrets\")}\n >\n <SecretsSection focusKey={focusSecretKey} />\n </SettingsSection>\n )}\n\n {/* Hosting */}\n {shouldShowSection(\"hosting\") && (\n <SettingsSection\n id={settingsSectionDomId(\"hosting\")}\n icon={<IconCloud size={14} />}\n title=\"Hosting\"\n subtitle=\"Deploy your app to the cloud.\"\n connected={connected}\n open={openSection === \"hosting\"}\n onToggle={() => toggle(\"hosting\")}\n >\n <div className=\"space-y-2\">\n <UseBuilderCard\n builderFlow={builderFlow}\n connectUrl={connectUrl}\n connected={connected}\n orgName={orgName}\n envManaged={envManaged}\n credentialSource={credentialSource}\n trackingSource=\"hosting_settings\"\n trackingFlow=\"hosting\"\n />\n <ManualSetupCard\n hint=\"Deploy manually to Netlify, Vercel, Cloudflare, or any Nitro-supported target.\"\n docsUrl=\"https://www.builder.io/c/docs/agent-native-deployment?utm_source=agent-native&utm_medium=product&utm_campaign=onboarding&utm_content=deployment_settings\"\n dim={connected}\n />\n </div>\n </SettingsSection>\n )}\n\n {/* Database */}\n {shouldShowSection(\"database\") && (\n <SettingsSection\n id={settingsSectionDomId(\"database\")}\n icon={<IconDatabase size={14} />}\n title=\"Database\"\n subtitle=\"Connect a cloud database for persistent storage.\"\n connected={connected}\n open={openSection === \"database\"}\n onToggle={() => toggle(\"database\")}\n >\n <div className=\"space-y-2\">\n <UseBuilderCard\n builderFlow={builderFlow}\n connectUrl={connectUrl}\n connected={connected}\n orgName={orgName}\n envManaged={envManaged}\n credentialSource={credentialSource}\n trackingSource=\"database_settings\"\n trackingFlow=\"database\"\n />\n <ManualSetupCard\n hint=\"Set DATABASE_URL in your .env to connect Neon, Supabase, Turso, any Postgres/SQLite database, or local PGlite with pglite:./data/pglite.\"\n docsUrl=\"https://www.builder.io/c/docs/agent-native-database?utm_source=agent-native&utm_medium=product&utm_campaign=onboarding&utm_content=database_settings\"\n dim={connected}\n />\n </div>\n </SettingsSection>\n )}\n\n {/* File uploads */}\n {shouldShowSection(\"uploads\") && (\n <SettingsSection\n id={settingsSectionDomId(\"uploads\")}\n icon={<IconUpload size={14} />}\n title=\"File uploads\"\n subtitle=\"Where user-uploaded files (avatars, chat attachments) are stored.\"\n connected={connected}\n open={openSection === \"uploads\"}\n onToggle={() => toggle(\"uploads\")}\n >\n <div className=\"space-y-2\">\n <UseBuilderCard\n builderFlow={builderFlow}\n connectUrl={connectUrl}\n connected={connected}\n orgName={orgName}\n envManaged={envManaged}\n credentialSource={credentialSource}\n trackingSource=\"file_upload_settings\"\n trackingFlow=\"file_upload\"\n />\n <ManualSetupCard\n hint=\"Without a provider, files are stored as base64 in your database. Fine for dev, not recommended for production.\"\n docsUrl=\"https://www.builder.io/c/docs/agent-native-file-uploads?utm_source=agent-native&utm_medium=product&utm_campaign=onboarding&utm_content=file_upload_settings\"\n dim={connected}\n />\n </div>\n </SettingsSection>\n )}\n\n {/* Authentication */}\n {shouldShowSection(\"auth\") && (\n <SettingsSection\n id={settingsSectionDomId(\"auth\")}\n icon={<IconShield size={14} />}\n title=\"Authentication\"\n subtitle=\"Set up user authentication and access control.\"\n connected={connected}\n open={openSection === \"auth\"}\n onToggle={() => toggle(\"auth\")}\n >\n <div className=\"space-y-2\">\n <UseBuilderCard\n builderFlow={builderFlow}\n connectUrl={connectUrl}\n connected={connected}\n orgName={orgName}\n envManaged={envManaged}\n credentialSource={credentialSource}\n trackingSource=\"auth_settings\"\n trackingFlow=\"auth\"\n />\n <ManualSetupCard\n hint=\"Configure Better Auth with BETTER_AUTH_SECRET and optional Google/GitHub OAuth providers.\"\n docsUrl=\"https://www.builder.io/c/docs/agent-native-authentication?utm_source=agent-native&utm_medium=product&utm_campaign=onboarding&utm_content=authentication_settings\"\n dim={connected}\n />\n </div>\n </SettingsSection>\n )}\n\n {/* Email */}\n {shouldShowSection(\"email\") && (\n <EmailSectionInner\n open={openSection === \"email\"}\n onToggle={() => toggle(\"email\")}\n />\n )}\n\n {/* Browser Automation */}\n {shouldShowSection(\"browser\") && (\n <SettingsSection\n id={settingsSectionDomId(\"browser\")}\n icon={<IconBrowser size={14} />}\n title=\"Browser Automation\"\n subtitle=\"Let agents control a real browser for web tasks.\"\n connected={builderConnectionOwnedExternally ? undefined : connected}\n open={openSection === \"browser\"}\n onToggle={() => toggle(\"browser\")}\n >\n {!builderConnectionOwnedExternally ? (\n <UseBuilderCard\n builderFlow={builderFlow}\n connectUrl={connectUrl}\n connected={connected}\n orgName={orgName}\n envManaged={envManaged}\n credentialSource={credentialSource}\n trackingSource=\"browser_settings\"\n trackingFlow=\"browser_automation\"\n />\n ) : null}\n </SettingsSection>\n )}\n\n {builderBranchesAvailable && shouldShowSection(\"background\") && (\n <SettingsSection\n id={settingsSectionDomId(\"background\")}\n icon={<IconGitBranch size={14} />}\n title=\"Background Agent\"\n subtitle=\"Make code changes from production mode via Builder.\"\n connected={connected}\n open={openSection === \"background\"}\n onToggle={() => toggle(\"background\")}\n >\n <UseBuilderCard\n builderFlow={builderFlow}\n connectUrl={connectUrl}\n connected={connected}\n orgName={orgName}\n envManaged={envManaged}\n credentialSource={credentialSource}\n trackingSource=\"background_agent_settings\"\n trackingFlow=\"background_agent\"\n />\n </SettingsSection>\n )}\n\n {/* Integrations */}\n {shouldShowSection(\"integrations\") && (\n <SettingsSection\n id={settingsSectionDomId(\"integrations\")}\n icon={<IconPlugConnected size={14} />}\n title=\"Integrations\"\n subtitle=\"Connect messaging platforms and external services.\"\n open={openSection === \"integrations\"}\n onToggle={() => toggle(\"integrations\")}\n >\n <Suspense fallback={null}>\n <IntegrationsPanel />\n </Suspense>\n </SettingsSection>\n )}\n\n {/* Usage & spend */}\n {shouldShowSection(\"usage\") && (\n <SettingsSection\n id={settingsSectionDomId(\"usage\")}\n icon={<IconCoin size={14} />}\n title=\"Usage\"\n subtitle=\"Track token consumption and estimated cost — broken down by chat, automations, and background jobs.\"\n open={openSection === \"usage\"}\n onToggle={() => toggle(\"usage\")}\n >\n <UsageSection />\n </SettingsSection>\n )}\n\n {/* A2A Agents */}\n {shouldShowSection(\"a2a\") && (\n <SettingsSection\n id={settingsSectionDomId(\"a2a\")}\n icon={<IconTopologyRing2 size={14} />}\n title=\"Connected Agents (A2A)\"\n subtitle=\"Manage remote agents connected via the A2A protocol.\"\n open={openSection === \"a2a\"}\n onToggle={() => toggle(\"a2a\")}\n >\n <AgentsSection />\n </SettingsSection>\n )}\n </div>\n </SettingsSurfaceProvider>\n );\n}\n\nexport function SettingsPanel(props: SettingsPanelProps) {\n return <SettingsPanelContent {...props} />;\n}\n\nfunction McpConnectionsCard() {\n const t = useT();\n\n return (\n <section className=\"rounded-lg border border-border bg-muted/20 p-3\">\n <div className=\"flex items-start gap-2.5\">\n <IconPlugConnected\n size={16}\n className=\"mt-0.5 shrink-0 text-muted-foreground\"\n />\n <div className=\"min-w-0 flex-1\">\n <h2 className=\"text-sm font-semibold text-foreground\">\n {t(\"settings.mcpConnectionsTitle\")}\n </h2>\n <p className=\"mt-1 text-xs leading-5 text-muted-foreground\">\n {t(\"settings.mcpConnectionsDescription\")}\n </p>\n <Link\n to=\"/agent#connections\"\n className=\"mt-2 inline-flex items-center gap-1 text-xs font-medium text-foreground underline-offset-4 hover:underline\"\n >\n {t(\"settings.openMcpConnections\")}\n <IconExternalLink size={13} />\n </Link>\n </div>\n </div>\n </section>\n );\n}\n\nexport function ConnectionsSettingsContent({\n settingsPanelProps,\n}: {\n settingsPanelProps: SettingsPanelProps;\n}) {\n return (\n <div className=\"mx-auto w-full max-w-2xl space-y-4\">\n <BuilderConnectCard trackingSource=\"settings_connections\" />\n <McpConnectionsCard />\n <SettingsPanelContent\n {...settingsPanelProps}\n surface=\"page\"\n sections={CONNECTION_SETTINGS_SECTIONS}\n showCapabilityStrip={false}\n className=\"w-full\"\n builderConnectionOwnedExternally\n />\n </div>\n );\n}\n\nexport function AgentSettingsContent({\n className,\n}: { className?: string } = {}) {\n const { isDevMode, canToggle, setDevMode } = useDevMode();\n const settingsPanelProps = useMemo<SettingsPanelProps>(\n () => ({\n isDevMode,\n onToggleDevMode: () => {\n void setDevMode(!isDevMode);\n },\n showDevToggle: canToggle,\n }),\n [canToggle, isDevMode, setDevMode],\n );\n\n return (\n <SettingsPanelContent\n {...settingsPanelProps}\n surface=\"page\"\n sections={AGENT_SETTINGS_SECTIONS}\n showCapabilityStrip={false}\n className={cn(\"mx-auto w-full max-w-2xl\", className)}\n />\n );\n}\n\nexport function useAgentSettingsTabs(): SettingsTabItem[] {\n const { isDevMode, canToggle, setDevMode } = useDevMode();\n const baseProps = useMemo<SettingsPanelProps>(\n () => ({\n isDevMode,\n onToggleDevMode: () => {\n void setDevMode(!isDevMode);\n },\n showDevToggle: canToggle,\n }),\n [canToggle, isDevMode, setDevMode],\n );\n\n return useMemo<SettingsTabItem[]>(() => {\n const searchTabs = getAgentSettingsSearchTabs();\n const searchTab = (\n id: \"agent\" | \"connections\" | \"organization\" | \"workspace\",\n ) => {\n const tab = searchTabs.find((candidate) => candidate.id === id);\n if (!tab) throw new Error(`Missing agent workspace tab: ${id}`);\n return tab;\n };\n const agent = searchTab(\"agent\");\n const connections = searchTab(\"connections\");\n const organization = searchTab(\"organization\");\n const workspace = searchTab(\"workspace\");\n return [\n {\n ...agent,\n icon: IconHierarchy2,\n group: \"agent\",\n href: \"/agent#settings\",\n searchEntries: undefined,\n content: <Navigate to=\"/agent#settings\" replace />,\n },\n {\n ...connections,\n icon: IconPlugConnected,\n group: \"agent\",\n content: <ConnectionsSettingsContent settingsPanelProps={baseProps} />,\n },\n {\n ...organization,\n icon: IconUsersGroup,\n group: \"workspace\",\n content: (\n <div className=\"mx-auto w-full max-w-2xl\">\n <TeamPage showTitle={false} />\n </div>\n ),\n },\n {\n ...workspace,\n icon: IconCloud,\n group: \"workspace\",\n content: (\n <SettingsPanelContent\n {...baseProps}\n surface=\"page\"\n sections={WORKSPACE_SETTINGS_SECTIONS}\n showCapabilityStrip={false}\n className=\"mx-auto w-full max-w-2xl\"\n />\n ),\n },\n ];\n }, [baseProps]);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SettingsPanel.js","sourceRoot":"","sources":["../../../src/client/settings/SettingsPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Checkbox,\n Picker,\n TextField,\n} from \"@agent-native/toolkit/design-system\";\nimport { Button as ToolkitButton } from \"@agent-native/toolkit/ui/button\";\nimport {\n IconChevronDown,\n IconChevronRight,\n IconCheck,\n IconExternalLink,\n IconBrain,\n IconHierarchy2,\n IconBrowser,\n IconGitBranch,\n IconCloud,\n IconDatabase,\n IconShield,\n IconPlugConnected,\n IconTopologyRing2,\n IconLoader2,\n IconUpload,\n IconCoin,\n IconMail,\n IconKey,\n IconMicrophone,\n IconEyeOff,\n IconBolt,\n IconGauge,\n IconApps,\n IconUsersGroup,\n IconTool,\n} from \"@tabler/icons-react\";\nimport React, {\n Suspense,\n lazy,\n useState,\n useEffect,\n useCallback,\n useMemo,\n useRef,\n} from \"react\";\nimport { Link, Navigate } from \"react-router\";\n\nimport { PROVIDER_ENV_PLACEHOLDERS } from \"../../agent/engine/provider-env-vars.js\";\nimport { saveAgentEngineProviderSettings } from \"../agent-engine-key.js\";\nimport { agentNativePath } from \"../api-path.js\";\nimport { BuilderBMark } from \"../builder-mark.js\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from \"../components/ui/tooltip.js\";\nimport { useT } from \"../i18n.js\";\nimport { TeamPage } from \"../org/TeamPage.js\";\nimport { BuilderConnectCard } from \"../setup-connections/BuilderConnectCard.js\";\nimport { callAction } from \"../use-action.js\";\nimport { useDevMode } from \"../use-dev-mode.js\";\nimport { cn } from \"../utils.js\";\nimport {\n AGENT_SETTINGS_SECTIONS,\n ALL_SETTINGS_SECTIONS,\n CONNECTION_SETTINGS_SECTIONS,\n WORKSPACE_SETTINGS_SECTIONS,\n getAgentSettingsSearchTabs,\n type SettingsSectionId,\n} from \"./agent-settings-search.js\";\nimport { AgentsSection } from \"./AgentsSection.js\";\nimport { AutomationsSection } from \"./AutomationsSection.js\";\nimport { DemoModeSection } from \"./DemoModeSection.js\";\nimport { ExtensionsSettingsContent } from \"./ExtensionsSettingsContent.js\";\nimport { SecretsSection } from \"./SecretsSection.js\";\nimport {\n SettingsSection,\n SettingsSurfaceProvider,\n useSettingsSurface,\n type SettingsSurface,\n} from \"./SettingsSection.js\";\nimport type { SettingsTabItem } from \"./SettingsTabsPage.js\";\nimport { UsageSection } from \"./UsageSection.js\";\nimport {\n type BuilderConnectFlow,\n useBuilderConnectFlow,\n useBuilderStatus,\n} from \"./useBuilderStatus.js\";\nimport {\n settingsSectionDomId,\n useSettingsPanelController,\n} from \"./useSettingsPanelController.js\";\nimport { VoiceTranscriptionSection } from \"./VoiceTranscriptionSection.js\";\n\nconst Button = React.forwardRef<\n HTMLButtonElement,\n React.ComponentPropsWithoutRef<typeof ToolkitButton>\n>(({ className, ...props }, ref) => (\n <ToolkitButton\n ref={ref}\n variant=\"ghost\"\n className={cn(\n \"h-auto p-0 hover:bg-transparent hover:text-inherit active:scale-100 [&_svg]:!size-auto\",\n className,\n )}\n {...props}\n />\n));\nButton.displayName = \"SettingsPrimitiveButton\";\n\nconst IntegrationsPanel = lazy(() =>\n import(\"../integrations/IntegrationsPanel.js\").then((m) => ({\n default: m.IntegrationsPanel,\n })),\n);\n\n// ─── Shared helpers ─────────────────────────────────────────────────────────\n\nfunction SettingsSkeleton({ lines = 3 }: { lines?: number }) {\n return (\n <div className=\"space-y-3 animate-pulse\">\n {Array.from({ length: lines }, (_, i) => (\n <div key={i} className=\"space-y-1.5\">\n <div\n className=\"h-3 rounded bg-muted-foreground/10\"\n style={{ width: i === 0 ? \"30%\" : i === 1 ? \"100%\" : \"60%\" }}\n />\n {i < 2 && (\n <div className=\"h-9 rounded-md border border-border bg-muted-foreground/5\" />\n )}\n </div>\n ))}\n </div>\n );\n}\n\ninterface SettingsSelectOption {\n value: string;\n label: string;\n description?: string;\n}\n\nconst CONTROL_STYLE = {\n fontSize: 12,\n lineHeight: 1,\n} satisfies React.CSSProperties;\n\nconst CONTROL_STYLE_PAGE = {\n fontSize: 14,\n lineHeight: 1.2,\n} satisfies React.CSSProperties;\n\n// Surface-aware class helpers so section bodies (shared with the compact\n// sidebar) read as roomy, shadcn-style forms on the full settings page while\n// staying dense in the sidebar.\nfunction fieldLabelClass(isPage: boolean): string {\n return cn(\"font-medium text-foreground\", isPage ? \"text-sm\" : \"text-[12px]\");\n}\n\n// Secondary label / row-title size (e.g. \"This app\", provider names).\nfunction subTextClass(isPage: boolean): string {\n return isPage ? \"text-sm\" : \"text-[11px]\";\n}\n\n// Helper / hint / status note size.\nfunction noteTextClass(isPage: boolean): string {\n return isPage ? \"text-xs\" : \"text-[10px]\";\n}\n\nfunction textInputClass(isPage: boolean): string {\n return cn(\n \"flex w-full rounded-md border border-border bg-background text-foreground outline-none transition-colors hover:bg-accent/40 focus:ring-1 focus:ring-accent placeholder:text-muted-foreground/50\",\n isPage ? \"h-10 px-3 text-sm\" : \"h-9 px-3 text-[12px]\",\n );\n}\n\nfunction pillButtonClass(\n isPage: boolean,\n tone: \"solid\" | \"outline\" | \"ghost\" = \"outline\",\n): string {\n const base = cn(\n \"inline-flex items-center justify-center gap-1 rounded-md font-medium transition-colors disabled:opacity-40\",\n isPage ? \"px-3 py-1.5 text-sm\" : \"px-2.5 py-1 text-[10px]\",\n );\n if (tone === \"solid\") {\n return cn(base, \"bg-accent text-foreground hover:bg-accent/80\");\n }\n if (tone === \"ghost\") {\n return cn(\n base,\n \"text-muted-foreground hover:bg-accent/40 hover:text-foreground\",\n );\n }\n return cn(base, \"border border-border text-foreground hover:bg-accent/40\");\n}\n\nfunction SettingsSelect({\n label,\n labelAdornment,\n value,\n options,\n onValueChange,\n disabled = false,\n}: {\n label: string;\n labelAdornment?: React.ReactNode;\n value: string;\n options: SettingsSelectOption[];\n onValueChange: (value: string) => void;\n disabled?: boolean;\n}) {\n const isPage = useSettingsSurface() === \"page\";\n const controlStyle = isPage ? CONTROL_STYLE_PAGE : CONTROL_STYLE;\n\n return (\n <div className=\"space-y-1.5\">\n <div className=\"flex items-center justify-between\">\n <p className={fieldLabelClass(isPage)}>{label}</p>\n {labelAdornment}\n </div>\n <Picker\n mode=\"select\"\n options={options.map((option) => ({\n value: option.value,\n label: option.label,\n description: option.description,\n textValue: option.label,\n }))}\n value={value}\n onChange={(next) => {\n if (next != null) onValueChange(String(next));\n }}\n disabled={disabled}\n aria-label={label}\n placeholder={value}\n style={controlStyle}\n className={cn(\n \"w-full text-start text-foreground\",\n isPage ? \"text-sm\" : \"text-[12px]\",\n )}\n />\n </div>\n );\n}\n\n// ─── Disconnect button for the Builder card's connected state ───────────────\n//\n// Two-step confirmation: first click arms the button (\"Confirm?\"), second\n// click actually disconnects. Arm auto-reverts after 4s of idle so a user\n// who wandered off doesn't come back to a disconnect waiting for them.\n//\n// Hits /_agent-native/builder/disconnect which removes request-scoped\n// Builder credentials from app_secrets. Deployment env credentials are left\n// alone and remain as fallback. On success we dispatch\n// `agent-engine:configured-changed` so dependent cards refresh inline.\nfunction DisconnectBuilderButton() {\n const { status } = useBuilderStatus();\n const [phase, setPhase] = useState<\"idle\" | \"armed\" | \"busy\">(\"idle\");\n const [err, setErr] = useState<string | null>(null);\n const armedTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const clearArmedTimer = useCallback(() => {\n if (armedTimerRef.current) {\n clearTimeout(armedTimerRef.current);\n armedTimerRef.current = null;\n }\n }, []);\n\n useEffect(() => {\n return () => clearArmedTimer();\n }, [clearArmedTimer]);\n\n const performDisconnect = useCallback(async () => {\n setPhase(\"busy\");\n setErr(null);\n clearArmedTimer();\n try {\n const res = await fetch(\n agentNativePath(\"/_agent-native/builder/disconnect\"),\n {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n },\n );\n // Parse defensively — a nitro 404 fallback returns HTML, not JSON,\n // and res.json() on that would throw.\n const text = await res.text();\n let body: {\n ok?: boolean;\n error?: string;\n warnings?: Record<string, string>;\n } = {};\n if (text) {\n try {\n body = JSON.parse(text);\n } catch {\n // Non-JSON response — likely a 404/HTML fallback.\n }\n }\n if (!res.ok) {\n throw new Error(\n body.error ||\n `Failed (${res.status}). Is your dev server up to date?`,\n );\n }\n if (body.ok !== true) {\n throw new Error(body.error || \"Disconnect didn't confirm ok\");\n }\n if (body.warnings && Object.keys(body.warnings).length > 0) {\n // Disconnect flag persisted (we only reach here when ok:true), so\n // the user IS disconnected — but some ancillary cleanup failed.\n // Log so it's visible during dev; don't block the success path.\n console.warn(\n \"[builder-disconnect] completed with warnings:\",\n body.warnings,\n );\n }\n window.dispatchEvent(new CustomEvent(\"agent-engine:configured-changed\"));\n setPhase(\"idle\");\n } catch (e) {\n setErr(e instanceof Error ? e.message : \"Disconnect failed\");\n setPhase(\"idle\");\n }\n }, [clearArmedTimer]);\n\n const handleDisconnectClick = useCallback(() => {\n if (phase === \"busy\") return;\n if (phase === \"idle\") {\n // First click — arm the button. Auto-revert after 4s to avoid a\n // stale \"confirm\" state someone else could hit by accident.\n setPhase(\"armed\");\n setErr(null);\n clearArmedTimer();\n armedTimerRef.current = setTimeout(() => {\n setPhase(\"idle\");\n armedTimerRef.current = null;\n }, 4000);\n return;\n }\n // phase === \"armed\" — user confirmed, actually disconnect.\n void performDisconnect();\n }, [phase, performDisconnect, clearArmedTimer]);\n\n const handleCancel = useCallback(() => {\n clearArmedTimer();\n setPhase(\"idle\");\n }, [clearArmedTimer]);\n\n // When only the deploy fallback is active there is nothing request-scoped\n // for this button to remove. The early return MUST come after every hook\n // above to satisfy rules-of-hooks.\n if (status?.credentialSource === \"env\") return null;\n\n if (phase === \"armed\") {\n return (\n <>\n <Button\n type=\"button\"\n intent=\"danger\"\n emphasis=\"solid\"\n onClick={handleDisconnectClick}\n 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\"\n >\n Confirm disconnect\n </Button>\n <Button\n type=\"button\"\n intent=\"neutral\"\n emphasis=\"outline\"\n onClick={handleCancel}\n 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\"\n >\n Cancel\n </Button>\n </>\n );\n }\n\n return (\n <>\n <Button\n type=\"button\"\n intent=\"danger\"\n emphasis=\"outline\"\n onClick={handleDisconnectClick}\n disabled={phase === \"busy\"}\n 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\"\n aria-busy={phase === \"busy\"}\n >\n {phase === \"busy\" ? (\n <>\n <IconLoader2 size={10} className=\"animate-spin\" />\n Disconnecting…\n </>\n ) : (\n \"Disconnect\"\n )}\n </Button>\n {err && <span className=\"text-[10px] text-destructive\">{err}</span>}\n </>\n );\n}\n\n// ─── \"Connect Builder.io\" card (shared across all sections) ─────────────────\n\nfunction UseBuilderCard({\n builderFlow,\n connectUrl,\n connected,\n orgName,\n envManaged,\n credentialSource,\n trackingSource = \"settings_panel_builder_card\",\n trackingFlow = \"connect_llm\",\n label = \"Connect Builder.io\",\n subtitle = \"Free credits to start — no API key needed.\",\n dim,\n}: {\n builderFlow: BuilderConnectFlow;\n connectUrl?: string;\n connected: boolean;\n orgName?: string;\n envManaged?: boolean;\n credentialSource?: \"user\" | \"org\" | \"workspace\" | \"env\";\n trackingSource?: string;\n trackingFlow?: string;\n label?: string;\n subtitle?: string;\n dim?: boolean;\n}) {\n const isPage = useSettingsSurface() === \"page\";\n const effectiveConnected = connected || builderFlow.configured;\n const effectiveOrgName = builderFlow.orgName ?? orgName;\n const bgClass = dim ? \"\" : \"bg-accent/30\";\n const titleCls = isPage ? \"text-sm\" : \"text-[11px]\";\n const bodyCls = isPage ? \"text-xs\" : \"text-[10px]\";\n\n if (effectiveConnected) {\n return (\n <div\n className={cn(\n \"rounded-md border border-border\",\n isPage ? \"px-3.5 py-3\" : \"px-2.5 py-2\",\n bgClass,\n )}\n >\n <div className=\"flex items-center justify-between\">\n <div className={cn(\"font-medium text-foreground\", titleCls)}>\n Builder.io\n </div>\n <span\n className={cn(\"flex items-center gap-1 text-green-500\", bodyCls)}\n >\n <IconCheck size={isPage ? 14 : 10} />\n Connected\n </span>\n </div>\n {effectiveOrgName && (\n <p className={cn(\"text-muted-foreground mt-0.5\", bodyCls)}>\n {effectiveOrgName}\n </p>\n )}\n {envManaged ? (\n <p className={cn(\"text-muted-foreground mt-1\", bodyCls)}>\n {credentialSource === \"env\"\n ? \"Deployment fallback is available. Connect your own account to override it.\"\n : \"Using your connected Builder account. Deployment fallback is still available.\"}\n </p>\n ) : null}\n {connectUrl || credentialSource !== \"env\" ? (\n <div className=\"flex items-center gap-2 mt-2.5\">\n {connectUrl && (\n <Button\n type=\"button\"\n intent=\"neutral\"\n emphasis=\"ghost\"\n onClick={() =>\n builderFlow.start({ trackingSource, trackingFlow })\n }\n disabled={builderFlow.connecting}\n className={cn(pillButtonClass(isPage, \"ghost\"), \"no-underline\")}\n >\n {builderFlow.connecting\n ? \"Connecting...\"\n : credentialSource === \"env\"\n ? \"Connect account\"\n : \"Reconnect\"}\n <IconExternalLink size={isPage ? 14 : 10} />\n </Button>\n )}\n {credentialSource !== \"env\" ? <DisconnectBuilderButton /> : null}\n </div>\n ) : null}\n </div>\n );\n }\n\n if (!connectUrl) return null;\n\n return (\n <Button\n type=\"button\"\n onClick={() => builderFlow.start({ trackingSource, trackingFlow })}\n disabled={builderFlow.connecting}\n className={cn(\n \"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\",\n isPage ? \"px-4 py-3.5\" : \"px-3 py-3\",\n isPage ? \"[&_svg]:!size-4\" : \"[&_svg]:!size-3.5\",\n )}\n >\n <div className=\"flex items-start gap-2.5\">\n <div\n className={cn(\n \"flex shrink-0 items-center justify-center rounded-md bg-foreground text-background\",\n isPage ? \"h-8 w-8\" : \"h-7 w-7\",\n )}\n >\n <BuilderBMark className={isPage ? \"h-4 w-4\" : \"h-3.5 w-3.5\"} />\n </div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-1.5 flex-wrap\">\n <span\n className={cn(\n \"font-semibold text-foreground\",\n isPage ? \"text-sm\" : \"text-[12px]\",\n )}\n >\n {builderFlow.connecting ? \"Connecting Builder.io...\" : label}\n </span>\n {builderFlow.connecting && (\n <IconLoader2\n size={isPage ? 14 : 12}\n className=\"shrink-0 animate-spin text-muted-foreground\"\n />\n )}\n </div>\n <p\n className={cn(\n \"text-muted-foreground mt-0.5 leading-snug\",\n isPage ? \"text-xs\" : \"text-[10.5px]\",\n )}\n >\n {subtitle}\n </p>\n {builderFlow.error && (\n <p className={cn(\"mt-1 text-destructive\", bodyCls)}>\n {builderFlow.error}\n </p>\n )}\n </div>\n <IconExternalLink\n size={isPage ? 14 : 12}\n className=\"shrink-0 text-muted-foreground mt-0.5\"\n />\n </div>\n </Button>\n );\n}\n\n// ─── Manual setup card ──────────────────────────────────────────────────────\n\nfunction ManualSetupCard({\n id,\n hint,\n docsUrl,\n docsLabel = \"Read the docs\",\n children,\n dim,\n sourceBadge,\n}: {\n id?: string;\n hint?: string;\n docsUrl?: string;\n docsLabel?: string;\n children?: React.ReactNode;\n dim?: boolean;\n /** Optional \"Connected via X\" badge shown in the header row. */\n sourceBadge?: string;\n}) {\n const isPage = useSettingsSurface() === \"page\";\n const titleCls = isPage ? \"text-sm\" : \"text-[11px]\";\n const bodyCls = isPage ? \"text-xs\" : \"text-[10px]\";\n return (\n <div\n id={id}\n className={cn(\n \"rounded-md border border-border\",\n isPage ? \"px-3.5 py-3\" : \"px-2.5 py-2\",\n dim ? \"\" : \"bg-accent/30\",\n )}\n >\n <div className=\"flex items-center justify-between mb-1\">\n <div className={cn(\"font-medium text-foreground\", titleCls)}>\n Set up manually\n </div>\n {sourceBadge ? (\n <span\n className={cn(\"flex items-center gap-1 text-green-500\", bodyCls)}\n >\n <IconCheck size={isPage ? 14 : 10} />\n {sourceBadge}\n </span>\n ) : null}\n </div>\n {hint && (\n <p className={cn(\"text-muted-foreground mb-1.5\", bodyCls)}>{hint}</p>\n )}\n {children}\n {docsUrl && (\n <a\n href={docsUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={cn(\n pillButtonClass(isPage, \"outline\"),\n \"mt-1.5 no-underline\",\n )}\n >\n {docsLabel}\n <IconExternalLink size={isPage ? 14 : 10} />\n </a>\n )}\n </div>\n );\n}\n\n// ─── LLM helpers ────────────────────────────────────────────────────────────\n\nfunction friendlyModelName(model: string): string {\n if (model === \"z-ai/glm-5.2\") return \"GLM 5.2\";\n const claude = model.match(\n /^claude-(opus|sonnet|haiku)-(\\d+)(?:-(\\d+))?(?:-\\d{8,})?$/,\n );\n if (claude) {\n const tier = claude[1][0].toUpperCase() + claude[1].slice(1);\n return `${tier} ${claude[2]}${claude[3] ? `.${claude[3]}` : \"\"}`;\n }\n if (model.startsWith(\"gpt-\")) {\n const rest = model.slice(4);\n const gpt = rest.match(/^(\\d+)[.-](\\d+)(?:[.-](.+))?$/);\n if (gpt) {\n const suffix = gpt[3]\n ? ` ${gpt[3]\n .split(\"-\")\n .map((part) => part[0].toUpperCase() + part.slice(1))\n .join(\" \")}`\n : \"\";\n return `GPT-${gpt[1]}.${gpt[2]}${suffix}`;\n }\n return `GPT-${rest}`;\n }\n if (/^o\\d/.test(model)) return model;\n const geminiVersioned = model.match(\n /^gemini-(\\d+)-(\\d+)-(.+?)(?:-preview)?$/,\n );\n if (geminiVersioned) {\n const variant = geminiVersioned[3]\n .split(\"-\")\n .map((part) => part[0].toUpperCase() + part.slice(1))\n .join(\" \");\n return `Gemini ${geminiVersioned[1]}.${geminiVersioned[2]} ${variant}`;\n }\n const gemini = model.match(/^gemini-(.+?)(?:-preview)?$/);\n if (gemini) {\n const parts = gemini[1]\n .split(\"-\")\n .map((s) => s[0].toUpperCase() + s.slice(1))\n .join(\" \");\n return `Gemini ${parts}${model.endsWith(\"-preview\") ? \" (preview)\" : \"\"}`;\n }\n return model;\n}\n\ntype SettingsStatus = {\n engine: string;\n source: \"env\" | \"settings\";\n envVar: string | null;\n} | null;\n\nfunction computeSourceBadge(args: {\n settingsConfigured: boolean;\n settingsStatus: SettingsStatus;\n envConfigured: boolean;\n envVar: string | undefined;\n builderConnected: boolean;\n}): string | undefined {\n const { settingsConfigured, settingsStatus } = args;\n if (args.builderConnected) return \"Connected via Builder\";\n if (settingsConfigured) {\n if (settingsStatus?.source === \"env\") {\n return `Connected via ${settingsStatus.envVar ?? args.envVar ?? \"env\"}`;\n }\n return \"Connected via template (server-side)\";\n }\n if (args.envConfigured) return `Connected via ${args.envVar ?? \"env\"}`;\n return undefined;\n}\n\nfunction latestModelsOnly(models: string[]): string[] {\n const seen = new Set<string>();\n return models.filter((m) => {\n const claude = m.match(/^claude-(opus|sonnet|haiku)-/);\n if (claude) {\n if (seen.has(claude[1])) return false;\n seen.add(claude[1]);\n return true;\n }\n const gemini = m.match(/^gemini-(\\d+(?:\\.\\d+)?)-(.+?)(?:-preview)?$/);\n if (gemini) {\n const family = gemini[2];\n if (seen.has(`gemini-${family}`)) return false;\n seen.add(`gemini-${family}`);\n return true;\n }\n return true;\n });\n}\n\nexport function AppDefaultModelField({\n engine,\n models,\n value,\n defaultModel,\n disabled,\n onValueChange,\n onEnter,\n}: {\n engine: string;\n models: string[];\n value: string;\n defaultModel?: string;\n disabled?: boolean;\n onValueChange: (value: string) => void;\n onEnter?: () => void;\n}) {\n const isPage = useSettingsSurface() === \"page\";\n const modelOptions: SettingsSelectOption[] = latestModelsOnly(models).map(\n (model) => ({ value: model, label: friendlyModelName(model) }),\n );\n\n // Builder models are a closed catalog (and are validated server-side), so a\n // real select keeps every available model visible even when one is already\n // selected. Native datalists filter against the current input value, which\n // made this field appear to contain only the active model.\n if (engine === \"builder\" && modelOptions.length > 0) {\n return (\n <SettingsSelect\n label=\"Model\"\n value={value}\n options={modelOptions}\n onValueChange={onValueChange}\n disabled={disabled}\n />\n );\n }\n\n return (\n <div className=\"space-y-1.5\">\n <p className={fieldLabelClass(isPage)}>Model</p>\n <TextField\n value={value}\n onChange={onValueChange}\n disabled={disabled}\n list={`app-model-suggestions-${engine}`}\n onKeyDown={(event) => {\n if (event.key === \"Enter\") onEnter?.();\n }}\n placeholder={defaultModel ?? \"model-id\"}\n autoComplete=\"off\"\n aria-label=\"Model\"\n className={cn(\n \"w-full disabled:opacity-60\",\n isPage ? \"text-sm\" : \"text-[12px]\",\n )}\n style={isPage ? CONTROL_STYLE_PAGE : CONTROL_STYLE}\n />\n {modelOptions.length > 0 && (\n <datalist id={`app-model-suggestions-${engine}`}>\n {modelOptions.map((option) => (\n <option\n key={option.value}\n value={option.value}\n label={option.label}\n />\n ))}\n </datalist>\n )}\n </div>\n );\n}\n\n// ─── LLM Section ────────────────────────────────────────────────────────────\n\ninterface EngineInfo {\n name: string;\n label: string;\n description: string;\n defaultModel: string;\n supportedModels: string[];\n requiredEnvVars: string[];\n installPackage?: string;\n packageInstalled?: boolean;\n}\n\nconst PROVIDER_DOCS: Record<string, string> = {\n anthropic: \"https://console.anthropic.com/settings/keys\",\n \"ai-sdk:anthropic\": \"https://console.anthropic.com/settings/keys\",\n \"ai-sdk:openai\": \"https://platform.openai.com/api-keys\",\n \"ai-sdk:google\": \"https://aistudio.google.com/apikey\",\n \"ai-sdk:openrouter\": \"https://openrouter.ai/keys\",\n \"ai-sdk:groq\": \"https://console.groq.com/keys\",\n \"ai-sdk:mistral\": \"https://console.mistral.ai/api-keys/\",\n \"ai-sdk:cohere\": \"https://dashboard.cohere.com/api-keys\",\n};\n\nfunction LLMSectionInner({\n builderFlow,\n builderLoading,\n connectUrl,\n connected,\n orgName,\n envManaged,\n credentialSource,\n open,\n onToggle,\n}: {\n builderFlow: BuilderConnectFlow;\n builderLoading?: boolean;\n connectUrl?: string;\n connected: boolean;\n orgName?: string;\n envManaged?: boolean;\n credentialSource?: \"user\" | \"org\" | \"workspace\" | \"env\";\n open?: boolean;\n onToggle?: () => void;\n}) {\n const isPage = useSettingsSurface() === \"page\";\n const t = useT();\n const [envKeys, setEnvKeys] = useState<\n Array<{ key: string; configured: boolean }>\n >([]);\n const [apiKey, setApiKey] = useState(\"\");\n const [saving, setSaving] = useState(false);\n const [saved, setSaved] = useState(false);\n const [engines, setEngines] = useState<EngineInfo[]>([]);\n const [currentEngine, setCurrentEngine] = useState(\"anthropic\");\n const [currentModel, setCurrentModel] = useState(\"\");\n const [selectedEngine, setSelectedEngine] = useState(\"anthropic\");\n const [selectedModel, setSelectedModel] = useState(\"\");\n const [baseUrl, setBaseUrl] = useState(\"\");\n const [baseUrlConfigured, setBaseUrlConfigured] = useState(false);\n const [clearBaseUrl, setClearBaseUrl] = useState(false);\n const [advancedOpen, setAdvancedOpen] = useState(false);\n const [manualSetupOpen, setManualSetupOpen] = useState(false);\n const [applyNote, setApplyNote] = useState(false);\n const [testing, setTesting] = useState(false);\n const [testResult, setTestResult] = useState<\n | { ok: true; latencyMs: number; model: string }\n | { ok: false; error: string }\n | null\n >(null);\n const [settingsStatus, setSettingsStatus] = useState<SettingsStatus>(null);\n const [disconnectError, setDisconnectError] = useState<string | null>(null);\n const [envLoaded, setEnvLoaded] = useState(false);\n const [enginesLoaded, setEnginesLoaded] = useState(false);\n const [statusLoaded, setStatusLoaded] = useState(false);\n\n const initialLoading =\n !envLoaded || !enginesLoaded || !statusLoaded || !!builderLoading;\n\n useEffect(() => {\n fetch(agentNativePath(\"/_agent-native/env-status\"))\n .then((r) => (r.ok ? r.json() : []))\n .then(setEnvKeys)\n .catch(() => {})\n .finally(() => setEnvLoaded(true));\n }, [saved]);\n\n const notifyConfigChanged = useCallback(() => {\n window.dispatchEvent(new CustomEvent(\"agent-engine:configured-changed\"));\n }, []);\n\n const refreshSettingsStatus = useCallback(() => {\n fetch(agentNativePath(\"/_agent-native/agent-engine/status\"))\n .then((r) => (r.ok ? r.json() : null))\n .then((data) => {\n setBaseUrlConfigured(Boolean(data?.openAiBaseUrlConfigured));\n if (\n data?.configured &&\n typeof data.engine === \"string\" &&\n (data.source === \"env\" || data.source === \"settings\")\n ) {\n setSettingsStatus({\n engine: data.engine,\n source: data.source,\n envVar: typeof data.envVar === \"string\" ? data.envVar : null,\n });\n } else {\n setSettingsStatus(null);\n }\n })\n .catch(() => {})\n .finally(() => setStatusLoaded(true));\n }, []);\n\n useEffect(() => {\n refreshSettingsStatus();\n }, [refreshSettingsStatus]);\n\n useEffect(() => {\n callAction(\"manage-agent-engine\" as any, { action: \"list\" } as any)\n .then((data) => {\n if (!data) return;\n const engineData = data as {\n engines?: EngineInfo[];\n current?: { engine?: string; model?: string };\n };\n setEngines(engineData.engines ?? []);\n const cur = engineData.current ?? {};\n setCurrentEngine(cur.engine ?? \"anthropic\");\n setCurrentModel(cur.model ?? \"\");\n setSelectedEngine(cur.engine ?? \"anthropic\");\n setSelectedModel(cur.model ?? \"\");\n })\n .catch(() => {})\n .finally(() => setEnginesLoaded(true));\n }, []);\n\n const selectedEngineInfo = engines.find((e) => e.name === selectedEngine);\n const envVar = selectedEngineInfo?.requiredEnvVars?.[0];\n const selectedEnginePackageInstalled =\n selectedEngineInfo?.packageInstalled !== false;\n const envConfigured = envVar\n ? (envKeys.find((k) => k.key === envVar)?.configured ?? false)\n : false;\n const settingsConfigured =\n settingsStatus != null && settingsStatus.engine === currentEngine;\n const builderConnected = connected || builderFlow.configured;\n const anyKeyConfigured =\n builderConnected ||\n (selectedEnginePackageInstalled && (envConfigured || settingsConfigured));\n const sourceBadge = computeSourceBadge({\n settingsConfigured,\n settingsStatus,\n envConfigured,\n envVar,\n builderConnected,\n });\n const manualSetupHint =\n selectedEngine === \"ai-sdk:openrouter\"\n ? \"Provide an OpenRouter key to use OpenRouter models like GLM 5.2.\"\n : \"Choose your AI provider and model.\";\n\n const engineChanged =\n selectedEngine !== currentEngine || selectedModel !== currentModel;\n const isOpenAiEngine = selectedEngine === \"ai-sdk:openai\";\n const endpointChanged = isOpenAiEngine && (!!baseUrl.trim() || clearBaseUrl);\n const providerSettingsChanged = !!apiKey.trim() || endpointChanged;\n\n // Hide the Anthropic-via-AI-SDK alias (redundant with the native entry)\n // and Ollama (no API key to set here). The currently-selected engine is\n // always kept so a stale setting doesn't vanish from the picker.\n const providerOptions: SettingsSelectOption[] = engines\n .filter(\n (e) =>\n e.name === selectedEngine ||\n (e.name !== \"ai-sdk:anthropic\" && e.name !== \"ai-sdk:ollama\"),\n )\n .map((e) => ({ value: e.name, label: e.label }));\n\n const modelOptions: SettingsSelectOption[] = latestModelsOnly(\n selectedEngineInfo?.supportedModels ?? [],\n ).map((m) => ({ value: m, label: friendlyModelName(m) }));\n\n const handleSave = async () => {\n if (!providerSettingsChanged || !envVar) return;\n setSaving(true);\n try {\n const nextBaseUrl = isOpenAiEngine ? baseUrl.trim() : \"\";\n await saveAgentEngineProviderSettings({\n key: envVar,\n ...(apiKey.trim() ? { apiKey } : {}),\n ...(nextBaseUrl ? { baseUrl: nextBaseUrl } : {}),\n ...(isOpenAiEngine && clearBaseUrl ? { clearBaseUrl: true } : {}),\n });\n setSaved(true);\n setApiKey(\"\");\n setBaseUrl(\"\");\n setClearBaseUrl(false);\n if (nextBaseUrl) setBaseUrlConfigured(true);\n if (clearBaseUrl) setBaseUrlConfigured(false);\n refreshSettingsStatus();\n notifyConfigChanged();\n setTimeout(() => setSaved(false), 2000);\n } finally {\n setSaving(false);\n }\n };\n\n const handleDisconnect = async () => {\n setDisconnectError(null);\n try {\n const res = await fetch(\n agentNativePath(\"/_agent-native/agent-engine/disconnect\"),\n {\n method: \"POST\",\n },\n );\n if (res.ok) {\n setTestResult(null);\n setApplyNote(false);\n refreshSettingsStatus();\n notifyConfigChanged();\n return;\n }\n const body = (await res.json().catch(() => null)) as {\n error?: string;\n } | null;\n setDisconnectError(\n body?.error ??\n (res.status === 401\n ? \"You must be signed in to disconnect.\"\n : `Disconnect failed (HTTP ${res.status})`),\n );\n } catch (err) {\n setDisconnectError(err instanceof Error ? err.message : String(err));\n }\n };\n\n const handleTest = async () => {\n setTesting(true);\n setTestResult(null);\n try {\n const data = await callAction(\n \"manage-agent-engine\" as any,\n {\n action: \"test\",\n engine: selectedEngine,\n model: selectedModel || selectedEngineInfo?.defaultModel,\n } as any,\n );\n // Older action paths wrapped tool output in { result }. Accept either\n // shape while the action route normalizes JSON-string script output.\n const parsed =\n typeof data === \"string\"\n ? JSON.parse(data)\n : typeof data?.result === \"string\"\n ? JSON.parse(data.result)\n : data;\n if (parsed?.ok) {\n setTestResult({\n ok: true,\n latencyMs: parsed.latencyMs ?? 0,\n model: parsed.model ?? selectedModel,\n });\n } else {\n setTestResult({\n ok: false,\n error: parsed?.error ?? \"Test failed (no error message)\",\n });\n }\n } catch (err) {\n setTestResult({\n ok: false,\n error: err instanceof Error ? err.message : String(err),\n });\n } finally {\n setTesting(false);\n }\n };\n\n const handleApply = async () => {\n try {\n const res = await fetch(\n agentNativePath(\"/_agent-native/actions/manage-agent-engine\"),\n {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n action: \"set\",\n engine: selectedEngine,\n model: selectedModel,\n }),\n },\n );\n if (res.ok) {\n setCurrentEngine(selectedEngine);\n setCurrentModel(selectedModel);\n setApplyNote(true);\n refreshSettingsStatus();\n notifyConfigChanged();\n setTimeout(() => setApplyNote(false), 4000);\n }\n } catch {}\n };\n\n return (\n <SettingsSection\n id={settingsSectionDomId(\"llm\")}\n icon={<IconBrain size={14} />}\n title=\"LLM\"\n subtitle=\"Connect any major LLM — Claude, GPT, Gemini, and more.\"\n required\n connected={initialLoading ? undefined : anyKeyConfigured}\n open={open}\n onToggle={onToggle}\n >\n {initialLoading ? (\n <SettingsSkeleton lines={3} />\n ) : (\n <div className=\"space-y-2\">\n <UseBuilderCard\n builderFlow={builderFlow}\n connectUrl={connectUrl}\n connected={connected}\n orgName={orgName}\n envManaged={envManaged}\n credentialSource={credentialSource}\n trackingSource=\"llm_settings\"\n trackingFlow=\"connect_llm\"\n label=\"Connect Builder.io\"\n />\n {builderConnected && (\n <Button\n type=\"button\"\n intent=\"neutral\"\n emphasis=\"ghost\"\n aria-expanded={manualSetupOpen}\n aria-controls=\"llm-manual-setup\"\n onClick={() => setManualSetupOpen((open) => !open)}\n className={cn(\n \"inline-flex items-center gap-1 px-0.5 text-muted-foreground hover:text-foreground\",\n isPage ? \"text-xs\" : \"text-[10px]\",\n )}\n >\n {t(\"agentPanel.addOwnKeys\", {\n defaultValue: \"Add your own keys\",\n })}\n <IconChevronDown\n size={isPage ? 14 : 11}\n className={cn(\n \"transition-transform\",\n manualSetupOpen && \"rotate-180\",\n )}\n />\n </Button>\n )}\n {(!builderConnected || manualSetupOpen) && (\n <ManualSetupCard\n id=\"llm-manual-setup\"\n hint={manualSetupHint}\n sourceBadge={builderConnected ? undefined : sourceBadge}\n >\n <div className=\"space-y-2 mb-1\">\n <SettingsSelect\n label=\"Provider\"\n value={selectedEngine}\n options={providerOptions}\n onValueChange={(val) => {\n setSelectedEngine(val);\n const info = engines.find((e) => e.name === val);\n setSelectedModel(info?.defaultModel ?? \"\");\n setApiKey(\"\");\n setBaseUrl(\"\");\n setClearBaseUrl(false);\n setAdvancedOpen(false);\n }}\n />\n\n {/* Free-form input so OpenRouter/Ollama custom model IDs can\n be typed — the registry's supportedModels is only suggestions. */}\n <div className=\"space-y-1.5\">\n <p className={fieldLabelClass(isPage)}>Model</p>\n <input\n type=\"text\"\n list={`model-suggestions-${selectedEngine}`}\n value={selectedModel}\n onChange={(e) => setSelectedModel(e.target.value)}\n placeholder={\n selectedEngineInfo?.defaultModel ?? \"e.g. model-id\"\n }\n spellCheck={false}\n autoComplete=\"off\"\n className={textInputClass(isPage)}\n style={isPage ? CONTROL_STYLE_PAGE : CONTROL_STYLE}\n />\n {modelOptions.length > 0 && (\n <datalist id={`model-suggestions-${selectedEngine}`}>\n {modelOptions.map((opt) => (\n <option\n key={opt.value}\n value={opt.value}\n label={opt.label}\n />\n ))}\n </datalist>\n )}\n </div>\n\n {isOpenAiEngine && (\n <div className=\"border-t border-border/70 pt-2\">\n <Button\n type=\"button\"\n onClick={() => setAdvancedOpen((v) => !v)}\n className=\"flex w-full cursor-pointer items-center justify-between gap-2 rounded px-0.5 py-1 text-left hover:text-foreground\"\n >\n <span className=\"inline-flex min-w-0 items-center gap-1.5 text-[11px] font-medium text-foreground\">\n {advancedOpen ? (\n <IconChevronDown size={12} />\n ) : (\n <IconChevronRight\n size={12}\n className=\"rtl:-scale-x-100\"\n />\n )}\n Advanced\n </span>\n <span className=\"truncate text-[10px] text-muted-foreground\">\n OpenAI-compatible endpoint\n </span>\n </Button>\n\n {advancedOpen && (\n <div className=\"mt-1.5 space-y-1.5\">\n <div className=\"flex items-center justify-between gap-2\">\n <p className=\"text-[12px] font-medium text-foreground\">\n Endpoint URL\n </p>\n <span className=\"text-[10px] text-muted-foreground\">\n {baseUrlConfigured ? \"Configured\" : \"Optional\"}\n </span>\n </div>\n <input\n type=\"url\"\n value={baseUrl}\n onChange={(e) => {\n setBaseUrl(e.target.value);\n if (e.target.value.trim()) setClearBaseUrl(false);\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") handleSave();\n }}\n placeholder={\n baseUrlConfigured\n ? \"Leave blank to keep current endpoint\"\n : \"https://gateway.example/v1\"\n }\n disabled={clearBaseUrl}\n spellCheck={false}\n autoComplete=\"off\"\n 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 disabled:opacity-50 placeholder:text-muted-foreground/50\"\n style={CONTROL_STYLE}\n />\n <p className=\"text-[10px] leading-relaxed text-muted-foreground\">\n Use for LiteLLM or another OpenAI-compatible chat\n gateway. Leave blank for OpenAI.\n </p>\n {baseUrlConfigured && (\n <label className=\"flex items-center gap-1.5 text-[10px] text-muted-foreground\">\n <Checkbox\n checked={clearBaseUrl}\n onChange={(checked) => {\n setClearBaseUrl(checked);\n if (checked) setBaseUrl(\"\");\n }}\n aria-label=\"Clear saved endpoint override\"\n className=\"shrink-0\"\n />\n Clear saved endpoint override\n </label>\n )}\n {envVar && envConfigured && endpointChanged && (\n <Button\n type=\"button\"\n intent=\"neutral\"\n emphasis=\"solid\"\n onClick={handleSave}\n disabled={saving}\n className=\"rounded bg-accent px-2.5 py-1 text-[10px] font-medium text-foreground hover:bg-accent/80 disabled:opacity-40\"\n >\n {saving ? (\n <IconLoader2 size={10} className=\"animate-spin\" />\n ) : saved ? (\n <IconCheck size={10} />\n ) : (\n \"Save endpoint\"\n )}\n </Button>\n )}\n </div>\n )}\n </div>\n )}\n\n {envVar && envConfigured ? (\n <div\n className={cn(\n \"flex items-center gap-1.5 text-green-500\",\n isPage ? \"text-xs\" : \"text-[10px]\",\n )}\n >\n <IconCheck size={isPage ? 14 : 10} />\n {envVar} configured\n </div>\n ) : envVar ? (\n <div className=\"flex gap-1.5\">\n <input\n type=\"password\"\n value={apiKey}\n onChange={(e) => setApiKey(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") handleSave();\n }}\n placeholder={PROVIDER_ENV_PLACEHOLDERS[envVar] ?? \"...\"}\n className={cn(textInputClass(isPage), \"flex-1\")}\n style={isPage ? CONTROL_STYLE_PAGE : undefined}\n />\n <Button\n intent=\"primary\"\n emphasis=\"solid\"\n onClick={handleSave}\n disabled={!providerSettingsChanged || saving}\n className={pillButtonClass(isPage, \"solid\")}\n >\n {saving ? (\n <IconLoader2\n size={isPage ? 14 : 10}\n className=\"animate-spin\"\n />\n ) : saved ? (\n <IconCheck size={isPage ? 14 : 10} />\n ) : (\n \"Save\"\n )}\n </Button>\n </div>\n ) : null}\n\n <div className=\"flex items-center gap-2\">\n <Button\n intent=\"neutral\"\n emphasis=\"outline\"\n onClick={handleTest}\n disabled={testing}\n className={pillButtonClass(isPage, \"outline\")}\n >\n {testing ? (\n <span className=\"flex items-center gap-1\">\n <IconLoader2\n size={isPage ? 14 : 10}\n className=\"animate-spin\"\n />\n Testing…\n </span>\n ) : (\n \"Test\"\n )}\n </Button>\n {PROVIDER_DOCS[selectedEngine] ? (\n <a\n href={PROVIDER_DOCS[selectedEngine]}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={cn(\n pillButtonClass(isPage, \"outline\"),\n \"no-underline\",\n )}\n >\n Get an API key\n <IconExternalLink size={isPage ? 14 : 10} />\n </a>\n ) : null}\n {engineChanged && (\n <Button\n intent=\"primary\"\n emphasis=\"solid\"\n onClick={handleApply}\n className={pillButtonClass(isPage, \"solid\")}\n >\n Apply\n </Button>\n )}\n {settingsStatus != null && (\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n intent=\"danger\"\n emphasis=\"outline\"\n onClick={handleDisconnect}\n className={cn(\n pillButtonClass(isPage, \"outline\"),\n \"ms-auto text-muted-foreground hover:bg-destructive/10 hover:text-destructive hover:border-destructive/40\",\n )}\n >\n Disconnect\n </Button>\n </TooltipTrigger>\n <TooltipContent>\n Clear the saved engine — the app will fall back to the\n default until you re-apply.\n </TooltipContent>\n </Tooltip>\n )}\n </div>\n {testResult && testResult.ok && (\n <p\n className={cn(\n \"flex items-center gap-1 text-green-500\",\n isPage ? \"text-xs\" : \"text-[10px]\",\n )}\n >\n <IconCheck size={isPage ? 14 : 10} />\n Test passed — {testResult.latencyMs}ms\n </p>\n )}\n {testResult && testResult.ok === false && (\n <p\n className={cn(\n \"text-destructive\",\n isPage ? \"text-xs\" : \"text-[10px]\",\n )}\n >\n Test failed: {testResult.error}\n </p>\n )}\n {disconnectError && (\n <p\n className={cn(\n \"text-destructive\",\n isPage ? \"text-xs\" : \"text-[10px]\",\n )}\n >\n Disconnect failed: {disconnectError}\n </p>\n )}\n {applyNote && (\n <p\n className={cn(\n \"text-muted-foreground\",\n isPage ? \"text-xs\" : \"text-[10px]\",\n )}\n >\n Changes take effect on next conversation\n </p>\n )}\n </div>\n </ManualSetupCard>\n )}\n </div>\n )}\n </SettingsSection>\n );\n}\n\n// ─── App Default Model Section ──────────────────────────────────────────────\n\ninterface AppModelDefaultEngine extends EngineInfo {\n configured: boolean;\n}\n\ninterface AppModelDefaultsResponse {\n appId: string;\n engine: string | null;\n model: string | null;\n scope: \"org\" | \"user\" | \"default\";\n source: \"org\" | \"user\" | \"default\";\n canUpdate: boolean;\n orgId?: string | null;\n orgName?: string | null;\n role?: string | null;\n engines: AppModelDefaultEngine[];\n}\n\nfunction friendlyAppName(appId: string): string {\n return appId\n .split(\"-\")\n .filter(Boolean)\n .map((part) => part[0]?.toUpperCase() + part.slice(1))\n .join(\" \");\n}\n\nfunction AppModelDefaultsSectionInner({\n open,\n onToggle,\n}: {\n open?: boolean;\n onToggle?: () => void;\n}) {\n const isPage = useSettingsSurface() === \"page\";\n const [settings, setSettings] = useState<AppModelDefaultsResponse | null>(\n null,\n );\n const [selectedEngine, setSelectedEngine] = useState(\"\");\n const [selectedModel, setSelectedModel] = useState(\"\");\n const [loading, setLoading] = useState(true);\n const [saving, setSaving] = useState(false);\n const [saved, setSaved] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const load = useCallback(() => {\n let cancelled = false;\n setLoading(true);\n fetch(agentNativePath(\"/_agent-native/agent-model-defaults\"))\n .then((r) => (r.ok ? r.json() : null))\n .then((data: AppModelDefaultsResponse | null) => {\n if (cancelled || !data) return;\n setSettings(data);\n const firstConfigured =\n data.engines.find((engine) => engine.configured) ?? data.engines[0];\n const nextEngine = data.engine ?? firstConfigured?.name ?? \"\";\n const nextEngineInfo =\n data.engines.find((engine) => engine.name === nextEngine) ??\n firstConfigured;\n setSelectedEngine(nextEngine);\n setSelectedModel(data.model ?? nextEngineInfo?.defaultModel ?? \"\");\n })\n .catch(() => {})\n .finally(() => {\n if (!cancelled) setLoading(false);\n });\n return () => {\n cancelled = true;\n };\n }, []);\n\n useEffect(() => load(), [load]);\n\n const selectedEngineInfo =\n settings?.engines.find((engine) => engine.name === selectedEngine) ?? null;\n const engineOptions: SettingsSelectOption[] = (settings?.engines ?? [])\n .filter(\n (engine) =>\n engine.name === selectedEngine ||\n (engine.name !== \"ai-sdk:anthropic\" && engine.name !== \"ai-sdk:ollama\"),\n )\n .map((engine) => ({\n value: engine.name,\n label:\n engine.name === \"builder\"\n ? \"Builder.io Gateway\"\n : engine.label || engine.name,\n description: engine.configured\n ? \"Configured for this workspace\"\n : engine.packageInstalled === false\n ? `Install ${engine.installPackage ?? \"the provider packages\"} to use this provider`\n : \"Credentials not detected yet\",\n }));\n const hasPendingChange =\n !!settings &&\n settings.canUpdate &&\n !!selectedEngine &&\n !!selectedModel.trim() &&\n (selectedEngine !== settings.engine ||\n selectedModel.trim() !== settings.model);\n const hasAppDefault = settings?.source !== \"default\";\n const scopeLabel =\n settings?.scope === \"org\"\n ? settings.orgName\n ? `${settings.orgName} organization`\n : \"organization\"\n : \"your account\";\n\n const notifyChanged = () => {\n window.dispatchEvent(new CustomEvent(\"agent-engine:configured-changed\"));\n };\n\n const save = async () => {\n if (!hasPendingChange) return;\n setSaving(true);\n setSaved(false);\n setError(null);\n try {\n const res = await fetch(\n agentNativePath(\"/_agent-native/agent-model-defaults\"),\n {\n method: \"PUT\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n engine: selectedEngine,\n model: selectedModel.trim(),\n }),\n },\n );\n const body = await res.json().catch(() => ({}));\n if (!res.ok)\n throw new Error(body?.error ?? `Save failed (${res.status})`);\n const next = body as AppModelDefaultsResponse;\n setSettings(next);\n setSelectedEngine(next.engine ?? selectedEngine);\n setSelectedModel(next.model ?? selectedModel.trim());\n setSaved(true);\n notifyChanged();\n setTimeout(() => setSaved(false), 2000);\n } catch (err) {\n setError(err instanceof Error ? err.message : \"Save failed\");\n } finally {\n setSaving(false);\n }\n };\n\n const reset = async () => {\n if (!settings?.canUpdate || !hasAppDefault) return;\n setSaving(true);\n setSaved(false);\n setError(null);\n try {\n const res = await fetch(\n agentNativePath(\"/_agent-native/agent-model-defaults\"),\n { method: \"DELETE\" },\n );\n const body = await res.json().catch(() => ({}));\n if (!res.ok)\n throw new Error(body?.error ?? `Reset failed (${res.status})`);\n const next = body as AppModelDefaultsResponse;\n setSettings(next);\n const fallback = next.engines.find((engine) => engine.configured);\n setSelectedEngine(next.engine ?? fallback?.name ?? selectedEngine);\n setSelectedModel(next.model ?? fallback?.defaultModel ?? selectedModel);\n notifyChanged();\n } catch (err) {\n setError(err instanceof Error ? err.message : \"Reset failed\");\n } finally {\n setSaving(false);\n }\n };\n\n return (\n <SettingsSection\n id={settingsSectionDomId(\"app-models\")}\n icon={<IconApps size={14} />}\n title=\"App Default Model\"\n subtitle=\"Choose the default model for this app/template when no one-off composer model is selected.\"\n connected={loading ? undefined : hasAppDefault}\n open={open}\n onToggle={onToggle}\n >\n {loading ? (\n <SettingsSkeleton lines={2} />\n ) : settings ? (\n <div className=\"space-y-2\">\n <div\n className={cn(\n \"rounded-md border border-border bg-accent/20\",\n isPage ? \"px-3.5 py-3\" : \"px-2.5 py-2\",\n )}\n >\n <div className=\"mb-2 flex items-center justify-between gap-2\">\n <div className=\"min-w-0\">\n <p\n className={cn(\n \"truncate font-medium text-foreground\",\n subTextClass(isPage),\n )}\n >\n {friendlyAppName(settings.appId) || \"This app\"}\n </p>\n <p\n className={cn(\n \"mt-0.5 text-muted-foreground\",\n noteTextClass(isPage),\n )}\n >\n {hasAppDefault\n ? `Applies to ${scopeLabel}.`\n : \"Using the global LLM default.\"}\n </p>\n </div>\n <span\n className={cn(\n \"shrink-0 rounded-full bg-background px-2 py-0.5 font-medium text-muted-foreground\",\n noteTextClass(isPage),\n )}\n >\n {settings.source}\n </span>\n </div>\n\n <div className=\"space-y-2\">\n <SettingsSelect\n label=\"Provider\"\n value={selectedEngine}\n options={engineOptions}\n onValueChange={(value) => {\n setSelectedEngine(value);\n const info = settings.engines.find(\n (engine) => engine.name === value,\n );\n setSelectedModel(info?.defaultModel ?? \"\");\n setError(null);\n }}\n />\n\n <AppDefaultModelField\n engine={selectedEngine}\n models={selectedEngineInfo?.supportedModels ?? []}\n value={selectedModel}\n defaultModel={selectedEngineInfo?.defaultModel}\n disabled={!settings.canUpdate || saving}\n onValueChange={(value) => {\n setSelectedModel(value);\n setError(null);\n }}\n onEnter={() => {\n if (hasPendingChange) void save();\n }}\n />\n\n <div className=\"flex items-center gap-1.5\">\n <Button\n type=\"button\"\n intent=\"primary\"\n emphasis=\"solid\"\n onClick={save}\n disabled={!hasPendingChange || saving}\n className={pillButtonClass(isPage, \"solid\")}\n >\n {saving ? (\n <IconLoader2\n size={isPage ? 14 : 10}\n className=\"animate-spin\"\n />\n ) : saved ? (\n <IconCheck size={isPage ? 14 : 10} />\n ) : (\n \"Save\"\n )}\n </Button>\n <Button\n type=\"button\"\n intent=\"neutral\"\n emphasis=\"outline\"\n onClick={reset}\n disabled={!settings.canUpdate || !hasAppDefault || saving}\n className={pillButtonClass(isPage, \"outline\")}\n >\n Reset\n </Button>\n </div>\n </div>\n\n {!settings.canUpdate && (\n <p\n className={cn(\n \"mt-2 text-muted-foreground\",\n noteTextClass(isPage),\n )}\n >\n Only organization owners and admins can change app model\n defaults.\n </p>\n )}\n {selectedEngineInfo?.packageInstalled === false ? (\n <p\n className={cn(\n \"mt-2 text-muted-foreground\",\n noteTextClass(isPage),\n )}\n >\n This app does not include the optional runtime packages for this\n provider.\n </p>\n ) : selectedEngineInfo && !selectedEngineInfo.configured ? (\n <p\n className={cn(\n \"mt-2 text-muted-foreground\",\n noteTextClass(isPage),\n )}\n >\n Credentials for this provider were not detected; runtime will\n fall back if the model cannot be used.\n </p>\n ) : null}\n {error && (\n <p className={cn(\"mt-2 text-destructive\", noteTextClass(isPage))}>\n {error}\n </p>\n )}\n </div>\n </div>\n ) : (\n <p className={cn(\"text-muted-foreground\", noteTextClass(isPage))}>\n App model defaults are unavailable.\n </p>\n )}\n </SettingsSection>\n );\n}\n\n// ─── Email Section ──────────────────────────────────────────────────────────\n\nfunction EmailSectionInner({\n open,\n onToggle,\n}: {\n open?: boolean;\n onToggle?: () => void;\n}) {\n const isPage = useSettingsSurface() === \"page\";\n const emailInputCls = cn(textInputClass(isPage), \"flex-1\");\n const emailBtnCls = pillButtonClass(isPage, \"solid\");\n const emailIconSize = isPage ? 14 : 10;\n const [envKeys, setEnvKeys] = useState<\n Array<{ key: string; configured: boolean }>\n >([]);\n const [resendKey, setResendKey] = useState(\"\");\n const [sendgridKey, setSendgridKey] = useState(\"\");\n const [fromAddr, setFromAddr] = useState(\"\");\n const [saving, setSaving] = useState(false);\n const [saved, setSaved] = useState(false);\n const [emailProvider, setEmailProvider] = useState<\"resend\" | \"sendgrid\">(\n \"resend\",\n );\n const [envLoaded, setEnvLoaded] = useState(false);\n\n useEffect(() => {\n fetch(agentNativePath(\"/_agent-native/env-status\"))\n .then((r) => (r.ok ? r.json() : []))\n .then(setEnvKeys)\n .catch(() => {})\n .finally(() => setEnvLoaded(true));\n }, [saved]);\n\n const resendConfigured =\n envKeys.find((k) => k.key === \"RESEND_API_KEY\")?.configured ?? false;\n const sendgridConfigured =\n envKeys.find((k) => k.key === \"SENDGRID_API_KEY\")?.configured ?? false;\n const fromConfigured =\n envKeys.find((k) => k.key === \"EMAIL_FROM\")?.configured ?? false;\n const anyConfigured = resendConfigured || sendgridConfigured;\n\n useEffect(() => {\n if (sendgridConfigured && !resendConfigured) {\n setEmailProvider(\"sendgrid\");\n }\n }, [resendConfigured, sendgridConfigured]);\n\n const save = async (vars: Array<{ key: string; value: string }>) => {\n setSaving(true);\n try {\n const res = await fetch(agentNativePath(\"/_agent-native/env-vars\"), {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ vars }),\n });\n if (res.ok) {\n setSaved(true);\n setResendKey(\"\");\n setSendgridKey(\"\");\n setFromAddr(\"\");\n setTimeout(() => setSaved(false), 2000);\n }\n } finally {\n setSaving(false);\n }\n };\n\n const saveResend = () => {\n const vars: Array<{ key: string; value: string }> = [];\n if (resendKey.trim())\n vars.push({ key: \"RESEND_API_KEY\", value: resendKey.trim() });\n if (fromAddr.trim())\n vars.push({ key: \"EMAIL_FROM\", value: fromAddr.trim() });\n if (vars.length) save(vars);\n };\n\n const saveSendgrid = () => {\n const vars: Array<{ key: string; value: string }> = [];\n if (sendgridKey.trim())\n vars.push({ key: \"SENDGRID_API_KEY\", value: sendgridKey.trim() });\n if (fromAddr.trim())\n vars.push({ key: \"EMAIL_FROM\", value: fromAddr.trim() });\n if (vars.length) save(vars);\n };\n\n return (\n <SettingsSection\n id={settingsSectionDomId(\"email\")}\n icon={<IconMail size={14} />}\n title=\"Email\"\n subtitle=\"Needed before deploy for password resets, team invitations, share notifications, and dashboard email reports. Local development can run without it.\"\n connected={!envLoaded ? undefined : anyConfigured}\n open={open}\n onToggle={onToggle}\n >\n {!envLoaded ? (\n <SettingsSkeleton lines={2} />\n ) : (\n <div className=\"space-y-2\">\n <SettingsSelect\n label=\"Provider\"\n value={emailProvider}\n options={[\n { value: \"resend\", label: \"Resend\" },\n { value: \"sendgrid\", label: \"SendGrid\" },\n ]}\n onValueChange={(value) =>\n setEmailProvider(value as \"resend\" | \"sendgrid\")\n }\n />\n\n {emailProvider === \"resend\" ? (\n <ManualSetupCard\n hint=\"Use Resend for transactional email.\"\n docsUrl=\"https://resend.com/api-keys\"\n docsLabel=\"Get a Resend key\"\n >\n {resendConfigured ? (\n <div\n className={cn(\n \"mb-1 flex items-center gap-1.5 text-green-500\",\n noteTextClass(isPage),\n )}\n >\n <IconCheck size={emailIconSize} />\n RESEND_API_KEY configured\n </div>\n ) : (\n <div className=\"mb-1 flex gap-1.5\">\n <input\n type=\"password\"\n value={resendKey}\n onChange={(e) => setResendKey(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") saveResend();\n }}\n placeholder=\"re_...\"\n className={emailInputCls}\n />\n <Button\n intent=\"primary\"\n emphasis=\"solid\"\n onClick={saveResend}\n disabled={!resendKey.trim() || saving}\n className={emailBtnCls}\n >\n {saving ? (\n <IconLoader2 size={10} className=\"animate-spin\" />\n ) : saved ? (\n <IconCheck size={10} />\n ) : (\n \"Save\"\n )}\n </Button>\n </div>\n )}\n {fromConfigured ? (\n <div\n className={cn(\n \"flex items-center gap-1.5 text-green-500\",\n noteTextClass(isPage),\n )}\n >\n <IconCheck size={emailIconSize} />\n EMAIL_FROM configured\n </div>\n ) : (\n <div className=\"flex gap-1.5\">\n <input\n type=\"text\"\n value={fromAddr}\n onChange={(e) => setFromAddr(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") saveResend();\n }}\n placeholder=\"From address - e.g. Acme <hi@acme.com>\"\n className={emailInputCls}\n />\n {!resendConfigured ? null : (\n <Button\n intent=\"primary\"\n emphasis=\"solid\"\n onClick={saveResend}\n disabled={!fromAddr.trim() || saving}\n className={emailBtnCls}\n >\n {saving ? (\n <IconLoader2 size={10} className=\"animate-spin\" />\n ) : saved ? (\n <IconCheck size={10} />\n ) : (\n \"Save\"\n )}\n </Button>\n )}\n </div>\n )}\n </ManualSetupCard>\n ) : (\n <ManualSetupCard\n hint=\"Use SendGrid for transactional email. SendGrid requires a verified from address.\"\n docsUrl=\"https://app.sendgrid.com/settings/api_keys\"\n docsLabel=\"Get a SendGrid key\"\n >\n {sendgridConfigured ? (\n <div\n className={cn(\n \"mb-1 flex items-center gap-1.5 text-green-500\",\n noteTextClass(isPage),\n )}\n >\n <IconCheck size={emailIconSize} />\n SENDGRID_API_KEY configured\n </div>\n ) : (\n <div className=\"mb-1 flex gap-1.5\">\n <input\n type=\"password\"\n value={sendgridKey}\n onChange={(e) => setSendgridKey(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") saveSendgrid();\n }}\n placeholder=\"SG....\"\n className={emailInputCls}\n />\n <Button\n intent=\"primary\"\n emphasis=\"solid\"\n onClick={saveSendgrid}\n disabled={!sendgridKey.trim() || saving}\n className={emailBtnCls}\n >\n {saving ? (\n <IconLoader2 size={10} className=\"animate-spin\" />\n ) : saved ? (\n <IconCheck size={10} />\n ) : (\n \"Save\"\n )}\n </Button>\n </div>\n )}\n {fromConfigured ? (\n <div\n className={cn(\n \"flex items-center gap-1.5 text-green-500\",\n noteTextClass(isPage),\n )}\n >\n <IconCheck size={emailIconSize} />\n EMAIL_FROM configured\n </div>\n ) : (\n <div className=\"flex gap-1.5\">\n <input\n type=\"text\"\n value={fromAddr}\n onChange={(e) => setFromAddr(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") saveSendgrid();\n }}\n placeholder=\"From address - e.g. Acme <hi@acme.com>\"\n className={emailInputCls}\n />\n {!sendgridConfigured ? null : (\n <Button\n intent=\"primary\"\n emphasis=\"solid\"\n onClick={saveSendgrid}\n disabled={!fromAddr.trim() || saving}\n className={emailBtnCls}\n >\n {saving ? (\n <IconLoader2 size={10} className=\"animate-spin\" />\n ) : saved ? (\n <IconCheck size={10} />\n ) : (\n \"Save\"\n )}\n </Button>\n )}\n </div>\n )}\n </ManualSetupCard>\n )}\n </div>\n )}\n </SettingsSection>\n );\n}\n\n// ─── Agent Limits Section ──────────────────────────────────────────────────\n\ninterface AgentLoopSettingsResponse {\n maxIterations: number;\n defaultMaxIterations: number;\n minMaxIterations: number;\n maxMaxIterations: number;\n scope: \"org\" | \"user\" | \"default\";\n source: \"org\" | \"user\" | \"env\" | \"default\";\n canUpdate: boolean;\n orgName?: string | null;\n role?: string | null;\n}\n\nfunction AgentLimitsSectionInner({\n open,\n onToggle,\n}: {\n open?: boolean;\n onToggle?: () => void;\n}) {\n const isPage = useSettingsSurface() === \"page\";\n const [settings, setSettings] = useState<AgentLoopSettingsResponse | null>(\n null,\n );\n const [value, setValue] = useState(\"\");\n const [loading, setLoading] = useState(true);\n const [saving, setSaving] = useState(false);\n const [saved, setSaved] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const load = useCallback(() => {\n let cancelled = false;\n setLoading(true);\n fetch(agentNativePath(\"/_agent-native/agent-loop-settings\"))\n .then((r) => (r.ok ? r.json() : null))\n .then((data: AgentLoopSettingsResponse | null) => {\n if (cancelled || !data) return;\n setSettings(data);\n setValue(String(data.maxIterations));\n })\n .catch(() => {})\n .finally(() => {\n if (!cancelled) setLoading(false);\n });\n return () => {\n cancelled = true;\n };\n }, []);\n\n useEffect(() => load(), [load]);\n\n useEffect(() => {\n const handler = (event: Event) => {\n const detail = (event as CustomEvent).detail as\n | AgentLoopSettingsResponse\n | undefined;\n if (!detail?.maxIterations) return;\n setSettings(detail);\n setValue(String(detail.maxIterations));\n };\n window.addEventListener(\"agent-loop-settings:changed\", handler);\n return () =>\n window.removeEventListener(\"agent-loop-settings:changed\", handler);\n }, []);\n\n const numericValue = Number(value);\n const hasPendingChange =\n !!settings &&\n settings.canUpdate &&\n Number.isInteger(numericValue) &&\n numericValue !== settings.maxIterations;\n const scopeLabel =\n settings?.scope === \"org\"\n ? settings.orgName\n ? `${settings.orgName} organization`\n : \"organization\"\n : \"your account\";\n\n const save = async () => {\n if (!settings?.canUpdate) return;\n setSaving(true);\n setSaved(false);\n setError(null);\n try {\n const res = await fetch(\n agentNativePath(\"/_agent-native/agent-loop-settings\"),\n {\n method: \"PUT\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ maxIterations: numericValue }),\n },\n );\n const body = await res.json().catch(() => ({}));\n if (!res.ok) {\n throw new Error(body?.error ?? `Save failed (${res.status})`);\n }\n setSettings(body as AgentLoopSettingsResponse);\n setValue(String((body as AgentLoopSettingsResponse).maxIterations));\n setSaved(true);\n window.dispatchEvent(\n new CustomEvent(\"agent-loop-settings:changed\", { detail: body }),\n );\n setTimeout(() => setSaved(false), 2000);\n } catch (err) {\n setError(err instanceof Error ? err.message : \"Save failed\");\n } finally {\n setSaving(false);\n }\n };\n\n const reset = async () => {\n if (!settings?.canUpdate) return;\n setSaving(true);\n setSaved(false);\n setError(null);\n try {\n const res = await fetch(\n agentNativePath(\"/_agent-native/agent-loop-settings\"),\n { method: \"DELETE\" },\n );\n const body = await res.json().catch(() => ({}));\n if (!res.ok) {\n throw new Error(body?.error ?? `Reset failed (${res.status})`);\n }\n setSettings(body as AgentLoopSettingsResponse);\n setValue(String((body as AgentLoopSettingsResponse).maxIterations));\n window.dispatchEvent(\n new CustomEvent(\"agent-loop-settings:changed\", { detail: body }),\n );\n } catch (err) {\n setError(err instanceof Error ? err.message : \"Reset failed\");\n } finally {\n setSaving(false);\n }\n };\n\n return (\n <SettingsSection\n id={settingsSectionDomId(\"limits\")}\n icon={<IconGauge size={14} />}\n title=\"Agent Limits\"\n subtitle=\"Control how long a single agent response can work before pausing.\"\n connected={\n loading\n ? undefined\n : settings\n ? settings.maxIterations !== settings.defaultMaxIterations\n : false\n }\n open={open}\n onToggle={onToggle}\n >\n {loading ? (\n <SettingsSkeleton lines={2} />\n ) : settings ? (\n <div className=\"space-y-2\">\n <div\n className={cn(\n \"rounded-md border border-border bg-accent/20\",\n isPage ? \"px-3.5 py-3\" : \"px-2.5 py-2\",\n )}\n >\n <div className=\"flex items-center justify-between gap-2\">\n <div>\n <p\n className={cn(\n \"font-medium text-foreground\",\n subTextClass(isPage),\n )}\n >\n Max iterations\n </p>\n <p\n className={cn(\n \"mt-0.5 text-muted-foreground\",\n noteTextClass(isPage),\n )}\n >\n Applies to {scopeLabel}. Default is{\" \"}\n {settings.defaultMaxIterations.toLocaleString()}.\n </p>\n </div>\n <span\n className={cn(\n \"rounded-full bg-background px-2 py-0.5 font-medium text-muted-foreground\",\n noteTextClass(isPage),\n )}\n >\n {settings.source}\n </span>\n </div>\n <div className=\"mt-2 flex items-center gap-1.5\">\n <input\n type=\"number\"\n min={settings.minMaxIterations}\n max={settings.maxMaxIterations}\n value={value}\n disabled={!settings.canUpdate || saving}\n onChange={(e) => {\n setValue(e.target.value);\n setError(null);\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" && hasPendingChange) void save();\n }}\n className={cn(\n textInputClass(isPage),\n \"min-w-0 flex-1 disabled:opacity-60\",\n )}\n style={isPage ? CONTROL_STYLE_PAGE : undefined}\n />\n <Button\n type=\"button\"\n intent=\"primary\"\n emphasis=\"solid\"\n onClick={save}\n disabled={!hasPendingChange || saving}\n className={pillButtonClass(isPage, \"solid\")}\n >\n {saving ? (\n <IconLoader2\n size={isPage ? 14 : 10}\n className=\"animate-spin\"\n />\n ) : saved ? (\n <IconCheck size={isPage ? 14 : 10} />\n ) : (\n \"Save\"\n )}\n </Button>\n <Button\n type=\"button\"\n intent=\"neutral\"\n emphasis=\"outline\"\n onClick={reset}\n disabled={\n !settings.canUpdate ||\n saving ||\n settings.maxIterations === settings.defaultMaxIterations\n }\n className={pillButtonClass(isPage, \"outline\")}\n >\n Reset\n </Button>\n </div>\n {!settings.canUpdate && (\n <p\n className={cn(\n \"mt-2 text-muted-foreground\",\n noteTextClass(isPage),\n )}\n >\n Only organization owners and admins can change this limit.\n </p>\n )}\n {error && (\n <p className={cn(\"mt-2 text-destructive\", noteTextClass(isPage))}>\n {error}\n </p>\n )}\n </div>\n </div>\n ) : (\n <p className={cn(\"text-muted-foreground\", noteTextClass(isPage))}>\n Agent limit settings are unavailable.\n </p>\n )}\n </SettingsSection>\n );\n}\n\n// ─── Main SettingsPanel ─────────────────────────────────────────────────────\n\nexport interface SettingsPanelProps {\n isDevMode: boolean;\n onToggleDevMode: () => void;\n showDevToggle: boolean;\n devAppUrl?: string;\n initialSection?: string | null;\n sectionRequestKey?: number;\n}\n\n// Agent capability modes. The internal values (\"production\"/\"development\") are\n// kept for back-compat with the AGENT_MODE wiring; only the visible labels\n// changed to \"App mode\" / \"Code mode\" so this control reads as the agent\n// capability it is — not the deployment environment (NODE_ENV).\nconst agentModeOptions: SettingsSelectOption[] = [\n {\n value: \"production\",\n label: \"App mode\",\n description:\n \"App tools only; code, bash, and files require Builder or a local clone.\",\n },\n {\n value: \"development\",\n label: \"Code mode\",\n description: \"Full access to code editing, bash, and files.\",\n },\n];\n\nfunction CapabilityStatusRow({\n label,\n value,\n active,\n}: {\n label: string;\n value: React.ReactNode;\n active: boolean;\n}) {\n return (\n <div className=\"flex items-center justify-between gap-2 text-[10px]\">\n <span className=\"flex items-center gap-1.5 text-muted-foreground\">\n <span\n className={`h-1.5 w-1.5 rounded-full ${active ? \"bg-green-500\" : \"bg-muted-foreground/30\"}`}\n aria-hidden=\"true\"\n />\n {label}\n </span>\n <span className=\"min-w-0 truncate text-end text-foreground\">{value}</span>\n </div>\n );\n}\n\nfunction CapabilityStatusStrip({\n isDevMode,\n builderConnected,\n builderLoading,\n builderBranchesAvailable,\n onOpenLlm,\n}: {\n isDevMode: boolean;\n builderConnected: boolean;\n builderLoading: boolean;\n builderBranchesAvailable: boolean;\n onOpenLlm: () => void;\n}) {\n const codeAvailable =\n isDevMode || (builderConnected && builderBranchesAvailable);\n const codeLabel = isDevMode\n ? \"Local tools\"\n : builderConnected && builderBranchesAvailable\n ? \"Builder branches\"\n : \"Desktop/local\";\n\n return (\n <div className=\"rounded-md border border-border bg-muted/20 px-2.5 py-2\">\n <div className=\"mb-1.5 text-[10px] font-medium text-muted-foreground\">\n Available now\n </div>\n <div className=\"space-y-1.5\">\n <CapabilityStatusRow label=\"App\" value=\"Chat + actions\" active />\n <CapabilityStatusRow\n label=\"Code\"\n value={codeLabel}\n active={codeAvailable}\n />\n <CapabilityStatusRow\n label=\"Builder\"\n active={builderConnected}\n value={\n builderLoading ? (\n \"Checking...\"\n ) : builderConnected ? (\n \"Connected\"\n ) : (\n <Button\n type=\"button\"\n intent=\"neutral\"\n emphasis=\"outline\"\n onClick={onOpenLlm}\n 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\"\n >\n Connect\n </Button>\n )\n }\n />\n </div>\n </div>\n );\n}\n\ninterface SettingsPanelContentProps extends SettingsPanelProps {\n sections?: readonly SettingsSectionId[];\n showCapabilityStrip?: boolean;\n className?: string;\n surface?: SettingsSurface;\n builderConnectionOwnedExternally?: boolean;\n}\n\nfunction SettingsPanelContent({\n isDevMode,\n onToggleDevMode,\n showDevToggle,\n devAppUrl,\n initialSection,\n sectionRequestKey,\n sections = ALL_SETTINGS_SECTIONS,\n showCapabilityStrip = true,\n className,\n surface = \"sidebar\",\n builderConnectionOwnedExternally = false,\n}: SettingsPanelContentProps) {\n const { status: builder, loading: builderLoading } = useBuilderStatus({\n enabled: !builderConnectionOwnedExternally,\n });\n const connected = builder?.configured ?? false;\n const connectUrl = builder?.cliAuthUrl ?? builder?.connectUrl;\n const orgName = builder?.orgName;\n const envManaged = !!builder?.envManaged;\n const credentialSource = builder?.credentialSource;\n const builderBranchesAvailable = !!builder?.builderEnabled;\n const builderFlow = useBuilderConnectFlow({\n enabled: !builderConnectionOwnedExternally,\n popupUrl: connectUrl,\n trackingSource: \"settings_panel_builder_card\",\n });\n\n const scrollSectionIntoView = useCallback((section: SettingsSectionId) => {\n window.requestAnimationFrame(() => {\n document.getElementById(settingsSectionDomId(section))?.scrollIntoView({\n block: \"start\",\n behavior: \"smooth\",\n });\n });\n }, []);\n const {\n focusSecretKey,\n isSectionVisible: shouldShowSection,\n openSection,\n toggleSection: toggle,\n openSettingsSection: openControllerSection,\n } = useSettingsPanelController({\n sections,\n initialSection,\n sectionRequestKey,\n onScrollToSection: scrollSectionIntoView,\n });\n const openSettingsSection = useCallback(\n (section: SettingsSectionId, scroll = false) =>\n openControllerSection(section, { scroll }),\n [openControllerSection],\n );\n\n const isPage = surface === \"page\";\n\n return (\n <SettingsSurfaceProvider surface={surface}>\n <div\n className={cn(\n isPage ? \"space-y-3\" : \"flex-1 min-h-0 overflow-y-auto p-3 space-y-2\",\n className,\n )}\n style={isPage ? undefined : { overflowY: \"auto\" }}\n >\n {/* Agent capability mode (App vs Code) + app link */}\n {(showDevToggle || devAppUrl) && (\n <div className=\"space-y-2 pb-2 border-b border-border mb-2\">\n {showDevToggle && (\n <SettingsSelect\n label=\"Agent mode\"\n labelAdornment={\n devAppUrl ? (\n <Tooltip>\n <TooltipTrigger asChild>\n <a\n href={devAppUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n aria-label=\"Open app in new tab\"\n className=\"flex items-center text-muted-foreground hover:text-foreground\"\n >\n <IconExternalLink size={14} />\n </a>\n </TooltipTrigger>\n <TooltipContent>Open app in new tab</TooltipContent>\n </Tooltip>\n ) : undefined\n }\n value={isDevMode ? \"development\" : \"production\"}\n options={agentModeOptions}\n onValueChange={(next) => {\n const nextIsDev = next === \"development\";\n if (nextIsDev !== isDevMode) onToggleDevMode();\n }}\n />\n )}\n </div>\n )}\n\n {showCapabilityStrip && (\n <CapabilityStatusStrip\n isDevMode={isDevMode}\n builderConnected={connected}\n builderLoading={builderLoading}\n builderBranchesAvailable={builderBranchesAvailable}\n onOpenLlm={() => openSettingsSection(\"llm\", true)}\n />\n )}\n\n {/* LLM */}\n {shouldShowSection(\"llm\") && (\n <LLMSectionInner\n builderFlow={builderFlow}\n builderLoading={builderLoading}\n connectUrl={connectUrl}\n connected={connected}\n orgName={orgName}\n envManaged={envManaged}\n credentialSource={credentialSource}\n open={openSection === \"llm\"}\n onToggle={() => toggle(\"llm\")}\n />\n )}\n\n {/* App default model */}\n {shouldShowSection(\"app-models\") && (\n <AppModelDefaultsSectionInner\n open={openSection === \"app-models\"}\n onToggle={() => toggle(\"app-models\")}\n />\n )}\n\n {/* Agent limits */}\n {shouldShowSection(\"limits\") && (\n <AgentLimitsSectionInner\n open={openSection === \"limits\"}\n onToggle={() => toggle(\"limits\")}\n />\n )}\n\n {/* Voice transcription */}\n {shouldShowSection(\"voice\") && (\n <SettingsSection\n id={settingsSectionDomId(\"voice\")}\n icon={<IconMicrophone size={14} />}\n title=\"Voice Transcription\"\n subtitle=\"How the composer microphone turns your voice into text.\"\n open={openSection === \"voice\"}\n onToggle={() => toggle(\"voice\")}\n >\n <VoiceTranscriptionSection />\n </SettingsSection>\n )}\n\n {/* Demo mode */}\n {shouldShowSection(\"demo-mode\") && (\n <SettingsSection\n id={settingsSectionDomId(\"demo-mode\")}\n icon={<IconEyeOff size={14} />}\n title=\"Demo mode\"\n subtitle=\"Replace displayed emails with realistic fake data in this browser and reshape supported charts for presentations. Backend, MCP, and agent results stay real and access-scoped.\"\n open={openSection === \"demo-mode\"}\n onToggle={() => toggle(\"demo-mode\")}\n >\n <DemoModeSection />\n </SettingsSection>\n )}\n\n {/* Automations */}\n {shouldShowSection(\"automations\") && (\n <SettingsSection\n id={settingsSectionDomId(\"automations\")}\n icon={<IconBolt size={14} />}\n title=\"Automations\"\n subtitle=\"Event-triggered and scheduled automations.\"\n open={openSection === \"automations\"}\n onToggle={() => toggle(\"automations\")}\n >\n <AutomationsSection />\n </SettingsSection>\n )}\n\n {/* API Keys & Connections */}\n {shouldShowSection(\"secrets\") && (\n <SettingsSection\n id={settingsSectionDomId(\"secrets\")}\n icon={<IconKey size={14} />}\n title=\"API Keys & Connections\"\n subtitle=\"Service credentials and automation keys.\"\n open={openSection === \"secrets\"}\n onToggle={() => toggle(\"secrets\")}\n >\n <SecretsSection focusKey={focusSecretKey} />\n </SettingsSection>\n )}\n\n {/* Hosting */}\n {shouldShowSection(\"hosting\") && (\n <SettingsSection\n id={settingsSectionDomId(\"hosting\")}\n icon={<IconCloud size={14} />}\n title=\"Hosting\"\n subtitle=\"Deploy your app to the cloud.\"\n connected={connected}\n open={openSection === \"hosting\"}\n onToggle={() => toggle(\"hosting\")}\n >\n <div className=\"space-y-2\">\n <UseBuilderCard\n builderFlow={builderFlow}\n connectUrl={connectUrl}\n connected={connected}\n orgName={orgName}\n envManaged={envManaged}\n credentialSource={credentialSource}\n trackingSource=\"hosting_settings\"\n trackingFlow=\"hosting\"\n />\n <ManualSetupCard\n hint=\"Deploy manually to Netlify, Vercel, Cloudflare, or any Nitro-supported target.\"\n docsUrl=\"https://www.builder.io/c/docs/agent-native-deployment?utm_source=agent-native&utm_medium=product&utm_campaign=onboarding&utm_content=deployment_settings\"\n dim={connected}\n />\n </div>\n </SettingsSection>\n )}\n\n {/* Database */}\n {shouldShowSection(\"database\") && (\n <SettingsSection\n id={settingsSectionDomId(\"database\")}\n icon={<IconDatabase size={14} />}\n title=\"Database\"\n subtitle=\"Connect a cloud database for persistent storage.\"\n connected={connected}\n open={openSection === \"database\"}\n onToggle={() => toggle(\"database\")}\n >\n <div className=\"space-y-2\">\n <UseBuilderCard\n builderFlow={builderFlow}\n connectUrl={connectUrl}\n connected={connected}\n orgName={orgName}\n envManaged={envManaged}\n credentialSource={credentialSource}\n trackingSource=\"database_settings\"\n trackingFlow=\"database\"\n />\n <ManualSetupCard\n hint=\"Set DATABASE_URL in your .env to connect Neon, Supabase, Turso, any Postgres/SQLite database, or local PGlite with pglite:./data/pglite.\"\n docsUrl=\"https://www.builder.io/c/docs/agent-native-database?utm_source=agent-native&utm_medium=product&utm_campaign=onboarding&utm_content=database_settings\"\n dim={connected}\n />\n </div>\n </SettingsSection>\n )}\n\n {/* File uploads */}\n {shouldShowSection(\"uploads\") && (\n <SettingsSection\n id={settingsSectionDomId(\"uploads\")}\n icon={<IconUpload size={14} />}\n title=\"File uploads\"\n subtitle=\"Where user-uploaded files (avatars, chat attachments) are stored.\"\n connected={connected}\n open={openSection === \"uploads\"}\n onToggle={() => toggle(\"uploads\")}\n >\n <div className=\"space-y-2\">\n <UseBuilderCard\n builderFlow={builderFlow}\n connectUrl={connectUrl}\n connected={connected}\n orgName={orgName}\n envManaged={envManaged}\n credentialSource={credentialSource}\n trackingSource=\"file_upload_settings\"\n trackingFlow=\"file_upload\"\n />\n <ManualSetupCard\n hint=\"Without a provider, files are stored as base64 in your database. Fine for dev, not recommended for production.\"\n docsUrl=\"https://www.builder.io/c/docs/agent-native-file-uploads?utm_source=agent-native&utm_medium=product&utm_campaign=onboarding&utm_content=file_upload_settings\"\n dim={connected}\n />\n </div>\n </SettingsSection>\n )}\n\n {/* Authentication */}\n {shouldShowSection(\"auth\") && (\n <SettingsSection\n id={settingsSectionDomId(\"auth\")}\n icon={<IconShield size={14} />}\n title=\"Authentication\"\n subtitle=\"Set up user authentication and access control.\"\n connected={connected}\n open={openSection === \"auth\"}\n onToggle={() => toggle(\"auth\")}\n >\n <div className=\"space-y-2\">\n <UseBuilderCard\n builderFlow={builderFlow}\n connectUrl={connectUrl}\n connected={connected}\n orgName={orgName}\n envManaged={envManaged}\n credentialSource={credentialSource}\n trackingSource=\"auth_settings\"\n trackingFlow=\"auth\"\n />\n <ManualSetupCard\n hint=\"Configure Better Auth with BETTER_AUTH_SECRET and optional Google/GitHub OAuth providers.\"\n docsUrl=\"https://www.builder.io/c/docs/agent-native-authentication?utm_source=agent-native&utm_medium=product&utm_campaign=onboarding&utm_content=authentication_settings\"\n dim={connected}\n />\n </div>\n </SettingsSection>\n )}\n\n {/* Email */}\n {shouldShowSection(\"email\") && (\n <EmailSectionInner\n open={openSection === \"email\"}\n onToggle={() => toggle(\"email\")}\n />\n )}\n\n {/* Browser Automation */}\n {shouldShowSection(\"browser\") && (\n <SettingsSection\n id={settingsSectionDomId(\"browser\")}\n icon={<IconBrowser size={14} />}\n title=\"Browser Automation\"\n subtitle=\"Let agents control a real browser for web tasks.\"\n connected={builderConnectionOwnedExternally ? undefined : connected}\n open={openSection === \"browser\"}\n onToggle={() => toggle(\"browser\")}\n >\n {!builderConnectionOwnedExternally ? (\n <UseBuilderCard\n builderFlow={builderFlow}\n connectUrl={connectUrl}\n connected={connected}\n orgName={orgName}\n envManaged={envManaged}\n credentialSource={credentialSource}\n trackingSource=\"browser_settings\"\n trackingFlow=\"browser_automation\"\n />\n ) : null}\n </SettingsSection>\n )}\n\n {builderBranchesAvailable && shouldShowSection(\"background\") && (\n <SettingsSection\n id={settingsSectionDomId(\"background\")}\n icon={<IconGitBranch size={14} />}\n title=\"Background Agent\"\n subtitle=\"Make code changes from production mode via Builder.\"\n connected={connected}\n open={openSection === \"background\"}\n onToggle={() => toggle(\"background\")}\n >\n <UseBuilderCard\n builderFlow={builderFlow}\n connectUrl={connectUrl}\n connected={connected}\n orgName={orgName}\n envManaged={envManaged}\n credentialSource={credentialSource}\n trackingSource=\"background_agent_settings\"\n trackingFlow=\"background_agent\"\n />\n </SettingsSection>\n )}\n\n {/* Integrations */}\n {shouldShowSection(\"integrations\") && (\n <SettingsSection\n id={settingsSectionDomId(\"integrations\")}\n icon={<IconPlugConnected size={14} />}\n title=\"Integrations\"\n subtitle=\"Connect messaging platforms and external services.\"\n open={openSection === \"integrations\"}\n onToggle={() => toggle(\"integrations\")}\n >\n <Suspense fallback={null}>\n <IntegrationsPanel />\n </Suspense>\n </SettingsSection>\n )}\n\n {/* Usage & spend */}\n {shouldShowSection(\"usage\") && (\n <SettingsSection\n id={settingsSectionDomId(\"usage\")}\n icon={<IconCoin size={14} />}\n title=\"Usage\"\n subtitle=\"Track token consumption and estimated cost — broken down by chat, automations, and background jobs.\"\n open={openSection === \"usage\"}\n onToggle={() => toggle(\"usage\")}\n >\n <UsageSection />\n </SettingsSection>\n )}\n\n {/* A2A Agents */}\n {shouldShowSection(\"a2a\") && (\n <SettingsSection\n id={settingsSectionDomId(\"a2a\")}\n icon={<IconTopologyRing2 size={14} />}\n title=\"Connected Agents (A2A)\"\n subtitle=\"Manage remote agents connected via the A2A protocol.\"\n open={openSection === \"a2a\"}\n onToggle={() => toggle(\"a2a\")}\n >\n <AgentsSection />\n </SettingsSection>\n )}\n </div>\n </SettingsSurfaceProvider>\n );\n}\n\nexport function SettingsPanel(props: SettingsPanelProps) {\n return <SettingsPanelContent {...props} />;\n}\n\nfunction McpConnectionsCard() {\n const t = useT();\n\n return (\n <section className=\"rounded-lg border border-border bg-muted/20 p-3\">\n <div className=\"flex items-start gap-2.5\">\n <IconPlugConnected\n size={16}\n className=\"mt-0.5 shrink-0 text-muted-foreground\"\n />\n <div className=\"min-w-0 flex-1\">\n <h2 className=\"text-sm font-semibold text-foreground\">\n {t(\"settings.mcpConnectionsTitle\")}\n </h2>\n <p className=\"mt-1 text-xs leading-5 text-muted-foreground\">\n {t(\"settings.mcpConnectionsDescription\")}\n </p>\n <Link\n to=\"/agent#connections\"\n className=\"mt-2 inline-flex items-center gap-1 text-xs font-medium text-foreground underline-offset-4 hover:underline\"\n >\n {t(\"settings.openMcpConnections\")}\n <IconExternalLink size={13} />\n </Link>\n </div>\n </div>\n </section>\n );\n}\n\nexport function ConnectionsSettingsContent({\n settingsPanelProps,\n}: {\n settingsPanelProps: SettingsPanelProps;\n}) {\n return (\n <div className=\"mx-auto w-full max-w-2xl space-y-4\">\n <BuilderConnectCard trackingSource=\"settings_connections\" />\n <McpConnectionsCard />\n <SettingsPanelContent\n {...settingsPanelProps}\n surface=\"page\"\n sections={CONNECTION_SETTINGS_SECTIONS}\n showCapabilityStrip={false}\n className=\"w-full\"\n builderConnectionOwnedExternally\n />\n </div>\n );\n}\n\nexport function AgentSettingsContent({\n className,\n}: { className?: string } = {}) {\n const { isDevMode, canToggle, setDevMode } = useDevMode();\n const settingsPanelProps = useMemo<SettingsPanelProps>(\n () => ({\n isDevMode,\n onToggleDevMode: () => {\n void setDevMode(!isDevMode);\n },\n showDevToggle: canToggle,\n }),\n [canToggle, isDevMode, setDevMode],\n );\n\n return (\n <SettingsPanelContent\n {...settingsPanelProps}\n surface=\"page\"\n sections={AGENT_SETTINGS_SECTIONS}\n showCapabilityStrip={false}\n className={cn(\"mx-auto w-full max-w-2xl\", className)}\n />\n );\n}\n\nexport function useAgentSettingsTabs(): SettingsTabItem[] {\n const { isDevMode, canToggle, setDevMode } = useDevMode();\n const baseProps = useMemo<SettingsPanelProps>(\n () => ({\n isDevMode,\n onToggleDevMode: () => {\n void setDevMode(!isDevMode);\n },\n showDevToggle: canToggle,\n }),\n [canToggle, isDevMode, setDevMode],\n );\n\n return useMemo<SettingsTabItem[]>(() => {\n const searchTabs = getAgentSettingsSearchTabs();\n const searchTab = (\n id: \"agent\" | \"connections\" | \"organization\" | \"workspace\",\n ) => {\n const tab = searchTabs.find((candidate) => candidate.id === id);\n if (!tab) throw new Error(`Missing agent workspace tab: ${id}`);\n return tab;\n };\n const agent = searchTab(\"agent\");\n const connections = searchTab(\"connections\");\n const organization = searchTab(\"organization\");\n const workspace = searchTab(\"workspace\");\n return [\n {\n ...agent,\n icon: IconHierarchy2,\n group: \"agent\",\n href: \"/agent#settings\",\n searchEntries: undefined,\n content: <Navigate to=\"/agent#settings\" replace />,\n },\n {\n ...connections,\n icon: IconPlugConnected,\n group: \"agent\",\n content: <ConnectionsSettingsContent settingsPanelProps={baseProps} />,\n },\n {\n ...organization,\n icon: IconUsersGroup,\n group: \"workspace\",\n content: (\n <div className=\"mx-auto w-full max-w-2xl\">\n <TeamPage showTitle={false} />\n </div>\n ),\n },\n {\n ...workspace,\n icon: IconCloud,\n group: \"workspace\",\n content: (\n <SettingsPanelContent\n {...baseProps}\n surface=\"page\"\n sections={WORKSPACE_SETTINGS_SECTIONS}\n showCapabilityStrip={false}\n className=\"mx-auto w-full max-w-2xl\"\n />\n ),\n },\n {\n id: \"extensions\",\n label: \"Extensions\",\n icon: IconTool,\n group: \"workspace\",\n keywords: \"extensions widgets mini apps tools sandboxed apps\",\n content: <ExtensionsSettingsContent />,\n },\n ];\n }, [baseProps]);\n}\n"]}
|