@parhelia/core 0.3.12823 → 0.3.12827
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/dist/editor/ContentTree.js +18 -54
- package/dist/editor/ContentTree.js.map +1 -1
- package/dist/editor/ai/InlineAiDialog.js +6 -1
- package/dist/editor/ai/InlineAiDialog.js.map +1 -1
- package/dist/editor/ai-image-editor/AiImageEditorDialog.js +29 -4
- package/dist/editor/ai-image-editor/AiImageEditorDialog.js.map +1 -1
- package/dist/editor/client/hooks/useQuota.d.ts +37 -5
- package/dist/editor/client/hooks/useQuota.js +81 -47
- package/dist/editor/client/hooks/useQuota.js.map +1 -1
- package/dist/editor/reviews/DiffView.d.ts +1 -0
- package/dist/editor/reviews/DiffView.js +9 -4
- package/dist/editor/reviews/DiffView.js.map +1 -1
- package/dist/editor/services/aiService.d.ts +9 -3
- package/dist/editor/services/aiService.js.map +1 -1
- package/dist/editor/settings/QuotaInfo.js +34 -114
- package/dist/editor/settings/QuotaInfo.js.map +1 -1
- package/dist/editor/settings/panels/ProviderConfigPanel.d.ts +3 -1
- package/dist/editor/settings/panels/ProviderConfigPanel.js +2 -2
- package/dist/editor/settings/panels/ProviderConfigPanel.js.map +1 -1
- package/dist/editor/settings/panels/ProvidersPanel.js +144 -9
- package/dist/editor/settings/panels/ProvidersPanel.js.map +1 -1
- package/dist/editor/sidebar/ComponentTree.js +23 -2
- package/dist/editor/sidebar/ComponentTree.js.map +1 -1
- package/dist/editor/ui/PublishDialog.d.ts +5 -3
- package/dist/editor/ui/PublishDialog.js +30 -9
- package/dist/editor/ui/PublishDialog.js.map +1 -1
- package/dist/lib/nativeDragActivation.d.ts +19 -0
- package/dist/lib/nativeDragActivation.js +69 -0
- package/dist/lib/nativeDragActivation.js.map +1 -0
- package/dist/revision.d.ts +2 -2
- package/dist/revision.js +2 -2
- package/dist/setup/services/setupWizardService.d.ts +42 -0
- package/dist/setup/services/setupWizardService.js +28 -0
- package/dist/setup/services/setupWizardService.js.map +1 -1
- package/package.json +1 -1
|
@@ -2,6 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { useCallback, useEffect, useMemo, useState } from "react";
|
|
3
3
|
import { Users, Coins, Image as ImageIcon, BarChart3, DollarSign, CheckCircle2, } from "lucide-react";
|
|
4
4
|
import { useEditContext } from "../client/editContext";
|
|
5
|
+
import { evaluateQuota, formatQuotaValue, normalizeQuotaInfo, } from "../client/hooks/useQuota";
|
|
5
6
|
import { requestQuota } from "../services/aiService";
|
|
6
7
|
import { QuotaUserPicker } from "./QuotaUserPicker";
|
|
7
8
|
import { UsageLeaderboard } from "./UsageLeaderboard";
|
|
@@ -45,6 +46,28 @@ function DailyUsageBarChart(props) {
|
|
|
45
46
|
return (_jsx("span", { className: "text-center", children: shouldShowLabel ? point.day : "" }, point.day));
|
|
46
47
|
}) }), !hasValues && (_jsx("p", { className: "text-neutral-grey-50 mt-2 text-xs", children: "No usage recorded for this period." }))] }));
|
|
47
48
|
}
|
|
49
|
+
const PERIOD_TITLES = {
|
|
50
|
+
dailyCost: "Today",
|
|
51
|
+
monthlyCost: "This month",
|
|
52
|
+
totalCost: "All time",
|
|
53
|
+
dailyImages: "Today",
|
|
54
|
+
monthlyImages: "This month",
|
|
55
|
+
totalImages: "All time",
|
|
56
|
+
};
|
|
57
|
+
const STATUS_BAR_CLASS = {
|
|
58
|
+
unlimited: "bg-feedback-green",
|
|
59
|
+
ok: "bg-feedback-green",
|
|
60
|
+
caution: "bg-feedback-orange",
|
|
61
|
+
warning: "bg-component-shared",
|
|
62
|
+
exceeded: "bg-feedback-red",
|
|
63
|
+
};
|
|
64
|
+
function QuotaMeter({ dimension }) {
|
|
65
|
+
const { key, unit, used, limit, unlimited, percentage, status } = dimension;
|
|
66
|
+
return (_jsxs("div", { "data-testid": `quota-meter-${key}`, "data-status": status, children: [_jsxs("div", { className: "mb-2 flex items-center justify-between", children: [_jsx("label", { className: "text-neutral-grey-50 text-sm font-medium", children: PERIOD_TITLES[key] }), _jsxs("span", { className: "text-neutral-grey-50 text-sm", children: [formatQuotaValue(unit, used), " /", " ", unlimited ? "∞" : formatQuotaValue(unit, limit)] })] }), !unlimited && (_jsx("div", { className: "bg-neutral-grey-10 h-2 w-full rounded-full", children: _jsx("div", { className: `h-2 rounded-full ${STATUS_BAR_CLASS[status]}`, style: { width: `${Math.min(100, percentage)}%` } }) })), _jsx("p", { className: "text-neutral-grey-50 mt-1 text-xs", children: unlimited ? "No limit" : `${Math.round(percentage)}% used` })] }));
|
|
67
|
+
}
|
|
68
|
+
function QuotaBox(props) {
|
|
69
|
+
return (_jsxs("div", { className: "overflow-hidden rounded-lg bg-white", "data-testid": props.testId, children: [_jsx("div", { className: "border-border-default border-b px-4 py-3", children: _jsxs("div", { className: "flex items-center gap-2", children: [props.icon, _jsx("h3", { className: "text-neutral-grey-100 text-sm font-medium", children: props.title })] }) }), _jsx("div", { className: "space-y-4 p-4", children: props.children })] }));
|
|
70
|
+
}
|
|
48
71
|
export function QuotaInfo() {
|
|
49
72
|
const editContext = useEditContext();
|
|
50
73
|
const liveQuotaInfo = editContext?.quotaInfo ?? null;
|
|
@@ -53,7 +76,6 @@ export function QuotaInfo() {
|
|
|
53
76
|
const [selectedMonth, setSelectedMonth] = useState(today.getMonth());
|
|
54
77
|
const [selectedYear, setSelectedYear] = useState(currentYear);
|
|
55
78
|
const isAdministrator = editContext?.user?.isAdministrator === true;
|
|
56
|
-
const currentUserName = editContext?.user?.name ?? "";
|
|
57
79
|
const [selectedScope, setSelectedScope] = useState("me");
|
|
58
80
|
const [selectedUserName, setSelectedUserName] = useState("");
|
|
59
81
|
const [selectedUserDisplayName, setSelectedUserDisplayName] = useState("");
|
|
@@ -82,26 +104,7 @@ export function QuotaInfo() {
|
|
|
82
104
|
userName: selectedScope === "user" ? selectedUserName : undefined,
|
|
83
105
|
});
|
|
84
106
|
if (response.type === "success" && response.data) {
|
|
85
|
-
|
|
86
|
-
setScopedQuotaInfo({
|
|
87
|
-
usage: {
|
|
88
|
-
totalTokens: payload.usage.totalTokens,
|
|
89
|
-
totalImages: payload.usage.totalImages,
|
|
90
|
-
dailyTokens: payload.usage.dailyTokens,
|
|
91
|
-
dailyImages: payload.usage.dailyImages,
|
|
92
|
-
totalCost: payload.usage.totalCost,
|
|
93
|
-
dailyCost: payload.usage.dailyCost,
|
|
94
|
-
dailyHistory: payload.usage.dailyHistory ?? [],
|
|
95
|
-
},
|
|
96
|
-
limits: {
|
|
97
|
-
totalTokens: payload.limits.totalTokens,
|
|
98
|
-
dailyTokens: payload.limits.dailyTokens,
|
|
99
|
-
monthlyTokens: -1,
|
|
100
|
-
totalImages: payload.limits.totalImages,
|
|
101
|
-
dailyImages: payload.limits.dailyImages,
|
|
102
|
-
monthlyImages: -1,
|
|
103
|
-
},
|
|
104
|
-
});
|
|
107
|
+
setScopedQuotaInfo(normalizeQuotaInfo(response.data));
|
|
105
108
|
setScopeError(null);
|
|
106
109
|
}
|
|
107
110
|
else {
|
|
@@ -115,6 +118,9 @@ export function QuotaInfo() {
|
|
|
115
118
|
return;
|
|
116
119
|
void loadScopedQuotaInfo();
|
|
117
120
|
}, [isAdministrator, loadScopedQuotaInfo]);
|
|
121
|
+
const evaluation = useMemo(() => evaluateQuota(quotaInfo), [quotaInfo]);
|
|
122
|
+
const costDimensions = evaluation.dimensions.filter((d) => d.unit === "cost");
|
|
123
|
+
const imageDimensions = evaluation.dimensions.filter((d) => d.unit === "images");
|
|
118
124
|
const dailyHistory = useMemo(() => quotaInfo?.usage.dailyHistory ?? [], [quotaInfo?.usage.dailyHistory]);
|
|
119
125
|
const availableYears = useMemo(() => {
|
|
120
126
|
const years = new Set([currentYear]);
|
|
@@ -169,42 +175,6 @@ export function QuotaInfo() {
|
|
|
169
175
|
acc.imageCost += point.imageCost;
|
|
170
176
|
return acc;
|
|
171
177
|
}, { tokens: 0, images: 0, tokenCost: 0, imageCost: 0 }), [dailyChartPoints]);
|
|
172
|
-
const formatQuotaPercentage = (used, limit) => {
|
|
173
|
-
if (!limit || limit === 0 || limit === -1)
|
|
174
|
-
return "No limit";
|
|
175
|
-
if (!used && used !== 0)
|
|
176
|
-
return "0%";
|
|
177
|
-
if (isNaN(used) || isNaN(limit))
|
|
178
|
-
return "0%";
|
|
179
|
-
const percentage = Math.round((used / limit) * 100);
|
|
180
|
-
return `${percentage}%`;
|
|
181
|
-
};
|
|
182
|
-
const getQuotaStatus = (used, limit) => {
|
|
183
|
-
if (!limit || limit === 0 || limit === -1)
|
|
184
|
-
return "unlimited";
|
|
185
|
-
if (!used && used !== 0)
|
|
186
|
-
return "ok";
|
|
187
|
-
if (isNaN(used) || isNaN(limit))
|
|
188
|
-
return "ok";
|
|
189
|
-
const percentage = (used / limit) * 100;
|
|
190
|
-
if (percentage >= 100)
|
|
191
|
-
return "exceeded";
|
|
192
|
-
if (percentage >= 90)
|
|
193
|
-
return "warning";
|
|
194
|
-
if (percentage >= 75)
|
|
195
|
-
return "caution";
|
|
196
|
-
return "ok";
|
|
197
|
-
};
|
|
198
|
-
const getProgressWidth = (used, limit) => {
|
|
199
|
-
if (!limit ||
|
|
200
|
-
limit === 0 ||
|
|
201
|
-
limit === -1 ||
|
|
202
|
-
!used ||
|
|
203
|
-
isNaN(used) ||
|
|
204
|
-
isNaN(limit))
|
|
205
|
-
return 0;
|
|
206
|
-
return Math.min(100, (used / limit) * 100);
|
|
207
|
-
};
|
|
208
178
|
const adminScopePanel = isAdministrator ? (_jsxs("div", { className: "overflow-hidden rounded-lg bg-white", "data-testid": "quota-admin-scope-panel", children: [_jsx("div", { className: "border-border-default border-b px-4 py-3", children: _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Users, { className: "text-neutral-grey-50 h-4 w-4", strokeWidth: 1 }), _jsx("h3", { className: "text-neutral-grey-100 text-sm font-medium", children: "Usage scope" })] }) }), _jsxs("div", { className: "p-4", children: [_jsxs("div", { className: "grid gap-4 md:grid-cols-2", children: [_jsxs("div", { className: "space-y-1.5", children: [_jsx("label", { htmlFor: "quota-scope-select", className: "text-neutral-grey-50 block text-xs font-medium", children: "View" }), _jsx(Select, { id: "quota-scope-select", value: selectedScope, onValueChange: (value) => setSelectedScope(value), options: [
|
|
209
179
|
{ value: "me", label: "Me" },
|
|
210
180
|
{ value: "all", label: "All users" },
|
|
@@ -218,59 +188,12 @@ export function QuotaInfo() {
|
|
|
218
188
|
? "Loading quota information..."
|
|
219
189
|
: "No quota information available" }) }), isAdministrator && _jsx(UsageLeaderboard, {})] }));
|
|
220
190
|
}
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
: getQuotaStatus(quotaInfo.usage.totalTokens, quotaInfo.limits.totalTokens) === "warning"
|
|
228
|
-
? "bg-component-shared"
|
|
229
|
-
: getQuotaStatus(quotaInfo.usage.totalTokens, quotaInfo.limits.totalTokens) === "caution"
|
|
230
|
-
? "bg-feedback-orange"
|
|
231
|
-
: "bg-feedback-green"}`, style: {
|
|
232
|
-
width: `${getProgressWidth(quotaInfo.usage.totalTokens, quotaInfo.limits.totalTokens)}%`,
|
|
233
|
-
} }) })), _jsxs("p", { className: "text-neutral-grey-50 mt-1 text-xs", children: [formatQuotaPercentage(quotaInfo.usage.totalTokens, quotaInfo.limits.totalTokens), " ", "used"] })] }), _jsxs("div", { children: [_jsxs("div", { className: "mb-2 flex items-center justify-between", children: [_jsx("label", { className: "text-neutral-grey-50 text-sm font-medium", children: "Daily Usage" }), _jsxs("span", { className: "text-neutral-grey-50 text-sm", children: [quotaInfo.usage.dailyTokens.toLocaleString(), " /", " ", quotaInfo.limits.dailyTokens &&
|
|
234
|
-
quotaInfo.limits.dailyTokens > 0
|
|
235
|
-
? quotaInfo.limits.dailyTokens.toLocaleString()
|
|
236
|
-
: "∞"] })] }), quotaInfo.limits.dailyTokens &&
|
|
237
|
-
quotaInfo.limits.dailyTokens > 0 && (_jsx("div", { className: "bg-neutral-grey-10 h-2 w-full rounded-full", children: _jsx("div", { className: `h-2 rounded-full ${getQuotaStatus(quotaInfo.usage.dailyTokens, quotaInfo.limits.dailyTokens) === "exceeded"
|
|
238
|
-
? "bg-feedback-red"
|
|
239
|
-
: getQuotaStatus(quotaInfo.usage.dailyTokens, quotaInfo.limits.dailyTokens) === "warning"
|
|
240
|
-
? "bg-component-shared"
|
|
241
|
-
: getQuotaStatus(quotaInfo.usage.dailyTokens, quotaInfo.limits.dailyTokens) === "caution"
|
|
242
|
-
? "bg-feedback-orange"
|
|
243
|
-
: "bg-feedback-green"}`, style: {
|
|
244
|
-
width: `${getProgressWidth(quotaInfo.usage.dailyTokens, quotaInfo.limits.dailyTokens)}%`,
|
|
245
|
-
} }) })), _jsx("p", { className: "text-neutral-grey-50 mt-1 text-xs", children: quotaInfo.limits.dailyTokens === -1
|
|
246
|
-
? "No daily limit"
|
|
247
|
-
: `${formatQuotaPercentage(quotaInfo.usage.dailyTokens, quotaInfo.limits.dailyTokens)} used today` })] })] })] }), _jsxs("div", { className: "overflow-hidden rounded-lg bg-white", children: [_jsx("div", { className: "border-border-default border-b px-4 py-3", children: _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(ImageIcon, { className: "text-neutral-grey-50 h-4 w-4", strokeWidth: 1 }), _jsx("h3", { className: "text-neutral-grey-100 text-sm font-medium", children: "Image usage" })] }) }), _jsxs("div", { className: "space-y-4 p-4", children: [_jsxs("div", { children: [_jsxs("div", { className: "mb-2 flex items-center justify-between", children: [_jsx("label", { className: "text-neutral-grey-50 text-sm font-medium", children: "Total Usage" }), _jsxs("span", { className: "text-neutral-grey-50 text-sm", children: [quotaInfo.usage.totalImages.toLocaleString(), " /", " ", quotaInfo.limits.totalImages &&
|
|
248
|
-
quotaInfo.limits.totalImages > 0
|
|
249
|
-
? quotaInfo.limits.totalImages.toLocaleString()
|
|
250
|
-
: "∞"] })] }), quotaInfo.limits.totalImages &&
|
|
251
|
-
quotaInfo.limits.totalImages > 0 && (_jsx("div", { className: "bg-neutral-grey-10 h-2 w-full rounded-full", children: _jsx("div", { className: `h-2 rounded-full ${getQuotaStatus(quotaInfo.usage.totalImages, quotaInfo.limits.totalImages) === "exceeded"
|
|
252
|
-
? "bg-feedback-red"
|
|
253
|
-
: getQuotaStatus(quotaInfo.usage.totalImages, quotaInfo.limits.totalImages) === "warning"
|
|
254
|
-
? "bg-component-shared"
|
|
255
|
-
: getQuotaStatus(quotaInfo.usage.totalImages, quotaInfo.limits.totalImages) === "caution"
|
|
256
|
-
? "bg-feedback-orange"
|
|
257
|
-
: "bg-feedback-green"}`, style: {
|
|
258
|
-
width: `${getProgressWidth(quotaInfo.usage.totalImages, quotaInfo.limits.totalImages)}%`,
|
|
259
|
-
} }) })), _jsxs("p", { className: "text-neutral-grey-50 mt-1 text-xs", children: [formatQuotaPercentage(quotaInfo.usage.totalImages, quotaInfo.limits.totalImages), " ", "used"] })] }), _jsxs("div", { children: [_jsxs("div", { className: "mb-2 flex items-center justify-between", children: [_jsx("label", { className: "text-neutral-grey-50 text-sm font-medium", children: "Daily Usage" }), _jsxs("span", { className: "text-neutral-grey-50 text-sm", children: [quotaInfo.usage.dailyImages.toLocaleString(), " /", " ", quotaInfo.limits.dailyImages &&
|
|
260
|
-
quotaInfo.limits.dailyImages > 0
|
|
261
|
-
? quotaInfo.limits.dailyImages.toLocaleString()
|
|
262
|
-
: "∞"] })] }), quotaInfo.limits.dailyImages &&
|
|
263
|
-
quotaInfo.limits.dailyImages > 0 && (_jsx("div", { className: "bg-neutral-grey-10 h-2 w-full rounded-full", children: _jsx("div", { className: `h-2 rounded-full ${getQuotaStatus(quotaInfo.usage.dailyImages, quotaInfo.limits.dailyImages) === "exceeded"
|
|
264
|
-
? "bg-feedback-red"
|
|
265
|
-
: getQuotaStatus(quotaInfo.usage.dailyImages, quotaInfo.limits.dailyImages) === "warning"
|
|
266
|
-
? "bg-component-shared"
|
|
267
|
-
: getQuotaStatus(quotaInfo.usage.dailyImages, quotaInfo.limits.dailyImages) === "caution"
|
|
268
|
-
? "bg-feedback-orange"
|
|
269
|
-
: "bg-feedback-green"}`, style: {
|
|
270
|
-
width: `${getProgressWidth(quotaInfo.usage.dailyImages, quotaInfo.limits.dailyImages)}%`,
|
|
271
|
-
} }) })), _jsx("p", { className: "text-neutral-grey-50 mt-1 text-xs", children: quotaInfo.limits.dailyImages === -1
|
|
272
|
-
? "No daily limit"
|
|
273
|
-
: `${formatQuotaPercentage(quotaInfo.usage.dailyImages, quotaInfo.limits.dailyImages)} used today` })] })] })] })] }), _jsxs("div", { className: "overflow-hidden rounded-lg bg-white", "data-testid": "quota-daily-usage-chart", children: [_jsx("div", { className: "border-border-default border-b px-4 py-3", children: _jsxs("div", { className: "flex flex-wrap items-center justify-between gap-3", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(BarChart3, { className: "text-neutral-grey-50 h-4 w-4", strokeWidth: 1 }), _jsxs("div", { children: [_jsx("h3", { className: "text-neutral-grey-100 text-sm font-medium", children: "Daily usage chart" }), _jsx("p", { className: "text-neutral-grey-50 text-xs", children: "Month/year switchable daily usage across tokens, images, and cost." })] })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("label", { className: "sr-only", htmlFor: "quota-usage-month", children: "Select month" }), _jsx(Select, { id: "quota-usage-month", value: String(selectedMonth), onValueChange: (value) => setSelectedMonth(Number(value)), options: MONTH_NAMES.map((monthName, index) => ({
|
|
191
|
+
const tokenRows = [
|
|
192
|
+
{ label: "Today", value: quotaInfo.usage.dailyTokens },
|
|
193
|
+
{ label: "This month", value: quotaInfo.usage.monthlyTokens },
|
|
194
|
+
{ label: "All time", value: quotaInfo.usage.totalTokens },
|
|
195
|
+
];
|
|
196
|
+
return (_jsxs("div", { className: "space-y-10 px-10 pt-0 pb-10", "data-testid": "quota-info-section", children: [adminScopePanel, _jsxs("div", { className: "grid gap-6 md:grid-cols-2", children: [_jsx(QuotaBox, { title: "Cost budget", testId: "quota-cost-budget", icon: _jsx(DollarSign, { className: "text-neutral-grey-50 h-4 w-4", strokeWidth: 1 }), children: costDimensions.map((dimension) => (_jsx(QuotaMeter, { dimension: dimension }, dimension.key))) }), _jsx(QuotaBox, { title: "Image usage", testId: "quota-image-usage", icon: _jsx(ImageIcon, { className: "text-neutral-grey-50 h-4 w-4", strokeWidth: 1 }), children: imageDimensions.map((dimension) => (_jsx(QuotaMeter, { dimension: dimension }, dimension.key))) })] }), _jsxs("div", { className: "overflow-hidden rounded-lg bg-white", "data-testid": "quota-daily-usage-chart", children: [_jsx("div", { className: "border-border-default border-b px-4 py-3", children: _jsxs("div", { className: "flex flex-wrap items-center justify-between gap-3", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(BarChart3, { className: "text-neutral-grey-50 h-4 w-4", strokeWidth: 1 }), _jsxs("div", { children: [_jsx("h3", { className: "text-neutral-grey-100 text-sm font-medium", children: "Daily usage chart" }), _jsx("p", { className: "text-neutral-grey-50 text-xs", children: "Month/year switchable daily usage across tokens, images, and cost." })] })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("label", { className: "sr-only", htmlFor: "quota-usage-month", children: "Select month" }), _jsx(Select, { id: "quota-usage-month", value: String(selectedMonth), onValueChange: (value) => setSelectedMonth(Number(value)), options: MONTH_NAMES.map((monthName, index) => ({
|
|
274
197
|
value: String(index),
|
|
275
198
|
label: monthName,
|
|
276
199
|
})), className: "w-36", "data-testid": "quota-usage-month-select" }), _jsx("label", { className: "sr-only", htmlFor: "quota-usage-year", children: "Select year" }), _jsx(Select, { id: "quota-usage-year", value: String(selectedYear), onValueChange: (value) => setSelectedYear(Number(value)), options: availableYears.map((year) => ({
|
|
@@ -291,9 +214,6 @@ export function QuotaInfo() {
|
|
|
291
214
|
})) }), _jsx(DailyUsageBarChart, { title: "Total Cost / day", unit: "USD", colorClass: "bg-feedback-orange", valueFormatter: (value) => value.toFixed(2), points: dailyChartPoints.map((point) => ({
|
|
292
215
|
day: point.day,
|
|
293
216
|
value: point.tokenCost + point.imageCost,
|
|
294
|
-
})) })] }), dailyHistory.length === 0 && (_jsx("p", { className: "text-neutral-grey-50 mt-3 text-xs", children: "No historical usage payload received yet. The chart will populate as daily usage data is sent from the server." }))] })] }), _jsxs(
|
|
295
|
-
editContext.getQuotaWarningMessage() &&
|
|
296
|
-
!editContext.isQuotaExceeded && (_jsxs("p", { className: "text-component-shared", children: ["\u26A0\uFE0F ", editContext.getQuotaWarningMessage()] })), !editContext?.isQuotaExceeded &&
|
|
297
|
-
!editContext?.getQuotaWarningMessage?.() && (_jsx("p", { className: "text-feedback-green", children: "\u2705 All quotas are within limits" }))] })] }), isAdministrator && _jsx(UsageLeaderboard, {})] }));
|
|
217
|
+
})) })] }), dailyHistory.length === 0 && (_jsx("p", { className: "text-neutral-grey-50 mt-3 text-xs", children: "No historical usage payload received yet. The chart will populate as daily usage data is sent from the server." }))] })] }), _jsxs(QuotaBox, { title: "Token usage", testId: "quota-token-usage", icon: _jsx(Coins, { className: "text-neutral-grey-50 h-4 w-4", strokeWidth: 1 }), children: [tokenRows.map((row) => (_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("label", { className: "text-neutral-grey-50 text-sm font-medium", children: row.label }), _jsx("span", { className: "text-neutral-grey-100 text-base font-medium", children: row.value.toLocaleString() })] }, row.label))), _jsx("p", { className: "text-neutral-grey-50 text-xs", children: "Token counts are informational. Quotas are enforced on cost and image counts." })] }), _jsxs("div", { className: "overflow-hidden rounded-lg bg-white", "data-testid": "quota-status-summary", children: [_jsx("div", { className: "border-border-default border-b px-4 py-3", children: _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(CheckCircle2, { className: "text-neutral-grey-50 h-4 w-4", strokeWidth: 1 }), _jsx("h3", { className: "text-neutral-grey-100 text-sm font-medium", children: "Quota status" })] }) }), _jsxs("div", { className: "space-y-1 p-4 text-sm", children: [evaluation.exceeded && (_jsx("p", { className: "text-feedback-red font-medium", "data-testid": "quota-exceeded-message", children: "\u26A0\uFE0F Quota limits have been exceeded" })), evaluation.warningMessage && !evaluation.exceeded && (_jsxs("p", { className: "text-component-shared", children: ["\u26A0\uFE0F ", evaluation.warningMessage] })), !evaluation.exceeded && !evaluation.warningMessage && (_jsx("p", { className: "text-feedback-green", children: "\u2705 All quotas are within limits" }))] })] }), isAdministrator && _jsx(UsageLeaderboard, {})] }));
|
|
298
218
|
}
|
|
299
219
|
//# sourceMappingURL=QuotaInfo.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuotaInfo.js","sourceRoot":"","sources":["../../../src/editor/settings/QuotaInfo.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"QuotaInfo.js","sourceRoot":"","sources":["../../../src/editor/settings/QuotaInfo.tsx"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,9 @@ type ProviderConfigPanelProps = {
|
|
|
4
4
|
title?: string;
|
|
5
5
|
onClose?: () => void;
|
|
6
6
|
actions?: React.ReactNode;
|
|
7
|
+
/** Rendered above the field groups (e.g. connection hints and test results). */
|
|
8
|
+
supplementalContent?: React.ReactNode;
|
|
7
9
|
refreshToken?: number;
|
|
8
10
|
};
|
|
9
|
-
export declare function ProviderConfigPanel({ itemId, title, onClose, actions, refreshToken, }: ProviderConfigPanelProps): React.JSX.Element;
|
|
11
|
+
export declare function ProviderConfigPanel({ itemId, title, onClose, actions, supplementalContent, refreshToken, }: ProviderConfigPanelProps): React.JSX.Element;
|
|
10
12
|
export default ProviderConfigPanel;
|
|
@@ -25,8 +25,8 @@ const FIELD_GROUPS = [
|
|
|
25
25
|
],
|
|
26
26
|
},
|
|
27
27
|
];
|
|
28
|
-
export function ProviderConfigPanel({ itemId, title, onClose, actions, refreshToken = 0, }) {
|
|
29
|
-
return (_jsx(GroupedFieldConfigPanel, { itemId: itemId, title: title, onClose: onClose, actions: actions, refreshToken: refreshToken, fieldGroups: FIELD_GROUPS, headerIcon: _jsx(Server, { className: "h-4 w-4", strokeWidth: 1 }), loadErrorTitle: "Unable to load provider", emptyMessage: "No editable settings were found for this provider.", fallbackTitle: "AI Provider", footerLeadingText: "For all fields and advanced authentication options use the " }));
|
|
28
|
+
export function ProviderConfigPanel({ itemId, title, onClose, actions, supplementalContent, refreshToken = 0, }) {
|
|
29
|
+
return (_jsx(GroupedFieldConfigPanel, { itemId: itemId, title: title, onClose: onClose, actions: actions, supplementalContent: supplementalContent, refreshToken: refreshToken, fieldGroups: FIELD_GROUPS, headerIcon: _jsx(Server, { className: "h-4 w-4", strokeWidth: 1 }), loadErrorTitle: "Unable to load provider", emptyMessage: "No editable settings were found for this provider.", fallbackTitle: "AI Provider", footerLeadingText: "For all fields and advanced authentication options use the " }));
|
|
30
30
|
}
|
|
31
31
|
export default ProviderConfigPanel;
|
|
32
32
|
//# sourceMappingURL=ProviderConfigPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderConfigPanel.js","sourceRoot":"","sources":["../../../../src/editor/settings/panels/ProviderConfigPanel.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EACL,uBAAuB,GAExB,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"ProviderConfigPanel.js","sourceRoot":"","sources":["../../../../src/editor/settings/panels/ProviderConfigPanel.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EACL,uBAAuB,GAExB,MAAM,2BAA2B,CAAC;AAYnC,MAAM,YAAY,GAA2B;IAC3C;QACE,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,qCAAqC;QAClD,IAAI,EAAE,KAAC,MAAM,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,CAAC,GAAI;QACpD,UAAU,EAAE;YACV,CAAC,eAAe,EAAE,kBAAkB,CAAC;YACrC,CAAC,cAAc,CAAC;YAChB,CAAC,wBAAwB,EAAE,mBAAmB,CAAC;SAChD;KACF;IACD;QACE,KAAK,EAAE,gBAAgB;QACvB,WAAW,EAAE,iCAAiC;QAC9C,IAAI,EAAE,KAAC,QAAQ,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,CAAC,GAAI;QACtD,UAAU,EAAE;YACV,CAAC,SAAS,CAAC;YACX,CAAC,WAAW,CAAC;YACb,CAAC,eAAe,CAAC;YACjB,CAAC,UAAU,CAAC;YACZ,CAAC,OAAO,CAAC;SACV;KACF;CACF,CAAC;AAEF,MAAM,UAAU,mBAAmB,CAAC,EAClC,MAAM,EACN,KAAK,EACL,OAAO,EACP,OAAO,EACP,mBAAmB,EACnB,YAAY,GAAG,CAAC,GACS;IACzB,OAAO,CACL,KAAC,uBAAuB,IACtB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,mBAAmB,EAAE,mBAAmB,EACxC,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,YAAY,EACzB,UAAU,EAAE,KAAC,MAAM,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,CAAC,GAAI,EAC1D,cAAc,EAAC,yBAAyB,EACxC,YAAY,EAAC,oDAAoD,EACjE,aAAa,EAAC,aAAa,EAC3B,iBAAiB,EAAC,6DAA6D,GAC/E,CACH,CAAC;AACJ,CAAC;AAED,eAAe,mBAAmB,CAAC"}
|
|
@@ -6,9 +6,10 @@ import { Input } from "../../../components/ui/input";
|
|
|
6
6
|
import { Select } from "../../../components/ui/select";
|
|
7
7
|
import { Dialog, DialogContent, DialogFooter, } from "../../../components/ui/dialog";
|
|
8
8
|
import { StyledDialogTitle } from "../../../components/ui/styled-dialog-title";
|
|
9
|
-
import { setupWizardService, } from "../../../setup/services/setupWizardService";
|
|
10
|
-
import { CheckCircle, Plus, RefreshCw } from "lucide-react";
|
|
9
|
+
import { setupWizardService, describeProviderCredentialProblem, } from "../../../setup/services/setupWizardService";
|
|
10
|
+
import { AlertTriangle, CheckCircle, CheckCircle2, PlugZap, Plus, RefreshCw, XCircle, } from "lucide-react";
|
|
11
11
|
import { DeleteIcon } from "../../../components/ui/delete-icon";
|
|
12
|
+
import { cn } from "../../../lib/utils";
|
|
12
13
|
import { useEditContext } from "../../client/editContext";
|
|
13
14
|
import { useSearchParams } from "../../client/navigation";
|
|
14
15
|
import { Splitter } from "../../ui/Splitter";
|
|
@@ -16,6 +17,45 @@ import { ProviderConfigPanel } from "./ProviderConfigPanel";
|
|
|
16
17
|
import { ProviderIcon, resolveBrand } from "./ProviderIcon";
|
|
17
18
|
import { useRequiredSettingsHeaderActions } from "../SettingsHeaderActionsContext";
|
|
18
19
|
const SELECTED_PROVIDER_QUERY_PARAM = "providerId";
|
|
20
|
+
/**
|
|
21
|
+
* A failed test that only repeats the static credential hint adds nothing;
|
|
22
|
+
* the hint stays and the result line is skipped.
|
|
23
|
+
*/
|
|
24
|
+
function isRedundantTestResult(provider, result) {
|
|
25
|
+
if (!result || result.success)
|
|
26
|
+
return false;
|
|
27
|
+
return describeProviderCredentialProblem(provider) === result.message;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* One-line outcome of a connection test (green check or red cross).
|
|
31
|
+
*/
|
|
32
|
+
function ConnectionTestResultLine({ result, className, }) {
|
|
33
|
+
const Icon = result.success ? CheckCircle2 : XCircle;
|
|
34
|
+
const text = result.success
|
|
35
|
+
? `${result.message} (${result.durationMs} ms)`
|
|
36
|
+
: result.message;
|
|
37
|
+
const detail = result.probeUrl
|
|
38
|
+
? `${result.probeUrl}${result.httpStatusCode ? ` (HTTP ${result.httpStatusCode})` : ""}`
|
|
39
|
+
: undefined;
|
|
40
|
+
return (_jsxs("div", { "data-testid": "provider-test-result", "data-status": result.success ? "success" : "error", title: detail, className: cn("flex items-start gap-1.5 text-xs", result.success ? "text-feedback-green" : "text-feedback-red", className), children: [_jsx(Icon, { className: "mt-0.5 h-3.5 w-3.5 shrink-0", strokeWidth: 1.5 }), _jsx("span", { className: "min-w-0 break-words", children: text })] }));
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Static credential hint derived from the provider record: warns when the
|
|
44
|
+
* configured connection string is missing from ConnectionStrings.config or when
|
|
45
|
+
* no secret is configured at all; otherwise names the secret source.
|
|
46
|
+
*/
|
|
47
|
+
function ProviderCredentialHint({ provider, className, }) {
|
|
48
|
+
const problem = describeProviderCredentialProblem(provider);
|
|
49
|
+
if (problem) {
|
|
50
|
+
return (_jsxs("div", { "data-testid": "provider-credential-hint", className: cn("text-feedback-orange flex items-start gap-1.5 text-xs", className), children: [_jsx(AlertTriangle, { className: "mt-0.5 h-3.5 w-3.5 shrink-0", strokeWidth: 1.5 }), _jsx("span", { className: "min-w-0 break-words", children: problem })] }));
|
|
51
|
+
}
|
|
52
|
+
const name = provider.connectionStringName?.trim();
|
|
53
|
+
if (!name)
|
|
54
|
+
return null;
|
|
55
|
+
return (_jsxs("div", { className: cn("text-neutral-grey-50 text-xs", className), children: [provider.secretSource === "applicationDefaultCredentials"
|
|
56
|
+
? "Application Default Credentials via "
|
|
57
|
+
: "Secret from ", "ConnectionStrings.config: ", _jsx("span", { className: "font-mono", children: name })] }));
|
|
58
|
+
}
|
|
19
59
|
/**
|
|
20
60
|
* Settings panel for AI Providers configuration.
|
|
21
61
|
* Configure AI providers (Anthropic, OpenAI, OpenRouter, Google Vertex AI).
|
|
@@ -31,6 +71,10 @@ export function ProvidersPanel() {
|
|
|
31
71
|
const [showForm, setShowForm] = useState(false);
|
|
32
72
|
const [creating, setCreating] = useState(false);
|
|
33
73
|
const [deleting, setDeleting] = useState(null);
|
|
74
|
+
const [testing, setTesting] = useState(null);
|
|
75
|
+
const [testResults, setTestResults] = useState({});
|
|
76
|
+
const [draftTesting, setDraftTesting] = useState(false);
|
|
77
|
+
const [draftTestResult, setDraftTestResult] = useState(null);
|
|
34
78
|
const [formData, setFormData] = useState({
|
|
35
79
|
type: "",
|
|
36
80
|
name: "",
|
|
@@ -112,6 +156,64 @@ export function ProvidersPanel() {
|
|
|
112
156
|
setError(e?.message || "Failed to load data");
|
|
113
157
|
}
|
|
114
158
|
};
|
|
159
|
+
// Re-read the provider records without touching the loading state, so the
|
|
160
|
+
// credential hints reflect edits made in the config panel.
|
|
161
|
+
const refreshProviders = useCallback(async () => {
|
|
162
|
+
try {
|
|
163
|
+
setProviders(await setupWizardService.getProviders());
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
// Keep the current list; the next full load reports errors.
|
|
167
|
+
}
|
|
168
|
+
}, []);
|
|
169
|
+
const handleTestConnection = async (providerId) => {
|
|
170
|
+
setTesting(providerId);
|
|
171
|
+
try {
|
|
172
|
+
const result = await setupWizardService.testProviderConnection({
|
|
173
|
+
providerId,
|
|
174
|
+
});
|
|
175
|
+
setTestResults((prev) => ({ ...prev, [providerId]: result }));
|
|
176
|
+
}
|
|
177
|
+
catch (e) {
|
|
178
|
+
setTestResults((prev) => ({
|
|
179
|
+
...prev,
|
|
180
|
+
[providerId]: {
|
|
181
|
+
success: false,
|
|
182
|
+
message: e?.message || "Failed to test the connection",
|
|
183
|
+
durationMs: 0,
|
|
184
|
+
},
|
|
185
|
+
}));
|
|
186
|
+
}
|
|
187
|
+
finally {
|
|
188
|
+
setTesting(null);
|
|
189
|
+
}
|
|
190
|
+
void refreshProviders();
|
|
191
|
+
};
|
|
192
|
+
const handleTestDraft = async () => {
|
|
193
|
+
setDraftTesting(true);
|
|
194
|
+
setDraftTestResult(null);
|
|
195
|
+
try {
|
|
196
|
+
const result = await setupWizardService.testProviderConnection({
|
|
197
|
+
type: formData.type,
|
|
198
|
+
apiKey: formData.apiKey?.trim() || undefined,
|
|
199
|
+
connectionString: formData.connectionString?.trim() || undefined,
|
|
200
|
+
baseUrl: formData.baseUrl?.trim() ||
|
|
201
|
+
selectedProviderType?.defaultBaseUrl ||
|
|
202
|
+
"",
|
|
203
|
+
});
|
|
204
|
+
setDraftTestResult(result);
|
|
205
|
+
}
|
|
206
|
+
catch (e) {
|
|
207
|
+
setDraftTestResult({
|
|
208
|
+
success: false,
|
|
209
|
+
message: e?.message || "Failed to test the connection",
|
|
210
|
+
durationMs: 0,
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
finally {
|
|
214
|
+
setDraftTesting(false);
|
|
215
|
+
}
|
|
216
|
+
};
|
|
115
217
|
const handleCreate = async () => {
|
|
116
218
|
const hasApiKey = Boolean(formData.apiKey?.trim());
|
|
117
219
|
const hasConnectionString = Boolean(formData.connectionString?.trim());
|
|
@@ -151,9 +253,14 @@ export function ProvidersPanel() {
|
|
|
151
253
|
if (isOpen && wasClosed) {
|
|
152
254
|
setFormData(createEmptyFormData());
|
|
153
255
|
setError(null);
|
|
256
|
+
setDraftTestResult(null);
|
|
154
257
|
}
|
|
155
258
|
prevShowFormRef.current = showForm;
|
|
156
259
|
}, [createEmptyFormData, showForm]);
|
|
260
|
+
// A test result only describes the values it was run against.
|
|
261
|
+
useEffect(() => {
|
|
262
|
+
setDraftTestResult(null);
|
|
263
|
+
}, [formData]);
|
|
157
264
|
const handleDelete = (providerId) => {
|
|
158
265
|
editContext?.confirm({
|
|
159
266
|
header: "Delete Provider",
|
|
@@ -199,6 +306,10 @@ export function ProvidersPanel() {
|
|
|
199
306
|
setSettingsHeaderActions(null);
|
|
200
307
|
};
|
|
201
308
|
}, [addProviderButton, setSettingsHeaderActions]);
|
|
309
|
+
const draftCanTest = !draftTesting &&
|
|
310
|
+
!creating &&
|
|
311
|
+
Boolean(formData.type) &&
|
|
312
|
+
Boolean(formData.apiKey?.trim() || formData.connectionString?.trim());
|
|
202
313
|
// Build the providers list content
|
|
203
314
|
const providersListContent = (_jsxs(SettingsPanelLayout, { children: [_jsxs("div", { className: "flex flex-col rounded-lg bg-white", children: [_jsx("div", { className: "border-border-default flex justify-end border-b p-4 md:hidden", children: addProviderButton }), providerTypes.length === 0 && state === "success" && (_jsx("div", { className: "border-feedback-orange bg-feedback-orange-light text-feedback-orange mx-4 mt-4 mb-3 rounded border p-3 text-xs", children: "No provider types are available. Please check the server configuration." })), error && !showForm && (_jsx("div", { className: "border-feedback-red bg-feedback-red-light text-feedback-red mx-4 mt-4 mb-3 rounded border p-2 text-xs whitespace-pre-wrap", children: error })), _jsx("div", { className: "px-4 py-3", children: providers.length === 0 && state === "success" ? (_jsx("div", { className: "flex flex-col items-center justify-center py-12 text-center", children: _jsx("p", { className: "text-neutral-grey-50 text-sm", children: "No providers configured yet." }) })) : (_jsx("div", { className: "divide-border-default divide-y", children: providers.map((provider) => {
|
|
204
315
|
const providerType = providerTypes.find((p) => p.providerId === provider.type);
|
|
@@ -212,6 +323,11 @@ export function ProvidersPanel() {
|
|
|
212
323
|
// base URL is stored on the provider record itself.
|
|
213
324
|
const displayBaseUrl = provider.baseUrl || providerType?.defaultBaseUrl || "";
|
|
214
325
|
const isDefaultBaseUrl = !provider.baseUrl && !!displayBaseUrl;
|
|
326
|
+
const isTesting = testing === provider.id;
|
|
327
|
+
const rawTestResult = testResults[provider.id];
|
|
328
|
+
const testResult = isRedundantTestResult(provider, rawTestResult)
|
|
329
|
+
? undefined
|
|
330
|
+
: rawTestResult;
|
|
215
331
|
return (_jsxs("div", { role: "button", tabIndex: 0, onClick: () => handleOpenConfig(provider), onKeyDown: (e) => {
|
|
216
332
|
if (e.key === "Enter" || e.key === " ") {
|
|
217
333
|
e.preventDefault();
|
|
@@ -221,10 +337,13 @@ export function ProvidersPanel() {
|
|
|
221
337
|
? "bg-neutral-grey-5"
|
|
222
338
|
: "hover:bg-neutral-grey-5 bg-white"}`, children: [_jsx(ProviderIcon, { providerId: provider.type, displayName: providerTypeDisplayName, providerName: provider.name, size: 24 }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [_jsx("span", { className: "text-neutral-grey-100 truncate font-medium", children: provider.name }), _jsx("span", { className: "bg-neutral-grey-5 badge-pad-sm text-neutral-grey-50 shrink-0 rounded text-[10px] font-medium", children: providerTypeDisplayName })] }), displayBaseUrl && (_jsxs("div", { className: `text-neutral-grey-50 mt-0.5 truncate font-mono text-xs ${isDefaultBaseUrl ? "italic" : ""}`, title: isDefaultBaseUrl
|
|
223
339
|
? `${displayBaseUrl} (provider default)`
|
|
224
|
-
: displayBaseUrl, children: [displayBaseUrl, isDefaultBaseUrl && (_jsx("span", { className: "not-italic", children: " (default)" }))] }))
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
340
|
+
: displayBaseUrl, children: [displayBaseUrl, isDefaultBaseUrl && (_jsx("span", { className: "not-italic", children: " (default)" }))] })), _jsx(ProviderCredentialHint, { provider: provider, className: "mt-1" }), testResult && (_jsx(ConnectionTestResultLine, { result: testResult, className: "mt-1" }))] }), _jsxs("div", { className: cn("flex shrink-0 items-center gap-0.5 transition-opacity group-focus-within:opacity-100 group-hover:opacity-100", isTesting ? "opacity-100" : "opacity-0"), children: [_jsx(Button, { size: "sm", variant: "ghost", onClick: (e) => {
|
|
341
|
+
e.stopPropagation();
|
|
342
|
+
void handleTestConnection(provider.id);
|
|
343
|
+
}, disabled: isTesting, title: "Test connection", "data-testid": "provider-test-connection", className: "text-neutral-grey-50 hover:bg-neutral-grey-5 hover:text-neutral-grey-100", children: isTesting ? (_jsx(RefreshCw, { strokeWidth: 1, className: "h-3.5 w-3.5 animate-spin" })) : (_jsx(PlugZap, { strokeWidth: 1, className: "h-4 w-4" })) }), _jsx(Button, { size: "sm", variant: "ghost", onClick: (e) => {
|
|
344
|
+
e.stopPropagation();
|
|
345
|
+
handleDelete(provider.id);
|
|
346
|
+
}, disabled: deleting === provider.id, title: "Delete provider", className: "text-neutral-grey-50 hover:bg-neutral-grey-5 hover:text-neutral-grey-50", children: deleting === provider.id ? (_jsx(RefreshCw, { strokeWidth: 1, className: "h-3.5 w-3.5 animate-spin" })) : (_jsx(DeleteIcon, { size: "md" })) })] })] }, provider.id));
|
|
228
347
|
}) })) })] }), _jsx(Dialog, { open: showForm, onOpenChange: (open) => {
|
|
229
348
|
setShowForm(open);
|
|
230
349
|
if (open) {
|
|
@@ -241,7 +360,9 @@ export function ProvidersPanel() {
|
|
|
241
360
|
}, options: providerTypeOptions, placeholder: "Select a provider" })] }), _jsxs("div", { children: [_jsx("label", { htmlFor: "provider-name", className: "text-neutral-grey-100 mb-1 block text-sm font-medium", children: "Name" }), _jsx(Input, { id: "provider-name", value: formData.name, onChange: (e) => setFormData({ ...formData, name: e.target.value }), placeholder: "My Provider" })] }), _jsxs("div", { children: [_jsx("label", { htmlFor: "provider-config-value-input", className: "text-neutral-grey-100 mb-1 block text-sm font-medium", children: "API Key (optional)" }), _jsx(Input, { id: "provider-config-value-input", type: "text", name: "provider-config-value", autoComplete: "off", autoCapitalize: "none", spellCheck: false, className: formData.apiKey ? "[-webkit-text-security:disc]" : undefined, value: formData.apiKey || "", onChange: (e) => setFormData({ ...formData, apiKey: e.target.value }), placeholder: "sk-..." })] }), _jsxs("div", { children: [_jsx("label", { htmlFor: "provider-connection-string-input", className: "text-neutral-grey-100 mb-1 block text-sm font-medium", children: "Connection String Name (optional)" }), _jsx(Input, { id: "provider-connection-string-input", type: "text", value: formData.connectionString || "", onChange: (e) => setFormData({
|
|
242
361
|
...formData,
|
|
243
362
|
connectionString: e.target.value,
|
|
244
|
-
}), placeholder: "parhelia.ai.provider.<providerId>" }), _jsxs("p", { className: "text-neutral-grey-50 mt-1 text-xs", children: ["Provide either an API key above or a connection-string entry. For the latter, add", " ", _jsx("code", { children: "<add name=\"parhelia.ai.provider.openrouter\" connectionString=\"ApiKey=...\" />" }), " ", "to ConnectionStrings.config, then enter its name above."] })] }), _jsxs("div", { children: [_jsx("label", { htmlFor: "provider-baseurl", className: "text-neutral-grey-100 mb-1 block text-sm font-medium", children: "Base URL (optional)" }), _jsx(Input, { id: "provider-baseurl", value: formData.baseUrl, onChange: (e) => setFormData({ ...formData, baseUrl: e.target.value }), placeholder: selectedProviderType?.defaultBaseUrl || "" })] }),
|
|
363
|
+
}), placeholder: "parhelia.ai.provider.<providerId>" }), _jsxs("p", { className: "text-neutral-grey-50 mt-1 text-xs", children: ["Provide either an API key above or a connection-string entry. For the latter, add", " ", _jsx("code", { children: "<add name=\"parhelia.ai.provider.openrouter\" connectionString=\"ApiKey=...\" />" }), " ", "to ConnectionStrings.config, then enter its name above."] })] }), _jsxs("div", { children: [_jsx("label", { htmlFor: "provider-baseurl", className: "text-neutral-grey-100 mb-1 block text-sm font-medium", children: "Base URL (optional)" }), _jsx(Input, { id: "provider-baseurl", value: formData.baseUrl, onChange: (e) => setFormData({ ...formData, baseUrl: e.target.value }), placeholder: selectedProviderType?.defaultBaseUrl || "" })] }), draftTestResult && (_jsx(ConnectionTestResultLine, { result: draftTestResult, className: cn("rounded border p-3 text-sm", draftTestResult.success
|
|
364
|
+
? "border-feedback-green bg-feedback-green-light"
|
|
365
|
+
: "border-feedback-red bg-feedback-red-light") })), error && (_jsx("div", { className: "border-feedback-red bg-feedback-red-light text-feedback-red rounded border p-3 text-sm", children: error }))] }), _jsxs(DialogFooter, { className: "px-6 pb-6", children: [_jsx(Button, { variant: "outline", onClick: handleTestDraft, disabled: !draftCanTest, title: "Test connection", "data-testid": "provider-draft-test-connection", className: "mr-auto", children: draftTesting ? (_jsxs(_Fragment, { children: [_jsx(RefreshCw, { strokeWidth: 1, className: "mr-2 h-4 w-4 animate-spin" }), "Testing..."] })) : (_jsxs(_Fragment, { children: [_jsx(PlugZap, { strokeWidth: 1, className: "mr-2 h-4 w-4" }), "Test connection"] })) }), _jsx(Button, { variant: "outline", onClick: () => {
|
|
245
366
|
setShowForm(false);
|
|
246
367
|
setFormData(createEmptyFormData());
|
|
247
368
|
setError(null);
|
|
@@ -249,8 +370,21 @@ export function ProvidersPanel() {
|
|
|
249
370
|
!formData.name ||
|
|
250
371
|
(!formData.apiKey && !formData.connectionString) ||
|
|
251
372
|
!formData.type, children: creating ? (_jsxs(_Fragment, { children: [_jsx(RefreshCw, { strokeWidth: 1, className: "mr-2 h-4 w-4 animate-spin" }), "Creating..."] })) : (_jsxs(_Fragment, { children: [_jsx(CheckCircle, { strokeWidth: 1, className: "mr-2 h-4 w-4" }), "Create"] })) })] })] }) })] }));
|
|
373
|
+
// The list holds the freshest provider record (hints refresh after tests);
|
|
374
|
+
// fall back to the selection snapshot until the list catches up.
|
|
375
|
+
const selectedProviderRecord = selectedProvider
|
|
376
|
+
? (providers.find((p) => p.id === selectedProvider.id) ?? selectedProvider)
|
|
377
|
+
: null;
|
|
378
|
+
const selectedRawTestResult = selectedProvider
|
|
379
|
+
? testResults[selectedProvider.id]
|
|
380
|
+
: undefined;
|
|
381
|
+
const selectedTestResult = selectedProviderRecord &&
|
|
382
|
+
isRedundantTestResult(selectedProviderRecord, selectedRawTestResult)
|
|
383
|
+
? undefined
|
|
384
|
+
: selectedRawTestResult;
|
|
385
|
+
const selectedIsTesting = Boolean(selectedProvider && testing === selectedProvider.id);
|
|
252
386
|
// Build splitter panels - only show config panel when a provider is selected
|
|
253
|
-
const panels =
|
|
387
|
+
const panels = selectedProviderRecord?.id
|
|
254
388
|
? [
|
|
255
389
|
{
|
|
256
390
|
name: "providers-list",
|
|
@@ -261,7 +395,8 @@ export function ProvidersPanel() {
|
|
|
261
395
|
{
|
|
262
396
|
name: "provider-config",
|
|
263
397
|
defaultSize: 400,
|
|
264
|
-
content: (_jsx(ProviderConfigPanel, { itemId:
|
|
398
|
+
content: (_jsx(ProviderConfigPanel, { itemId: selectedProviderRecord.id, title: `Configure: ${selectedProviderRecord.name || "Provider"}`, onClose: handleCloseConfig, actions: _jsxs(Button, { variant: "outline", size: "sm", onClick: () => void handleTestConnection(selectedProviderRecord.id), disabled: selectedIsTesting, title: "Test connection", "data-testid": "provider-config-test-connection", children: [selectedIsTesting ? (_jsx(RefreshCw, { className: "h-3.5 w-3.5 animate-spin", strokeWidth: 1 })) : (_jsx(PlugZap, { className: "h-3.5 w-3.5", strokeWidth: 1 })), "Test connection"] }), supplementalContent: describeProviderCredentialProblem(selectedProviderRecord) ||
|
|
399
|
+
selectedTestResult ? (_jsxs("div", { className: "border-border-default space-y-2 rounded-lg border bg-white p-4", children: [_jsx(ProviderCredentialHint, { provider: selectedProviderRecord }), selectedTestResult && (_jsx(ConnectionTestResultLine, { result: selectedTestResult }))] })) : undefined }, selectedProviderRecord.id)),
|
|
265
400
|
className: "overflow-hidden",
|
|
266
401
|
},
|
|
267
402
|
]
|