@jini-ai/ui 0.3.3 → 0.3.6
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/appearance/react/components/AppearanceTab.d.ts +4 -1
- package/dist/features/appearance/react/components/AppearanceTab.d.ts.map +1 -1
- package/dist/features/appearance/react/components/AppearanceTab.js +7 -4
- package/dist/features/appearance/react/components/AppearanceTab.js.map +1 -1
- package/dist/features/connectors/ConnectorsBrowser.d.ts +8 -1
- package/dist/features/connectors/ConnectorsBrowser.d.ts.map +1 -1
- package/dist/features/connectors/ConnectorsBrowser.js +4 -3
- package/dist/features/connectors/ConnectorsBrowser.js.map +1 -1
- package/dist/features/connectors/components/ConnectorCard.d.ts +4 -1
- package/dist/features/connectors/components/ConnectorCard.d.ts.map +1 -1
- package/dist/features/connectors/components/ConnectorCard.js +5 -4
- package/dist/features/connectors/components/ConnectorCard.js.map +1 -1
- package/dist/features/connectors/components/ConnectorDetailDrawer.d.ts +3 -1
- package/dist/features/connectors/components/ConnectorDetailDrawer.d.ts.map +1 -1
- package/dist/features/connectors/components/ConnectorDetailDrawer.js +3 -2
- package/dist/features/connectors/components/ConnectorDetailDrawer.js.map +1 -1
- package/dist/features/connectors/components/ConnectorGrid.d.ts +4 -1
- package/dist/features/connectors/components/ConnectorGrid.d.ts.map +1 -1
- package/dist/features/connectors/components/ConnectorGrid.js +4 -2
- package/dist/features/connectors/components/ConnectorGrid.js.map +1 -1
- package/dist/features/connectors/components/ConnectorSearchBar.d.ts +3 -1
- package/dist/features/connectors/components/ConnectorSearchBar.d.ts.map +1 -1
- package/dist/features/connectors/components/ConnectorSearchBar.js +4 -3
- package/dist/features/connectors/components/ConnectorSearchBar.js.map +1 -1
- package/dist/features/connectors/components/ProviderTabBar.d.ts +4 -1
- package/dist/features/connectors/components/ProviderTabBar.d.ts.map +1 -1
- package/dist/features/connectors/components/ProviderTabBar.js +5 -3
- package/dist/features/connectors/components/ProviderTabBar.js.map +1 -1
- 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 +30 -1
- package/dist/features/execution/react/components/ByokProviderForm.d.ts.map +1 -1
- package/dist/features/execution/react/components/ByokProviderForm.js +41 -21
- package/dist/features/execution/react/components/ByokProviderForm.js.map +1 -1
- package/dist/features/execution/react/components/ExecutionTab.d.ts +9 -1
- package/dist/features/execution/react/components/ExecutionTab.d.ts.map +1 -1
- package/dist/features/execution/react/components/ExecutionTab.js +9 -4
- package/dist/features/execution/react/components/ExecutionTab.js.map +1 -1
- package/dist/features/execution/react/components/LocalCliAgentCard.d.ts +4 -1
- package/dist/features/execution/react/components/LocalCliAgentCard.d.ts.map +1 -1
- package/dist/features/execution/react/components/LocalCliAgentCard.js +24 -28
- package/dist/features/execution/react/components/LocalCliAgentCard.js.map +1 -1
- package/dist/features/execution/react/components/LocalCliAgentList.d.ts +4 -1
- package/dist/features/execution/react/components/LocalCliAgentList.d.ts.map +1 -1
- package/dist/features/execution/react/components/LocalCliAgentList.js +4 -2
- package/dist/features/execution/react/components/LocalCliAgentList.js.map +1 -1
- package/dist/features/execution/react/components/ProviderChipGroup.d.ts +4 -1
- package/dist/features/execution/react/components/ProviderChipGroup.d.ts.map +1 -1
- package/dist/features/execution/react/components/ProviderChipGroup.js +7 -3
- package/dist/features/execution/react/components/ProviderChipGroup.js.map +1 -1
- package/dist/features/execution/react/components/SearchableModelSelect.d.ts +4 -1
- package/dist/features/execution/react/components/SearchableModelSelect.d.ts.map +1 -1
- package/dist/features/execution/react/components/SearchableModelSelect.js +3 -2
- package/dist/features/execution/react/components/SearchableModelSelect.js.map +1 -1
- package/dist/features/execution/react/hooks/useReasoningControl.d.ts +87 -0
- package/dist/features/execution/react/hooks/useReasoningControl.d.ts.map +1 -0
- package/dist/features/execution/react/hooks/useReasoningControl.js +149 -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 +96 -0
- package/dist/features/execution/types.d.ts.map +1 -1
- package/dist/features/html-editor/react/components/InteractiveHtmlEditor.d.ts +1 -1
- package/dist/features/html-editor/react/hooks/useInteractiveHtmlEditor.js +1 -1
- package/dist/features/i18n/dictionaries/index.d.ts +1 -1
- package/dist/features/instructions/react/components/InstructionsTab.d.ts +3 -1
- package/dist/features/instructions/react/components/InstructionsTab.d.ts.map +1 -1
- package/dist/features/instructions/react/components/InstructionsTab.js +3 -2
- package/dist/features/instructions/react/components/InstructionsTab.js.map +1 -1
- package/dist/features/integrations/react/components/ClientPicker.d.ts +4 -1
- package/dist/features/integrations/react/components/ClientPicker.d.ts.map +1 -1
- package/dist/features/integrations/react/components/ClientPicker.js +7 -3
- package/dist/features/integrations/react/components/ClientPicker.js.map +1 -1
- package/dist/features/integrations/react/components/CodexInstallToggleButton.d.ts +3 -1
- package/dist/features/integrations/react/components/CodexInstallToggleButton.d.ts.map +1 -1
- package/dist/features/integrations/react/components/CodexInstallToggleButton.js +3 -2
- package/dist/features/integrations/react/components/CodexInstallToggleButton.js.map +1 -1
- package/dist/features/integrations/react/components/IntegrationsTab.d.ts +6 -1
- package/dist/features/integrations/react/components/IntegrationsTab.d.ts.map +1 -1
- package/dist/features/integrations/react/components/IntegrationsTab.js +4 -3
- package/dist/features/integrations/react/components/IntegrationsTab.js.map +1 -1
- package/dist/features/language/react/components/LanguageTab.d.ts +4 -1
- package/dist/features/language/react/components/LanguageTab.d.ts.map +1 -1
- package/dist/features/language/react/components/LanguageTab.js +5 -3
- package/dist/features/language/react/components/LanguageTab.js.map +1 -1
- package/dist/features/mcp-ui/sandbox-proxy.d.ts +42 -1
- package/dist/features/mcp-ui/sandbox-proxy.d.ts.map +1 -1
- package/dist/features/mcp-ui/sandbox-proxy.js +89 -1
- package/dist/features/mcp-ui/sandbox-proxy.js.map +1 -1
- package/dist/features/mcp-ui/surfaces/outcome.d.ts +1 -1
- package/dist/features/mcp-ui/surfaces/tokens.d.ts +6 -5
- package/dist/features/mcp-ui/surfaces/tokens.d.ts.map +1 -1
- package/dist/features/mcp-ui/surfaces/tokens.js +6 -5
- package/dist/features/mcp-ui/surfaces/tokens.js.map +1 -1
- package/dist/features/media-providers/react/components/MediaProvidersTab.d.ts +4 -1
- package/dist/features/media-providers/react/components/MediaProvidersTab.d.ts.map +1 -1
- package/dist/features/media-providers/react/components/MediaProvidersTab.js +14 -4
- package/dist/features/media-providers/react/components/MediaProvidersTab.js.map +1 -1
- package/dist/features/memory/react/components/MemoryEntryCard.d.ts +3 -1
- package/dist/features/memory/react/components/MemoryEntryCard.d.ts.map +1 -1
- package/dist/features/memory/react/components/MemoryEntryCard.js +3 -2
- package/dist/features/memory/react/components/MemoryEntryCard.js.map +1 -1
- package/dist/features/memory/react/components/MemoryExtractionCard.d.ts +3 -1
- package/dist/features/memory/react/components/MemoryExtractionCard.d.ts.map +1 -1
- package/dist/features/memory/react/components/MemoryExtractionCard.js +3 -2
- package/dist/features/memory/react/components/MemoryExtractionCard.js.map +1 -1
- package/dist/features/memory/react/components/MemoryHooksPanel.d.ts +3 -1
- package/dist/features/memory/react/components/MemoryHooksPanel.d.ts.map +1 -1
- package/dist/features/memory/react/components/MemoryHooksPanel.js +7 -2
- package/dist/features/memory/react/components/MemoryHooksPanel.js.map +1 -1
- package/dist/features/memory/react/components/MemoryHowPanel.d.ts +3 -1
- package/dist/features/memory/react/components/MemoryHowPanel.d.ts.map +1 -1
- package/dist/features/memory/react/components/MemoryHowPanel.js +2 -2
- package/dist/features/memory/react/components/MemoryHowPanel.js.map +1 -1
- package/dist/features/memory/react/components/MemoryList.d.ts +3 -1
- package/dist/features/memory/react/components/MemoryList.d.ts.map +1 -1
- package/dist/features/memory/react/components/MemoryList.js +12 -5
- package/dist/features/memory/react/components/MemoryList.js.map +1 -1
- package/dist/features/memory/react/components/MemorySettingsPanel.d.ts +7 -1
- package/dist/features/memory/react/components/MemorySettingsPanel.d.ts.map +1 -1
- package/dist/features/memory/react/components/MemorySettingsPanel.js +3 -2
- package/dist/features/memory/react/components/MemorySettingsPanel.js.map +1 -1
- package/dist/features/notifications/react/components/NotificationsTab.d.ts +3 -1
- package/dist/features/notifications/react/components/NotificationsTab.d.ts.map +1 -1
- package/dist/features/notifications/react/components/NotificationsTab.js +13 -6
- package/dist/features/notifications/react/components/NotificationsTab.js.map +1 -1
- package/dist/features/privacy/react/components/PrivacyTab.d.ts +9 -1
- package/dist/features/privacy/react/components/PrivacyTab.d.ts.map +1 -1
- package/dist/features/privacy/react/components/PrivacyTab.js +5 -4
- package/dist/features/privacy/react/components/PrivacyTab.js.map +1 -1
- package/dist/features/settings/dialog/react/components/SettingsDialogShell.d.ts +1 -1
- package/dist/features/settings/dialog/styles/settings-dialog.css +54 -0
- package/dist/features/skills/react/components/SkillDraftForm.d.ts +3 -1
- package/dist/features/skills/react/components/SkillDraftForm.d.ts.map +1 -1
- package/dist/features/skills/react/components/SkillDraftForm.js +3 -2
- package/dist/features/skills/react/components/SkillDraftForm.js.map +1 -1
- package/dist/features/skills/react/components/SkillRow.d.ts +3 -1
- package/dist/features/skills/react/components/SkillRow.d.ts.map +1 -1
- package/dist/features/skills/react/components/SkillRow.js +3 -2
- package/dist/features/skills/react/components/SkillRow.js.map +1 -1
- package/dist/features/skills/react/components/SkillsTab.d.ts +8 -1
- package/dist/features/skills/react/components/SkillsTab.d.ts.map +1 -1
- package/dist/features/skills/react/components/SkillsTab.js +7 -3
- package/dist/features/skills/react/components/SkillsTab.js.map +1 -1
- package/dist/features/tabbed-dialog/react/components/TabbedDialog.d.ts +1 -1
- package/dist/features/tabbed-dialog/react/components/TabbedDialog.js +1 -1
- package/dist/features/tabbed-dialog/types.d.ts +2 -2
- package/dist/features/tabbed-dialog/types.js +2 -2
- package/dist/react/components/RemixIcon.d.ts +42 -1
- package/dist/react/components/RemixIcon.d.ts.map +1 -1
- package/dist/react/components/RemixIcon.js +152 -8
- package/dist/react/components/RemixIcon.js.map +1 -1
- package/dist/utils/file-transfer.d.ts.map +1 -1
- package/dist/utils/file-transfer.js +2 -0
- package/dist/utils/file-transfer.js.map +1 -1
- package/package.json +3 -3
|
@@ -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"}
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
*
|
|
17
17
|
* This module exports the proxy's source as a **string constant** rather than a static file this
|
|
18
18
|
* package's own build copies into `dist/`, for the same reason `surfaces/document.ts` builds HTML as
|
|
19
|
-
* template strings: the natural way for a HOST APPLICATION (
|
|
19
|
+
* template strings: the natural way for a HOST APPLICATION (a downstream product's admin server, `examples/reference-web`'s
|
|
20
20
|
* dev server, any future consumer) to serve this is to mount ONE route that responds with this exact
|
|
21
21
|
* body — `res.type('html').send(SANDBOX_PROXY_HTML)` — not to vendor a copy of a file from this
|
|
22
22
|
* package's `dist/` into their own static-asset pipeline. A string a host can `fetch`/import needs no
|
|
@@ -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 the host product'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,qGAAqG;IACrG,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"}
|
|
@@ -55,7 +55,7 @@ export interface SurfaceOutcomeSpec {
|
|
|
55
55
|
/**
|
|
56
56
|
* Styles the status line and, when {@link openLinkUrl} is also present, the open-link button.
|
|
57
57
|
* THREE states, not a boolean — matching this package's own callers, which distinguish a genuine
|
|
58
|
-
* partial outcome (e.g.
|
|
58
|
+
* partial outcome (e.g. a downstream product's static-publish "uploaded, but not yet confirmed reachable") from
|
|
59
59
|
* both a plain success and a plain failure specifically so neither is misreported: folding
|
|
60
60
|
* `'partial'` into `'success'` would claim something is live when it may not be reachable yet;
|
|
61
61
|
* folding it into `'failure'` would hide that the operation itself did NOT fail (nothing needs
|
|
@@ -79,11 +79,12 @@ export declare const SURFACE_TOKENS_DARK: Record<SurfaceTokenName, string>;
|
|
|
79
79
|
* Whether every generated surface is pinned to the light palette regardless of the embedding
|
|
80
80
|
* browser/OS's `prefers-color-scheme`.
|
|
81
81
|
*
|
|
82
|
-
* True today because
|
|
83
|
-
* yet (`apps/admin`'s Appearance section is a disabled "SOON" placeholder), so a
|
|
84
|
-
* the OS preference doesn't track any actual app theme — it tracks whatever the
|
|
85
|
-
* happens to be set to, which produces a dark card floating in an always-light admin
|
|
86
|
-
* to `false` once
|
|
82
|
+
* True today because the host product — currently this package's only consumer — has no real
|
|
83
|
+
* light/dark toggle yet (`apps/admin`'s Appearance section is a disabled "SOON" placeholder), so a
|
|
84
|
+
* surface that honors the OS preference doesn't track any actual app theme — it tracks whatever the
|
|
85
|
+
* operator's OS happens to be set to, which produces a dark card floating in an always-light admin
|
|
86
|
+
* UI. Flip this to `false` once the host product has a real app-level theme signal to forward in;
|
|
87
|
+
* nothing else about
|
|
87
88
|
* {@link renderTokenBlock} needs to change.
|
|
88
89
|
*/
|
|
89
90
|
export declare const FORCE_LIGHT_SURFACE_THEME = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../../../src/features/mcp-ui/surfaces/tokens.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;CAwBjB,CAAC;AAEX,6CAA6C;AAC7C,MAAM,MAAM,gBAAgB,GAAG,MAAM,OAAO,cAAc,CAAC;AAE3D;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAqBhE,CAAC;AA4BF
|
|
1
|
+
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../../../src/features/mcp-ui/surfaces/tokens.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;CAwBjB,CAAC;AAEX,6CAA6C;AAC7C,MAAM,MAAM,gBAAgB,GAAG,MAAM,OAAO,cAAc,CAAC;AAE3D;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAqBhE,CAAC;AA4BF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAE9C;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,GAAE,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAM,GAAG,MAAM,CAiBlG"}
|
|
@@ -124,11 +124,12 @@ const DARK_SURFACE_SHADOW = '0 1px 2px rgba(0, 0, 0, 0.32)';
|
|
|
124
124
|
* Whether every generated surface is pinned to the light palette regardless of the embedding
|
|
125
125
|
* browser/OS's `prefers-color-scheme`.
|
|
126
126
|
*
|
|
127
|
-
* True today because
|
|
128
|
-
* yet (`apps/admin`'s Appearance section is a disabled "SOON" placeholder), so a
|
|
129
|
-
* the OS preference doesn't track any actual app theme — it tracks whatever the
|
|
130
|
-
* happens to be set to, which produces a dark card floating in an always-light admin
|
|
131
|
-
* to `false` once
|
|
127
|
+
* True today because the host product — currently this package's only consumer — has no real
|
|
128
|
+
* light/dark toggle yet (`apps/admin`'s Appearance section is a disabled "SOON" placeholder), so a
|
|
129
|
+
* surface that honors the OS preference doesn't track any actual app theme — it tracks whatever the
|
|
130
|
+
* operator's OS happens to be set to, which produces a dark card floating in an always-light admin
|
|
131
|
+
* UI. Flip this to `false` once the host product has a real app-level theme signal to forward in;
|
|
132
|
+
* nothing else about
|
|
132
133
|
* {@link renderTokenBlock} needs to change.
|
|
133
134
|
*/
|
|
134
135
|
export const FORCE_LIGHT_SURFACE_THEME = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../../../src/features/mcp-ui/surfaces/tokens.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,iBAAiB,EAAE,SAAS;IAC5B,oBAAoB,EAAE,SAAS;IAC/B,qBAAqB,EAAE,SAAS;IAChC,4BAA4B,EAAE,SAAS;IACvC,mBAAmB,EAAE,SAAS;IAC9B,0BAA0B,EAAE,SAAS;IACrC,yBAAyB,EAAE,SAAS;IACpC,wBAAwB,EAAE,SAAS;IACnC,yBAAyB,EAAE,SAAS;IACpC,qBAAqB,EAAE,SAAS;IAChC,4BAA4B,EAAE,SAAS;IACvC,gGAAgG;IAChG,yFAAyF;IACzF,qBAAqB,EAAE,SAAS;IAChC,wBAAwB,EAAE,KAAK;IAC/B,wBAAwB,EAAE,KAAK;IAC/B,wBAAwB,EAAE,KAAK;IAC/B,wBAAwB,EAAE,MAAM;IAChC,wBAAwB,EAAE,MAAM;IAChC,0BAA0B,EAAE,OAAO;IACnC,mBAAmB,EACjB,0EAA0E;IAC5E,wBAAwB,EAAE,0DAA0D;CAC5E,CAAC;AAKX;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAqC;IACnE,iBAAiB,EAAE,SAAS;IAC5B,oBAAoB,EAAE,SAAS;IAC/B,qBAAqB,EAAE,SAAS;IAChC,4BAA4B,EAAE,SAAS;IACvC,mBAAmB,EAAE,SAAS;IAC9B,0BAA0B,EAAE,SAAS;IACrC,yBAAyB,EAAE,SAAS;IACpC,wBAAwB,EAAE,SAAS;IACnC,yBAAyB,EAAE,SAAS;IACpC,qBAAqB,EAAE,SAAS;IAChC,4BAA4B,EAAE,SAAS;IACvC,qBAAqB,EAAE,SAAS;IAChC,wBAAwB,EAAE,cAAc,CAAC,wBAAwB,CAAC;IAClE,wBAAwB,EAAE,cAAc,CAAC,wBAAwB,CAAC;IAClE,wBAAwB,EAAE,cAAc,CAAC,wBAAwB,CAAC;IAClE,wBAAwB,EAAE,cAAc,CAAC,wBAAwB,CAAC;IAClE,wBAAwB,EAAE,cAAc,CAAC,wBAAwB,CAAC;IAClE,0BAA0B,EAAE,cAAc,CAAC,0BAA0B,CAAC;IACtE,mBAAmB,EAAE,cAAc,CAAC,mBAAmB,CAAC;IACxD,wBAAwB,EAAE,cAAc,CAAC,wBAAwB,CAAC;CACnE,CAAC;AAEF;;;;GAIG;AACH,MAAM,cAAc,GAAqC;IACvD,2BAA2B,EAAE,wDAAwD;IACrF,0BAA0B,EAAE,+DAA+D;IAC3F,0BAA0B,EAAE,+DAA+D;IAC3F,2BAA2B,EAAE,wDAAwD;IACrF,0BAA0B,EAAE,+DAA+D;IAC3F,0BAA0B,EAAE,+DAA+D;IAC3F,6BAA6B,EAAE,sEAAsE;CACtG,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,mBAAmB,GAAG,+BAA+B,CAAC;AAE5D
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../../../src/features/mcp-ui/surfaces/tokens.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,6 +45,9 @@ export interface MediaProvidersTabProps {
|
|
|
45
45
|
* configured-first/alphabetical order unchanged. */
|
|
46
46
|
pinnedProviderIds?: readonly string[];
|
|
47
47
|
labels?: MediaProvidersTabLabels;
|
|
48
|
+
/** This tab's own agent handle. One distinct sub-handle per provider card, derived from the
|
|
49
|
+
* provider's own catalog id via `buildAgentListHandles`. */
|
|
50
|
+
agentHandle?: string;
|
|
48
51
|
}
|
|
49
52
|
/**
|
|
50
53
|
* Per-provider credential cards: API key, base URL, and (when the catalog
|
|
@@ -55,5 +58,5 @@ export interface MediaProvidersTabProps {
|
|
|
55
58
|
* decorations outside this package's boundary; see `MediaProviderOption`'s
|
|
56
59
|
* doc and this tab's `ports.ts` header for the full provenance note.
|
|
57
60
|
*/
|
|
58
|
-
export declare function MediaProvidersTab({ port, catalog, initialProviders, pinnedProviderIds, labels, }: MediaProvidersTabProps): import("react").JSX.Element;
|
|
61
|
+
export declare function MediaProvidersTab({ port, catalog, initialProviders, pinnedProviderIds, labels, agentHandle, }: MediaProvidersTabProps): import("react").JSX.Element;
|
|
59
62
|
//# sourceMappingURL=MediaProvidersTab.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MediaProvidersTab.d.ts","sourceRoot":"","sources":["../../../../../src/features/media-providers/react/components/MediaProvidersTab.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MediaProvidersTab.d.ts","sourceRoot":"","sources":["../../../../../src/features/media-providers/react/components/MediaProvidersTab.tsx"],"names":[],"mappings":"AAIA,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;IACjC;iEAC6D;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,OAAwC,EACxC,gBAAgB,EAChB,iBAAiB,EACjB,MAAM,EACN,WAAW,GACZ,EAAE,sBAAsB,+BA8OxB"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Fragment, useState } from 'react';
|
|
3
|
+
import { agentHandleProps, buildAgentListHandles } from '@jini-ai/agentic';
|
|
3
4
|
import { useT } from '../../../i18n/index.js';
|
|
4
5
|
import { Icon } from '../../../../react/components/Icon.js';
|
|
5
6
|
import { invalidBaseUrlProviderIds, isEntryPresent, isMarkerOnlyEntry, isProviderBaseUrlInvalid, maskedKeyLabel, resolveProviderBaseUrl, sortProvidersByConfigured, } from '../../rules.js';
|
|
@@ -14,7 +15,7 @@ import { useMediaProvidersTab } from '../hooks/useMediaProvidersTab.js';
|
|
|
14
15
|
* decorations outside this package's boundary; see `MediaProviderOption`'s
|
|
15
16
|
* doc and this tab's `ports.ts` header for the full provenance note.
|
|
16
17
|
*/
|
|
17
|
-
export function MediaProvidersTab({ port, catalog = DEFAULT_MEDIA_PROVIDER_CATALOG, initialProviders, pinnedProviderIds, labels, }) {
|
|
18
|
+
export function MediaProvidersTab({ port, catalog = DEFAULT_MEDIA_PROVIDER_CATALOG, initialProviders, pinnedProviderIds, labels, agentHandle, }) {
|
|
18
19
|
const t = useT();
|
|
19
20
|
const { providers, load, save, hasAnyConfigured, pendingProviderIds, updateProvider, clearProvider, saveChanges, reload } = useMediaProvidersTab({ port, initialProviders });
|
|
20
21
|
const [visibleApiKeys, setVisibleApiKeys] = useState(() => new Set());
|
|
@@ -55,6 +56,9 @@ export function MediaProvidersTab({ port, catalog = DEFAULT_MEDIA_PROVIDER_CATAL
|
|
|
55
56
|
});
|
|
56
57
|
};
|
|
57
58
|
const orderedCatalog = sortProvidersByConfigured(catalog, providers, pinnedProviderIds);
|
|
59
|
+
const providerHandles = agentHandle
|
|
60
|
+
? buildAgentListHandles(agentHandle, orderedCatalog.map((option) => option.id))
|
|
61
|
+
: undefined;
|
|
58
62
|
// Membership check against the ALREADY-ORDERED result, not `pinnedProviderIds` directly: a
|
|
59
63
|
// pinned id absent from `catalog` never appears in `orderedCatalog` either (see
|
|
60
64
|
// `sortProvidersByConfigured`'s own "silently skipped" doc), so this stays correct without
|
|
@@ -64,7 +68,7 @@ export function MediaProvidersTab({ port, catalog = DEFAULT_MEDIA_PROVIDER_CATAL
|
|
|
64
68
|
// Save writes every provider at once, so ONE unacceptable endpoint blocks the
|
|
65
69
|
// whole button rather than being silently persisted alongside the good ones.
|
|
66
70
|
const blockedByInvalidBaseUrl = invalidBaseUrlProviderIds(providers).length > 0;
|
|
67
|
-
return (_jsxs("section", { className: "jini-settings-section jini-settings-media-providers", children: [_jsxs("div", { className: "jini-section-head", children: [_jsxs("div", { children: [_jsx("h4", { children: title }), _jsx("p", { className: "jini-hint", children: description })] }), _jsxs("button", { type: "button", className: "jini-button jini-button-ghost", onClick: reload, disabled: load.status === 'loading', children: [_jsx(Icon, { name: "refresh", size: 13 }), _jsx("span", { children: load.status === 'loading' ? reloadingLabel : reloadLabel })] })] }), load.status === 'unreachable' ? (_jsx("p", { className: "jini-hint jini-hint-error", role: "alert", children: unreachableLabel })) : null, !hasAnyConfigured ? _jsx("p", { className: "jini-hint", children: emptyStateLabel }) : null, _jsx("div", { className: "jini-media-provider-list", children: orderedCatalog.map((option, index) => {
|
|
71
|
+
return (_jsxs("section", { className: "jini-settings-section jini-settings-media-providers", children: [_jsxs("div", { className: "jini-section-head", children: [_jsxs("div", { children: [_jsx("h4", { children: title }), _jsx("p", { className: "jini-hint", children: description })] }), _jsxs("button", { type: "button", className: "jini-button jini-button-ghost", onClick: reload, disabled: load.status === 'loading', ...agentHandleProps(agentHandle, { action: 'reload', role: 'button', label: reloadLabel }), children: [_jsx(Icon, { name: "refresh", size: 13 }), _jsx("span", { children: load.status === 'loading' ? reloadingLabel : reloadLabel })] })] }), load.status === 'unreachable' ? (_jsx("p", { className: "jini-hint jini-hint-error", role: "alert", children: unreachableLabel })) : null, !hasAnyConfigured ? _jsx("p", { className: "jini-hint", children: emptyStateLabel }) : null, _jsx("div", { className: "jini-media-provider-list", children: orderedCatalog.map((option, index) => {
|
|
68
72
|
const entry = providers[option.id] ?? {};
|
|
69
73
|
const clearable = isEntryPresent(entry);
|
|
70
74
|
const saved = isMarkerOnlyEntry(entry);
|
|
@@ -83,10 +87,16 @@ export function MediaProvidersTab({ port, catalog = DEFAULT_MEDIA_PROVIDER_CATAL
|
|
|
83
87
|
// every card is pinned (no "rest" to separate from).
|
|
84
88
|
const previousOption = index > 0 ? orderedCatalog[index - 1] : undefined;
|
|
85
89
|
const showDividerBefore = !pinnedIdSet.has(option.id) && previousOption !== undefined && pinnedIdSet.has(previousOption.id);
|
|
90
|
+
const providerHandle = providerHandles?.[index];
|
|
86
91
|
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
92
|
// `maskedLabel` is guaranteed non-null here — see its
|
|
88
93
|
// 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',
|
|
90
|
-
|
|
94
|
+
_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',
|
|
95
|
+
/* `new-password`, NOT `"off"` — Chrome deliberately ignores `off` on
|
|
96
|
+
credential-shaped fields, which is how a saved password gets autofilled into
|
|
97
|
+
an API-key box. Same defect, same fix, same reasoning as
|
|
98
|
+
`ByokProviderForm`'s own API-key input; see its comment. */
|
|
99
|
+
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 }), ...agentHandleProps(providerHandle, { action: 'api-key', role: 'field', label: `${option.label} ${apiKeyLabel}` }) }), _jsx("button", { type: "button", className: "jini-input-affix-btn", "aria-pressed": keyVisible, "aria-label": `${option.label} ${keyVisible ? hideKeyLabel : showKeyLabel}`, onClick: () => toggleKeyVisible(option.id), ...agentHandleProps(providerHandle, { action: 'reveal-key', role: 'button', label: `${option.label} ${showKeyLabel}` }), 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 }), ...agentHandleProps(providerHandle, { action: 'base-url', role: 'field', label: `${option.label} ${baseUrlLabel}` }) })] }), 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 }), ...agentHandleProps(providerHandle, { action: 'model', role: 'field', label: `${option.label} ${modelLabel}` }) }), _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), ...agentHandleProps(providerHandle, { action: 'clear', role: 'button', label: `${option.label} ${clearLabel}` }), 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));
|
|
100
|
+
}) }), _jsxs("div", { className: "jini-media-provider-save-row", children: [_jsx("button", { type: "button", className: "jini-button", onClick: saveChanges, disabled: save.status === 'saving' || !hasPendingChanges || blockedByInvalidBaseUrl, ...agentHandleProps(agentHandle, { action: 'save', role: 'button', label: saveChangesLabel }), 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
101
|
}
|
|
92
102
|
//# sourceMappingURL=MediaProvidersTab.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MediaProvidersTab.js","sourceRoot":"","sources":["../../../../../src/features/media-providers/react/components/MediaProvidersTab.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,sCAAsC,CAAC;AAE5D,OAAO,EACL,yBAAyB,EACzB,cAAc,EACd,iBAAiB,EACjB,wBAAwB,EACxB,cAAc,EACd,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AAEpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"MediaProvidersTab.js","sourceRoot":"","sources":["../../../../../src/features/media-providers/react/components/MediaProvidersTab.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import type { MemoryEntrySummary } from '../../types.js';
|
|
2
|
-
export declare function MemoryEntryCard({ entry, previewId, previewBody, onOpenPreview, onStartEdit, onDelete, }: {
|
|
2
|
+
export declare function MemoryEntryCard({ entry, previewId, previewBody, onOpenPreview, onStartEdit, onDelete, agentHandle, }: {
|
|
3
3
|
entry: MemoryEntrySummary;
|
|
4
4
|
previewId: string | null;
|
|
5
5
|
previewBody: string | null;
|
|
6
6
|
onOpenPreview: (id: string) => void;
|
|
7
7
|
onStartEdit: (id: string) => void;
|
|
8
8
|
onDelete: (id: string) => void;
|
|
9
|
+
/** This card's own agent handle — `MemoryList` derives one per entry. */
|
|
10
|
+
agentHandle?: string;
|
|
9
11
|
}): import("react").JSX.Element;
|
|
10
12
|
//# sourceMappingURL=MemoryEntryCard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryEntryCard.d.ts","sourceRoot":"","sources":["../../../../../src/features/memory/react/components/MemoryEntryCard.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MemoryEntryCard.d.ts","sourceRoot":"","sources":["../../../../../src/features/memory/react/components/MemoryEntryCard.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,SAAS,EACT,WAAW,EACX,aAAa,EACb,WAAW,EACX,QAAQ,EACR,WAAW,GACZ,EAAE;IACD,KAAK,EAAE,kBAAkB,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,+BAoDA"}
|
|
@@ -7,11 +7,12 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
7
7
|
// `@jini-ai/chat`'s `./react` subpath (formerly this package's own `./chat` export, extracted
|
|
8
8
|
// 2026-08-03)/this package's own `./renderers` subpath — see `packages/ui/source-map.md`)
|
|
9
9
|
// — just enough to render a saved memory's plain-text/Markdown body safely.
|
|
10
|
+
import { agentHandleProps } from '@jini-ai/agentic';
|
|
10
11
|
import { Icon } from '../../../../react/components/Icon.js';
|
|
11
12
|
import { useT } from '../../../i18n/index.js';
|
|
12
13
|
import { renderMarkdown } from '../render-markdown.js';
|
|
13
|
-
export function MemoryEntryCard({ entry, previewId, previewBody, onOpenPreview, onStartEdit, onDelete, }) {
|
|
14
|
+
export function MemoryEntryCard({ entry, previewId, previewBody, onOpenPreview, onStartEdit, onDelete, agentHandle, }) {
|
|
14
15
|
const t = useT();
|
|
15
|
-
return (_jsxs("div", { className: "library-card", children: [_jsxs("div", { className: "library-card-info", children: [_jsx("div", { className: "library-card-title-row", children: _jsx("span", { className: "library-card-name", children: entry.name }) }), _jsx("div", { className: "library-card-desc", children: entry.description || '—' })] }), _jsxs("div", { className: "memory-card-actions", children: [_jsx("button", { type: "button", className: "library-card-expand", onClick: () => onOpenPreview(entry.id), title: t('Preview'), children: _jsx(Icon, { name: previewId === entry.id ? 'chevron-down' : 'chevron-right', size: 14 }) }), _jsx("button", { type: "button", className: "ghost library-card-action", onClick: () => onStartEdit(entry.id), title: t('Edit'), children: _jsx(Icon, { name: "edit", size: 14 }) }), _jsx("button", { type: "button", className: "ghost library-card-action", onClick: () => onDelete(entry.id), title: t('Delete'), children: _jsx(Icon, { name: "close", size: 14 }) })] }), previewId === entry.id && (_jsx("div", { className: "library-preview", style: { width: '100%' }, children: previewBody === null ? (_jsx("p", { children: t('Loading…') })) : previewBody ? (_jsx("div", { className: "library-preview-body", children: renderMarkdown(previewBody) })) : (_jsx("p", { className: "hint", children: "\u2014" })) }))] }));
|
|
16
|
+
return (_jsxs("div", { className: "library-card", children: [_jsxs("div", { className: "library-card-info", children: [_jsx("div", { className: "library-card-title-row", children: _jsx("span", { className: "library-card-name", children: entry.name }) }), _jsx("div", { className: "library-card-desc", children: entry.description || '—' })] }), _jsxs("div", { className: "memory-card-actions", children: [_jsx("button", { type: "button", className: "library-card-expand", onClick: () => onOpenPreview(entry.id), title: t('Preview'), ...agentHandleProps(agentHandle, { action: 'preview', role: 'button', label: t('Preview') }), children: _jsx(Icon, { name: previewId === entry.id ? 'chevron-down' : 'chevron-right', size: 14 }) }), _jsx("button", { type: "button", className: "ghost library-card-action", onClick: () => onStartEdit(entry.id), title: t('Edit'), ...agentHandleProps(agentHandle, { action: 'edit', role: 'button', label: t('Edit') }), children: _jsx(Icon, { name: "edit", size: 14 }) }), _jsx("button", { type: "button", className: "ghost library-card-action", onClick: () => onDelete(entry.id), title: t('Delete'), ...agentHandleProps(agentHandle, { action: 'delete', role: 'button', label: t('Delete') }), children: _jsx(Icon, { name: "close", size: 14 }) })] }), previewId === entry.id && (_jsx("div", { className: "library-preview", style: { width: '100%' }, children: previewBody === null ? (_jsx("p", { children: t('Loading…') })) : previewBody ? (_jsx("div", { className: "library-preview-body", children: renderMarkdown(previewBody) })) : (_jsx("p", { className: "hint", children: "\u2014" })) }))] }));
|
|
16
17
|
}
|
|
17
18
|
//# sourceMappingURL=MemoryEntryCard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryEntryCard.js","sourceRoot":"","sources":["../../../../../src/features/memory/react/components/MemoryEntryCard.tsx"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,8EAA8E;AAC9E,8EAA8E;AAC9E,2EAA2E;AAC3E,mEAAmE;AACnE,8FAA8F;AAC9F,0FAA0F;AAC1F,4EAA4E;AAC5E,OAAO,EAAE,IAAI,EAAE,MAAM,sCAAsC,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,MAAM,UAAU,eAAe,CAAC,EAC9B,KAAK,EACL,SAAS,EACT,WAAW,EACX,aAAa,EACb,WAAW,EACX,QAAQ,
|
|
1
|
+
{"version":3,"file":"MemoryEntryCard.js","sourceRoot":"","sources":["../../../../../src/features/memory/react/components/MemoryEntryCard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import type { MemoryExtractionRecord } from '../../types.js';
|
|
2
|
-
export declare function MemoryExtractionCard({ record, nowClock, onOpenPreview, onDelete, }: {
|
|
2
|
+
export declare function MemoryExtractionCard({ record, nowClock, onOpenPreview, onDelete, agentHandle, }: {
|
|
3
3
|
record: MemoryExtractionRecord;
|
|
4
4
|
/** Wall clock so relative ages ("12s ago") re-render without freezing. */
|
|
5
5
|
nowClock: number;
|
|
6
6
|
onOpenPreview: (id: string) => void;
|
|
7
7
|
onDelete: (id: string) => void;
|
|
8
|
+
/** This card's own agent handle — `MemoryList` derives one per extraction record. */
|
|
9
|
+
agentHandle?: string;
|
|
8
10
|
}): import("react").JSX.Element;
|
|
9
11
|
//# sourceMappingURL=MemoryExtractionCard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryExtractionCard.d.ts","sourceRoot":"","sources":["../../../../../src/features/memory/react/components/MemoryExtractionCard.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MemoryExtractionCard.d.ts","sourceRoot":"","sources":["../../../../../src/features/memory/react/components/MemoryExtractionCard.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAE7D,wBAAgB,oBAAoB,CAAC,EACnC,MAAM,EACN,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,WAAW,GACZ,EAAE;IACD,MAAM,EAAE,sBAAsB,CAAC;IAC/B,0EAA0E;IAC1E,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,qFAAqF;IACrF,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,+BAqDA"}
|
|
@@ -3,10 +3,11 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
// optional failure explanation, the written-entry chips, and a delete action.
|
|
4
4
|
// Shared by the saved-memory list and the connected-apps scan history. Pure
|
|
5
5
|
// formatting comes from the slice formatters; state lives in the hooks.
|
|
6
|
+
import { agentHandleProps } from '@jini-ai/agentic';
|
|
6
7
|
import { Icon } from '../../../../react/components/Icon.js';
|
|
7
8
|
import { useT } from '../../../i18n/index.js';
|
|
8
9
|
import { describeExtractionFailure, describeRecord, extractionCardMeta, extractionCardTitle, } from '../../formatters.js';
|
|
9
|
-
export function MemoryExtractionCard({ record, nowClock, onOpenPreview, onDelete, }) {
|
|
10
|
+
export function MemoryExtractionCard({ record, nowClock, onOpenPreview, onDelete, agentHandle, }) {
|
|
10
11
|
const t = useT();
|
|
11
12
|
const desc = describeRecord(record, t);
|
|
12
13
|
const title = extractionCardTitle(record, t);
|
|
@@ -15,6 +16,6 @@ export function MemoryExtractionCard({ record, nowClock, onOpenPreview, onDelete
|
|
|
15
16
|
// the record didn't fail), so we render off its result directly instead of
|
|
16
17
|
// duplicating that guard here.
|
|
17
18
|
const failure = describeExtractionFailure(record);
|
|
18
|
-
return (_jsxs("div", { className: `library-card memory-extraction-card is-${desc.tone}`, children: [_jsxs("div", { className: "library-card-info", children: [_jsxs("div", { className: "library-card-title-row", children: [_jsx("span", { className: "library-card-name", children: title }), _jsx("span", { className: `memory-extraction-pill is-${desc.tone}`, children: desc.phaseLabel }), _jsx("span", { className: "library-card-badge", children: desc.kindLabel })] }), _jsx("div", { className: "library-card-desc", children: meta }), desc.reasonLabel ? _jsx("div", { className: "memory-extraction-reason", children: desc.reasonLabel }) : null, failure ? (_jsxs("div", { className: "memory-extraction-failure", children: [_jsx("strong", { children: failure.title }), _jsx("span", { children: failure.detail }), _jsx("span", { children: failure.action })] })) : null, Array.isArray(record.writtenIds) && record.writtenIds.length > 0 ? (_jsxs("div", { className: "memory-extraction-counts", children: [_jsx("span", { children: t('saved') }), _jsx("span", { className: "memory-extraction-ids", children: record.writtenIds.map((id) => (_jsx("button", { type: "button", className: "filter-pill", onClick: () => onOpenPreview(id), title: id, children: id }, id))) })] })) : null] }), _jsx("div", { className: "memory-card-actions", children: _jsx("button", { type: "button", className: "ghost library-card-action", onClick: () => onDelete(record.id), title: t('Remove'), "aria-label": t('Remove'), children: _jsx(Icon, { name: "close", size: 14 }) }) })] }));
|
|
19
|
+
return (_jsxs("div", { className: `library-card memory-extraction-card is-${desc.tone}`, children: [_jsxs("div", { className: "library-card-info", children: [_jsxs("div", { className: "library-card-title-row", children: [_jsx("span", { className: "library-card-name", children: title }), _jsx("span", { className: `memory-extraction-pill is-${desc.tone}`, children: desc.phaseLabel }), _jsx("span", { className: "library-card-badge", children: desc.kindLabel })] }), _jsx("div", { className: "library-card-desc", children: meta }), desc.reasonLabel ? _jsx("div", { className: "memory-extraction-reason", children: desc.reasonLabel }) : null, failure ? (_jsxs("div", { className: "memory-extraction-failure", children: [_jsx("strong", { children: failure.title }), _jsx("span", { children: failure.detail }), _jsx("span", { children: failure.action })] })) : null, Array.isArray(record.writtenIds) && record.writtenIds.length > 0 ? (_jsxs("div", { className: "memory-extraction-counts", children: [_jsx("span", { children: t('saved') }), _jsx("span", { className: "memory-extraction-ids", children: record.writtenIds.map((id) => (_jsx("button", { type: "button", className: "filter-pill", onClick: () => onOpenPreview(id), title: id, children: id }, id))) })] })) : null] }), _jsx("div", { className: "memory-card-actions", children: _jsx("button", { type: "button", className: "ghost library-card-action", onClick: () => onDelete(record.id), title: t('Remove'), "aria-label": t('Remove'), ...agentHandleProps(agentHandle, { action: 'delete', role: 'button', label: t('Remove') }), children: _jsx(Icon, { name: "close", size: 14 }) }) })] }));
|
|
19
20
|
}
|
|
20
21
|
//# sourceMappingURL=MemoryExtractionCard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryExtractionCard.js","sourceRoot":"","sources":["../../../../../src/features/memory/react/components/MemoryExtractionCard.tsx"],"names":[],"mappings":";AAAA,0EAA0E;AAC1E,8EAA8E;AAC9E,4EAA4E;AAC5E,wEAAwE;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,sCAAsC,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EACL,yBAAyB,EACzB,cAAc,EACd,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAG7B,MAAM,UAAU,oBAAoB,CAAC,EACnC,MAAM,EACN,QAAQ,EACR,aAAa,EACb,QAAQ,
|
|
1
|
+
{"version":3,"file":"MemoryExtractionCard.js","sourceRoot":"","sources":["../../../../../src/features/memory/react/components/MemoryExtractionCard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
export type MemoryHookKey = 'profileEnabled' | 'rewriteEnabled' | 'verifyEnabled' | 'chatExtractionEnabled';
|
|
2
|
-
export declare function MemoryHooksPanel({ enabled, flags, onToggle, }: {
|
|
2
|
+
export declare function MemoryHooksPanel({ enabled, flags, onToggle, agentHandle, }: {
|
|
3
3
|
/** Master memory switch — when off, every hook toggle is disabled. */
|
|
4
4
|
enabled: boolean;
|
|
5
5
|
flags: Record<MemoryHookKey, boolean>;
|
|
6
6
|
onToggle: (key: MemoryHookKey, next: boolean) => void;
|
|
7
|
+
/** This panel's own agent handle — one distinct sub-handle per hook toggle. */
|
|
8
|
+
agentHandle?: string;
|
|
7
9
|
}): import("react").JSX.Element;
|
|
8
10
|
//# sourceMappingURL=MemoryHooksPanel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryHooksPanel.d.ts","sourceRoot":"","sources":["../../../../../src/features/memory/react/components/MemoryHooksPanel.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MemoryHooksPanel.d.ts","sourceRoot":"","sources":["../../../../../src/features/memory/react/components/MemoryHooksPanel.tsx"],"names":[],"mappings":"AAkBA,MAAM,MAAM,aAAa,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,eAAe,GAAG,uBAAuB,CAAC;AA2C5G,wBAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,KAAK,EACL,QAAQ,EACR,WAAW,GACZ,EAAE;IACD,sEAAsE;IACtE,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACtC,QAAQ,EAAE,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtD,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,+BA8CA"}
|
|
@@ -13,36 +13,41 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
13
13
|
// toggle callbacks. Folded into this slice from OD's separate
|
|
14
14
|
// `components/MemoryHooksPanel.tsx` (single consumer, `MemoryHowPanel`) — see
|
|
15
15
|
// `packages/ui/source-map.md`.
|
|
16
|
+
import { agentHandleProps } from '@jini-ai/agentic';
|
|
16
17
|
import { Icon } from '../../../../react/components/Icon.js';
|
|
17
18
|
import { useT } from '../../../i18n/index.js';
|
|
18
19
|
const HOOKS = [
|
|
19
20
|
{
|
|
20
21
|
key: 'profileEnabled',
|
|
22
|
+
action: 'profile',
|
|
21
23
|
icon: 'home',
|
|
22
24
|
label: 'Profile injection',
|
|
23
25
|
description: 'Include your saved profile in the prompt.',
|
|
24
26
|
},
|
|
25
27
|
{
|
|
26
28
|
key: 'rewriteEnabled',
|
|
29
|
+
action: 'rewrite',
|
|
27
30
|
icon: 'sparkles',
|
|
28
31
|
label: 'Query rewrite',
|
|
29
32
|
description: 'Expand short requests into a fuller task brief first.',
|
|
30
33
|
},
|
|
31
34
|
{
|
|
32
35
|
key: 'verifyEnabled',
|
|
36
|
+
action: 'verify',
|
|
33
37
|
icon: 'check',
|
|
34
38
|
label: 'Self-verify',
|
|
35
39
|
description: 'Check responses against saved rules and report a scorecard.',
|
|
36
40
|
},
|
|
37
41
|
{
|
|
38
42
|
key: 'chatExtractionEnabled',
|
|
43
|
+
action: 'chat-extraction',
|
|
39
44
|
icon: 'history',
|
|
40
45
|
label: 'Chat extraction',
|
|
41
46
|
description: 'Learn new facts and preferences from chat turns.',
|
|
42
47
|
},
|
|
43
48
|
];
|
|
44
|
-
export function MemoryHooksPanel({ enabled, flags, onToggle, }) {
|
|
49
|
+
export function MemoryHooksPanel({ enabled, flags, onToggle, agentHandle, }) {
|
|
45
50
|
const t = useT();
|
|
46
|
-
return (_jsxs("div", { className: "memory-hooks-panel", "data-testid": "memory-hooks-panel", children: [_jsxs("div", { className: "memory-hooks-panel-head", children: [_jsx("span", { className: "memory-hooks-panel-head-icon", "aria-hidden": "true", children: _jsx(Icon, { name: "sliders", size: 15 }) }), _jsxs("div", { children: [_jsx("h4", { className: "memory-hooks-panel-title", children: t('Memory hooks') }), _jsx("p", { className: "memory-hooks-panel-hint", children: t('Fine-tune how memory is captured and used, without turning it off entirely.') })] })] }), _jsx("ul", { className: "memory-hooks-panel-list", children: HOOKS.map((hook) => (_jsxs("li", { className: "memory-hooks-panel-row", children: [_jsx("span", { className: "memory-hooks-panel-row-icon", "aria-hidden": "true", children: _jsx(Icon, { name: hook.icon, size: 14 }) }), _jsxs("span", { className: "memory-hooks-panel-row-copy", children: [_jsx("span", { className: "memory-hooks-panel-row-label", children: t(hook.label) }), _jsx("small", { className: "memory-hooks-panel-row-desc", children: t(hook.description) })] }), _jsx("label", { className: "memory-hooks-panel-toggle", title: t(hook.label), children: _jsxs("span", { className: "toggle-switch toggle-switch-sm", children: [_jsx("input", { type: "checkbox", "aria-label": t(hook.label), checked: flags[hook.key], disabled: !enabled, onChange: (e) => onToggle(hook.key, e.target.checked) }), _jsx("span", { className: "toggle-slider" })] }) })] }, hook.key))) })] }));
|
|
51
|
+
return (_jsxs("div", { className: "memory-hooks-panel", "data-testid": "memory-hooks-panel", children: [_jsxs("div", { className: "memory-hooks-panel-head", children: [_jsx("span", { className: "memory-hooks-panel-head-icon", "aria-hidden": "true", children: _jsx(Icon, { name: "sliders", size: 15 }) }), _jsxs("div", { children: [_jsx("h4", { className: "memory-hooks-panel-title", children: t('Memory hooks') }), _jsx("p", { className: "memory-hooks-panel-hint", children: t('Fine-tune how memory is captured and used, without turning it off entirely.') })] })] }), _jsx("ul", { className: "memory-hooks-panel-list", children: HOOKS.map((hook) => (_jsxs("li", { className: "memory-hooks-panel-row", children: [_jsx("span", { className: "memory-hooks-panel-row-icon", "aria-hidden": "true", children: _jsx(Icon, { name: hook.icon, size: 14 }) }), _jsxs("span", { className: "memory-hooks-panel-row-copy", children: [_jsx("span", { className: "memory-hooks-panel-row-label", children: t(hook.label) }), _jsx("small", { className: "memory-hooks-panel-row-desc", children: t(hook.description) })] }), _jsx("label", { className: "memory-hooks-panel-toggle", title: t(hook.label), children: _jsxs("span", { className: "toggle-switch toggle-switch-sm", children: [_jsx("input", { type: "checkbox", "aria-label": t(hook.label), checked: flags[hook.key], disabled: !enabled, onChange: (e) => onToggle(hook.key, e.target.checked), ...agentHandleProps(agentHandle, { action: `hook-${hook.action}`, role: 'checkbox', label: t(hook.label) }) }), _jsx("span", { className: "toggle-slider" })] }) })] }, hook.key))) })] }));
|
|
47
52
|
}
|
|
48
53
|
//# sourceMappingURL=MemoryHooksPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryHooksPanel.js","sourceRoot":"","sources":["../../../../../src/features/memory/react/components/MemoryHooksPanel.tsx"],"names":[],"mappings":";AAAA,6EAA6E;AAC7E,0EAA0E;AAC1E,4EAA4E;AAC5E,mBAAmB;AACnB,kEAAkE;AAClE,6EAA6E;AAC7E,gFAAgF;AAChF,gFAAgF;AAChF,EAAE;AACF,6EAA6E;AAC7E,6EAA6E;AAC7E,8DAA8D;AAC9D,8EAA8E;AAC9E,+BAA+B;AAC/B,OAAO,EAAE,IAAI,EAAiB,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"MemoryHooksPanel.js","sourceRoot":"","sources":["../../../../../src/features/memory/react/components/MemoryHooksPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import type { MemoryConfigFlagKey } from '../../rules.js';
|
|
2
|
-
export declare function MemoryHowPanel({ enabled, hookFlags, onToggleHook, }: {
|
|
2
|
+
export declare function MemoryHowPanel({ enabled, hookFlags, onToggleHook, agentHandle, }: {
|
|
3
3
|
enabled: boolean;
|
|
4
4
|
hookFlags: Record<MemoryConfigFlagKey, boolean>;
|
|
5
5
|
onToggleHook: (key: MemoryConfigFlagKey, next: boolean) => void;
|
|
6
|
+
/** This panel's own agent handle, forwarded unchanged to `MemoryHooksPanel`. */
|
|
7
|
+
agentHandle?: string;
|
|
6
8
|
}): import("react").JSX.Element;
|
|
7
9
|
//# sourceMappingURL=MemoryHowPanel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryHowPanel.d.ts","sourceRoot":"","sources":["../../../../../src/features/memory/react/components/MemoryHowPanel.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAG1D,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,SAAS,EACT,YAAY,
|
|
1
|
+
{"version":3,"file":"MemoryHowPanel.d.ts","sourceRoot":"","sources":["../../../../../src/features/memory/react/components/MemoryHowPanel.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAG1D,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,SAAS,EACT,YAAY,EACZ,WAAW,GACZ,EAAE;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;IAChD,YAAY,EAAE,CAAC,GAAG,EAAE,mBAAmB,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAChE,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,+BAqBA"}
|
|
@@ -5,8 +5,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
5
5
|
import { Icon } from '../../../../react/components/Icon.js';
|
|
6
6
|
import { useT } from '../../../i18n/index.js';
|
|
7
7
|
import { MemoryHooksPanel } from './MemoryHooksPanel.js';
|
|
8
|
-
export function MemoryHowPanel({ enabled, hookFlags, onToggleHook, }) {
|
|
8
|
+
export function MemoryHowPanel({ enabled, hookFlags, onToggleHook, agentHandle, }) {
|
|
9
9
|
const t = useT();
|
|
10
|
-
return (_jsxs("div", { className: "memory-how-panel", children: [_jsxs("div", { className: "memory-auto-flow", children: [_jsx("span", { children: t('Onboarding') }), _jsx(Icon, { name: "chevron-right", size: 13 }), _jsx("span", { children: t('Brand context') }), _jsx(Icon, { name: "chevron-right", size: 13 }), _jsx("span", { children: t('Chat signals') }), _jsx(Icon, { name: "chevron-right", size: 13 }), _jsx("strong", { children: t('Saved memory') })] }), _jsx("p", { className: "memory-how-copy", children: t('Memory is gathered automatically from profile setup, project and brand extraction, connected apps, and useful facts learned during chats. The saved list below is the review surface; everything else stays quiet unless you open Add or Advanced.') }), _jsx(MemoryHooksPanel, { enabled: enabled, flags: hookFlags, onToggle: onToggleHook })] }));
|
|
10
|
+
return (_jsxs("div", { className: "memory-how-panel", children: [_jsxs("div", { className: "memory-auto-flow", children: [_jsx("span", { children: t('Onboarding') }), _jsx(Icon, { name: "chevron-right", size: 13 }), _jsx("span", { children: t('Brand context') }), _jsx(Icon, { name: "chevron-right", size: 13 }), _jsx("span", { children: t('Chat signals') }), _jsx(Icon, { name: "chevron-right", size: 13 }), _jsx("strong", { children: t('Saved memory') })] }), _jsx("p", { className: "memory-how-copy", children: t('Memory is gathered automatically from profile setup, project and brand extraction, connected apps, and useful facts learned during chats. The saved list below is the review surface; everything else stays quiet unless you open Add or Advanced.') }), _jsx(MemoryHooksPanel, { enabled: enabled, flags: hookFlags, onToggle: onToggleHook, ...(agentHandle ? { agentHandle } : {}) })] }));
|
|
11
11
|
}
|
|
12
12
|
//# sourceMappingURL=MemoryHowPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryHowPanel.js","sourceRoot":"","sources":["../../../../../src/features/memory/react/components/MemoryHowPanel.tsx"],"names":[],"mappings":";AAAA,+EAA+E;AAC/E,+EAA+E;AAC/E,6DAA6D;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,sCAAsC,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,UAAU,cAAc,CAAC,EAC7B,OAAO,EACP,SAAS,EACT,YAAY,
|
|
1
|
+
{"version":3,"file":"MemoryHowPanel.js","sourceRoot":"","sources":["../../../../../src/features/memory/react/components/MemoryHowPanel.tsx"],"names":[],"mappings":";AAAA,+EAA+E;AAC/E,+EAA+E;AAC/E,6DAA6D;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,sCAAsC,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,UAAU,cAAc,CAAC,EAC7B,OAAO,EACP,SAAS,EACT,YAAY,EACZ,WAAW,GAOZ;IACC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;IACjB,OAAO,CACL,eAAK,SAAS,EAAC,kBAAkB,aAC/B,eAAK,SAAS,EAAC,kBAAkB,aAC/B,yBAAO,CAAC,CAAC,YAAY,CAAC,GAAQ,EAC9B,KAAC,IAAI,IAAC,IAAI,EAAC,eAAe,EAAC,IAAI,EAAE,EAAE,GAAI,EACvC,yBAAO,CAAC,CAAC,eAAe,CAAC,GAAQ,EACjC,KAAC,IAAI,IAAC,IAAI,EAAC,eAAe,EAAC,IAAI,EAAE,EAAE,GAAI,EACvC,yBAAO,CAAC,CAAC,cAAc,CAAC,GAAQ,EAChC,KAAC,IAAI,IAAC,IAAI,EAAC,eAAe,EAAC,IAAI,EAAE,EAAE,GAAI,EACvC,2BAAS,CAAC,CAAC,cAAc,CAAC,GAAU,IAChC,EACN,YAAG,SAAS,EAAC,iBAAiB,YAC3B,CAAC,CACA,oPAAoP,CACrP,GACC,EACJ,KAAC,gBAAgB,IAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,KAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAI,IACtH,CACP,CAAC;AACJ,CAAC"}
|