@jini-ai/ui 0.3.3 → 0.3.4
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/features/execution/constants.d.ts +30 -0
- package/dist/features/execution/constants.d.ts.map +1 -1
- package/dist/features/execution/constants.js +45 -0
- package/dist/features/execution/constants.js.map +1 -1
- package/dist/features/execution/index.d.ts +3 -3
- package/dist/features/execution/index.d.ts.map +1 -1
- package/dist/features/execution/index.js +2 -2
- package/dist/features/execution/index.js.map +1 -1
- package/dist/features/execution/react/components/AgentCliEnvFields.d.ts.map +1 -1
- package/dist/features/execution/react/components/AgentCliEnvFields.js +8 -1
- package/dist/features/execution/react/components/AgentCliEnvFields.js.map +1 -1
- package/dist/features/execution/react/components/ByokProviderForm.d.ts +28 -1
- package/dist/features/execution/react/components/ByokProviderForm.d.ts.map +1 -1
- package/dist/features/execution/react/components/ByokProviderForm.js +40 -21
- package/dist/features/execution/react/components/ByokProviderForm.js.map +1 -1
- package/dist/features/execution/react/components/ExecutionTab.d.ts +2 -1
- package/dist/features/execution/react/components/ExecutionTab.d.ts.map +1 -1
- package/dist/features/execution/react/components/ExecutionTab.js +7 -3
- package/dist/features/execution/react/components/ExecutionTab.js.map +1 -1
- package/dist/features/execution/react/components/LocalCliAgentCard.d.ts.map +1 -1
- package/dist/features/execution/react/components/LocalCliAgentCard.js +17 -27
- package/dist/features/execution/react/components/LocalCliAgentCard.js.map +1 -1
- package/dist/features/execution/react/hooks/useReasoningControl.d.ts +72 -0
- package/dist/features/execution/react/hooks/useReasoningControl.d.ts.map +1 -0
- package/dist/features/execution/react/hooks/useReasoningControl.js +111 -0
- package/dist/features/execution/react/hooks/useReasoningControl.js.map +1 -0
- package/dist/features/execution/rules.d.ts +87 -1
- package/dist/features/execution/rules.d.ts.map +1 -1
- package/dist/features/execution/rules.js +210 -1
- package/dist/features/execution/rules.js.map +1 -1
- package/dist/features/execution/types.d.ts +82 -0
- package/dist/features/execution/types.d.ts.map +1 -1
- package/dist/features/mcp-ui/sandbox-proxy.d.ts +41 -0
- package/dist/features/mcp-ui/sandbox-proxy.d.ts.map +1 -1
- package/dist/features/mcp-ui/sandbox-proxy.js +88 -0
- package/dist/features/mcp-ui/sandbox-proxy.js.map +1 -1
- package/dist/features/media-providers/react/components/MediaProvidersTab.d.ts.map +1 -1
- package/dist/features/media-providers/react/components/MediaProvidersTab.js +6 -1
- package/dist/features/media-providers/react/components/MediaProvidersTab.js.map +1 -1
- package/dist/features/settings/dialog/styles/settings-dialog.css +53 -0
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { isAllowedEndpointUrl } from '../../utils/endpoint-policy.js';
|
|
2
|
-
import { CUSTOM_PRESET_ID, DEFAULT_BASE_URL_BY_PROTOCOL } from './constants.js';
|
|
2
|
+
import { API_KEY_CROSS_VENDOR_WARNING, API_KEY_TOO_SHORT_WARNING, CUSTOM_PRESET_ID, DEFAULT_BASE_URL_BY_PROTOCOL, MIN_PLAUSIBLE_API_KEY_LENGTH, } from './constants.js';
|
|
3
3
|
/**
|
|
4
4
|
* Pure decision logic for the execution tab. Everything here is total and
|
|
5
5
|
* side-effect free so the React layer stays a thin renderer — same split the
|
|
@@ -90,6 +90,88 @@ export function missingRequiredFields(config, preset) {
|
|
|
90
90
|
missing.push('model');
|
|
91
91
|
return missing;
|
|
92
92
|
}
|
|
93
|
+
/**
|
|
94
|
+
* The catalog entry that claims this key MORE specifically than the selected preset does — i.e. the
|
|
95
|
+
* vendor the operator most likely meant to paste it into. `null` when no other row recognises the
|
|
96
|
+
* string, or when the selection's own claim is at least as specific as any rival's.
|
|
97
|
+
*
|
|
98
|
+
* "More specific" is prefix LENGTH, not catalog order. `sk-or-v1-…` starts with both OpenRouter's
|
|
99
|
+
* `sk-or-` and OpenAI's `sk-`; the longer prefix is the truer claim, and deciding it by row position
|
|
100
|
+
* would make the message move when someone reorders the catalog. The same comparison gives the
|
|
101
|
+
* selected preset a tie: a host row that legitimately takes `sk-ant-` keys (an Anthropic-compatible
|
|
102
|
+
* proxy) claims them exactly as strongly as Anthropic does and so keeps them, silently.
|
|
103
|
+
*
|
|
104
|
+
* @param key - The trimmed key text as typed.
|
|
105
|
+
* @param preset - The selected preset. Required: with no selection there is no "wrong field" to be
|
|
106
|
+
* in, and on custom/manual any vendor's key may be exactly right.
|
|
107
|
+
* @param presets - The catalog to recognise foreign keys against.
|
|
108
|
+
* @returns The foreign owner, or `null` for silence.
|
|
109
|
+
* @complexity O(n·m) — n presets, m the length of the longest prefix. Catalogs are single-digit
|
|
110
|
+
* rows of authored data, and `startsWith` short-circuits on the first differing character.
|
|
111
|
+
*/
|
|
112
|
+
function foreignKeyOwner(key, preset, presets) {
|
|
113
|
+
// -1, not 0, so a preset with no prefix of its own still loses every comparison rather than tying
|
|
114
|
+
// with one. Azure ships no prefix and must still be told when it is holding an Anthropic key.
|
|
115
|
+
let bestClaim = preset.apiKeyPrefix && key.startsWith(preset.apiKeyPrefix) ? preset.apiKeyPrefix.length : -1;
|
|
116
|
+
let owner = null;
|
|
117
|
+
for (const candidate of presets) {
|
|
118
|
+
const prefix = candidate.apiKeyPrefix;
|
|
119
|
+
if (!prefix || candidate.custom || candidate.id === preset.id)
|
|
120
|
+
continue;
|
|
121
|
+
if (prefix.length <= bestClaim || !key.startsWith(prefix))
|
|
122
|
+
continue;
|
|
123
|
+
owner = candidate;
|
|
124
|
+
bestClaim = prefix.length;
|
|
125
|
+
}
|
|
126
|
+
return owner;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* The advisory "that key looks wrong" remark for the current draft, or `null` for silence.
|
|
130
|
+
*
|
|
131
|
+
* Warns ONLY on what it can positively recognise as wrong, and there are exactly two such things:
|
|
132
|
+
* a key wearing another catalogued vendor's prefix (pasted into the wrong provider's field), and a
|
|
133
|
+
* key shorter than {@link MIN_PLAUSIBLE_API_KEY_LENGTH} (the reported Chrome-autofilled PASSWORD).
|
|
134
|
+
* Everything else — including every shape this package has never seen — is silence.
|
|
135
|
+
*
|
|
136
|
+
* That direction is the whole design, and it is the fix for a real reported defect. This function
|
|
137
|
+
* used to ask "does the key match the selected preset's pattern?" and warn when it did not: a
|
|
138
|
+
* positive allowlist, which false-positives the instant a vendor issues a shape the catalog has not
|
|
139
|
+
* been taught. That happened within hours of shipping — an operator pasted a working Google Gemini
|
|
140
|
+
* key and was told it did not look like a Google API key. A catalog can prove a string belongs to
|
|
141
|
+
* vendor X; it can never prove a string belongs to nobody. Do not re-derive an allowlist here, and
|
|
142
|
+
* do not add a per-provider branch: the conditions above are the only two that hold without one.
|
|
143
|
+
*
|
|
144
|
+
* ADVISORY ONLY, also by construction: this returns a message, not a validity verdict. No caller may
|
|
145
|
+
* use it to disable a control or gate a submit — a client-side guess must never be able to block a
|
|
146
|
+
* working credential. It is deliberately absent from {@link missingRequiredFields}, which IS a gate.
|
|
147
|
+
*
|
|
148
|
+
* @param config - The active BYOK draft; only `apiKey` is read.
|
|
149
|
+
* @param preset - The resolved preset, or `null` on custom/manual, which is exempt from the
|
|
150
|
+
* cross-vendor arm (see {@link foreignKeyOwner}) but not from the length floor.
|
|
151
|
+
* @param presets - The catalog to recognise foreign keys against. Defaults to empty, which is why
|
|
152
|
+
* omitting it costs the cross-vendor arm and gains nothing else: an under-informed rule must
|
|
153
|
+
* degrade toward silence, never toward guessing.
|
|
154
|
+
* @returns A translatable {@link ApiKeyWarning}, or `null` when there is nothing to say.
|
|
155
|
+
* @complexity O(n·m) via {@link foreignKeyOwner}; the length check is O(1).
|
|
156
|
+
*/
|
|
157
|
+
export function apiKeyFormatWarning(config, preset, presets = []) {
|
|
158
|
+
const key = config.apiKey.trim();
|
|
159
|
+
if (!key)
|
|
160
|
+
return null;
|
|
161
|
+
if (preset) {
|
|
162
|
+
const owner = foreignKeyOwner(key, preset, presets);
|
|
163
|
+
if (owner) {
|
|
164
|
+
return {
|
|
165
|
+
message: API_KEY_CROSS_VENDOR_WARNING,
|
|
166
|
+
vars: { vendor: owner.title, provider: preset.title },
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
if (key.length < MIN_PLAUSIBLE_API_KEY_LENGTH) {
|
|
171
|
+
return { message: API_KEY_TOO_SHORT_WARNING, vars: {} };
|
|
172
|
+
}
|
|
173
|
+
return null;
|
|
174
|
+
}
|
|
93
175
|
/**
|
|
94
176
|
* The credentials a given preset would use — the active selection's live
|
|
95
177
|
* top-level fields when `preset` IS the current selection, otherwise that
|
|
@@ -411,4 +493,131 @@ export function agentDiagnosticTooltip(diagnostic) {
|
|
|
411
493
|
.filter((line) => typeof line === 'string' && line.length > 0)
|
|
412
494
|
.join('\n');
|
|
413
495
|
}
|
|
496
|
+
/**
|
|
497
|
+
* Splits a model id into its base and its reasoning-effort suffix, for a runtime that encodes
|
|
498
|
+
* effort inside the id (`DetectedAgent.reasoningInModelId`).
|
|
499
|
+
*
|
|
500
|
+
* Only a trailing `-<token>` whose token appears in `levelIds` is a level. Everything else stays
|
|
501
|
+
* part of the base id — which is the whole point: `claude-opus-4-6-thinking` ends in `-thinking`,
|
|
502
|
+
* which LOOKS like a modifier and is not an effort level, and reading it as one would invent a
|
|
503
|
+
* `claude-opus-4-6` base that has no variants and a `thinking` level no control can render.
|
|
504
|
+
*
|
|
505
|
+
* @param modelId - A full model id from the agent's own catalog.
|
|
506
|
+
* @param levelIds - The declared effort vocabulary (`reasoningInModelId.levels`, ids only).
|
|
507
|
+
* @returns The base id and the level, or `level: null` when the id carries no recognized suffix.
|
|
508
|
+
* @complexity O(k) in `levelIds.length`.
|
|
509
|
+
*/
|
|
510
|
+
export function splitReasoningModelId(modelId, levelIds) {
|
|
511
|
+
for (const level of levelIds) {
|
|
512
|
+
const suffix = `-${level}`;
|
|
513
|
+
// `length > suffix.length` rather than `endsWith` alone: an id that is nothing BUT the suffix
|
|
514
|
+
// has no base to split off, and splitting it would merge every such entry into one empty-id
|
|
515
|
+
// group.
|
|
516
|
+
if (modelId.length > suffix.length && modelId.endsWith(suffix)) {
|
|
517
|
+
return { baseId: modelId.slice(0, -suffix.length), level };
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
return { baseId: modelId, level: null };
|
|
521
|
+
}
|
|
522
|
+
/**
|
|
523
|
+
* Strips a trailing effort qualifier from a model label — `Gemini 3.1 Pro (High)` -> `Gemini 3.1
|
|
524
|
+
* Pro` — and only when the label really ends in the qualifier for the level its id carried.
|
|
525
|
+
*
|
|
526
|
+
* Deliberately narrow: it removes a parenthetical only when that parenthetical's contents match
|
|
527
|
+
* THIS entry's own level (by id or by label, case-insensitively). `Claude Sonnet 4.6 (Thinking)`
|
|
528
|
+
* has no level, so nothing is stripped, and a vendor label that happens to end in an unrelated
|
|
529
|
+
* parenthetical keeps it.
|
|
530
|
+
*/
|
|
531
|
+
function baseLabelForLevel(label, level) {
|
|
532
|
+
if (!level)
|
|
533
|
+
return label;
|
|
534
|
+
const match = /^(.*?)\s*\(([^()]*)\)\s*$/.exec(label);
|
|
535
|
+
if (!match)
|
|
536
|
+
return label;
|
|
537
|
+
const inner = (match[2] ?? '').trim().toLowerCase();
|
|
538
|
+
if (inner !== level.id.toLowerCase() && inner !== level.label.toLowerCase())
|
|
539
|
+
return label;
|
|
540
|
+
const stripped = (match[1] ?? '').trim();
|
|
541
|
+
return stripped || label;
|
|
542
|
+
}
|
|
543
|
+
/**
|
|
544
|
+
* Groups an agent's model list by base model, recording for each base the effort levels it
|
|
545
|
+
* ACTUALLY has.
|
|
546
|
+
*
|
|
547
|
+
* Derived, never declared — that is the correctness property this function exists for. Verified
|
|
548
|
+
* against `agy models`' real output: `gemini-3.8-flash` has high/medium/low, `gemini-3.1-pro` has
|
|
549
|
+
* ONLY high and low, `gpt-oss-120b` only medium, and `claude-sonnet-4-6` none. A fixed
|
|
550
|
+
* high/medium/low control would offer `gemini-3.1-pro-medium`, which does not exist and which
|
|
551
|
+
* `agy --model` rejects outright. Running the same derivation over whichever list the host
|
|
552
|
+
* supplied — live from the CLI or the def's `fallbackModels` — is also what makes an offline
|
|
553
|
+
* degrade behave consistently rather than differently.
|
|
554
|
+
*
|
|
555
|
+
* @param models - The agent's model catalog, in the order it should be offered.
|
|
556
|
+
* @param levels - The declared effort vocabulary, in display order.
|
|
557
|
+
* @returns One group per base id, in first-appearance order. With an empty vocabulary every id is
|
|
558
|
+
* its own bare group, so a caller needs no special case for "this agent declares nothing".
|
|
559
|
+
* @complexity O(n * k) in the catalog size and the vocabulary size.
|
|
560
|
+
*/
|
|
561
|
+
export function reasoningModelGroups(models, levels) {
|
|
562
|
+
const levelIds = levels.map((level) => level.id);
|
|
563
|
+
const byBase = new Map();
|
|
564
|
+
for (const model of models) {
|
|
565
|
+
const { baseId, level } = splitReasoningModelId(model.id, levelIds);
|
|
566
|
+
const existing = byBase.get(baseId);
|
|
567
|
+
const entry = existing ?? { label: baseLabelForLevel(model.label, levels.find((l) => l.id === level)), ids: new Map() };
|
|
568
|
+
if (level === null) {
|
|
569
|
+
// A base listed on its own AND with variants keeps both: the bare id is the "no effort
|
|
570
|
+
// stated" choice, the variants are the stated ones.
|
|
571
|
+
entry.bare = model.id;
|
|
572
|
+
}
|
|
573
|
+
else {
|
|
574
|
+
entry.ids.set(level, model.id);
|
|
575
|
+
}
|
|
576
|
+
if (!existing)
|
|
577
|
+
byBase.set(baseId, entry);
|
|
578
|
+
}
|
|
579
|
+
return [...byBase.entries()].map(([baseId, entry]) => ({
|
|
580
|
+
baseId,
|
|
581
|
+
label: entry.label,
|
|
582
|
+
// Ordered by the DECLARED vocabulary, not by catalog order, so the control's option order is
|
|
583
|
+
// stable across bases even if a CLI ever lists one base's variants in a different order.
|
|
584
|
+
levels: levels.filter((level) => entry.ids.has(level.id)),
|
|
585
|
+
modelIdByLevel: Object.fromEntries(entry.ids),
|
|
586
|
+
...(entry.bare !== undefined ? { bareModelId: entry.bare } : {}),
|
|
587
|
+
}));
|
|
588
|
+
}
|
|
589
|
+
/** The group a full model id belongs to, or `null` when the id is not in this catalog at all — a
|
|
590
|
+
* saved pick from an older/different catalog must not be silently attached to some other base. */
|
|
591
|
+
export function reasoningModelGroupFor(groups, modelId, levelIds) {
|
|
592
|
+
if (!modelId)
|
|
593
|
+
return null;
|
|
594
|
+
const { baseId } = splitReasoningModelId(modelId, levelIds);
|
|
595
|
+
return groups.find((group) => group.baseId === baseId) ?? null;
|
|
596
|
+
}
|
|
597
|
+
/**
|
|
598
|
+
* Recombines a base model and an effort level back into one model id — the value `--model`
|
|
599
|
+
* actually receives.
|
|
600
|
+
*
|
|
601
|
+
* Never composes a string: every id it can return came out of the agent's own catalog. That is
|
|
602
|
+
* what makes "switch base while a level is selected" safe — carrying `medium` from
|
|
603
|
+
* `gemini-3.8-flash` over to `gemini-3.1-pro` cannot produce `gemini-3.1-pro-medium`, because
|
|
604
|
+
* that base's table has no `medium` entry and the fallback below lands on a level it does have.
|
|
605
|
+
*
|
|
606
|
+
* @param group - The target base's derived group.
|
|
607
|
+
* @param level - The level to prefer, or `null` for "no preference".
|
|
608
|
+
* @returns An id from the catalog: the requested level's, else the base's bare id, else its first
|
|
609
|
+
* available level's, else the bare base id (only reachable for a group built from nothing).
|
|
610
|
+
* @complexity O(1).
|
|
611
|
+
*/
|
|
612
|
+
export function modelIdForReasoningLevel(group, level) {
|
|
613
|
+
if (level) {
|
|
614
|
+
const exact = group.modelIdByLevel[level];
|
|
615
|
+
if (exact)
|
|
616
|
+
return exact;
|
|
617
|
+
}
|
|
618
|
+
if (group.bareModelId !== undefined)
|
|
619
|
+
return group.bareModelId;
|
|
620
|
+
const first = group.levels[0];
|
|
621
|
+
return first ? (group.modelIdByLevel[first.id] ?? group.baseId) : group.baseId;
|
|
622
|
+
}
|
|
414
623
|
//# sourceMappingURL=rules.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../../src/features/execution/rules.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../../src/features/execution/rules.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,10 +47,43 @@ export interface ProviderPreset {
|
|
|
47
47
|
requiresApiKey?: boolean;
|
|
48
48
|
/** Optional "Get key" deep link rendered beside the API-key field. */
|
|
49
49
|
apiKeyConsoleUrl?: string;
|
|
50
|
+
/**
|
|
51
|
+
* The literal prefix that positively identifies a pasted key as belonging to THIS provider —
|
|
52
|
+
* `'AIza'` for Google, `'sk-ant-'` for Anthropic. Omit it for a vendor whose keys carry no
|
|
53
|
+
* distinguishing prefix (Azure OpenAI's are bare hex) rather than inventing one.
|
|
54
|
+
*
|
|
55
|
+
* Read in exactly one direction: to recognise a key as SOMEONE ELSE'S. It is deliberately NOT an
|
|
56
|
+
* allowlist, and no code may ask "does the selected preset's key match this?" as a validity test.
|
|
57
|
+
* That is the shape this field replaced, and it shipped a false positive within hours of landing:
|
|
58
|
+
* a real Google Gemini key in a newer shape than `/^AIza/` was reported to its owner as not
|
|
59
|
+
* looking like a Google key. Vendors add key formats without telling anyone, so a catalog can
|
|
60
|
+
* prove a string belongs to vendor X, but never that it belongs to nobody. See
|
|
61
|
+
* `apiKeyFormatWarning`.
|
|
62
|
+
*
|
|
63
|
+
* Data rather than an `if (providerId === …)` chain in the rule, so adding a provider stays a row
|
|
64
|
+
* in the preset catalog — including for a host that supplies its own `presets` and never touches
|
|
65
|
+
* this package.
|
|
66
|
+
*/
|
|
67
|
+
apiKeyPrefix?: string;
|
|
50
68
|
/** The synthetic "Custom" preset. Exactly one may carry this flag; it is
|
|
51
69
|
* never treated as configured-by-preset and never hides the Base URL. */
|
|
52
70
|
custom?: boolean;
|
|
53
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* One advisory remark about the API key currently typed into the form, ready to translate.
|
|
74
|
+
*
|
|
75
|
+
* `message` is plain English AND its own i18n key (this package's convention — see
|
|
76
|
+
* `DEFAULT_AGENT_DESCRIPTIONS`), and `vars` fills its `{name}` placeholders. Kept split rather than
|
|
77
|
+
* pre-composed because the vendor names are runtime values from the catalog: a pre-composed
|
|
78
|
+
* sentence would be a key no dictionary can contain, and would also freeze English word order for
|
|
79
|
+
* every locale.
|
|
80
|
+
*
|
|
81
|
+
* Advisory by construction — a message, not a validity verdict. See {@link ProviderPreset.apiKeyPrefix}.
|
|
82
|
+
*/
|
|
83
|
+
export interface ApiKeyWarning {
|
|
84
|
+
message: string;
|
|
85
|
+
vars: Readonly<Record<string, string>>;
|
|
86
|
+
}
|
|
54
87
|
/** One provider's saved credential draft — everything `ByokConfig` carries at
|
|
55
88
|
* the top level, minus the selection fields (`protocol`/`providerId`), which
|
|
56
89
|
* only make sense for the *active* selection. */
|
|
@@ -154,6 +187,28 @@ export interface DetectedAgent {
|
|
|
154
187
|
* choice IS a model-catalog entry, just from a different picker. Absent or
|
|
155
188
|
* empty means the agent has no reasoning axis to configure. */
|
|
156
189
|
reasoningOptions?: readonly AgentModelOption[] | undefined;
|
|
190
|
+
/**
|
|
191
|
+
* Declares that this agent's CLI carries its reasoning-effort choice INSIDE
|
|
192
|
+
* the model id — as a trailing `-<level>` on the slug — instead of in a flag
|
|
193
|
+
* of its own, and names which trailing tokens count as levels.
|
|
194
|
+
*
|
|
195
|
+
* Mirrors `@jini-ai/agent-runtime`'s `RuntimeReasoningInModelId` field-for-
|
|
196
|
+
* field, the same way `reasoningOptions` above mirrors its
|
|
197
|
+
* `RuntimeReasoningOption[]`, and for the same reason (see this interface's
|
|
198
|
+
* own doc). Present INSTEAD of `reasoningOptions`, never alongside it: a card
|
|
199
|
+
* carrying both would render two effort controls that disagree about where
|
|
200
|
+
* the choice goes.
|
|
201
|
+
*
|
|
202
|
+
* Only the vocabulary is declared. Which of these levels a given base model
|
|
203
|
+
* actually has is DERIVED from `models` by `reasoningModelGroups`
|
|
204
|
+
* (`rules.ts`) — availability is genuinely not uniform (antigravity's
|
|
205
|
+
* `gemini-3.1-pro` has only high and low, `gpt-oss-120b` only medium,
|
|
206
|
+
* `claude-sonnet-4-6` none), so a fixed high/medium/low control would offer
|
|
207
|
+
* slugs the CLI rejects outright.
|
|
208
|
+
*/
|
|
209
|
+
reasoningInModelId?: {
|
|
210
|
+
levels: readonly AgentModelOption[];
|
|
211
|
+
} | undefined;
|
|
157
212
|
/** See `AgentSupportsCustomModel`. `undefined` allows custom input,
|
|
158
213
|
* matching every adapter's default before this field existed. */
|
|
159
214
|
supportsCustomModel?: AgentSupportsCustomModel | undefined;
|
|
@@ -376,6 +431,33 @@ export interface AgentExecutableRepair {
|
|
|
376
431
|
detectedPath: string;
|
|
377
432
|
canUseDetected: boolean;
|
|
378
433
|
}
|
|
434
|
+
/**
|
|
435
|
+
* One base model of a `DetectedAgent.reasoningInModelId` agent, together with the effort levels
|
|
436
|
+
* that model ACTUALLY has — derived from the agent's own model list by `reasoningModelGroups`
|
|
437
|
+
* (`rules.ts`), never declared.
|
|
438
|
+
*
|
|
439
|
+
* This is the shape the card renders its two controls from: the base picker lists one entry per
|
|
440
|
+
* group, and the effort picker lists exactly `levels` for whichever group is active. That is what
|
|
441
|
+
* keeps it from offering a slug the CLI would reject — `gemini-3.1-pro` genuinely has no `-medium`
|
|
442
|
+
* variant, so `levels` genuinely has no `medium` entry.
|
|
443
|
+
*/
|
|
444
|
+
export interface ReasoningModelGroup {
|
|
445
|
+
/** The model id with any recognized effort suffix removed (`gemini-3.1-pro`). */
|
|
446
|
+
baseId: string;
|
|
447
|
+
/** Display name for the base. The effort qualifier is stripped from the source label only when
|
|
448
|
+
* the id it came from carried a real suffix — so `Gemini 3.1 Pro (High)` becomes `Gemini 3.1
|
|
449
|
+
* Pro`, while `Claude Sonnet 4.6 (Thinking)` (a suffix-less id) keeps its parenthetical. */
|
|
450
|
+
label: string;
|
|
451
|
+
/** The effort levels this base really offers, in the declared vocabulary's order. Empty for a
|
|
452
|
+
* base the catalog lists without any suffixed variant. */
|
|
453
|
+
levels: readonly AgentModelOption[];
|
|
454
|
+
/** Full model id per level in `levels` — the recombination table, so composing a slug is a
|
|
455
|
+
* lookup of something the catalog actually contained rather than string concatenation. */
|
|
456
|
+
modelIdByLevel: Readonly<Record<string, string>>;
|
|
457
|
+
/** The suffix-less id, when the catalog lists the base on its own (`claude-sonnet-4-6`,
|
|
458
|
+
* `default`). Absent for a base that only ever appears with a suffix. */
|
|
459
|
+
bareModelId?: string | undefined;
|
|
460
|
+
}
|
|
379
461
|
/** Result of a local-CLI rescan, surfaced as an inline status line. */
|
|
380
462
|
export type AgentScanState = {
|
|
381
463
|
status: 'idle';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/features/execution/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/features/execution/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -129,4 +129,45 @@
|
|
|
129
129
|
* `surfaces/document.ts` already carry their own `SURFACE_CSP` meta tag for exactly that job.
|
|
130
130
|
*/
|
|
131
131
|
export declare const SANDBOX_PROXY_HTML = "<!doctype html>\n<html>\n<head>\n<meta charset=\"utf-8\">\n<title>MCP-UI sandbox proxy</title>\n<style>html, body { margin: 0; padding: 0; width: 100%; height: 100%; }</style>\n</head>\n<body>\n<script>\n(function () {\n \"use strict\";\n var host = window.parent;\n var hostOrigin = window.location.origin;\n if (host === window) return;\n\n function isFromHost(event) {\n return event.source === host && event.origin === hostOrigin;\n }\n\n window.addEventListener(\"message\", function (event) {\n if (!isFromHost(event)) return;\n var data = event.data;\n if (!data || typeof data !== \"object\") return;\n if (data.method !== \"ui/notifications/sandbox-resource-ready\") return;\n var html = data.params && data.params.html;\n if (typeof html !== \"string\") return;\n document.open();\n document.write(html);\n document.close();\n });\n\n host.postMessage({ method: \"ui/notifications/sandbox-proxy-ready\", params: {} }, hostOrigin);\n}());\n</script>\n</body>\n</html>";
|
|
132
|
+
/**
|
|
133
|
+
* Same script as {@link SANDBOX_PROXY_HTML}, with one load-bearing difference: `hostOrigin` is the
|
|
134
|
+
* caller-supplied `hostOrigin` argument, baked in as a literal, instead of read from
|
|
135
|
+
* `window.location.origin`. Paired with {@link buildSandboxProxyDataUrl}, this is what actually
|
|
136
|
+
* closes the "admin-origin authority" gap this module's own doc flags above — not by dropping
|
|
137
|
+
* `allow-same-origin` (verified against the installed `@mcp-ui/client@7.1.1` bundle: `AppFrame`
|
|
138
|
+
* hardcodes `sandbox="allow-scripts allow-same-origin allow-forms"` on the iframe it creates, with no
|
|
139
|
+
* prop to override it — neither this package nor a host application can refuse that flag), but by
|
|
140
|
+
* changing what "same-origin" MEANS: a `data:` URL gets a fresh, unique, OPAQUE origin under the URL
|
|
141
|
+
* Standard's own origin algorithm, a rule that holds regardless of the iframe's `sandbox` attribute
|
|
142
|
+
* (verified live against a real Chromium build, 2026-09-03: an iframe with the exact hardcoded flags
|
|
143
|
+
* above, navigated to a `data:` URL, still reports `window.location.origin === "null"` inside). Once
|
|
144
|
+
* the proxy's own document has no real origin to share with its embedder, the guest HTML this script
|
|
145
|
+
* `document.write`s into it can never reach the embedder's cookies, storage, or same-origin fetches —
|
|
146
|
+
* there is no real origin left for "same-origin" to mean.
|
|
147
|
+
*
|
|
148
|
+
* That is also why this can no longer read `window.location.origin` for the ready/resource-ready
|
|
149
|
+
* handshake's own origin check: inside an opaque-origin document that call always returns the literal
|
|
150
|
+
* string `"null"`, which would never equal the embedder's real origin and would permanently break the
|
|
151
|
+
* handshake. `hostOrigin` has to come from somewhere else — the embedder's OWN trusted value, baked in
|
|
152
|
+
* at construction time. It must never be read back from this document's own URL (query string,
|
|
153
|
+
* fragment, or otherwise): whoever can choose this document's `src` can choose that value too, which
|
|
154
|
+
* would defeat the check exactly as this module's existing doc warns for the cross-origin-hosting
|
|
155
|
+
* case.
|
|
156
|
+
*
|
|
157
|
+
* @param hostOrigin - The embedder's own real origin, computed by the embedder itself (e.g. its own
|
|
158
|
+
* `window.location.origin`) — never a value parsed out of this proxy document's own URL.
|
|
159
|
+
*/
|
|
160
|
+
export declare function buildIsolatedSandboxProxyHtml(hostOrigin: string): string;
|
|
161
|
+
/**
|
|
162
|
+
* Wraps {@link buildIsolatedSandboxProxyHtml} as a `data:` URL — the form a host passes directly as
|
|
163
|
+
* `sandbox={{ url }}` to `@mcp-ui/client`'s `AppRenderer`/`AppFrame` (this package's
|
|
164
|
+
* `McpUiHost`/`useMcpUiHost` included) in place of a same-origin HTTP route. No server route, second
|
|
165
|
+
* host, or CORS/postMessage-origin change is needed to get the isolation official MCP-UI guidance
|
|
166
|
+
* recommends — see {@link buildIsolatedSandboxProxyHtml}'s own doc for why a `data:` URL earns that
|
|
167
|
+
* isolation on its own.
|
|
168
|
+
*
|
|
169
|
+
* @param hostOrigin - Forwarded verbatim to {@link buildIsolatedSandboxProxyHtml} — see that
|
|
170
|
+
* function's own doc for the contract.
|
|
171
|
+
*/
|
|
172
|
+
export declare function buildSandboxProxyDataUrl(hostOrigin: string): string;
|
|
132
173
|
//# sourceMappingURL=sandbox-proxy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandbox-proxy.d.ts","sourceRoot":"","sources":["../../../src/features/mcp-ui/sandbox-proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8GG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,kBAAkB,4/BAmCvB,CAAC"}
|
|
1
|
+
{"version":3,"file":"sandbox-proxy.d.ts","sourceRoot":"","sources":["../../../src/features/mcp-ui/sandbox-proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8GG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,kBAAkB,4/BAmCvB,CAAC;AAET;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CA6CxE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEnE"}
|
|
@@ -164,4 +164,92 @@ export const SANDBOX_PROXY_HTML = `<!doctype html>
|
|
|
164
164
|
</script>
|
|
165
165
|
</body>
|
|
166
166
|
</html>`;
|
|
167
|
+
/**
|
|
168
|
+
* Same script as {@link SANDBOX_PROXY_HTML}, with one load-bearing difference: `hostOrigin` is the
|
|
169
|
+
* caller-supplied `hostOrigin` argument, baked in as a literal, instead of read from
|
|
170
|
+
* `window.location.origin`. Paired with {@link buildSandboxProxyDataUrl}, this is what actually
|
|
171
|
+
* closes the "admin-origin authority" gap this module's own doc flags above — not by dropping
|
|
172
|
+
* `allow-same-origin` (verified against the installed `@mcp-ui/client@7.1.1` bundle: `AppFrame`
|
|
173
|
+
* hardcodes `sandbox="allow-scripts allow-same-origin allow-forms"` on the iframe it creates, with no
|
|
174
|
+
* prop to override it — neither this package nor a host application can refuse that flag), but by
|
|
175
|
+
* changing what "same-origin" MEANS: a `data:` URL gets a fresh, unique, OPAQUE origin under the URL
|
|
176
|
+
* Standard's own origin algorithm, a rule that holds regardless of the iframe's `sandbox` attribute
|
|
177
|
+
* (verified live against a real Chromium build, 2026-09-03: an iframe with the exact hardcoded flags
|
|
178
|
+
* above, navigated to a `data:` URL, still reports `window.location.origin === "null"` inside). Once
|
|
179
|
+
* the proxy's own document has no real origin to share with its embedder, the guest HTML this script
|
|
180
|
+
* `document.write`s into it can never reach the embedder's cookies, storage, or same-origin fetches —
|
|
181
|
+
* there is no real origin left for "same-origin" to mean.
|
|
182
|
+
*
|
|
183
|
+
* That is also why this can no longer read `window.location.origin` for the ready/resource-ready
|
|
184
|
+
* handshake's own origin check: inside an opaque-origin document that call always returns the literal
|
|
185
|
+
* string `"null"`, which would never equal the embedder's real origin and would permanently break the
|
|
186
|
+
* handshake. `hostOrigin` has to come from somewhere else — the embedder's OWN trusted value, baked in
|
|
187
|
+
* at construction time. It must never be read back from this document's own URL (query string,
|
|
188
|
+
* fragment, or otherwise): whoever can choose this document's `src` can choose that value too, which
|
|
189
|
+
* would defeat the check exactly as this module's existing doc warns for the cross-origin-hosting
|
|
190
|
+
* case.
|
|
191
|
+
*
|
|
192
|
+
* @param hostOrigin - The embedder's own real origin, computed by the embedder itself (e.g. its own
|
|
193
|
+
* `window.location.origin`) — never a value parsed out of this proxy document's own URL.
|
|
194
|
+
*/
|
|
195
|
+
export function buildIsolatedSandboxProxyHtml(hostOrigin) {
|
|
196
|
+
const hostOriginLiteral = JSON.stringify(hostOrigin);
|
|
197
|
+
// A `data:` document has no HTTP response of its own to carry a CSP header, so per CSP3's
|
|
198
|
+
// "local scheme" inheritance rule this inline <script> runs under whatever CSP the embedder's
|
|
199
|
+
// OWN document currently has (none, for Tovu's admin app today — verified 2026-09-03: no
|
|
200
|
+
// helmet/blanket CSP is applied to admin HTML responses). If a future hardening pass adds a
|
|
201
|
+
// strict `script-src` CSP to the embedder, this inline script will need `'unsafe-inline'` (or a
|
|
202
|
+
// nonce this template does not currently support) to keep running — check that before assuming
|
|
203
|
+
// this proxy still renders under a new admin CSP.
|
|
204
|
+
return `<!doctype html>
|
|
205
|
+
<html>
|
|
206
|
+
<head>
|
|
207
|
+
<meta charset="utf-8">
|
|
208
|
+
<title>MCP-UI sandbox proxy</title>
|
|
209
|
+
<style>html, body { margin: 0; padding: 0; width: 100%; height: 100%; }</style>
|
|
210
|
+
</head>
|
|
211
|
+
<body>
|
|
212
|
+
<script>
|
|
213
|
+
(function () {
|
|
214
|
+
"use strict";
|
|
215
|
+
var host = window.parent;
|
|
216
|
+
var hostOrigin = ${hostOriginLiteral};
|
|
217
|
+
if (host === window) return;
|
|
218
|
+
|
|
219
|
+
function isFromHost(event) {
|
|
220
|
+
return event.source === host && event.origin === hostOrigin;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
window.addEventListener("message", function (event) {
|
|
224
|
+
if (!isFromHost(event)) return;
|
|
225
|
+
var data = event.data;
|
|
226
|
+
if (!data || typeof data !== "object") return;
|
|
227
|
+
if (data.method !== "ui/notifications/sandbox-resource-ready") return;
|
|
228
|
+
var html = data.params && data.params.html;
|
|
229
|
+
if (typeof html !== "string") return;
|
|
230
|
+
document.open();
|
|
231
|
+
document.write(html);
|
|
232
|
+
document.close();
|
|
233
|
+
});
|
|
234
|
+
|
|
235
|
+
host.postMessage({ method: "ui/notifications/sandbox-proxy-ready", params: {} }, hostOrigin);
|
|
236
|
+
}());
|
|
237
|
+
</script>
|
|
238
|
+
</body>
|
|
239
|
+
</html>`;
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Wraps {@link buildIsolatedSandboxProxyHtml} as a `data:` URL — the form a host passes directly as
|
|
243
|
+
* `sandbox={{ url }}` to `@mcp-ui/client`'s `AppRenderer`/`AppFrame` (this package's
|
|
244
|
+
* `McpUiHost`/`useMcpUiHost` included) in place of a same-origin HTTP route. No server route, second
|
|
245
|
+
* host, or CORS/postMessage-origin change is needed to get the isolation official MCP-UI guidance
|
|
246
|
+
* recommends — see {@link buildIsolatedSandboxProxyHtml}'s own doc for why a `data:` URL earns that
|
|
247
|
+
* isolation on its own.
|
|
248
|
+
*
|
|
249
|
+
* @param hostOrigin - Forwarded verbatim to {@link buildIsolatedSandboxProxyHtml} — see that
|
|
250
|
+
* function's own doc for the contract.
|
|
251
|
+
*/
|
|
252
|
+
export function buildSandboxProxyDataUrl(hostOrigin) {
|
|
253
|
+
return `data:text/html;charset=utf-8,${encodeURIComponent(buildIsolatedSandboxProxyHtml(hostOrigin))}`;
|
|
254
|
+
}
|
|
167
255
|
//# sourceMappingURL=sandbox-proxy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandbox-proxy.js","sourceRoot":"","sources":["../../../src/features/mcp-ui/sandbox-proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8GG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAmC1B,CAAC"}
|
|
1
|
+
{"version":3,"file":"sandbox-proxy.js","sourceRoot":"","sources":["../../../src/features/mcp-ui/sandbox-proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8GG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAmC1B,CAAC;AAET;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,6BAA6B,CAAC,UAAkB;IAC9D,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACrD,0FAA0F;IAC1F,8FAA8F;IAC9F,yFAAyF;IACzF,4FAA4F;IAC5F,gGAAgG;IAChG,+FAA+F;IAC/F,kDAAkD;IAClD,OAAO;;;;;;;;;;;;qBAYY,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;QAuB9B,CAAC;AACT,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,wBAAwB,CAAC,UAAkB;IACzD,OAAO,gCAAgC,kBAAkB,CAAC,6BAA6B,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;AACzG,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MediaProvidersTab.d.ts","sourceRoot":"","sources":["../../../../../src/features/media-providers/react/components/MediaProvidersTab.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAWzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAG5E,MAAM,WAAW,uBAAuB;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gDAAgD;IAChD,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,kHAAkH;IAClH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;sEAEkE;IAClE,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,kBAAkB,CAAC;IACzB;;wCAEoC;IACpC,OAAO,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACzC;gFAC4E;IAC5E,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC;;;yDAGqD;IACrD,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,MAAM,CAAC,EAAE,uBAAuB,CAAC;CAClC;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,OAAwC,EACxC,gBAAgB,EAChB,iBAAiB,EACjB,MAAM,GACP,EAAE,sBAAsB,+
|
|
1
|
+
{"version":3,"file":"MediaProvidersTab.d.ts","sourceRoot":"","sources":["../../../../../src/features/media-providers/react/components/MediaProvidersTab.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAWzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAG5E,MAAM,WAAW,uBAAuB;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gDAAgD;IAChD,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,kHAAkH;IAClH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;sEAEkE;IAClE,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,kBAAkB,CAAC;IACzB;;wCAEoC;IACpC,OAAO,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACzC;gFAC4E;IAC5E,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC;;;yDAGqD;IACrD,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,MAAM,CAAC,EAAE,uBAAuB,CAAC;CAClC;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,OAAwC,EACxC,gBAAgB,EAChB,iBAAiB,EACjB,MAAM,GACP,EAAE,sBAAsB,+BAmOxB"}
|
|
@@ -86,7 +86,12 @@ export function MediaProvidersTab({ port, catalog = DEFAULT_MEDIA_PROVIDER_CATAL
|
|
|
86
86
|
return (_jsxs(Fragment, { children: [showDividerBefore ? _jsx("hr", { className: "jini-media-provider-divider" }) : null, _jsxs("div", { className: "jini-media-provider-card", children: [_jsxs("div", { className: "jini-media-provider-card-head", children: [_jsx("strong", { children: option.label }), saved ? (
|
|
87
87
|
// `maskedLabel` is guaranteed non-null here — see its
|
|
88
88
|
// definition above — so no fallback is reachable to test.
|
|
89
|
-
_jsx("span", { className: "jini-field-status-badge jini-field-status-badge-success", children: t(savedWithMaskTemplate, { mask: maskedLabel }) })) : null, !saved && pendingProviderIds.has(option.id) ? _jsx("span", { className: "jini-field-status-badge", children: unsavedLabel }) : null] }), _jsxs("div", { className: "jini-media-provider-fields", children: [_jsxs("label", { className: "jini-media-provider-field jini-media-provider-field--secret", children: [_jsx("span", { className: "jini-field-label jini-sr-only", children: apiKeyLabel }), _jsx("input", { className: "jini-input", type: keyVisible ? 'text' : 'password',
|
|
89
|
+
_jsx("span", { className: "jini-field-status-badge jini-field-status-badge-success", children: t(savedWithMaskTemplate, { mask: maskedLabel }) })) : null, !saved && pendingProviderIds.has(option.id) ? _jsx("span", { className: "jini-field-status-badge", children: unsavedLabel }) : null] }), _jsxs("div", { className: "jini-media-provider-fields", children: [_jsxs("label", { className: "jini-media-provider-field jini-media-provider-field--secret", children: [_jsx("span", { className: "jini-field-label jini-sr-only", children: apiKeyLabel }), _jsx("input", { className: "jini-input", type: keyVisible ? 'text' : 'password',
|
|
90
|
+
/* `new-password`, NOT `"off"` — Chrome deliberately ignores `off` on
|
|
91
|
+
credential-shaped fields, which is how a saved password gets autofilled into
|
|
92
|
+
an API-key box. Same defect, same fix, same reasoning as
|
|
93
|
+
`ByokProviderForm`'s own API-key input; see its comment. */
|
|
94
|
+
autoComplete: "new-password", spellCheck: false, placeholder: saved ? maskedLabel : apiKeyPlaceholder, "aria-label": `${option.label} ${apiKeyLabel}`, value: entry.apiKey ?? '', onChange: (event) => updateProvider(option.id, { apiKey: event.target.value }) }), _jsx("button", { type: "button", className: "jini-input-affix-btn", "aria-pressed": keyVisible, "aria-label": `${option.label} ${keyVisible ? hideKeyLabel : showKeyLabel}`, onClick: () => toggleKeyVisible(option.id), children: _jsx(Icon, { name: keyVisible ? 'eye-off' : 'eye', size: 14 }) })] }), _jsxs("label", { className: "jini-media-provider-field", children: [_jsx("span", { className: "jini-field-label jini-sr-only", children: baseUrlLabel }), _jsx("input", { className: "jini-input", type: "url", inputMode: "url", spellCheck: false, placeholder: option.defaultBaseUrl || baseUrlPlaceholder, "aria-label": `${option.label} ${baseUrlLabel}`, value: rawBaseUrl, "aria-invalid": baseUrlInvalid || undefined, onChange: (event) => updateProvider(option.id, { baseUrl: event.target.value }) })] }), option.models && option.models.length > 0 ? (_jsxs("label", { className: "jini-media-provider-field", children: [_jsx("span", { className: "jini-field-label jini-sr-only", children: modelLabel }), _jsx("input", { className: "jini-input", list: modelListId, spellCheck: false, placeholder: modelPlaceholder, "aria-label": `${option.label} ${modelLabel}`, value: entry.model ?? '', onChange: (event) => updateProvider(option.id, { model: event.target.value }) }), _jsx("datalist", { id: modelListId, children: option.models.map((model) => (_jsx("option", { value: model }, model))) })] })) : null, _jsx("button", { type: "button", className: "jini-button jini-button-ghost", disabled: !clearable, "aria-label": `${option.label} ${clearLabel}`, onClick: () => clearProvider(option.id), children: clearLabel })] }), baseUrlInvalid ? (_jsx("span", { className: "jini-field-hint jini-hint-error", role: "alert", children: baseUrlInvalidLabel })) : !rawBaseUrl.trim() && effectiveBaseUrl ? (_jsx("span", { className: "jini-field-hint", children: t(baseUrlDefaultHintTemplate, { url: effectiveBaseUrl }) })) : null] })] }, option.id));
|
|
90
95
|
}) }), _jsxs("div", { className: "jini-media-provider-save-row", children: [_jsx("button", { type: "button", className: "jini-button", onClick: saveChanges, disabled: save.status === 'saving' || !hasPendingChanges || blockedByInvalidBaseUrl, children: save.status === 'saving' ? savingLabel : saveChangesLabel }), save.status === 'saved' ? (_jsx("span", { className: "jini-hint", role: "status", children: savedNoticeLabel })) : null, save.status === 'save-error' ? (_jsx("span", { className: "jini-hint jini-hint-error", role: "alert", children: saveErrorLabel })) : null] })] }));
|
|
91
96
|
}
|
|
92
97
|
//# sourceMappingURL=MediaProvidersTab.js.map
|