@agent-native/core 0.16.2 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/README.md +21 -5
  2. package/dist/agent/production-agent.d.ts.map +1 -1
  3. package/dist/agent/production-agent.js +24 -1
  4. package/dist/agent/production-agent.js.map +1 -1
  5. package/dist/cli/code-agent-executor.js +1 -1
  6. package/dist/cli/code-agent-executor.js.map +1 -1
  7. package/dist/cli/code.d.ts.map +1 -1
  8. package/dist/cli/code.js +29 -4
  9. package/dist/cli/code.js.map +1 -1
  10. package/dist/client/AgentPanel.d.ts.map +1 -1
  11. package/dist/client/AgentPanel.js +9 -1
  12. package/dist/client/AgentPanel.js.map +1 -1
  13. package/dist/client/AssistantChat.js +2 -2
  14. package/dist/client/AssistantChat.js.map +1 -1
  15. package/dist/client/ConnectBuilderCard.js +1 -1
  16. package/dist/client/ConnectBuilderCard.js.map +1 -1
  17. package/dist/client/components/CodeRequiredDialog.d.ts.map +1 -1
  18. package/dist/client/components/CodeRequiredDialog.js +3 -1
  19. package/dist/client/components/CodeRequiredDialog.js.map +1 -1
  20. package/dist/client/composer/AgentComposerFrame.d.ts +3 -1
  21. package/dist/client/composer/AgentComposerFrame.d.ts.map +1 -1
  22. package/dist/client/composer/AgentComposerFrame.js +3 -3
  23. package/dist/client/composer/AgentComposerFrame.js.map +1 -1
  24. package/dist/client/composer/ComposerPlusMenu.d.ts.map +1 -1
  25. package/dist/client/composer/ComposerPlusMenu.js +2 -7
  26. package/dist/client/composer/ComposerPlusMenu.js.map +1 -1
  27. package/dist/client/composer/PromptComposer.d.ts +4 -1
  28. package/dist/client/composer/PromptComposer.d.ts.map +1 -1
  29. package/dist/client/composer/PromptComposer.js +3 -3
  30. package/dist/client/composer/PromptComposer.js.map +1 -1
  31. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  32. package/dist/client/composer/TiptapComposer.js +13 -3
  33. package/dist/client/composer/TiptapComposer.js.map +1 -1
  34. package/dist/client/onboarding/OnboardingPanel.js +1 -1
  35. package/dist/client/onboarding/OnboardingPanel.js.map +1 -1
  36. package/dist/client/settings/BackgroundAgentSection.d.ts.map +1 -1
  37. package/dist/client/settings/BackgroundAgentSection.js +9 -2
  38. package/dist/client/settings/BackgroundAgentSection.js.map +1 -1
  39. package/dist/client/settings/BrowserSection.d.ts.map +1 -1
  40. package/dist/client/settings/BrowserSection.js +17 -3
  41. package/dist/client/settings/BrowserSection.js.map +1 -1
  42. package/dist/client/settings/DemoModeSection.d.ts +15 -0
  43. package/dist/client/settings/DemoModeSection.d.ts.map +1 -0
  44. package/dist/client/settings/DemoModeSection.js +72 -0
  45. package/dist/client/settings/DemoModeSection.js.map +1 -0
  46. package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
  47. package/dist/client/settings/SettingsPanel.js +8 -6
  48. package/dist/client/settings/SettingsPanel.js.map +1 -1
  49. package/dist/client/settings/useBuilderStatus.d.ts +15 -2
  50. package/dist/client/settings/useBuilderStatus.d.ts.map +1 -1
  51. package/dist/client/settings/useBuilderStatus.js +99 -11
  52. package/dist/client/settings/useBuilderStatus.js.map +1 -1
  53. package/dist/client/settings/useBuilderStatus.spec.js +12 -6
  54. package/dist/client/settings/useBuilderStatus.spec.js.map +1 -1
  55. package/dist/code-agents/background-controller.d.ts +39 -0
  56. package/dist/code-agents/background-controller.d.ts.map +1 -0
  57. package/dist/code-agents/background-controller.js +249 -0
  58. package/dist/code-agents/background-controller.js.map +1 -0
  59. package/dist/code-agents/background-run.d.ts +58 -0
  60. package/dist/code-agents/background-run.d.ts.map +1 -0
  61. package/dist/code-agents/background-run.js +58 -0
  62. package/dist/code-agents/background-run.js.map +1 -0
  63. package/dist/code-agents/index.d.ts +2 -0
  64. package/dist/code-agents/index.d.ts.map +1 -1
  65. package/dist/code-agents/index.js +2 -0
  66. package/dist/code-agents/index.js.map +1 -1
  67. package/dist/connections/index.d.ts +1 -0
  68. package/dist/connections/index.d.ts.map +1 -1
  69. package/dist/connections/index.js +1 -0
  70. package/dist/connections/index.js.map +1 -1
  71. package/dist/connections/reader.d.ts +248 -0
  72. package/dist/connections/reader.d.ts.map +1 -0
  73. package/dist/connections/reader.js +461 -0
  74. package/dist/connections/reader.js.map +1 -0
  75. package/dist/credentials/index.d.ts +11 -0
  76. package/dist/credentials/index.d.ts.map +1 -1
  77. package/dist/credentials/index.js +40 -15
  78. package/dist/credentials/index.js.map +1 -1
  79. package/dist/demo/actions/toggle-demo-mode.d.ts +3 -0
  80. package/dist/demo/actions/toggle-demo-mode.d.ts.map +1 -0
  81. package/dist/demo/actions/toggle-demo-mode.js +21 -0
  82. package/dist/demo/actions/toggle-demo-mode.js.map +1 -0
  83. package/dist/demo/config.d.ts +9 -0
  84. package/dist/demo/config.d.ts.map +1 -0
  85. package/dist/demo/config.js +58 -0
  86. package/dist/demo/config.js.map +1 -0
  87. package/dist/demo/redact.d.ts +17 -0
  88. package/dist/demo/redact.d.ts.map +1 -0
  89. package/dist/demo/redact.js +0 -0
  90. package/dist/demo/redact.js.map +1 -0
  91. package/dist/index.d.ts +2 -2
  92. package/dist/index.d.ts.map +1 -1
  93. package/dist/index.js +2 -2
  94. package/dist/index.js.map +1 -1
  95. package/dist/server/action-discovery.d.ts.map +1 -1
  96. package/dist/server/action-discovery.js +1 -0
  97. package/dist/server/action-discovery.js.map +1 -1
  98. package/dist/server/action-routes.d.ts.map +1 -1
  99. package/dist/server/action-routes.js +13 -3
  100. package/dist/server/action-routes.js.map +1 -1
  101. package/dist/server/agent-chat-plugin.d.ts +18 -0
  102. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  103. package/dist/server/agent-chat-plugin.js +57 -9
  104. package/dist/server/agent-chat-plugin.js.map +1 -1
  105. package/dist/server/agent-teams.d.ts +66 -1
  106. package/dist/server/agent-teams.d.ts.map +1 -1
  107. package/dist/server/agent-teams.js +433 -16
  108. package/dist/server/agent-teams.js.map +1 -1
  109. package/dist/server/builder-browser.d.ts +11 -0
  110. package/dist/server/builder-browser.d.ts.map +1 -1
  111. package/dist/server/builder-browser.js +45 -0
  112. package/dist/server/builder-browser.js.map +1 -1
  113. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  114. package/dist/server/core-routes-plugin.js +25 -2
  115. package/dist/server/core-routes-plugin.js.map +1 -1
  116. package/dist/templates/workspace-root/AGENTS.md +5 -5
  117. package/dist/templates/workspace-root/README.md +1 -1
  118. package/dist/workspace-connections/credentials.d.ts +64 -0
  119. package/dist/workspace-connections/credentials.d.ts.map +1 -0
  120. package/dist/workspace-connections/credentials.js +378 -0
  121. package/dist/workspace-connections/credentials.js.map +1 -0
  122. package/dist/workspace-connections/index.d.ts +2 -1
  123. package/dist/workspace-connections/index.d.ts.map +1 -1
  124. package/dist/workspace-connections/index.js +2 -1
  125. package/dist/workspace-connections/index.js.map +1 -1
  126. package/dist/workspace-connections/store.d.ts +16 -0
  127. package/dist/workspace-connections/store.d.ts.map +1 -1
  128. package/dist/workspace-connections/store.js +57 -1
  129. package/dist/workspace-connections/store.js.map +1 -1
  130. package/docs/content/agent-teams.md +22 -5
  131. package/docs/content/cloneable-saas.md +2 -2
  132. package/docs/content/code-agents-ui.md +103 -3
  133. package/docs/content/creating-templates.md +16 -0
  134. package/docs/content/getting-started.md +40 -14
  135. package/docs/content/migration-workbench.md +25 -2
  136. package/docs/content/multi-app-workspace.md +1 -1
  137. package/docs/content/template-analytics.md +17 -1
  138. package/docs/content/template-brain.md +57 -28
  139. package/docs/content/template-dispatch.md +9 -2
  140. package/docs/content/workspace-connections.md +63 -14
  141. package/docs/content/workspace-management.md +9 -2
  142. package/docs/content/workspace.md +12 -5
  143. package/package.json +1 -1
  144. package/src/templates/workspace-root/AGENTS.md +5 -5
  145. package/src/templates/workspace-root/README.md +1 -1
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
2
2
  import { agentNativePath } from "../api-path.js";
3
3
  import { Suspense, lazy, useState, useEffect, useCallback, useRef, } from "react";
4
4
  import * as SelectPrimitive from "@radix-ui/react-select";
5
- import { IconChevronDown, IconCheck, IconExternalLink, IconBrain, IconBrowser, IconGitBranch, IconCloud, IconDatabase, IconShield, IconPlugConnected, IconTopologyRing2, IconLoader2, IconUpload, IconCoin, IconMail, IconKey, IconMicrophone, IconBolt, IconGauge, IconUserCircle, IconApps, } from "@tabler/icons-react";
5
+ import { IconChevronDown, IconCheck, IconExternalLink, IconBrain, IconBrowser, IconGitBranch, IconCloud, IconDatabase, IconShield, IconPlugConnected, IconTopologyRing2, IconLoader2, IconUpload, IconCoin, IconMail, IconKey, IconMicrophone, IconEyeOff, IconBolt, IconGauge, IconUserCircle, IconApps, } from "@tabler/icons-react";
6
6
  import { SettingsSection } from "./SettingsSection.js";
7
7
  import { useBuilderConnectFlow, useBuilderStatus, } from "./useBuilderStatus.js";
8
8
  import { BuilderBMark } from "../builder-mark.js";
@@ -10,6 +10,7 @@ import { AgentsSection } from "./AgentsSection.js";
10
10
  import { UsageSection } from "./UsageSection.js";
11
11
  import { SecretsSection } from "./SecretsSection.js";
12
12
  import { VoiceTranscriptionSection } from "./VoiceTranscriptionSection.js";
13
+ import { DemoModeSection } from "./DemoModeSection.js";
13
14
  import { AutomationsSection } from "./AutomationsSection.js";
14
15
  import { PROVIDER_ENV_PLACEHOLDERS } from "../../agent/engine/provider-env-vars.js";
15
16
  import { Tooltip, TooltipContent, TooltipTrigger, } from "../components/ui/tooltip.js";
@@ -128,14 +129,14 @@ function DisconnectBuilderButton() {
128
129
  return (_jsxs(_Fragment, { children: [_jsx("button", { type: "button", onClick: handleDisconnectClick, disabled: phase === "busy", className: "inline-flex items-center gap-1 rounded border border-border px-2 py-0.5 text-[10px] text-muted-foreground hover:text-foreground hover:bg-accent/40 disabled:opacity-60 disabled:cursor-wait", "aria-busy": phase === "busy", children: phase === "busy" ? (_jsxs(_Fragment, { children: [_jsx(IconLoader2, { size: 10, className: "animate-spin" }), "Disconnecting\u2026"] })) : ("Disconnect") }), err && _jsx("span", { className: "text-[10px] text-destructive", children: err })] }));
129
130
  }
130
131
  // ─── "Connect Builder.io" card (shared across all sections) ─────────────────
131
- function UseBuilderCard({ builderFlow, connectUrl, connected, orgName, envManaged, credentialSource, label = "Connect Builder.io", subtitle = "Free credits to start — no API key needed.", dim, }) {
132
+ function UseBuilderCard({ builderFlow, connectUrl, connected, orgName, envManaged, credentialSource, trackingSource = "settings_panel_builder_card", trackingFlow = "connect_llm", label = "Connect Builder.io", subtitle = "Free credits to start — no API key needed.", dim, }) {
132
133
  const effectiveConnected = connected || builderFlow.configured;
133
134
  const effectiveOrgName = builderFlow.orgName ?? orgName;
134
135
  const bgClass = dim ? "" : "bg-accent/30";
135
136
  if (effectiveConnected) {
136
137
  return (_jsxs("div", { className: `rounded-md border border-border px-2.5 py-2 ${bgClass}`, children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("div", { className: "text-[11px] font-medium text-foreground", children: "Builder.io" }), _jsxs("span", { className: "flex items-center gap-1 text-[10px] text-green-500", children: [_jsx(IconCheck, { size: 10 }), "Connected"] })] }), effectiveOrgName && (_jsx("p", { className: "text-[10px] text-muted-foreground mt-0.5", children: effectiveOrgName })), envManaged ? (_jsx("p", { className: "text-[10px] text-muted-foreground mt-1", children: credentialSource === "env"
137
138
  ? "Deployment fallback is available. Connect your own account to override it."
138
- : "Using your connected Builder account. Deployment fallback is still available." })) : null, connectUrl || credentialSource !== "env" ? (_jsxs("div", { className: "flex items-center gap-2 mt-2.5", children: [connectUrl && (_jsxs("button", { type: "button", onClick: builderFlow.start, disabled: builderFlow.connecting, className: "inline-flex items-center gap-1 rounded border border-border px-2 py-0.5 text-[10px] no-underline text-muted-foreground hover:text-foreground hover:bg-accent/40 disabled:opacity-60", children: [builderFlow.connecting
139
+ : "Using your connected Builder account. Deployment fallback is still available." })) : null, connectUrl || credentialSource !== "env" ? (_jsxs("div", { className: "flex items-center gap-2 mt-2.5", children: [connectUrl && (_jsxs("button", { type: "button", onClick: () => builderFlow.start({ trackingSource, trackingFlow }), disabled: builderFlow.connecting, className: "inline-flex items-center gap-1 rounded border border-border px-2 py-0.5 text-[10px] no-underline text-muted-foreground hover:text-foreground hover:bg-accent/40 disabled:opacity-60", children: [builderFlow.connecting
139
140
  ? "Connecting..."
140
141
  : credentialSource === "env"
141
142
  ? "Connect account"
@@ -143,7 +144,7 @@ function UseBuilderCard({ builderFlow, connectUrl, connected, orgName, envManage
143
144
  }
144
145
  if (!connectUrl)
145
146
  return null;
146
- return (_jsx("button", { type: "button", onClick: builderFlow.start, disabled: builderFlow.connecting, className: `block w-full rounded-md border border-border px-3 py-3 text-left 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`, children: _jsxs("div", { className: "flex items-start gap-2.5", children: [_jsx("div", { className: "flex h-7 w-7 shrink-0 items-center justify-center rounded-md bg-foreground text-background", children: _jsx(BuilderBMark, { className: "h-3.5 w-3.5" }) }), _jsxs("div", { className: "flex-1 min-w-0", children: [_jsxs("div", { className: "flex items-center gap-1.5 flex-wrap", children: [_jsx("span", { className: "text-[12px] font-semibold text-foreground", children: builderFlow.connecting ? "Connecting Builder.io..." : label }), builderFlow.connecting && (_jsx(IconLoader2, { size: 12, className: "shrink-0 animate-spin text-muted-foreground" }))] }), _jsx("p", { className: "text-[10.5px] text-muted-foreground mt-0.5 leading-snug", children: subtitle }), builderFlow.error && (_jsx("p", { className: "mt-1 text-[10px] text-destructive", children: builderFlow.error }))] }), _jsx(IconExternalLink, { size: 12, className: "shrink-0 text-muted-foreground mt-0.5" })] }) }));
147
+ return (_jsx("button", { type: "button", onClick: () => builderFlow.start({ trackingSource, trackingFlow }), disabled: builderFlow.connecting, className: `block w-full rounded-md border border-border px-3 py-3 text-left 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`, children: _jsxs("div", { className: "flex items-start gap-2.5", children: [_jsx("div", { className: "flex h-7 w-7 shrink-0 items-center justify-center rounded-md bg-foreground text-background", children: _jsx(BuilderBMark, { className: "h-3.5 w-3.5" }) }), _jsxs("div", { className: "flex-1 min-w-0", children: [_jsxs("div", { className: "flex items-center gap-1.5 flex-wrap", children: [_jsx("span", { className: "text-[12px] font-semibold text-foreground", children: builderFlow.connecting ? "Connecting Builder.io..." : label }), builderFlow.connecting && (_jsx(IconLoader2, { size: 12, className: "shrink-0 animate-spin text-muted-foreground" }))] }), _jsx("p", { className: "text-[10.5px] text-muted-foreground mt-0.5 leading-snug", children: subtitle }), builderFlow.error && (_jsx("p", { className: "mt-1 text-[10px] text-destructive", children: builderFlow.error }))] }), _jsx(IconExternalLink, { size: 12, className: "shrink-0 text-muted-foreground mt-0.5" })] }) }));
147
148
  }
148
149
  // ─── Manual setup card ──────────────────────────────────────────────────────
149
150
  function ManualSetupCard({ hint, docsUrl, docsLabel = "Read the docs", children, dim, sourceBadge, }) {
@@ -425,7 +426,7 @@ function LLMSectionInner({ builderFlow, builderLoading, connectUrl, connected, o
425
426
  }
426
427
  catch { }
427
428
  };
428
- return (_jsx(SettingsSection, { icon: _jsx(IconBrain, { size: 14 }), title: "LLM", subtitle: "Connect any major LLM \u2014 Claude, GPT, Gemini, and more.", required: true, connected: initialLoading ? undefined : anyKeyConfigured, open: open, onToggle: onToggle, children: initialLoading ? (_jsx(SettingsSkeleton, { lines: 3 })) : (_jsxs("div", { className: "space-y-2", children: [_jsx(UseBuilderCard, { builderFlow: builderFlow, connectUrl: connectUrl, connected: connected, orgName: orgName, envManaged: envManaged, credentialSource: credentialSource, label: "Connect Builder.io" }), !builderConnected && (_jsx(ManualSetupCard, { hint: "Choose your AI provider and model.", docsUrl: PROVIDER_DOCS[selectedEngine], sourceBadge: sourceBadge, docsLabel: "Get an API key", children: _jsxs("div", { className: "space-y-2 mb-1", children: [_jsx(SettingsSelect, { label: "Provider", value: selectedEngine, options: providerOptions, onValueChange: (val) => {
429
+ return (_jsx(SettingsSection, { icon: _jsx(IconBrain, { size: 14 }), title: "LLM", subtitle: "Connect any major LLM \u2014 Claude, GPT, Gemini, and more.", required: true, connected: initialLoading ? undefined : anyKeyConfigured, open: open, onToggle: onToggle, children: initialLoading ? (_jsx(SettingsSkeleton, { lines: 3 })) : (_jsxs("div", { className: "space-y-2", children: [_jsx(UseBuilderCard, { builderFlow: builderFlow, connectUrl: connectUrl, connected: connected, orgName: orgName, envManaged: envManaged, credentialSource: credentialSource, trackingSource: "llm_settings", trackingFlow: "connect_llm", label: "Connect Builder.io" }), !builderConnected && (_jsx(ManualSetupCard, { hint: "Choose your AI provider and model.", docsUrl: PROVIDER_DOCS[selectedEngine], sourceBadge: sourceBadge, docsLabel: "Get an API key", children: _jsxs("div", { className: "space-y-2 mb-1", children: [_jsx(SettingsSelect, { label: "Provider", value: selectedEngine, options: providerOptions, onValueChange: (val) => {
429
430
  setSelectedEngine(val);
430
431
  const info = engines.find((e) => e.name === val);
431
432
  setSelectedModel(info?.defaultModel ?? "");
@@ -777,6 +778,7 @@ const SETTINGS_SECTION_IDS = new Set([
777
778
  "app-models",
778
779
  "limits",
779
780
  "voice",
781
+ "demo-mode",
780
782
  "automations",
781
783
  "secrets",
782
784
  "hosting",
@@ -948,6 +950,6 @@ export function SettingsPanel({ isDevMode, onToggleDevMode, showDevToggle, devAp
948
950
  const nextIsDev = next === "development";
949
951
  if (nextIsDev !== isDevMode)
950
952
  onToggleDevMode();
951
- } })) })), _jsx(CapabilityStatusStrip, { isDevMode: isDevMode, builderConnected: connected, builderLoading: builderLoading, builderBranchesAvailable: builderBranchesAvailable, onOpenLlm: () => openSettingsSection("llm", true) }), _jsx(AccountSectionInner, { open: openSection === "account", onToggle: () => toggle("account") }), _jsx(LLMSectionInner, { builderFlow: builderFlow, builderLoading: builderLoading, connectUrl: connectUrl, connected: connected, orgName: orgName, envManaged: envManaged, credentialSource: credentialSource, open: openSection === "llm", onToggle: () => toggle("llm") }), _jsx(AppModelDefaultsSectionInner, { open: openSection === "app-models", onToggle: () => toggle("app-models") }), _jsx(AgentLimitsSectionInner, { open: openSection === "limits", onToggle: () => toggle("limits") }), _jsx(SettingsSection, { icon: _jsx(IconMicrophone, { size: 14 }), title: "Voice Transcription", subtitle: "How the composer microphone turns your voice into text.", open: openSection === "voice", onToggle: () => toggle("voice"), children: _jsx(VoiceTranscriptionSection, {}) }), _jsx(SettingsSection, { icon: _jsx(IconBolt, { size: 14 }), title: "Automations", subtitle: "Event-triggered and scheduled automations.", open: openSection === "automations", onToggle: () => toggle("automations"), children: _jsx(AutomationsSection, {}) }), _jsx(SettingsSection, { id: settingsSectionDomId("secrets"), icon: _jsx(IconKey, { size: 14 }), title: "API Keys & Connections", subtitle: "Service credentials and automation keys.", open: openSection === "secrets", onToggle: () => toggle("secrets"), children: _jsx(SecretsSection, { focusKey: focusSecretKey }) }), _jsx(SettingsSection, { icon: _jsx(IconCloud, { size: 14 }), title: "Hosting", subtitle: "Deploy your app to the cloud.", connected: connected, open: openSection === "hosting", onToggle: () => toggle("hosting"), children: _jsxs("div", { className: "space-y-2", children: [_jsx(UseBuilderCard, { builderFlow: builderFlow, connectUrl: connectUrl, connected: connected, orgName: orgName, envManaged: envManaged, credentialSource: credentialSource }), _jsx(ManualSetupCard, { hint: "Deploy manually to Netlify, Vercel, Cloudflare, or any Nitro-supported target.", docsUrl: "https://www.builder.io/c/docs/agent-native-deployment", dim: connected })] }) }), _jsx(SettingsSection, { icon: _jsx(IconDatabase, { size: 14 }), title: "Database", subtitle: "Connect a cloud database for persistent storage.", connected: connected, open: openSection === "database", onToggle: () => toggle("database"), children: _jsxs("div", { className: "space-y-2", children: [_jsx(UseBuilderCard, { builderFlow: builderFlow, connectUrl: connectUrl, connected: connected, orgName: orgName, envManaged: envManaged, credentialSource: credentialSource }), _jsx(ManualSetupCard, { hint: "Set DATABASE_URL in your .env to connect Neon, Supabase, Turso, or any Postgres/SQLite database.", docsUrl: "https://www.builder.io/c/docs/agent-native-database", dim: connected })] }) }), _jsx(SettingsSection, { icon: _jsx(IconUpload, { size: 14 }), title: "File uploads", subtitle: "Where user-uploaded files (avatars, chat attachments) are stored.", connected: connected, open: openSection === "uploads", onToggle: () => toggle("uploads"), children: _jsxs("div", { className: "space-y-2", children: [_jsx(UseBuilderCard, { builderFlow: builderFlow, connectUrl: connectUrl, connected: connected, orgName: orgName, envManaged: envManaged, credentialSource: credentialSource }), _jsx(ManualSetupCard, { hint: "Without a provider, files are stored as base64 in your database. Fine for dev, not recommended for production.", docsUrl: "https://www.builder.io/c/docs/agent-native-file-uploads", dim: connected })] }) }), _jsx(SettingsSection, { icon: _jsx(IconShield, { size: 14 }), title: "Authentication", subtitle: "Set up user authentication and access control.", connected: connected, open: openSection === "auth", onToggle: () => toggle("auth"), children: _jsxs("div", { className: "space-y-2", children: [_jsx(UseBuilderCard, { builderFlow: builderFlow, connectUrl: connectUrl, connected: connected, orgName: orgName, envManaged: envManaged, credentialSource: credentialSource }), _jsx(ManualSetupCard, { hint: "Configure Better Auth with BETTER_AUTH_SECRET and optional Google/GitHub OAuth providers.", docsUrl: "https://www.builder.io/c/docs/agent-native-authentication", dim: connected })] }) }), _jsx(EmailSectionInner, { open: openSection === "email", onToggle: () => toggle("email") }), _jsx(SettingsSection, { icon: _jsx(IconBrowser, { size: 14 }), title: "Browser Automation", subtitle: "Let agents control a real browser for web tasks.", connected: connected, open: openSection === "browser", onToggle: () => toggle("browser"), children: _jsx(UseBuilderCard, { builderFlow: builderFlow, connectUrl: connectUrl, connected: connected, orgName: orgName, envManaged: envManaged, credentialSource: credentialSource }) }), builderBranchesAvailable && (_jsx(SettingsSection, { icon: _jsx(IconGitBranch, { size: 14 }), title: "Background Agent", subtitle: "Make code changes from production mode via Builder.", connected: connected, open: openSection === "background", onToggle: () => toggle("background"), children: _jsx(UseBuilderCard, { builderFlow: builderFlow, connectUrl: connectUrl, connected: connected, orgName: orgName, envManaged: envManaged, credentialSource: credentialSource }) })), _jsx(SettingsSection, { icon: _jsx(IconPlugConnected, { size: 14 }), title: "Integrations", subtitle: "Connect messaging platforms and external services.", open: openSection === "integrations", onToggle: () => toggle("integrations"), children: _jsx(Suspense, { fallback: null, children: _jsx(IntegrationsPanel, {}) }) }), _jsx(SettingsSection, { icon: _jsx(IconCoin, { size: 14 }), title: "Usage", subtitle: "Track token consumption and estimated cost \u2014 broken down by chat, automations, and background jobs.", open: openSection === "usage", onToggle: () => toggle("usage"), children: _jsx(UsageSection, {}) }), _jsx(SettingsSection, { icon: _jsx(IconTopologyRing2, { size: 14 }), title: "Connected Agents (A2A)", subtitle: "Manage remote agents connected via the A2A protocol.", open: openSection === "a2a", onToggle: () => toggle("a2a"), children: _jsx(AgentsSection, {}) })] }));
953
+ } })) })), _jsx(CapabilityStatusStrip, { isDevMode: isDevMode, builderConnected: connected, builderLoading: builderLoading, builderBranchesAvailable: builderBranchesAvailable, onOpenLlm: () => openSettingsSection("llm", true) }), _jsx(AccountSectionInner, { open: openSection === "account", onToggle: () => toggle("account") }), _jsx(LLMSectionInner, { builderFlow: builderFlow, builderLoading: builderLoading, connectUrl: connectUrl, connected: connected, orgName: orgName, envManaged: envManaged, credentialSource: credentialSource, open: openSection === "llm", onToggle: () => toggle("llm") }), _jsx(AppModelDefaultsSectionInner, { open: openSection === "app-models", onToggle: () => toggle("app-models") }), _jsx(AgentLimitsSectionInner, { open: openSection === "limits", onToggle: () => toggle("limits") }), _jsx(SettingsSection, { icon: _jsx(IconMicrophone, { size: 14 }), title: "Voice Transcription", subtitle: "How the composer microphone turns your voice into text.", open: openSection === "voice", onToggle: () => toggle("voice"), children: _jsx(VoiceTranscriptionSection, {}) }), _jsx(SettingsSection, { icon: _jsx(IconEyeOff, { size: 14 }), title: "Demo mode", subtitle: "Replace names, emails, and numbers with realistic fake data everywhere \u2014 in the UI and what the agent sees. IDs and structure are preserved so the app keeps working.", open: openSection === "demo-mode", onToggle: () => toggle("demo-mode"), children: _jsx(DemoModeSection, {}) }), _jsx(SettingsSection, { icon: _jsx(IconBolt, { size: 14 }), title: "Automations", subtitle: "Event-triggered and scheduled automations.", open: openSection === "automations", onToggle: () => toggle("automations"), children: _jsx(AutomationsSection, {}) }), _jsx(SettingsSection, { id: settingsSectionDomId("secrets"), icon: _jsx(IconKey, { size: 14 }), title: "API Keys & Connections", subtitle: "Service credentials and automation keys.", open: openSection === "secrets", onToggle: () => toggle("secrets"), children: _jsx(SecretsSection, { focusKey: focusSecretKey }) }), _jsx(SettingsSection, { icon: _jsx(IconCloud, { size: 14 }), title: "Hosting", subtitle: "Deploy your app to the cloud.", connected: connected, open: openSection === "hosting", onToggle: () => toggle("hosting"), children: _jsxs("div", { className: "space-y-2", children: [_jsx(UseBuilderCard, { builderFlow: builderFlow, connectUrl: connectUrl, connected: connected, orgName: orgName, envManaged: envManaged, credentialSource: credentialSource, trackingSource: "hosting_settings", trackingFlow: "hosting" }), _jsx(ManualSetupCard, { hint: "Deploy manually to Netlify, Vercel, Cloudflare, or any Nitro-supported target.", docsUrl: "https://www.builder.io/c/docs/agent-native-deployment", dim: connected })] }) }), _jsx(SettingsSection, { icon: _jsx(IconDatabase, { size: 14 }), title: "Database", subtitle: "Connect a cloud database for persistent storage.", connected: connected, open: openSection === "database", onToggle: () => toggle("database"), children: _jsxs("div", { className: "space-y-2", children: [_jsx(UseBuilderCard, { builderFlow: builderFlow, connectUrl: connectUrl, connected: connected, orgName: orgName, envManaged: envManaged, credentialSource: credentialSource, trackingSource: "database_settings", trackingFlow: "database" }), _jsx(ManualSetupCard, { hint: "Set DATABASE_URL in your .env to connect Neon, Supabase, Turso, or any Postgres/SQLite database.", docsUrl: "https://www.builder.io/c/docs/agent-native-database", dim: connected })] }) }), _jsx(SettingsSection, { icon: _jsx(IconUpload, { size: 14 }), title: "File uploads", subtitle: "Where user-uploaded files (avatars, chat attachments) are stored.", connected: connected, open: openSection === "uploads", onToggle: () => toggle("uploads"), children: _jsxs("div", { className: "space-y-2", children: [_jsx(UseBuilderCard, { builderFlow: builderFlow, connectUrl: connectUrl, connected: connected, orgName: orgName, envManaged: envManaged, credentialSource: credentialSource, trackingSource: "file_upload_settings", trackingFlow: "file_upload" }), _jsx(ManualSetupCard, { hint: "Without a provider, files are stored as base64 in your database. Fine for dev, not recommended for production.", docsUrl: "https://www.builder.io/c/docs/agent-native-file-uploads", dim: connected })] }) }), _jsx(SettingsSection, { icon: _jsx(IconShield, { size: 14 }), title: "Authentication", subtitle: "Set up user authentication and access control.", connected: connected, open: openSection === "auth", onToggle: () => toggle("auth"), children: _jsxs("div", { className: "space-y-2", children: [_jsx(UseBuilderCard, { builderFlow: builderFlow, connectUrl: connectUrl, connected: connected, orgName: orgName, envManaged: envManaged, credentialSource: credentialSource, trackingSource: "auth_settings", trackingFlow: "auth" }), _jsx(ManualSetupCard, { hint: "Configure Better Auth with BETTER_AUTH_SECRET and optional Google/GitHub OAuth providers.", docsUrl: "https://www.builder.io/c/docs/agent-native-authentication", dim: connected })] }) }), _jsx(EmailSectionInner, { open: openSection === "email", onToggle: () => toggle("email") }), _jsx(SettingsSection, { icon: _jsx(IconBrowser, { size: 14 }), title: "Browser Automation", subtitle: "Let agents control a real browser for web tasks.", connected: connected, open: openSection === "browser", onToggle: () => toggle("browser"), children: _jsx(UseBuilderCard, { builderFlow: builderFlow, connectUrl: connectUrl, connected: connected, orgName: orgName, envManaged: envManaged, credentialSource: credentialSource, trackingSource: "browser_settings", trackingFlow: "browser_automation" }) }), builderBranchesAvailable && (_jsx(SettingsSection, { icon: _jsx(IconGitBranch, { size: 14 }), title: "Background Agent", subtitle: "Make code changes from production mode via Builder.", connected: connected, open: openSection === "background", onToggle: () => toggle("background"), children: _jsx(UseBuilderCard, { builderFlow: builderFlow, connectUrl: connectUrl, connected: connected, orgName: orgName, envManaged: envManaged, credentialSource: credentialSource, trackingSource: "background_agent_settings", trackingFlow: "background_agent" }) })), _jsx(SettingsSection, { icon: _jsx(IconPlugConnected, { size: 14 }), title: "Integrations", subtitle: "Connect messaging platforms and external services.", open: openSection === "integrations", onToggle: () => toggle("integrations"), children: _jsx(Suspense, { fallback: null, children: _jsx(IntegrationsPanel, {}) }) }), _jsx(SettingsSection, { icon: _jsx(IconCoin, { size: 14 }), title: "Usage", subtitle: "Track token consumption and estimated cost \u2014 broken down by chat, automations, and background jobs.", open: openSection === "usage", onToggle: () => toggle("usage"), children: _jsx(UsageSection, {}) }), _jsx(SettingsSection, { icon: _jsx(IconTopologyRing2, { size: 14 }), title: "Connected Agents (A2A)", subtitle: "Manage remote agents connected via the A2A protocol.", open: openSection === "a2a", onToggle: () => toggle("a2a"), children: _jsx(AgentsSection, {}) })] }));
952
954
  }
953
955
  //# sourceMappingURL=SettingsPanel.js.map