@schlessera/brain-ui-react 0.24.0 → 0.26.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.
- package/dist/components/settings/models-tab.d.ts +7 -1
- package/dist/components/settings/models-tab.d.ts.map +1 -1
- package/dist/components/settings/models-tab.js +34 -3
- package/dist/components/settings/models-tab.js.map +1 -1
- package/dist/components/settings/web-search-settings.d.ts +15 -0
- package/dist/components/settings/web-search-settings.d.ts.map +1 -0
- package/dist/components/settings/web-search-settings.js +81 -0
- package/dist/components/settings/web-search-settings.js.map +1 -0
- package/dist/lib/api-client.d.ts +31 -1
- package/dist/lib/api-client.d.ts.map +1 -1
- package/dist/lib/api-client.js +15 -0
- package/dist/lib/api-client.js.map +1 -1
- package/package.json +2 -2
- package/src/components/settings/models-tab.tsx +68 -4
- package/src/components/settings/web-search-settings.tsx +203 -0
- package/src/lib/api-client.ts +44 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type BillingMode, type ModelCatalogEntry, type ThinkingLevel } from "@schlessera/brain-ui-sdk/protocol";
|
|
2
2
|
/**
|
|
3
3
|
* The model picker's contents, and which of them to show.
|
|
4
4
|
*
|
|
@@ -23,4 +23,10 @@ export declare function createRequestGate(): {
|
|
|
23
23
|
* REMOVED, never stored as a redundant explicit value.
|
|
24
24
|
*/
|
|
25
25
|
export declare function nextBillingOverrides(models: ModelCatalogEntry[], id: string, next: BillingMode | "auto"): Record<string, BillingMode>;
|
|
26
|
+
/**
|
|
27
|
+
* The effort-override record PUT after changing one profile: every other
|
|
28
|
+
* profile keeps its stored override, the changed one is set — or, for "auto",
|
|
29
|
+
* REMOVED, never stored as a redundant explicit value.
|
|
30
|
+
*/
|
|
31
|
+
export declare function nextThinkingOverrides(models: ModelCatalogEntry[], id: string, next: ThinkingLevel | "auto"): Record<string, ThinkingLevel>;
|
|
26
32
|
//# sourceMappingURL=models-tab.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models-tab.d.ts","sourceRoot":"","sources":["../../../src/components/settings/models-tab.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"models-tab.d.ts","sourceRoot":"","sources":["../../../src/components/settings/models-tab.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,iBAAiB,EAEtB,KAAK,aAAa,EACnB,MAAM,mCAAmC,CAAC;AAO3C;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,+BA0PxD;AA6HD;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI;IAAE,KAAK,EAAE,MAAM,MAAM,OAAO,CAAA;CAAE,CAQlE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,iBAAiB,EAAE,EAC3B,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,WAAW,GAAG,MAAM,GACzB,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAO7B;AAMD;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,iBAAiB,EAAE,EAC3B,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,aAAa,GAAG,MAAM,GAC3B,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAQ/B"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useEffect, useRef, useState } from "react";
|
|
3
3
|
import { Eye, EyeOff, Loader2, RefreshCw, X } from "lucide-react";
|
|
4
|
+
import { THINKING_LEVELS, } from "@schlessera/brain-ui-sdk/protocol";
|
|
4
5
|
import { api } from "../../lib/api-client.js";
|
|
5
6
|
import { useProviderStore } from "../../stores/provider-store.js";
|
|
6
7
|
import { cn } from "../../lib/utils.js";
|
|
7
8
|
import { PiAccountsSection } from "./pi-accounts.js";
|
|
9
|
+
import { WebSearchSection } from "./web-search-settings.js";
|
|
8
10
|
/**
|
|
9
11
|
* The model picker's contents, and which of them to show.
|
|
10
12
|
*
|
|
@@ -115,6 +117,21 @@ export function ModelsTab({ active }) {
|
|
|
115
117
|
}),
|
|
116
118
|
}, () => api.setBillingOverrides(nextBillingOverrides(catalog.models, entry.id, next)));
|
|
117
119
|
}
|
|
120
|
+
async function changeThinking(entry, next) {
|
|
121
|
+
if (!catalog)
|
|
122
|
+
return;
|
|
123
|
+
await commitCatalog({
|
|
124
|
+
...catalog,
|
|
125
|
+
models: catalog.models.map((model) => {
|
|
126
|
+
if (model.id !== entry.id)
|
|
127
|
+
return model;
|
|
128
|
+
const { thinkingOverride: _cleared, ...base } = model;
|
|
129
|
+
return next === "auto"
|
|
130
|
+
? base
|
|
131
|
+
: { ...base, thinkingOverride: next, thinkingLevel: next };
|
|
132
|
+
}),
|
|
133
|
+
}, () => api.setThinkingOverrides(nextThinkingOverrides(catalog.models, entry.id, next)));
|
|
134
|
+
}
|
|
118
135
|
async function changeDefault(next) {
|
|
119
136
|
if (!catalog)
|
|
120
137
|
return;
|
|
@@ -144,7 +161,7 @@ export function ModelsTab({ active }) {
|
|
|
144
161
|
}
|
|
145
162
|
}
|
|
146
163
|
const visibleCount = catalog?.models.filter((m) => !m.hidden).length ?? 0;
|
|
147
|
-
return (_jsxs("div", { className: "flex h-full flex-col", children: [_jsxs("div", { className: "flex-1 overflow-y-auto p-4", children: [_jsx("h3", { className: "text-xs font-medium uppercase tracking-wide text-muted-foreground", children: "Models" }), _jsx("p", { className: "mt-1 text-xs text-muted-foreground", children: "The list is read from the provider and refreshes on its own. Hide the ones you never pick \u2014 running sessions are unaffected." }), catalog && (_jsx(DefaultModelSelect, { catalog: catalog, onChange: changeDefault })), loading ? (_jsx("div", { className: "mt-6 flex justify-center", children: _jsx(Loader2, { className: "h-5 w-5 animate-spin text-muted-foreground" }) })) : (_jsxs("ul", { className: "mt-4 flex flex-col gap-2", children: [catalog?.models.map((entry) => (_jsx(ModelRow, { entry: entry, onToggle: () => toggleHidden(entry), onBilling: (next) => changeBilling(entry, next) }, entry.id))), catalog?.models.length === 0 && (_jsx("li", { className: "rounded-lg border border-dashed border-border-subtle p-4 text-center text-xs text-muted-foreground", children: "No models available." }))] })), error && (_jsx("p", { role: "alert", className: "mt-3 text-xs text-destructive", children: error })), catalog?.discovery.error && (_jsxs("p", { className: "mt-3 text-xs text-muted-foreground", children: ["Last refresh failed (", catalog.discovery.error, "). Showing the last known list."] })), catalog && !catalog.discovery.enabled && (_jsx("p", { className: "mt-3 text-xs text-muted-foreground", children: "Discovery is disabled (BRAIN_UI_MODEL_DISCOVERY). Only configured profiles are listed." })), catalog && (_jsx(OpenRouterSection, { models: catalog.customModels ?? [], onChange: setCustom })), _jsx(PiAccountsSection, { active: active })] }), _jsxs("div", { className: "flex items-center justify-between gap-3 border-t border-border p-4", children: [_jsxs("span", { className: "text-[11px] text-muted-foreground", children: [visibleCount, " in picker \u00B7 ", formatRefreshed(catalog?.refreshedAt ?? null)] }), _jsxs("button", { onClick: onRefresh, disabled: refreshing, className: "flex items-center gap-2 rounded-lg border border-border-subtle bg-surface px-3 py-2 text-xs font-medium text-foreground transition-colors hover:border-primary hover:text-primary disabled:opacity-50", children: [_jsx(RefreshCw, { className: cn("h-3.5 w-3.5", refreshing && "animate-spin") }), "Refresh"] })] })] }));
|
|
164
|
+
return (_jsxs("div", { className: "flex h-full flex-col", children: [_jsxs("div", { className: "flex-1 overflow-y-auto p-4", children: [_jsx("h3", { className: "text-xs font-medium uppercase tracking-wide text-muted-foreground", children: "Models" }), _jsx("p", { className: "mt-1 text-xs text-muted-foreground", children: "The list is read from the provider and refreshes on its own. Hide the ones you never pick \u2014 running sessions are unaffected." }), catalog && (_jsx(DefaultModelSelect, { catalog: catalog, onChange: changeDefault })), loading ? (_jsx("div", { className: "mt-6 flex justify-center", children: _jsx(Loader2, { className: "h-5 w-5 animate-spin text-muted-foreground" }) })) : (_jsxs("ul", { className: "mt-4 flex flex-col gap-2", children: [catalog?.models.map((entry) => (_jsx(ModelRow, { entry: entry, onToggle: () => toggleHidden(entry), onBilling: (next) => changeBilling(entry, next), onThinking: (next) => changeThinking(entry, next) }, entry.id))), catalog?.models.length === 0 && (_jsx("li", { className: "rounded-lg border border-dashed border-border-subtle p-4 text-center text-xs text-muted-foreground", children: "No models available." }))] })), error && (_jsx("p", { role: "alert", className: "mt-3 text-xs text-destructive", children: error })), catalog?.discovery.error && (_jsxs("p", { className: "mt-3 text-xs text-muted-foreground", children: ["Last refresh failed (", catalog.discovery.error, "). Showing the last known list."] })), catalog && !catalog.discovery.enabled && (_jsx("p", { className: "mt-3 text-xs text-muted-foreground", children: "Discovery is disabled (BRAIN_UI_MODEL_DISCOVERY). Only configured profiles are listed." })), catalog && (_jsx(OpenRouterSection, { models: catalog.customModels ?? [], onChange: setCustom })), _jsx(PiAccountsSection, { active: active }), _jsx(WebSearchSection, { active: active })] }), _jsxs("div", { className: "flex items-center justify-between gap-3 border-t border-border p-4", children: [_jsxs("span", { className: "text-[11px] text-muted-foreground", children: [visibleCount, " in picker \u00B7 ", formatRefreshed(catalog?.refreshedAt ?? null)] }), _jsxs("button", { onClick: onRefresh, disabled: refreshing, className: "flex items-center gap-2 rounded-lg border border-border-subtle bg-surface px-3 py-2 text-xs font-medium text-foreground transition-colors hover:border-primary hover:text-primary disabled:opacity-50", children: [_jsx(RefreshCw, { className: cn("h-3.5 w-3.5", refreshing && "animate-spin") }), "Refresh"] })] })] }));
|
|
148
165
|
}
|
|
149
166
|
/**
|
|
150
167
|
* The default-model choice: which profile answers when a turn names none —
|
|
@@ -213,9 +230,23 @@ export function nextBillingOverrides(models, id, next) {
|
|
|
213
230
|
function billingLabel(mode) {
|
|
214
231
|
return mode === "api" ? "API" : "Subscription";
|
|
215
232
|
}
|
|
216
|
-
|
|
233
|
+
/**
|
|
234
|
+
* The effort-override record PUT after changing one profile: every other
|
|
235
|
+
* profile keeps its stored override, the changed one is set — or, for "auto",
|
|
236
|
+
* REMOVED, never stored as a redundant explicit value.
|
|
237
|
+
*/
|
|
238
|
+
export function nextThinkingOverrides(models, id, next) {
|
|
239
|
+
const thinking = {};
|
|
240
|
+
for (const model of models) {
|
|
241
|
+
const value = model.id === id ? (next === "auto" ? undefined : next) : model.thinkingOverride;
|
|
242
|
+
if (value)
|
|
243
|
+
thinking[model.id] = value;
|
|
244
|
+
}
|
|
245
|
+
return thinking;
|
|
246
|
+
}
|
|
247
|
+
function ModelRow({ entry, onToggle, onBilling, onThinking, }) {
|
|
217
248
|
const Icon = entry.hidden ? EyeOff : Eye;
|
|
218
|
-
return (_jsxs("li", { className: cn("flex items-center gap-3 rounded-lg border border-border-subtle bg-surface p-3", entry.hidden && "opacity-50"), children: [_jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("p", { className: "truncate text-sm text-foreground", children: entry.label }), _jsxs("p", { className: "truncate text-[11px] text-muted-foreground", children: [entry.id, entry.contextWindow ? ` · ${formatTokens(entry.contextWindow)}` : "", entry.source === "declared" ? " · configured" : ""] })] }), _jsxs("select", { value: entry.billingOverride ?? "auto", onChange: (e) => onBilling(e.target.value), "aria-label": `Billing for ${entry.label}`, className: "h-8 shrink-0 rounded-lg border border-border-subtle bg-surface px-1.5 text-[11px] text-muted-foreground transition-colors hover:border-primary hover:text-foreground", children: [_jsx("option", { value: "auto", children: !entry.billingOverride && entry.billingMode
|
|
249
|
+
return (_jsxs("li", { className: cn("flex items-center gap-3 rounded-lg border border-border-subtle bg-surface p-3", entry.hidden && "opacity-50"), children: [_jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("p", { className: "truncate text-sm text-foreground", children: entry.label }), _jsxs("p", { className: "truncate text-[11px] text-muted-foreground", children: [entry.id, entry.contextWindow ? ` · ${formatTokens(entry.contextWindow)}` : "", entry.source === "declared" ? " · configured" : ""] })] }), entry.thinkingLevel && (_jsxs("select", { value: entry.thinkingOverride ?? "auto", onChange: (e) => onThinking(e.target.value), "aria-label": `Reasoning effort for ${entry.label}`, className: "h-8 shrink-0 rounded-lg border border-border-subtle bg-surface px-1.5 text-[11px] text-muted-foreground transition-colors hover:border-primary hover:text-foreground", children: [_jsx("option", { value: "auto", children: !entry.thinkingOverride ? `Default (${entry.thinkingLevel})` : "Default" }), THINKING_LEVELS.map((level) => (_jsx("option", { value: level, children: level }, level)))] })), _jsxs("select", { value: entry.billingOverride ?? "auto", onChange: (e) => onBilling(e.target.value), "aria-label": `Billing for ${entry.label}`, className: "h-8 shrink-0 rounded-lg border border-border-subtle bg-surface px-1.5 text-[11px] text-muted-foreground transition-colors hover:border-primary hover:text-foreground", children: [_jsx("option", { value: "auto", children: !entry.billingOverride && entry.billingMode
|
|
219
250
|
? `Auto (${billingLabel(entry.billingMode).toLowerCase()})`
|
|
220
251
|
: "Auto" }), _jsx("option", { value: "subscription", children: "Subscription" }), _jsx("option", { value: "api", children: "API" })] }), _jsx("button", { onClick: onToggle, title: entry.hidden ? "Show in picker" : "Hide from picker", "aria-pressed": !entry.hidden, className: "flex h-8 w-8 shrink-0 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:bg-surface-raised hover:text-foreground", children: _jsx(Icon, { className: "h-4 w-4" }) })] }));
|
|
221
252
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models-tab.js","sourceRoot":"","sources":["../../../src/components/settings/models-tab.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"models-tab.js","sourceRoot":"","sources":["../../../src/components/settings/models-tab.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Web-search provider settings for the pi backend's web extension
|
|
3
|
+
* (pi-web-access). The default needs nothing: "Auto" starts with Exa's free
|
|
4
|
+
* keyless tier. This card lets the user pick an explicit provider and store
|
|
5
|
+
* its API key server-side — most usefully an Exa key, which lifts the free
|
|
6
|
+
* tier's rate limit.
|
|
7
|
+
*
|
|
8
|
+
* Key values never come back from the server; the UI only ever learns
|
|
9
|
+
* "a key is stored". Renders nothing when the server reports pi as not
|
|
10
|
+
* configured, so the Models tab is unchanged for Claude-only deployments.
|
|
11
|
+
*/
|
|
12
|
+
export declare function WebSearchSection({ active }: {
|
|
13
|
+
active: boolean;
|
|
14
|
+
}): import("react").JSX.Element | null;
|
|
15
|
+
//# sourceMappingURL=web-search-settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-search-settings.d.ts","sourceRoot":"","sources":["../../../src/components/settings/web-search-settings.tsx"],"names":[],"mappings":"AAKA;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,sCAkH/D"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from "react";
|
|
3
|
+
import { Check, Loader2, X } from "lucide-react";
|
|
4
|
+
import { api } from "../../lib/api-client.js";
|
|
5
|
+
import { cn } from "../../lib/utils.js";
|
|
6
|
+
/**
|
|
7
|
+
* Web-search provider settings for the pi backend's web extension
|
|
8
|
+
* (pi-web-access). The default needs nothing: "Auto" starts with Exa's free
|
|
9
|
+
* keyless tier. This card lets the user pick an explicit provider and store
|
|
10
|
+
* its API key server-side — most usefully an Exa key, which lifts the free
|
|
11
|
+
* tier's rate limit.
|
|
12
|
+
*
|
|
13
|
+
* Key values never come back from the server; the UI only ever learns
|
|
14
|
+
* "a key is stored". Renders nothing when the server reports pi as not
|
|
15
|
+
* configured, so the Models tab is unchanged for Claude-only deployments.
|
|
16
|
+
*/
|
|
17
|
+
export function WebSearchSection({ active }) {
|
|
18
|
+
const [config, setConfig] = useState(null);
|
|
19
|
+
const [error, setError] = useState(null);
|
|
20
|
+
const [busy, setBusy] = useState(false);
|
|
21
|
+
const [keyDraft, setKeyDraft] = useState("");
|
|
22
|
+
const [savedFlash, setSavedFlash] = useState(false);
|
|
23
|
+
async function reload() {
|
|
24
|
+
try {
|
|
25
|
+
const next = await api.webSearchConfig();
|
|
26
|
+
setConfig(next);
|
|
27
|
+
setError(null);
|
|
28
|
+
}
|
|
29
|
+
catch (err) {
|
|
30
|
+
setError(err instanceof Error ? err.message : "Could not load web-search settings");
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
useEffect(() => {
|
|
34
|
+
if (active)
|
|
35
|
+
void reload();
|
|
36
|
+
}, [active]);
|
|
37
|
+
async function update(change) {
|
|
38
|
+
setBusy(true);
|
|
39
|
+
setError(null);
|
|
40
|
+
try {
|
|
41
|
+
const next = await api.webSearchUpdate(change);
|
|
42
|
+
setConfig(next);
|
|
43
|
+
if (change.apiKeys) {
|
|
44
|
+
setKeyDraft("");
|
|
45
|
+
setSavedFlash(true);
|
|
46
|
+
setTimeout(() => setSavedFlash(false), 2000);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
setError(err instanceof Error ? err.message : "Could not save web-search settings");
|
|
51
|
+
}
|
|
52
|
+
finally {
|
|
53
|
+
setBusy(false);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if (!config || !config.configured)
|
|
57
|
+
return null;
|
|
58
|
+
const selected = config.providers.find((p) => p.id === config.provider);
|
|
59
|
+
const keyProvider = selected?.hasKeyField ? selected : null;
|
|
60
|
+
return (_jsxs("div", { className: "mt-6", children: [_jsx("h3", { className: "text-xs font-medium uppercase tracking-wide text-muted-foreground", children: "Web search" }), _jsx("p", { className: "mt-1 text-xs text-muted-foreground", children: "Searches run on Exa's free tier by default \u2014 no key, rate-limited. Add an Exa API key to lift the limit, or pick a different provider. Changes apply to new conversations." }), _jsxs("div", { className: "mt-4 rounded-lg border border-border-subtle bg-surface p-3", children: [_jsx("label", { className: "block text-[11px] font-medium text-muted-foreground", children: "Provider" }), _jsx("select", { value: config.provider, disabled: busy, onChange: (e) => {
|
|
61
|
+
setKeyDraft("");
|
|
62
|
+
void update({ provider: e.target.value });
|
|
63
|
+
}, className: "mt-1 w-full rounded-md border border-border-subtle bg-background px-2 py-1.5 text-sm text-foreground focus:border-primary focus:outline-none disabled:opacity-50", children: config.providers.map((p) => (_jsxs("option", { value: p.id, children: [p.label, p.keyConfigured ? " · key stored" : ""] }, p.id))) }), config.provider === "auto" && (_jsx(ExaKeyHint, { config: config })), keyProvider && (_jsxs("div", { className: "mt-3", children: [_jsxs("label", { className: "block text-[11px] font-medium text-muted-foreground", children: [keyProvider.label, " API key", keyProvider.keyConfigured && (_jsxs("span", { className: "ml-2 inline-flex items-center gap-1 text-primary", children: [_jsx(Check, { className: "h-3 w-3" }), " stored"] })), keyProvider.id === "exa" && !keyProvider.keyConfigured && (_jsx("span", { className: "ml-2 text-muted-foreground", children: "optional \u2014 free tier works without one" }))] }), _jsx(KeyEditor, { busy: busy, draft: keyDraft, setDraft: setKeyDraft, keyConfigured: keyProvider.keyConfigured, savedFlash: savedFlash, onSave: () => void update({ apiKeys: { [keyProvider.id]: keyDraft } }), onClear: () => void update({ apiKeys: { [keyProvider.id]: null } }) })] })), error && _jsx("p", { className: "mt-2 text-xs text-destructive", children: error })] })] }));
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* In Auto mode the Exa key still matters (Auto's first stop is Exa) — offer
|
|
67
|
+
* the same editor without forcing a provider switch.
|
|
68
|
+
*/
|
|
69
|
+
function ExaKeyHint({ config }) {
|
|
70
|
+
const exa = config.providers.find((p) => p.id === "exa");
|
|
71
|
+
if (!exa?.keyConfigured)
|
|
72
|
+
return null;
|
|
73
|
+
return (_jsxs("p", { className: "mt-2 flex items-center gap-1 text-[11px] text-muted-foreground", children: [_jsx(Check, { className: "h-3 w-3 text-primary" }), "An Exa key is stored \u2014 Auto's Exa searches run unthrottled."] }));
|
|
74
|
+
}
|
|
75
|
+
function KeyEditor({ busy, draft, setDraft, keyConfigured, savedFlash, onSave, onClear, }) {
|
|
76
|
+
return (_jsxs("div", { className: "mt-1 flex items-center gap-2", children: [_jsx("input", { type: "password", value: draft, disabled: busy, placeholder: keyConfigured ? "•••••••• (stored — enter to replace)" : "Paste API key", onChange: (e) => setDraft(e.target.value), onKeyDown: (e) => {
|
|
77
|
+
if (e.key === "Enter" && draft.trim())
|
|
78
|
+
onSave();
|
|
79
|
+
}, autoComplete: "off", className: "min-w-0 flex-1 rounded-md border border-border-subtle bg-background px-2 py-1.5 text-sm text-foreground placeholder:text-muted-foreground focus:border-primary focus:outline-none disabled:opacity-50" }), _jsxs("button", { onClick: onSave, disabled: busy || !draft.trim(), className: cn("flex items-center gap-1 rounded-md border border-border-subtle px-2.5 py-1.5 text-xs font-medium transition-colors", "text-foreground hover:border-primary hover:text-primary disabled:opacity-50"), children: [busy ? _jsx(Loader2, { className: "h-3 w-3 animate-spin" }) : savedFlash ? _jsx(Check, { className: "h-3 w-3" }) : null, "Save"] }), keyConfigured && (_jsxs("button", { onClick: onClear, disabled: busy, title: "Remove the stored key", className: "flex items-center gap-1 rounded-md border border-border-subtle px-2.5 py-1.5 text-xs font-medium text-muted-foreground transition-colors hover:border-destructive hover:text-destructive disabled:opacity-50", children: [_jsx(X, { className: "h-3 w-3" }), "Clear"] }))] }));
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=web-search-settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-search-settings.js","sourceRoot":"","sources":["../../../src/components/settings/web-search-settings.tsx"],"names":[],"mappings":"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"}
|
package/dist/lib/api-client.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { VoiceKeytermsResponse, VoiceTokenResponse, VoiceSessionResponse, PronunciationOverride, ProviderInfo, PasskeySummary, BillingMode, ModelCatalogResponse, ActivityRunSummary, ActivityRunDetail, ActivityRollups, ActivityDigest, ActivityIntent } from "@schlessera/brain-ui-sdk/protocol";
|
|
1
|
+
import type { VoiceKeytermsResponse, VoiceTokenResponse, VoiceSessionResponse, PronunciationOverride, ProviderInfo, PasskeySummary, BillingMode, ModelCatalogResponse, ThinkingLevel, ActivityRunSummary, ActivityRunDetail, ActivityRollups, ActivityDigest, ActivityIntent } from "@schlessera/brain-ui-sdk/protocol";
|
|
2
2
|
export type { ActivityRunSummary, ActivityRunDetail, ActivityRunRollup, ActivityAggregate, ActivityRollups, ActivityDigest, ActivityIntent, } from "@schlessera/brain-ui-sdk/protocol";
|
|
3
3
|
import type { AuthenticationResponseJSON, RegistrationResponseJSON, PublicKeyCredentialCreationOptionsJSON, PublicKeyCredentialRequestOptionsJSON } from "@simplewebauthn/browser";
|
|
4
4
|
/**
|
|
@@ -66,6 +66,24 @@ export interface PiLoginFlow {
|
|
|
66
66
|
error?: string;
|
|
67
67
|
startedAt: number;
|
|
68
68
|
}
|
|
69
|
+
/** One selectable web-search provider (mirror of the server view). */
|
|
70
|
+
export interface WebSearchProvider {
|
|
71
|
+
id: string;
|
|
72
|
+
label: string;
|
|
73
|
+
/** Whether this provider accepts an API key ("auto" does not). */
|
|
74
|
+
hasKeyField: boolean;
|
|
75
|
+
/** True when a key for it is stored server-side (values never travel). */
|
|
76
|
+
keyConfigured: boolean;
|
|
77
|
+
/** True when the provider works without any key (Exa's free tier). */
|
|
78
|
+
keyless: boolean;
|
|
79
|
+
}
|
|
80
|
+
/** Web-search configuration for the pi backend's web extension. */
|
|
81
|
+
export interface WebSearchConfig {
|
|
82
|
+
/** False when the pi backend is not configured — hide the card. */
|
|
83
|
+
configured: boolean;
|
|
84
|
+
provider: string;
|
|
85
|
+
providers: WebSearchProvider[];
|
|
86
|
+
}
|
|
69
87
|
export declare const api: {
|
|
70
88
|
health: () => Promise<{
|
|
71
89
|
status: string;
|
|
@@ -161,6 +179,18 @@ export declare const api: {
|
|
|
161
179
|
piAuthLogout: (providerId: string) => Promise<{
|
|
162
180
|
ok: boolean;
|
|
163
181
|
}>;
|
|
182
|
+
/** Web-search provider config; `configured: false` when pi is not in play. */
|
|
183
|
+
webSearchConfig: () => Promise<WebSearchConfig>;
|
|
184
|
+
/**
|
|
185
|
+
* Update the web-search provider and/or stored API keys (null/"" clears a
|
|
186
|
+
* key). Returns the updated config.
|
|
187
|
+
*/
|
|
188
|
+
webSearchUpdate: (update: {
|
|
189
|
+
provider?: string;
|
|
190
|
+
apiKeys?: Record<string, string | null>;
|
|
191
|
+
}) => Promise<WebSearchConfig>;
|
|
192
|
+
/** Replace the reasoning-effort override record (full record, not a delta). */
|
|
193
|
+
setThinkingOverrides: (thinking: Record<string, ThinkingLevel>) => Promise<ModelCatalogResponse>;
|
|
164
194
|
/** Set the default model (a profile id, or null for auto); returns the new catalog. */
|
|
165
195
|
setDefaultModel: (defaultId: string | null) => Promise<ModelCatalogResponse>;
|
|
166
196
|
/** Replace the custom OpenRouter model list (full list, not a delta). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/api-client.js
CHANGED
|
@@ -77,6 +77,21 @@ export const api = {
|
|
|
77
77
|
method: "POST",
|
|
78
78
|
body: JSON.stringify({ providerId }),
|
|
79
79
|
}),
|
|
80
|
+
/** Web-search provider config; `configured: false` when pi is not in play. */
|
|
81
|
+
webSearchConfig: () => fetchJson("/web-search"),
|
|
82
|
+
/**
|
|
83
|
+
* Update the web-search provider and/or stored API keys (null/"" clears a
|
|
84
|
+
* key). Returns the updated config.
|
|
85
|
+
*/
|
|
86
|
+
webSearchUpdate: (update) => fetchJson("/web-search", {
|
|
87
|
+
method: "PUT",
|
|
88
|
+
body: JSON.stringify(update),
|
|
89
|
+
}),
|
|
90
|
+
/** Replace the reasoning-effort override record (full record, not a delta). */
|
|
91
|
+
setThinkingOverrides: (thinking) => fetchJson("/models/thinking", {
|
|
92
|
+
method: "PUT",
|
|
93
|
+
body: JSON.stringify({ thinking }),
|
|
94
|
+
}),
|
|
80
95
|
/** Set the default model (a profile id, or null for auto); returns the new catalog. */
|
|
81
96
|
setDefaultModel: (defaultId) => fetchJson("/models/default", {
|
|
82
97
|
method: "PUT",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AA+HvC,KAAK,UAAU,SAAS,CAAI,IAAY,EAAE,IAAkB;IAC1D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE;QAC7C,GAAG,IAAI;QACP,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,GAAG,IAAI,EAAE,OAAO;SACjB;KACF,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,MAAM,EAAE,GAAG,EAAE,CACX,SAAS,CAAsD,SAAS,CAAC;IAE3E,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS,CAAmB,YAAY,CAAC;IAEzD,MAAM,EAAE,GAAG,EAAE,CACX,SAAS,CASN,SAAS,CAAC;IAEf,WAAW,EAAE,CACX,CAAS,EACT,IAMC,EACD,EAAE;IACF,wEAAwE;IACxE,2EAA2E;IAC3E,+BAA+B;IAC/B,SAAS,CACP,mBAAmB,kBAAkB,CAAC,CAAC,CAAC,EAAE;QACxC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAC1C,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CACzB;IAEH,aAAa,EAAE,GAAG,EAAE,CAClB,SAAS,CAAsB,iBAAiB,CAAC;IAEnD,UAAU,EAAE,GAAG,EAAE,CACf,SAAS,CAMN,cAAc,CAAC;IAEpB,SAAS,EAAE,GAAG,EAAE,CACd,SAAS,CAAwC,aAAa,EAAE;QAC9D,MAAM,EAAE,MAAM;KACf,CAAC;IAEJ,QAAQ,EAAE,CAAC,OAAe,EAAE,IAAyD,EAAE,EAAE,CACvF,SAAS,CAAuB,YAAY,EAAE;QAC5C,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC;KAC3C,CAAC;IAEJ,QAAQ,EAAE,GAAG,EAAE,CACb,SAAS,CAON,WAAW,CAAC;IAEjB,+DAA+D;IAC/D,YAAY,EAAE,CAAC,MAAoB,EAAE,EAAE,CACrC,SAAS,CAAuB,gBAAgB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAE/E,qEAAqE;IACrE,UAAU,EAAE,GAAG,EAAE,CACf,SAAS,CAAqB,cAAc,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAEnE,aAAa,EAAE,GAAG,EAAE,CAAC,SAAS,CAAwB,iBAAiB,CAAC;IAExE,cAAc,EAAE,CAAC,MAAoB,EAAE,EAAE,CACvC,SAAS,CAAyC,kBAAkB,EAAE;QACpE,MAAM;KACP,CAAC;IAEJ,SAAS,EAAE,GAAG,EAAE,CACd,SAAS,CAGN,YAAY,CAAC;IAElB,4EAA4E;IAC5E,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,CAAuB,SAAS,CAAC;IAExD,gFAAgF;IAChF,eAAe,EAAE,CAAC,MAAgB,EAAE,EAAE,CACpC,SAAS,CAAuB,gBAAgB,EAAE;QAChD,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;KACjC,CAAC;IAEJ,+FAA+F;IAC/F,mBAAmB,EAAE,CAAC,OAAoC,EAAE,EAAE,CAC5D,SAAS,CAAuB,iBAAiB,EAAE;QACjD,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;KAClC,CAAC;IAEJ,yFAAyF;IACzF,YAAY,EAAE,GAAG,EAAE,CAAC,SAAS,CAAe,iBAAiB,CAAC;IAE9D,4EAA4E;IAC5E,eAAe,EAAE,GAAG,EAAE,CACpB,SAAS,CAAwC,oBAAoB,CAAC;IAExE,4EAA4E;IAC5E,WAAW,EAAE,CAAC,UAAkB,EAAE,EAAE,CAClC,SAAS,CAAwB,gBAAgB,EAAE;QACjD,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,CAAC;KACrC,CAAC;IAEJ,2BAA2B;IAC3B,UAAU,EAAE,CAAC,EAAU,EAAE,EAAE,CACzB,SAAS,CAAwB,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC;IAE9E,kCAAkC;IAClC,YAAY,EAAE,CAAC,EAAU,EAAE,EAAE,CAC3B,SAAS,CAAkB,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE;QACrE,MAAM,EAAE,QAAQ;KACjB,CAAC;IAEJ,sDAAsD;IACtD,YAAY,EAAE,CAAC,UAAkB,EAAE,EAAE,CACnC,SAAS,CAAkB,iBAAiB,EAAE;QAC5C,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,CAAC;KACrC,CAAC;IAEJ,8EAA8E;IAC9E,eAAe,EAAE,GAAG,EAAE,CAAC,SAAS,CAAkB,aAAa,CAAC;IAEhE;;;OAGG;IACH,eAAe,EAAE,CAAC,MAGjB,EAAE,EAAE,CACH,SAAS,CAAkB,aAAa,EAAE;QACxC,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;KAC7B,CAAC;IAEJ,+EAA+E;IAC/E,oBAAoB,EAAE,CAAC,QAAuC,EAAE,EAAE,CAChE,SAAS,CAAuB,kBAAkB,EAAE;QAClD,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;KACnC,CAAC;IAEJ,uFAAuF;IACvF,eAAe,EAAE,CAAC,SAAwB,EAAE,EAAE,CAC5C,SAAS,CAAuB,iBAAiB,EAAE;QACjD,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC;KACpC,CAAC;IAEJ,yEAAyE;IACzE,eAAe,EAAE,CAAC,MAAgB,EAAE,EAAE,CACpC,SAAS,CAAuB,gBAAgB,EAAE;QAChD,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;KACjC,CAAC;IAEJ,oDAAoD;IACpD,aAAa,EAAE,GAAG,EAAE,CAClB,SAAS,CAAuB,iBAAiB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAExE,mFAAmF;IACnF,KAAK,EAAE,CAAC,QAAgB,EAAE,EAAE,CAC1B,SAAS,CAAe,aAAa,EAAE;QACrC,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;KACnC,CAAC;IAEJ,MAAM,EAAE,GAAG,EAAE,CACX,SAAS,CAAe,cAAc,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAE7D,+EAA+E;IAC/E,WAAW,EAAE,GAAG,EAAE,CAChB,SAAS,CAA0C,eAAe,CAAC;IAErE,mBAAmB,EAAE,GAAG,EAAE,CACxB,SAAS,CAAwC,6BAA6B,EAAE;QAC9E,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,IAAI;KACX,CAAC;IAEJ,kBAAkB,EAAE,CAAC,QAAoC,EAAE,EAAE,CAC3D,SAAS,CAAe,4BAA4B,EAAE;QACpD,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;KAC/B,CAAC;IAEJ,sBAAsB,EAAE,GAAG,EAAE,CAC3B,SAAS,CAAyC,gCAAgC,EAAE;QAClF,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,IAAI;KACX,CAAC;IAEJ,qBAAqB,EAAE,CAAC,QAAkC,EAAE,KAAc,EAAE,EAAE,CAC5E,SAAS,CACP,+BAA+B,EAC/B,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAC9D;IAEH,WAAW,EAAE,GAAG,EAAE,CAChB,SAAS,CAAoC,oBAAoB,CAAC;IAEpE,aAAa,EAAE,CAAC,EAAU,EAAE,KAAa,EAAE,EAAE,CAC3C,SAAS,CAAe,iBAAiB,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE;QACjE,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;KAChC,CAAC;IAEJ,aAAa,EAAE,CAAC,EAAU,EAAE,EAAE,CAC5B,SAAS,CAAe,iBAAiB,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE;QACjE,MAAM,EAAE,QAAQ;KACjB,CAAC;IAEJ,uEAAuE;IAEvE,YAAY,EAAE,CAAC,IAOd,EAAE,EAAE,CACH,SAAS,CACP,iBAAiB;QACf;YACE,IAAI,EAAE,MAAM,IAAI,UAAU,IAAI,CAAC,MAAM,EAAE;YACvC,IAAI,EAAE,GAAG,IAAI,OAAO,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAClD,IAAI,EAAE,OAAO,IAAI,WAAW,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YAC9D,IAAI,EAAE,MAAM,IAAI,UAAU,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAC3D,IAAI,EAAE,KAAK,IAAI,SAAS,IAAI,CAAC,KAAK,EAAE;YACpC,IAAI,EAAE,MAAM,IAAI,UAAU,IAAI,CAAC,MAAM,EAAE;SACxC;aACE,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,GAAG,CAAC,CACf;IAEH;;;;OAIG;IACH,WAAW,EAAE,CAAC,KAAa,EAAE,IAAoC,EAAE,EAAE,CACnE,SAAS,CACP,kBAAkB,kBAAkB,CAAC,KAAK,CAAC,EAAE;QAC3C,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,CACrD;IAEH,eAAe,EAAE,CAAC,IAAa,EAAE,EAAE,CACjC,SAAS,CAAkB,oBAAoB,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAE/E,aAAa,EAAE,GAAG,EAAE,CAAC,SAAS,CAAgC,iBAAiB,CAAC;IAEhF,gBAAgB,EAAE,CAAC,EAAU,EAAE,EAAE,CAC/B,SAAS,CAAe,mBAAmB,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAE1E,mBAAmB,EAAE,GAAG,EAAE,CACxB,SAAS,CAA2B,yBAAyB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAEpF,cAAc,EAAE,GAAG,EAAE,CACnB,SAAS,CAAyD,kBAAkB,CAAC;IAEvF,qBAAqB,EAAE,GAAG,EAAE,CAC1B,SAAS,CAAe,0BAA0B,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAEzE,aAAa,EAAE,GAAG,EAAE,CAAC,SAAS,CAAwB,kBAAkB,CAAC;IAEzE,aAAa,EAAE,CAAC,YAAqB,EAAE,KAAc,EAAE,EAAE,CACvD,SAAS,CAAe,iBAAiB,EAAE;QACzC,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;KAC9C,CAAC;IAEJ,eAAe,EAAE,CAAC,QAAgB,EAAE,EAAE,CACpC,SAAS,CAAuB,mBAAmB,EAAE;QACnD,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;KACnC,CAAC;CACL,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@schlessera/brain-ui-react",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.26.0",
|
|
4
4
|
"description": "brain-kit chat-UI React components: chat surface, tool-call timeline, file browser, voice dictation, stores, and WebSocket transport",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"keywords": [
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"prepublishOnly": "bun ../../scripts/check-dist.ts"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@schlessera/brain-ui-sdk": "0.
|
|
49
|
+
"@schlessera/brain-ui-sdk": "0.26.0",
|
|
50
50
|
"@simplewebauthn/browser": "^13.2.2",
|
|
51
51
|
"clsx": "^2",
|
|
52
52
|
"framer-motion": "^12.38.0",
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import { useEffect, useRef, useState } from "react";
|
|
2
2
|
import { Eye, EyeOff, Loader2, RefreshCw, X } from "lucide-react";
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
import {
|
|
4
|
+
THINKING_LEVELS,
|
|
5
|
+
type BillingMode,
|
|
6
|
+
type ModelCatalogEntry,
|
|
7
|
+
type ModelCatalogResponse,
|
|
8
|
+
type ThinkingLevel,
|
|
7
9
|
} from "@schlessera/brain-ui-sdk/protocol";
|
|
8
10
|
import { api } from "../../lib/api-client.js";
|
|
9
11
|
import { useProviderStore } from "../../stores/provider-store.js";
|
|
10
12
|
import { cn } from "../../lib/utils.js";
|
|
11
13
|
import { PiAccountsSection } from "./pi-accounts.js";
|
|
14
|
+
import { WebSearchSection } from "./web-search-settings.js";
|
|
12
15
|
|
|
13
16
|
/**
|
|
14
17
|
* The model picker's contents, and which of them to show.
|
|
@@ -132,6 +135,23 @@ export function ModelsTab({ active }: { active: boolean }) {
|
|
|
132
135
|
);
|
|
133
136
|
}
|
|
134
137
|
|
|
138
|
+
async function changeThinking(entry: ModelCatalogEntry, next: ThinkingLevel | "auto") {
|
|
139
|
+
if (!catalog) return;
|
|
140
|
+
await commitCatalog(
|
|
141
|
+
{
|
|
142
|
+
...catalog,
|
|
143
|
+
models: catalog.models.map((model) => {
|
|
144
|
+
if (model.id !== entry.id) return model;
|
|
145
|
+
const { thinkingOverride: _cleared, ...base } = model;
|
|
146
|
+
return next === "auto"
|
|
147
|
+
? base
|
|
148
|
+
: { ...base, thinkingOverride: next, thinkingLevel: next };
|
|
149
|
+
}),
|
|
150
|
+
},
|
|
151
|
+
() => api.setThinkingOverrides(nextThinkingOverrides(catalog.models, entry.id, next))
|
|
152
|
+
);
|
|
153
|
+
}
|
|
154
|
+
|
|
135
155
|
async function changeDefault(next: string | null) {
|
|
136
156
|
if (!catalog) return;
|
|
137
157
|
await commitCatalog(
|
|
@@ -193,6 +213,7 @@ export function ModelsTab({ active }: { active: boolean }) {
|
|
|
193
213
|
entry={entry}
|
|
194
214
|
onToggle={() => toggleHidden(entry)}
|
|
195
215
|
onBilling={(next) => changeBilling(entry, next)}
|
|
216
|
+
onThinking={(next) => changeThinking(entry, next)}
|
|
196
217
|
/>
|
|
197
218
|
))}
|
|
198
219
|
{catalog?.models.length === 0 && (
|
|
@@ -230,6 +251,8 @@ export function ModelsTab({ active }: { active: boolean }) {
|
|
|
230
251
|
)}
|
|
231
252
|
|
|
232
253
|
<PiAccountsSection active={active} />
|
|
254
|
+
|
|
255
|
+
<WebSearchSection active={active} />
|
|
233
256
|
</div>
|
|
234
257
|
|
|
235
258
|
<div className="flex items-center justify-between gap-3 border-t border-border p-4">
|
|
@@ -409,14 +432,35 @@ function billingLabel(mode: BillingMode): string {
|
|
|
409
432
|
return mode === "api" ? "API" : "Subscription";
|
|
410
433
|
}
|
|
411
434
|
|
|
435
|
+
/**
|
|
436
|
+
* The effort-override record PUT after changing one profile: every other
|
|
437
|
+
* profile keeps its stored override, the changed one is set — or, for "auto",
|
|
438
|
+
* REMOVED, never stored as a redundant explicit value.
|
|
439
|
+
*/
|
|
440
|
+
export function nextThinkingOverrides(
|
|
441
|
+
models: ModelCatalogEntry[],
|
|
442
|
+
id: string,
|
|
443
|
+
next: ThinkingLevel | "auto"
|
|
444
|
+
): Record<string, ThinkingLevel> {
|
|
445
|
+
const thinking: Record<string, ThinkingLevel> = {};
|
|
446
|
+
for (const model of models) {
|
|
447
|
+
const value =
|
|
448
|
+
model.id === id ? (next === "auto" ? undefined : next) : model.thinkingOverride;
|
|
449
|
+
if (value) thinking[model.id] = value;
|
|
450
|
+
}
|
|
451
|
+
return thinking;
|
|
452
|
+
}
|
|
453
|
+
|
|
412
454
|
function ModelRow({
|
|
413
455
|
entry,
|
|
414
456
|
onToggle,
|
|
415
457
|
onBilling,
|
|
458
|
+
onThinking,
|
|
416
459
|
}: {
|
|
417
460
|
entry: ModelCatalogEntry;
|
|
418
461
|
onToggle: () => void;
|
|
419
462
|
onBilling: (next: BillingMode | "auto") => void;
|
|
463
|
+
onThinking: (next: ThinkingLevel | "auto") => void;
|
|
420
464
|
}) {
|
|
421
465
|
const Icon = entry.hidden ? EyeOff : Eye;
|
|
422
466
|
return (
|
|
@@ -434,6 +478,26 @@ function ModelRow({
|
|
|
434
478
|
{entry.source === "declared" ? " · configured" : ""}
|
|
435
479
|
</p>
|
|
436
480
|
</div>
|
|
481
|
+
{/* Reasoning effort — only for profiles that take one (the gpt models).
|
|
482
|
+
Same tri-state pattern as billing: Default shows what it resolves
|
|
483
|
+
to, an explicit pick is stored as an override. */}
|
|
484
|
+
{entry.thinkingLevel && (
|
|
485
|
+
<select
|
|
486
|
+
value={entry.thinkingOverride ?? "auto"}
|
|
487
|
+
onChange={(e) => onThinking(e.target.value as ThinkingLevel | "auto")}
|
|
488
|
+
aria-label={`Reasoning effort for ${entry.label}`}
|
|
489
|
+
className="h-8 shrink-0 rounded-lg border border-border-subtle bg-surface px-1.5 text-[11px] text-muted-foreground transition-colors hover:border-primary hover:text-foreground"
|
|
490
|
+
>
|
|
491
|
+
<option value="auto">
|
|
492
|
+
{!entry.thinkingOverride ? `Default (${entry.thinkingLevel})` : "Default"}
|
|
493
|
+
</option>
|
|
494
|
+
{THINKING_LEVELS.map((level) => (
|
|
495
|
+
<option key={level} value={level}>
|
|
496
|
+
{level}
|
|
497
|
+
</option>
|
|
498
|
+
))}
|
|
499
|
+
</select>
|
|
500
|
+
)}
|
|
437
501
|
{/* Tri-state billing: the collapsed control always reads as the
|
|
438
502
|
RESOLVED mode — the Auto option carries what auto resolves to, so
|
|
439
503
|
"Auto (subscription)" and a forced "Subscription" are both legible
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import { useEffect, useState } from "react";
|
|
2
|
+
import { Check, Loader2, X } from "lucide-react";
|
|
3
|
+
import { api, type WebSearchConfig } from "../../lib/api-client.js";
|
|
4
|
+
import { cn } from "../../lib/utils.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Web-search provider settings for the pi backend's web extension
|
|
8
|
+
* (pi-web-access). The default needs nothing: "Auto" starts with Exa's free
|
|
9
|
+
* keyless tier. This card lets the user pick an explicit provider and store
|
|
10
|
+
* its API key server-side — most usefully an Exa key, which lifts the free
|
|
11
|
+
* tier's rate limit.
|
|
12
|
+
*
|
|
13
|
+
* Key values never come back from the server; the UI only ever learns
|
|
14
|
+
* "a key is stored". Renders nothing when the server reports pi as not
|
|
15
|
+
* configured, so the Models tab is unchanged for Claude-only deployments.
|
|
16
|
+
*/
|
|
17
|
+
export function WebSearchSection({ active }: { active: boolean }) {
|
|
18
|
+
const [config, setConfig] = useState<WebSearchConfig | null>(null);
|
|
19
|
+
const [error, setError] = useState<string | null>(null);
|
|
20
|
+
const [busy, setBusy] = useState(false);
|
|
21
|
+
const [keyDraft, setKeyDraft] = useState("");
|
|
22
|
+
const [savedFlash, setSavedFlash] = useState(false);
|
|
23
|
+
|
|
24
|
+
async function reload() {
|
|
25
|
+
try {
|
|
26
|
+
const next = await api.webSearchConfig();
|
|
27
|
+
setConfig(next);
|
|
28
|
+
setError(null);
|
|
29
|
+
} catch (err) {
|
|
30
|
+
setError(err instanceof Error ? err.message : "Could not load web-search settings");
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
if (active) void reload();
|
|
36
|
+
}, [active]);
|
|
37
|
+
|
|
38
|
+
async function update(change: {
|
|
39
|
+
provider?: string;
|
|
40
|
+
apiKeys?: Record<string, string | null>;
|
|
41
|
+
}) {
|
|
42
|
+
setBusy(true);
|
|
43
|
+
setError(null);
|
|
44
|
+
try {
|
|
45
|
+
const next = await api.webSearchUpdate(change);
|
|
46
|
+
setConfig(next);
|
|
47
|
+
if (change.apiKeys) {
|
|
48
|
+
setKeyDraft("");
|
|
49
|
+
setSavedFlash(true);
|
|
50
|
+
setTimeout(() => setSavedFlash(false), 2000);
|
|
51
|
+
}
|
|
52
|
+
} catch (err) {
|
|
53
|
+
setError(err instanceof Error ? err.message : "Could not save web-search settings");
|
|
54
|
+
} finally {
|
|
55
|
+
setBusy(false);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
if (!config || !config.configured) return null;
|
|
60
|
+
|
|
61
|
+
const selected = config.providers.find((p) => p.id === config.provider);
|
|
62
|
+
const keyProvider = selected?.hasKeyField ? selected : null;
|
|
63
|
+
|
|
64
|
+
return (
|
|
65
|
+
<div className="mt-6">
|
|
66
|
+
<h3 className="text-xs font-medium uppercase tracking-wide text-muted-foreground">
|
|
67
|
+
Web search
|
|
68
|
+
</h3>
|
|
69
|
+
<p className="mt-1 text-xs text-muted-foreground">
|
|
70
|
+
Searches run on Exa's free tier by default — no key, rate-limited. Add
|
|
71
|
+
an Exa API key to lift the limit, or pick a different provider. Changes
|
|
72
|
+
apply to new conversations.
|
|
73
|
+
</p>
|
|
74
|
+
|
|
75
|
+
<div className="mt-4 rounded-lg border border-border-subtle bg-surface p-3">
|
|
76
|
+
<label className="block text-[11px] font-medium text-muted-foreground">
|
|
77
|
+
Provider
|
|
78
|
+
</label>
|
|
79
|
+
<select
|
|
80
|
+
value={config.provider}
|
|
81
|
+
disabled={busy}
|
|
82
|
+
onChange={(e) => {
|
|
83
|
+
setKeyDraft("");
|
|
84
|
+
void update({ provider: e.target.value });
|
|
85
|
+
}}
|
|
86
|
+
className="mt-1 w-full rounded-md border border-border-subtle bg-background px-2 py-1.5 text-sm text-foreground focus:border-primary focus:outline-none disabled:opacity-50"
|
|
87
|
+
>
|
|
88
|
+
{config.providers.map((p) => (
|
|
89
|
+
<option key={p.id} value={p.id}>
|
|
90
|
+
{p.label}
|
|
91
|
+
{p.keyConfigured ? " · key stored" : ""}
|
|
92
|
+
</option>
|
|
93
|
+
))}
|
|
94
|
+
</select>
|
|
95
|
+
|
|
96
|
+
{config.provider === "auto" && (
|
|
97
|
+
<ExaKeyHint config={config} />
|
|
98
|
+
)}
|
|
99
|
+
|
|
100
|
+
{keyProvider && (
|
|
101
|
+
<div className="mt-3">
|
|
102
|
+
<label className="block text-[11px] font-medium text-muted-foreground">
|
|
103
|
+
{keyProvider.label} API key
|
|
104
|
+
{keyProvider.keyConfigured && (
|
|
105
|
+
<span className="ml-2 inline-flex items-center gap-1 text-primary">
|
|
106
|
+
<Check className="h-3 w-3" /> stored
|
|
107
|
+
</span>
|
|
108
|
+
)}
|
|
109
|
+
{keyProvider.id === "exa" && !keyProvider.keyConfigured && (
|
|
110
|
+
<span className="ml-2 text-muted-foreground">
|
|
111
|
+
optional — free tier works without one
|
|
112
|
+
</span>
|
|
113
|
+
)}
|
|
114
|
+
</label>
|
|
115
|
+
<KeyEditor
|
|
116
|
+
busy={busy}
|
|
117
|
+
draft={keyDraft}
|
|
118
|
+
setDraft={setKeyDraft}
|
|
119
|
+
keyConfigured={keyProvider.keyConfigured}
|
|
120
|
+
savedFlash={savedFlash}
|
|
121
|
+
onSave={() => void update({ apiKeys: { [keyProvider.id]: keyDraft } })}
|
|
122
|
+
onClear={() => void update({ apiKeys: { [keyProvider.id]: null } })}
|
|
123
|
+
/>
|
|
124
|
+
</div>
|
|
125
|
+
)}
|
|
126
|
+
|
|
127
|
+
{error && <p className="mt-2 text-xs text-destructive">{error}</p>}
|
|
128
|
+
</div>
|
|
129
|
+
</div>
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* In Auto mode the Exa key still matters (Auto's first stop is Exa) — offer
|
|
135
|
+
* the same editor without forcing a provider switch.
|
|
136
|
+
*/
|
|
137
|
+
function ExaKeyHint({ config }: { config: WebSearchConfig }) {
|
|
138
|
+
const exa = config.providers.find((p) => p.id === "exa");
|
|
139
|
+
if (!exa?.keyConfigured) return null;
|
|
140
|
+
return (
|
|
141
|
+
<p className="mt-2 flex items-center gap-1 text-[11px] text-muted-foreground">
|
|
142
|
+
<Check className="h-3 w-3 text-primary" />
|
|
143
|
+
An Exa key is stored — Auto's Exa searches run unthrottled.
|
|
144
|
+
</p>
|
|
145
|
+
);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
function KeyEditor({
|
|
149
|
+
busy,
|
|
150
|
+
draft,
|
|
151
|
+
setDraft,
|
|
152
|
+
keyConfigured,
|
|
153
|
+
savedFlash,
|
|
154
|
+
onSave,
|
|
155
|
+
onClear,
|
|
156
|
+
}: {
|
|
157
|
+
busy: boolean;
|
|
158
|
+
draft: string;
|
|
159
|
+
setDraft: (value: string) => void;
|
|
160
|
+
keyConfigured: boolean;
|
|
161
|
+
savedFlash: boolean;
|
|
162
|
+
onSave: () => void;
|
|
163
|
+
onClear: () => void;
|
|
164
|
+
}) {
|
|
165
|
+
return (
|
|
166
|
+
<div className="mt-1 flex items-center gap-2">
|
|
167
|
+
<input
|
|
168
|
+
type="password"
|
|
169
|
+
value={draft}
|
|
170
|
+
disabled={busy}
|
|
171
|
+
placeholder={keyConfigured ? "•••••••• (stored — enter to replace)" : "Paste API key"}
|
|
172
|
+
onChange={(e) => setDraft(e.target.value)}
|
|
173
|
+
onKeyDown={(e) => {
|
|
174
|
+
if (e.key === "Enter" && draft.trim()) onSave();
|
|
175
|
+
}}
|
|
176
|
+
autoComplete="off"
|
|
177
|
+
className="min-w-0 flex-1 rounded-md border border-border-subtle bg-background px-2 py-1.5 text-sm text-foreground placeholder:text-muted-foreground focus:border-primary focus:outline-none disabled:opacity-50"
|
|
178
|
+
/>
|
|
179
|
+
<button
|
|
180
|
+
onClick={onSave}
|
|
181
|
+
disabled={busy || !draft.trim()}
|
|
182
|
+
className={cn(
|
|
183
|
+
"flex items-center gap-1 rounded-md border border-border-subtle px-2.5 py-1.5 text-xs font-medium transition-colors",
|
|
184
|
+
"text-foreground hover:border-primary hover:text-primary disabled:opacity-50"
|
|
185
|
+
)}
|
|
186
|
+
>
|
|
187
|
+
{busy ? <Loader2 className="h-3 w-3 animate-spin" /> : savedFlash ? <Check className="h-3 w-3" /> : null}
|
|
188
|
+
Save
|
|
189
|
+
</button>
|
|
190
|
+
{keyConfigured && (
|
|
191
|
+
<button
|
|
192
|
+
onClick={onClear}
|
|
193
|
+
disabled={busy}
|
|
194
|
+
title="Remove the stored key"
|
|
195
|
+
className="flex items-center gap-1 rounded-md border border-border-subtle px-2.5 py-1.5 text-xs font-medium text-muted-foreground transition-colors hover:border-destructive hover:text-destructive disabled:opacity-50"
|
|
196
|
+
>
|
|
197
|
+
<X className="h-3 w-3" />
|
|
198
|
+
Clear
|
|
199
|
+
</button>
|
|
200
|
+
)}
|
|
201
|
+
</div>
|
|
202
|
+
);
|
|
203
|
+
}
|
package/src/lib/api-client.ts
CHANGED
|
@@ -8,6 +8,7 @@ import type {
|
|
|
8
8
|
PasskeySummary,
|
|
9
9
|
BillingMode,
|
|
10
10
|
ModelCatalogResponse,
|
|
11
|
+
ThinkingLevel,
|
|
11
12
|
ActivityRunSummary,
|
|
12
13
|
ActivityRunDetail,
|
|
13
14
|
ActivityRollups,
|
|
@@ -104,6 +105,26 @@ export interface PiLoginFlow {
|
|
|
104
105
|
startedAt: number;
|
|
105
106
|
}
|
|
106
107
|
|
|
108
|
+
/** One selectable web-search provider (mirror of the server view). */
|
|
109
|
+
export interface WebSearchProvider {
|
|
110
|
+
id: string;
|
|
111
|
+
label: string;
|
|
112
|
+
/** Whether this provider accepts an API key ("auto" does not). */
|
|
113
|
+
hasKeyField: boolean;
|
|
114
|
+
/** True when a key for it is stored server-side (values never travel). */
|
|
115
|
+
keyConfigured: boolean;
|
|
116
|
+
/** True when the provider works without any key (Exa's free tier). */
|
|
117
|
+
keyless: boolean;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/** Web-search configuration for the pi backend's web extension. */
|
|
121
|
+
export interface WebSearchConfig {
|
|
122
|
+
/** False when the pi backend is not configured — hide the card. */
|
|
123
|
+
configured: boolean;
|
|
124
|
+
provider: string;
|
|
125
|
+
providers: WebSearchProvider[];
|
|
126
|
+
}
|
|
127
|
+
|
|
107
128
|
async function fetchJson<T>(path: string, init?: RequestInit): Promise<T> {
|
|
108
129
|
const res = await fetch(`${apiBase()}${path}`, {
|
|
109
130
|
...init,
|
|
@@ -261,6 +282,29 @@ export const api = {
|
|
|
261
282
|
body: JSON.stringify({ providerId }),
|
|
262
283
|
}),
|
|
263
284
|
|
|
285
|
+
/** Web-search provider config; `configured: false` when pi is not in play. */
|
|
286
|
+
webSearchConfig: () => fetchJson<WebSearchConfig>("/web-search"),
|
|
287
|
+
|
|
288
|
+
/**
|
|
289
|
+
* Update the web-search provider and/or stored API keys (null/"" clears a
|
|
290
|
+
* key). Returns the updated config.
|
|
291
|
+
*/
|
|
292
|
+
webSearchUpdate: (update: {
|
|
293
|
+
provider?: string;
|
|
294
|
+
apiKeys?: Record<string, string | null>;
|
|
295
|
+
}) =>
|
|
296
|
+
fetchJson<WebSearchConfig>("/web-search", {
|
|
297
|
+
method: "PUT",
|
|
298
|
+
body: JSON.stringify(update),
|
|
299
|
+
}),
|
|
300
|
+
|
|
301
|
+
/** Replace the reasoning-effort override record (full record, not a delta). */
|
|
302
|
+
setThinkingOverrides: (thinking: Record<string, ThinkingLevel>) =>
|
|
303
|
+
fetchJson<ModelCatalogResponse>("/models/thinking", {
|
|
304
|
+
method: "PUT",
|
|
305
|
+
body: JSON.stringify({ thinking }),
|
|
306
|
+
}),
|
|
307
|
+
|
|
264
308
|
/** Set the default model (a profile id, or null for auto); returns the new catalog. */
|
|
265
309
|
setDefaultModel: (defaultId: string | null) =>
|
|
266
310
|
fetchJson<ModelCatalogResponse>("/models/default", {
|