dsh-mnemon 0.5.29 → 0.5.31
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/README.md +3 -3
- package/README.zh-CN.md +3 -3
- package/SECURITY.md +2 -2
- package/lib/bundle.js +1 -1
- package/lib/client.js +721 -397
- package/lib/index.js +10760 -10096
- package/lib/{starter-resolution-CiUfOO4b.js → starter-resolution-DXcN5HsU.js} +2 -2
- package/lib/starter.js +1 -1
- package/lib/types/src/client/locales.d.ts +24 -5
- package/lib/types/src/client/page-controls.d.ts +3 -1
- package/lib/types/src/client/ui-icons.d.ts +0 -1
- package/lib/types/src/host/protocol.d.ts +61 -11
- package/package.json +42 -42
package/lib/client.js
CHANGED
|
@@ -339,8 +339,9 @@ window.__ModuleLoader__.load({
|
|
|
339
339
|
confirmed
|
|
340
340
|
}));
|
|
341
341
|
}
|
|
342
|
+
/** A session-scoped call reports the route that conversation's background work uses. */
|
|
342
343
|
taskAgentModels(includeCatalog) {
|
|
343
|
-
return this.call(MNEMON_READ_CHANNEL, "task-agent-models", includeCatalog === void 0 ? {} : { includeCatalog });
|
|
344
|
+
return this.call(MNEMON_READ_CHANNEL, "task-agent-models", this.scoped(includeCatalog === void 0 ? {} : { includeCatalog }));
|
|
344
345
|
}
|
|
345
346
|
versions() {
|
|
346
347
|
return this.call(MNEMON_READ_CHANNEL, "versions", {});
|
|
@@ -354,6 +355,10 @@ window.__ModuleLoader__.load({
|
|
|
354
355
|
updateProviderService(request) {
|
|
355
356
|
return this.call(MNEMON_WRITE_CHANNEL, "provider-service-update", this.scoped(request));
|
|
356
357
|
}
|
|
358
|
+
/** Fill in the vectors a Mnemon Native space lacks (#392). */
|
|
359
|
+
fillEmbeddings(memoryBodyId) {
|
|
360
|
+
return this.call(MNEMON_WRITE_CHANNEL, "embedding-fill", this.scoped({ memoryBodyId }));
|
|
361
|
+
}
|
|
357
362
|
/** Settled memory-tool activity of one turn, shared across all mounted tails. */
|
|
358
363
|
async turnActivity(turn, cursor = 0) {
|
|
359
364
|
return (await loadTurnActivities(this.connection, this.sessionId, cursor)).activities.find((activity) => activity.turn === turn) ?? null;
|
|
@@ -673,7 +678,7 @@ window.__ModuleLoader__.load({
|
|
|
673
678
|
}
|
|
674
679
|
//#endregion
|
|
675
680
|
//#region \0dsh-mnemon-css:/home/runner/work/dsh-mnemon/dsh-mnemon/src/client/MnemonSettingsCard.module.css.mjs
|
|
676
|
-
const css$13 = "._v_wrq_page{box-sizing:border-box;width:100%;min-width:0;color:var(--dsw-alias-label-primary);flex-direction:column;gap:32px;font-family:inherit;display:flex}._v_wrq_surface{color:var(--dsw-alias-label-primary)}:where(._v_wrq_page,._v_wrq_surface) *,:where(._v_wrq_page,._v_wrq_surface) :before,:where(._v_wrq_page,._v_wrq_surface) :after{box-sizing:border-box}:where(._v_wrq_page,._v_wrq_surface) :where(button,input,select,textarea){color:inherit;font:inherit}._v_wrq_loading{min-height:140px;color:var(--dsw-alias-label-tertiary);text-align:center;margin:0;font-size:13px;line-height:140px}._v_wrq_section{flex-direction:column;gap:4px;min-width:0;display:flex}._v_wrq_sectionHeading{grid-template-columns:minmax(0,1fr) auto;align-items:start;column-gap:12px;min-width:0;display:grid}._v_wrq_sectionHeading h2{grid-column:1;margin:0;font-size:14px;font-weight:500;line-height:20px}._v_wrq_sectionHeading p{max-width:66ch;color:var(--dsw-alias-label-tertiary);grid-column:1;margin:2px 0 0;font-size:12px;line-height:18px}._v_wrq_sectionHeading ._v_wrq_miniSpinner{grid-area:1/2}._v_wrq_sectionHeading>._v_wrq_boardLinks{grid-column:1;padding-top:6px}._v_wrq_componentListNote{max-width:72ch;color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;line-height:18px}._v_wrq_appliesNow{border:.5px solid var(--dsw-alias-border-l3);border-radius:var(--dsw-radius-xs);color:var(--dsw-alias-label-secondary);white-space:nowrap;grid-area:1/2;align-self:center;padding:1px 6px;font-size:11px;line-height:16px}._v_wrq_rows{flex-direction:column;min-width:0;display:flex}._v_wrq_settingRow,._v_wrq_toggleRow{border-bottom:.5px solid var(--dsw-alias-border-l2);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;min-width:0;padding:14px 0;display:flex;position:relative}._v_wrq_rows>:last-child,._v_wrq_rows>._v_wrq_packRow:last-child>._v_wrq_settingRow{border-bottom:0}._v_wrq_rows>._v_wrq_packRow:last-child{padding-bottom:0}._v_wrq_settingRow[data-stacked]{flex-direction:column;align-items:stretch}._v_wrq_settingCopy{flex-direction:column;flex:1 1 0;gap:2px;min-width:min(240px,100%);display:flex}._v_wrq_settingCopy strong,._v_wrq_settingCopy label{color:var(--dsw-alias-label-primary);font-size:14px;font-weight:400;line-height:22px}._v_wrq_settingCopy small{color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere;font-size:12px;line-height:18px}._v_wrq_settingCopy code{font-family:var(--ds-font-family-code,ui-monospace, monospace)}._v_wrq_settingControl{flex:none;justify-content:flex-end;align-items:center;gap:8px;min-width:0;display:flex}._v_wrq_settingRow[data-stacked] ._v_wrq_settingControl{flex:auto;justify-content:stretch}._v_wrq_switch{flex:none}._v_wrq_rowNote{min-width:0;color:var(--dsw-alias-label-secondary);flex-wrap:wrap;align-items:center;gap:4px 8px;padding-top:4px;font-size:12px;line-height:18px;display:flex}._v_wrq_groupCallout{margin:8px 0 4px}._v_wrq_boardSection{container-type:inline-size}._v_wrq_board{flex-direction:column;min-width:0;margin-top:10px;display:flex}._v_wrq_boardProblem{margin:0 0 4px}._v_wrq_boardLoading{min-height:40px;color:var(--dsw-alias-label-secondary);align-items:center;gap:8px;margin:0;font-size:13px;line-height:20px;display:flex}._v_wrq_boardGroup{flex-direction:column;min-width:0;padding-top:14px;display:flex}._v_wrq_boardGroupHead{justify-content:space-between;align-items:baseline;gap:8px;min-width:0;display:flex}._v_wrq_boardGroupHead h3{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;font-weight:500;line-height:18px}._v_wrq_boardGroupHead span{color:var(--dsw-alias-label-tertiary);white-space:nowrap;font-size:12px;line-height:18px}._v_wrq_pageLink{appearance:none;border-radius:var(--dsw-radius-sm);max-width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;padding:0;display:inline-flex}._v_wrq_pageLink>span{overflow-wrap:anywhere;min-width:0}._v_wrq_pageLink:hover>span{text-underline-offset:3px;text-decoration:underline}._v_wrq_settingCopy ._v_wrq_pageLink{width:fit-content;color:var(--dsw-alias-label-primary);font-size:14px;line-height:22px}._v_wrq_boardIconButton{border-radius:var(--dsw-radius-sm);width:28px;height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:0;flex:none;place-items:center;padding:0;display:inline-grid}._v_wrq_boardIconButton:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}._v_wrq_boardLinks{flex-wrap:wrap;align-items:center;gap:4px;min-width:0;padding-top:4px;display:flex}._v_wrq_boardLink{appearance:none;border:.5px solid var(--dsw-alias-border-l3);max-width:100%;color:var(--dsw-alias-label-tertiary);font:inherit;white-space:nowrap;cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:4px;padding:0 8px;font-size:11px;line-height:18px;transition:color .12s,border-color .12s;display:inline-flex}._v_wrq_boardLink[data-on]{color:var(--dsw-alias-label-secondary)}._v_wrq_boardLink:hover{border-color:var(--dsw-alias-border-l4);color:var(--dsw-alias-label-primary)}._v_wrq_boardLink>svg{flex:none}._v_wrq_boardLinksLabel{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}._v_wrq_pageLink:focus-visible,._v_wrq_boardIconButton:focus-visible,._v_wrq_boardLink:focus-visible,._v_wrq_detailsBack:focus-visible,._v_wrq_boardSearch:focus-within{box-shadow:0 0 0 2px var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline:none}._v_wrq_boardSearch{border:.5px solid var(--dsw-alias-border-l3);border-radius:var(--dsw-radius-md);min-width:0;color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-base);align-items:center;gap:8px;margin:12px 0 0;padding:0 10px;display:flex}._v_wrq_boardSearch input{min-width:0;height:32px;color:var(--dsw-alias-label-primary);font:inherit;background:0 0;border:0;outline:none;flex:1;font-size:13px}._v_wrq_detailsDialog{width:min(560px,100%);max-height:100%}._v_wrq_detailsScroll{overscroll-behavior:contain;min-height:0;overflow-y:auto}._v_wrq_detailsBody{flex-direction:column;gap:16px;min-width:0;display:flex}._v_wrq_detailsHead{flex-direction:column;gap:6px;min-width:0;display:flex}._v_wrq_detailsHeadLine{flex-wrap:wrap;align-items:center;gap:8px 10px;min-width:0;display:flex}._v_wrq_detailsPackage{min-width:0;color:var(--dsw-alias-label-tertiary);font-family:var(--ds-font-family-code,ui-monospace, monospace);text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:16px;overflow:hidden}._v_wrq_detailsControl{align-items:center;margin-left:auto;display:flex}._v_wrq_detailsSection{border-top:.5px solid var(--dsw-alias-border-l2);flex-direction:column;gap:8px;min-width:0;padding-top:14px;display:flex}._v_wrq_detailsSection>h3{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;font-weight:500;line-height:18px}._v_wrq_detailsRelations{grid-template-columns:max-content minmax(0,1fr);gap:6px 16px;min-width:0;margin:0;font-size:13px;line-height:20px;display:grid}._v_wrq_detailsRelations>div{display:contents}._v_wrq_detailsRelations dt{color:var(--dsw-alias-label-secondary)}._v_wrq_detailsRelations dd{min-width:0;color:var(--dsw-alias-label-primary);flex-wrap:wrap;gap:4px 12px;margin:0;display:flex}._v_wrq_detailsName{appearance:none;color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;padding:0;display:inline-flex}._v_wrq_detailsName:hover>span{text-underline-offset:3px;text-decoration:underline}._v_wrq_detailsBack{appearance:none;border-radius:var(--dsw-radius-sm);width:fit-content;color:var(--dsw-alias-label-secondary);font:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:2px;margin:-4px 0 -6px -4px;padding:2px 4px;font-size:12px;line-height:18px;display:inline-flex}._v_wrq_detailsBack:hover{color:var(--dsw-alias-label-primary)}._v_wrq_detailsMissing{color:var(--dsw-alias-label-secondary)}._v_wrq_detailsEffect{color:var(--dsw-alias-label-secondary);margin:0;font-size:12px;line-height:18px}._v_wrq_detailsBody ._v_wrq_optionsPanel{background:0 0;border-radius:0;margin:0;padding:0}._v_wrq_componentRowPage{flex-direction:column;gap:16px;min-width:0;display:flex}._v_wrq_detailsContributed{border-top:.5px solid var(--dsw-alias-border-l2);flex-direction:column;gap:16px;min-width:0;padding-top:14px;display:flex}._v_wrq_panelSection{flex-direction:column;gap:8px;min-width:0;display:flex}._v_wrq_panelHeading{grid-template-columns:minmax(0,1fr) auto;column-gap:12px;min-width:0;display:grid}._v_wrq_panelHeading h3{color:var(--dsw-alias-label-primary);margin:0;font-size:13px;font-weight:500;line-height:20px}._v_wrq_panelHeading p{color:var(--dsw-alias-label-tertiary);grid-column:1;margin:2px 0 0;font-size:12px;line-height:18px}._v_wrq_panelHeading ._v_wrq_miniSpinner{grid-area:1/2}._v_wrq_panelNote{color:var(--dsw-alias-label-secondary);margin:0;font-size:12px;line-height:18px}._v_wrq_panelActions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;min-width:0;padding-top:8px;display:flex}._v_wrq_panelActions>span{min-width:0;color:var(--dsw-alias-label-secondary);flex:1;font-size:12px;line-height:18px}._v_wrq_panelActions>span._v_wrq_panelError,._v_wrq_panelError{color:var(--dsw-alias-state-error-primary)}._v_wrq_rows>._v_wrq_panelActions{border-bottom:.5px solid var(--dsw-alias-border-l2);padding:10px 0}._v_wrq_rows>._v_wrq_panelNote{padding:8px 0}._v_wrq_panelError{margin:0;font-size:12px;line-height:18px}._v_wrq_boardRow{border-bottom:.5px solid var(--dsw-alias-border-l2);flex-direction:column;min-width:0;padding:14px 0;display:flex}._v_wrq_boardRowLine{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;min-width:0;display:flex}._v_wrq_boardGroup>._v_wrq_boardRow:last-child,._v_wrq_boardOthersList>._v_wrq_boardRow:last-child{border-bottom:0;padding-bottom:4px}._v_wrq_boardMain{padding-top:12px}._v_wrq_boardEmpty{color:var(--dsw-alias-label-tertiary);margin:0;padding:12px 0 4px;font-size:12px;line-height:18px}._v_wrq_boardOthers{flex-direction:column;min-width:0;padding-top:10px;display:flex}._v_wrq_boardOthersToggle{border-radius:var(--dsw-radius-sm);width:fit-content;color:var(--dsw-alias-label-secondary);font:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;margin-left:-4px;padding:2px 4px;font-size:12px;font-weight:500;line-height:18px;display:inline-flex}._v_wrq_boardOthersToggle:hover{color:var(--dsw-alias-label-primary)}._v_wrq_boardOthersToggle>svg{transition:transform .14s;transform:rotate(-90deg)}._v_wrq_boardOthersToggle[aria-expanded=true]>svg{transform:rotate(0)}._v_wrq_boardOthersList{flex-direction:column;min-width:0;display:flex}._v_wrq_boardFootnote{color:var(--dsw-alias-label-tertiary);margin:12px 0 0;font-size:12px;line-height:18px}._v_wrq_optionsPanel{border-radius:var(--dsw-radius-lg);background:var(--dsw-alias-bg-module-platform);flex-direction:column;gap:14px;min-width:0;margin-top:12px;padding:14px 16px;display:flex}._v_wrq_optionField{flex-direction:column;gap:6px;min-width:0;display:flex}._v_wrq_optionLabel{justify-content:space-between;align-items:center;gap:8px;min-width:0;display:flex}._v_wrq_optionLabel label{color:var(--dsw-alias-label-primary);font-size:13px;font-weight:500;line-height:20px}._v_wrq_optionDefault{border:.5px solid var(--dsw-alias-border-l3);border-radius:var(--dsw-radius-xs);color:var(--dsw-alias-label-tertiary);padding:0 6px;font-size:11px;line-height:16px}._v_wrq_optionReset{border-radius:var(--dsw-radius-sm);color:var(--dsw-alias-state-business-primary);font:inherit;cursor:pointer;background:0 0;border:0;padding:0 4px;font-size:12px;line-height:18px}._v_wrq_optionReset:disabled{cursor:default;opacity:.5}._v_wrq_optionInput{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l3);border-radius:var(--dsw-radius-md);width:100%;min-width:0;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-base);font:inherit;resize:vertical;outline:none;padding:7px 10px;font-size:13px;line-height:20px}._v_wrq_optionInput:focus-visible{border-color:var(--dsw-alias-state-business-primary)}._v_wrq_optionInput[aria-invalid=true]{border-color:var(--dsw-alias-state-error-primary)}._v_wrq_optionInput:disabled{opacity:.5}._v_wrq_optionHint{color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere;font-size:12px;line-height:18px}._v_wrq_optionHint[data-error]{color:var(--dsw-alias-state-error-primary)}._v_wrq_optionChoices{flex-wrap:wrap;gap:6px 16px;min-width:0;display:flex}._v_wrq_optionEmpty{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;line-height:18px}._v_wrq_boardControl{flex-wrap:wrap;flex:0 auto;justify-content:flex-end;align-items:center;gap:6px 12px;min-width:0;margin-left:auto;display:flex}._v_wrq_boardState{min-width:0;color:var(--dsw-alias-label-tertiary);white-space:nowrap;align-items:center;gap:6px;font-size:12px;line-height:18px;display:inline-flex}._v_wrq_boardState[data-tone=warning],._v_wrq_boardState[data-tone=error]{color:var(--dsw-alias-label-secondary)}._v_wrq_boardValue{color:var(--dsw-alias-label-secondary);font-size:13px;line-height:20px}@container (width<=420px){._v_wrq_boardMain ._v_wrq_boardControl{justify-content:stretch;width:100%}._v_wrq_boardMain ._v_wrq_boardControl>:last-child{flex:1}}@container (width<=180px){._v_wrq_boardSection ._v_wrq_sectionHeading p,._v_wrq_boardSection ._v_wrq_settingCopy small{display:none}._v_wrq_boardSection ._v_wrq_boardRow{padding:10px 0}._v_wrq_boardSection ._v_wrq_boardRowLine{grid-template-columns:minmax(0,1fr);gap:6px;display:grid}._v_wrq_boardSection ._v_wrq_settingCopy{min-width:0}._v_wrq_boardSection ._v_wrq_settingCopy strong{overflow-wrap:anywhere}._v_wrq_boardSection ._v_wrq_boardControl{justify-self:end}}._v_wrq_placeholderRow{border-bottom:.5px solid var(--dsw-alias-border-l2);justify-content:space-between;align-items:center;gap:16px;min-height:70px;display:flex}._v_wrq_placeholderRow span{background:var(--dsw-alias-bg-module-platform);border-radius:6px;height:12px;animation:1.4s ease-in-out infinite _v_wrq_placeholder-pulse}._v_wrq_placeholderRow span:first-child{width:38%}._v_wrq_placeholderRow span:last-child{border-radius:10px;width:36px;height:20px}@keyframes _v_wrq_placeholder-pulse{50%{opacity:.45}}@media (prefers-reduced-motion:reduce){._v_wrq_boardRowCopy,._v_wrq_boardOthersToggle>svg{transition:none}._v_wrq_placeholderRow span{animation:none}}._v_wrq_selector{appearance:none;border-radius:var(--dsw-radius-md);max-width:280px;height:36px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-module-platform);white-space:nowrap;cursor:pointer;border:0;align-items:center;gap:12px;padding:0 14px;font-size:14px;line-height:22px;display:inline-flex}._v_wrq_selector>span{text-overflow:ellipsis;min-width:0;overflow:hidden}._v_wrq_selector>svg{color:var(--dsw-alias-label-tertiary);flex:none}._v_wrq_selector:hover:not(:disabled),._v_wrq_selector[aria-expanded=true]{background:var(--dsw-alias-interactive-bg-hover)}._v_wrq_selector:disabled{cursor:default;opacity:.4}._v_wrq_selectMenu{min-width:220px}._v_wrq_selectOption{white-space:normal;gap:1px;min-width:0;display:grid}._v_wrq_selectOption>small{color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere;font-size:12px;line-height:18px}._v_wrq_directoryInput{border:.5px solid var(--dsw-alias-border-l4);border-radius:var(--dsw-radius-md);width:100%;min-width:0;height:34px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-3);font-family:var(--ds-font-family-code,ui-monospace, monospace);outline:none;padding:0 12px;font-size:12px;line-height:20px}._v_wrq_directoryInput::placeholder{color:var(--dsw-alias-label-dimmed);font-family:var(--dsw-font-family);font-size:13px}._v_wrq_directoryInput:focus-visible{border-color:var(--dsw-alias-state-business-primary)}._v_wrq_directoryInput[aria-invalid=true]{border-color:var(--dsw-alias-state-error-primary)}._v_wrq_directoryInput:disabled{cursor:default;opacity:.5}._v_wrq_rowDetail{border-bottom:.5px solid var(--dsw-alias-border-l2);flex-direction:column;gap:10px;min-width:0;padding:0 0 14px;display:flex}._v_wrq_settingRow:has(+._v_wrq_rowDetail){border-bottom:0;padding-bottom:10px}._v_wrq_effectiveRoute{min-width:0;color:var(--dsw-alias-label-tertiary);justify-content:space-between;align-items:center;gap:12px;font-size:12px;line-height:18px;display:flex}._v_wrq_effectiveRoute code{border:.5px solid var(--dsw-alias-border-l3);border-radius:var(--dsw-radius-xs);min-width:0;color:var(--dsw-alias-label-secondary);font-family:var(--ds-font-family-code,ui-monospace, monospace);text-overflow:ellipsis;white-space:nowrap;padding:1px 6px;font-size:11px;line-height:16px;overflow:hidden}._v_wrq_effectiveRoute small{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:12px;overflow:hidden}._v_wrq_warning{color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;margin:0;font-size:12px;line-height:18px}._v_wrq_advanced{min-width:0;padding:12px 0 2px}._v_wrq_advanced>summary{border-radius:var(--dsw-radius-sm);width:fit-content;color:var(--dsw-alias-label-secondary);cursor:pointer;align-items:center;gap:6px;margin-left:-4px;padding:2px 4px;font-size:12px;font-weight:500;line-height:18px;list-style:none;display:inline-flex}._v_wrq_advanced>summary::-webkit-details-marker{display:none}._v_wrq_advanced>summary>svg{transition:transform .14s}._v_wrq_advanced[open]>summary>svg{transform:rotate(180deg)}._v_wrq_advanced>summary:hover{color:var(--dsw-alias-label-primary)}._v_wrq_advanced>._v_wrq_fieldGrid{padding-top:12px}._v_wrq_miniSpinner{border:2px solid var(--dsw-alias-border-l2);border-top-color:var(--dsw-alias-label-secondary);border-radius:50%;flex:none;width:14px;height:14px;margin-top:4px;animation:.7s linear infinite _v_wrq_settings-spin}@keyframes _v_wrq_settings-spin{to{transform:rotate(360deg)}}._v_wrq_providerList{flex-direction:column;gap:8px;min-width:0;margin-top:10px;display:flex}._v_wrq_providerRow{border:.5px solid var(--dsw-alias-settings-card-stroke);border-radius:var(--dsw-radius-xl);background:var(--dsw-alias-settings-card-fill);overflow:hidden}._v_wrq_providerRowHeader{align-items:center;gap:12px;min-width:0;padding:12px 14px;display:flex}summary._v_wrq_providerRowHeader{cursor:pointer;list-style:none}summary._v_wrq_providerRowHeader::-webkit-details-marker{display:none}._v_wrq_providerDisclosure{appearance:none;min-width:0;color:inherit;cursor:pointer;text-align:left;background:0 0;border:0;outline:none;flex:1;align-items:center;gap:8px;padding:0;display:flex}._v_wrq_providerDisclosure:disabled{cursor:default}._v_wrq_providerDisclosure:focus-visible,summary._v_wrq_providerRowHeader:focus-visible{border-radius:var(--dsw-radius-md);box-shadow:0 0 0 2px var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary))}._v_wrq_providerIdentity{flex:1;align-items:center;gap:12px;min-width:0;display:flex}._v_wrq_providerIdentity>span{flex-direction:column;min-width:0;display:flex}._v_wrq_providerIdentity strong{font-size:14px;font-weight:500;line-height:22px}._v_wrq_providerIdentity small{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:18px;overflow:hidden}._v_wrq_providerMark{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l3);border-radius:var(--dsw-radius-md);background:var(--dsw-alias-bg-layer-1);flex:none;place-items:center;width:36px;height:36px;padding:6px;display:grid;overflow:hidden}._v_wrq_providerMark>img,._v_wrq_providerMark>svg{object-fit:contain;border-radius:4px;width:100%;height:100%;display:block}._v_wrq_providerEnableControl{flex:none;align-items:center;gap:10px;display:flex}._v_wrq_providerScopeTag{border:.5px solid var(--dsw-alias-border-l3);border-radius:var(--dsw-radius-xs);color:var(--dsw-alias-label-secondary);flex:none;padding:1px 6px;font-size:11px;line-height:16px}._v_wrq_providerScopeTag[data-scope=workspace]{border-color:color-mix(in srgb, var(--dsw-alias-state-business-primary) 30%, transparent);color:var(--dsw-alias-state-business-primary)}._v_wrq_providerState{color:var(--dsw-alias-label-tertiary);white-space:nowrap;flex:none;align-items:center;gap:6px;font-size:12px;line-height:18px;display:inline-flex}._v_wrq_providerState:before{content:\"\";background:var(--dsw-alias-state-idle-primary);border-radius:50%;flex:none;width:6px;height:6px}._v_wrq_providerState[data-enabled]:before{background:var(--dsw-alias-state-success-primary)}._v_wrq_providerChevron{color:var(--dsw-alias-label-tertiary);flex:none;transition:transform .14s}._v_wrq_providerDisclosure[aria-expanded=true] ._v_wrq_providerChevron,details[open]>summary ._v_wrq_providerChevron{transform:rotate(180deg)}._v_wrq_providerToggle{cursor:pointer;display:inline-flex;position:relative}._v_wrq_providerInlineBody{padding:0 14px 14px}._v_wrq_providerToggleError{color:var(--dsw-alias-state-error-primary);margin:0;padding:0 14px 12px;font-size:12px;line-height:18px}._v_wrq_providerServiceForm,._v_wrq_editor{border-radius:var(--dsw-radius-lg);background:var(--dsw-alias-bg-module-platform);flex-direction:column;gap:12px;min-width:0;padding:14px 16px;display:flex}._v_wrq_providerServicePrompt,._v_wrq_editorNote{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;line-height:18px}._v_wrq_editorHeading h3{margin:0;font-size:14px;font-weight:500;line-height:22px}._v_wrq_editorHeading p{color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere;margin:2px 0 0;font-size:12px;line-height:18px}._v_wrq_editor ._v_wrq_toggleRow{border-top:.5px solid var(--dsw-alias-border-l3);border-bottom:.5px solid var(--dsw-alias-border-l3);padding:10px 0}._v_wrq_embeddingTest{justify-content:space-between;align-items:center;gap:12px;min-width:0;display:flex}._v_wrq_embeddingTest>span{min-width:0;color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere;font-size:12px;line-height:18px}._v_wrq_embeddingTest>span._v_wrq_error{color:var(--dsw-alias-state-error-primary)}._v_wrq_globalLocationSetting{flex-direction:column;min-width:0;display:flex}._v_wrq_providerServiceLocation{border-bottom:.5px solid var(--dsw-alias-border-l3);padding-bottom:12px}._v_wrq_providerServiceLocation>._v_wrq_nativeLocation{padding:0 0 12px}._v_wrq_providerLocationField{padding-top:2px}._v_wrq_nativeLocation{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;min-width:0;display:flex}._v_wrq_inlineChoices{border-radius:var(--dsw-radius-md);background:var(--dsw-alias-interactive-bg-hover);flex:none;align-items:center;gap:2px;padding:3px;display:inline-flex}._v_wrq_inlineChoices label{cursor:pointer;position:relative}._v_wrq_inlineChoices input{z-index:1;opacity:0;width:100%;height:100%;cursor:inherit;margin:0;position:absolute;inset:0}._v_wrq_inlineChoices span{border-radius:var(--dsw-radius-sm);height:28px;color:var(--dsw-alias-label-secondary);white-space:nowrap;align-items:center;padding:0 12px;font-size:13px;font-weight:500;line-height:20px;display:inline-flex}._v_wrq_inlineChoices input:checked+span{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-1);box-shadow:var(--dsw-elevation-soft)}._v_wrq_inlineChoices input:focus-visible+span{box-shadow:0 0 0 2px var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary))}._v_wrq_inlineChoices input:disabled+span{cursor:default;opacity:.4}._v_wrq_fieldGrid,._v_wrq_providerSettingsGrid{grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:12px;min-width:0;display:grid}._v_wrq_providerSettingsGrid{grid-template-columns:minmax(0,1fr)}._v_wrq_fieldGrid>label,._v_wrq_providerFieldControl>label:not(._v_wrq_providerBoolean){min-width:0;color:var(--dsw-alias-label-primary);flex-direction:column;gap:6px;font-size:13px;font-weight:500;line-height:20px;display:flex}._v_wrq_fieldGrid input,._v_wrq_fieldGrid select,._v_wrq_providerFieldControl input:not([type=checkbox]),._v_wrq_providerFieldControl select{border:.5px solid var(--dsw-alias-border-l4);border-radius:var(--dsw-radius-md);width:100%;min-width:0;height:34px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-3);font:inherit;outline:none;padding:0 12px;font-size:13px;font-weight:400;line-height:20px}._v_wrq_fieldGrid input::placeholder,._v_wrq_providerFieldControl input::placeholder{color:var(--dsw-alias-label-dimmed)}._v_wrq_fieldGrid select,._v_wrq_providerFieldControl select{appearance:none;cursor:pointer;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12' fill='none'%3E%3Cpath d='M3 4.5L6 7.5L9 4.5' stroke='%2381858C' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E\");background-position:right 12px center;background-repeat:no-repeat;background-size:12px 12px;padding-right:32px}._v_wrq_fieldGrid select:disabled,._v_wrq_providerFieldControl select:disabled{cursor:default}._v_wrq_fieldGrid input:focus-visible,._v_wrq_fieldGrid select:focus-visible,._v_wrq_providerFieldControl input:focus-visible,._v_wrq_providerFieldControl select:focus-visible{border-color:var(--dsw-alias-state-business-primary)}._v_wrq_fieldGrid input[aria-invalid=true],._v_wrq_providerFieldControl input:invalid{border-color:var(--dsw-alias-state-error-primary)}._v_wrq_fieldGrid input:disabled,._v_wrq_fieldGrid select:disabled,._v_wrq_providerFieldControl input:disabled,._v_wrq_providerFieldControl select:disabled{opacity:.5}._v_wrq_providerFieldControl{flex-direction:column;justify-content:flex-end;gap:4px;min-width:0;display:flex}._v_wrq_providerBoolean{min-height:34px;color:var(--dsw-alias-label-primary);align-items:center;gap:8px;font-size:13px;display:flex}._v_wrq_providerBoolean input{width:16px;height:16px;accent-color:var(--dsw-alias-brand-primary);margin:0}._v_wrq_providerSecretInput{min-width:0;position:relative}._v_wrq_providerSecretInput>input{padding-right:40px}._v_wrq_providerSecretVisibility{appearance:none;border-radius:var(--dsw-radius-sm);width:28px;height:28px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:0;place-items:center;padding:0;display:grid;position:absolute;top:3px;right:3px}._v_wrq_providerSecretVisibility:hover:not(:disabled){color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}._v_wrq_providerSecretVisibility:focus-visible{box-shadow:0 0 0 2px var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline:none}._v_wrq_providerSecretVisibility:disabled{cursor:default;opacity:.35}._v_wrq_providerSecretVisibility svg{width:16px;height:16px}._v_wrq_memoryConfigFooter{justify-content:space-between;align-items:center;gap:10px;min-height:36px;display:flex}._v_wrq_memoryConfigFooter>div{align-items:center;gap:6px;display:flex}._v_wrq_providerServiceFooter{align-items:flex-end;min-height:0}._v_wrq_configFeedback{flex:1;min-width:0;font-size:12px;line-height:18px}._v_wrq_scopeChanging,._v_wrq_providerTarget{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;line-height:18px}._v_wrq_scopeChanging{border-radius:var(--dsw-radius-md);color:var(--dsw-alias-state-warn-label,var(--dsw-alias-label-secondary));background:var(--dsw-alias-state-warn-tertiary,var(--dsw-alias-bg-module-platform));padding:8px 12px}._v_wrq_providerLoadError{justify-content:space-between;align-items:center;gap:10px;font-size:12px;display:flex}._v_wrq_visuallyHidden{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}._v_wrq_location{align-items:baseline;gap:6px;min-width:0;display:flex}._v_wrq_locationRow{border-bottom:.5px solid var(--dsw-alias-border-l2);gap:10px;padding:14px 0}._v_wrq_rowActions{flex:none;align-items:center;gap:8px;display:flex}._v_wrq_packRow{flex-direction:column;gap:8px;min-width:0;padding-bottom:14px;display:flex}._v_wrq_packRow>._v_wrq_settingRow{border-bottom:0;padding-bottom:6px}._v_wrq_packRow:has(>._v_wrq_packFeedback:empty):not(:has(>._v_wrq_importBar))>._v_wrq_settingRow{padding-bottom:0}._v_wrq_rows>._v_wrq_packRow:not(:last-child){border-bottom:.5px solid var(--dsw-alias-border-l2)}._v_wrq_importBar{border-radius:var(--dsw-radius-md);background:var(--dsw-alias-bg-module-platform);grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:10px;min-width:0;padding:10px 12px;display:grid}._v_wrq_importBar>div{min-width:0;display:grid}._v_wrq_importBar strong{text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:500;line-height:20px;overflow:hidden}._v_wrq_importBar small{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}._v_wrq_packFeedback{gap:4px;display:grid}._v_wrq_packFeedback:empty{display:none}._v_wrq_packFeedback p{overflow-wrap:anywhere;margin:0;font-size:12px;line-height:18px}._v_wrq_error{color:var(--dsw-alias-state-error-primary)}._v_wrq_readOnlyNotice{color:var(--dsw-alias-label-tertiary);margin:0 0 -20px;font-size:12px;line-height:18px}._v_wrq_packSuccess{color:var(--dsw-alias-state-success-primary)}._v_wrq_syncRow{flex-direction:column;gap:8px;min-width:0;padding-bottom:14px;display:flex}._v_wrq_syncRow>._v_wrq_settingRow,._v_wrq_syncRow>._v_wrq_toggleRow{border-bottom:0;padding-bottom:6px}._v_wrq_rows>._v_wrq_syncRow:not(:last-child){border-bottom:.5px solid var(--dsw-alias-border-l2)}._v_wrq_syncState{flex-wrap:wrap;align-items:center;gap:4px 10px;min-width:0;display:flex}._v_wrq_syncState>span{color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere;font-size:12px;line-height:18px}._v_wrq_syncSuccess{color:var(--dsw-alias-state-success-primary)}._v_wrq_syncPanel{border:.5px solid var(--dsw-alias-settings-card-stroke);border-radius:var(--dsw-radius-xl);flex-direction:column;min-width:0;padding:2px 16px;display:flex}._v_wrq_syncPanel>._v_wrq_settingRow{padding:12px 0}._v_wrq_syncPanel>p{overflow-wrap:anywhere;margin:12px 0;font-size:12px;line-height:18px}._v_wrq_syncPanel>:last-child,._v_wrq_syncPanel>:last-child>._v_wrq_settingRow:last-child{border-bottom:0}._v_wrq_syncFeedbackLine{padding-top:2px;display:block}._v_wrq_syncWarning{border-radius:var(--dsw-radius-md);min-width:0;color:var(--dsw-alias-state-warn-label,var(--dsw-alias-label-secondary));background:var(--dsw-alias-state-warn-tertiary,var(--dsw-alias-bg-module-platform));flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px 12px;margin:10px 0 2px;padding:6px 6px 6px 12px;font-size:12px;line-height:18px;display:flex}._v_wrq_syncWarning>span{overflow-wrap:anywhere;min-width:0}._v_wrq_syncConnect{border-bottom:.5px solid var(--dsw-alias-border-l2);flex-direction:column;gap:4px;min-width:0;padding-bottom:14px;display:flex}._v_wrq_syncConnect>._v_wrq_settingRow{border-bottom:0;padding-bottom:4px}._v_wrq_syncRepositoryState{flex-direction:column;gap:2px;min-width:0;display:flex}._v_wrq_syncRepositoryName{min-width:0;color:var(--dsw-alias-label-secondary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._v_wrq_syncStateLine{flex-wrap:wrap;align-items:center;gap:4px 6px;min-width:0;display:inline-flex}._v_wrq_syncStateLine[data-tone=error]>span{color:var(--dsw-alias-state-error-primary)}._v_wrq_syncInlineAction{appearance:none;color:var(--dsw-alias-label-secondary);font:inherit;cursor:pointer;text-decoration:underline;text-decoration-color:var(--dsw-alias-border-l4);text-underline-offset:2px;background:0 0;border:0;padding:0;font-size:12px;line-height:18px}._v_wrq_syncInlineAction:hover:not(:disabled){color:var(--dsw-alias-label-primary);text-decoration-color:currentColor}._v_wrq_syncInlineAction:disabled{cursor:default;opacity:.5}._v_wrq_syncInlineAction:focus-visible{border-radius:var(--dsw-radius-xs);box-shadow:0 0 0 2px var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline:none}._v_wrq_syncFieldLabel{min-width:0;color:var(--dsw-alias-label-primary);justify-content:space-between;align-items:center;gap:8px;font-size:13px;font-weight:500;line-height:20px;display:flex}._v_wrq_syncFieldLabel>label{font:inherit}._v_wrq_fieldGrid>._v_wrq_syncFieldBox{flex-direction:column;gap:6px;min-width:0;display:flex}._v_wrq_fieldGrid label small{color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere;font-size:12px;font-weight:400;line-height:18px}._v_wrq_fieldGrid label small._v_wrq_error{color:var(--dsw-alias-state-error-primary)}._v_wrq_editor ._v_wrq_error,._v_wrq_editor ._v_wrq_syncSuccess{overflow-wrap:anywhere;margin:0;font-size:12px;line-height:18px}._v_wrq_syncAccount{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;min-width:0;display:flex}._v_wrq_syncAccount>span{color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;font-size:13px;line-height:20px}._v_wrq_syncDevice{gap:8px;min-width:0;display:grid}._v_wrq_syncCode{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;display:flex}._v_wrq_syncCode>code{border:.5px solid var(--dsw-alias-border-l4);border-radius:var(--dsw-radius-md);color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-1);font-family:var(--ds-font-family-code,ui-monospace, monospace);letter-spacing:.08em;user-select:all;padding:4px 12px;font-size:16px;font-weight:500;line-height:24px}._v_wrq_syncPicker{gap:8px;min-width:0;display:grid}._v_wrq_syncRepositoryList{border:.5px solid var(--dsw-alias-border-l3);border-radius:var(--dsw-radius-md);background:var(--dsw-alias-bg-layer-1);flex-direction:column;min-width:0;max-height:264px;margin:0;padding:0;list-style:none;display:flex;overflow:auto}._v_wrq_syncRepositoryList>li{border-bottom:.5px solid var(--dsw-alias-border-l2);min-width:0}._v_wrq_syncRepositoryList>li:last-child{border-bottom:0}._v_wrq_syncRepositoryList>li._v_wrq_editorNote{padding:10px 12px}._v_wrq_syncRepositoryOption{appearance:none;width:100%;min-width:0;color:var(--dsw-alias-label-primary);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;padding:8px 12px;font-size:13px;line-height:20px;display:flex}._v_wrq_syncRepositoryOption>span{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}._v_wrq_syncRepositoryOption:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}._v_wrq_syncRepositoryOption:disabled{cursor:default;opacity:.5}._v_wrq_syncRepositoryOption[aria-current=true]>span{font-weight:500}._v_wrq_syncRepositoryOption:focus-visible{box-shadow:inset 0 0 0 2px var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline:none}._v_wrq_syncAdvanced{flex-direction:column;gap:4px;min-width:0;padding-bottom:12px;display:flex}._v_wrq_syncDisclosure{appearance:none;width:100%;min-width:0;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:10px;padding:12px 0 8px;display:flex}._v_wrq_syncDisclosure>span{color:var(--dsw-alias-label-primary);flex:none;font-size:14px;line-height:22px}._v_wrq_syncDisclosure>small{min-width:0;color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:12px;line-height:18px;overflow:hidden}._v_wrq_syncDisclosure[aria-expanded=true] ._v_wrq_providerChevron{transform:rotate(180deg)}._v_wrq_syncDisclosure:focus-visible{border-radius:var(--dsw-radius-md);box-shadow:0 0 0 2px var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline:none}._v_wrq_editor>._v_wrq_inlineChoices{align-self:flex-start}._v_wrq_syncChoice{justify-items:start;gap:8px;min-width:0;display:grid}._v_wrq_syncChoice>._v_wrq_fieldGrid{width:100%}._v_wrq_syncDialogBody{gap:12px;min-width:0;display:grid}._v_wrq_syncDialogNote{color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere;margin:0;font-size:12px;line-height:18px}._v_wrq_syncDialogBody>._v_wrq_error,._v_wrq_syncDialogBody>._v_wrq_syncSuccess{overflow-wrap:anywhere;margin:0;font-size:12px;line-height:18px}._v_wrq_syncHistoryList{margin:0;padding:0;list-style:none;display:grid}._v_wrq_syncHistoryEntry{border-bottom:.5px solid var(--dsw-alias-border-l2);gap:2px;min-width:0;padding:10px 0;display:grid}._v_wrq_syncHistoryEntry:first-child{padding-top:0}._v_wrq_syncHistoryEntry:last-child{border-bottom:0}._v_wrq_syncHistoryHead{flex-wrap:wrap;align-items:center;gap:4px 8px;min-width:0;display:flex}._v_wrq_syncHistoryHead>strong{font-size:13px;font-weight:500;line-height:20px}._v_wrq_syncHistoryHead>span{min-width:0;color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;flex:1;font-size:12px;line-height:18px}._v_wrq_syncHistoryEntry>small{color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere;font-size:12px;line-height:18px}._v_wrq_syncHistoryEntry>._v_wrq_syncHistoryMessage{color:var(--dsw-alias-label-secondary)}._v_wrq_syncCompareList{border:.5px solid var(--dsw-alias-settings-card-stroke);border-radius:var(--dsw-radius-md);margin:0;padding:0;list-style:none;display:grid}._v_wrq_syncCompareList>li{border-bottom:.5px solid var(--dsw-alias-border-l2);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:4px 12px;min-width:0;padding:10px 12px;display:flex}._v_wrq_syncCompareList>li:last-child{border-bottom:0}._v_wrq_syncCompareList>li>span{font-size:13px;line-height:20px}._v_wrq_syncCompareList>li>small{color:var(--dsw-alias-label-tertiary);text-align:right;overflow-wrap:anywhere;font-size:12px;line-height:18px}._v_wrq_syncCompareList>li>small[data-differs]{color:var(--dsw-alias-label-primary)}._v_wrq_syncCompareNote{border-radius:var(--dsw-radius-md);background:var(--dsw-alias-bg-module-platform);gap:6px;min-width:0;padding:10px 12px;display:grid}._v_wrq_syncCompareNote>._v_wrq_rowActions{justify-content:flex-start;gap:4px}._v_wrq_syncConflictList{gap:6px;margin:0;padding:0;list-style:none;display:grid}._v_wrq_syncConflict{border-radius:var(--dsw-radius-sm);background:var(--dsw-alias-bg-layer-1);grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:8px;min-width:0;padding:8px 10px;display:grid}._v_wrq_syncConflict>span{overflow-wrap:anywhere;gap:2px;min-width:0;font-size:12px;line-height:18px;display:grid}._v_wrq_syncConflict>span>small{color:var(--dsw-alias-label-tertiary);font-size:11px;line-height:16px}._v_wrq_reviewList{gap:8px;display:grid}._v_wrq_reviewEntry{border-radius:var(--dsw-radius-md);background:var(--dsw-alias-bg-module-platform);flex-direction:column;gap:6px;min-width:0;padding:10px 12px;display:flex}._v_wrq_reviewEntry>header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;min-width:0;display:flex}._v_wrq_reviewEntry>small{color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere;font-size:12px;line-height:18px}._v_wrq_reviewEntry>p{overflow-wrap:anywhere;margin:0;font-size:13px;line-height:20px}._v_wrq_reviewTitle{align-items:center;gap:8px;min-width:0;display:flex}._v_wrq_reviewTitle strong{overflow-wrap:anywhere;font-size:13px;font-weight:500;line-height:20px}._v_wrq_reviewOperations{gap:4px;margin:0;padding-left:18px;display:grid}._v_wrq_reviewOperations li{overflow-wrap:anywhere;font-size:12px;line-height:18px}._v_wrq_reviewOperations small{color:var(--dsw-alias-label-tertiary);display:block}._v_wrq_reviewOpinions{gap:4px;display:grid}._v_wrq_reviewOpinions>strong{font-size:12px;font-weight:500;line-height:18px}._v_wrq_reviewOpinions>small{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}._v_wrq_reviewOpinions>div{overflow-wrap:anywhere;gap:6px;min-width:0;font-size:12px;line-height:18px;display:flex}._v_wrq_reviewOpinions>div strong{color:var(--dsw-alias-label-secondary);flex:none;font-weight:500}._v_wrq_reviewOpinionForm{align-items:center;gap:8px;min-width:0;display:flex}._v_wrq_reviewOpinionForm>input{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l4);border-radius:var(--dsw-radius-md);min-width:0;height:34px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-3);font:inherit;outline:none;flex:auto;padding:0 12px;font-size:13px;line-height:20px}._v_wrq_reviewOpinionForm>input:focus-visible{border-color:var(--dsw-alias-state-business-primary)}._v_wrq_reviewOpinionForm>input:disabled{cursor:default;opacity:.5}._v_wrq_reviewGuidance{gap:4px;display:grid}._v_wrq_reviewGuidance>label{color:var(--dsw-alias-label-secondary);font-size:12px;font-weight:500;line-height:18px}._v_wrq_reviewGuidance>input{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l4);border-radius:var(--dsw-radius-md);width:100%;height:34px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-3);font:inherit;outline:none;padding:0 12px;font-size:13px;line-height:20px}._v_wrq_reviewGuidance>input:focus-visible{border-color:var(--dsw-alias-state-business-primary)}._v_wrq_reviewGuidance>input:disabled{cursor:default;opacity:.5}._v_wrq_reviewGuidance>small{color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere;font-size:12px;line-height:18px}._v_wrq_reviewSelection{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px;min-width:0;display:flex}._v_wrq_reviewSelection>small,._v_wrq_reviewSelected{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}._v_wrq_reviewOperations>li{gap:2px;display:grid}._v_wrq_reviewOperations>li>label{cursor:pointer;align-items:flex-start;gap:6px;min-width:0;display:flex}._v_wrq_reviewOperations>li>label>input{flex:none;margin:3px 0 0}._v_wrq_reviewOperations>li>label>input:disabled{cursor:default;opacity:.5}._v_wrq_reviewOperations>li[data-applied=true]{opacity:.55}._v_wrq_selector:focus-visible{box-shadow:0 0 0 2px var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline:none}@media (width<=620px){._v_wrq_page{gap:28px}._v_wrq_rowActions{width:100%}._v_wrq_rowActions button{flex:1}._v_wrq_importBar{grid-template-columns:minmax(0,1fr) auto}._v_wrq_importBar>button:last-child{grid-column:1/-1}._v_wrq_reviewOpinionForm{flex-wrap:wrap}._v_wrq_reviewOpinionForm>input{flex:100%}._v_wrq_inlineChoices{width:100%}._v_wrq_inlineChoices label{flex:1}._v_wrq_inlineChoices span{justify-content:center;width:100%}._v_wrq_providerRowHeader{align-items:flex-start;gap:8px}._v_wrq_providerEnableControl{flex-wrap:wrap;justify-content:flex-end;gap:6px;max-width:132px}._v_wrq_providerState{text-overflow:ellipsis;max-width:120px;overflow:hidden}._v_wrq_memoryConfigFooter{flex-direction:column;align-items:stretch}._v_wrq_memoryConfigFooter>div:last-child{width:100%}._v_wrq_memoryConfigFooter button{flex:1}}@media (prefers-reduced-motion:reduce){._v_wrq_providerChevron,._v_wrq_advanced>summary>svg{transition:none}._v_wrq_miniSpinner{animation:none}}";
|
|
681
|
+
const css$13 = "._v_wrq_page{box-sizing:border-box;width:100%;min-width:0;color:var(--dsw-alias-label-primary);flex-direction:column;gap:32px;font-family:inherit;display:flex}._v_wrq_surface{color:var(--dsw-alias-label-primary)}:where(._v_wrq_page,._v_wrq_surface) *,:where(._v_wrq_page,._v_wrq_surface) :before,:where(._v_wrq_page,._v_wrq_surface) :after{box-sizing:border-box}:where(._v_wrq_page,._v_wrq_surface) :where(button,input,select,textarea){color:inherit;font:inherit}._v_wrq_loading{min-height:140px;color:var(--dsw-alias-label-tertiary);text-align:center;margin:0;font-size:13px;line-height:140px}._v_wrq_section{flex-direction:column;gap:4px;min-width:0;display:flex}._v_wrq_sectionHeading{grid-template-columns:minmax(0,1fr) auto;align-items:start;column-gap:12px;min-width:0;display:grid}._v_wrq_sectionHeading h2{grid-column:1;margin:0;font-size:14px;font-weight:500;line-height:20px}._v_wrq_sectionHeading p{max-width:66ch;color:var(--dsw-alias-label-tertiary);grid-column:1;margin:2px 0 0;font-size:12px;line-height:18px}._v_wrq_sectionHeading ._v_wrq_miniSpinner{grid-area:1/2}._v_wrq_sectionHeading>._v_wrq_boardLinks{grid-column:1;padding-top:6px}._v_wrq_componentListNote{max-width:72ch;color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;line-height:18px}._v_wrq_appliesNow{border:.5px solid var(--dsw-alias-border-l3);border-radius:var(--dsw-radius-xs);color:var(--dsw-alias-label-secondary);white-space:nowrap;grid-area:1/2;align-self:center;padding:1px 6px;font-size:11px;line-height:16px}._v_wrq_rows{flex-direction:column;min-width:0;display:flex}._v_wrq_settingRow,._v_wrq_toggleRow{border-bottom:.5px solid var(--dsw-alias-border-l2);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;min-width:0;padding:14px 0;display:flex;position:relative}._v_wrq_rows>:last-child,._v_wrq_rows>._v_wrq_packRow:last-child>._v_wrq_settingRow{border-bottom:0}._v_wrq_rows>._v_wrq_packRow:last-child{padding-bottom:0}._v_wrq_settingRow[data-stacked]{flex-direction:column;align-items:stretch}._v_wrq_settingCopy{flex-direction:column;flex:1 1 0;gap:2px;min-width:min(240px,100%);display:flex}._v_wrq_settingCopy strong,._v_wrq_settingCopy label{color:var(--dsw-alias-label-primary);font-size:14px;font-weight:400;line-height:22px}._v_wrq_settingCopy small{color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere;font-size:12px;line-height:18px}._v_wrq_settingCopy code{font-family:var(--ds-font-family-code,ui-monospace, monospace)}._v_wrq_settingControl{flex:none;justify-content:flex-end;align-items:center;gap:8px;min-width:0;display:flex}._v_wrq_settingRow[data-stacked] ._v_wrq_settingControl{flex:auto;justify-content:stretch}._v_wrq_switch{flex:none}._v_wrq_rowNote{min-width:0;color:var(--dsw-alias-label-secondary);flex-wrap:wrap;align-items:center;gap:4px 8px;padding-top:4px;font-size:12px;line-height:18px;display:flex}._v_wrq_groupCallout{margin:8px 0 4px}._v_wrq_boardSection{container-type:inline-size}._v_wrq_board{flex-direction:column;min-width:0;margin-top:10px;display:flex}._v_wrq_boardProblem{margin:0 0 4px}._v_wrq_boardLoading{min-height:40px;color:var(--dsw-alias-label-secondary);align-items:center;gap:8px;margin:0;font-size:13px;line-height:20px;display:flex}._v_wrq_boardGroup{flex-direction:column;min-width:0;padding-top:14px;display:flex}._v_wrq_boardGroupHead{justify-content:space-between;align-items:baseline;gap:8px;min-width:0;display:flex}._v_wrq_boardGroupHead h3{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;font-weight:500;line-height:18px}._v_wrq_boardGroupHead span{color:var(--dsw-alias-label-tertiary);white-space:nowrap;font-size:12px;line-height:18px}._v_wrq_pageLink{appearance:none;border-radius:var(--dsw-radius-sm);max-width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;padding:0;display:inline-flex}._v_wrq_pageLink>span{overflow-wrap:anywhere;min-width:0}._v_wrq_pageLink:hover>span{text-underline-offset:3px;text-decoration:underline}._v_wrq_settingCopy ._v_wrq_pageLink{width:fit-content;color:var(--dsw-alias-label-primary);font-size:14px;line-height:22px}._v_wrq_boardIconButton{border-radius:var(--dsw-radius-sm);width:28px;height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:0;flex:none;place-items:center;padding:0;display:inline-grid}._v_wrq_boardIconButton:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}._v_wrq_boardLinks{flex-wrap:wrap;align-items:center;gap:4px;min-width:0;padding-top:4px;display:flex}._v_wrq_boardLink{appearance:none;border:.5px solid var(--dsw-alias-border-l3);max-width:100%;color:var(--dsw-alias-label-tertiary);font:inherit;white-space:nowrap;cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:4px;padding:0 8px;font-size:11px;line-height:18px;transition:color .12s,border-color .12s;display:inline-flex}._v_wrq_boardLink[data-on]{color:var(--dsw-alias-label-secondary)}._v_wrq_boardLink:hover{border-color:var(--dsw-alias-border-l4);color:var(--dsw-alias-label-primary)}._v_wrq_boardLink>svg{flex:none}._v_wrq_boardLinksLabel{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}._v_wrq_pageLink:focus-visible,._v_wrq_boardIconButton:focus-visible,._v_wrq_boardLink:focus-visible,._v_wrq_detailsBack:focus-visible,._v_wrq_boardSearch:focus-within{box-shadow:0 0 0 2px var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline:none}._v_wrq_boardSearch{border:.5px solid var(--dsw-alias-border-l3);border-radius:var(--dsw-radius-md);min-width:0;color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-base);align-items:center;gap:8px;margin:12px 0 0;padding:0 10px;display:flex}._v_wrq_boardSearch input{min-width:0;height:32px;color:var(--dsw-alias-label-primary);font:inherit;background:0 0;border:0;outline:none;flex:1;font-size:13px}._v_wrq_detailsDialog{width:min(560px,100%);max-height:100%}._v_wrq_detailsScroll{overscroll-behavior:contain;min-height:0;overflow-y:auto}._v_wrq_detailsBody{flex-direction:column;gap:16px;min-width:0;display:flex}._v_wrq_detailsHead{flex-direction:column;gap:6px;min-width:0;display:flex}._v_wrq_detailsHeadLine{flex-wrap:wrap;align-items:center;gap:8px 10px;min-width:0;display:flex}._v_wrq_detailsPackage{min-width:0;color:var(--dsw-alias-label-tertiary);font-family:var(--ds-font-family-code,ui-monospace, monospace);text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:16px;overflow:hidden}._v_wrq_detailsControl{align-items:center;margin-left:auto;display:flex}._v_wrq_detailsSection{border-top:.5px solid var(--dsw-alias-border-l2);flex-direction:column;gap:8px;min-width:0;padding-top:14px;display:flex}._v_wrq_detailsSection>h3{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;font-weight:500;line-height:18px}._v_wrq_detailsRelations{grid-template-columns:max-content minmax(0,1fr);gap:6px 16px;min-width:0;margin:0;font-size:13px;line-height:20px;display:grid}._v_wrq_detailsRelations>div{display:contents}._v_wrq_detailsRelations dt{color:var(--dsw-alias-label-secondary)}._v_wrq_detailsRelations dd{min-width:0;color:var(--dsw-alias-label-primary);flex-wrap:wrap;gap:4px 12px;margin:0;display:flex}._v_wrq_detailsName{appearance:none;color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;padding:0;display:inline-flex}._v_wrq_detailsName:hover>span{text-underline-offset:3px;text-decoration:underline}._v_wrq_detailsBack{appearance:none;border-radius:var(--dsw-radius-sm);width:fit-content;color:var(--dsw-alias-label-secondary);font:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:2px;margin:-4px 0 -6px -4px;padding:2px 4px;font-size:12px;line-height:18px;display:inline-flex}._v_wrq_detailsBack:hover{color:var(--dsw-alias-label-primary)}._v_wrq_detailsMissing{color:var(--dsw-alias-label-secondary)}._v_wrq_detailsEffect{color:var(--dsw-alias-label-secondary);margin:0;font-size:12px;line-height:18px}._v_wrq_detailsBody ._v_wrq_optionsPanel{background:0 0;border-radius:0;margin:0;padding:0}._v_wrq_componentRowPage{flex-direction:column;gap:16px;min-width:0;display:flex}._v_wrq_detailsContributed{border-top:.5px solid var(--dsw-alias-border-l2);flex-direction:column;gap:16px;min-width:0;padding-top:14px;display:flex}._v_wrq_panelSection{flex-direction:column;gap:8px;min-width:0;display:flex}._v_wrq_panelHeading{grid-template-columns:minmax(0,1fr) auto;column-gap:12px;min-width:0;display:grid}._v_wrq_panelHeading h3{color:var(--dsw-alias-label-primary);margin:0;font-size:13px;font-weight:500;line-height:20px}._v_wrq_panelHeading p{color:var(--dsw-alias-label-tertiary);grid-column:1;margin:2px 0 0;font-size:12px;line-height:18px}._v_wrq_panelHeading ._v_wrq_miniSpinner{grid-area:1/2}._v_wrq_panelNote{color:var(--dsw-alias-label-secondary);margin:0;font-size:12px;line-height:18px}._v_wrq_panelActions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;min-width:0;padding-top:8px;display:flex}._v_wrq_panelActions>span{min-width:0;color:var(--dsw-alias-label-secondary);flex:1;font-size:12px;line-height:18px}._v_wrq_panelActions>span._v_wrq_panelError,._v_wrq_panelError{color:var(--dsw-alias-state-error-primary)}._v_wrq_rows>._v_wrq_panelActions{border-bottom:.5px solid var(--dsw-alias-border-l2);padding:10px 0}._v_wrq_rows>._v_wrq_panelNote{padding:8px 0}._v_wrq_panelError{margin:0;font-size:12px;line-height:18px}._v_wrq_boardRow{border-bottom:.5px solid var(--dsw-alias-border-l2);flex-direction:column;min-width:0;padding:14px 0;display:flex}._v_wrq_boardRowLine{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;min-width:0;display:flex}._v_wrq_boardGroup>._v_wrq_boardRow:last-child,._v_wrq_boardOthersList>._v_wrq_boardRow:last-child{border-bottom:0;padding-bottom:4px}._v_wrq_boardMain{padding-top:12px}._v_wrq_boardEmpty{color:var(--dsw-alias-label-tertiary);margin:0;padding:12px 0 4px;font-size:12px;line-height:18px}._v_wrq_boardOthers{flex-direction:column;min-width:0;padding-top:10px;display:flex}._v_wrq_boardOthersToggle{border-radius:var(--dsw-radius-sm);width:fit-content;color:var(--dsw-alias-label-secondary);font:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;margin-left:-4px;padding:2px 4px;font-size:12px;font-weight:500;line-height:18px;display:inline-flex}._v_wrq_boardOthersToggle:hover{color:var(--dsw-alias-label-primary)}._v_wrq_boardOthersToggle>svg{transition:transform .14s;transform:rotate(-90deg)}._v_wrq_boardOthersToggle[aria-expanded=true]>svg{transform:rotate(0)}._v_wrq_boardOthersList{flex-direction:column;min-width:0;display:flex}._v_wrq_boardFootnote{color:var(--dsw-alias-label-tertiary);margin:12px 0 0;font-size:12px;line-height:18px}._v_wrq_optionsPanel{border-radius:var(--dsw-radius-lg);background:var(--dsw-alias-bg-module-platform);flex-direction:column;gap:14px;min-width:0;margin-top:12px;padding:14px 16px;display:flex}._v_wrq_optionField{flex-direction:column;gap:6px;min-width:0;display:flex}._v_wrq_optionLabel{justify-content:space-between;align-items:center;gap:8px;min-width:0;display:flex}._v_wrq_optionLabel label{color:var(--dsw-alias-label-primary);font-size:13px;font-weight:500;line-height:20px}._v_wrq_optionDefault{border:.5px solid var(--dsw-alias-border-l3);border-radius:var(--dsw-radius-xs);color:var(--dsw-alias-label-tertiary);padding:0 6px;font-size:11px;line-height:16px}._v_wrq_optionReset{border-radius:var(--dsw-radius-sm);color:var(--dsw-alias-state-business-primary);font:inherit;cursor:pointer;background:0 0;border:0;padding:0 4px;font-size:12px;line-height:18px}._v_wrq_optionReset:disabled{cursor:default;opacity:.5}._v_wrq_optionInput{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l3);border-radius:var(--dsw-radius-md);width:100%;min-width:0;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-base);font:inherit;resize:vertical;outline:none;padding:7px 10px;font-size:13px;line-height:20px}._v_wrq_optionInput:focus-visible{border-color:var(--dsw-alias-state-business-primary)}._v_wrq_optionInput[aria-invalid=true]{border-color:var(--dsw-alias-state-error-primary)}._v_wrq_optionInput:disabled{opacity:.5}._v_wrq_optionHint{color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere;font-size:12px;line-height:18px}._v_wrq_optionHint[data-error]{color:var(--dsw-alias-state-error-primary)}._v_wrq_optionChoices{flex-wrap:wrap;gap:6px 16px;min-width:0;display:flex}._v_wrq_optionEmpty{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;line-height:18px}._v_wrq_boardControl{flex-wrap:wrap;flex:0 auto;justify-content:flex-end;align-items:center;gap:6px 12px;min-width:0;margin-left:auto;display:flex}._v_wrq_boardState{min-width:0;color:var(--dsw-alias-label-tertiary);white-space:nowrap;align-items:center;gap:6px;font-size:12px;line-height:18px;display:inline-flex}._v_wrq_boardState[data-tone=warning],._v_wrq_boardState[data-tone=error]{color:var(--dsw-alias-label-secondary)}._v_wrq_boardValue{color:var(--dsw-alias-label-secondary);font-size:13px;line-height:20px}@container (width<=420px){._v_wrq_boardMain ._v_wrq_boardControl{justify-content:stretch;width:100%}._v_wrq_boardMain ._v_wrq_boardControl>:last-child{flex:1}}@container (width<=180px){._v_wrq_boardSection ._v_wrq_sectionHeading p,._v_wrq_boardSection ._v_wrq_settingCopy small{display:none}._v_wrq_boardSection ._v_wrq_boardRow{padding:10px 0}._v_wrq_boardSection ._v_wrq_boardRowLine{grid-template-columns:minmax(0,1fr);gap:6px;display:grid}._v_wrq_boardSection ._v_wrq_settingCopy{min-width:0}._v_wrq_boardSection ._v_wrq_settingCopy strong{overflow-wrap:anywhere}._v_wrq_boardSection ._v_wrq_boardControl{justify-self:end}}._v_wrq_placeholderRow{border-bottom:.5px solid var(--dsw-alias-border-l2);justify-content:space-between;align-items:center;gap:16px;min-height:70px;display:flex}._v_wrq_placeholderRow span{background:var(--dsw-alias-bg-module-platform);border-radius:6px;height:12px;animation:1.4s ease-in-out infinite _v_wrq_placeholder-pulse}._v_wrq_placeholderRow span:first-child{width:38%}._v_wrq_placeholderRow span:last-child{border-radius:10px;width:36px;height:20px}@keyframes _v_wrq_placeholder-pulse{50%{opacity:.45}}@media (prefers-reduced-motion:reduce){._v_wrq_boardOthersToggle>svg{transition:none}._v_wrq_placeholderRow span{animation:none}}._v_wrq_selector{appearance:none;border-radius:var(--dsw-radius-md);max-width:280px;height:36px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-module-platform);white-space:nowrap;cursor:pointer;border:0;align-items:center;gap:12px;padding:0 14px;font-size:14px;line-height:22px;display:inline-flex}._v_wrq_selector>span{text-overflow:ellipsis;min-width:0;overflow:hidden}._v_wrq_selector>svg{color:var(--dsw-alias-label-tertiary);flex:none}._v_wrq_selector:hover:not(:disabled),._v_wrq_selector[aria-expanded=true]{background:var(--dsw-alias-interactive-bg-hover)}._v_wrq_selector:disabled{cursor:default;opacity:.4}._v_wrq_selectMenu{min-width:220px}._v_wrq_selectOption{white-space:normal;gap:1px;min-width:0;display:grid}._v_wrq_selectOption>small{color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere;font-size:12px;line-height:18px}._v_wrq_directoryInput{border:.5px solid var(--dsw-alias-border-l4);border-radius:var(--dsw-radius-md);width:100%;min-width:0;height:34px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-3);font-family:var(--ds-font-family-code,ui-monospace, monospace);outline:none;padding:0 12px;font-size:12px;line-height:20px}._v_wrq_directoryInput::placeholder{color:var(--dsw-alias-label-dimmed);font-family:var(--dsw-font-family);font-size:13px}._v_wrq_directoryInput:focus-visible{border-color:var(--dsw-alias-state-business-primary)}._v_wrq_directoryInput[aria-invalid=true]{border-color:var(--dsw-alias-state-error-primary)}._v_wrq_directoryInput:disabled{cursor:default;opacity:.5}._v_wrq_rowDetail{border-bottom:.5px solid var(--dsw-alias-border-l2);flex-direction:column;gap:10px;min-width:0;padding:0 0 14px;display:flex}._v_wrq_settingRow:has(+._v_wrq_rowDetail){border-bottom:0;padding-bottom:10px}._v_wrq_effectiveRoute{min-width:0;color:var(--dsw-alias-label-tertiary);justify-content:space-between;align-items:center;gap:12px;font-size:12px;line-height:18px;display:flex}._v_wrq_effectiveRoute code{border:.5px solid var(--dsw-alias-border-l3);border-radius:var(--dsw-radius-xs);min-width:0;color:var(--dsw-alias-label-secondary);font-family:var(--ds-font-family-code,ui-monospace, monospace);text-overflow:ellipsis;white-space:nowrap;padding:1px 6px;font-size:11px;line-height:16px;overflow:hidden}._v_wrq_effectiveRoute small{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:12px;overflow:hidden}._v_wrq_routeValue{align-items:center;gap:8px;min-width:0;display:inline-flex}._v_wrq_warning{color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;margin:0;font-size:12px;line-height:18px}._v_wrq_advanced{min-width:0;padding:12px 0 2px}._v_wrq_advanced>summary{border-radius:var(--dsw-radius-sm);width:fit-content;color:var(--dsw-alias-label-secondary);cursor:pointer;align-items:center;gap:6px;margin-left:-4px;padding:2px 4px;font-size:12px;font-weight:500;line-height:18px;list-style:none;display:inline-flex}._v_wrq_advanced>summary::-webkit-details-marker{display:none}._v_wrq_advanced>summary>svg{transition:transform .14s}._v_wrq_advanced[open]>summary>svg{transform:rotate(180deg)}._v_wrq_advanced>summary:hover{color:var(--dsw-alias-label-primary)}._v_wrq_advanced>._v_wrq_fieldGrid{padding-top:12px}._v_wrq_miniSpinner{border:2px solid var(--dsw-alias-border-l2);border-top-color:var(--dsw-alias-label-secondary);border-radius:50%;flex:none;width:14px;height:14px;margin-top:4px;animation:.7s linear infinite _v_wrq_settings-spin}@keyframes _v_wrq_settings-spin{to{transform:rotate(360deg)}}._v_wrq_providerList{flex-direction:column;gap:8px;min-width:0;margin-top:10px;display:flex}._v_wrq_providerRow{border:.5px solid var(--dsw-alias-settings-card-stroke);border-radius:var(--dsw-radius-xl);background:var(--dsw-alias-settings-card-fill);overflow:hidden}._v_wrq_providerRowHeader{align-items:center;gap:12px;min-width:0;padding:12px 14px;display:flex}summary._v_wrq_providerRowHeader{cursor:pointer;list-style:none}summary._v_wrq_providerRowHeader::-webkit-details-marker{display:none}._v_wrq_providerDisclosure{appearance:none;min-width:0;color:inherit;cursor:pointer;text-align:left;background:0 0;border:0;outline:none;flex:1;align-items:center;gap:8px;padding:0;display:flex}._v_wrq_providerDisclosure:disabled{cursor:default}._v_wrq_providerDisclosure:focus-visible,summary._v_wrq_providerRowHeader:focus-visible{border-radius:var(--dsw-radius-md);box-shadow:0 0 0 2px var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary))}._v_wrq_providerIdentity{flex:1;align-items:center;gap:12px;min-width:0;display:flex}._v_wrq_providerIdentity>span{flex-direction:column;min-width:0;display:flex}._v_wrq_providerIdentity strong{font-size:14px;font-weight:500;line-height:22px}._v_wrq_providerIdentity small{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:18px;overflow:hidden}._v_wrq_providerMark{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l3);border-radius:var(--dsw-radius-md);background:var(--dsw-alias-bg-layer-1);flex:none;place-items:center;width:36px;height:36px;padding:6px;display:grid;overflow:hidden}._v_wrq_providerMark>img,._v_wrq_providerMark>svg{object-fit:contain;border-radius:4px;width:100%;height:100%;display:block}._v_wrq_providerEnableControl{flex:none;align-items:center;gap:10px;display:flex}._v_wrq_providerScopeTag{border:.5px solid var(--dsw-alias-border-l3);border-radius:var(--dsw-radius-xs);color:var(--dsw-alias-label-secondary);flex:none;padding:1px 6px;font-size:11px;line-height:16px}._v_wrq_providerScopeTag[data-scope=workspace]{border-color:color-mix(in srgb, var(--dsw-alias-state-business-primary) 30%, transparent);color:var(--dsw-alias-state-business-primary)}._v_wrq_providerState{color:var(--dsw-alias-label-tertiary);white-space:nowrap;flex:none;align-items:center;gap:6px;font-size:12px;line-height:18px;display:inline-flex}._v_wrq_providerState:before{content:\"\";background:var(--dsw-alias-state-idle-primary);border-radius:50%;flex:none;width:6px;height:6px}._v_wrq_providerState[data-enabled]:before{background:var(--dsw-alias-state-success-primary)}._v_wrq_providerChevron{color:var(--dsw-alias-label-tertiary);flex:none;transition:transform .14s}._v_wrq_providerDisclosure[aria-expanded=true] ._v_wrq_providerChevron,details[open]>summary ._v_wrq_providerChevron{transform:rotate(180deg)}._v_wrq_providerToggle{cursor:pointer;display:inline-flex;position:relative}._v_wrq_providerInlineBody{padding:0 14px 14px}._v_wrq_providerToggleError{color:var(--dsw-alias-state-error-primary);margin:0;padding:0 14px 12px;font-size:12px;line-height:18px}._v_wrq_providerServiceForm,._v_wrq_editor{border-radius:var(--dsw-radius-lg);background:var(--dsw-alias-bg-module-platform);flex-direction:column;gap:12px;min-width:0;padding:14px 16px;display:flex}._v_wrq_providerServicePrompt,._v_wrq_editorNote{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;line-height:18px}._v_wrq_editorHeading h3{margin:0;font-size:14px;font-weight:500;line-height:22px}._v_wrq_editorHeading p{color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere;margin:2px 0 0;font-size:12px;line-height:18px}._v_wrq_editor ._v_wrq_toggleRow{border-top:.5px solid var(--dsw-alias-border-l3);border-bottom:.5px solid var(--dsw-alias-border-l3);padding:10px 0}._v_wrq_embeddingTest{justify-content:space-between;align-items:center;gap:12px;min-width:0;display:flex}._v_wrq_embeddingTest>span{min-width:0;color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere;font-size:12px;line-height:18px}._v_wrq_embeddingTest>span._v_wrq_error{color:var(--dsw-alias-state-error-primary)}._v_wrq_embeddingTest>button{white-space:nowrap;flex:none}._v_wrq_embeddingSpaces{flex-direction:column;gap:4px;min-width:0;display:flex}._v_wrq_embeddingSpaces>small,._v_wrq_embeddingSpaces>p{color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere;margin:0;font-size:12px;line-height:18px}._v_wrq_embeddingSpaces>ul{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}._v_wrq_embeddingSpaces li{min-width:0;min-height:28px;color:var(--dsw-alias-label-secondary);flex-wrap:wrap;align-items:center;gap:0 12px;font-size:12px;line-height:20px;display:flex}._v_wrq_embeddingSpaceName{text-overflow:ellipsis;white-space:nowrap;flex:6em;min-width:0;overflow:hidden}._v_wrq_embeddingSpaceState{color:var(--dsw-alias-label-tertiary);white-space:nowrap;flex:none}._v_wrq_embeddingSpaceCount{font-variant-numeric:tabular-nums;flex:none;margin-left:auto}._v_wrq_embeddingSpaces li>button{white-space:nowrap;flex:none}._v_wrq_embeddingSpaces li[data-missing]>._v_wrq_embeddingSpaceCount{color:var(--dsw-alias-state-warn-label,var(--dsw-alias-label-secondary))}._v_wrq_embeddingSpaces li[data-failed]>._v_wrq_embeddingSpaceCount{min-width:0;color:var(--dsw-alias-state-error-primary);overflow-wrap:anywhere;flex:100%;margin-left:0}._v_wrq_embeddingFillOutcome{color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere;margin:0;font-size:12px;line-height:18px}._v_wrq_embeddingFillOutcome._v_wrq_error{color:var(--dsw-alias-state-error-primary)}._v_wrq_globalLocationSetting{flex-direction:column;min-width:0;display:flex}._v_wrq_providerServiceLocation{border-bottom:.5px solid var(--dsw-alias-border-l3);padding-bottom:12px}._v_wrq_providerServiceLocation>._v_wrq_nativeLocation{padding:0 0 12px}._v_wrq_providerLocationField{padding-top:2px}._v_wrq_nativeLocation{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;min-width:0;display:flex}._v_wrq_inlineChoices{border-radius:var(--dsw-radius-md);background:var(--dsw-alias-interactive-bg-hover);flex:none;align-items:center;gap:2px;padding:3px;display:inline-flex}._v_wrq_inlineChoices label{cursor:pointer;position:relative}._v_wrq_inlineChoices input{z-index:1;opacity:0;width:100%;height:100%;cursor:inherit;margin:0;position:absolute;inset:0}._v_wrq_inlineChoices span{border-radius:var(--dsw-radius-sm);height:28px;color:var(--dsw-alias-label-secondary);white-space:nowrap;align-items:center;padding:0 12px;font-size:13px;font-weight:500;line-height:20px;display:inline-flex}._v_wrq_inlineChoices input:checked+span{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-1);box-shadow:var(--dsw-elevation-soft)}._v_wrq_inlineChoices input:focus-visible+span{box-shadow:0 0 0 2px var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary))}._v_wrq_inlineChoices input:disabled+span{cursor:default;opacity:.4}._v_wrq_fieldGrid,._v_wrq_providerSettingsGrid{grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:12px;min-width:0;display:grid}._v_wrq_providerSettingsGrid{grid-template-columns:minmax(0,1fr)}._v_wrq_fieldGrid>label,._v_wrq_providerFieldControl>label:not(._v_wrq_providerBoolean){min-width:0;color:var(--dsw-alias-label-primary);flex-direction:column;gap:6px;font-size:13px;font-weight:500;line-height:20px;display:flex}._v_wrq_fieldGrid input,._v_wrq_fieldGrid select,._v_wrq_providerFieldControl input:not([type=checkbox]),._v_wrq_providerFieldControl select{border:.5px solid var(--dsw-alias-border-l4);border-radius:var(--dsw-radius-md);width:100%;min-width:0;height:34px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-3);font:inherit;outline:none;padding:0 12px;font-size:13px;font-weight:400;line-height:20px}._v_wrq_fieldGrid input::placeholder,._v_wrq_providerFieldControl input::placeholder{color:var(--dsw-alias-label-dimmed)}._v_wrq_fieldGrid select,._v_wrq_providerFieldControl select{appearance:none;cursor:pointer;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12' fill='none'%3E%3Cpath d='M3 4.5L6 7.5L9 4.5' stroke='%2381858C' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E\");background-position:right 12px center;background-repeat:no-repeat;background-size:12px 12px;padding-right:32px}._v_wrq_fieldGrid select:disabled,._v_wrq_providerFieldControl select:disabled{cursor:default}._v_wrq_fieldGrid input:focus-visible,._v_wrq_fieldGrid select:focus-visible,._v_wrq_providerFieldControl input:focus-visible,._v_wrq_providerFieldControl select:focus-visible{border-color:var(--dsw-alias-state-business-primary)}._v_wrq_fieldGrid input[aria-invalid=true],._v_wrq_providerFieldControl input:invalid{border-color:var(--dsw-alias-state-error-primary)}._v_wrq_fieldGrid input:disabled,._v_wrq_fieldGrid select:disabled,._v_wrq_providerFieldControl input:disabled,._v_wrq_providerFieldControl select:disabled{opacity:.5}._v_wrq_providerFieldControl{flex-direction:column;justify-content:flex-end;gap:4px;min-width:0;display:flex}._v_wrq_providerBoolean{min-height:34px;color:var(--dsw-alias-label-primary);align-items:center;gap:8px;font-size:13px;display:flex}._v_wrq_providerBoolean input{width:16px;height:16px;accent-color:var(--dsw-alias-brand-primary);margin:0}._v_wrq_providerSecretInput{min-width:0;position:relative}._v_wrq_providerSecretInput>input{padding-right:40px}._v_wrq_providerSecretVisibility{appearance:none;border-radius:var(--dsw-radius-sm);width:28px;height:28px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:0;place-items:center;padding:0;display:grid;position:absolute;top:3px;right:3px}._v_wrq_providerSecretVisibility:hover:not(:disabled){color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}._v_wrq_providerSecretVisibility:focus-visible{box-shadow:0 0 0 2px var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline:none}._v_wrq_providerSecretVisibility:disabled{cursor:default;opacity:.35}._v_wrq_providerSecretVisibility svg{width:16px;height:16px}._v_wrq_memoryConfigFooter{justify-content:space-between;align-items:center;gap:10px;min-height:36px;display:flex}._v_wrq_memoryConfigFooter>div{align-items:center;gap:6px;display:flex}._v_wrq_providerServiceFooter{align-items:flex-end;min-height:0}._v_wrq_configFeedback{flex:1;min-width:0;font-size:12px;line-height:18px}._v_wrq_scopeChanging,._v_wrq_providerTarget{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;line-height:18px}._v_wrq_scopeChanging{border-radius:var(--dsw-radius-md);color:var(--dsw-alias-state-warn-label,var(--dsw-alias-label-secondary));background:var(--dsw-alias-state-warn-tertiary,var(--dsw-alias-bg-module-platform));padding:8px 12px}._v_wrq_providerLoadError{justify-content:space-between;align-items:center;gap:10px;font-size:12px;display:flex}._v_wrq_visuallyHidden{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}._v_wrq_location{align-items:baseline;gap:6px;min-width:0;display:flex}._v_wrq_locationRow{border-bottom:.5px solid var(--dsw-alias-border-l2);gap:10px;padding:14px 0}._v_wrq_rowActions{flex:none;align-items:center;gap:8px;display:flex}._v_wrq_packRow{flex-direction:column;gap:8px;min-width:0;padding-bottom:14px;display:flex}._v_wrq_packRow>._v_wrq_settingRow{border-bottom:0;padding-bottom:6px}._v_wrq_packRow:has(>._v_wrq_packFeedback:empty):not(:has(>._v_wrq_importBar))>._v_wrq_settingRow{padding-bottom:0}._v_wrq_rows>._v_wrq_packRow:not(:last-child){border-bottom:.5px solid var(--dsw-alias-border-l2)}._v_wrq_importBar{border-radius:var(--dsw-radius-md);background:var(--dsw-alias-bg-module-platform);grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:10px;min-width:0;padding:10px 12px;display:grid}._v_wrq_importBar>div{min-width:0;display:grid}._v_wrq_importBar strong{text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:500;line-height:20px;overflow:hidden}._v_wrq_importBar small{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}._v_wrq_packFeedback{gap:4px;display:grid}._v_wrq_packFeedback:empty{display:none}._v_wrq_packFeedback p{overflow-wrap:anywhere;margin:0;font-size:12px;line-height:18px}._v_wrq_error{color:var(--dsw-alias-state-error-primary)}._v_wrq_readOnlyNotice{color:var(--dsw-alias-label-tertiary);margin:0 0 -20px;font-size:12px;line-height:18px}._v_wrq_packSuccess{color:var(--dsw-alias-state-success-primary)}._v_wrq_syncRow{flex-direction:column;gap:8px;min-width:0;padding-bottom:14px;display:flex}._v_wrq_syncRow>._v_wrq_settingRow,._v_wrq_syncRow>._v_wrq_toggleRow{border-bottom:0;padding-bottom:6px}._v_wrq_rows>._v_wrq_syncRow:not(:last-child){border-bottom:.5px solid var(--dsw-alias-border-l2)}._v_wrq_syncState{flex-wrap:wrap;align-items:center;gap:4px 10px;min-width:0;display:flex}._v_wrq_syncState>span{color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere;font-size:12px;line-height:18px}._v_wrq_syncSuccess{color:var(--dsw-alias-state-success-primary)}._v_wrq_syncPanel{border:.5px solid var(--dsw-alias-settings-card-stroke);border-radius:var(--dsw-radius-xl);flex-direction:column;min-width:0;padding:2px 16px;display:flex}._v_wrq_syncPanel>._v_wrq_settingRow{padding:12px 0}._v_wrq_syncPanel>p{overflow-wrap:anywhere;margin:12px 0;font-size:12px;line-height:18px}._v_wrq_syncPanel>:last-child,._v_wrq_syncPanel>:last-child>._v_wrq_settingRow:last-child{border-bottom:0}._v_wrq_syncFeedbackLine{padding-top:2px;display:block}._v_wrq_syncWarning{border-radius:var(--dsw-radius-md);min-width:0;color:var(--dsw-alias-state-warn-label,var(--dsw-alias-label-secondary));background:var(--dsw-alias-state-warn-tertiary,var(--dsw-alias-bg-module-platform));flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px 12px;margin:10px 0 2px;padding:6px 6px 6px 12px;font-size:12px;line-height:18px;display:flex}._v_wrq_syncWarning>span{overflow-wrap:anywhere;min-width:0}._v_wrq_syncConnect{border-bottom:.5px solid var(--dsw-alias-border-l2);flex-direction:column;gap:4px;min-width:0;padding-bottom:14px;display:flex}._v_wrq_syncConnect>._v_wrq_settingRow{border-bottom:0;padding-bottom:4px}._v_wrq_syncRepositoryState{flex-direction:column;gap:2px;min-width:0;display:flex}._v_wrq_syncRepositoryName{min-width:0;color:var(--dsw-alias-label-secondary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._v_wrq_syncStateLine{flex-wrap:wrap;align-items:center;gap:4px 6px;min-width:0;display:inline-flex}._v_wrq_syncStateLine[data-tone=error]>span{color:var(--dsw-alias-state-error-primary)}._v_wrq_syncInlineAction{appearance:none;color:var(--dsw-alias-label-secondary);font:inherit;cursor:pointer;text-decoration:underline;text-decoration-color:var(--dsw-alias-border-l4);text-underline-offset:2px;background:0 0;border:0;padding:0;font-size:12px;line-height:18px}._v_wrq_syncInlineAction:hover:not(:disabled){color:var(--dsw-alias-label-primary);text-decoration-color:currentColor}._v_wrq_syncInlineAction:disabled{cursor:default;opacity:.5}._v_wrq_syncInlineAction:focus-visible{border-radius:var(--dsw-radius-xs);box-shadow:0 0 0 2px var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline:none}._v_wrq_syncFieldLabel{min-width:0;color:var(--dsw-alias-label-primary);justify-content:space-between;align-items:center;gap:8px;font-size:13px;font-weight:500;line-height:20px;display:flex}._v_wrq_syncFieldLabel>label{font:inherit}._v_wrq_fieldGrid>._v_wrq_syncFieldBox{flex-direction:column;gap:6px;min-width:0;display:flex}._v_wrq_fieldGrid label small{color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere;font-size:12px;font-weight:400;line-height:18px}._v_wrq_fieldGrid label small._v_wrq_error{color:var(--dsw-alias-state-error-primary)}._v_wrq_editor ._v_wrq_error,._v_wrq_editor ._v_wrq_syncSuccess{overflow-wrap:anywhere;margin:0;font-size:12px;line-height:18px}._v_wrq_syncAccount{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;min-width:0;display:flex}._v_wrq_syncAccount>span{color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;font-size:13px;line-height:20px}._v_wrq_syncDevice{gap:8px;min-width:0;display:grid}._v_wrq_syncCode{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;display:flex}._v_wrq_syncCode>code{border:.5px solid var(--dsw-alias-border-l4);border-radius:var(--dsw-radius-md);color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-1);font-family:var(--ds-font-family-code,ui-monospace, monospace);letter-spacing:.08em;user-select:all;padding:4px 12px;font-size:16px;font-weight:500;line-height:24px}._v_wrq_syncPicker{gap:8px;min-width:0;display:grid}._v_wrq_syncRepositoryList{border:.5px solid var(--dsw-alias-border-l3);border-radius:var(--dsw-radius-md);background:var(--dsw-alias-bg-layer-1);flex-direction:column;min-width:0;max-height:264px;margin:0;padding:0;list-style:none;display:flex;overflow:auto}._v_wrq_syncRepositoryList>li{border-bottom:.5px solid var(--dsw-alias-border-l2);min-width:0}._v_wrq_syncRepositoryList>li:last-child{border-bottom:0}._v_wrq_syncRepositoryList>li._v_wrq_editorNote{padding:10px 12px}._v_wrq_syncRepositoryOption{appearance:none;width:100%;min-width:0;color:var(--dsw-alias-label-primary);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;padding:8px 12px;font-size:13px;line-height:20px;display:flex}._v_wrq_syncRepositoryOption>span{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}._v_wrq_syncRepositoryOption:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}._v_wrq_syncRepositoryOption:disabled{cursor:default;opacity:.5}._v_wrq_syncRepositoryOption[aria-current=true]>span{font-weight:500}._v_wrq_syncRepositoryOption:focus-visible{box-shadow:inset 0 0 0 2px var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline:none}._v_wrq_syncAdvanced{flex-direction:column;gap:4px;min-width:0;padding-bottom:12px;display:flex}._v_wrq_syncDisclosure{appearance:none;width:100%;min-width:0;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:10px;padding:12px 0 8px;display:flex}._v_wrq_syncDisclosure>span{color:var(--dsw-alias-label-primary);flex:none;font-size:14px;line-height:22px}._v_wrq_syncDisclosure>small{min-width:0;color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:12px;line-height:18px;overflow:hidden}._v_wrq_syncDisclosure[aria-expanded=true] ._v_wrq_providerChevron{transform:rotate(180deg)}._v_wrq_syncDisclosure:focus-visible{border-radius:var(--dsw-radius-md);box-shadow:0 0 0 2px var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline:none}._v_wrq_editor>._v_wrq_inlineChoices{align-self:flex-start}._v_wrq_syncChoice{justify-items:start;gap:8px;min-width:0;display:grid}._v_wrq_syncChoice>._v_wrq_fieldGrid{width:100%}._v_wrq_syncDialogBody{gap:12px;min-width:0;display:grid}._v_wrq_syncDialogNote{color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere;margin:0;font-size:12px;line-height:18px}._v_wrq_syncDialogBody>._v_wrq_error,._v_wrq_syncDialogBody>._v_wrq_syncSuccess{overflow-wrap:anywhere;margin:0;font-size:12px;line-height:18px}._v_wrq_syncHistoryList{margin:0;padding:0;list-style:none;display:grid}._v_wrq_syncHistoryEntry{border-bottom:.5px solid var(--dsw-alias-border-l2);gap:2px;min-width:0;padding:10px 0;display:grid}._v_wrq_syncHistoryEntry:first-child{padding-top:0}._v_wrq_syncHistoryEntry:last-child{border-bottom:0}._v_wrq_syncHistoryHead{flex-wrap:wrap;align-items:center;gap:4px 8px;min-width:0;display:flex}._v_wrq_syncHistoryHead>strong{font-size:13px;font-weight:500;line-height:20px}._v_wrq_syncHistoryHead>span{min-width:0;color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;flex:1;font-size:12px;line-height:18px}._v_wrq_syncHistoryEntry>small{color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere;font-size:12px;line-height:18px}._v_wrq_syncHistoryEntry>._v_wrq_syncHistoryMessage{color:var(--dsw-alias-label-secondary)}._v_wrq_syncCompareList{border:.5px solid var(--dsw-alias-settings-card-stroke);border-radius:var(--dsw-radius-md);margin:0;padding:0;list-style:none;display:grid}._v_wrq_syncCompareList>li{border-bottom:.5px solid var(--dsw-alias-border-l2);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:4px 12px;min-width:0;padding:10px 12px;display:flex}._v_wrq_syncCompareList>li:last-child{border-bottom:0}._v_wrq_syncCompareList>li>span{font-size:13px;line-height:20px}._v_wrq_syncCompareList>li>small{color:var(--dsw-alias-label-tertiary);text-align:right;overflow-wrap:anywhere;font-size:12px;line-height:18px}._v_wrq_syncCompareList>li>small[data-differs]{color:var(--dsw-alias-label-primary)}._v_wrq_syncCompareNote{border-radius:var(--dsw-radius-md);background:var(--dsw-alias-bg-module-platform);gap:6px;min-width:0;padding:10px 12px;display:grid}._v_wrq_syncCompareNote>._v_wrq_rowActions{justify-content:flex-start;gap:4px}._v_wrq_syncConflictList{gap:6px;margin:0;padding:0;list-style:none;display:grid}._v_wrq_syncConflict{border-radius:var(--dsw-radius-sm);background:var(--dsw-alias-bg-layer-1);grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:8px;min-width:0;padding:8px 10px;display:grid}._v_wrq_syncConflict>span{overflow-wrap:anywhere;gap:2px;min-width:0;font-size:12px;line-height:18px;display:grid}._v_wrq_syncConflict>span>small{color:var(--dsw-alias-label-tertiary);font-size:11px;line-height:16px}._v_wrq_reviewList{gap:8px;display:grid}._v_wrq_reviewEntry{border-radius:var(--dsw-radius-md);background:var(--dsw-alias-bg-module-platform);flex-direction:column;gap:6px;min-width:0;padding:10px 12px;display:flex}._v_wrq_reviewEntry>header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;min-width:0;display:flex}._v_wrq_reviewEntry>small{color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere;font-size:12px;line-height:18px}._v_wrq_reviewEntry>p{overflow-wrap:anywhere;margin:0;font-size:13px;line-height:20px}._v_wrq_reviewTitle{align-items:center;gap:8px;min-width:0;display:flex}._v_wrq_reviewTitle strong{overflow-wrap:anywhere;font-size:13px;font-weight:500;line-height:20px}._v_wrq_reviewOperations{gap:4px;margin:0;padding-left:18px;display:grid}._v_wrq_reviewOperations li{overflow-wrap:anywhere;font-size:12px;line-height:18px}._v_wrq_reviewOperations small{color:var(--dsw-alias-label-tertiary);display:block}._v_wrq_reviewOpinions{gap:4px;display:grid}._v_wrq_reviewOpinions>strong{font-size:12px;font-weight:500;line-height:18px}._v_wrq_reviewOpinions>small{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}._v_wrq_reviewOpinions>div{overflow-wrap:anywhere;gap:6px;min-width:0;font-size:12px;line-height:18px;display:flex}._v_wrq_reviewOpinions>div strong{color:var(--dsw-alias-label-secondary);flex:none;font-weight:500}._v_wrq_reviewOpinionForm{align-items:center;gap:8px;min-width:0;display:flex}._v_wrq_reviewOpinionForm>input{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l4);border-radius:var(--dsw-radius-md);min-width:0;height:34px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-3);font:inherit;outline:none;flex:auto;padding:0 12px;font-size:13px;line-height:20px}._v_wrq_reviewOpinionForm>input:focus-visible{border-color:var(--dsw-alias-state-business-primary)}._v_wrq_reviewOpinionForm>input:disabled{cursor:default;opacity:.5}._v_wrq_reviewGuidance{gap:4px;display:grid}._v_wrq_reviewGuidance>label{color:var(--dsw-alias-label-secondary);font-size:12px;font-weight:500;line-height:18px}._v_wrq_reviewGuidance>input{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l4);border-radius:var(--dsw-radius-md);width:100%;height:34px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-3);font:inherit;outline:none;padding:0 12px;font-size:13px;line-height:20px}._v_wrq_reviewGuidance>input:focus-visible{border-color:var(--dsw-alias-state-business-primary)}._v_wrq_reviewGuidance>input:disabled{cursor:default;opacity:.5}._v_wrq_reviewGuidance>small{color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere;font-size:12px;line-height:18px}._v_wrq_reviewSelection{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px;min-width:0;display:flex}._v_wrq_reviewSelection>small,._v_wrq_reviewSelected{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}._v_wrq_reviewOperations>li{gap:2px;display:grid}._v_wrq_reviewOperations>li>label{cursor:pointer;align-items:flex-start;gap:6px;min-width:0;display:flex}._v_wrq_reviewOperations>li>label>input{flex:none;margin:3px 0 0}._v_wrq_reviewOperations>li>label>input:disabled{cursor:default;opacity:.5}._v_wrq_reviewOperations>li[data-applied=true]{opacity:.55}._v_wrq_selector:focus-visible{box-shadow:0 0 0 2px var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline:none}@media (width<=620px){._v_wrq_page{gap:28px}._v_wrq_rowActions{width:100%}._v_wrq_rowActions button{flex:1}._v_wrq_importBar{grid-template-columns:minmax(0,1fr) auto}._v_wrq_importBar>button:last-child{grid-column:1/-1}._v_wrq_reviewOpinionForm{flex-wrap:wrap}._v_wrq_reviewOpinionForm>input{flex:100%}._v_wrq_inlineChoices{width:100%}._v_wrq_inlineChoices label{flex:1}._v_wrq_inlineChoices span{justify-content:center;width:100%}._v_wrq_providerRowHeader{align-items:flex-start;gap:8px}._v_wrq_providerEnableControl{flex-wrap:wrap;justify-content:flex-end;gap:6px;max-width:132px}._v_wrq_providerState{text-overflow:ellipsis;max-width:120px;overflow:hidden}._v_wrq_memoryConfigFooter{flex-direction:column;align-items:stretch}._v_wrq_memoryConfigFooter>div:last-child{width:100%}._v_wrq_memoryConfigFooter button{flex:1}}@media (prefers-reduced-motion:reduce){._v_wrq_providerChevron,._v_wrq_advanced>summary>svg{transition:none}._v_wrq_miniSpinner{animation:none}}";
|
|
677
682
|
const tagId$13 = "dsh-mnemon/src/client/MnemonSettingsCard.module.css";
|
|
678
683
|
if (typeof document !== "undefined") {
|
|
679
684
|
let tag = document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$13) + "]");
|
|
@@ -704,7 +709,6 @@ window.__ModuleLoader__.load({
|
|
|
704
709
|
"boardOthersToggle": "_v_wrq_boardOthersToggle",
|
|
705
710
|
"boardProblem": "_v_wrq_boardProblem",
|
|
706
711
|
"boardRow": "_v_wrq_boardRow",
|
|
707
|
-
"boardRowCopy": "_v_wrq_boardRowCopy",
|
|
708
712
|
"boardRowLine": "_v_wrq_boardRowLine",
|
|
709
713
|
"boardSearch": "_v_wrq_boardSearch",
|
|
710
714
|
"boardSection": "_v_wrq_boardSection",
|
|
@@ -732,6 +736,11 @@ window.__ModuleLoader__.load({
|
|
|
732
736
|
"editorHeading": "_v_wrq_editorHeading",
|
|
733
737
|
"editorNote": "_v_wrq_editorNote",
|
|
734
738
|
"effectiveRoute": "_v_wrq_effectiveRoute",
|
|
739
|
+
"embeddingFillOutcome": "_v_wrq_embeddingFillOutcome",
|
|
740
|
+
"embeddingSpaceCount": "_v_wrq_embeddingSpaceCount",
|
|
741
|
+
"embeddingSpaceName": "_v_wrq_embeddingSpaceName",
|
|
742
|
+
"embeddingSpaceState": "_v_wrq_embeddingSpaceState",
|
|
743
|
+
"embeddingSpaces": "_v_wrq_embeddingSpaces",
|
|
735
744
|
"embeddingTest": "_v_wrq_embeddingTest",
|
|
736
745
|
"error": "_v_wrq_error",
|
|
737
746
|
"fieldGrid": "_v_wrq_fieldGrid",
|
|
@@ -801,6 +810,7 @@ window.__ModuleLoader__.load({
|
|
|
801
810
|
"reviewSelected": "_v_wrq_reviewSelected",
|
|
802
811
|
"reviewSelection": "_v_wrq_reviewSelection",
|
|
803
812
|
"reviewTitle": "_v_wrq_reviewTitle",
|
|
813
|
+
"routeValue": "_v_wrq_routeValue",
|
|
804
814
|
"rowActions": "_v_wrq_rowActions",
|
|
805
815
|
"rowDetail": "_v_wrq_rowDetail",
|
|
806
816
|
"rowNote": "_v_wrq_rowNote",
|
|
@@ -1925,6 +1935,7 @@ window.__ModuleLoader__.load({
|
|
|
1925
1935
|
"receipt.failed": "失败",
|
|
1926
1936
|
"receipt.view": "在记忆空间中查看",
|
|
1927
1937
|
"receipt.viewRuntime": "在运行时记忆中查看",
|
|
1938
|
+
"receipt.unembedded": "未生成向量:嵌入没有成功,这条记忆暂时不参与语义匹配。嵌入服务可用后,可在 Mnemon Native 嵌入设置的「测试状态」中补齐。",
|
|
1928
1939
|
"taskAgent.ready": "任务 Agent 就绪",
|
|
1929
1940
|
"taskAgent.unavailable": "任务 Agent 不可用",
|
|
1930
1941
|
"saveAction.button": "存入记忆",
|
|
@@ -1990,12 +2001,12 @@ window.__ModuleLoader__.load({
|
|
|
1990
2001
|
"status.title": "系统状态",
|
|
1991
2002
|
"status.description": "dsh-mnemon、记忆 Provider 与各层存储的运行状态。",
|
|
1992
2003
|
"status.nominal": "系统正常",
|
|
1993
|
-
"status.reviewFailed": "
|
|
2004
|
+
"status.reviewFailed": "空闲审查失败",
|
|
1994
2005
|
"status.reviewFailedDetail": "本轮记忆检查未完成,不会自动重放。后续审查受冷却时间和会话次数限制。",
|
|
1995
2006
|
"status.reviewPartial": "已有写入提交;请按下列回执核对,未回滚。",
|
|
1996
|
-
"status.reviewTeamPaused": "Agent Teams
|
|
2007
|
+
"status.reviewTeamPaused": "Agent Teams 工具在役时按兼容设置暂停空闲审查。如需继续审查,可在“插件 → 可组合记忆”页面的空闲审查中选择“受限任务 Agent 审查”。召回与主动写入设置不变。",
|
|
1997
2008
|
"status.reviewRun": "审查运行:{id}",
|
|
1998
|
-
"status.reviewContextWindow": "请切换为有界检查点(spawn
|
|
2009
|
+
"status.reviewContextWindow": "请切换为有界检查点(spawn),或选择上下文窗口足以覆盖父会话的任务 Agent 模型。",
|
|
1999
2010
|
"config.reviewTitle": "空闲审查",
|
|
2000
2011
|
"config.reviewDescription": "对话空闲时整理记忆;关闭不影响召回与写入",
|
|
2001
2012
|
"config.reviewEnabled": "启用空闲审查",
|
|
@@ -2004,16 +2015,16 @@ window.__ModuleLoader__.load({
|
|
|
2004
2015
|
"config.reviewLimits": "审查参数",
|
|
2005
2016
|
"config.reviewProvider": "审查方式",
|
|
2006
2017
|
"config.reviewSpawn": "有界检查点(spawn)",
|
|
2007
|
-
"config.reviewSpawnHint": "
|
|
2018
|
+
"config.reviewSpawnHint": "任务 Agent 只读取有界的检查点",
|
|
2008
2019
|
"config.reviewFork": "完整父上下文(fork)",
|
|
2009
|
-
"config.reviewForkHint": "
|
|
2020
|
+
"config.reviewForkHint": "任务 Agent 带着完整的父上下文",
|
|
2010
2021
|
"config.reviewFallback": "fork 不可用时(仅启动前)",
|
|
2011
2022
|
"config.reviewSkip": "跳过本次审查",
|
|
2012
2023
|
"config.reviewAgentTeams": "Agent Teams 兼容模式",
|
|
2013
|
-
"config.reviewTeamPause": "
|
|
2024
|
+
"config.reviewTeamPause": "暂停审查",
|
|
2014
2025
|
"config.reviewTeamPauseHint": "Agent Teams 运行时跳过审查",
|
|
2015
|
-
"config.reviewTeamScoped": "
|
|
2016
|
-
"config.reviewTeamScopedHint": "
|
|
2026
|
+
"config.reviewTeamScoped": "受限任务 Agent 审查",
|
|
2027
|
+
"config.reviewTeamScopedHint": "由受限的任务 Agent 审查,不用 Teams 工具",
|
|
2017
2028
|
"config.review.minIntervalMs": "最小审查间隔(秒)",
|
|
2018
2029
|
"config.review.maxPerSession": "每会话最多尝试次数",
|
|
2019
2030
|
"config.review.maxContextChars": "spawn 检查点字符预算",
|
|
@@ -2318,11 +2329,6 @@ window.__ModuleLoader__.load({
|
|
|
2318
2329
|
"feedback.optionsSaved": "已更新“{component}”的选项",
|
|
2319
2330
|
"feedback.externalOptions": "“{component}”的选项已更改",
|
|
2320
2331
|
"feedback.externalSeveral": "{count} 个组件已变化",
|
|
2321
|
-
"feedback.pendingMain": "正在切换到“{strategy}”…",
|
|
2322
|
-
"feedback.pendingOn": "正在开启“{component}”…",
|
|
2323
|
-
"feedback.pendingOff": "正在关闭“{component}”…",
|
|
2324
|
-
"feedback.pendingOptions": "正在应用“{component}”的选项…",
|
|
2325
|
-
"feedback.pendingSeveral": "正在应用修改…",
|
|
2326
2332
|
"feedback.undo": "撤销",
|
|
2327
2333
|
"feedback.undone": "已撤销,恢复为之前的设置",
|
|
2328
2334
|
"feedback.show": "查看",
|
|
@@ -2365,7 +2371,7 @@ window.__ModuleLoader__.load({
|
|
|
2365
2371
|
"config.embeddingModelInvalid": "嵌入模型必须包含 1–200 个字符,且不能包含控制字符。",
|
|
2366
2372
|
"config.embeddingSecurity": "Mnemon 会把记忆与查询正文发送到该 Endpoint;API Key 与其他设置一样保存在 DSH 设置文件中。远程 HTTP 会明文传输,请仅使用受信任的本地地址,或为远程服务配置 HTTPS。",
|
|
2367
2373
|
"config.embeddingTest": "测试状态",
|
|
2368
|
-
"config.embeddingNotTested": "
|
|
2374
|
+
"config.embeddingNotTested": "尚未检查嵌入服务的连接与各 Mnemon Native 空间的覆盖率。",
|
|
2369
2375
|
"config.embeddingTesting": "正在通过 Mnemon 检查嵌入服务与覆盖率…",
|
|
2370
2376
|
"config.embeddingSaveBeforeTest": "请先保存嵌入配置,再测试实际运行值。",
|
|
2371
2377
|
"config.embeddingTestUnavailable": "当前 DSH Host 不提供嵌入状态检查。",
|
|
@@ -2375,6 +2381,22 @@ window.__ModuleLoader__.load({
|
|
|
2375
2381
|
"config.embeddingStatusUnavailable": "嵌入服务不可达 · {model} · 已嵌入 {embedded}/{total}({coverage})",
|
|
2376
2382
|
"config.embeddingStatusUnavailableWithProtocol": "嵌入服务不可达 · {model} · 协议 {protocol} · 已嵌入 {embedded}/{total}({coverage})",
|
|
2377
2383
|
"config.embeddingStatusFailed": "嵌入状态检查失败:{error}",
|
|
2384
|
+
"config.embeddingSpaces": "各 Mnemon Native 空间",
|
|
2385
|
+
"config.embeddingSpaceCounts": "已嵌入 {embedded}/{total}({coverage})",
|
|
2386
|
+
"config.embeddingSpaceFailed": "无法读取:{error}",
|
|
2387
|
+
"config.embeddingMissing": "没有向量的记忆不参与语义匹配。",
|
|
2388
|
+
"config.embeddingMissingFill": "没有向量的记忆不参与语义匹配;点空间旁的「补齐」即可生成缺少的向量。",
|
|
2389
|
+
"config.embeddingMissingOffline": "没有向量的记忆不参与语义匹配;嵌入服务可用后,可以在这里补齐。",
|
|
2390
|
+
"config.embeddingSpacesUnread": "无法读取的空间没有计入合计。",
|
|
2391
|
+
"config.embeddingFill": "补齐",
|
|
2392
|
+
"config.embeddingFilling": "补齐中…",
|
|
2393
|
+
"config.embeddingFillLabel": "补齐「{name}」的向量",
|
|
2394
|
+
"config.embeddingFillingLabel": "正在补齐「{name}」的向量",
|
|
2395
|
+
"config.embeddingFillDone": "已为「{name}」补齐 {filled} 条向量。",
|
|
2396
|
+
"config.embeddingFillMore": "已为「{name}」补齐 {filled} 条向量,还缺 {remaining} 条,再点「补齐」继续。",
|
|
2397
|
+
"config.embeddingFillPartly": "已为「{name}」补齐 {filled} 条向量;其余 {remaining} 条嵌入服务没有返回向量,可以稍后再点「补齐」。",
|
|
2398
|
+
"config.embeddingFillRefused": "嵌入服务没有为「{name}」返回向量,请确认它在运行并提供模型 {model}。",
|
|
2399
|
+
"config.embeddingFillFailed": "「{name}」的向量没有补齐:{error}",
|
|
2378
2400
|
"config.providerGlobalLocation": "全局数据位置",
|
|
2379
2401
|
"config.providerGlobalLocationHint": "{provider} 默认使用全局范围目录,也可以指定一个自定义位置。",
|
|
2380
2402
|
"config.providerGlobalLocationWorkspaceHint": "当前使用工作区默认位置;切换到全局范围后可指定自定义位置。",
|
|
@@ -2401,18 +2423,25 @@ window.__ModuleLoader__.load({
|
|
|
2401
2423
|
"config.providerLoadFailed": "读取 Provider 配置失败:{error}",
|
|
2402
2424
|
"config.retryProviders": "重试",
|
|
2403
2425
|
"config.taskAgentTitle": "任务 Agent 模型",
|
|
2404
|
-
"config.taskAgentInherit": "
|
|
2405
|
-
"config.taskAgentInheritHint": "
|
|
2406
|
-
"config.
|
|
2407
|
-
"config.
|
|
2426
|
+
"config.taskAgentInherit": "跟随全局",
|
|
2427
|
+
"config.taskAgentInheritHint": "跟随新会话的模型",
|
|
2428
|
+
"config.taskAgentConversation": "跟随会话",
|
|
2429
|
+
"config.taskAgentConversationHint": "跟随当前会话使用的模型",
|
|
2430
|
+
"config.taskAgentFixed": "自定义",
|
|
2431
|
+
"config.taskAgentFixedHint": "指定模型",
|
|
2408
2432
|
"config.taskAgentProvider": "模型 Provider",
|
|
2409
2433
|
"config.taskAgentModel": "模型",
|
|
2410
2434
|
"config.taskAgentImageInput": "图片输入",
|
|
2411
2435
|
"config.taskAgentEffective": "当前将使用",
|
|
2436
|
+
"config.taskAgentSource.fixed": "自定义",
|
|
2437
|
+
"config.taskAgentSource.session": "当前会话",
|
|
2438
|
+
"config.taskAgentSource.dsh-default": "新会话模型",
|
|
2439
|
+
"config.taskAgentSource.active-agent": "已打开的会话",
|
|
2412
2440
|
"config.taskAgentLoading": "正在读取模型目录",
|
|
2413
2441
|
"config.taskAgentUnavailable": "尚无可用的 Provider / Model 路由",
|
|
2414
2442
|
"config.taskAgentLoadFailed": "模型目录读取失败:{error}",
|
|
2415
2443
|
"config.taskAgentPartial": "有 {count} 个 Provider 暂时无法读取,其他选项仍可使用。",
|
|
2444
|
+
"config.taskAgentRetry": "重新读取",
|
|
2416
2445
|
"config.customAbsolute": "需要绝对路径,或以 ~/ 开头",
|
|
2417
2446
|
"config.saveFailed": "保存失败:{error}",
|
|
2418
2447
|
"config.readOnly": "当前部署的插件设置为只读。",
|
|
@@ -2780,6 +2809,7 @@ window.__ModuleLoader__.load({
|
|
|
2780
2809
|
"receipt.failed": "Failed",
|
|
2781
2810
|
"receipt.view": "View in Memory Spaces",
|
|
2782
2811
|
"receipt.viewRuntime": "View in Runtime Memory",
|
|
2812
|
+
"receipt.unembedded": "Saved without a vector: embedding did not succeed, so this memory is left out of semantic matching for now. Once the embedding service answers, fill it in from Test status in the Mnemon Native embedding settings.",
|
|
2783
2813
|
"taskAgent.ready": "Task Agent ready",
|
|
2784
2814
|
"taskAgent.unavailable": "Task Agent unavailable",
|
|
2785
2815
|
"saveAction.button": "Save to memory",
|
|
@@ -2845,12 +2875,12 @@ window.__ModuleLoader__.load({
|
|
|
2845
2875
|
"status.title": "System Status",
|
|
2846
2876
|
"status.description": "How dsh-mnemon, memory Providers and each storage layer are running.",
|
|
2847
2877
|
"status.nominal": "System nominal",
|
|
2848
|
-
"status.reviewFailed": "
|
|
2878
|
+
"status.reviewFailed": "Idle review failed",
|
|
2849
2879
|
"status.reviewFailedDetail": "This checkpoint did not complete and will not be replayed automatically. Later reviews respect the cooldown and session limit.",
|
|
2850
2880
|
"status.reviewPartial": "Some writes committed. Reconcile the receipts below; they were not rolled back.",
|
|
2851
|
-
"status.reviewTeamPaused": "Idle review is paused by the Agent Teams compatibility setting.
|
|
2881
|
+
"status.reviewTeamPaused": "Idle review is paused by the Agent Teams compatibility setting. To keep reviewing, select “Scoped task Agent review” under Idle review on the dsh-mnemon page under Plugins. Recall and writeback settings are unchanged.",
|
|
2852
2882
|
"status.reviewRun": "Review run: {id}",
|
|
2853
|
-
"status.reviewContextWindow": "Choose bounded checkpoint review (spawn), or a task model
|
|
2883
|
+
"status.reviewContextWindow": "Choose bounded checkpoint review (spawn), or a task Agent model whose context window covers the parent conversation.",
|
|
2854
2884
|
"config.reviewTitle": "Idle review",
|
|
2855
2885
|
"config.reviewDescription": "Tidies memory while the conversation is idle; recall and writes work either way",
|
|
2856
2886
|
"config.reviewEnabled": "Enable idle review",
|
|
@@ -2859,16 +2889,16 @@ window.__ModuleLoader__.load({
|
|
|
2859
2889
|
"config.reviewLimits": "Review limits",
|
|
2860
2890
|
"config.reviewProvider": "Review method",
|
|
2861
2891
|
"config.reviewSpawn": "Bounded checkpoint (spawn)",
|
|
2862
|
-
"config.reviewSpawnHint": "
|
|
2892
|
+
"config.reviewSpawnHint": "The task Agent reads a bounded checkpoint",
|
|
2863
2893
|
"config.reviewFork": "Full parent context (fork)",
|
|
2864
|
-
"config.reviewForkHint": "
|
|
2894
|
+
"config.reviewForkHint": "The task Agent has the full parent context",
|
|
2865
2895
|
"config.reviewFallback": "When fork is unavailable (before startup only)",
|
|
2866
2896
|
"config.reviewSkip": "Skip this review",
|
|
2867
2897
|
"config.reviewAgentTeams": "Agent Teams compatibility",
|
|
2868
|
-
"config.reviewTeamPause": "Pause review
|
|
2898
|
+
"config.reviewTeamPause": "Pause review",
|
|
2869
2899
|
"config.reviewTeamPauseHint": "Skips review while Agent Teams runs",
|
|
2870
|
-
"config.reviewTeamScoped": "Scoped
|
|
2871
|
-
"config.reviewTeamScopedHint": "
|
|
2900
|
+
"config.reviewTeamScoped": "Scoped task Agent review",
|
|
2901
|
+
"config.reviewTeamScopedHint": "A scoped task Agent reviews, without Teams tools",
|
|
2872
2902
|
"config.review.minIntervalMs": "Minimum review interval (seconds)",
|
|
2873
2903
|
"config.review.maxPerSession": "Maximum attempts per session",
|
|
2874
2904
|
"config.review.maxContextChars": "Spawn checkpoint character budget",
|
|
@@ -3173,11 +3203,6 @@ window.__ModuleLoader__.load({
|
|
|
3173
3203
|
"feedback.optionsSaved": "Updated the options of “{component}”",
|
|
3174
3204
|
"feedback.externalOptions": "The options of “{component}” changed",
|
|
3175
3205
|
"feedback.externalSeveral": "{count} components changed",
|
|
3176
|
-
"feedback.pendingMain": "Switching to “{strategy}”…",
|
|
3177
|
-
"feedback.pendingOn": "Turning on “{component}”…",
|
|
3178
|
-
"feedback.pendingOff": "Turning off “{component}”…",
|
|
3179
|
-
"feedback.pendingOptions": "Applying the options of “{component}”…",
|
|
3180
|
-
"feedback.pendingSeveral": "Applying changes…",
|
|
3181
3206
|
"feedback.undo": "Undo",
|
|
3182
3207
|
"feedback.undone": "Undone; the previous settings are back",
|
|
3183
3208
|
"feedback.show": "Show",
|
|
@@ -3220,7 +3245,7 @@ window.__ModuleLoader__.load({
|
|
|
3220
3245
|
"config.embeddingModelInvalid": "The embedding model must contain 1–200 characters and no control characters.",
|
|
3221
3246
|
"config.embeddingSecurity": "Mnemon sends memory and query text to this endpoint; the API key is stored in the DSH settings file like other settings. Remote HTTP is unencrypted; use a trusted local address or HTTPS for a remote service.",
|
|
3222
3247
|
"config.embeddingTest": "Test status",
|
|
3223
|
-
"config.embeddingNotTested": "The
|
|
3248
|
+
"config.embeddingNotTested": "The embedding connection and the coverage of each Mnemon Native space have not been checked.",
|
|
3224
3249
|
"config.embeddingTesting": "Checking the embedding server and coverage through Mnemon…",
|
|
3225
3250
|
"config.embeddingSaveBeforeTest": "Save the embedding settings before testing their effective runtime values.",
|
|
3226
3251
|
"config.embeddingTestUnavailable": "This DSH Host does not provide embedding status checks.",
|
|
@@ -3230,6 +3255,22 @@ window.__ModuleLoader__.load({
|
|
|
3230
3255
|
"config.embeddingStatusUnavailable": "Embedding server unreachable · {model} · {embedded}/{total} embedded ({coverage})",
|
|
3231
3256
|
"config.embeddingStatusUnavailableWithProtocol": "Embedding server unreachable · {model} · protocol {protocol} · {embedded}/{total} embedded ({coverage})",
|
|
3232
3257
|
"config.embeddingStatusFailed": "Embedding status check failed: {error}",
|
|
3258
|
+
"config.embeddingSpaces": "Each Mnemon Native space",
|
|
3259
|
+
"config.embeddingSpaceCounts": "{embedded}/{total} embedded ({coverage})",
|
|
3260
|
+
"config.embeddingSpaceFailed": "Could not read: {error}",
|
|
3261
|
+
"config.embeddingMissing": "Memories without a vector are left out of semantic matching.",
|
|
3262
|
+
"config.embeddingMissingFill": "Memories without a vector are left out of semantic matching; Fill in beside a space creates its missing vectors.",
|
|
3263
|
+
"config.embeddingMissingOffline": "Memories without a vector are left out of semantic matching; once the embedding service answers, their vectors can be filled in here.",
|
|
3264
|
+
"config.embeddingSpacesUnread": "Spaces that could not be read are left out of the total.",
|
|
3265
|
+
"config.embeddingFill": "Fill in",
|
|
3266
|
+
"config.embeddingFilling": "Filling in…",
|
|
3267
|
+
"config.embeddingFillLabel": "Fill in the vectors of {name}",
|
|
3268
|
+
"config.embeddingFillingLabel": "Filling in the vectors of {name}",
|
|
3269
|
+
"config.embeddingFillDone": "Filled in {filled} vectors for {name}.",
|
|
3270
|
+
"config.embeddingFillMore": "Filled in {filled} vectors for {name}; {remaining} are still missing. Press Fill in to go on.",
|
|
3271
|
+
"config.embeddingFillPartly": "Filled in {filled} vectors for {name}; the embedding service returned none for the other {remaining}. Press Fill in later to try again.",
|
|
3272
|
+
"config.embeddingFillRefused": "The embedding service returned no vectors for {name}. Check that it is running and serves the model {model}.",
|
|
3273
|
+
"config.embeddingFillFailed": "The vectors of {name} were not filled in: {error}",
|
|
3233
3274
|
"config.providerGlobalLocation": "Global data location",
|
|
3234
3275
|
"config.providerGlobalLocationHint": "{provider} uses the global scope directory by default, or you can choose a custom location.",
|
|
3235
3276
|
"config.providerGlobalLocationWorkspaceHint": "The workspace default is active. Switch to Global to choose a custom location.",
|
|
@@ -3256,18 +3297,25 @@ window.__ModuleLoader__.load({
|
|
|
3256
3297
|
"config.providerLoadFailed": "Could not load provider configurations: {error}",
|
|
3257
3298
|
"config.retryProviders": "Retry",
|
|
3258
3299
|
"config.taskAgentTitle": "Task Agent model",
|
|
3259
|
-
"config.taskAgentInherit": "Follow
|
|
3260
|
-
"config.taskAgentInheritHint": "
|
|
3261
|
-
"config.
|
|
3262
|
-
"config.
|
|
3300
|
+
"config.taskAgentInherit": "Follow global",
|
|
3301
|
+
"config.taskAgentInheritHint": "Follow the new-session model",
|
|
3302
|
+
"config.taskAgentConversation": "Follow the conversation",
|
|
3303
|
+
"config.taskAgentConversationHint": "Follow the model the current conversation uses",
|
|
3304
|
+
"config.taskAgentFixed": "Custom",
|
|
3305
|
+
"config.taskAgentFixedHint": "Choose a model",
|
|
3263
3306
|
"config.taskAgentProvider": "Model provider",
|
|
3264
3307
|
"config.taskAgentModel": "Model",
|
|
3265
3308
|
"config.taskAgentImageInput": "Image input",
|
|
3266
3309
|
"config.taskAgentEffective": "Will currently use",
|
|
3310
|
+
"config.taskAgentSource.fixed": "Custom",
|
|
3311
|
+
"config.taskAgentSource.session": "Current conversation",
|
|
3312
|
+
"config.taskAgentSource.dsh-default": "New-session model",
|
|
3313
|
+
"config.taskAgentSource.active-agent": "An open conversation",
|
|
3267
3314
|
"config.taskAgentLoading": "Loading model directory",
|
|
3268
3315
|
"config.taskAgentUnavailable": "No Provider / Model route is currently available",
|
|
3269
3316
|
"config.taskAgentLoadFailed": "Could not load the model directory: {error}",
|
|
3270
3317
|
"config.taskAgentPartial": "{count} providers could not be read; the remaining options are still available.",
|
|
3318
|
+
"config.taskAgentRetry": "Read again",
|
|
3271
3319
|
"config.customAbsolute": "Use an absolute path or one that starts with ~/",
|
|
3272
3320
|
"config.saveFailed": "Save failed: {error}",
|
|
3273
3321
|
"config.readOnly": "Plugin settings are read-only in this deployment.",
|
|
@@ -3937,11 +3985,13 @@ window.__ModuleLoader__.load({
|
|
|
3937
3985
|
(0, react.useEffect)(() => {
|
|
3938
3986
|
const onKey = (event) => {
|
|
3939
3987
|
if (event.key === "Escape") {
|
|
3988
|
+
if (event.defaultPrevented) return;
|
|
3940
3989
|
event.preventDefault();
|
|
3941
3990
|
requestClose();
|
|
3942
3991
|
return;
|
|
3943
3992
|
}
|
|
3944
3993
|
if (event.key !== "Tab" || closingRef.current) return;
|
|
3994
|
+
if (document.activeElement?.closest("[role=\"menu\"]") !== null) return;
|
|
3945
3995
|
const controls = Array.from(dialogRef.current?.querySelectorAll("button:not(:disabled), input:not(:disabled), textarea:not(:disabled), select:not(:disabled), a[href], [tabindex]:not([tabindex=\"-1\"])") ?? []).filter((control) => control.getAttribute("aria-hidden") !== "true");
|
|
3946
3996
|
const first = controls[0];
|
|
3947
3997
|
const last = controls.at(-1);
|
|
@@ -9617,7 +9667,7 @@ window.__ModuleLoader__.load({
|
|
|
9617
9667
|
}
|
|
9618
9668
|
//#endregion
|
|
9619
9669
|
//#region \0dsh-mnemon-css:/home/runner/work/dsh-mnemon/dsh-mnemon/src/client/PageControls.module.css.mjs
|
|
9620
|
-
const css$3 = ".Zl-6yW_search{min-width:0}.Zl-6yW_field{gap:6px;min-width:0;display:inline-grid}.Zl-6yW_fieldLabel{color:var(--dsw-alias-label-secondary);font-size:12px;font-weight:500;line-height:18px}.Zl-6yW_hiddenLabel{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.Zl-6yW_selector{appearance:none;border-radius:var(--dsw-radius-md);min-width:0;max-width:100%;height:36px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-module-platform);font:inherit;white-space:nowrap;cursor:pointer;border:0;justify-content:space-between;align-items:center;gap:12px;padding:0 14px;font-size:14px;line-height:22px;display:inline-flex}.Zl-6yW_selector>span{text-overflow:ellipsis;min-width:0;overflow:hidden}.Zl-6yW_selector>svg{color:var(--dsw-alias-label-tertiary);flex:none}.Zl-6yW_selector:hover:not(:disabled),.Zl-6yW_selector[aria-expanded=true]{background:var(--dsw-alias-interactive-bg-hover)}.Zl-6yW_selector:focus-visible{outline:var(--dsw-focus-ring-width,2px) solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:2px}.Zl-6yW_selector:disabled{cursor:default;opacity:.4}.Zl-6yW_menuRoot{min-width:0;display:block}.Zl-6yW_field:not([data-inline]) .Zl-6yW_selector{width:100%}.Zl-6yW_field[data-inline]{align-items:center;gap:8px;display:inline-flex}.Zl-6yW_field[data-inline] .Zl-6yW_menuRoot{display:inline-block}.Zl-6yW_field[data-inline]>.Zl-6yW_fieldLabel{color:var(--dsw-alias-label-tertiary);white-space:nowrap;font-weight:400}.Zl-6yW_field[data-size=sm] .Zl-6yW_selector{border-radius:var(--dsw-radius-sm);gap:8px;height:28px;padding:0 10px;font-size:12px;line-height:18px}.Zl-6yW_menu{min-width:200px}.Zl-6yW_option{white-space:normal;gap:1px;min-width:0;display:grid}.Zl-6yW_option>small{color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere;font-size:12px;line-height:18px}.Zl-6yW_receipt{border-radius:var(--dsw-radius-md);background:var(--dsw-alias-bg-module-platform);flex-wrap:wrap;align-items:flex-start;gap:8px 10px;min-width:0;margin-top:12px;padding:10px 12px;display:flex}.Zl-6yW_receipt>p{min-width:0;color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;flex:240px;margin:0;font-size:13px;line-height:20px}.Zl-6yW_receipt>:first-child{flex:none;margin-top:1px}.Zl-6yW_receiptAction{flex:none;margin-left:auto}";
|
|
9670
|
+
const css$3 = ".Zl-6yW_search{min-width:0}.Zl-6yW_field{gap:6px;min-width:0;display:inline-grid}.Zl-6yW_fieldLabel{color:var(--dsw-alias-label-secondary);font-size:12px;font-weight:500;line-height:18px}.Zl-6yW_hiddenLabel{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.Zl-6yW_selector{appearance:none;border-radius:var(--dsw-radius-md);min-width:0;max-width:100%;height:36px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-module-platform);font:inherit;white-space:nowrap;cursor:pointer;border:0;justify-content:space-between;align-items:center;gap:12px;padding:0 14px;font-size:14px;line-height:22px;display:inline-flex}.Zl-6yW_selector>span{text-overflow:ellipsis;min-width:0;overflow:hidden}.Zl-6yW_selector>svg{color:var(--dsw-alias-label-tertiary);flex:none}.Zl-6yW_selector:hover:not(:disabled),.Zl-6yW_selector[aria-expanded=true]{background:var(--dsw-alias-interactive-bg-hover)}.Zl-6yW_selector:focus-visible{outline:var(--dsw-focus-ring-width,2px) solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:2px}.Zl-6yW_selector:disabled{cursor:default;opacity:.4}.Zl-6yW_menuRoot{min-width:0;display:block}.Zl-6yW_field:not([data-inline]) .Zl-6yW_selector{width:100%}.Zl-6yW_field[data-inline]{align-items:center;gap:8px;display:inline-flex}.Zl-6yW_field[data-inline] .Zl-6yW_menuRoot{display:inline-block}.Zl-6yW_field[data-inline]>.Zl-6yW_fieldLabel{color:var(--dsw-alias-label-tertiary);white-space:nowrap;font-weight:400}.Zl-6yW_field[data-size=sm] .Zl-6yW_selector{border-radius:var(--dsw-radius-sm);gap:8px;height:28px;padding:0 10px;font-size:12px;line-height:18px}.Zl-6yW_menu{min-width:200px}.Zl-6yW_option{white-space:normal;gap:1px;min-width:0;display:grid}.Zl-6yW_option>small{color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere;font-size:12px;line-height:18px}.Zl-6yW_receipt{border-radius:var(--dsw-radius-md);background:var(--dsw-alias-bg-module-platform);flex-wrap:wrap;align-items:flex-start;gap:8px 10px;min-width:0;margin-top:12px;padding:10px 12px;display:flex}.Zl-6yW_receipt>p{min-width:0;color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;flex:240px;margin:0;font-size:13px;line-height:20px}.Zl-6yW_receipt>:first-child{flex:none;margin-top:1px}.Zl-6yW_receiptAction{flex:none;margin-left:auto}.Zl-6yW_receipt>.Zl-6yW_receiptNote{color:var(--dsw-alias-state-warn-label,var(--dsw-alias-label-secondary));flex-basis:100%;font-size:12px;line-height:18px}";
|
|
9621
9671
|
const tagId$3 = "dsh-mnemon/src/client/PageControls.module.css";
|
|
9622
9672
|
if (typeof document !== "undefined") {
|
|
9623
9673
|
let tag = document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$3) + "]");
|
|
@@ -9637,6 +9687,7 @@ window.__ModuleLoader__.load({
|
|
|
9637
9687
|
"option": "Zl-6yW_option",
|
|
9638
9688
|
"receipt": "Zl-6yW_receipt",
|
|
9639
9689
|
"receiptAction": "Zl-6yW_receiptAction",
|
|
9690
|
+
"receiptNote": "Zl-6yW_receiptNote",
|
|
9640
9691
|
"search": "Zl-6yW_search",
|
|
9641
9692
|
"selector": "Zl-6yW_selector"
|
|
9642
9693
|
};
|
|
@@ -9752,7 +9803,8 @@ window.__ModuleLoader__.load({
|
|
|
9752
9803
|
};
|
|
9753
9804
|
/**
|
|
9754
9805
|
* What a task Agent did with a candidate: the outcome, the Agent's own
|
|
9755
|
-
* summary, and, when something was written, a way to see it.
|
|
9806
|
+
* summary, and, when something was written, a way to see it. A memory saved
|
|
9807
|
+
* without a vector says so on a line of its own (#388).
|
|
9756
9808
|
*/
|
|
9757
9809
|
function WriteReceipt(props) {
|
|
9758
9810
|
const shared = useT();
|
|
@@ -9784,6 +9836,10 @@ window.__ModuleLoader__.load({
|
|
|
9784
9836
|
className: PageControls_module_css_default.receiptAction,
|
|
9785
9837
|
onClick: props.onView,
|
|
9786
9838
|
children: props.viewLabel ?? t("receipt.view")
|
|
9839
|
+
}),
|
|
9840
|
+
props.unembedded === true && (outcome === "written" || outcome === "updated" || outcome === "partial") && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
9841
|
+
className: PageControls_module_css_default.receiptNote,
|
|
9842
|
+
children: t("receipt.unembedded")
|
|
9787
9843
|
})
|
|
9788
9844
|
]
|
|
9789
9845
|
});
|
|
@@ -10381,6 +10437,321 @@ window.__ModuleLoader__.load({
|
|
|
10381
10437
|
] });
|
|
10382
10438
|
}
|
|
10383
10439
|
//#endregion
|
|
10440
|
+
//#region src/client/task-agent-model.tsx
|
|
10441
|
+
function routeOf(value) {
|
|
10442
|
+
const configured = value?.taskAgentModel;
|
|
10443
|
+
return {
|
|
10444
|
+
mode: configured?.mode === "fixed" ? "fixed" : configured?.followConversation === true ? "conversation" : "inherit",
|
|
10445
|
+
provider: configured?.provider?.trim() ?? "",
|
|
10446
|
+
model: configured?.model?.trim() ?? ""
|
|
10447
|
+
};
|
|
10448
|
+
}
|
|
10449
|
+
/**
|
|
10450
|
+
* What a choice stores. Following the conversation is an inherited route with
|
|
10451
|
+
* `followConversation`, a key a release without it ignores, so that release
|
|
10452
|
+
* still reads the route as following global rather than failing on a mode it
|
|
10453
|
+
* does not know.
|
|
10454
|
+
*/
|
|
10455
|
+
function stored(route) {
|
|
10456
|
+
return route.mode === "fixed" ? {
|
|
10457
|
+
mode: "fixed",
|
|
10458
|
+
provider: route.provider,
|
|
10459
|
+
model: route.model
|
|
10460
|
+
} : route.mode === "conversation" ? {
|
|
10461
|
+
mode: "inherit",
|
|
10462
|
+
followConversation: true
|
|
10463
|
+
} : { mode: "inherit" };
|
|
10464
|
+
}
|
|
10465
|
+
/** The route choosing a fixed model starts from: the saved one, else DSH's default, else the first listed. */
|
|
10466
|
+
function startingRoute(catalog, current) {
|
|
10467
|
+
const listed = (provider) => catalog.groups.some((group) => group.id === provider);
|
|
10468
|
+
const provider = (listed(current.provider) ? current.provider : "") || catalog.defaultSelection?.provider || catalog.groups[0]?.id || "";
|
|
10469
|
+
const models = catalog.groups.find((group) => group.id === provider)?.models ?? [];
|
|
10470
|
+
const model = (current.provider === provider ? current.model : "") || (catalog.defaultSelection?.provider === provider ? catalog.defaultSelection.model : "") || models[0]?.id || "";
|
|
10471
|
+
return provider === "" || model === "" ? void 0 : {
|
|
10472
|
+
provider,
|
|
10473
|
+
model
|
|
10474
|
+
};
|
|
10475
|
+
}
|
|
10476
|
+
/**
|
|
10477
|
+
* The route the next task Agent takes: a custom route's own model; the asking
|
|
10478
|
+
* conversation's route when the choice follows it and that conversation is
|
|
10479
|
+
* open; else the route the Host reports for following global. It is put
|
|
10480
|
+
* together from the parts the Host reported, so a choice shows its effect at
|
|
10481
|
+
* once. Until this page has read the settings, it cannot know the stored
|
|
10482
|
+
* choice, and states the route the Host resolved.
|
|
10483
|
+
*/
|
|
10484
|
+
function effectiveRoute(route, catalog, settled = true) {
|
|
10485
|
+
if (!settled) return catalog?.effective;
|
|
10486
|
+
if (route.mode === "fixed") return route.provider === "" || route.model === "" ? void 0 : {
|
|
10487
|
+
provider: route.provider,
|
|
10488
|
+
model: route.model,
|
|
10489
|
+
source: "fixed"
|
|
10490
|
+
};
|
|
10491
|
+
if (route.mode === "conversation" && catalog?.session !== void 0) return {
|
|
10492
|
+
...catalog.session,
|
|
10493
|
+
source: "session"
|
|
10494
|
+
};
|
|
10495
|
+
return catalog?.inherited ?? (catalog?.defaultSelection === void 0 ? void 0 : {
|
|
10496
|
+
...catalog.defaultSelection,
|
|
10497
|
+
source: "dsh-default"
|
|
10498
|
+
});
|
|
10499
|
+
}
|
|
10500
|
+
function routeSourceKey(source) {
|
|
10501
|
+
return `config.taskAgentSource.${source}`;
|
|
10502
|
+
}
|
|
10503
|
+
/**
|
|
10504
|
+
* The task Agent route a page shows and writes: the stored route, the model
|
|
10505
|
+
* directory it is chosen from, and the write that applies a choice at once.
|
|
10506
|
+
* The route is read from the settings themselves, so every page that shows it
|
|
10507
|
+
* agrees, and a change made on another page reads here at once. A page
|
|
10508
|
+
* belongs to one conversation, so the directory it reads names that
|
|
10509
|
+
* conversation's model, and a read that fails says why and can be asked for
|
|
10510
|
+
* again instead of quietly falling back.
|
|
10511
|
+
*/
|
|
10512
|
+
function useTaskAgentModel(options) {
|
|
10513
|
+
const { scope, connection, sessionId, workspaceId } = options;
|
|
10514
|
+
const snapshot = useScope(scope);
|
|
10515
|
+
const saved = routeOf(snapshot.value);
|
|
10516
|
+
const route = useLive(saved, async (next) => {
|
|
10517
|
+
await scope.mutate([{
|
|
10518
|
+
op: "set",
|
|
10519
|
+
path: ["taskAgentModel"],
|
|
10520
|
+
value: stored(next)
|
|
10521
|
+
}]);
|
|
10522
|
+
});
|
|
10523
|
+
const [catalog, setCatalog] = (0, react.useState)({
|
|
10524
|
+
state: connection === void 0 ? "unavailable" : "loading",
|
|
10525
|
+
value: null,
|
|
10526
|
+
error: null,
|
|
10527
|
+
full: false
|
|
10528
|
+
});
|
|
10529
|
+
const request = (0, react.useRef)(0);
|
|
10530
|
+
const client = (0, react.useMemo)(() => connection === void 0 ? void 0 : new MnemonClient(connection, sessionId, workspaceId), [
|
|
10531
|
+
connection,
|
|
10532
|
+
sessionId,
|
|
10533
|
+
workspaceId
|
|
10534
|
+
]);
|
|
10535
|
+
const loaded = (0, react.useRef)({
|
|
10536
|
+
client: void 0,
|
|
10537
|
+
level: "none"
|
|
10538
|
+
});
|
|
10539
|
+
const level = () => loaded.current.client === client ? loaded.current.level : "none";
|
|
10540
|
+
const load = (0, react.useCallback)((full) => {
|
|
10541
|
+
if (client === void 0) return;
|
|
10542
|
+
const current = ++request.current;
|
|
10543
|
+
setCatalog((value) => ({
|
|
10544
|
+
...value,
|
|
10545
|
+
state: "loading",
|
|
10546
|
+
error: null
|
|
10547
|
+
}));
|
|
10548
|
+
client.taskAgentModels(full).then((value) => {
|
|
10549
|
+
if (request.current !== current) return;
|
|
10550
|
+
loaded.current = {
|
|
10551
|
+
client,
|
|
10552
|
+
level: full ? "full" : "route"
|
|
10553
|
+
};
|
|
10554
|
+
setCatalog({
|
|
10555
|
+
state: "ready",
|
|
10556
|
+
value,
|
|
10557
|
+
error: null,
|
|
10558
|
+
full
|
|
10559
|
+
});
|
|
10560
|
+
}, (reason) => {
|
|
10561
|
+
if (request.current === current) setCatalog((value) => ({
|
|
10562
|
+
...value,
|
|
10563
|
+
state: "error",
|
|
10564
|
+
error: message(reason)
|
|
10565
|
+
}));
|
|
10566
|
+
});
|
|
10567
|
+
}, [client]);
|
|
10568
|
+
(0, react.useEffect)(() => () => {
|
|
10569
|
+
request.current += 1;
|
|
10570
|
+
}, []);
|
|
10571
|
+
const fullFixed = saved.mode === "fixed";
|
|
10572
|
+
(0, react.useEffect)(() => {
|
|
10573
|
+
if (fullFixed ? level() === "full" : level() !== "none") return;
|
|
10574
|
+
load(fullFixed);
|
|
10575
|
+
}, [fullFixed, load]);
|
|
10576
|
+
const [choosing, setChoosing] = (0, react.useState)(false);
|
|
10577
|
+
(0, react.useEffect)(() => {
|
|
10578
|
+
if (!choosing) return;
|
|
10579
|
+
if (catalog.state === "error") {
|
|
10580
|
+
setChoosing(false);
|
|
10581
|
+
return;
|
|
10582
|
+
}
|
|
10583
|
+
if (!catalog.full || catalog.value === null) return;
|
|
10584
|
+
setChoosing(false);
|
|
10585
|
+
const start = startingRoute(catalog.value, route.value);
|
|
10586
|
+
if (start !== void 0) route.set({
|
|
10587
|
+
mode: "fixed",
|
|
10588
|
+
...start
|
|
10589
|
+
});
|
|
10590
|
+
}, [choosing, catalog]);
|
|
10591
|
+
const setMode = (mode) => {
|
|
10592
|
+
if (mode !== "fixed") {
|
|
10593
|
+
setChoosing(false);
|
|
10594
|
+
if (route.value.mode === mode) return;
|
|
10595
|
+
route.set({
|
|
10596
|
+
mode,
|
|
10597
|
+
provider: "",
|
|
10598
|
+
model: ""
|
|
10599
|
+
});
|
|
10600
|
+
return;
|
|
10601
|
+
}
|
|
10602
|
+
const start = catalog.full && catalog.value !== null ? startingRoute(catalog.value, route.value) : void 0;
|
|
10603
|
+
if (start !== void 0) {
|
|
10604
|
+
route.set({
|
|
10605
|
+
mode: "fixed",
|
|
10606
|
+
...start
|
|
10607
|
+
});
|
|
10608
|
+
return;
|
|
10609
|
+
}
|
|
10610
|
+
setChoosing(true);
|
|
10611
|
+
load(true);
|
|
10612
|
+
};
|
|
10613
|
+
return {
|
|
10614
|
+
route: route.value,
|
|
10615
|
+
settled: snapshot.status === "ready",
|
|
10616
|
+
catalog,
|
|
10617
|
+
choosing,
|
|
10618
|
+
failed: route.failed,
|
|
10619
|
+
retry: () => {
|
|
10620
|
+
load(fullFixed || choosing || level() === "full");
|
|
10621
|
+
},
|
|
10622
|
+
setMode,
|
|
10623
|
+
setRoute: (next) => {
|
|
10624
|
+
route.set({
|
|
10625
|
+
mode: "fixed",
|
|
10626
|
+
...next
|
|
10627
|
+
});
|
|
10628
|
+
}
|
|
10629
|
+
};
|
|
10630
|
+
}
|
|
10631
|
+
/** The route a page states: where the next task runs, and why. */
|
|
10632
|
+
function EffectiveRoute(props) {
|
|
10633
|
+
const { t } = props;
|
|
10634
|
+
const effective = props.choosing === true ? void 0 : effectiveRoute(props.route, props.catalog, props.settled !== false);
|
|
10635
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
10636
|
+
className: MnemonSettingsCard_module_css_default.routeValue,
|
|
10637
|
+
children: effective === void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", { children: props.state === "loading" || props.choosing === true ? t("config.taskAgentLoading") : t("config.taskAgentUnavailable") }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("code", { children: [
|
|
10638
|
+
effective.provider,
|
|
10639
|
+
" / ",
|
|
10640
|
+
effective.model
|
|
10641
|
+
] }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", { children: t(routeSourceKey(effective.source)) })] })
|
|
10642
|
+
});
|
|
10643
|
+
}
|
|
10644
|
+
/**
|
|
10645
|
+
* The task Agent model rows: the choice of route, the Provider and model a
|
|
10646
|
+
* custom route uses, and the route the background work will actually take. A
|
|
10647
|
+
* read that fails keeps the reason on the page and offers to read again.
|
|
10648
|
+
*/
|
|
10649
|
+
function TaskAgentModelRows(props) {
|
|
10650
|
+
const { route, t } = props;
|
|
10651
|
+
const groups = props.state === "ready" ? props.catalog?.groups ?? [] : [];
|
|
10652
|
+
const group = groups.find((candidate) => candidate.id === route.provider);
|
|
10653
|
+
const fixed = props.mode === "fixed" && props.state === "ready";
|
|
10654
|
+
const shared = (name) => groups.filter((candidate) => candidate.name === name).length > 1;
|
|
10655
|
+
const providers = [...route.provider !== "" && group === void 0 ? [{
|
|
10656
|
+
value: route.provider,
|
|
10657
|
+
label: route.provider
|
|
10658
|
+
}] : [], ...groups.map((candidate) => ({
|
|
10659
|
+
value: candidate.id,
|
|
10660
|
+
label: candidate.name,
|
|
10661
|
+
...shared(candidate.name) ? { detail: candidate.id } : {}
|
|
10662
|
+
}))];
|
|
10663
|
+
const models = [...route.model !== "" && group?.models.some((model) => model.id === route.model) !== true ? [{
|
|
10664
|
+
value: route.model,
|
|
10665
|
+
label: route.model
|
|
10666
|
+
}] : [], ...(group?.models ?? []).map((model) => ({
|
|
10667
|
+
value: model.id,
|
|
10668
|
+
label: model.name,
|
|
10669
|
+
...model.inputModalities?.includes("image") === true ? { detail: t("config.taskAgentImageInput") } : {}
|
|
10670
|
+
}))];
|
|
10671
|
+
const chooseProvider = (provider) => {
|
|
10672
|
+
const model = groups.find((candidate) => candidate.id === provider)?.models[0]?.id;
|
|
10673
|
+
if (model !== void 0) props.onRoute({
|
|
10674
|
+
provider,
|
|
10675
|
+
model
|
|
10676
|
+
});
|
|
10677
|
+
};
|
|
10678
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
|
|
10679
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(SelectRow, {
|
|
10680
|
+
id: "mnemon-task-agent",
|
|
10681
|
+
label: t("config.taskAgentTitle"),
|
|
10682
|
+
value: props.mode,
|
|
10683
|
+
disabled: props.disabled,
|
|
10684
|
+
onChange: props.onMode,
|
|
10685
|
+
options: [
|
|
10686
|
+
{
|
|
10687
|
+
value: "inherit",
|
|
10688
|
+
label: t("config.taskAgentInherit"),
|
|
10689
|
+
detail: t("config.taskAgentInheritHint")
|
|
10690
|
+
},
|
|
10691
|
+
{
|
|
10692
|
+
value: "conversation",
|
|
10693
|
+
label: t("config.taskAgentConversation"),
|
|
10694
|
+
detail: t("config.taskAgentConversationHint")
|
|
10695
|
+
},
|
|
10696
|
+
{
|
|
10697
|
+
value: "fixed",
|
|
10698
|
+
label: t("config.taskAgentFixed"),
|
|
10699
|
+
detail: t("config.taskAgentFixedHint"),
|
|
10700
|
+
...props.state === "unavailable" ? { disabled: true } : {}
|
|
10701
|
+
}
|
|
10702
|
+
]
|
|
10703
|
+
}),
|
|
10704
|
+
fixed && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(SelectRow, {
|
|
10705
|
+
id: "mnemon-task-agent-provider",
|
|
10706
|
+
label: t("config.taskAgentProvider"),
|
|
10707
|
+
value: route.provider,
|
|
10708
|
+
disabled: props.disabled || props.state !== "ready",
|
|
10709
|
+
options: providers,
|
|
10710
|
+
onChange: chooseProvider
|
|
10711
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SelectRow, {
|
|
10712
|
+
id: "mnemon-task-agent-model",
|
|
10713
|
+
label: t("config.taskAgentModel"),
|
|
10714
|
+
value: route.model,
|
|
10715
|
+
disabled: props.disabled || props.state !== "ready" || group === void 0,
|
|
10716
|
+
options: models,
|
|
10717
|
+
onChange: (model) => props.onRoute({
|
|
10718
|
+
provider: route.provider,
|
|
10719
|
+
model
|
|
10720
|
+
})
|
|
10721
|
+
})] }),
|
|
10722
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
10723
|
+
className: MnemonSettingsCard_module_css_default.rowDetail,
|
|
10724
|
+
children: [
|
|
10725
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
10726
|
+
className: MnemonSettingsCard_module_css_default.effectiveRoute,
|
|
10727
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("config.taskAgentEffective") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(EffectiveRoute, {
|
|
10728
|
+
route,
|
|
10729
|
+
settled: props.settled,
|
|
10730
|
+
choosing: props.choosing,
|
|
10731
|
+
catalog: props.catalog,
|
|
10732
|
+
state: props.state,
|
|
10733
|
+
t
|
|
10734
|
+
})]
|
|
10735
|
+
}),
|
|
10736
|
+
props.note,
|
|
10737
|
+
props.state === "error" && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("p", {
|
|
10738
|
+
className: MnemonSettingsCard_module_css_default.warning,
|
|
10739
|
+
children: [t("config.taskAgentLoadFailed", { error: props.error ?? "" }), props.retry !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
10740
|
+
variant: "ghost",
|
|
10741
|
+
size: "sm",
|
|
10742
|
+
onClick: props.retry,
|
|
10743
|
+
children: t("config.taskAgentRetry")
|
|
10744
|
+
})]
|
|
10745
|
+
}),
|
|
10746
|
+
(props.catalog?.failures?.length ?? 0) > 0 && groups.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
10747
|
+
className: MnemonSettingsCard_module_css_default.warning,
|
|
10748
|
+
children: t("config.taskAgentPartial", { count: props.catalog.failures.length })
|
|
10749
|
+
})
|
|
10750
|
+
]
|
|
10751
|
+
})
|
|
10752
|
+
] });
|
|
10753
|
+
}
|
|
10754
|
+
//#endregion
|
|
10384
10755
|
//#region src/client/component-settings.tsx
|
|
10385
10756
|
/** The packages whose own settings dsh-mnemon supplies, through the same region an installed component uses. */
|
|
10386
10757
|
const RUNTIME_PACKAGE = "dsh-mnemon-source-runtime";
|
|
@@ -10544,6 +10915,7 @@ window.__ModuleLoader__.load({
|
|
|
10544
10915
|
});
|
|
10545
10916
|
const [nativeCliFound, setNativeCliFound] = (0, react.useState)(void 0);
|
|
10546
10917
|
const [status, setStatus] = (0, react.useState)({ state: "idle" });
|
|
10918
|
+
const [fill, setFill] = (0, react.useState)(void 0);
|
|
10547
10919
|
const statusRequest = (0, react.useRef)(0);
|
|
10548
10920
|
const on = page.component.enabled;
|
|
10549
10921
|
(0, react.useEffect)(() => {
|
|
@@ -10568,6 +10940,7 @@ window.__ModuleLoader__.load({
|
|
|
10568
10940
|
(0, react.useEffect)(() => {
|
|
10569
10941
|
statusRequest.current += 1;
|
|
10570
10942
|
setStatus({ state: "idle" });
|
|
10943
|
+
setFill(void 0);
|
|
10571
10944
|
}, [client, snapshot.revision]);
|
|
10572
10945
|
if (!on) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
10573
10946
|
className: MnemonSettingsCard_module_css_default.panelNote,
|
|
@@ -10577,7 +10950,10 @@ window.__ModuleLoader__.load({
|
|
|
10577
10950
|
if (client === void 0) return;
|
|
10578
10951
|
const request = statusRequest.current + 1;
|
|
10579
10952
|
statusRequest.current = request;
|
|
10580
|
-
setStatus(
|
|
10953
|
+
setStatus((previous) => ({
|
|
10954
|
+
state: "loading",
|
|
10955
|
+
...previous.value === void 0 ? {} : { value: previous.value }
|
|
10956
|
+
}));
|
|
10581
10957
|
client.embeddingStatus().then((value) => {
|
|
10582
10958
|
if (statusRequest.current === request) setStatus({
|
|
10583
10959
|
state: "ready",
|
|
@@ -10590,6 +10966,32 @@ window.__ModuleLoader__.load({
|
|
|
10590
10966
|
});
|
|
10591
10967
|
});
|
|
10592
10968
|
};
|
|
10969
|
+
const fillSpace = (space) => {
|
|
10970
|
+
if (client === void 0 || fill?.state === "running") return;
|
|
10971
|
+
const target = {
|
|
10972
|
+
memoryBodyId: space.memoryBodyId,
|
|
10973
|
+
name: space.name
|
|
10974
|
+
};
|
|
10975
|
+
setFill({
|
|
10976
|
+
...target,
|
|
10977
|
+
state: "running"
|
|
10978
|
+
});
|
|
10979
|
+
client.fillEmbeddings(space.memoryBodyId).then((result) => {
|
|
10980
|
+
setFill({
|
|
10981
|
+
...target,
|
|
10982
|
+
state: "done",
|
|
10983
|
+
result
|
|
10984
|
+
});
|
|
10985
|
+
test();
|
|
10986
|
+
}, (reason) => {
|
|
10987
|
+
setFill({
|
|
10988
|
+
...target,
|
|
10989
|
+
state: "failed",
|
|
10990
|
+
error: message(reason)
|
|
10991
|
+
});
|
|
10992
|
+
test();
|
|
10993
|
+
});
|
|
10994
|
+
};
|
|
10593
10995
|
const activeScope = isWorkspaceStorageScope(snapshot.value?.storageScope ?? "global") ? "workspace" : "global";
|
|
10594
10996
|
const readOnly = snapshot.value?.writeEnabled === false;
|
|
10595
10997
|
const disabled = !page.writable || snapshot.status === "loading" || !snapshot.writable;
|
|
@@ -10634,7 +11036,13 @@ window.__ModuleLoader__.load({
|
|
|
10634
11036
|
status,
|
|
10635
11037
|
t,
|
|
10636
11038
|
onEdit: form.edit,
|
|
10637
|
-
onTest:
|
|
11039
|
+
onTest: () => {
|
|
11040
|
+
setFill(void 0);
|
|
11041
|
+
test();
|
|
11042
|
+
},
|
|
11043
|
+
canFill: !disabled && !readOnly,
|
|
11044
|
+
fill,
|
|
11045
|
+
onFill: fillSpace,
|
|
10638
11046
|
onManaged: (on) => {
|
|
10639
11047
|
if (!on) form.discard();
|
|
10640
11048
|
managed.set(on);
|
|
@@ -10797,14 +11205,121 @@ window.__ModuleLoader__.load({
|
|
|
10797
11205
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
10798
11206
|
variant: "outline",
|
|
10799
11207
|
size: "sm",
|
|
10800
|
-
disabled: props.disabled || !props.connectionAvailable || props.cliMissing || props.changing || status.state === "loading",
|
|
11208
|
+
disabled: props.disabled || !props.connectionAvailable || props.cliMissing || props.changing || status.state === "loading" || props.fill?.state === "running",
|
|
10801
11209
|
onClick: props.onTest,
|
|
10802
11210
|
children: t("config.embeddingTest")
|
|
10803
11211
|
})]
|
|
11212
|
+
}),
|
|
11213
|
+
!props.cliMissing && !props.changing && (status.state === "ready" || status.state === "loading") && (status.value?.spaces ?? []).length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(EmbeddingSpaces, {
|
|
11214
|
+
spaces: status.value.spaces,
|
|
11215
|
+
available: status.value.available,
|
|
11216
|
+
canFill: props.canFill,
|
|
11217
|
+
counting: status.state === "loading",
|
|
11218
|
+
fill: props.fill,
|
|
11219
|
+
onFill: props.onFill,
|
|
11220
|
+
t
|
|
11221
|
+
}),
|
|
11222
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(EmbeddingFillOutcome, {
|
|
11223
|
+
fill: props.fill,
|
|
11224
|
+
t
|
|
10804
11225
|
})
|
|
10805
11226
|
]
|
|
10806
11227
|
});
|
|
10807
11228
|
}
|
|
11229
|
+
/**
|
|
11230
|
+
* Each Mnemon Native space's vectors under the status line. Mnemon counts one Store at a
|
|
11231
|
+
* time, so the total alone could read as every space's health while one lacked vectors (#392).
|
|
11232
|
+
* A space that lacks them can have them filled in here while the embedding service answers.
|
|
11233
|
+
*/
|
|
11234
|
+
function EmbeddingSpaces(props) {
|
|
11235
|
+
const { t, fill } = props;
|
|
11236
|
+
const missing = (space) => space.error === void 0 && space.embedded < space.totalInsights;
|
|
11237
|
+
const fillable = props.available && props.canFill;
|
|
11238
|
+
const running = fill?.state === "running" ? fill.memoryBodyId : void 0;
|
|
11239
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
11240
|
+
className: MnemonSettingsCard_module_css_default.embeddingSpaces,
|
|
11241
|
+
children: [
|
|
11242
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", {
|
|
11243
|
+
id: "mnemon-embedding-spaces",
|
|
11244
|
+
children: t("config.embeddingSpaces")
|
|
11245
|
+
}),
|
|
11246
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("ul", {
|
|
11247
|
+
"aria-labelledby": "mnemon-embedding-spaces",
|
|
11248
|
+
children: props.spaces.map((space) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("li", {
|
|
11249
|
+
"data-missing": missing(space) ? "" : void 0,
|
|
11250
|
+
"data-failed": space.error === void 0 ? void 0 : "",
|
|
11251
|
+
children: [
|
|
11252
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
11253
|
+
className: MnemonSettingsCard_module_css_default.embeddingSpaceName,
|
|
11254
|
+
title: space.name,
|
|
11255
|
+
children: space.name
|
|
11256
|
+
}),
|
|
11257
|
+
!space.active && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
11258
|
+
className: MnemonSettingsCard_module_css_default.embeddingSpaceState,
|
|
11259
|
+
children: t("common.inactive")
|
|
11260
|
+
}),
|
|
11261
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
11262
|
+
className: MnemonSettingsCard_module_css_default.embeddingSpaceCount,
|
|
11263
|
+
children: space.error === void 0 ? t("config.embeddingSpaceCounts", {
|
|
11264
|
+
embedded: space.embedded,
|
|
11265
|
+
total: space.totalInsights,
|
|
11266
|
+
coverage: space.coverage
|
|
11267
|
+
}) : t("config.embeddingSpaceFailed", { error: space.error })
|
|
11268
|
+
}),
|
|
11269
|
+
fillable && missing(space) && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
11270
|
+
variant: "ghost",
|
|
11271
|
+
size: "sm",
|
|
11272
|
+
disabled: running !== void 0 || props.counting,
|
|
11273
|
+
"aria-busy": running === space.memoryBodyId,
|
|
11274
|
+
"aria-label": t(running === space.memoryBodyId ? "config.embeddingFillingLabel" : "config.embeddingFillLabel", { name: space.name }),
|
|
11275
|
+
onClick: () => props.onFill(space),
|
|
11276
|
+
children: running === space.memoryBodyId ? t("config.embeddingFilling") : t("config.embeddingFill")
|
|
11277
|
+
})
|
|
11278
|
+
]
|
|
11279
|
+
}, space.memoryBodyId))
|
|
11280
|
+
}),
|
|
11281
|
+
props.spaces.some(missing) && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", { children: t(!props.canFill ? "config.embeddingMissing" : props.available ? "config.embeddingMissingFill" : "config.embeddingMissingOffline") }),
|
|
11282
|
+
props.spaces.some((space) => space.error !== void 0) && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", { children: t("config.embeddingSpacesUnread") })
|
|
11283
|
+
]
|
|
11284
|
+
});
|
|
11285
|
+
}
|
|
11286
|
+
/** What the last fill did. It stays while the counts are read again, and reads as a failure when it wrote no vector. */
|
|
11287
|
+
function EmbeddingFillOutcome(props) {
|
|
11288
|
+
const { fill, t } = props;
|
|
11289
|
+
if (fill === void 0 || fill.state === "running") return null;
|
|
11290
|
+
const failure = (text) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
11291
|
+
className: `${MnemonSettingsCard_module_css_default.embeddingFillOutcome} ${MnemonSettingsCard_module_css_default.error}`,
|
|
11292
|
+
role: "alert",
|
|
11293
|
+
children: text
|
|
11294
|
+
});
|
|
11295
|
+
if (fill.state === "failed") return failure(t("config.embeddingFillFailed", {
|
|
11296
|
+
name: fill.name,
|
|
11297
|
+
error: fill.error
|
|
11298
|
+
}));
|
|
11299
|
+
const { filled, remaining, model, stopped } = fill.result;
|
|
11300
|
+
const name = fill.name;
|
|
11301
|
+
if (remaining > 0 && stopped === "refused" && filled === 0) return failure(t("config.embeddingFillRefused", {
|
|
11302
|
+
name,
|
|
11303
|
+
model
|
|
11304
|
+
}));
|
|
11305
|
+
const text = remaining === 0 ? filled > 0 ? t("config.embeddingFillDone", {
|
|
11306
|
+
name,
|
|
11307
|
+
filled
|
|
11308
|
+
}) : void 0 : stopped === "refused" ? t("config.embeddingFillPartly", {
|
|
11309
|
+
name,
|
|
11310
|
+
filled,
|
|
11311
|
+
remaining
|
|
11312
|
+
}) : t("config.embeddingFillMore", {
|
|
11313
|
+
name,
|
|
11314
|
+
filled,
|
|
11315
|
+
remaining
|
|
11316
|
+
});
|
|
11317
|
+
return text === void 0 ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
11318
|
+
className: MnemonSettingsCard_module_css_default.embeddingFillOutcome,
|
|
11319
|
+
role: "status",
|
|
11320
|
+
children: text
|
|
11321
|
+
});
|
|
11322
|
+
}
|
|
10808
11323
|
/** Each limit as the page shows it: the interval in seconds, the others as stored. */
|
|
10809
11324
|
const LIMITS = [
|
|
10810
11325
|
{
|
|
@@ -10832,14 +11347,7 @@ window.__ModuleLoader__.load({
|
|
|
10832
11347
|
scale: 1
|
|
10833
11348
|
}
|
|
10834
11349
|
];
|
|
10835
|
-
function
|
|
10836
|
-
return {
|
|
10837
|
-
mode: value?.taskAgentModel?.mode === "fixed" ? "fixed" : "inherit",
|
|
10838
|
-
provider: value?.taskAgentModel?.provider?.trim() ?? "",
|
|
10839
|
-
model: value?.taskAgentModel?.model?.trim() ?? ""
|
|
10840
|
-
};
|
|
10841
|
-
}
|
|
10842
|
-
function reviewOf(value) {
|
|
11350
|
+
function reviewOf(value) {
|
|
10843
11351
|
return {
|
|
10844
11352
|
...DEFAULT_IDLE_REVIEW,
|
|
10845
11353
|
...value?.idleReview
|
|
@@ -10875,17 +11383,6 @@ window.__ModuleLoader__.load({
|
|
|
10875
11383
|
}
|
|
10876
11384
|
}];
|
|
10877
11385
|
}
|
|
10878
|
-
/** The route choosing a fixed model starts from: the saved one, else DSH's default, else the first listed. */
|
|
10879
|
-
function startingRoute(catalog, current) {
|
|
10880
|
-
const listed = (provider) => catalog.groups.some((group) => group.id === provider);
|
|
10881
|
-
const provider = (listed(current.provider) ? current.provider : "") || catalog.defaultSelection?.provider || catalog.groups[0]?.id || "";
|
|
10882
|
-
const models = catalog.groups.find((group) => group.id === provider)?.models ?? [];
|
|
10883
|
-
const model = (current.provider === provider ? current.model : "") || (catalog.defaultSelection?.provider === provider ? catalog.defaultSelection.model : "") || models[0]?.id || "";
|
|
10884
|
-
return provider === "" || model === "" ? void 0 : {
|
|
10885
|
-
provider,
|
|
10886
|
-
model
|
|
10887
|
-
};
|
|
10888
|
-
}
|
|
10889
11386
|
/**
|
|
10890
11387
|
* The Layered strategy's own settings: the model its background task Agents use,
|
|
10891
11388
|
* and the idle review that keeps its layers in shape. Choices apply at once;
|
|
@@ -10895,16 +11392,11 @@ window.__ModuleLoader__.load({
|
|
|
10895
11392
|
const { scope, connection, page, t } = props;
|
|
10896
11393
|
const snapshot = useScope(scope);
|
|
10897
11394
|
const savedReview = reviewOf(snapshot.value);
|
|
10898
|
-
const
|
|
10899
|
-
|
|
10900
|
-
|
|
10901
|
-
|
|
10902
|
-
|
|
10903
|
-
mode: "fixed",
|
|
10904
|
-
provider: next.provider,
|
|
10905
|
-
model: next.model
|
|
10906
|
-
}
|
|
10907
|
-
}]);
|
|
11395
|
+
const taskAgent = useTaskAgentModel({
|
|
11396
|
+
scope,
|
|
11397
|
+
connection,
|
|
11398
|
+
sessionId: page.sessionId,
|
|
11399
|
+
workspaceId: page.workspace?.id
|
|
10908
11400
|
});
|
|
10909
11401
|
const configured = snapshot.value?.idleReview;
|
|
10910
11402
|
const choice = useLive(choiceOf(savedReview), async (next) => {
|
|
@@ -10917,83 +11409,6 @@ window.__ModuleLoader__.load({
|
|
|
10917
11409
|
const operations = reviewWrite(configured, next, before);
|
|
10918
11410
|
if (operations.length > 0) await scope.mutate(operations);
|
|
10919
11411
|
});
|
|
10920
|
-
const [catalog, setCatalog] = (0, react.useState)({
|
|
10921
|
-
state: connection === void 0 ? "unavailable" : "loading",
|
|
10922
|
-
value: null,
|
|
10923
|
-
error: null,
|
|
10924
|
-
full: false
|
|
10925
|
-
});
|
|
10926
|
-
const request = (0, react.useRef)(0);
|
|
10927
|
-
const loaded = (0, react.useRef)("none");
|
|
10928
|
-
const load = (0, react.useCallback)((full) => {
|
|
10929
|
-
if (connection === void 0) return;
|
|
10930
|
-
const current = ++request.current;
|
|
10931
|
-
setCatalog((value) => ({
|
|
10932
|
-
...value,
|
|
10933
|
-
state: "loading",
|
|
10934
|
-
error: null
|
|
10935
|
-
}));
|
|
10936
|
-
new MnemonClient(connection).taskAgentModels(full).then((value) => {
|
|
10937
|
-
if (request.current !== current) return;
|
|
10938
|
-
loaded.current = full ? "full" : "route";
|
|
10939
|
-
setCatalog({
|
|
10940
|
-
state: "ready",
|
|
10941
|
-
value,
|
|
10942
|
-
error: null,
|
|
10943
|
-
full
|
|
10944
|
-
});
|
|
10945
|
-
}, (reason) => {
|
|
10946
|
-
if (request.current === current) setCatalog((value) => ({
|
|
10947
|
-
...value,
|
|
10948
|
-
state: "error",
|
|
10949
|
-
error: message(reason)
|
|
10950
|
-
}));
|
|
10951
|
-
});
|
|
10952
|
-
}, [connection]);
|
|
10953
|
-
(0, react.useEffect)(() => () => {
|
|
10954
|
-
request.current += 1;
|
|
10955
|
-
}, []);
|
|
10956
|
-
const configuredMode = snapshot.value?.taskAgentModel?.mode === "fixed" ? "fixed" : "inherit";
|
|
10957
|
-
(0, react.useEffect)(() => {
|
|
10958
|
-
if (configuredMode === "fixed" ? loaded.current === "full" : loaded.current !== "none") return;
|
|
10959
|
-
load(configuredMode === "fixed");
|
|
10960
|
-
}, [configuredMode, load]);
|
|
10961
|
-
const [choosing, setChoosing] = (0, react.useState)(false);
|
|
10962
|
-
(0, react.useEffect)(() => {
|
|
10963
|
-
if (!choosing) return;
|
|
10964
|
-
if (catalog.state === "error") {
|
|
10965
|
-
setChoosing(false);
|
|
10966
|
-
return;
|
|
10967
|
-
}
|
|
10968
|
-
if (!catalog.full || catalog.value === null) return;
|
|
10969
|
-
setChoosing(false);
|
|
10970
|
-
const start = startingRoute(catalog.value, route.value);
|
|
10971
|
-
if (start !== void 0) route.set({
|
|
10972
|
-
mode: "fixed",
|
|
10973
|
-
...start
|
|
10974
|
-
});
|
|
10975
|
-
}, [choosing, catalog]);
|
|
10976
|
-
const chooseMode = (mode) => {
|
|
10977
|
-
if (mode === "inherit") {
|
|
10978
|
-
setChoosing(false);
|
|
10979
|
-
route.set({
|
|
10980
|
-
mode: "inherit",
|
|
10981
|
-
provider: "",
|
|
10982
|
-
model: ""
|
|
10983
|
-
});
|
|
10984
|
-
return;
|
|
10985
|
-
}
|
|
10986
|
-
const start = catalog.full && catalog.value !== null ? startingRoute(catalog.value, route.value) : void 0;
|
|
10987
|
-
if (start !== void 0) {
|
|
10988
|
-
route.set({
|
|
10989
|
-
mode: "fixed",
|
|
10990
|
-
...start
|
|
10991
|
-
});
|
|
10992
|
-
return;
|
|
10993
|
-
}
|
|
10994
|
-
setChoosing(true);
|
|
10995
|
-
load(true);
|
|
10996
|
-
};
|
|
10997
11412
|
const disabled = !page.writable || snapshot.status === "loading" || !snapshot.writable;
|
|
10998
11413
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
|
|
10999
11414
|
className: MnemonSettingsCard_module_css_default.panelSection,
|
|
@@ -11007,7 +11422,7 @@ window.__ModuleLoader__.load({
|
|
|
11007
11422
|
children: t("config.backgroundTitle")
|
|
11008
11423
|
}),
|
|
11009
11424
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", { children: t("config.backgroundDescription") }),
|
|
11010
|
-
catalog.state === "loading" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
11425
|
+
taskAgent.catalog.state === "loading" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
11011
11426
|
className: MnemonSettingsCard_module_css_default.miniSpinner,
|
|
11012
11427
|
"aria-hidden": "true"
|
|
11013
11428
|
})
|
|
@@ -11020,18 +11435,17 @@ window.__ModuleLoader__.load({
|
|
|
11020
11435
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
11021
11436
|
className: MnemonSettingsCard_module_css_default.rows,
|
|
11022
11437
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(TaskAgentModelRows, {
|
|
11023
|
-
mode: choosing ? "fixed" : route.
|
|
11024
|
-
route: route
|
|
11025
|
-
|
|
11026
|
-
|
|
11027
|
-
|
|
11028
|
-
|
|
11438
|
+
mode: taskAgent.choosing ? "fixed" : taskAgent.route.mode,
|
|
11439
|
+
route: taskAgent.route,
|
|
11440
|
+
settled: taskAgent.settled,
|
|
11441
|
+
choosing: taskAgent.choosing,
|
|
11442
|
+
catalog: taskAgent.catalog.value,
|
|
11443
|
+
state: taskAgent.catalog.state,
|
|
11444
|
+
error: taskAgent.catalog.error,
|
|
11445
|
+
retry: taskAgent.retry,
|
|
11029
11446
|
disabled,
|
|
11030
|
-
onMode:
|
|
11031
|
-
onRoute:
|
|
11032
|
-
mode: "fixed",
|
|
11033
|
-
...next
|
|
11034
|
-
}),
|
|
11447
|
+
onMode: taskAgent.setMode,
|
|
11448
|
+
onRoute: taskAgent.setRoute,
|
|
11035
11449
|
t
|
|
11036
11450
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IdleReviewRows, {
|
|
11037
11451
|
choice: choice.value,
|
|
@@ -11045,105 +11459,12 @@ window.__ModuleLoader__.load({
|
|
|
11045
11459
|
})]
|
|
11046
11460
|
}),
|
|
11047
11461
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(WriteFailure, {
|
|
11048
|
-
error:
|
|
11462
|
+
error: taskAgent.failed ?? choice.failed,
|
|
11049
11463
|
t
|
|
11050
11464
|
})
|
|
11051
11465
|
]
|
|
11052
11466
|
});
|
|
11053
11467
|
}
|
|
11054
|
-
function TaskAgentModelRows(props) {
|
|
11055
|
-
const { route, t } = props;
|
|
11056
|
-
const groups = props.catalog?.groups ?? [];
|
|
11057
|
-
const group = groups.find((candidate) => candidate.id === route.provider);
|
|
11058
|
-
const inherited = props.catalog?.defaultSelection ?? (props.catalog?.effective?.source === "fixed" ? void 0 : props.catalog?.effective);
|
|
11059
|
-
const fixed = props.mode === "fixed" && !props.choosing;
|
|
11060
|
-
const effective = props.mode === "fixed" ? !fixed || route.provider === "" || route.model === "" ? void 0 : {
|
|
11061
|
-
provider: route.provider,
|
|
11062
|
-
model: route.model
|
|
11063
|
-
} : inherited;
|
|
11064
|
-
const shared = (name) => groups.filter((candidate) => candidate.name === name).length > 1;
|
|
11065
|
-
const providers = [...route.provider !== "" && group === void 0 ? [{
|
|
11066
|
-
value: route.provider,
|
|
11067
|
-
label: route.provider
|
|
11068
|
-
}] : [], ...groups.map((candidate) => ({
|
|
11069
|
-
value: candidate.id,
|
|
11070
|
-
label: candidate.name,
|
|
11071
|
-
...shared(candidate.name) ? { detail: candidate.id } : {}
|
|
11072
|
-
}))];
|
|
11073
|
-
const models = [...route.model !== "" && group?.models.some((model) => model.id === route.model) !== true ? [{
|
|
11074
|
-
value: route.model,
|
|
11075
|
-
label: route.model
|
|
11076
|
-
}] : [], ...(group?.models ?? []).map((model) => ({
|
|
11077
|
-
value: model.id,
|
|
11078
|
-
label: model.name,
|
|
11079
|
-
...model.inputModalities?.includes("image") === true ? { detail: t("config.taskAgentImageInput") } : {}
|
|
11080
|
-
}))];
|
|
11081
|
-
const chooseProvider = (provider) => {
|
|
11082
|
-
const model = groups.find((candidate) => candidate.id === provider)?.models[0]?.id;
|
|
11083
|
-
if (model !== void 0) props.onRoute({
|
|
11084
|
-
provider,
|
|
11085
|
-
model
|
|
11086
|
-
});
|
|
11087
|
-
};
|
|
11088
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
|
|
11089
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(SelectRow, {
|
|
11090
|
-
id: "mnemon-task-agent",
|
|
11091
|
-
label: t("config.taskAgentTitle"),
|
|
11092
|
-
value: props.mode,
|
|
11093
|
-
disabled: props.disabled,
|
|
11094
|
-
onChange: props.onMode,
|
|
11095
|
-
options: [{
|
|
11096
|
-
value: "inherit",
|
|
11097
|
-
label: t("config.taskAgentInherit"),
|
|
11098
|
-
detail: t("config.taskAgentInheritHint")
|
|
11099
|
-
}, {
|
|
11100
|
-
value: "fixed",
|
|
11101
|
-
label: t("config.taskAgentFixed"),
|
|
11102
|
-
detail: t("config.taskAgentFixedHint"),
|
|
11103
|
-
...props.state === "unavailable" ? { disabled: true } : {}
|
|
11104
|
-
}]
|
|
11105
|
-
}),
|
|
11106
|
-
fixed && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(SelectRow, {
|
|
11107
|
-
id: "mnemon-task-agent-provider",
|
|
11108
|
-
label: t("config.taskAgentProvider"),
|
|
11109
|
-
value: route.provider,
|
|
11110
|
-
disabled: props.disabled || props.state !== "ready",
|
|
11111
|
-
options: providers,
|
|
11112
|
-
onChange: chooseProvider
|
|
11113
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SelectRow, {
|
|
11114
|
-
id: "mnemon-task-agent-model",
|
|
11115
|
-
label: t("config.taskAgentModel"),
|
|
11116
|
-
value: route.model,
|
|
11117
|
-
disabled: props.disabled || props.state !== "ready" || group === void 0,
|
|
11118
|
-
options: models,
|
|
11119
|
-
onChange: (model) => props.onRoute({
|
|
11120
|
-
provider: route.provider,
|
|
11121
|
-
model
|
|
11122
|
-
})
|
|
11123
|
-
})] }),
|
|
11124
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
11125
|
-
className: MnemonSettingsCard_module_css_default.rowDetail,
|
|
11126
|
-
children: [
|
|
11127
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
11128
|
-
className: MnemonSettingsCard_module_css_default.effectiveRoute,
|
|
11129
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("config.taskAgentEffective") }), effective === void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", { children: props.state === "loading" || props.choosing ? t("config.taskAgentLoading") : t("config.taskAgentUnavailable") }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("code", { children: [
|
|
11130
|
-
effective.provider,
|
|
11131
|
-
" / ",
|
|
11132
|
-
effective.model
|
|
11133
|
-
] })]
|
|
11134
|
-
}),
|
|
11135
|
-
props.state === "error" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
11136
|
-
className: MnemonSettingsCard_module_css_default.warning,
|
|
11137
|
-
children: t("config.taskAgentLoadFailed", { error: props.error ?? "" })
|
|
11138
|
-
}),
|
|
11139
|
-
(props.catalog?.failures.length ?? 0) > 0 && groups.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
11140
|
-
className: MnemonSettingsCard_module_css_default.warning,
|
|
11141
|
-
children: t("config.taskAgentPartial", { count: props.catalog.failures.length })
|
|
11142
|
-
})
|
|
11143
|
-
]
|
|
11144
|
-
})
|
|
11145
|
-
] });
|
|
11146
|
-
}
|
|
11147
11468
|
function IdleReviewRows(props) {
|
|
11148
11469
|
const { choice, limits, t } = props;
|
|
11149
11470
|
const invalid = LIMITS.find((limit) => limitValue(limit, limits.draft[limit.key]) === void 0);
|
|
@@ -11865,7 +12186,8 @@ window.__ModuleLoader__.load({
|
|
|
11865
12186
|
space: place,
|
|
11866
12187
|
action: answered
|
|
11867
12188
|
}
|
|
11868
|
-
}
|
|
12189
|
+
},
|
|
12190
|
+
...result.embedded === false ? { unembedded: true } : {}
|
|
11869
12191
|
};
|
|
11870
12192
|
}
|
|
11871
12193
|
/**
|
|
@@ -12070,7 +12392,8 @@ window.__ModuleLoader__.load({
|
|
|
12070
12392
|
const client = new MnemonClient(connection, sessionId);
|
|
12071
12393
|
(target === "agent" ? client.supervise(content, messageId).then((result) => ({
|
|
12072
12394
|
action: result.action,
|
|
12073
|
-
summary: result.summary
|
|
12395
|
+
summary: result.summary,
|
|
12396
|
+
unembedded: (result.unembedded ?? []).length > 0
|
|
12074
12397
|
})) : saveDirectly(client, target, selected?.label ?? target, content, t)).then((result) => ({
|
|
12075
12398
|
content,
|
|
12076
12399
|
destination: target,
|
|
@@ -12204,6 +12527,7 @@ window.__ModuleLoader__.load({
|
|
|
12204
12527
|
action: outcome.action,
|
|
12205
12528
|
summary: receiptSummary,
|
|
12206
12529
|
error: outcome.error,
|
|
12530
|
+
unembedded: outcome.unembedded,
|
|
12207
12531
|
onView: viewMemory,
|
|
12208
12532
|
...isRuntimePlace(outcome.destination) ? { viewLabel: t("receipt.viewRuntime") } : {}
|
|
12209
12533
|
})
|
|
@@ -14411,145 +14735,6 @@ window.__ModuleLoader__.load({
|
|
|
14411
14735
|
});
|
|
14412
14736
|
}
|
|
14413
14737
|
//#endregion
|
|
14414
|
-
//#region \0dsh-mnemon-css:/home/runner/work/dsh-mnemon/dsh-mnemon/src/client/MnemonWorkspace.module.css.mjs
|
|
14415
|
-
const css = ".NS3bAW_workspacePanel{box-sizing:border-box;background:var(--dsw-alias-bg-overlay,var(--dsw-alias-bg-base));pointer-events:auto;min-width:0;min-height:0;display:flex;position:fixed;overflow:hidden}.NS3bAW_workspacePanel>*{flex:auto;width:100%;min-width:0}.NS3bAW_betterSidebarSeat,.NS3bAW_nativeWorkspace{flex:auto;width:100%;min-width:0;height:100%;min-height:0;display:flex;overflow:hidden}.NS3bAW_betterSidebarSeat>*,.NS3bAW_nativeWorkspace>*{flex:auto;min-width:0}.NS3bAW_nativeWorkspace{z-index:2;position:relative}.NS3bAW_nativeWorkspace[data-dsh-mnemon-main-seat]{box-sizing:border-box;padding-block-start:var(--dsh-frame-top-clearance,0px)}.NS3bAW_windowDragBand{height:var(--dsh-frame-top-clearance,0px);position:absolute;inset:0 0 auto}.NS3bAW_nativeWorkspace[hidden]{display:none}.NS3bAW_entry{box-sizing:border-box;border-radius:var(--dsw-radius-md);width:calc(100% - 4px);min-height:36px;color:var(--dsw-alias-label-primary);font:inherit;text-align:left;white-space:nowrap;cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;margin:0 2px;padding:7px 8px;line-height:22px;display:flex}.NS3bAW_entry:hover,.NS3bAW_entry[data-active]{background:var(--dsw-alias-interactive-bg-hover)}.NS3bAW_entry:focus-visible{outline:var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:-2px}.NS3bAW_entryIcon{flex:none;justify-content:center;align-items:center;display:inline-flex}.NS3bAW_entryIcon svg{width:16px;height:16px;display:block}.NS3bAW_entryLabel{text-overflow:ellipsis;min-width:0;overflow:hidden}[data-sidebar-collapsed] .NS3bAW_entry{justify-content:center;width:36px;height:36px;min-height:36px;margin:0 auto 12px;padding:0}[data-sidebar-collapsed] .NS3bAW_entryIcon svg{width:18px;height:18px}[data-sidebar-collapsed] .NS3bAW_entryLabel{display:none}";
|
|
14416
|
-
const tagId = "dsh-mnemon/src/client/MnemonWorkspace.module.css";
|
|
14417
|
-
if (typeof document !== "undefined") {
|
|
14418
|
-
let tag = document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]");
|
|
14419
|
-
if (!tag) {
|
|
14420
|
-
tag = document.createElement("style");
|
|
14421
|
-
tag.dataset.pluginCss = tagId;
|
|
14422
|
-
document.head.appendChild(tag);
|
|
14423
|
-
}
|
|
14424
|
-
if (tag.textContent !== css) tag.textContent = css;
|
|
14425
|
-
}
|
|
14426
|
-
var MnemonWorkspace_module_css_default = {
|
|
14427
|
-
"betterSidebarSeat": "NS3bAW_betterSidebarSeat",
|
|
14428
|
-
"entry": "NS3bAW_entry",
|
|
14429
|
-
"entryIcon": "NS3bAW_entryIcon",
|
|
14430
|
-
"entryLabel": "NS3bAW_entryLabel",
|
|
14431
|
-
"nativeWorkspace": "NS3bAW_nativeWorkspace",
|
|
14432
|
-
"windowDragBand": "NS3bAW_windowDragBand",
|
|
14433
|
-
"workspacePanel": "NS3bAW_workspacePanel"
|
|
14434
|
-
};
|
|
14435
|
-
//#endregion
|
|
14436
|
-
//#region src/client/sidebar-entry.ts
|
|
14437
|
-
const FAMILY_SELECTOR = "[data-dsh-taskboard-entry], [data-dsh-ssh-entry], [data-dsh-mnemon-entry]";
|
|
14438
|
-
function sidebarRoot() {
|
|
14439
|
-
const column = document.querySelector("[data-pane=\"sidebar\"], [class*=\"sidebarCol\"], .dshDesktopUpstreamSidebar");
|
|
14440
|
-
if (column === null) return void 0;
|
|
14441
|
-
return column.querySelector("[class*=\"logoRow\"]")?.parentElement ?? column.firstElementChild;
|
|
14442
|
-
}
|
|
14443
|
-
function newSessionButton(root) {
|
|
14444
|
-
const nested = root.querySelector("button[class*=\"newSession\"]");
|
|
14445
|
-
if (nested !== null) return nested;
|
|
14446
|
-
for (const child of root.children) if (child.tagName === "BUTTON") return child;
|
|
14447
|
-
}
|
|
14448
|
-
function createEntry(controller) {
|
|
14449
|
-
const entry = document.createElement("button");
|
|
14450
|
-
entry.type = "button";
|
|
14451
|
-
entry.dataset.dshMnemonEntry = "";
|
|
14452
|
-
entry.dataset.dshPlugin = "dsh-mnemon";
|
|
14453
|
-
entry.dataset.dshPart = "sidebar-entry";
|
|
14454
|
-
entry.className = MnemonWorkspace_module_css_default.entry ?? "";
|
|
14455
|
-
const icon = document.createElement("span");
|
|
14456
|
-
icon.className = MnemonWorkspace_module_css_default.entryIcon ?? "";
|
|
14457
|
-
icon.append(createMemoryIcon(16));
|
|
14458
|
-
const label = document.createElement("span");
|
|
14459
|
-
label.className = MnemonWorkspace_module_css_default.entryLabel ?? "";
|
|
14460
|
-
entry.append(icon, label);
|
|
14461
|
-
entry.addEventListener("click", () => {
|
|
14462
|
-
controller.open();
|
|
14463
|
-
});
|
|
14464
|
-
return {
|
|
14465
|
-
entry,
|
|
14466
|
-
label
|
|
14467
|
-
};
|
|
14468
|
-
}
|
|
14469
|
-
function placeEntry(root, entry) {
|
|
14470
|
-
const button = newSessionButton(root);
|
|
14471
|
-
if (button === void 0) return false;
|
|
14472
|
-
const row = button.closest("[class*=\"logoRow\"]");
|
|
14473
|
-
const base = row !== null && row.parentElement === root ? row : button;
|
|
14474
|
-
const parent = base.parentElement ?? root;
|
|
14475
|
-
if (entry.parentElement === parent) return true;
|
|
14476
|
-
const anchor = Array.from(parent.children).filter((element) => element instanceof HTMLElement && element.matches(FAMILY_SELECTOR)).at(-1)?.nextElementSibling ?? base.nextElementSibling;
|
|
14477
|
-
parent.insertBefore(entry, anchor !== null && anchor.parentElement === parent ? anchor : null);
|
|
14478
|
-
return true;
|
|
14479
|
-
}
|
|
14480
|
-
/** Mount a self-healing official-style entry under the New Session row. */
|
|
14481
|
-
function mountMnemonSidebarEntry(controller, t, subscribeLocale) {
|
|
14482
|
-
const { entry, label } = createEntry(controller);
|
|
14483
|
-
let root;
|
|
14484
|
-
let placed = false;
|
|
14485
|
-
const syncLabel = () => {
|
|
14486
|
-
const text = t("tab.label");
|
|
14487
|
-
if (entry.getAttribute("aria-label") !== text) entry.setAttribute("aria-label", text);
|
|
14488
|
-
if (entry.title !== text) entry.title = text;
|
|
14489
|
-
if (label.textContent !== text) label.textContent = text;
|
|
14490
|
-
};
|
|
14491
|
-
const rootObserver = new MutationObserver(() => {
|
|
14492
|
-
if (root === void 0 || !root.isConnected) {
|
|
14493
|
-
placed = false;
|
|
14494
|
-
tryPlace();
|
|
14495
|
-
return;
|
|
14496
|
-
}
|
|
14497
|
-
if (!root.contains(entry)) placed = placeEntry(root, entry);
|
|
14498
|
-
});
|
|
14499
|
-
const tryPlace = () => {
|
|
14500
|
-
syncLabel();
|
|
14501
|
-
if (root !== void 0 && !root.isConnected) {
|
|
14502
|
-
rootObserver.disconnect();
|
|
14503
|
-
root = void 0;
|
|
14504
|
-
placed = false;
|
|
14505
|
-
}
|
|
14506
|
-
if (placed && document.body.contains(entry)) return;
|
|
14507
|
-
if (placed) {
|
|
14508
|
-
rootObserver.disconnect();
|
|
14509
|
-
root = void 0;
|
|
14510
|
-
placed = false;
|
|
14511
|
-
}
|
|
14512
|
-
root ??= sidebarRoot();
|
|
14513
|
-
if (root === void 0) return;
|
|
14514
|
-
placed = placeEntry(root, entry);
|
|
14515
|
-
if (placed) rootObserver.observe(root, {
|
|
14516
|
-
childList: true,
|
|
14517
|
-
subtree: true
|
|
14518
|
-
});
|
|
14519
|
-
};
|
|
14520
|
-
const waitObserver = new MutationObserver(tryPlace);
|
|
14521
|
-
waitObserver.observe(document.body, {
|
|
14522
|
-
childList: true,
|
|
14523
|
-
subtree: true
|
|
14524
|
-
});
|
|
14525
|
-
const syncActive = () => {
|
|
14526
|
-
if (controller.getSnapshot().open) {
|
|
14527
|
-
entry.dataset.active = "true";
|
|
14528
|
-
entry.setAttribute("aria-current", "page");
|
|
14529
|
-
} else {
|
|
14530
|
-
delete entry.dataset.active;
|
|
14531
|
-
entry.removeAttribute("aria-current");
|
|
14532
|
-
}
|
|
14533
|
-
};
|
|
14534
|
-
const unsubscribe = controller.subscribe(syncActive);
|
|
14535
|
-
const unsubscribeLocale = subscribeLocale(syncLabel);
|
|
14536
|
-
const dispose = () => {
|
|
14537
|
-
waitObserver.disconnect();
|
|
14538
|
-
rootObserver.disconnect();
|
|
14539
|
-
unsubscribe();
|
|
14540
|
-
unsubscribeLocale();
|
|
14541
|
-
entry.remove();
|
|
14542
|
-
};
|
|
14543
|
-
try {
|
|
14544
|
-
syncActive();
|
|
14545
|
-
tryPlace();
|
|
14546
|
-
return dispose;
|
|
14547
|
-
} catch (error) {
|
|
14548
|
-
dispose();
|
|
14549
|
-
throw error;
|
|
14550
|
-
}
|
|
14551
|
-
}
|
|
14552
|
-
//#endregion
|
|
14553
14738
|
//#region src/client/workspace-controller.ts
|
|
14554
14739
|
/** Small framework-neutral state holder shared by the sidebar row and panel. */
|
|
14555
14740
|
var MnemonWorkspaceController = class {
|
|
@@ -14575,6 +14760,28 @@ window.__ModuleLoader__.load({
|
|
|
14575
14760
|
}
|
|
14576
14761
|
};
|
|
14577
14762
|
//#endregion
|
|
14763
|
+
//#region \0dsh-mnemon-css:/home/runner/work/dsh-mnemon/dsh-mnemon/src/client/MnemonWorkspace.module.css.mjs
|
|
14764
|
+
const css = ".NS3bAW_workspacePanel{box-sizing:border-box;background:var(--dsw-alias-bg-overlay,var(--dsw-alias-bg-base));pointer-events:auto;min-width:0;min-height:0;display:flex;position:fixed;overflow:hidden}.NS3bAW_workspacePanel>*{flex:auto;width:100%;min-width:0}.NS3bAW_betterSidebarSeat,.NS3bAW_nativeWorkspace{flex:auto;width:100%;min-width:0;height:100%;min-height:0;display:flex;overflow:hidden}.NS3bAW_betterSidebarSeat>*,.NS3bAW_nativeWorkspace>*{flex:auto;min-width:0}.NS3bAW_nativeWorkspace{z-index:2;position:relative}.NS3bAW_nativeWorkspace[data-dsh-mnemon-main-seat]{box-sizing:border-box;padding-block-start:var(--dsh-frame-top-clearance,0px)}.NS3bAW_windowDragBand{height:var(--dsh-frame-top-clearance,0px);position:absolute;inset:0 0 auto}.NS3bAW_nativeWorkspace[hidden]{display:none}.NS3bAW_entry{box-sizing:border-box;border-radius:var(--dsw-radius-md);width:calc(100% - 4px);min-height:36px;color:var(--dsw-alias-label-primary);font:inherit;text-align:left;white-space:nowrap;cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;margin:0 2px;padding:7px 8px;line-height:22px;display:flex}.NS3bAW_entry:hover,.NS3bAW_entry[data-active]{background:var(--dsw-alias-interactive-bg-hover)}.NS3bAW_entry:focus-visible{outline:var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:-2px}.NS3bAW_entryIcon{flex:none;justify-content:center;align-items:center;display:inline-flex}.NS3bAW_entryIcon svg{width:16px;height:16px;display:block}.NS3bAW_entryLabel{text-overflow:ellipsis;min-width:0;overflow:hidden}[data-sidebar-collapsed] .NS3bAW_entry{justify-content:center;width:36px;height:36px;min-height:36px;margin:0 auto 12px;padding:0}[data-sidebar-collapsed] .NS3bAW_entryIcon svg{width:18px;height:18px}[data-sidebar-collapsed] .NS3bAW_entryLabel{display:none}";
|
|
14765
|
+
const tagId = "dsh-mnemon/src/client/MnemonWorkspace.module.css";
|
|
14766
|
+
if (typeof document !== "undefined") {
|
|
14767
|
+
let tag = document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]");
|
|
14768
|
+
if (!tag) {
|
|
14769
|
+
tag = document.createElement("style");
|
|
14770
|
+
tag.dataset.pluginCss = tagId;
|
|
14771
|
+
document.head.appendChild(tag);
|
|
14772
|
+
}
|
|
14773
|
+
if (tag.textContent !== css) tag.textContent = css;
|
|
14774
|
+
}
|
|
14775
|
+
var MnemonWorkspace_module_css_default = {
|
|
14776
|
+
"betterSidebarSeat": "NS3bAW_betterSidebarSeat",
|
|
14777
|
+
"entry": "NS3bAW_entry",
|
|
14778
|
+
"entryIcon": "NS3bAW_entryIcon",
|
|
14779
|
+
"entryLabel": "NS3bAW_entryLabel",
|
|
14780
|
+
"nativeWorkspace": "NS3bAW_nativeWorkspace",
|
|
14781
|
+
"windowDragBand": "NS3bAW_windowDragBand",
|
|
14782
|
+
"workspacePanel": "NS3bAW_workspacePanel"
|
|
14783
|
+
};
|
|
14784
|
+
//#endregion
|
|
14578
14785
|
//#region src/client/workspace-mount.tsx
|
|
14579
14786
|
const ACTIVE_ATTR = "data-dsh-mnemon-active";
|
|
14580
14787
|
const TASKBOARD_ACTIVE_ATTR = "data-dsh-taskboard-active";
|
|
@@ -14882,6 +15089,123 @@ window.__ModuleLoader__.load({
|
|
|
14882
15089
|
}
|
|
14883
15090
|
};
|
|
14884
15091
|
//#endregion
|
|
15092
|
+
//#region src/client/sidebar-entry.ts
|
|
15093
|
+
const FAMILY_SELECTOR = "[data-dsh-taskboard-entry], [data-dsh-ssh-entry], [data-dsh-mnemon-entry]";
|
|
15094
|
+
function sidebarRoot() {
|
|
15095
|
+
const column = document.querySelector("[data-pane=\"sidebar\"], [class*=\"sidebarCol\"], .dshDesktopUpstreamSidebar");
|
|
15096
|
+
if (column === null) return void 0;
|
|
15097
|
+
return column.querySelector("[class*=\"logoRow\"]")?.parentElement ?? column.firstElementChild;
|
|
15098
|
+
}
|
|
15099
|
+
function newSessionButton(root) {
|
|
15100
|
+
const nested = root.querySelector("button[class*=\"newSession\"]");
|
|
15101
|
+
if (nested !== null) return nested;
|
|
15102
|
+
for (const child of root.children) if (child.tagName === "BUTTON") return child;
|
|
15103
|
+
}
|
|
15104
|
+
function createEntry(controller) {
|
|
15105
|
+
const entry = document.createElement("button");
|
|
15106
|
+
entry.type = "button";
|
|
15107
|
+
entry.dataset.dshMnemonEntry = "";
|
|
15108
|
+
entry.dataset.dshPlugin = "dsh-mnemon";
|
|
15109
|
+
entry.dataset.dshPart = "sidebar-entry";
|
|
15110
|
+
entry.className = MnemonWorkspace_module_css_default.entry ?? "";
|
|
15111
|
+
const icon = document.createElement("span");
|
|
15112
|
+
icon.className = MnemonWorkspace_module_css_default.entryIcon ?? "";
|
|
15113
|
+
icon.append(createMemoryIcon(16));
|
|
15114
|
+
const label = document.createElement("span");
|
|
15115
|
+
label.className = MnemonWorkspace_module_css_default.entryLabel ?? "";
|
|
15116
|
+
entry.append(icon, label);
|
|
15117
|
+
entry.addEventListener("click", () => {
|
|
15118
|
+
controller.open();
|
|
15119
|
+
});
|
|
15120
|
+
return {
|
|
15121
|
+
entry,
|
|
15122
|
+
label
|
|
15123
|
+
};
|
|
15124
|
+
}
|
|
15125
|
+
function placeEntry(root, entry) {
|
|
15126
|
+
const button = newSessionButton(root);
|
|
15127
|
+
if (button === void 0) return false;
|
|
15128
|
+
const row = button.closest("[class*=\"logoRow\"]");
|
|
15129
|
+
const base = row !== null && row.parentElement === root ? row : button;
|
|
15130
|
+
const parent = base.parentElement ?? root;
|
|
15131
|
+
if (entry.parentElement === parent) return true;
|
|
15132
|
+
const anchor = Array.from(parent.children).filter((element) => element instanceof HTMLElement && element.matches(FAMILY_SELECTOR)).at(-1)?.nextElementSibling ?? base.nextElementSibling;
|
|
15133
|
+
parent.insertBefore(entry, anchor !== null && anchor.parentElement === parent ? anchor : null);
|
|
15134
|
+
return true;
|
|
15135
|
+
}
|
|
15136
|
+
/** Mount a self-healing official-style entry under the New Session row. */
|
|
15137
|
+
function mountMnemonSidebarEntry(controller, t, subscribeLocale) {
|
|
15138
|
+
const { entry, label } = createEntry(controller);
|
|
15139
|
+
let root;
|
|
15140
|
+
let placed = false;
|
|
15141
|
+
const syncLabel = () => {
|
|
15142
|
+
const text = t("tab.label");
|
|
15143
|
+
if (entry.getAttribute("aria-label") !== text) entry.setAttribute("aria-label", text);
|
|
15144
|
+
if (entry.title !== text) entry.title = text;
|
|
15145
|
+
if (label.textContent !== text) label.textContent = text;
|
|
15146
|
+
};
|
|
15147
|
+
const rootObserver = new MutationObserver(() => {
|
|
15148
|
+
if (root === void 0 || !root.isConnected) {
|
|
15149
|
+
placed = false;
|
|
15150
|
+
tryPlace();
|
|
15151
|
+
return;
|
|
15152
|
+
}
|
|
15153
|
+
if (!root.contains(entry)) placed = placeEntry(root, entry);
|
|
15154
|
+
});
|
|
15155
|
+
const tryPlace = () => {
|
|
15156
|
+
syncLabel();
|
|
15157
|
+
if (root !== void 0 && !root.isConnected) {
|
|
15158
|
+
rootObserver.disconnect();
|
|
15159
|
+
root = void 0;
|
|
15160
|
+
placed = false;
|
|
15161
|
+
}
|
|
15162
|
+
if (placed && document.body.contains(entry)) return;
|
|
15163
|
+
if (placed) {
|
|
15164
|
+
rootObserver.disconnect();
|
|
15165
|
+
root = void 0;
|
|
15166
|
+
placed = false;
|
|
15167
|
+
}
|
|
15168
|
+
root ??= sidebarRoot();
|
|
15169
|
+
if (root === void 0) return;
|
|
15170
|
+
placed = placeEntry(root, entry);
|
|
15171
|
+
if (placed) rootObserver.observe(root, {
|
|
15172
|
+
childList: true,
|
|
15173
|
+
subtree: true
|
|
15174
|
+
});
|
|
15175
|
+
};
|
|
15176
|
+
const waitObserver = new MutationObserver(tryPlace);
|
|
15177
|
+
waitObserver.observe(document.body, {
|
|
15178
|
+
childList: true,
|
|
15179
|
+
subtree: true
|
|
15180
|
+
});
|
|
15181
|
+
const syncActive = () => {
|
|
15182
|
+
if (controller.getSnapshot().open) {
|
|
15183
|
+
entry.dataset.active = "true";
|
|
15184
|
+
entry.setAttribute("aria-current", "page");
|
|
15185
|
+
} else {
|
|
15186
|
+
delete entry.dataset.active;
|
|
15187
|
+
entry.removeAttribute("aria-current");
|
|
15188
|
+
}
|
|
15189
|
+
};
|
|
15190
|
+
const unsubscribe = controller.subscribe(syncActive);
|
|
15191
|
+
const unsubscribeLocale = subscribeLocale(syncLabel);
|
|
15192
|
+
const dispose = () => {
|
|
15193
|
+
waitObserver.disconnect();
|
|
15194
|
+
rootObserver.disconnect();
|
|
15195
|
+
unsubscribe();
|
|
15196
|
+
unsubscribeLocale();
|
|
15197
|
+
entry.remove();
|
|
15198
|
+
};
|
|
15199
|
+
try {
|
|
15200
|
+
syncActive();
|
|
15201
|
+
tryPlace();
|
|
15202
|
+
return dispose;
|
|
15203
|
+
} catch (error) {
|
|
15204
|
+
dispose();
|
|
15205
|
+
throw error;
|
|
15206
|
+
}
|
|
15207
|
+
}
|
|
15208
|
+
//#endregion
|
|
14885
15209
|
//#region src/client/native-sidebar.tsx
|
|
14886
15210
|
const MNEMON_MAIN_PANEL_ID = "mnemon";
|
|
14887
15211
|
const ICON_SELECTOR = "[data-dsh-plugin=\"dsh-mnemon\"][data-dsh-part=\"sidebar-icon\"]";
|