@jini-ai/ui 0.3.2 → 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.
Files changed (45) hide show
  1. package/README.md +6 -4
  2. package/dist/features/execution/constants.d.ts +30 -0
  3. package/dist/features/execution/constants.d.ts.map +1 -1
  4. package/dist/features/execution/constants.js +45 -0
  5. package/dist/features/execution/constants.js.map +1 -1
  6. package/dist/features/execution/index.d.ts +3 -3
  7. package/dist/features/execution/index.d.ts.map +1 -1
  8. package/dist/features/execution/index.js +2 -2
  9. package/dist/features/execution/index.js.map +1 -1
  10. package/dist/features/execution/react/components/AgentCliEnvFields.d.ts.map +1 -1
  11. package/dist/features/execution/react/components/AgentCliEnvFields.js +8 -1
  12. package/dist/features/execution/react/components/AgentCliEnvFields.js.map +1 -1
  13. package/dist/features/execution/react/components/ByokProviderForm.d.ts +28 -1
  14. package/dist/features/execution/react/components/ByokProviderForm.d.ts.map +1 -1
  15. package/dist/features/execution/react/components/ByokProviderForm.js +40 -21
  16. package/dist/features/execution/react/components/ByokProviderForm.js.map +1 -1
  17. package/dist/features/execution/react/components/ExecutionTab.d.ts +2 -1
  18. package/dist/features/execution/react/components/ExecutionTab.d.ts.map +1 -1
  19. package/dist/features/execution/react/components/ExecutionTab.js +7 -3
  20. package/dist/features/execution/react/components/ExecutionTab.js.map +1 -1
  21. package/dist/features/execution/react/components/LocalCliAgentCard.d.ts.map +1 -1
  22. package/dist/features/execution/react/components/LocalCliAgentCard.js +17 -27
  23. package/dist/features/execution/react/components/LocalCliAgentCard.js.map +1 -1
  24. package/dist/features/execution/react/hooks/useReasoningControl.d.ts +72 -0
  25. package/dist/features/execution/react/hooks/useReasoningControl.d.ts.map +1 -0
  26. package/dist/features/execution/react/hooks/useReasoningControl.js +111 -0
  27. package/dist/features/execution/react/hooks/useReasoningControl.js.map +1 -0
  28. package/dist/features/execution/rules.d.ts +87 -1
  29. package/dist/features/execution/rules.d.ts.map +1 -1
  30. package/dist/features/execution/rules.js +210 -1
  31. package/dist/features/execution/rules.js.map +1 -1
  32. package/dist/features/execution/types.d.ts +82 -0
  33. package/dist/features/execution/types.d.ts.map +1 -1
  34. package/dist/features/mcp-ui/sandbox-proxy.d.ts +41 -0
  35. package/dist/features/mcp-ui/sandbox-proxy.d.ts.map +1 -1
  36. package/dist/features/mcp-ui/sandbox-proxy.js +88 -0
  37. package/dist/features/mcp-ui/sandbox-proxy.js.map +1 -1
  38. package/dist/features/media-providers/react/components/MediaProvidersTab.d.ts.map +1 -1
  39. package/dist/features/media-providers/react/components/MediaProvidersTab.js +6 -1
  40. package/dist/features/media-providers/react/components/MediaProvidersTab.js.map +1 -1
  41. package/dist/features/settings/dialog/styles/settings-dialog.css +53 -0
  42. package/dist/react/components/WorkingDirPicker.d.ts.map +1 -1
  43. package/dist/react/components/WorkingDirPicker.js +12 -6
  44. package/dist/react/components/WorkingDirPicker.js.map +1 -1
  45. 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,+BA+NxB"}
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', autoComplete: "off", 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));
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