@actuate-media/cms-admin 0.33.0 → 0.35.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 (51) hide show
  1. package/dist/__tests__/views/ai-settings.render.test.d.ts +2 -0
  2. package/dist/__tests__/views/ai-settings.render.test.d.ts.map +1 -0
  3. package/dist/__tests__/views/ai-settings.render.test.js +229 -0
  4. package/dist/__tests__/views/ai-settings.render.test.js.map +1 -0
  5. package/dist/actuate-admin.css +1 -1
  6. package/dist/views/Settings.d.ts.map +1 -1
  7. package/dist/views/Settings.js +2 -46
  8. package/dist/views/Settings.js.map +1 -1
  9. package/dist/views/settings/AISettingsTab.d.ts +6 -0
  10. package/dist/views/settings/AISettingsTab.d.ts.map +1 -0
  11. package/dist/views/settings/AISettingsTab.js +138 -0
  12. package/dist/views/settings/AISettingsTab.js.map +1 -0
  13. package/dist/views/settings/AiFeaturesCard.d.ts +17 -0
  14. package/dist/views/settings/AiFeaturesCard.d.ts.map +1 -0
  15. package/dist/views/settings/AiFeaturesCard.js +35 -0
  16. package/dist/views/settings/AiFeaturesCard.js.map +1 -0
  17. package/dist/views/settings/CapabilityBadges.d.ts +5 -0
  18. package/dist/views/settings/CapabilityBadges.d.ts.map +1 -0
  19. package/dist/views/settings/CapabilityBadges.js +26 -0
  20. package/dist/views/settings/CapabilityBadges.js.map +1 -0
  21. package/dist/views/settings/ModelSelector.d.ts +12 -0
  22. package/dist/views/settings/ModelSelector.d.ts.map +1 -0
  23. package/dist/views/settings/ModelSelector.js +29 -0
  24. package/dist/views/settings/ModelSelector.js.map +1 -0
  25. package/dist/views/settings/MonthlyUsageCard.d.ts +14 -0
  26. package/dist/views/settings/MonthlyUsageCard.d.ts.map +1 -0
  27. package/dist/views/settings/MonthlyUsageCard.js +30 -0
  28. package/dist/views/settings/MonthlyUsageCard.js.map +1 -0
  29. package/dist/views/settings/ProviderConnectionCard.d.ts +13 -0
  30. package/dist/views/settings/ProviderConnectionCard.d.ts.map +1 -0
  31. package/dist/views/settings/ProviderConnectionCard.js +48 -0
  32. package/dist/views/settings/ProviderConnectionCard.js.map +1 -0
  33. package/dist/views/settings/featureModel.d.ts +25 -0
  34. package/dist/views/settings/featureModel.d.ts.map +1 -0
  35. package/dist/views/settings/featureModel.js +45 -0
  36. package/dist/views/settings/featureModel.js.map +1 -0
  37. package/dist/views/settings/useAiSettings.d.ts +149 -0
  38. package/dist/views/settings/useAiSettings.d.ts.map +1 -0
  39. package/dist/views/settings/useAiSettings.js +297 -0
  40. package/dist/views/settings/useAiSettings.js.map +1 -0
  41. package/package.json +3 -3
  42. package/src/__tests__/views/ai-settings.render.test.tsx +286 -0
  43. package/src/views/Settings.tsx +2 -139
  44. package/src/views/settings/AISettingsTab.tsx +418 -0
  45. package/src/views/settings/AiFeaturesCard.tsx +154 -0
  46. package/src/views/settings/CapabilityBadges.tsx +66 -0
  47. package/src/views/settings/ModelSelector.tsx +115 -0
  48. package/src/views/settings/MonthlyUsageCard.tsx +118 -0
  49. package/src/views/settings/ProviderConnectionCard.tsx +245 -0
  50. package/src/views/settings/featureModel.ts +64 -0
  51. package/src/views/settings/useAiSettings.ts +476 -0
@@ -1 +1 @@
1
- {"version":3,"file":"Settings.js","sourceRoot":"","sources":["../../src/views/Settings.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Settings.js","sourceRoot":"","sources":["../../src/views/Settings.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export interface AISettingsTabProps {
2
+ /** Current user's role. Only ADMIN can persist changes. */
3
+ role?: string;
4
+ }
5
+ export declare function AISettingsTab({ role }: AISettingsTabProps): import("react/jsx-runtime").JSX.Element;
6
+ //# sourceMappingURL=AISettingsTab.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AISettingsTab.d.ts","sourceRoot":"","sources":["../../../src/views/settings/AISettingsTab.tsx"],"names":[],"mappings":"AA4BA,MAAM,WAAW,kBAAkB;IACjC,2DAA2D;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,aAAa,CAAC,EAAE,IAAI,EAAE,EAAE,kBAAkB,2CAqFzD"}
@@ -0,0 +1,138 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { AlertTriangle, Bot, Info, Loader2, Plus } from 'lucide-react';
4
+ import { useId, useMemo, useState } from 'react';
5
+ import { toast } from 'sonner';
6
+ import { AiFeaturesCard } from './AiFeaturesCard.js';
7
+ import { ModelSelector } from './ModelSelector.js';
8
+ import { MonthlyUsageCard } from './MonthlyUsageCard.js';
9
+ import { ProviderConnectionCard } from './ProviderConnectionCard.js';
10
+ import { SettingsSaveBar } from './components.js';
11
+ import { useAiSettings, } from './useAiSettings.js';
12
+ const INPUT_CLASS = 'w-full rounded-md border border-border bg-input-background px-3 py-2 text-base text-foreground focus-visible:ring-2 focus-visible:ring-ring focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-60';
13
+ const LABEL_CLASS = 'mb-1 flex items-center gap-2 text-sm font-medium text-foreground';
14
+ const PROVIDER_OPTIONS = [
15
+ { value: 'anthropic', label: 'Anthropic (Claude)' },
16
+ { value: 'openai', label: 'OpenAI (GPT)' },
17
+ { value: 'xai', label: 'xAI (Grok)' },
18
+ { value: 'custom', label: 'Custom (OpenAI-compatible)' },
19
+ ];
20
+ export function AISettingsTab({ role }) {
21
+ const canEdit = role === 'ADMIN';
22
+ const ai = useAiSettings(canEdit);
23
+ if (ai.loading) {
24
+ return (_jsxs("div", { className: "space-y-4", "aria-busy": "true", "aria-live": "polite", children: [_jsx("span", { className: "sr-only", children: "Loading AI settings\u2026" }), [0, 1, 2].map((i) => (_jsxs("div", { className: "border-border bg-card rounded-lg border p-4", children: [_jsx("div", { className: "bg-muted mb-4 h-4 w-40 animate-pulse rounded" }), _jsxs("div", { className: "space-y-3", children: [_jsx("div", { className: "bg-muted h-9 w-full animate-pulse rounded" }), _jsx("div", { className: "bg-muted h-9 w-full animate-pulse rounded" })] })] }, i)))] }));
25
+ }
26
+ return (_jsxs("div", { className: "space-y-4", children: [ai.loadError && (_jsxs("div", { role: "alert", className: "border-destructive/30 bg-destructive/10 text-destructive flex items-center gap-3 rounded-lg border p-3 text-sm", children: [_jsx(AlertTriangle, { size: 16, className: "shrink-0", "aria-hidden": "true" }), _jsx("span", { className: "flex-1", children: ai.loadError }), _jsx("button", { type: "button", onClick: ai.refetch, className: "border-destructive/40 rounded-md border px-3 py-1 transition-colors hover:opacity-80", children: "Retry" })] })), !canEdit && (_jsxs("div", { className: "border-border bg-muted text-muted-foreground flex items-center gap-2 rounded-lg border p-3 text-sm", children: [_jsx(Info, { size: 16, className: "shrink-0", "aria-hidden": "true" }), "You have read-only access to AI settings. Only administrators can make changes."] })), _jsx(AssistantCard, { ai: ai, canEdit: canEdit }), _jsx(ProviderConnectionsSection, { ai: ai, canEdit: canEdit }), _jsx(AiFeaturesCard, { features: ai.form.features, models: ai.models, defaultModelId: ai.form.defaultModelId, canEdit: canEdit, onToggle: ai.toggleFeature, onSetFeatureModel: ai.setFeatureModel }), _jsx(MonthlyUsageCard, { usage: ai.usage, monthlyTokenLimit: ai.form.monthlyTokenLimit, onChangeLimit: ai.setMonthlyTokenLimit, budgetError: ai.budgetError, canEdit: canEdit }), ai.saveState === 'error' && ai.saveError && (_jsxs("div", { role: "alert", className: "border-destructive/30 bg-destructive/10 text-destructive flex items-center gap-3 rounded-lg border p-3 text-sm", children: [_jsx(AlertTriangle, { size: 16, className: "shrink-0", "aria-hidden": "true" }), _jsx("span", { className: "flex-1", children: ai.saveError })] })), _jsx(SettingsSaveBar, { dirty: ai.dirty, canEdit: canEdit, hasErrors: Boolean(ai.budgetError), saveState: ai.saveState, onSave: ai.save, onReset: ai.reset })] }));
27
+ }
28
+ // ---------------------------------------------------------------------------
29
+ // AI Assistant — default provider + default model
30
+ // ---------------------------------------------------------------------------
31
+ function AssistantCard({ ai, canEdit }) {
32
+ const headingId = useId();
33
+ const providerSelectId = useId();
34
+ const [refreshing, setRefreshing] = useState(false);
35
+ const defaultProvider = ai.providers.find((p) => p.id === ai.form.defaultProviderId);
36
+ const modelsForDefault = useMemo(() => {
37
+ if (!defaultProvider)
38
+ return ai.models;
39
+ return ai.models.filter((m) => m.provider === defaultProvider.provider);
40
+ }, [ai.models, defaultProvider]);
41
+ async function handleRefresh() {
42
+ if (!defaultProvider)
43
+ return;
44
+ setRefreshing(true);
45
+ try {
46
+ const res = await ai.syncModels(defaultProvider.id);
47
+ if (!res.ok)
48
+ toast.error(res.error ?? 'Failed to refresh models.');
49
+ else if (res.fromFallback)
50
+ toast.warning(res.warning ?? 'Showing the curated model list (live listing unavailable).');
51
+ else
52
+ toast.success('Model list refreshed.');
53
+ }
54
+ finally {
55
+ setRefreshing(false);
56
+ }
57
+ }
58
+ return (_jsxs("section", { "aria-labelledby": headingId, className: "border-border bg-card rounded-lg border p-4", children: [_jsxs("div", { className: "mb-4 flex items-center gap-2", children: [_jsx("span", { className: "bg-brand/10 text-brand flex h-9 w-9 items-center justify-center rounded-lg", children: _jsx(Bot, { size: 18, "aria-hidden": "true" }) }), _jsxs("div", { children: [_jsx("h3", { id: headingId, className: "text-foreground text-base font-medium", children: "AI Assistant" }), _jsx("p", { className: "text-muted-foreground text-sm", children: "The default provider and model used across AI features." })] })] }), ai.providers.length === 0 ? (_jsx("div", { className: "border-border bg-muted/40 text-muted-foreground rounded-md border border-dashed p-4 text-sm", children: "No AI providers are connected yet. Add one below to enable AI features." })) : (_jsxs("div", { className: "space-y-4", children: [_jsxs("div", { children: [_jsx("label", { htmlFor: providerSelectId, className: LABEL_CLASS, children: "Default provider" }), _jsxs("select", { id: providerSelectId, value: ai.form.defaultProviderId, disabled: !canEdit, onChange: (e) => ai.setDefaultProvider(e.target.value), className: INPUT_CLASS, children: [_jsx("option", { value: "", children: "Select a provider\u2026" }), ai.providers.map((p) => (_jsx("option", { value: p.id, children: p.displayName }, p.id)))] })] }), _jsx(ModelSelector, { models: modelsForDefault, value: ai.form.defaultModelId, onChange: ai.setDefaultModel, onRefresh: handleRefresh, refreshing: refreshing, disabled: !canEdit || !defaultProvider, noModelsHint: defaultProvider
59
+ ? 'No models cached yet. Use “Refresh models” to load them.'
60
+ : 'Select a default provider to choose a model.' })] }))] }));
61
+ }
62
+ // ---------------------------------------------------------------------------
63
+ // Provider connections (manage multiple)
64
+ // ---------------------------------------------------------------------------
65
+ function ProviderConnectionsSection({ ai, canEdit }) {
66
+ const headingId = useId();
67
+ const [adding, setAdding] = useState(false);
68
+ return (_jsxs("section", { "aria-labelledby": headingId, className: "space-y-3", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("h3", { id: headingId, className: "text-foreground text-base font-medium", children: "Provider connections" }), canEdit && !adding && (_jsxs("button", { type: "button", onClick: () => setAdding(true), className: "border-border text-foreground hover:bg-accent inline-flex items-center gap-1.5 rounded-md border px-3 py-1.5 text-sm transition-colors", children: [_jsx(Plus, { size: 14, "aria-hidden": "true" }), "Add provider"] }))] }), adding && (_jsx(AddProviderForm, { ai: ai, onDone: () => setAdding(false), onCancel: () => setAdding(false) })), ai.providers.map((p) => (_jsx(ProviderConnectionCard, { provider: p, canEdit: canEdit, busy: ai.busyProviderId === p.id, onTest: async () => {
69
+ const res = await ai.testProvider(p.id);
70
+ if (!res.ok)
71
+ toast.error(res.error ?? res.message ?? 'Connection test failed.');
72
+ else
73
+ toast.success(res.message ?? 'Connection successful.');
74
+ }, onSyncModels: async () => {
75
+ const res = await ai.syncModels(p.id);
76
+ if (!res.ok)
77
+ toast.error(res.error ?? 'Failed to refresh models.');
78
+ else if (res.fromFallback)
79
+ toast.warning(res.warning ?? 'Showing the curated model list.');
80
+ else
81
+ toast.success('Model list refreshed.');
82
+ }, onUpdateKey: async (apiKey) => {
83
+ const res = await ai.updateProvider(p.id, { apiKey });
84
+ if (!res.ok)
85
+ toast.error(res.error ?? 'Failed to update key.');
86
+ else
87
+ toast.success('API key updated.');
88
+ }, onUpdateBaseUrl: async (baseUrl) => {
89
+ const res = await ai.updateProvider(p.id, { baseUrl });
90
+ if (!res.ok)
91
+ toast.error(res.error ?? 'Failed to update base URL.');
92
+ else
93
+ toast.success('Base URL updated.');
94
+ }, onDisconnect: async () => {
95
+ const res = await ai.deleteProvider(p.id);
96
+ if (!res.ok)
97
+ toast.error(res.error ?? 'Failed to disconnect.');
98
+ else
99
+ toast.success(`${p.displayName} disconnected.`);
100
+ } }, p.id))), ai.providers.length === 0 && !adding && (_jsx("p", { className: "text-muted-foreground text-sm", children: "No providers connected." }))] }));
101
+ }
102
+ function AddProviderForm({ ai, onDone, onCancel, }) {
103
+ const providerId = useId();
104
+ const nameId = useId();
105
+ const keyId = useId();
106
+ const baseUrlId = useId();
107
+ const [provider, setProvider] = useState('anthropic');
108
+ const [displayName, setDisplayName] = useState('');
109
+ const [apiKey, setApiKey] = useState('');
110
+ const [baseUrl, setBaseUrl] = useState('');
111
+ const [submitting, setSubmitting] = useState(false);
112
+ const needsBaseUrl = provider === 'custom';
113
+ const canSubmit = !submitting && (!needsBaseUrl || baseUrl.trim() !== '');
114
+ async function submit() {
115
+ setSubmitting(true);
116
+ try {
117
+ const input = {
118
+ provider,
119
+ displayName: displayName.trim() || undefined,
120
+ apiKey: apiKey.trim() || undefined,
121
+ baseUrl: needsBaseUrl ? baseUrl.trim() : undefined,
122
+ test: true,
123
+ };
124
+ const res = await ai.createProvider(input);
125
+ if (!res.ok) {
126
+ toast.error(res.error ?? 'Failed to add provider.');
127
+ return;
128
+ }
129
+ toast.success('Provider connected.');
130
+ onDone();
131
+ }
132
+ finally {
133
+ setSubmitting(false);
134
+ }
135
+ }
136
+ return (_jsxs("div", { className: "border-border bg-card rounded-lg border p-4", children: [_jsx("h4", { className: "text-foreground mb-3 text-base font-medium", children: "Add a provider" }), _jsxs("div", { className: "space-y-3", children: [_jsxs("div", { children: [_jsx("label", { htmlFor: providerId, className: LABEL_CLASS, children: "Provider" }), _jsx("select", { id: providerId, value: provider, onChange: (e) => setProvider(e.target.value), className: INPUT_CLASS, children: PROVIDER_OPTIONS.map((o) => (_jsx("option", { value: o.value, children: o.label }, o.value))) })] }), _jsxs("div", { children: [_jsx("label", { htmlFor: nameId, className: LABEL_CLASS, children: "Display name (optional)" }), _jsx("input", { id: nameId, type: "text", value: displayName, placeholder: "e.g. Production Anthropic", onChange: (e) => setDisplayName(e.target.value), className: INPUT_CLASS })] }), needsBaseUrl && (_jsxs("div", { children: [_jsx("label", { htmlFor: baseUrlId, className: LABEL_CLASS, children: "Base URL" }), _jsx("input", { id: baseUrlId, type: "url", value: baseUrl, placeholder: "https://api.example.com/v1", onChange: (e) => setBaseUrl(e.target.value), className: INPUT_CLASS })] })), _jsxs("div", { children: [_jsx("label", { htmlFor: keyId, className: LABEL_CLASS, children: "API key" }), _jsx("input", { id: keyId, type: "password", autoComplete: "off", spellCheck: false, value: apiKey, placeholder: "Paste API key (or leave blank if set via environment)", onChange: (e) => setApiKey(e.target.value), className: INPUT_CLASS })] }), _jsxs("div", { className: "flex items-center justify-end gap-3 pt-1", children: [_jsx("button", { type: "button", onClick: onCancel, disabled: submitting, className: "text-muted-foreground hover:text-foreground rounded-md px-3 py-2 text-sm transition-colors disabled:opacity-50", children: "Cancel" }), _jsxs("button", { type: "button", onClick: submit, disabled: !canSubmit, className: "bg-brand text-brand-foreground inline-flex items-center gap-2 rounded-md px-4 py-2 text-sm font-medium transition-opacity hover:opacity-90 disabled:cursor-not-allowed disabled:opacity-50", children: [submitting && _jsx(Loader2, { size: 14, className: "animate-spin", "aria-hidden": "true" }), "Connect & test"] })] })] })] }));
137
+ }
138
+ //# sourceMappingURL=AISettingsTab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AISettingsTab.js","sourceRoot":"","sources":["../../../src/views/settings/AISettingsTab.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { AiFeatureView, AiModelView } from './useAiSettings.js';
2
+ /**
3
+ * Global AI feature toggles with per-feature model routing. Each switch persists
4
+ * (via the Save bar) to the shared `ai.features.*` flags; the optional model
5
+ * picker overrides which model that feature uses (otherwise it inherits the
6
+ * default). Enforcement across modules lands in a later phase; here we surface
7
+ * and store the operator's intent.
8
+ */
9
+ export declare function AiFeaturesCard({ features, models, defaultModelId, canEdit, onToggle, onSetFeatureModel, }: {
10
+ features: AiFeatureView[];
11
+ models: AiModelView[];
12
+ defaultModelId: string;
13
+ canEdit: boolean;
14
+ onToggle: (key: string, enabled: boolean) => void;
15
+ onSetFeatureModel: (key: string, modelId: string) => void;
16
+ }): import("react/jsx-runtime").JSX.Element;
17
+ //# sourceMappingURL=AiFeaturesCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AiFeaturesCard.d.ts","sourceRoot":"","sources":["../../../src/views/settings/AiFeaturesCard.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAKpE;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,MAAM,EACN,cAAc,EACd,OAAO,EACP,QAAQ,EACR,iBAAiB,GAClB,EAAE;IACD,QAAQ,EAAE,aAAa,EAAE,CAAA;IACzB,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;IACjD,iBAAiB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CAC1D,2CA+BA"}
@@ -0,0 +1,35 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { AlertTriangle } from 'lucide-react';
4
+ import { useId } from 'react';
5
+ import { SettingsToggleRow } from './components.js';
6
+ import { capabilityLabel, effectiveFeatureModel, isModelCompatible } from './featureModel.js';
7
+ const SELECT_CLASS = 'w-full rounded-md border border-border bg-input-background px-3 py-2 text-sm text-foreground focus-visible:ring-2 focus-visible:ring-ring focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-60';
8
+ /**
9
+ * Global AI feature toggles with per-feature model routing. Each switch persists
10
+ * (via the Save bar) to the shared `ai.features.*` flags; the optional model
11
+ * picker overrides which model that feature uses (otherwise it inherits the
12
+ * default). Enforcement across modules lands in a later phase; here we surface
13
+ * and store the operator's intent.
14
+ */
15
+ export function AiFeaturesCard({ features, models, defaultModelId, canEdit, onToggle, onSetFeatureModel, }) {
16
+ const headingId = useId();
17
+ return (_jsxs("section", { "aria-labelledby": headingId, className: "border-border bg-card rounded-lg border p-4", children: [_jsx("h3", { id: headingId, className: "text-foreground mb-1 text-base font-medium", children: "AI Features" }), _jsx("p", { className: "text-muted-foreground mb-4 text-sm", children: "Turn individual AI-powered features on or off, and optionally route each to a specific model." }), features.length === 0 ? (_jsx("p", { className: "text-muted-foreground text-sm", children: "No AI features are available." })) : (_jsx("div", { className: "divide-border divide-y", children: features.map((f) => (_jsx(FeatureRow, { feature: f, models: models, defaultModelId: defaultModelId, canEdit: canEdit, onToggle: onToggle, onSetFeatureModel: onSetFeatureModel }, f.key))) }))] }));
18
+ }
19
+ function FeatureRow({ feature, models, defaultModelId, canEdit, onToggle, onSetFeatureModel, }) {
20
+ const selectId = useId();
21
+ const required = feature.requiredCapabilities ?? [];
22
+ const effective = effectiveFeatureModel(feature.modelId, defaultModelId, required, models);
23
+ const defaultModel = models.find((m) => m.id === defaultModelId || m.providerModelId === defaultModelId);
24
+ const hasModels = models.length > 0;
25
+ const defaultLabel = defaultModel
26
+ ? `Use default (${defaultModel.displayName})`
27
+ : 'Use default model';
28
+ return (_jsxs("div", { className: "py-4 first:pt-0 last:pb-0", children: [_jsx(SettingsToggleRow, { label: feature.label, description: feature.description, checked: feature.enabled, disabled: !canEdit, onChange: (v) => onToggle(feature.key, v) }), feature.enabled && (_jsxs("div", { className: "mt-3 pl-0", children: [_jsx("label", { htmlFor: selectId, className: "text-muted-foreground mb-1 block text-sm", children: "Model" }), hasModels ? (_jsxs("select", { id: selectId, value: feature.modelId ?? '', disabled: !canEdit, onChange: (e) => onSetFeatureModel(feature.key, e.target.value), className: SELECT_CLASS, children: [_jsx("option", { value: "", children: defaultLabel }), models.map((m) => {
29
+ const compatible = isModelCompatible(m, required);
30
+ return (_jsxs("option", { value: m.id, disabled: !compatible, children: [m.displayName, m.status === 'unavailable' ? ' (unavailable)' : '', m.status !== 'unavailable' && !compatible ? ' (incompatible)' : ''] }, m.id));
31
+ })] })) : (_jsx("p", { className: "text-muted-foreground text-sm", children: "Connect a provider and refresh models to route this feature." })), hasModels && !effective.isOverride && (_jsx("p", { className: "text-muted-foreground mt-1 text-sm", children: effective.model
32
+ ? `Uses the default model (${effective.model.displayName}).`
33
+ : 'No default model selected yet — set one in the AI Assistant card above.' })), hasModels && effective.missingCapabilities.length > 0 && (_jsxs("p", { className: "text-warning mt-1.5 flex items-start gap-1.5 text-sm", role: "status", children: [_jsx(AlertTriangle, { size: 14, className: "mt-0.5 shrink-0", "aria-hidden": "true" }), "This model can't do", ' ', effective.missingCapabilities.map(capabilityLabel).join(', '), ", which this feature needs. Pick a compatible model."] }))] }))] }));
34
+ }
35
+ //# sourceMappingURL=AiFeaturesCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AiFeaturesCard.js","sourceRoot":"","sources":["../../../src/views/settings/AiFeaturesCard.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare function CapabilityBadges({ capabilities, className, }: {
2
+ capabilities: Record<string, boolean>;
3
+ className?: string;
4
+ }): import("react/jsx-runtime").JSX.Element;
5
+ //# sourceMappingURL=CapabilityBadges.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CapabilityBadges.d.ts","sourceRoot":"","sources":["../../../src/views/settings/CapabilityBadges.tsx"],"names":[],"mappings":"AAqCA,wBAAgB,gBAAgB,CAAC,EAC/B,YAAY,EACZ,SAAS,GACV,EAAE;IACD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,2CAsBA"}
@@ -0,0 +1,26 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Binary, Braces, Brain, Eye, Image as ImageIcon, Type, Wrench, Zap, } from 'lucide-react';
4
+ // Ordered for stable rendering. Keys match `AIModelCapabilities`.
5
+ const CAPABILITY_META = {
6
+ text: { label: 'Text', icon: Type },
7
+ vision: { label: 'Vision', icon: Eye },
8
+ imageGeneration: { label: 'Image gen', icon: ImageIcon },
9
+ embeddings: { label: 'Embeddings', icon: Binary },
10
+ reasoning: { label: 'Reasoning', icon: Brain },
11
+ toolCalling: { label: 'Tools', icon: Wrench },
12
+ structuredOutput: { label: 'Structured', icon: Braces },
13
+ longContext: { label: 'Long context', icon: Zap },
14
+ };
15
+ export function CapabilityBadges({ capabilities, className, }) {
16
+ const active = Object.keys(CAPABILITY_META).filter((k) => capabilities?.[k]);
17
+ if (active.length === 0) {
18
+ return _jsx("span", { className: "text-muted-foreground text-sm", children: "No capability data" });
19
+ }
20
+ return (_jsx("ul", { className: `flex flex-wrap gap-1.5 ${className ?? ''}`, "aria-label": "Model capabilities", children: active.map((key) => {
21
+ const meta = CAPABILITY_META[key];
22
+ const Icon = meta.icon;
23
+ return (_jsxs("li", { className: "border-border bg-muted text-muted-foreground inline-flex items-center gap-1 rounded-md border px-1.5 py-0.5 text-xs", children: [_jsx(Icon, { size: 11, "aria-hidden": "true" }), meta.label] }, key));
24
+ }) }));
25
+ }
26
+ //# sourceMappingURL=CapabilityBadges.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CapabilityBadges.js","sourceRoot":"","sources":["../../../src/views/settings/CapabilityBadges.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EACL,MAAM,EACN,MAAM,EACN,KAAK,EACL,GAAG,EACH,KAAK,IAAI,SAAS,EAElB,IAAI,EACJ,MAAM,EACN,GAAG,GACJ,MAAM,cAAc,CAAA;AAarB,kEAAkE;AAClE,MAAM,eAAe,GAAmC;IACtD,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;IACnC,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE;IACtC,eAAe,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE;IACxD,UAAU,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE;IACjD,SAAS,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE;IAC9C,WAAW,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;IAC7C,gBAAgB,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE;IACvD,WAAW,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,EAAE;CAClD,CAAA;AAED,MAAM,UAAU,gBAAgB,CAAC,EAC/B,YAAY,EACZ,SAAS,GAIV;IACC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IAC5E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,eAAM,SAAS,EAAC,+BAA+B,mCAA0B,CAAA;IAClF,CAAC;IACD,OAAO,CACL,aAAI,SAAS,EAAE,0BAA0B,SAAS,IAAI,EAAE,EAAE,gBAAa,oBAAoB,YACxF,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAClB,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAE,CAAA;YAClC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;YACtB,OAAO,CACL,cAEE,SAAS,EAAC,qHAAqH,aAE/H,KAAC,IAAI,IAAC,IAAI,EAAE,EAAE,iBAAc,MAAM,GAAG,EACpC,IAAI,CAAC,KAAK,KAJN,GAAG,CAKL,CACN,CAAA;QACH,CAAC,CAAC,GACC,CACN,CAAA;AACH,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { AiModelView } from './useAiSettings.js';
2
+ export declare function ModelSelector({ models, value, onChange, onRefresh, refreshing, disabled, noModelsHint, }: {
3
+ models: AiModelView[];
4
+ value: string;
5
+ onChange: (id: string) => void;
6
+ onRefresh: () => void;
7
+ refreshing: boolean;
8
+ disabled: boolean;
9
+ /** Shown when there are no models to choose from. */
10
+ noModelsHint?: string;
11
+ }): import("react/jsx-runtime").JSX.Element;
12
+ //# sourceMappingURL=ModelSelector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModelSelector.d.ts","sourceRoot":"","sources":["../../../src/views/settings/ModelSelector.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAiBrD,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,KAAK,EACL,QAAQ,EACR,SAAS,EACT,UAAU,EACV,QAAQ,EACR,YAAY,GACb,EAAE;IACD,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,UAAU,EAAE,OAAO,CAAA;IACnB,QAAQ,EAAE,OAAO,CAAA;IACjB,qDAAqD;IACrD,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,2CA2EA"}
@@ -0,0 +1,29 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { AlertTriangle, Loader2, RefreshCw } from 'lucide-react';
4
+ import { useId } from 'react';
5
+ import { CapabilityBadges } from './CapabilityBadges.js';
6
+ const INPUT_CLASS = 'w-full rounded-md border border-border bg-input-background px-3 py-2 text-base text-foreground focus-visible:ring-2 focus-visible:ring-ring focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-60';
7
+ const LABEL_CLASS = 'mb-1 flex items-center gap-2 text-sm font-medium text-foreground';
8
+ function priceLabel(model) {
9
+ const p = model.pricing;
10
+ if (!p)
11
+ return null;
12
+ if (typeof p.inputPerMillion === 'number' && typeof p.outputPerMillion === 'number') {
13
+ return `$${p.inputPerMillion}/$${p.outputPerMillion} per 1M tokens`;
14
+ }
15
+ if (typeof p.inputPerMillion === 'number')
16
+ return `$${p.inputPerMillion} per 1M tokens`;
17
+ if (typeof p.image === 'number')
18
+ return `$${p.image} per image`;
19
+ return null;
20
+ }
21
+ export function ModelSelector({ models, value, onChange, onRefresh, refreshing, disabled, noModelsHint, }) {
22
+ const selectId = useId();
23
+ const selected = models.find((m) => m.id === value || m.providerModelId === value);
24
+ // The configured model is no longer in the catalog — keep the choice, warn.
25
+ const selectedUnavailable = Boolean(value) && !selected;
26
+ const price = selected ? priceLabel(selected) : null;
27
+ return (_jsxs("div", { children: [_jsx("label", { htmlFor: selectId, className: LABEL_CLASS, children: "Default model" }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsxs("select", { id: selectId, value: value, disabled: disabled, onChange: (e) => onChange(e.target.value), className: INPUT_CLASS, children: [_jsx("option", { value: "", children: "Select a model\u2026" }), selectedUnavailable && _jsxs("option", { value: value, children: [value, " (unavailable)"] }), models.map((m) => (_jsxs("option", { value: m.id, disabled: m.status === 'unavailable', children: [m.displayName, m.status === 'deprecated' ? ' (deprecated)' : '', m.status === 'unavailable' ? ' (unavailable)' : ''] }, m.id)))] }), _jsxs("button", { type: "button", onClick: onRefresh, disabled: disabled || refreshing, "aria-label": "Refresh models", className: "border-border text-foreground hover:bg-accent inline-flex shrink-0 items-center gap-2 rounded-md border px-3 py-2 text-sm transition-colors disabled:cursor-not-allowed disabled:opacity-60", children: [refreshing ? (_jsx(Loader2, { size: 16, className: "animate-spin", "aria-hidden": "true" })) : (_jsx(RefreshCw, { size: 16, "aria-hidden": "true" })), _jsx("span", { className: "sr-only sm:not-sr-only", children: "Refresh models" })] })] }), models.length === 0 && (_jsx("p", { className: "text-muted-foreground mt-1 text-sm", children: noModelsHint ?? 'No models available yet. Connect a provider and refresh.' })), selectedUnavailable && (_jsxs("p", { className: "text-warning mt-2 flex items-start gap-1.5 text-sm", role: "status", children: [_jsx(AlertTriangle, { size: 14, className: "mt-0.5 shrink-0", "aria-hidden": "true" }), "The selected model is no longer offered by the provider. Pick another or refresh the list."] })), selected && (_jsxs("div", { className: "mt-2 space-y-1.5", children: [_jsx(CapabilityBadges, { capabilities: selected.capabilities }), _jsxs("div", { className: "text-muted-foreground flex flex-wrap gap-x-4 gap-y-1 text-sm", children: [typeof selected.contextWindow === 'number' && (_jsxs("span", { children: [selected.contextWindow.toLocaleString(), " token context"] })), price && _jsx("span", { children: price }), selected.status === 'deprecated' && (_jsx("span", { className: "text-warning", children: "Deprecated by provider" }))] })] }))] }));
28
+ }
29
+ //# sourceMappingURL=ModelSelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModelSelector.js","sourceRoot":"","sources":["../../../src/views/settings/ModelSelector.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { AiUsageView } from './useAiSettings.js';
2
+ /**
3
+ * Monthly token usage meter + budget limit input. Usage is REAL (aggregated
4
+ * from audit-log token totals) — it shows 0 until AI features have run, never a
5
+ * fabricated number.
6
+ */
7
+ export declare function MonthlyUsageCard({ usage, monthlyTokenLimit, onChangeLimit, budgetError, canEdit, }: {
8
+ usage: AiUsageView | null;
9
+ monthlyTokenLimit: string;
10
+ onChangeLimit: (value: string) => void;
11
+ budgetError: string | null;
12
+ canEdit: boolean;
13
+ }): import("react/jsx-runtime").JSX.Element;
14
+ //# sourceMappingURL=MonthlyUsageCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonthlyUsageCard.d.ts","sourceRoot":"","sources":["../../../src/views/settings/MonthlyUsageCard.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAYrD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,OAAO,GACR,EAAE;IACD,KAAK,EAAE,WAAW,GAAG,IAAI,CAAA;IACzB,iBAAiB,EAAE,MAAM,CAAA;IACzB,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,OAAO,EAAE,OAAO,CAAA;CACjB,2CAqFA"}
@@ -0,0 +1,30 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useId } from 'react';
4
+ const INPUT_CLASS = 'w-full rounded-md border border-border bg-input-background px-3 py-2 text-base text-foreground focus-visible:ring-2 focus-visible:ring-ring focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-60';
5
+ const LABEL_CLASS = 'mb-1 flex items-center gap-2 text-sm font-medium text-foreground';
6
+ function formatTokens(n) {
7
+ if (n >= 1_000_000)
8
+ return `${(n / 1_000_000).toFixed(n % 1_000_000 === 0 ? 0 : 1)}M`;
9
+ if (n >= 1_000)
10
+ return `${(n / 1_000).toFixed(n % 1_000 === 0 ? 0 : 1)}K`;
11
+ return String(n);
12
+ }
13
+ /**
14
+ * Monthly token usage meter + budget limit input. Usage is REAL (aggregated
15
+ * from audit-log token totals) — it shows 0 until AI features have run, never a
16
+ * fabricated number.
17
+ */
18
+ export function MonthlyUsageCard({ usage, monthlyTokenLimit, onChangeLimit, budgetError, canEdit, }) {
19
+ const headingId = useId();
20
+ const limitId = useId();
21
+ const used = usage?.totalTokens ?? 0;
22
+ const limit = monthlyTokenLimit === '' ? undefined : Number(monthlyTokenLimit);
23
+ const pct = limit && limit > 0 ? Math.min(100, Math.round((used / limit) * 100)) : null;
24
+ const over = pct !== null && used > (limit ?? 0);
25
+ const periodLabel = usage?.periodStart
26
+ ? new Date(usage.periodStart).toLocaleDateString(undefined, { month: 'long', year: 'numeric' })
27
+ : 'This month';
28
+ return (_jsxs("section", { "aria-labelledby": headingId, className: "border-border bg-card rounded-lg border p-4", children: [_jsx("h3", { id: headingId, className: "text-foreground mb-1 text-base font-medium", children: "Monthly Usage" }), _jsxs("p", { className: "text-muted-foreground mb-4 text-sm", children: ["Token usage for ", periodLabel, ". Aggregated from completed AI runs."] }), _jsxs("div", { className: "space-y-4", children: [_jsxs("div", { children: [_jsxs("div", { className: "mb-1 flex items-center justify-between text-sm", children: [_jsxs("span", { className: "text-foreground font-medium", children: [formatTokens(used), " tokens used"] }), limit && limit > 0 && (_jsxs("span", { className: "text-muted-foreground", children: ["of ", formatTokens(limit)] }))] }), pct !== null ? (_jsx("div", { className: "bg-muted h-2 w-full overflow-hidden rounded-full", role: "progressbar", "aria-valuenow": pct, "aria-valuemin": 0, "aria-valuemax": 100, "aria-valuetext": `${pct}% of monthly token budget used`, children: _jsx("div", { className: `h-full rounded-full transition-all ${over ? 'bg-destructive' : 'bg-brand'}`, style: { width: `${pct}%` } }) })) : (_jsx("p", { className: "text-muted-foreground text-sm", children: "No monthly limit set. Usage is tracked but not capped." })), over && (_jsx("p", { className: "text-destructive mt-1 text-sm", role: "status", children: "Usage has exceeded the monthly limit." }))] }), _jsxs("div", { children: [_jsx("label", { htmlFor: limitId, className: LABEL_CLASS, children: "Monthly token limit" }), _jsx("input", { id: limitId, type: "text", inputMode: "numeric", value: monthlyTokenLimit, disabled: !canEdit, placeholder: "No limit", "aria-invalid": Boolean(budgetError), "aria-describedby": budgetError ? `${limitId}-error` : undefined, onChange: (e) => onChangeLimit(e.target.value), className: INPUT_CLASS }), budgetError ? (_jsx("p", { id: `${limitId}-error`, className: "text-destructive mt-1 text-sm", children: budgetError })) : (_jsx("p", { className: "text-muted-foreground mt-1 text-sm", children: "Leave blank for no limit. Enforcement and alerts arrive with usage metering." }))] })] })] }));
29
+ }
30
+ //# sourceMappingURL=MonthlyUsageCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonthlyUsageCard.js","sourceRoot":"","sources":["../../../src/views/settings/MonthlyUsageCard.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { AiProviderView } from './useAiSettings.js';
2
+ export interface ProviderConnectionCardProps {
3
+ provider: AiProviderView;
4
+ canEdit: boolean;
5
+ busy: boolean;
6
+ onTest: () => void;
7
+ onSyncModels: () => void;
8
+ onUpdateKey: (apiKey: string | null) => Promise<void>;
9
+ onUpdateBaseUrl: (baseUrl: string) => Promise<void>;
10
+ onDisconnect: () => void;
11
+ }
12
+ export declare function ProviderConnectionCard({ provider, canEdit, busy, onTest, onSyncModels, onUpdateKey, onUpdateBaseUrl, onDisconnect, }: ProviderConnectionCardProps): import("react/jsx-runtime").JSX.Element;
13
+ //# sourceMappingURL=ProviderConnectionCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProviderConnectionCard.d.ts","sourceRoot":"","sources":["../../../src/views/settings/ProviderConnectionCard.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAsB,cAAc,EAAE,MAAM,oBAAoB,CAAA;AA4C5E,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,cAAc,CAAA;IACxB,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,YAAY,EAAE,MAAM,IAAI,CAAA;IACxB,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACrD,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACnD,YAAY,EAAE,MAAM,IAAI,CAAA;CACzB;AAED,wBAAgB,sBAAsB,CAAC,EACrC,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,MAAM,EACN,YAAY,EACZ,WAAW,EACX,eAAe,EACf,YAAY,GACb,EAAE,2BAA2B,2CAsK7B"}
@@ -0,0 +1,48 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { AlertTriangle, CheckCircle2, KeyRound, Loader2, Lock, Plug, RefreshCw, Trash2, } from 'lucide-react';
4
+ import { useId, useState } from 'react';
5
+ import { ConfirmDangerousSettingDialog } from './components.js';
6
+ const INPUT_CLASS = 'w-full rounded-md border border-border bg-input-background px-3 py-2 text-base text-foreground focus-visible:ring-2 focus-visible:ring-ring focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-60';
7
+ const LABEL_CLASS = 'mb-1 flex items-center gap-2 text-sm font-medium text-foreground';
8
+ const STATUS_META = {
9
+ connected: { label: 'Connected', tone: 'ok' },
10
+ invalid_key: { label: 'Invalid key', tone: 'error' },
11
+ rate_limited: { label: 'Rate limited', tone: 'warn' },
12
+ provider_down: { label: 'Provider unavailable', tone: 'warn' },
13
+ needs_setup: { label: 'Needs API key', tone: 'idle' },
14
+ unknown: { label: 'Not tested', tone: 'idle' },
15
+ };
16
+ function StatusPill({ status }) {
17
+ const meta = STATUS_META[status];
18
+ const toneClass = meta.tone === 'ok'
19
+ ? 'border-success/30 bg-success/10 text-success'
20
+ : meta.tone === 'error'
21
+ ? 'border-destructive/30 bg-destructive/10 text-destructive'
22
+ : meta.tone === 'warn'
23
+ ? 'border-warning/30 bg-warning/10 text-warning'
24
+ : 'border-border bg-muted text-muted-foreground';
25
+ return (_jsxs("span", { className: `inline-flex items-center gap-1.5 rounded-full border px-2.5 py-0.5 text-xs font-medium ${toneClass}`, children: [meta.tone === 'ok' ? (_jsx(CheckCircle2, { size: 12, "aria-hidden": "true" })) : meta.tone === 'error' ? (_jsx(AlertTriangle, { size: 12, "aria-hidden": "true" })) : (_jsx(Plug, { size: 12, "aria-hidden": "true" })), meta.label] }));
26
+ }
27
+ export function ProviderConnectionCard({ provider, canEdit, busy, onTest, onSyncModels, onUpdateKey, onUpdateBaseUrl, onDisconnect, }) {
28
+ const keyId = useId();
29
+ const baseUrlId = useId();
30
+ const [keyInput, setKeyInput] = useState('');
31
+ const [baseUrlInput, setBaseUrlInput] = useState(provider.baseUrl ?? '');
32
+ const [confirmKey, setConfirmKey] = useState(false);
33
+ const [confirmDisconnect, setConfirmDisconnect] = useState(false);
34
+ const envManaged = provider.keyManagedExternally;
35
+ const keyEditable = canEdit && !envManaged;
36
+ async function applyKey() {
37
+ setConfirmKey(false);
38
+ await onUpdateKey(keyInput.trim() === '' ? null : keyInput.trim());
39
+ setKeyInput('');
40
+ }
41
+ return (_jsxs("div", { className: "border-border bg-card rounded-lg border p-4", children: [_jsxs("div", { className: "mb-3 flex items-start justify-between gap-3", children: [_jsxs("div", { children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "text-foreground text-base font-medium", children: provider.displayName }), _jsx(StatusPill, { status: provider.status })] }), _jsx("p", { className: "text-muted-foreground mt-0.5 text-sm capitalize", children: provider.provider })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsxs("button", { type: "button", onClick: onTest, disabled: !canEdit || busy, className: "border-border text-foreground hover:bg-accent inline-flex items-center gap-1.5 rounded-md border px-3 py-1.5 text-sm transition-colors disabled:cursor-not-allowed disabled:opacity-60", children: [busy ? (_jsx(Loader2, { size: 14, className: "animate-spin", "aria-hidden": "true" })) : (_jsx(Plug, { size: 14, "aria-hidden": "true" })), "Test connection"] }), _jsxs("button", { type: "button", onClick: onSyncModels, disabled: !canEdit || busy, "aria-label": `Refresh models for ${provider.displayName}`, className: "border-border text-foreground hover:bg-accent inline-flex items-center gap-1.5 rounded-md border px-3 py-1.5 text-sm transition-colors disabled:cursor-not-allowed disabled:opacity-60", children: [_jsx(RefreshCw, { size: 14, "aria-hidden": "true" }), "Refresh models"] }), _jsx("button", { type: "button", onClick: () => setConfirmDisconnect(true), disabled: !canEdit || busy, "aria-label": `Disconnect ${provider.displayName}`, className: "text-muted-foreground hover:text-destructive inline-flex items-center rounded-md p-1.5 transition-colors disabled:cursor-not-allowed disabled:opacity-60", children: _jsx(Trash2, { size: 16, "aria-hidden": "true" }) })] })] }), _jsxs("div", { className: "space-y-3", children: [_jsxs("div", { children: [_jsxs("label", { htmlFor: keyId, className: LABEL_CLASS, children: [_jsx(KeyRound, { size: 13, "aria-hidden": "true" }), "API key", envManaged && (_jsxs("span", { className: "text-muted-foreground border-border bg-muted inline-flex items-center gap-1 rounded-md border px-1.5 py-0.5 text-xs", children: [_jsx(Lock, { size: 11, "aria-hidden": "true" }), "Managed by environment"] }))] }), envManaged ? (_jsxs("p", { className: "text-muted-foreground text-sm", children: ["This key is set via an environment variable and can't be edited here.", provider.apiKeyLast4 ? ` Ends in ••••${provider.apiKeyLast4}.` : ''] })) : (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("input", { id: keyId, type: "password", autoComplete: "off", spellCheck: false, value: keyInput, disabled: !keyEditable || busy, placeholder: provider.hasKey
42
+ ? `Key set ••••${provider.apiKeyLast4 ?? ''} — enter a new key to replace`
43
+ : 'Paste API key', onChange: (e) => setKeyInput(e.target.value), className: INPUT_CLASS }), _jsx("button", { type: "button", onClick: () => setConfirmKey(true), disabled: !keyEditable || busy || keyInput.trim() === '', className: "bg-brand text-brand-foreground inline-flex shrink-0 items-center rounded-md px-3 py-2 text-sm font-medium transition-opacity hover:opacity-90 disabled:cursor-not-allowed disabled:opacity-50", children: "Save key" })] }))] }), provider.provider === 'custom' && (_jsxs("div", { children: [_jsx("label", { htmlFor: baseUrlId, className: LABEL_CLASS, children: "Base URL" }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("input", { id: baseUrlId, type: "url", value: baseUrlInput, disabled: !canEdit || busy, placeholder: "https://api.example.com/v1", onChange: (e) => setBaseUrlInput(e.target.value), className: INPUT_CLASS }), _jsx("button", { type: "button", onClick: () => onUpdateBaseUrl(baseUrlInput.trim()), disabled: !canEdit || busy || baseUrlInput.trim() === (provider.baseUrl ?? ''), className: "border-border text-foreground hover:bg-accent inline-flex shrink-0 items-center rounded-md border px-3 py-2 text-sm transition-colors disabled:cursor-not-allowed disabled:opacity-60", children: "Save" })] })] })), provider.lastTestedAt && (_jsxs("p", { className: "text-muted-foreground text-sm", children: ["Last tested ", new Date(provider.lastTestedAt).toLocaleString(), "."] }))] }), _jsx(ConfirmDangerousSettingDialog, { open: confirmKey, title: "Replace the stored API key?", description: "The new key is encrypted and replaces the existing one. Existing AI features will use it immediately.", confirmLabel: "Save key", onConfirm: applyKey, onCancel: () => setConfirmKey(false) }), _jsx(ConfirmDangerousSettingDialog, { open: confirmDisconnect, title: `Disconnect ${provider.displayName}?`, description: "This removes the stored key and model catalog for this provider. AI features that rely on it will stop working until you reconnect.", confirmLabel: "Disconnect", onConfirm: () => {
44
+ setConfirmDisconnect(false);
45
+ onDisconnect();
46
+ }, onCancel: () => setConfirmDisconnect(false) })] }));
47
+ }
48
+ //# sourceMappingURL=ProviderConnectionCard.js.map