@kenz1117/dsh-engram 0.7.13 → 0.7.15

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/lib/client.js CHANGED
@@ -1,4 +1,4 @@
1
- window.__ModuleLoader__.load({id:`@kenz1117/dsh-engram`,factory:e=>{var t={exports:{}},n=t.exports;Object.defineProperty(n,Symbol.toStringTag,{value:`Module`});let r=e("react"),i=e("react/jsx-runtime"),a=`@kenz1117/dsh-engram/panel.module.css`;if(typeof document<`u`&&document.querySelector(`style[data-plugin-css=`+JSON.stringify(a)+`]`)===null){let e=document.createElement(`style`);e.dataset.plugin=`@kenz1117/dsh-engram`,e.dataset.pluginCss=a,e.textContent=`:root{--ease-spring:cubic-bezier(.32, .72, 0, 1);--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-in-out:cubic-bezier(.65, 0, .35, 1);--dur-fast:.14s;--dur-base:.22s;--dur-slow:.36s;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--radius-control:8px;--radius-card:12px;--fs-micro:11px;--fs-body:12px;--fs-ctrl:13px;--fs-display:14px;--fs-tag:10px}.bWwFiW_panel{max-width:1240px;animation:bWwFiW_panelIn var(--dur-slow) var(--ease-out) both;margin:0 auto;position:relative}@keyframes bWwFiW_panelIn{0%{opacity:0;filter:blur(2px);transform:translateY(6px)}to{opacity:1;filter:blur();transform:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.bWwFiW_header{justify-content:space-between;align-items:center;gap:var(--space-5);row-gap:var(--space-2);margin-bottom:var(--space-5);flex-wrap:wrap;display:flex}.bWwFiW_headerBrand{align-items:center;gap:var(--space-3);flex:260px;min-width:min(260px,100%);display:flex}.bWwFiW_headerLogo{border-radius:var(--radius-control);background:color-mix(in srgb, var(--dsw-alias-brand-primary) 12%, var(--dsw-alias-bg-layer-1));border:1px solid color-mix(in srgb, var(--dsw-alias-brand-primary) 30%, var(--dsw-alias-border-l2));width:36px;height:36px;color:var(--dsw-alias-brand-primary);transition:transform var(--dur-base) var(--ease-spring), background var(--dur-base) var(--ease-spring);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.bWwFiW_headerLogo:hover{background:color-mix(in srgb, var(--dsw-alias-brand-primary) 18%, var(--dsw-alias-bg-layer-1));transform:rotate(-6deg)}.bWwFiW_headerLogo svg{transition:transform var(--dur-slow) var(--ease-spring);display:block}.bWwFiW_headerLogo:hover svg{transform:rotate(6deg)}.bWwFiW_headerTitle{gap:var(--space-1);flex-direction:column;min-width:0;display:flex}.bWwFiW_headerTitle h2{letter-spacing:-.01em;color:var(--dsw-alias-label-primary);white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:16px;font-weight:600;overflow:hidden}.bWwFiW_headerTitle p{font-size:var(--fs-body);color:var(--dsw-alias-label-tertiary);margin:0;line-height:1.5}.bWwFiW_headerActions{gap:var(--space-2);flex-shrink:0;align-items:center;display:flex}.bWwFiW_wsBar{align-items:center;gap:var(--space-2);flex-wrap:wrap;flex-basis:100%;min-width:0;display:flex}.bWwFiW_wsChip{max-width:220px;height:28px;padding:0 var(--space-3);border-radius:var(--radius-control);border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-secondary);font-size:var(--fs-micro);white-space:nowrap;text-overflow:ellipsis;transition:border-color var(--dur-fast) var(--ease-spring), color var(--dur-fast) var(--ease-spring);align-items:center;line-height:1;display:inline-flex;overflow:hidden}.bWwFiW_wsChip.bWwFiW_wsFollow{border-color:color-mix(in srgb, var(--dsw-alias-brand-primary) 38%, var(--dsw-alias-border-l2));background:color-mix(in srgb, var(--dsw-alias-brand-primary) 8%, var(--dsw-alias-bg-layer-1));color:var(--dsw-alias-brand-primary)}.bWwFiW_wsChip.bWwFiW_wsMuted{color:var(--dsw-alias-label-tertiary)}.bWwFiW_wsSelect{max-width:240px}.bWwFiW_dueBadge{height:28px;padding:0 var(--space-3);border-radius:var(--radius-control);border:1px solid color-mix(in srgb, var(--dsw-alias-state-error-primary) 38%, var(--dsw-alias-border-l2));background:color-mix(in srgb, var(--dsw-alias-state-error-primary) 8%, var(--dsw-alias-bg-layer-1));color:var(--dsw-alias-label-primary);font-size:var(--fs-body);font-variant-numeric:tabular-nums;cursor:pointer;transition:background var(--dur-fast) var(--ease-spring), border-color var(--dur-fast) var(--ease-spring), transform 80ms var(--ease-spring);align-items:center;gap:5px;line-height:1;display:inline-flex}.bWwFiW_dueBadge:hover{border-color:var(--dsw-alias-state-error-primary);background:color-mix(in srgb, var(--dsw-alias-state-error-primary) 14%, var(--dsw-alias-bg-layer-1))}.bWwFiW_dueBadge:active{transform:scale(.96)}.bWwFiW_dueDot{background:var(--dsw-alias-state-error-primary);border-radius:50%;flex:none;width:6px;height:6px}.bWwFiW_tabs{align-items:flex-end;gap:var(--space-5);border-bottom:1px solid var(--dsw-alias-border-l2);margin-bottom:var(--space-4);display:flex;position:relative}.bWwFiW_tabs:after{content:"";background:var(--dsw-alias-border-l2);height:1px;position:absolute;bottom:-1px;left:0;right:0}.bWwFiW_tabItem{padding:var(--space-2) 0 var(--space-3);color:var(--dsw-alias-label-tertiary);font-size:var(--fs-ctrl);cursor:pointer;transition:color var(--dur-fast) var(--ease-spring);background:0 0;border:0;font-weight:500;position:relative}.bWwFiW_tabItem:hover{color:var(--dsw-alias-label-secondary)}.bWwFiW_tabItem.bWwFiW_on{color:var(--dsw-alias-label-primary)}.bWwFiW_tabItem.bWwFiW_on:after{content:"";background:var(--dsw-alias-brand-primary);height:2px;animation:bWwFiW_tabUnderline var(--dur-base) var(--ease-spring) both;border-radius:2px 2px 0 0;position:absolute;bottom:-1px;left:0;right:0}@keyframes bWwFiW_tabUnderline{0%{opacity:0;transform:scaleX(.4)}to{opacity:1;transform:scaleX(1)}}.bWwFiW_tabItem small{margin-left:var(--space-2);font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums}.bWwFiW_tabPanel{animation:bWwFiW_fadeSoft var(--dur-base) var(--ease-spring) both}.bWwFiW_drawerScrim{background:color-mix(in srgb, var(--dsw-alias-label-primary) 18%, transparent);border-radius:inherit;z-index:40;animation:bWwFiW_scrimIn var(--dur-base) var(--ease-spring) both;position:absolute;inset:0}@keyframes bWwFiW_scrimIn{0%{opacity:0}to{opacity:1}}.bWwFiW_drawer{background:var(--dsw-alias-bg-base);border-left:1px solid var(--dsw-alias-border-l2);width:100%;max-height:100%;box-shadow:-16px 0 40px -16px color-mix(in srgb, var(--dsw-alias-label-primary) 25%, transparent);z-index:41;animation:bWwFiW_drawerIn var(--dur-slow) var(--ease-spring) both;border-radius:inherit;flex-direction:column;display:flex;position:absolute;top:0;bottom:auto;right:0;overflow:hidden}@keyframes bWwFiW_drawerIn{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:none}}.bWwFiW_drawerHead{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--dsw-alias-border-l2);flex-shrink:0;display:flex}.bWwFiW_drawerTitle{align-items:baseline;gap:var(--space-2);flex:1;min-width:0;display:flex}.bWwFiW_drawerTitle h3{font-size:var(--fs-display);color:var(--dsw-alias-label-primary);margin:0;font-weight:600}.bWwFiW_drawerTitle span{font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;max-width:240px;font-family:ui-monospace,SF Mono,Menlo,monospace;overflow:hidden}.bWwFiW_drawerClose{border-radius:var(--radius-control);width:28px;height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;transition:background var(--dur-fast) var(--ease-spring), color var(--dur-fast) var(--ease-spring), border-color var(--dur-fast) var(--ease-spring);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;display:inline-flex}.bWwFiW_drawerClose:hover{background:var(--dsw-alias-fill-tsp-secondary);border-color:var(--dsw-alias-border-l2);color:var(--dsw-alias-label-primary)}.bWwFiW_drawerClose svg{display:block}.bWwFiW_drawerBody{min-height:0;padding:var(--space-4);scrollbar-width:none;flex:1;overflow-y:auto}.bWwFiW_drawerBody::-webkit-scrollbar{display:none}.bWwFiW_reviewGrid{gap:var(--space-5);grid-template-columns:minmax(0,1fr) minmax(0,1fr);display:grid}@media (width<=720px){.bWwFiW_reviewGrid{grid-template-columns:1fr}}.bWwFiW_button{height:28px;padding:0 var(--space-3);background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-secondary);border:1px solid var(--dsw-alias-border-l2);border-radius:var(--radius-control);cursor:pointer;font-size:var(--fs-body);transition:color var(--dur-fast) var(--ease-spring), border-color var(--dur-fast) var(--ease-spring), background var(--dur-fast) var(--ease-spring), transform 80ms var(--ease-spring);justify-content:center;align-items:center;gap:5px;line-height:1;display:inline-flex}.bWwFiW_button:hover{color:var(--dsw-alias-label-primary);border-color:color-mix(in srgb, var(--dsw-alias-brand-primary) 55%, var(--dsw-alias-border-l2));background:color-mix(in srgb, var(--dsw-alias-brand-primary) 5%, var(--dsw-alias-bg-layer-1))}.bWwFiW_button:active{transform:scale(.96)}.bWwFiW_button:disabled{opacity:.45;cursor:default;transform:none}.bWwFiW_button.bWwFiW_danger{color:var(--dsw-alias-state-error-primary);border-color:color-mix(in srgb, var(--dsw-alias-state-error-primary) 35%, var(--dsw-alias-border-l2))}.bWwFiW_button.bWwFiW_danger:hover{color:var(--dsw-alias-state-error-primary);border-color:var(--dsw-alias-state-error-primary);background:color-mix(in srgb, var(--dsw-alias-state-error-primary) 6%, var(--dsw-alias-bg-layer-1))}.bWwFiW_button.bWwFiW_primary{background:var(--dsw-alias-brand-primary);border-color:var(--dsw-alias-brand-primary);color:var(--dsw-alias-label-primary-foreground)}.bWwFiW_button.bWwFiW_primary:hover{background:color-mix(in srgb, var(--dsw-alias-brand-primary) 88%, transparent);border-color:color-mix(in srgb, var(--dsw-alias-brand-primary) 88%, transparent);color:var(--dsw-alias-label-primary-foreground);filter:brightness(1.05)}.bWwFiW_button.bWwFiW_primary:disabled{background:color-mix(in srgb, var(--dsw-alias-brand-primary) 40%, transparent);opacity:.6;border-color:#0000}.bWwFiW_input{background:var(--dsw-alias-bg-layer-1);height:28px;color:var(--dsw-alias-label-primary);border:1px solid var(--dsw-alias-border-l2);transition:border-color var(--dur-fast) var(--ease-spring), box-shadow var(--dur-fast) var(--ease-spring);border-radius:8px;padding:0 10px;font-size:12px;line-height:1}.bWwFiW_input::placeholder{color:var(--dsw-alias-label-tertiary)}.bWwFiW_input:hover{border-color:color-mix(in srgb, var(--dsw-alias-label-primary) 22%, var(--dsw-alias-border-l2))}.bWwFiW_input:focus-visible{border-color:var(--dsw-alias-brand-primary);box-shadow:0 0 0 3px color-mix(in srgb, var(--dsw-alias-brand-primary) 18%, transparent);outline:none}.bWwFiW_search{flex:1;min-width:120px}select.bWwFiW_input{appearance:none;background-image:linear-gradient(45deg, transparent 50%, var(--dsw-alias-label-tertiary) 50%), linear-gradient(135deg, var(--dsw-alias-label-tertiary) 50%, transparent 50%);transition:background-position var(--dur-fast) var(--ease-spring);background-position:calc(100% - 13px) 12px,calc(100% - 8px) 12px;background-repeat:no-repeat;background-size:5px 5px;padding-right:24px}.bWwFiW_segGroup{background:var(--dsw-alias-fill-tsp-secondary);border-radius:9px;gap:2px;padding:2px;display:inline-flex;position:relative}.bWwFiW_segItem{height:24px;color:var(--dsw-alias-label-tertiary);cursor:pointer;font-size:var(--fs-body);transition:color var(--dur-fast) var(--ease-spring), transform 80ms var(--ease-spring);z-index:1;white-space:nowrap;background:0 0;border:0;border-radius:7px;align-items:center;padding:0 12px;line-height:1;display:inline-flex;position:relative}.bWwFiW_segItem:hover{color:var(--dsw-alias-label-secondary)}.bWwFiW_segItem:active{transform:scale(.96)}.bWwFiW_segItem.bWwFiW_on{color:var(--dsw-alias-label-primary)}.bWwFiW_segIndicator{z-index:0;background:var(--dsw-alias-bg-layer-1);box-shadow:0 1px 2px color-mix(in srgb, var(--dsw-alias-label-primary) 10%, transparent), inset 0 0 0 1px color-mix(in srgb, var(--dsw-alias-border-l2) 60%, transparent);transition:left var(--dur-base) var(--ease-spring), width var(--dur-base) var(--ease-spring), opacity var(--dur-fast) var(--ease-spring);pointer-events:none;border-radius:7px;position:absolute;top:2px;bottom:2px}.bWwFiW_segScope{border-radius:10px;padding:3px}.bWwFiW_layout{gap:var(--space-5);margin-top:var(--space-5);grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);align-items:start;display:grid}.bWwFiW_mainCol{gap:var(--space-5);flex-direction:column;min-width:0;display:flex}.bWwFiW_sideCol{gap:var(--space-5);min-width:0;top:var(--space-3);flex-direction:column;display:flex;position:sticky}@media (width<=960px){.bWwFiW_layout{gap:var(--space-4);grid-template-columns:1fr}.bWwFiW_sideCol{position:static}}.bWwFiW_toolbarRow{gap:var(--space-2);margin-bottom:var(--space-2);flex-wrap:wrap;align-items:center;display:flex}.bWwFiW_toolbarRow .bWwFiW_search{flex:1;min-width:180px}.bWwFiW_chipRow{gap:var(--space-1);flex-wrap:wrap;display:flex}.bWwFiW_toolbarRow+.bWwFiW_chipRow{margin-bottom:var(--space-3)}.bWwFiW_chip{padding:3px var(--space-3);border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-tertiary);font-size:var(--fs-micro);letter-spacing:.02em;cursor:pointer;transition:background var(--dur-fast) var(--ease-spring), border-color var(--dur-fast) var(--ease-spring), color var(--dur-fast) var(--ease-spring);background:0 0;border-radius:999px}.bWwFiW_chip:hover{background:color-mix(in srgb, var(--dsw-alias-brand-primary) 6%, var(--dsw-alias-bg-layer-1));color:var(--dsw-alias-label-secondary)}.bWwFiW_chipOn{background:color-mix(in srgb, var(--dsw-alias-brand-primary) 14%, var(--dsw-alias-bg-layer-1));border-color:color-mix(in srgb, var(--dsw-alias-brand-primary) 45%, var(--dsw-alias-border-l2));color:var(--dsw-alias-label-primary)}.bWwFiW_chipOn:hover{background:color-mix(in srgb, var(--dsw-alias-brand-primary) 20%, var(--dsw-alias-bg-layer-1))}.bWwFiW_exportWrap{display:inline-flex;position:relative}.bWwFiW_exportCaret{opacity:.7;transition:transform var(--dur-fast) var(--ease-spring);margin-left:4px;font-size:9px}.bWwFiW_exportWrap button[aria-expanded=true] .bWwFiW_exportCaret{transform:rotate(180deg)}.bWwFiW_exportMenu{background:var(--dsw-alias-bg-base);border:1px solid var(--dsw-alias-border-l2);min-width:220px;box-shadow:0 8px 24px -10px color-mix(in srgb, var(--dsw-alias-label-primary) 30%, transparent);z-index:30;animation:bWwFiW_drawerIn var(--dur-base) var(--ease-spring) both;border-radius:10px;padding:4px;position:absolute;top:calc(100% + 4px);right:0}.bWwFiW_exportItem{color:var(--dsw-alias-label-primary);transition:background var(--dur-fast) var(--ease-spring);border-radius:7px;flex-direction:column;gap:2px;padding:8px 10px;text-decoration:none;display:flex}.bWwFiW_exportItem:hover{background:color-mix(in srgb, var(--dsw-alias-brand-primary) 8%, var(--dsw-alias-bg-layer-1))}.bWwFiW_exportItemLabel{font-size:13px;font-weight:500;line-height:1.2}.bWwFiW_exportItemHint{color:var(--dsw-alias-label-tertiary);font-size:11px;line-height:1.3}.bWwFiW_batchBar{bottom:var(--space-3);z-index:5;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) 88%, transparent);-webkit-backdrop-filter:blur(10px);border:1px solid color-mix(in srgb, var(--dsw-alias-brand-primary) 40%, var(--dsw-alias-border-l2));border-radius:var(--radius-card);box-shadow:0 8px 24px -12px color-mix(in srgb, var(--dsw-alias-label-primary) 30%, transparent);animation:bWwFiW_barUp var(--dur-base) var(--ease-spring) both;flex-wrap:wrap;align-items:center;display:flex;position:sticky}@keyframes bWwFiW_barUp{0%{opacity:0;transform:translateY(12px)scale(.98)}to{opacity:1;transform:none}}.bWwFiW_batchBar>span{color:var(--dsw-alias-label-primary);font-size:var(--fs-body);font-variant-numeric:tabular-nums;margin-right:auto}.bWwFiW_batchBar .bWwFiW_button{height:26px;padding:0 var(--space-2);font-size:var(--fs-micro)}.bWwFiW_itemList{border-top:1px solid var(--dsw-alias-border-l1);flex-direction:column;display:flex}.bWwFiW_item{gap:var(--space-3);padding:var(--space-3) var(--space-2);border-bottom:1px solid var(--dsw-alias-border-l1);border-radius:var(--radius-control);transition:background var(--dur-fast) var(--ease-spring);animation:bWwFiW_itemIn var(--dur-base) var(--ease-spring) both;grid-template-columns:20px minmax(0,1fr) auto;align-items:start;display:grid}.bWwFiW_itemList>.bWwFiW_item:last-child{border-bottom:0}@keyframes bWwFiW_itemIn{0%{opacity:0;transform:translateY(3px)}to{opacity:1;transform:none}}.bWwFiW_item:hover{background:var(--dsw-alias-bg-layer-1)}.bWwFiW_item.bWwFiW_selected{background:color-mix(in srgb, var(--dsw-alias-brand-primary) 6%, var(--dsw-alias-bg-layer-1));box-shadow:inset 2px 0 0 var(--dsw-alias-brand-primary)}.bWwFiW_itemCheck{width:14px;height:14px;accent-color:var(--dsw-alias-brand-primary);cursor:pointer;transition:transform 80ms var(--ease-spring);margin-top:3px}.bWwFiW_itemCheck:active{transform:scale(.85)}.bWwFiW_itemBody{flex-direction:column;gap:4px;min-width:0;display:flex}.bWwFiW_itemTags{gap:var(--space-1);flex-wrap:wrap;align-items:center;display:flex}.bWwFiW_itemStamp{font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);white-space:nowrap;margin-left:auto}.bWwFiW_content{white-space:pre-wrap;word-break:break-word;color:var(--dsw-alias-label-primary);font-size:var(--fs-body);-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.6;display:-webkit-box;overflow:hidden}.bWwFiW_itemMeta{gap:var(--space-3);font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);flex-wrap:wrap;align-items:center;display:flex}.bWwFiW_itemMeta b{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;font-weight:500}.bWwFiW_itemOps{gap:var(--space-1);opacity:0;visibility:hidden;transition:opacity var(--dur-fast) var(--ease-spring), visibility var(--dur-fast) var(--ease-spring);flex-shrink:0;align-items:center;display:flex}.bWwFiW_item:hover .bWwFiW_itemOps,.bWwFiW_item.bWwFiW_selected .bWwFiW_itemOps,.bWwFiW_item:focus-within .bWwFiW_itemOps{opacity:1;visibility:visible}.bWwFiW_itemOps .bWwFiW_button{height:24px;padding:0 var(--space-2);font-size:var(--fs-micro)}@media (hover:none){.bWwFiW_itemOps{opacity:1;visibility:visible}}@media (width<=720px){.bWwFiW_item{grid-template-columns:20px minmax(0,1fr)}.bWwFiW_itemOps{grid-column:2;justify-content:flex-end}}.bWwFiW_pill{height:18px;font-size:var(--fs-tag);background:color-mix(in srgb, var(--dsw-alias-label-tertiary) 14%, transparent);color:var(--dsw-alias-label-secondary);white-space:nowrap;animation:bWwFiW_pillIn var(--dur-base) var(--ease-spring) both;transition:transform var(--dur-fast) var(--ease-spring), background var(--dur-fast) var(--ease-spring);border-radius:999px;align-items:center;padding:0 7px;line-height:1;display:inline-flex}@keyframes bWwFiW_pillIn{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:none}}.bWwFiW_pill:hover{transform:translateY(-1px)}.bWwFiW_pill.bWwFiW_kind{background:color-mix(in srgb, var(--dsw-alias-brand-primary) 10%, transparent);color:var(--dsw-alias-brand-primary)}.bWwFiW_pill.bWwFiW_statusActive{background:color-mix(in srgb, var(--dsw-alias-state-success-primary) 12%, transparent);color:var(--dsw-alias-state-success-primary)}.bWwFiW_pill.bWwFiW_statusArchived{background:color-mix(in srgb, var(--dsw-alias-state-warn-primary) 12%, transparent);color:var(--dsw-alias-state-warn-primary)}.bWwFiW_pill.bWwFiW_statusForgotten{background:color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent);color:var(--dsw-alias-state-error-primary)}.bWwFiW_pill.bWwFiW_outcomeSuccess{background:color-mix(in srgb, var(--dsw-alias-state-success-primary) 12%, transparent);color:var(--dsw-alias-state-success-primary)}.bWwFiW_pill.bWwFiW_outcomeFailure{background:color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent);color:var(--dsw-alias-state-error-primary)}.bWwFiW_pill.bWwFiW_redacted{background:color-mix(in srgb, var(--dsw-alias-state-warn-primary) 12%, transparent);color:var(--dsw-alias-state-warn-primary)}.bWwFiW_expand{border-top:1px dashed var(--dsw-alias-border-l2);animation:bWwFiW_expandIn var(--dur-slow) var(--ease-spring) both;grid-column:1/-1;margin-top:4px;padding-top:10px;overflow:hidden}@keyframes bWwFiW_expandIn{0%{opacity:0;max-height:0;transform:translateY(-4px)}to{opacity:1;max-height:1200px;transform:none}}.bWwFiW_expandLoading{color:var(--dsw-alias-label-tertiary);animation:bWwFiW_fadeSoft var(--dur-base) var(--ease-spring) both;padding:6px 0;font-size:12px}@keyframes bWwFiW_fadeSoft{0%{opacity:0}to{opacity:1}}.bWwFiW_attrGrid{grid-template-columns:max-content 1fr;align-items:center;gap:6px 14px;font-size:12px;display:grid}.bWwFiW_attrGrid>dt{color:var(--dsw-alias-label-tertiary);margin:0;font-size:11px}.bWwFiW_attrGrid>dd{color:var(--dsw-alias-label-primary);flex-wrap:wrap;align-items:center;gap:6px;margin:0;display:flex}.bWwFiW_relBlock{margin-top:10px}.bWwFiW_relBlock>h5{color:var(--dsw-alias-label-tertiary);letter-spacing:.04em;text-transform:uppercase;margin:0 0 4px;font-size:11px;font-weight:500}.bWwFiW_relChips{flex-wrap:wrap;gap:4px;display:flex}.bWwFiW_relChip{border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-base);text-overflow:ellipsis;white-space:nowrap;border-radius:4px;max-width:100%;padding:2px 6px;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:10px;overflow:hidden}.bWwFiW_timeline{margin:var(--space-2) 0 0;padding:0 0 0 var(--space-3);list-style:none;position:relative}.bWwFiW_timeline:before{background:var(--dsw-alias-border-l2);content:"";width:1px;position:absolute;top:6px;bottom:6px;left:3px}.bWwFiW_timeline li{padding:var(--space-1) 0 var(--space-1) var(--space-3);font-size:var(--fs-micro);color:var(--dsw-alias-label-secondary);line-height:1.55;position:relative}.bWwFiW_timeline li:before{background:var(--dsw-alias-bg-layer-1);border:1px solid var(--dsw-alias-brand-primary);content:"";border-radius:50%;width:6px;height:6px;position:absolute;top:8px;left:-10px}.bWwFiW_editForm{flex-direction:column;gap:10px;display:flex}.bWwFiW_editForm .bWwFiW_input{box-sizing:border-box;width:100%}.bWwFiW_editForm textarea.bWwFiW_input{resize:vertical;height:auto;min-height:64px;padding:8px 10px;line-height:1.55}.bWwFiW_fieldLabel{color:var(--dsw-alias-label-secondary);margin-bottom:4px;font-size:11px;display:block}.bWwFiW_fieldRow{flex-wrap:wrap;align-items:flex-start;gap:12px;display:flex}.bWwFiW_fieldRow .bWwFiW_fieldLabel{flex:1;min-width:120px}.bWwFiW_fieldRow input[type=range]{accent-color:var(--dsw-alias-brand-primary);width:100%}.bWwFiW_modalFoot{justify-content:flex-end;gap:8px;margin-top:6px;display:flex}.bWwFiW_pager{gap:var(--space-3);margin-top:var(--space-4);padding:var(--space-1) 0;color:var(--dsw-alias-label-secondary);font-size:var(--fs-body);font-variant-numeric:tabular-nums;animation:bWwFiW_fadeSoft var(--dur-base) var(--ease-spring) both;justify-content:center;align-items:center;display:flex}.bWwFiW_pager .bWwFiW_button{width:28px;transition:transform var(--dur-fast) var(--ease-spring), opacity var(--dur-fast) var(--ease-spring), background var(--dur-fast) var(--ease-spring);padding:0}.bWwFiW_pager .bWwFiW_button:not(:disabled):hover{transform:translateY(-1px)}.bWwFiW_pager .bWwFiW_button:disabled{opacity:.3}.bWwFiW_skeletonList{border-top:1px solid var(--dsw-alias-border-l1);flex-direction:column;display:flex}.bWwFiW_skeleton{padding:var(--space-3) var(--space-2);border-bottom:1px solid var(--dsw-alias-border-l1);gap:var(--space-2);animation:bWwFiW_itemIn var(--dur-base) var(--ease-spring) both;flex-direction:column;display:flex}.bWwFiW_skeleton i{background:linear-gradient(90deg, color-mix(in srgb, var(--dsw-alias-label-tertiary) 10%, transparent) 25%, color-mix(in srgb, var(--dsw-alias-label-tertiary) 22%, transparent) 50%, color-mix(in srgb, var(--dsw-alias-label-tertiary) 10%, transparent) 75%);background-size:200% 100%;border-radius:4px;height:10px;animation:1.6s linear infinite bWwFiW_shimmer;display:block}.bWwFiW_skeleton i:first-child{width:30%}.bWwFiW_skeleton i:nth-child(2){width:80%;animation-delay:80ms}.bWwFiW_skeleton i:last-child{width:55%;animation-delay:.16s}@keyframes bWwFiW_shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.bWwFiW_empty{text-align:center;color:var(--dsw-alias-label-secondary);font-size:var(--fs-ctrl);animation:bWwFiW_fadeSoft var(--dur-slow) var(--ease-spring) both;padding:56px 16px}.bWwFiW_empty b{color:var(--dsw-alias-label-primary);font-size:var(--fs-display);margin-bottom:var(--space-1);font-weight:500;display:block}.bWwFiW_empty span{color:var(--dsw-alias-label-tertiary);font-size:var(--fs-body)}.bWwFiW_empty:before{content:"";border:1px solid color-mix(in srgb, var(--dsw-alias-brand-primary) 35%, var(--dsw-alias-border-l2));background:linear-gradient(135deg, color-mix(in srgb, var(--dsw-alias-brand-primary) 18%, transparent), transparent 70%);border-radius:10px;width:36px;height:36px;margin:0 auto 14px;display:block}.bWwFiW_panelCard{background:var(--dsw-alias-bg-layer-1);border:1px solid var(--dsw-alias-border-l2);border-radius:var(--radius-card);padding:var(--space-4);animation:bWwFiW_cardIn var(--dur-slow) var(--ease-spring) both;position:relative}@keyframes bWwFiW_cardIn{0%{opacity:0;transform:scale(.99)}to{opacity:1;transform:none}}.bWwFiW_panelCard+.bWwFiW_panelCard{animation-delay:60ms}.bWwFiW_benchBar{gap:var(--space-2);margin-bottom:var(--space-3);display:flex}.bWwFiW_benchBar .bWwFiW_search{flex:1;min-width:0}.bWwFiW_benchBar .bWwFiW_button{flex:none}.bWwFiW_benchMeta{gap:var(--space-3);margin-bottom:var(--space-2);color:var(--dsw-alias-label-tertiary);font-size:var(--fs-micro);flex-wrap:wrap;align-items:baseline;display:flex}.bWwFiW_degradedNote{color:var(--dsw-alias-state-warn-primary)}.bWwFiW_benchEmpty{color:var(--dsw-alias-label-tertiary);font-size:var(--fs-body);padding:var(--space-2) 0}.bWwFiW_benchList{margin-top:var(--space-2);border-top:1px solid var(--dsw-alias-border-l1);flex-direction:column;display:flex}.bWwFiW_benchRow{padding:var(--space-3) var(--space-2);border-bottom:1px solid var(--dsw-alias-border-l1);transition:background var(--dur-fast) var(--ease-spring);animation:bWwFiW_itemIn var(--dur-base) var(--ease-spring) both}.bWwFiW_benchList>.bWwFiW_benchRow:last-child{border-bottom:0}.bWwFiW_benchRow:hover{background:var(--dsw-alias-bg-layer-1)}.bWwFiW_benchHead{gap:var(--space-2);flex-wrap:wrap;align-items:center;display:flex}.bWwFiW_viaChip{color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-fill-tsp-secondary);font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:var(--fs-tag);border-radius:4px;height:16px;padding:0 6px;line-height:16px}.bWwFiW_benchScore{color:var(--dsw-alias-label-tertiary);font-size:var(--fs-micro);font-variant-numeric:tabular-nums;margin-left:auto}.bWwFiW_benchContent{margin:var(--space-2) 0;color:var(--dsw-alias-label-primary);font-size:var(--fs-body);word-break:break-word;-webkit-line-clamp:3;-webkit-box-orient:vertical;line-height:1.55;display:-webkit-box;overflow:hidden}.bWwFiW_benchId{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.bWwFiW_mapWrap{gap:var(--space-3);flex-direction:column;display:flex}.bWwFiW_map{background:color-mix(in srgb, var(--dsw-alias-bg-base) 70%, transparent);border-radius:var(--radius-control);border:1px solid var(--dsw-alias-border-l2);user-select:none;width:100%;height:auto;display:block}.bWwFiW_node{cursor:grab;transition:transform var(--dur-fast) var(--ease-spring)}.bWwFiW_node:active{cursor:grabbing}.bWwFiW_tooltip{pointer-events:none}.bWwFiW_legend{gap:var(--space-3);font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);flex-wrap:wrap;align-items:center;display:flex}.bWwFiW_legendItem{align-items:center;gap:var(--space-1);display:inline-flex}.bWwFiW_legendDot{border-radius:50%;width:8px;height:8px;display:inline-block}.bWwFiW_node,.bWwFiW_edgeFade{animation:bWwFiW_corridorFadeIn var(--dur-slow) var(--ease-spring) backwards}@keyframes bWwFiW_corridorFadeIn{0%{opacity:0;filter:blur(2px)}to{opacity:1;filter:none}}.bWwFiW_progressBar{background:color-mix(in srgb, var(--dsw-alias-label-tertiary) 18%, transparent);border-radius:2px;height:4px;overflow:hidden}.bWwFiW_progressBar i{background:var(--dsw-alias-brand-primary);height:100%;transition:width var(--dur-slow) var(--ease-out);border-radius:2px;display:block}.bWwFiW_telePrivacy{align-items:center;gap:var(--space-1);border-radius:var(--radius-control);font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);cursor:help;transition:background var(--dur-fast) var(--ease-spring), color var(--dur-fast) var(--ease-spring), border-color var(--dur-fast) var(--ease-spring);background:0 0;border:1px solid #0000;outline:none;align-self:center;padding:4px 8px;display:inline-flex;position:relative}.bWwFiW_telePrivacy:hover,.bWwFiW_telePrivacy:focus-visible{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-fill-tsp-secondary);border-color:var(--dsw-alias-border-l2)}.bWwFiW_telePrivacy svg{opacity:.85;flex:none}.bWwFiW_telePrivacyHint{white-space:nowrap}.bWwFiW_telePrivacyTip{min-width:260px;max-width:320px;padding:var(--space-2) var(--space-3);background:var(--dsw-alias-bg-layer-1);border:1px solid var(--dsw-alias-border-l2);border-radius:var(--radius-control);box-shadow:0 6px 18px -8px color-mix(in srgb, var(--dsw-alias-label-primary) 24%, transparent);font-size:var(--fs-body);color:var(--dsw-alias-label-primary);white-space:normal;pointer-events:none;opacity:0;transition:opacity var(--dur-fast) var(--ease-spring), transform var(--dur-fast) var(--ease-spring);z-index:5;text-align:left;line-height:1.5;position:absolute;top:calc(100% + 6px);right:0;transform:translateY(-2px)}.bWwFiW_telePrivacy:hover .bWwFiW_telePrivacyTip,.bWwFiW_telePrivacy:focus-visible .bWwFiW_telePrivacyTip{opacity:1;transform:translateY(0)}.bWwFiW_timeline li{animation:bWwFiW_itemIn var(--dur-base) var(--ease-spring) both}.bWwFiW_timeline li:nth-child(2){animation-delay:40ms}.bWwFiW_timeline li:nth-child(3){animation-delay:80ms}.bWwFiW_timeline li:nth-child(4){animation-delay:.12s}.bWwFiW_timeline li:nth-child(5){animation-delay:.16s}.bWwFiW_timeline li:nth-child(n+6){animation-delay:.2s}.bWwFiW_tourProposal{gap:var(--space-3);flex-direction:column;display:flex}.bWwFiW_tourGreeting{font-size:var(--fs-body);color:var(--dsw-alias-label-secondary);margin:0;line-height:1.55}.bWwFiW_tourStops{gap:var(--space-2);counter-reset:tour;flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.bWwFiW_tourStops li{animation:bWwFiW_tourItemIn var(--dur-base) var(--ease-spring) backwards}.bWwFiW_tourStops li:nth-child(2){animation-delay:40ms}.bWwFiW_tourStops li:nth-child(3){animation-delay:80ms}.bWwFiW_tourStops li:nth-child(4){animation-delay:.12s}.bWwFiW_tourStops li:nth-child(n+5){animation-delay:.16s}.bWwFiW_tourStop{align-items:center;gap:var(--space-2);width:100%;padding:var(--space-2);border-radius:var(--radius-control);color:inherit;text-align:left;cursor:pointer;transition:background var(--dur-fast) var(--ease-spring), border-color var(--dur-fast) var(--ease-spring), transform var(--dur-fast) var(--ease-spring);background:0 0;border:1px solid #0000;display:flex}.bWwFiW_tourStop:hover{background:color-mix(in srgb, var(--dsw-alias-brand-primary) 6%, var(--dsw-alias-bg-layer-1));border-color:color-mix(in srgb, var(--dsw-alias-brand-primary) 28%, var(--dsw-alias-border-l2));transform:translate(2px)}.bWwFiW_tourStop:active{transform:translate(2px)scale(.99)}@keyframes bWwFiW_tourItemIn{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}.bWwFiW_tourStopIndex{width:20px;height:20px;font-size:var(--fs-micro);color:var(--dsw-alias-label-primary-foreground);background:var(--dsw-alias-brand-primary);font-variant-numeric:tabular-nums;border-radius:50%;flex:none;justify-content:center;align-items:center;font-weight:600;display:inline-flex}.bWwFiW_tourStopBody{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.bWwFiW_tourStopKind{font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);letter-spacing:.04em;text-transform:uppercase}.bWwFiW_tourStopText{font-size:var(--fs-body);color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;line-height:1.4;overflow:hidden}.bWwFiW_tourHint{margin:var(--space-1) 0 0;font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);line-height:1.4}.bWwFiW_refurb{gap:var(--space-3);flex-direction:column;display:flex}.bWwFiW_refurbHead{justify-content:space-between;align-items:center;gap:var(--space-2);padding-bottom:var(--space-2);display:flex}.bWwFiW_refurbHead .bWwFiW_button{height:24px;padding:0 var(--space-2);font-size:var(--fs-micro)}.bWwFiW_refurbCount{font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums}.bWwFiW_refurbList{border-top:1px solid var(--dsw-alias-border-l1);animation:bWwFiW_refurbReflow var(--dur-slow) var(--ease-spring) backwards;flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.bWwFiW_refurbItem{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-2);border-bottom:1px solid var(--dsw-alias-border-l1);font-size:var(--fs-body);color:var(--dsw-alias-label-secondary);animation:bWwFiW_refurbItemIn var(--dur-base) var(--ease-spring) backwards;flex-wrap:wrap;display:flex}.bWwFiW_refurbList>.bWwFiW_refurbItem:last-child{border-bottom:0}.bWwFiW_refurbItem:nth-child(2){animation-delay:40ms}.bWwFiW_refurbItem:nth-child(3){animation-delay:80ms}.bWwFiW_refurbItem:nth-child(4){animation-delay:.12s}.bWwFiW_refurbItem:nth-child(n+5){animation-delay:.16s}@keyframes bWwFiW_refurbReflow{0%{opacity:0;filter:blur(2px)}to{opacity:1;filter:none}}@keyframes bWwFiW_refurbItemIn{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:none}}.bWwFiW_refurbBadge{padding:2px var(--space-2);font-size:var(--fs-micro);letter-spacing:.04em;background:color-mix(in srgb, var(--dsw-alias-brand-primary) 14%, var(--dsw-alias-bg-layer-1));border:1px solid color-mix(in srgb, var(--dsw-alias-brand-primary) 30%, var(--dsw-alias-border-l2));color:var(--dsw-alias-label-primary);cursor:pointer;transition:background var(--dur-fast) var(--ease-spring);border-radius:999px;flex:none;font-weight:600}.bWwFiW_refurbBadge:hover{background:color-mix(in srgb, var(--dsw-alias-brand-primary) 22%, var(--dsw-alias-bg-layer-1))}.bWwFiW_refurbReason{text-overflow:ellipsis;-webkit-line-clamp:2;-webkit-box-orient:vertical;flex:1;min-width:120px;line-height:1.45;display:-webkit-box;overflow:hidden}.bWwFiW_refurbConfidence{font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;flex:none}.bWwFiW_refurbExec{height:24px;padding:0 var(--space-2);font-size:var(--fs-micro);flex:none;line-height:1}.bWwFiW_backfill{gap:var(--space-3);flex-direction:column;display:flex}.bWwFiW_backfillIntro{font-size:var(--fs-body);color:var(--dsw-alias-label-secondary);margin:0;line-height:1.6}.bWwFiW_backfillRules{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(180px,1fr));display:grid}.bWwFiW_backfillRule{gap:var(--space-1);font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);flex-direction:column;display:flex}.bWwFiW_backfillToggles{gap:var(--space-4);padding-top:var(--space-2);flex-wrap:wrap;display:flex}.bWwFiW_backfillToggle{align-items:center;gap:var(--space-2);font-size:var(--fs-body);color:var(--dsw-alias-label-secondary);cursor:pointer;display:inline-flex}.bWwFiW_backfillEstimate{gap:var(--space-2);padding-top:var(--space-4);border-top:1px solid var(--dsw-alias-border-l1);flex-direction:column;display:flex}.bWwFiW_backfillNumbers{gap:var(--space-5);flex-wrap:wrap;display:flex}.bWwFiW_backfillMetric{font-size:var(--fs-body);color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums}.bWwFiW_backfillMuted{font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);line-height:1.5}.bWwFiW_backfillActions{gap:var(--space-2);padding-top:var(--space-4);border-top:1px solid var(--dsw-alias-border-l1);flex-wrap:wrap;display:flex}.bWwFiW_backfillProgress{gap:var(--space-2);flex-direction:column;display:flex}.bWwFiW_backfillProgressHead{justify-content:space-between;align-items:baseline;gap:var(--space-2);font-size:var(--fs-micro);color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;display:flex}.bWwFiW_backfillMeta{gap:var(--space-4);font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;flex-wrap:wrap;display:flex}.bWwFiW_backfillFailures{font-size:var(--fs-micro);color:var(--dsw-alias-label-secondary);flex-direction:column;gap:2px;margin:0;padding:0;font-family:ui-monospace,SF Mono,Menlo,monospace;list-style:none;display:flex}.bWwFiW_jev{gap:var(--space-3);flex-direction:column;display:flex}.bWwFiW_jevIntro{font-size:var(--fs-body);color:var(--dsw-alias-label-secondary);margin:0;line-height:1.6}.bWwFiW_jevToggleRow{align-items:center;gap:var(--space-4);padding-top:var(--space-2);flex-wrap:wrap;display:flex}.bWwFiW_jevToggle{align-items:center;gap:var(--space-2);font-size:var(--fs-body);color:var(--dsw-alias-label-secondary);cursor:pointer;display:inline-flex}.bWwFiW_jevStatus{font-size:var(--fs-micro);color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-weight:600}.bWwFiW_jevForm{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));display:grid}.bWwFiW_jevField{gap:var(--space-1);font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);flex-direction:column;display:flex}.bWwFiW_jevMuted{font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);line-height:1.5}.bWwFiW_jevActions{gap:var(--space-2);padding-top:var(--space-4);border-top:1px solid var(--dsw-alias-border-l1);flex-wrap:wrap;display:flex}.bWwFiW_jevObs{gap:var(--space-2);padding-top:var(--space-4);border-top:1px solid var(--dsw-alias-border-l1);flex-direction:column;display:flex}.bWwFiW_jevObsHead{font-size:var(--fs-micro);color:var(--dsw-alias-label-secondary);font-weight:600}.bWwFiW_jevObsItem{align-items:baseline;gap:var(--space-3);font-size:var(--fs-micro);color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;flex-wrap:wrap;display:flex}.bWwFiW_jevObsTime{color:var(--dsw-alias-label-tertiary)}.bWwFiW_jevObsBadge{padding:0 var(--space-2);background:color-mix(in srgb, var(--dsw-alias-label-primary) 8%, transparent);color:var(--dsw-alias-label-primary);border-radius:3px;font-weight:600}.bWwFiW_jevObsBadgeGood{background:color-mix(in srgb, var(--dsw-alias-state-success-primary,#2da44e) 14%, transparent);color:var(--dsw-alias-state-success-primary,#2da44e)}.bWwFiW_jevObsBadgeWarn{background:color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent);color:var(--dsw-alias-state-error-primary)}.bWwFiW_jevObsError{color:var(--dsw-alias-state-error-primary);word-break:break-all}.bWwFiW_toastViewport{top:var(--space-4);right:var(--space-4);z-index:9999;gap:var(--space-2);pointer-events:none;flex-direction:column;max-width:min(360px,100vw - 32px);display:flex;position:fixed}.bWwFiW_toast{align-items:flex-start;gap:var(--space-2);padding:var(--space-3);border-radius:var(--radius-card);background:var(--dsw-alias-bg-layer-1);border:1px solid var(--dsw-alias-border-l2);box-shadow:0 6px 18px -8px color-mix(in srgb, var(--dsw-alias-label-primary) 24%, transparent);font-size:var(--fs-body);color:var(--dsw-alias-label-primary);pointer-events:auto;animation:bWwFiW_toastIn var(--dur-base) var(--ease-spring) both;line-height:1.5;display:flex}.bWwFiW_toastBody{word-break:break-word;flex:1;min-width:0}.bWwFiW_toastDismiss{color:var(--dsw-alias-label-tertiary);cursor:pointer;padding:0 var(--space-1);transition:color var(--dur-fast) var(--ease-spring);background:0 0;border:none;font-size:16px;line-height:1}.bWwFiW_toastDismiss:hover{color:var(--dsw-alias-label-primary)}.bWwFiW_toastInfo{border-left:3px solid var(--dsw-alias-brand-primary)}.bWwFiW_toastSuccess{border-left:3px solid color-mix(in srgb, var(--dsw-alias-state-success-primary,#2da44e) 80%, var(--dsw-alias-border-l2));background:color-mix(in srgb, var(--dsw-alias-state-success-primary,#2da44e) 6%, var(--dsw-alias-bg-layer-1))}.bWwFiW_toastError{border-left:3px solid color-mix(in srgb, var(--dsw-alias-state-error-primary) 80%, var(--dsw-alias-border-l2));background:color-mix(in srgb, var(--dsw-alias-state-error-primary) 6%, var(--dsw-alias-bg-layer-1))}.bWwFiW_toastWarning{border-left:3px solid color-mix(in srgb, #d4a017 80%, var(--dsw-alias-border-l2));background:color-mix(in srgb, #d4a017 6%, var(--dsw-alias-bg-layer-1))}@keyframes bWwFiW_toastIn{0%{opacity:0;transform:translate(8px)scale(.98)}to{opacity:1;transform:none}}.bWwFiW_section{min-width:0}.bWwFiW_sectionHead{align-items:baseline;gap:var(--space-3);margin-bottom:var(--space-3);display:flex}.bWwFiW_sectionTitle{font-size:var(--fs-ctrl);color:var(--dsw-alias-label-primary);margin:0;font-weight:600}.bWwFiW_sectionHint{font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);line-height:1.4}.bWwFiW_sectionAction{align-self:center;margin-left:auto}.bWwFiW_hero{gap:var(--space-5);grid-template-columns:minmax(0,1fr) auto;align-items:center;display:grid}.bWwFiW_heroMetrics{gap:var(--space-6);flex-wrap:wrap;min-width:0;display:flex}.bWwFiW_heroSide{align-items:center;gap:var(--space-4);min-width:0;display:flex}.bWwFiW_heroFoot{justify-content:space-between;align-items:center;gap:var(--space-3);margin-top:var(--space-4);padding-top:var(--space-3);border-top:1px solid var(--dsw-alias-border-l1);flex-wrap:wrap;display:flex}.bWwFiW_metric{flex-direction:column;gap:2px;min-width:0;display:flex}.bWwFiW_metricLabel{font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);white-space:nowrap}.bWwFiW_metricValue{letter-spacing:-.02em;color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-size:28px;font-weight:600;line-height:1.1}.bWwFiW_metricValueSecondary{font-size:20px}.bWwFiW_metricTail{font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);white-space:nowrap}.bWwFiW_ring{flex-shrink:0;width:56px;height:56px;position:relative}.bWwFiW_ring svg{display:block;transform:rotate(-90deg)}.bWwFiW_ring b{font-size:var(--fs-display);font-variant-numeric:tabular-nums;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}:root{--room-fact:#3b6ef5;--room-preference:#a45cf0;--room-decision:#16a394;--room-episode:#e08a2e;--room-skill:#d94f8a}@media (prefers-color-scheme:dark){:root{--room-fact:#6b96ff;--room-preference:#bb86f7;--room-decision:#3fc7b5;--room-episode:#f0a95a;--room-skill:#f077a9}}.bWwFiW_pill.bWwFiW_roomFact{background:color-mix(in srgb, var(--room-fact) 12%, transparent);color:var(--room-fact)}.bWwFiW_pill.bWwFiW_roomPreference{background:color-mix(in srgb, var(--room-preference) 12%, transparent);color:var(--room-preference)}.bWwFiW_pill.bWwFiW_roomDecision{background:color-mix(in srgb, var(--room-decision) 12%, transparent);color:var(--room-decision)}.bWwFiW_pill.bWwFiW_roomEpisode{background:color-mix(in srgb, var(--room-episode) 12%, transparent);color:var(--room-episode)}.bWwFiW_pill.bWwFiW_roomSkill{background:color-mix(in srgb, var(--room-skill) 12%, transparent);color:var(--room-skill)}.bWwFiW_roomList{flex-direction:column;display:flex}.bWwFiW_roomRow{gap:var(--space-3);padding:var(--space-2) 0;font-size:var(--fs-body);grid-template-columns:10px minmax(0,1fr) auto;align-items:center;display:grid}.bWwFiW_roomSwatch{background:var(--room-fact);border-radius:3px;width:10px;height:10px}.bWwFiW_roomSwatch.bWwFiW_roomFact{background:var(--room-fact)}.bWwFiW_roomSwatch.bWwFiW_roomPreference{background:var(--room-preference)}.bWwFiW_roomSwatch.bWwFiW_roomDecision{background:var(--room-decision)}.bWwFiW_roomSwatch.bWwFiW_roomEpisode{background:var(--room-episode)}.bWwFiW_roomSwatch.bWwFiW_roomSkill{background:var(--room-skill)}.bWwFiW_roomCount{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums}.bWwFiW_logToolbar{align-items:center;gap:var(--space-3);margin-bottom:var(--space-3);flex-wrap:wrap;display:flex}.bWwFiW_logToolbar .bWwFiW_segGroup{margin-left:auto}.bWwFiW_logCounts{align-items:center;gap:var(--space-4);font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);display:flex}.bWwFiW_logCounts>span{align-items:center;gap:6px;display:inline-flex}.bWwFiW_logCounts b{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-weight:600}.bWwFiW_logDot{background:var(--dsw-alias-label-tertiary);border-radius:50%;flex:none;width:6px;height:6px}.bWwFiW_logDotWrite{background:var(--dsw-alias-brand-primary)}.bWwFiW_logDotIngest{background:var(--dsw-alias-state-success-primary)}.bWwFiW_logDotRetrieve{background:var(--dsw-alias-state-warn-primary)}.bWwFiW_logDotOrganize{background:var(--room-decision)}.bWwFiW_logList{flex-direction:column;padding:0;display:flex}.bWwFiW_logRow{gap:var(--space-3);padding:var(--space-2);border-bottom:1px solid var(--dsw-alias-border-l1);font-size:var(--fs-body);grid-template-columns:8px 76px 96px 60px minmax(0,1fr);align-items:center;display:grid}.bWwFiW_logRow:last-child{border-bottom:0}.bWwFiW_logRow:hover{background:var(--dsw-alias-bg-layer-1)}.bWwFiW_logTime{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;white-space:nowrap}.bWwFiW_logOp{color:var(--dsw-alias-label-primary);font-weight:500}.bWwFiW_logScope{color:var(--dsw-alias-label-tertiary)}.bWwFiW_logDetail{color:var(--dsw-alias-label-secondary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.bWwFiW_profileCard{gap:var(--space-3);flex-direction:column;display:flex}.bWwFiW_profileHeading{font-size:var(--fs-micro);color:var(--dsw-alias-label-secondary);margin:0;font-weight:600}.bWwFiW_profileContent{padding:var(--space-3);border:1px solid var(--dsw-alias-border-l1);border-radius:var(--radius-control);background:var(--dsw-alias-bg-layer-1);font-family:inherit;font-size:var(--fs-body);white-space:pre-wrap;word-break:break-word;max-height:200px;margin:0;line-height:1.6;overflow-y:auto}.bWwFiW_profilePickerRow{gap:var(--space-4);flex-wrap:wrap;display:flex}.bWwFiW_profilePickerRow label{gap:var(--space-1);flex-direction:column;display:flex}.bWwFiW_profileSelect{padding:var(--space-1) var(--space-2);border:1px solid var(--dsw-alias-border-l1);border-radius:var(--radius-control);background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);font-size:var(--fs-micro)}.bWwFiW_profileDiff{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--radius-control);font-size:var(--fs-micro);max-height:220px;line-height:1.6;overflow-y:auto}.bWwFiW_profileDiffAdd{padding:0 var(--space-2);background:color-mix(in srgb, var(--dsw-alias-state-success-primary) 12%, transparent);color:var(--dsw-alias-label-primary);white-space:pre-wrap;word-break:break-word}.bWwFiW_profileDiffDel{padding:0 var(--space-2);background:color-mix(in srgb, var(--dsw-alias-state-warn-primary) 12%, transparent);color:var(--dsw-alias-label-tertiary);white-space:pre-wrap;word-break:break-word;text-decoration:line-through}.bWwFiW_profileDiffSame{padding:0 var(--space-2);color:var(--dsw-alias-label-tertiary);white-space:pre-wrap;word-break:break-word}.bWwFiW_episodeRangeSep{color:var(--dsw-alias-label-tertiary);font-size:var(--fs-body)}.bWwFiW_episodeAround{border-color:color-mix(in srgb, var(--dsw-alias-brand-primary) 35%, var(--dsw-alias-border-l2))}.bWwFiW_episodeAroundHead{margin-bottom:var(--space-2);font-size:var(--fs-ctrl);color:var(--dsw-alias-label-primary);justify-content:space-between;align-items:center;display:flex}.bWwFiW_episodeHead{gap:var(--space-1);padding-bottom:var(--space-2);margin-bottom:var(--space-2);border-bottom:1px solid var(--dsw-alias-border-l2);flex-direction:column;display:flex}.bWwFiW_episodeSummary{font-size:var(--fs-ctrl);color:var(--dsw-alias-label-primary);margin:0;font-weight:500;line-height:1.5}.bWwFiW_episodeSummaryMissing{color:var(--dsw-alias-label-tertiary);font-weight:400}.bWwFiW_episodeHeadMeta{font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary)}.bWwFiW_episodeRow{align-items:baseline;gap:var(--space-2);padding:var(--space-1) 0;font-size:var(--fs-body);display:flex}.bWwFiW_episodeRow+.bWwFiW_episodeRow{border-top:1px solid color-mix(in srgb, var(--dsw-alias-border-l2) 55%, transparent)}.bWwFiW_episodeRowTime{font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;flex:none}.bWwFiW_episodeRowKind{font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);flex:none}.bWwFiW_episodeRowText{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-label-primary);flex:1;overflow:hidden}.bWwFiW_episodeRow .bWwFiW_button{height:22px;font-size:var(--fs-micro);flex:none;padding:0 8px}@media (width<=960px){.bWwFiW_hero{grid-template-columns:1fr}.bWwFiW_heroMetrics{gap:var(--space-5)}.bWwFiW_logRow{grid-template-columns:8px 64px 88px minmax(0,1fr)}.bWwFiW_logScope{display:none}}@media (width<=720px){.bWwFiW_metricValue{font-size:22px}}`,document.head.appendChild(e)}var o={section:`bWwFiW_section`,jevIntro:`bWwFiW_jevIntro`,exportWrap:`bWwFiW_exportWrap`,itemBody:`bWwFiW_itemBody`,metricLabel:`bWwFiW_metricLabel`,drawerHead:`bWwFiW_drawerHead`,itemMeta:`bWwFiW_itemMeta`,backfillEstimate:`bWwFiW_backfillEstimate`,toastError:`bWwFiW_toastError`,heroFoot:`bWwFiW_heroFoot`,statusActive:`bWwFiW_statusActive`,node:`bWwFiW_node`,wsBar:`bWwFiW_wsBar`,jevForm:`bWwFiW_jevForm`,roomRow:`bWwFiW_roomRow`,skeletonList:`bWwFiW_skeletonList`,profileHeading:`bWwFiW_profileHeading`,legend:`bWwFiW_legend`,toastSuccess:`bWwFiW_toastSuccess`,roomFact:`bWwFiW_roomFact`,backfillMetric:`bWwFiW_backfillMetric`,episodeRowKind:`bWwFiW_episodeRowKind`,pager:`bWwFiW_pager`,mainCol:`bWwFiW_mainCol`,refurb:`bWwFiW_refurb`,refurbExec:`bWwFiW_refurbExec`,profileDiffSame:`bWwFiW_profileDiffSame`,hero:`bWwFiW_hero`,itemIn:`bWwFiW_itemIn`,benchRow:`bWwFiW_benchRow`,backfillProgressHead:`bWwFiW_backfillProgressHead`,backfillNumbers:`bWwFiW_backfillNumbers`,tourStop:`bWwFiW_tourStop`,tabItem:`bWwFiW_tabItem`,headerTitle:`bWwFiW_headerTitle`,jevActions:`bWwFiW_jevActions`,toastBody:`bWwFiW_toastBody`,tourStops:`bWwFiW_tourStops`,sectionHead:`bWwFiW_sectionHead`,backfillActions:`bWwFiW_backfillActions`,sideCol:`bWwFiW_sideCol`,tourGreeting:`bWwFiW_tourGreeting`,layout:`bWwFiW_layout`,episodeHeadMeta:`bWwFiW_episodeHeadMeta`,danger:`bWwFiW_danger`,tabPanel:`bWwFiW_tabPanel`,backfillRules:`bWwFiW_backfillRules`,jevObsBadgeWarn:`bWwFiW_jevObsBadgeWarn`,toastIn:`bWwFiW_toastIn`,toastInfo:`bWwFiW_toastInfo`,benchMeta:`bWwFiW_benchMeta`,outcomeFailure:`bWwFiW_outcomeFailure`,toastDismiss:`bWwFiW_toastDismiss`,benchHead:`bWwFiW_benchHead`,jevObsTime:`bWwFiW_jevObsTime`,episodeRowTime:`bWwFiW_episodeRowTime`,relChip:`bWwFiW_relChip`,profilePickerRow:`bWwFiW_profilePickerRow`,fadeSoft:`bWwFiW_fadeSoft`,search:`bWwFiW_search`,benchEmpty:`bWwFiW_benchEmpty`,jevField:`bWwFiW_jevField`,empty:`bWwFiW_empty`,jevStatus:`bWwFiW_jevStatus`,primary:`bWwFiW_primary`,logDotOrganize:`bWwFiW_logDotOrganize`,selected:`bWwFiW_selected`,profileDiffDel:`bWwFiW_profileDiffDel`,item:`bWwFiW_item`,refurbConfidence:`bWwFiW_refurbConfidence`,tourStopIndex:`bWwFiW_tourStopIndex`,jev:`bWwFiW_jev`,statusForgotten:`bWwFiW_statusForgotten`,benchBar:`bWwFiW_benchBar`,sectionHint:`bWwFiW_sectionHint`,content:`bWwFiW_content`,logScope:`bWwFiW_logScope`,segItem:`bWwFiW_segItem`,backfillToggles:`bWwFiW_backfillToggles`,modalFoot:`bWwFiW_modalFoot`,logDetail:`bWwFiW_logDetail`,toolbarRow:`bWwFiW_toolbarRow`,jevObsItem:`bWwFiW_jevObsItem`,outcomeSuccess:`bWwFiW_outcomeSuccess`,on:`bWwFiW_on`,tourStopBody:`bWwFiW_tourStopBody`,statusArchived:`bWwFiW_statusArchived`,benchScore:`bWwFiW_benchScore`,roomSwatch:`bWwFiW_roomSwatch`,corridorFadeIn:`bWwFiW_corridorFadeIn`,wsSelect:`bWwFiW_wsSelect`,refurbList:`bWwFiW_refurbList`,backfillMeta:`bWwFiW_backfillMeta`,metricTail:`bWwFiW_metricTail`,jevObsBadge:`bWwFiW_jevObsBadge`,exportItem:`bWwFiW_exportItem`,refurbBadge:`bWwFiW_refurbBadge`,header:`bWwFiW_header`,toastWarning:`bWwFiW_toastWarning`,barUp:`bWwFiW_barUp`,refurbReason:`bWwFiW_refurbReason`,panelIn:`bWwFiW_panelIn`,tabs:`bWwFiW_tabs`,timeline:`bWwFiW_timeline`,sectionTitle:`bWwFiW_sectionTitle`,segScope:`bWwFiW_segScope`,benchContent:`bWwFiW_benchContent`,logDotIngest:`bWwFiW_logDotIngest`,degradedNote:`bWwFiW_degradedNote`,tourStopKind:`bWwFiW_tourStopKind`,map:`bWwFiW_map`,segGroup:`bWwFiW_segGroup`,logRow:`bWwFiW_logRow`,telePrivacyTip:`bWwFiW_telePrivacyTip`,profileDiffAdd:`bWwFiW_profileDiffAdd`,headerActions:`bWwFiW_headerActions`,exportCaret:`bWwFiW_exportCaret`,button:`bWwFiW_button`,skeleton:`bWwFiW_skeleton`,benchList:`bWwFiW_benchList`,refurbItem:`bWwFiW_refurbItem`,episodeRangeSep:`bWwFiW_episodeRangeSep`,backfill:`bWwFiW_backfill`,roomCount:`bWwFiW_roomCount`,jevMuted:`bWwFiW_jevMuted`,telePrivacy:`bWwFiW_telePrivacy`,expand:`bWwFiW_expand`,episodeRow:`bWwFiW_episodeRow`,chipRow:`bWwFiW_chipRow`,chipOn:`bWwFiW_chipOn`,drawerScrim:`bWwFiW_drawerScrim`,pillIn:`bWwFiW_pillIn`,attrGrid:`bWwFiW_attrGrid`,legendItem:`bWwFiW_legendItem`,backfillIntro:`bWwFiW_backfillIntro`,logList:`bWwFiW_logList`,exportMenu:`bWwFiW_exportMenu`,headerBrand:`bWwFiW_headerBrand`,legendDot:`bWwFiW_legendDot`,progressBar:`bWwFiW_progressBar`,roomDecision:`bWwFiW_roomDecision`,kind:`bWwFiW_kind`,benchId:`bWwFiW_benchId`,shimmer:`bWwFiW_shimmer`,jevObs:`bWwFiW_jevObs`,wsFollow:`bWwFiW_wsFollow`,wsMuted:`bWwFiW_wsMuted`,tourProposal:`bWwFiW_tourProposal`,itemTags:`bWwFiW_itemTags`,wsChip:`bWwFiW_wsChip`,episodeAroundHead:`bWwFiW_episodeAroundHead`,jevToggle:`bWwFiW_jevToggle`,refurbHead:`bWwFiW_refurbHead`,refurbReflow:`bWwFiW_refurbReflow`,ring:`bWwFiW_ring`,logDotWrite:`bWwFiW_logDotWrite`,backfillFailures:`bWwFiW_backfillFailures`,expandIn:`bWwFiW_expandIn`,edgeFade:`bWwFiW_edgeFade`,drawerIn:`bWwFiW_drawerIn`,relChips:`bWwFiW_relChips`,metricValueSecondary:`bWwFiW_metricValueSecondary`,pill:`bWwFiW_pill`,jevObsError:`bWwFiW_jevObsError`,telePrivacyHint:`bWwFiW_telePrivacyHint`,redacted:`bWwFiW_redacted`,logOp:`bWwFiW_logOp`,roomList:`bWwFiW_roomList`,roomSkill:`bWwFiW_roomSkill`,cardIn:`bWwFiW_cardIn`,tooltip:`bWwFiW_tooltip`,roomPreference:`bWwFiW_roomPreference`,itemStamp:`bWwFiW_itemStamp`,tourHint:`bWwFiW_tourHint`,profileCard:`bWwFiW_profileCard`,fieldRow:`bWwFiW_fieldRow`,expandLoading:`bWwFiW_expandLoading`,dueDot:`bWwFiW_dueDot`,profileSelect:`bWwFiW_profileSelect`,relBlock:`bWwFiW_relBlock`,input:`bWwFiW_input`,backfillProgress:`bWwFiW_backfillProgress`,sectionAction:`bWwFiW_sectionAction`,drawer:`bWwFiW_drawer`,editForm:`bWwFiW_editForm`,jevObsBadgeGood:`bWwFiW_jevObsBadgeGood`,episodeAround:`bWwFiW_episodeAround`,drawerClose:`bWwFiW_drawerClose`,reviewGrid:`bWwFiW_reviewGrid`,jevObsHead:`bWwFiW_jevObsHead`,mapWrap:`bWwFiW_mapWrap`,metricValue:`bWwFiW_metricValue`,refurbCount:`bWwFiW_refurbCount`,headerLogo:`bWwFiW_headerLogo`,logTime:`bWwFiW_logTime`,episodeSummary:`bWwFiW_episodeSummary`,jevToggleRow:`bWwFiW_jevToggleRow`,chip:`bWwFiW_chip`,backfillToggle:`bWwFiW_backfillToggle`,heroMetrics:`bWwFiW_heroMetrics`,drawerTitle:`bWwFiW_drawerTitle`,itemList:`bWwFiW_itemList`,logDotRetrieve:`bWwFiW_logDotRetrieve`,profileContent:`bWwFiW_profileContent`,episodeHead:`bWwFiW_episodeHead`,itemOps:`bWwFiW_itemOps`,batchBar:`bWwFiW_batchBar`,segIndicator:`bWwFiW_segIndicator`,tabUnderline:`bWwFiW_tabUnderline`,panelCard:`bWwFiW_panelCard`,dueBadge:`bWwFiW_dueBadge`,drawerBody:`bWwFiW_drawerBody`,panel:`bWwFiW_panel`,exportItemLabel:`bWwFiW_exportItemLabel`,refurbItemIn:`bWwFiW_refurbItemIn`,toast:`bWwFiW_toast`,tourItemIn:`bWwFiW_tourItemIn`,viaChip:`bWwFiW_viaChip`,logDot:`bWwFiW_logDot`,episodeSummaryMissing:`bWwFiW_episodeSummaryMissing`,scrimIn:`bWwFiW_scrimIn`,profileDiff:`bWwFiW_profileDiff`,logToolbar:`bWwFiW_logToolbar`,toastViewport:`bWwFiW_toastViewport`,metric:`bWwFiW_metric`,logCounts:`bWwFiW_logCounts`,itemCheck:`bWwFiW_itemCheck`,heroSide:`bWwFiW_heroSide`,backfillMuted:`bWwFiW_backfillMuted`,backfillRule:`bWwFiW_backfillRule`,roomEpisode:`bWwFiW_roomEpisode`,exportItemHint:`bWwFiW_exportItemHint`,tourStopText:`bWwFiW_tourStopText`,episodeRowText:`bWwFiW_episodeRowText`,fieldLabel:`bWwFiW_fieldLabel`};let s=`engram`,c={fact:`kindFact`,preference:`kindPreference`,decision:`kindDecision`,episode:`kindEpisode`,skill:`kindSkill`},l={nav:`记忆宫殿`,scopeUser:`私人宫殿`,scopeProject:`项目宫殿`,scopeShared:`共享宫殿`,projectFollow:`跟随当前工作区`,projectFollowNamed:`项目 · 跟随 {name}`,projectFollowHint:`项目宫殿跟随 GUI 当前选中的工作区(按会话归属判定)`,projectPinned:`项目 · {name}`,projectUnregistered:`未注册工作区`,projectNoWorkspace:`无工作区信息(进程默认)`,projectSwitch:`项目宫殿来源`,projectMemories:`{n} 条记忆`,projectProcessDefault:`进程默认目录`,refresh:`重访`,exportMd:`导出 MD`,exportJson:`导出 JSON`,export:`导出`,exportMirror:`镜像目录`,exportMdHint:`单文件,可直接分享`,exportJsonHint:`结构化全文,便于程序处理`,exportMirrorHint:`每条记忆一个 .md,可用 Obsidian 漫游`,allStatuses:`全部状态`,allKinds:`全部房间`,redactedAll:`全部铭牌`,redactedOnly:`含涂改`,redactedNone:`无涂改`,tagRedacted:`已涂改`,tagOutcomeSuccess:`管家验证·有效`,tagOutcomeFailure:`管家验证·失效`,searchPlaceholder:`在宫殿里寻找…`,statusActive:`对外开放`,statusArchived:`展厅陈列`,statusForgotten:`已闭馆`,kindFact:`事实厅`,kindPreference:`偏好阁`,kindDecision:`决策堂`,kindEpisode:`往事廊`,kindSkill:`技法坊`,labelContent:`铭牌`,labelKind:`房间`,labelStatus:`状态`,labelScope:`宫殿归属`,importance:`地标亮度`,confidence:`考据可靠度`,accessCount:`参观 {n} 人次`,labelCreated:`开馆时间`,timeJustNow:`方才`,timeMinutesAgo:`{n} 分钟前`,timeHoursAgo:`{n} 小时前`,timeDaysAgo:`{n} 天前`,sourceExplicit:`管理员添置`,sourceSession:`发掘地 {id}`,round:`第 {n} 趟`,cardRedacted:`涂改 {n}`,detail:`参观`,edit:`修缮`,forget:`封门`,restore:`重开`,empty:`宫殿暂无可陈展的记忆`,emptyHint:`试试调整房间筛选,或新添一条`,loadFailed:`访客受挫:{msg}`,loading:`导览中…`,pagerInfo:`第 {page} / {pages} 页 · 共 {total} 条`,prevPage:`上一页`,nextPage:`下一页`,cancel:`作罢`,saveWithHint:`修缮(旧铭牌归展厅)`,detailAttributes:`铭牌`,detailSource:`发掘地`,detailRelations:`邻接走廊`,detailOperations:`管家日志`,relSupersededBy:`被替代`,relSupersedes:`替代`,relContradicts:`互斥`,relRelated:`相邻`,headerTitle:`记忆宫殿`,headerSubtitle:`跨会话长期记忆宫殿`,tabToday:`今日`,tabLibrary:`陈展`,tabCorridor:`走廊`,tabLog:`日志`,tabLibraryCount:`{n} 条`,roomsTitle:`房间目录`,roomsHint:`每间满 9 个桩位后开新间`,healthEvaluatedAt:`诊脉于 {time}`,logFilterAll:`全部`,logFilterWrite:`落成类`,logFilterIngest:`发掘`,logFilterRetrieve:`检索`,logFilterOrganize:`整理`,logCount:`{n} 条 · 两库合并倒序`,benchTitle:`检索实验台`,drawerClose:`归殿`,drawerTitle:`记忆铭牌`,kpiTotal:`记忆`,kpiActive:`开放`,kpiForgotten:`闭馆`,kpiSignal:`清晰度`,opWrite:`落成`,opWriteMerge:`落成·并入`,opUpdate:`修缮`,opForget:`封门`,opRestore:`重开`,opDecay:`闭门陈列`,opSuperseded:`被替代`,opIngestRequest:`发掘请求`,opIngestDone:`发掘完成`,opOutcomeReport:`管家验证`,opAssess:`证据判定`,opConsolidation:`闭馆整理`,opReviewAnswer:`复习答题`,opSlotAssign:`排桩`,opSlotBackfill:`批量排桩`,opRoomOpen:`开新房`,consolidateArchived:`归档 {n}`,consolidateMerged:`合并 {n}`,consolidateSkipped:`跳过 {n}`,decayArchived:`归档 {n}`,slotBackfilled:`新排 {n} 个桩位`,roomOpened:`开新房 {room}`,reviewAnswered:`评分 {grade} · 下次 {days} 天后`,assessAdequate:`证据充足`,assessInadequate:`证据不足`,assessRefs:`{n} 条证据`,opSearchRewrite:`路线改写`,opCompressRequest:`导览压缩`,opDistillRequest:`合并房间`,selectAll:`本页全选`,deselectAll:`取消全选`,selectedCount:`已选 {n} 条`,batchForget:`批量封门({n})`,batchForgetConfirm:`确认封门 {n} 条?`,batchRestore:`批量重开({n})`,clearSelection:`清空所选`,sectionCorridor:`走廊鸟瞰`,corridorEmpty:`走廊空空如也,落成几条记忆后这里会出现鸟瞰图。`,corridorFailed:`走廊加载失败`,corridorLoad:`加载走廊鸟瞰…`,corridorAria:`走廊鸟瞰图`,corridorSummary:`{nodes} 条记忆 · {edges} 条走廊`,edgeSupersedes:`推陈出新`,edgeContradicts:`互斥`,edgeOther:`相邻 / 支持 / 提炼`,healthLoading:`正在诊脉…`,teleFailed:`遥测加载失败`,teleLoading:`聚合管家记录中…`,teleGroupRecent:`近 7 天`,telePrivacyHint:`数据仅在本机聚合 · 不外传`,telePrivacyTip:`所有 op_log 与遥测计数只在当前进程的 SQLite 里聚合,从未发送至任何外部服务;本机重启或卸载插件即清空。`,teleWrites:`落成`,teleIngest:`发掘`,teleConsolidate:`整理`,benchPlaceholder:`说出要找的房间关键词或语义…`,benchRun:`出发`,benchScopeAll:`全部宫殿`,benchHits:`到访 {n} 间`,benchDegraded:`语义灯熄,仅关键词引路`,benchEmpty:`此路不通`,benchNote:`试走与正式导览共用同一张地图,会计入参观人次`,viaFts:`关键词`,viaVec:`语义`,viaBoth:`双路`,viaEdgeLabel:`邻接走廊`,benchRewrite:`路线改写为 {n} 段`,benchCompress:`铭牌压缩 {n} 条`,activityEmpty:`暂无管家活动`,detailRevisions:`陈展沿革`,tourProposalTitle:`入殿导航`,tourProposalEmpty:`宫殿尚空,建议先放第一段记忆(调用 engram_save)`,tourProposalHint:`点击记忆可展开抽屉查看铭牌`,tourFocusAll:`全部`,refurbTitle:`翻新清单`,refurbEmpty:`所有房间状态健康,无翻新建议`,refurbRun:`重新扫描`,refurbActionDemote:`降级`,refurbActionMerge:`合并`,refurbActionReview:`复习`,refurbActionSplit:`拆分`,refurbCount:`{n} 条建议`,refurbExecute:`执行`,refurbConfirmDemote:`确认降级这条记忆?执行后状态转 archived,可在统计页恢复。`,refurbConfirmMerge:`确认合并 {n} 条相似记忆?将触发 engram_distill 把它们归纳为 1 条高层规律。`,refurbDemoteDone:`已降级`,refurbMergeDone:`合并任务已派发`,refurbActionFailed:`执行失败:{msg}`,refurbMergeEmpty:`无可合并的候选条目`,heroDue:`今日到期`,filterDueToday:`今日到期`,sortTime:`按时间`,sortTour:`按巡游路线`,dueBadgeLabel:`今日到期 {n} 条,点击在陈展中筛选`,tabBackfill:`回填`,backfillIntro:`把 dsh 的历史会话逐轮提炼进宫殿:每条会话写进它自己 cwd 对应的项目库;已摄取过的轮次按幂等键自动跳过,中断后再次开始即可续做。回填的条目不会进入今日复习队列。`,backfillRulesTitle:`导入规则`,backfillDays:`时间窗`,backfillDaysAll:`不限`,backfillDaysUnit:`{n} 天`,backfillMaxTurns:`单会话最多轮数`,backfillMaxTotal:`本次总轮数上限`,backfillModel:`辅助模型`,backfillModelAuto:`自动(用当前在用的模型)`,backfillIncludeSubagents:`包含子代理会话`,backfillIncludeSeeded:`包含种子会话`,backfillIncludeNoCwd:`包含无 cwd 会话(只能进私人宫殿)`,backfillReestimate:`重新估算`,backfillEstimateTitle:`估算`,backfillCandidates:`候选会话 {n}`,backfillPendingTurns:`待处理 {n} 轮`,backfillAlready:`已摄取跳过 {n} 轮`,backfillSkippedDetail:`已排除:子代理 {subagent} · 种子 {seeded} · 无 cwd {noCwd} · 超时间窗 {tooOld} · 日志不可读 {unreadable}`,backfillTruncated:`候选超出总轮数上限:本次只处理最近的一部分会话,可调大上限或分几次跑`,backfillStart:`开始回填`,backfillPause:`暂停`,backfillStateRunning:`回填中…`,backfillStateDone:`已完成`,backfillStateCancelled:`已中止(可再次开始续做)`,backfillStateFailed:`失败`,backfillProgressSessions:`会话 {done}/{total}`,backfillProgressTurns:`轮次 {done}/{total}`,backfillWritten:`写入 {n} 条`,backfillTurnsSkipped:`跳过 {n} 轮`,backfillTurnsFailed:`失败 {n} 轮`,backfillFailures:`失败明细`,backfillEstimating:`正在估算…`,backfillSkipReasons:`跳过原因`,backfillRouteHint:`失败多半是因为历史会话当时用的模型在当前环境不可用:可在 cordis.yml 配置 provider/model,或先用目标模型跑一轮会话(回填会复用当前在用的模型)再重试——已完成的轮次会自动跳过。`,skipLowActivity:`低活动轮`,skipChitchat:`寒暄轮`,skipForbidden:`显式禁记`,skipNoContent:`无用户内容`,skipAlready:`已摄取`,skipNoTurn:`无此轮`,skipNoRoute:`日志无路由`,skipUnparsable:`提炼输出不可解析`,opProfileEdit:`画像修订`,profileOpCreate:`创建 v{to} · {chars} 字`,profileOpEdit:`编辑 v{from}→v{to} · {chars} 字`,profileOpRollback:`回滚 v{from}→v{to}(还原 v{restored})· {chars} 字`,profileTitle:`画像 curated block`,profileEmpty:`尚无 curated 画像`,profileEmptyHint:`在会话里让 agent 调 engram_profile_edit 创建;创建后会话开始时优先于自动派生画像注入。`,profileCurrent:`当前内容 · v{n}`,profileHistory:`版本历史(新→旧)`,profileSourceEdit:`编辑`,profileSourceRollback:`回滚`,profileDiffBase:`基准版本`,profileDiffTarget:`对比版本`,profileDiffNone:`两个版本内容相同`,profileLoadFailed:`画像加载失败`,tabEpisodes:`往事`,episodeSince:`开始日期`,episodeUntil:`结束日期`,episodeSessionId:`会话 id(可选)`,episodeApply:`应用`,episodeReset:`重置`,episodeHint:`按会话分组浏览经历;组头是摄取时生成的一句话摘要,点条目的「邻近」看当时前后还发生了什么`,episodeNoGroups:`该范围内没有情景记忆`,episodeNoSession:`无会话来源`,episodeSummaryMissing:`(该会话尚未生成摘要:跑一次历史回填即可补上)`,episodeEntries:`{n} 条情景`,episodeNearby:`邻近`,episodeAroundTitle:`时间邻近扩展`,episodeAroundEmpty:`邻近窗口内没有其他情景`,episodeClose:`收起`,tabEntities:`实体`,entityHint:`从记忆中抽取的人物、项目、工具与概念;点「查看」看一条实体牵出的所有记忆`,entityKindAll:`全部类别`,entityKindPerson:`人物`,entityKindProject:`项目`,entityKindTool:`工具`,entityKindConcept:`概念`,entityKindOther:`其他`,entitySearchPlaceholder:`搜索实体名或别名`,entityCount:`{n} 个实体`,entityMemories:`{n} 条关联记忆`,entityOpen:`查看`,entityAliases:`别名`,entityNoMemories:`暂无关联记忆`,entityEmpty:`该宫殿还没有实体;保存带实体提及的记忆后会自动出现`,factSection:`事实链({n} 条)`,factEmpty:`暂无事实;摄取时从记忆抽取的实体事实会出现在这里`,factValid:`生效`,factInvalid:`已失效`,tabJev:`裁决`,jevIntro:`Jev 系统一裁决:写入落库前对模糊记忆做三路判定(合并 / 接受 / 搁置)并确认矛盾边。密钥保存在本机数据目录(0600 文件),保存后立即生效,无需重启;Jev 不可用时自动回落纯规则四态。`,jevEnabled:`启用 Jev 裁决`,jevStatusOn:`Jev 裁决已生效`,jevStatusOff:`Jev 裁决未生效(纯规则四态)`,jevApiKey:`API 密钥`,jevApiKeyHint:`留空表示保留现有密钥;要清除已存密钥(回落 cordis.yml 配置)点「清除已存密钥」。`,jevApiKeyUnset:`未配置`,jevClearKey:`清除已存密钥`,jevKeyCleared:`已清除面板密钥,回落部署配置`,jevBaseUrl:`端点`,jevModel:`判决模型`,jevTimeoutMs:`超时(毫秒,1000-60000)`,jevThresholdsTitle:`裁决阈值(cordis.yml 高级配置,此处只读)`,jevThresholdLine:`判同一条 ≥{merge} · 判不同条 ≤{accept} · 矛盾确认 ≥{contradict}`,jevSave:`保存`,jevSaved:`已保存,配置即时生效`,jevLoadFailed:`加载失败`,jevTest:`测试连接`,jevTestOk:`连接正常:{ms} 毫秒,ping 概率 {p}`,jevTestFail:`连接失败:{error}`,jevObsTitle:`近期裁决(本进程,最多 50 条,重启清空)`,jevObsEmpty:`暂无记录;启用 Jev 后发生写入裁决时出现`,jevObsLoadFailed:`裁决记录加载失败`,jevObsSiteBand:`模糊带`,jevObsSiteContradiction:`矛盾确认`,jevObsVerdictMerge:`并入`,jevObsVerdictAccept:`放行`,jevObsVerdictDefer:`搁置`,jevObsVerdictConfirm:`确认矛盾`,jevObsVerdictReject:`非矛盾`,jevObsVerdictFallback:`回落`,jevObsNoAnswer:`无答案`,jevObsErrorLine:`错误:{error}`},u={nav:`Memory Palace`,scopeUser:`Private Palace`,scopeProject:`Project Palace`,scopeShared:`Shared Palace`,projectFollow:`Follow the active workspace`,projectFollowNamed:`Project · following {name}`,projectFollowHint:`The project palace follows the workspace selected in the GUI (by session ownership)`,projectPinned:`Project · {name}`,projectUnregistered:`unregistered workspace`,projectNoWorkspace:`No workspace info (process default)`,projectSwitch:`Project palace source`,projectMemories:`{n} memories`,projectProcessDefault:`Process default directory`,refresh:`Revisit`,exportMd:`Export MD`,exportJson:`Export JSON`,export:`Export`,exportMirror:`Mirror tree`,exportMdHint:`Single file, easy to share`,exportJsonHint:`Structured full dump for scripts`,exportMirrorHint:`One .md per memory, roamable in Obsidian`,allStatuses:`All statuses`,allKinds:`All rooms`,redactedAll:`All placards`,redactedOnly:`Redacted`,redactedNone:`Unredacted`,tagRedacted:`redacted`,tagOutcomeSuccess:`curator: worked`,tagOutcomeFailure:`curator: failed`,searchPlaceholder:`Wander the palace…`,statusActive:`open to public`,statusArchived:`on display`,statusForgotten:`closed`,kindFact:`Fact Hall`,kindPreference:`Preference Pavilion`,kindDecision:`Decision Chamber`,kindEpisode:`Episode Gallery`,kindSkill:`Skill Workshop`,labelContent:`Placard`,labelKind:`Room`,labelStatus:`Status`,labelScope:`Palace`,importance:`Beacon`,confidence:`Provenance`,accessCount:`{n} visits`,labelCreated:`Opened`,timeJustNow:`just now`,timeMinutesAgo:`{n} min ago`,timeHoursAgo:`{n} hr ago`,timeDaysAgo:`{n} d ago`,sourceExplicit:`Curator placed`,sourceSession:`Excavated at {id}`,round:`pass {n}`,cardRedacted:`{n} redacted`,detail:`Tour`,edit:`Renovate`,forget:`Close`,restore:`Reopen`,empty:`No memories to display`,emptyHint:`Adjust the rooms above, or place a new memory`,loadFailed:`Tour halted: {msg}`,loading:`Guiding…`,pagerInfo:`Page {page} / {pages} · {total} memories`,prevPage:`Previous page`,nextPage:`Next page`,cancel:`Cancel`,saveWithHint:`Renovate (archive old placard)`,detailAttributes:`Placard`,detailSource:`Excavation`,detailRelations:`Corridors`,detailOperations:`Curator log`,relSupersededBy:`Superseded by`,relSupersedes:`Supersedes`,relContradicts:`Contradicts`,relRelated:`Adjacent`,headerTitle:`Memory Palace`,headerSubtitle:`Cross-session long-term memory palace`,tabToday:`Today`,tabLibrary:`Palace`,tabCorridor:`Corridor`,tabLog:`Log`,tabLibraryCount:`{n} memories`,roomsTitle:`Room directory`,roomsHint:`A new room opens once 9 slots fill`,healthEvaluatedAt:`Scored {time}`,logFilterAll:`All`,logFilterWrite:`Writes`,logFilterIngest:`Capture`,logFilterRetrieve:`Retrieval`,logFilterOrganize:`Organize`,logCount:`{n} entries · both stores merged, newest first`,benchTitle:`Retrieval bench`,drawerClose:`Return`,drawerTitle:`Memory placard`,kpiTotal:`Memories`,kpiActive:`Open`,kpiForgotten:`Closed`,kpiSignal:`Clarity`,opWrite:`opened`,opWriteMerge:`merged in`,opUpdate:`renovated`,opForget:`closed`,opRestore:`reopened`,opDecay:`archived`,opSuperseded:`superseded`,opIngestRequest:`excavation requested`,opIngestDone:`excavated`,opOutcomeReport:`curator report`,opAssess:`evidence check`,opConsolidation:`consolidation`,opReviewAnswer:`review answer`,opSlotAssign:`slot assigned`,opSlotBackfill:`slots backfilled`,opRoomOpen:`room opened`,consolidateArchived:`archived {n}`,consolidateMerged:`merged {n}`,consolidateSkipped:`skipped {n}`,decayArchived:`archived {n}`,slotBackfilled:`{n} slots assigned`,roomOpened:`opened room {room}`,reviewAnswered:`grade {grade} · next in {days}d`,assessAdequate:`evidence adequate`,assessInadequate:`evidence insufficient`,assessRefs:`{n} refs`,opSearchRewrite:`route rewritten`,opCompressRequest:`placard compressed`,opDistillRequest:`rooms merged`,selectAll:`Select all on page`,deselectAll:`Deselect all`,selectedCount:`{n} memories`,batchForget:`Close selected ({n})`,batchForgetConfirm:`Close {n} memories?`,batchRestore:`Reopen selected ({n})`,clearSelection:`Clear selection`,sectionCorridor:`Corridor overview`,corridorEmpty:`No memories yet — the bird’s-eye view appears after a few memories arrive.`,corridorFailed:`Failed to load corridor`,corridorLoad:`Loading corridor overview…`,corridorAria:`Corridor overview map`,corridorSummary:`{nodes} memories · {edges} corridors`,edgeSupersedes:`supersedes`,edgeContradicts:`contradicts`,edgeOther:`related / supports / refines`,healthLoading:`Taking pulse…`,teleFailed:`Telemetry failed`,teleLoading:`Aggregating curator events…`,teleGroupRecent:`Last 7 days`,telePrivacyHint:`Local aggregation only · never transmitted`,telePrivacyTip:`All op_log and telemetry counters are aggregated in this process’s SQLite only; nothing is sent to any external service. Clearing the plugin or restarting the host wipes the data.`,teleWrites:`Opened`,teleIngest:`Excavated`,teleConsolidate:`Consolidated`,benchPlaceholder:`Name a room by keyword or meaning…`,benchRun:`Walk`,benchScopeAll:`All palaces`,benchHits:`{n} rooms found`,benchDegraded:`Beacon dark · keyword lane only`,benchEmpty:`No route found`,benchNote:`Walk uses the same map as the guided tour and counts as a visit`,viaFts:`keyword`,viaVec:`semantic`,viaBoth:`dual`,viaEdgeLabel:`corridor`,benchRewrite:`route split into {n}`,benchCompress:`compressed {n} overflow placards`,activityEmpty:`No curator activity yet`,detailRevisions:`Exhibit history`,tourProposalTitle:`Tour proposal`,tourProposalEmpty:`The palace is empty — place a first memory via engram_save`,tourProposalHint:`Click a memory to open its placard`,tourFocusAll:`All`,refurbTitle:`Refurb suggestions`,refurbEmpty:`All rooms are healthy — no suggestions`,refurbRun:`Re-scan`,refurbActionDemote:`demote`,refurbActionMerge:`merge`,refurbActionReview:`review`,refurbActionSplit:`split`,refurbCount:`{n} suggestions`,refurbExecute:`Apply`,refurbConfirmDemote:`Demote this memory? Status will become archived; you can reopen it later.`,refurbConfirmMerge:`Merge {n} similar memories? This triggers engram_distill to fold them into one higher-level pattern.`,refurbDemoteDone:`Demoted`,refurbMergeDone:`Merge dispatched`,refurbActionFailed:`Action failed: {msg}`,refurbMergeEmpty:`No merge candidates`,heroDue:`Due today`,filterDueToday:`Due today`,sortTime:`By time`,sortTour:`By tour route`,dueBadgeLabel:`{n} due today — click to filter in the library`,tabBackfill:`Backfill`,backfillIntro:`Distils past dsh sessions into the palace, turn by turn: each session is written into the project store matching its own cwd. Turns already captured are skipped by idempotency key, so starting again resumes where it stopped. Backfilled memories never enter the due-today queue.`,backfillRulesTitle:`Import rules`,backfillDays:`Time window`,backfillDaysAll:`All`,backfillDaysUnit:`{n} days`,backfillMaxTurns:`Max turns per session`,backfillMaxTotal:`Total turn budget`,backfillModel:`Auxiliary model`,backfillModelAuto:`Auto (model currently in use)`,backfillIncludeSubagents:`Include subagent sessions`,backfillIncludeSeeded:`Include seeded sessions`,backfillIncludeNoCwd:`Include sessions without cwd (private palace only)`,backfillReestimate:`Re-estimate`,backfillEstimateTitle:`Estimate`,backfillCandidates:`{n} candidate sessions`,backfillPendingTurns:`{n} turns pending`,backfillAlready:`{n} turns already captured`,backfillSkippedDetail:`Excluded: subagent {subagent} · seeded {seeded} · no cwd {noCwd} · outside window {tooOld} · unreadable {unreadable}`,backfillTruncated:`Candidates exceed the total turn budget: only the most recent sessions run this time — raise the budget or run in batches`,backfillStart:`Start backfill`,backfillPause:`Pause`,backfillStateRunning:`Running…`,backfillStateDone:`Finished`,backfillStateCancelled:`Stopped (start again to resume)`,backfillStateFailed:`Failed`,backfillProgressSessions:`Sessions {done}/{total}`,backfillProgressTurns:`Turns {done}/{total}`,backfillWritten:`{n} memories written`,backfillTurnsSkipped:`{n} turns skipped`,backfillTurnsFailed:`{n} turns failed`,backfillFailures:`Failures`,backfillEstimating:`Estimating…`,backfillSkipReasons:`Skipped`,backfillRouteHint:`Failures are usually because the model a past session used is not available here: set provider/model in cordis.yml, or run one turn with the target model first (backfill reuses the model currently in use) and retry — finished turns are skipped automatically.`,skipLowActivity:`low activity`,skipChitchat:`chitchat`,skipForbidden:`capture forbidden`,skipNoContent:`no user content`,skipAlready:`already captured`,skipNoTurn:`no such turn`,skipNoRoute:`no route in log`,skipUnparsable:`unparsable output`,opProfileEdit:`profile revised`,profileOpCreate:`created v{to} · {chars} chars`,profileOpEdit:`edited v{from}→v{to} · {chars} chars`,profileOpRollback:`rolled back v{from}→v{to} (restored v{restored}) · {chars} chars`,profileTitle:`Curated profile block`,profileEmpty:`No curated profile yet`,profileEmptyHint:`Ask the agent to call engram_profile_edit in a session; once created it is injected ahead of the derived profile at session start.`,profileCurrent:`Current content · v{n}`,profileHistory:`Version history (newest first)`,profileSourceEdit:`edited`,profileSourceRollback:`rollback`,profileDiffBase:`Base version`,profileDiffTarget:`Compare version`,profileDiffNone:`The two versions are identical`,profileLoadFailed:`Failed to load profile`,tabEpisodes:`Episodes`,episodeSince:`From date`,episodeUntil:`To date`,episodeSessionId:`Session id (optional)`,episodeApply:`Apply`,episodeReset:`Reset`,episodeHint:`Browse experiences grouped by session; group heads carry a one-line summary generated at ingest. Click "Nearby" on an entry to see what else happened around that moment`,episodeNoGroups:`No episodes in this range`,episodeNoSession:`No session origin`,episodeSummaryMissing:`(No summary yet for this session: run a history backfill to add one)`,episodeEntries:`{n} episodes`,episodeNearby:`Nearby`,episodeAroundTitle:`Time proximity expansion`,episodeAroundEmpty:`No other episodes within the proximity window`,episodeClose:`Collapse`,tabEntities:`Entities`,entityHint:`People, projects, tools and concepts extracted from memories; open one to see every memory that mentions it`,entityKindAll:`All kinds`,entityKindPerson:`People`,entityKindProject:`Projects`,entityKindTool:`Tools`,entityKindConcept:`Concepts`,entityKindOther:`Other`,entitySearchPlaceholder:`Search names or aliases`,entityCount:`{n} entities`,entityMemories:`{n} linked memories`,entityOpen:`View`,entityAliases:`Aliases`,entityNoMemories:`No linked memories`,entityEmpty:`No entities in this palace yet; they appear after you save memories that mention them`,factSection:`Facts ({n})`,factEmpty:`No facts yet; facts extracted from memories during ingestion will appear here`,factValid:`active`,factInvalid:`superseded`,tabJev:`Jev`,jevIntro:`Jev System-One adjudication: three-way ruling (merge / accept / defer) for ambiguous memories before they are written, plus contradiction confirmation. The key is stored in the local data directory (0600 file) and takes effect immediately after saving, no restart; when Jev is unavailable the plugin falls back to the pure four-rule disposition.`,jevEnabled:`Enable Jev adjudication`,jevStatusOn:`Jev adjudication active`,jevStatusOff:`Jev adjudication inactive (pure rule-based dispositions)`,jevApiKey:`API key`,jevApiKeyHint:`Leave empty to keep the stored key; click "Clear stored key" to remove it (falls back to cordis.yml).`,jevApiKeyUnset:`not configured`,jevClearKey:`Clear stored key`,jevKeyCleared:`Panel key cleared; falling back to deployment config`,jevBaseUrl:`Endpoint`,jevModel:`Adjudication model`,jevTimeoutMs:`Timeout (ms, 1000-60000)`,jevThresholdsTitle:`Adjudication thresholds (advanced cordis.yml config, read-only here)`,jevThresholdLine:`same memory ≥{merge} · new memory ≤{accept} · contradiction ≥{contradict}`,jevSave:`Save`,jevSaved:`Saved; config takes effect immediately`,jevLoadFailed:`Failed to load`,jevTest:`Test connection`,jevTestOk:`Connection OK: {ms} ms, ping probability {p}`,jevTestFail:`Connection failed: {error}`,jevObsTitle:`Recent adjudications (this process, up to 50, cleared on restart)`,jevObsEmpty:`No records yet; they appear when Jev adjudicates a write after being enabled`,jevObsLoadFailed:`Failed to load adjudication records`,jevObsSiteBand:`band`,jevObsSiteContradiction:`contradiction`,jevObsVerdictMerge:`merge`,jevObsVerdictAccept:`accept`,jevObsVerdictDefer:`defer`,jevObsVerdictConfirm:`confirm`,jevObsVerdictReject:`reject`,jevObsVerdictFallback:`fallback`,jevObsNoAnswer:`no answer`,jevObsErrorLine:`error: {error}`};function d(e,t){let n=c[t];return n===void 0?t:e(n)}let f={fact:`#5b8def`,preference:`#f0a85c`,decision:`#9b6bd9`,episode:`#3cb489`,skill:`#e26b86`},p={related:{color:`rgba(120, 130, 150, 0.6)`,dash:void 0,width:1},refines:{color:`rgba(120, 130, 150, 0.6)`,dash:void 0,width:1},supports:{color:`rgba(120, 130, 150, 0.6)`,dash:void 0,width:1},supersedes:{color:`rgba(91, 141, 239, 0.85)`,dash:void 0,width:1.8},contradicts:{color:`rgba(226, 107, 134, 0.9)`,dash:`4 4`,width:1.4}};function m(e){return Math.max(4,Math.min(14,4+10*e.importance*e.confidence))}function h(e,t,n,r,i){let a=.003;for(let t=0;t<e.length;t+=1){let n=e[t];for(let r=t+1;r<e.length;r+=1){let t=e[r],a=n.x-t.x,o=n.y-t.y,s=Math.sqrt(a*a+o*o)+.01,c=4800*i/(s*s),l=a/s*c,u=o/s*c;n.vx+=l,n.vy+=u,t.vx-=l,t.vy-=u}}let o=new Map(e.map(e=>[e.id,e]));for(let e of t){let t=o.get(e.from),n=o.get(e.to);if(t===void 0||n===void 0)continue;let r=n.x-t.x,a=n.y-t.y,s=Math.sqrt(r*r+a*a)+.01,c=(s-64)*.04*i,l=r/s*c,u=a/s*c;t.vx+=l,t.vy+=u,n.vx-=l,n.vy-=u}let s=[...new Set(e.map(e=>e.kind))],c=n/Math.max(s.length,1);for(let t of e){if(t.fixed)continue;t.vx+=(n/2-t.x)*a*i,t.vy+=(r/2-t.y)*a*i;let e=s.indexOf(t.kind);if(e>=0){let n=c*(e+.5);t.vx+=(n-t.x)*.005*i}}let l=.82;for(let t of e){if(t.fixed){t.vx=0,t.vy=0;continue}t.vx*=l,t.vy*=l,t.x=Math.max(20,Math.min(n-20,t.x+t.vx)),t.y=Math.max(20,Math.min(r-20,t.y+t.vy))}}function g(e){let{scope:t,nodes:n,edges:a,onSelect:s,selectedId:c,t:l}=e,u=(0,r.useMemo)(()=>{let e=new Map;for(let t of n)e.set(t.id,new Set);for(let t of a)e.has(t.from)||e.set(t.from,new Set),e.has(t.to)||e.set(t.to,new Set),e.get(t.from).add(t.to),e.get(t.to).add(t.from);return e},[n,a]),g=(0,r.useMemo)(()=>{let e=[...new Set(n.map(e=>e.kind))],t=560/Math.max(e.length,1);return n.map((n,r)=>({...n,x:e.indexOf(n.kind)>=0?t*(e.indexOf(n.kind)+.5):280,y:30+r*47%260,vx:0,vy:0,r:m(n),fixed:!1}))},[n,560,320]),_=(0,r.useRef)(g.map(e=>({...e}))),[,v]=(0,r.useState)(0),y=(0,r.useRef)(null),b=(0,r.useRef)(0);(0,r.useEffect)(()=>{_.current=g.map(e=>({...e})),b.current=0,v(e=>e+1)},[g]),(0,r.useEffect)(()=>{let e=()=>{let t=_.current;b.current+=1;let n=Math.max(.1,1-b.current/280*.9);h(t,a,560,320,n),_.current=t.map(e=>({...e})),v(e=>e+1),b.current<280&&(y.current=requestAnimationFrame(e))};return y.current=requestAnimationFrame(e),()=>{y.current!==null&&cancelAnimationFrame(y.current)}},[g,a]);let x=_.current,S=(0,r.useMemo)(()=>new Map(x.map(e=>[e.id,e])),[x]),C=(0,r.useMemo)(()=>[...new Set(n.map(e=>e.kind))],[n]),[w,T]=(0,r.useState)(null),E=(0,r.useMemo)(()=>w===null?null:u.get(w)??new Set,[w,u]),D=e=>w!==null&&e!==w&&!(E?.has(e)??!1),O=e=>w===null?!1:e.from===w||e.to===w,k=(0,r.useRef)(null),A=(0,r.useRef)(null),j=(e,t)=>{let n=k.current;if(n===null)return null;let r=n.getBoundingClientRect(),i=560/r.width,a=320/r.height;return{x:(e-r.left)*i,y:(t-r.top)*a}},M=(e,t)=>{e.preventDefault(),A.current=t;let n=_.current.find(e=>e.id===t);n!==void 0&&(n.fixed=!0)};return(0,r.useEffect)(()=>{let e=e=>{let t=A.current;if(t===null)return;let n=j(e.clientX,e.clientY);if(n===null)return;let r=_.current.find(e=>e.id===t);r!==void 0&&(r.x=Math.max(20,Math.min(540,n.x)),r.y=Math.max(20,Math.min(300,n.y)),r.vx=0,r.vy=0,v(e=>e+1))},t=()=>{let e=A.current;if(e===null)return;let t=_.current.find(t=>t.id===e);t!==void 0&&(t.fixed=!1),A.current=null};return window.addEventListener(`mousemove`,e),window.addEventListener(`mouseup`,t),()=>{window.removeEventListener(`mousemove`,e),window.removeEventListener(`mouseup`,t)}},[]),n.length===0?(0,i.jsx)(`div`,{className:o.empty,children:l(`corridorEmpty`)}):(0,i.jsxs)(`div`,{className:o.mapWrap,children:[(0,i.jsxs)(`svg`,{ref:k,viewBox:`0 0 560 320`,className:o.map,preserveAspectRatio:`xMidYMid meet`,role:`img`,"aria-label":l(`corridorAria`),children:[C.map((e,t)=>{let n=560/Math.max(C.length,1);return(0,i.jsx)(`rect`,{x:n*t,y:0,width:n,height:320,fill:t%2==0?`rgba(127,127,127,0.04)`:`transparent`},e)}),C.map((e,t)=>{let n=560/Math.max(C.length,1);return(0,i.jsx)(`text`,{x:n*(t+.5),y:14,textAnchor:`middle`,fill:`rgba(127,127,127,0.7)`,fontSize:`10`,fontFamily:`ui-sans-serif, system-ui`,children:d(l,e)},`${e}-label`)}),a.map((e,t)=>{let n=S.get(e.from),r=S.get(e.to);if(n===void 0||r===void 0)return null;let a=p[e.type]??p.related,s=O(e),c=w!==null&&!s;if(s){let t=(n.x+r.x)/2,o=(n.y+r.y)/2,s=r.x-n.x,c=r.y-n.y,l=Math.sqrt(s*s+c*c)||1,u=-c/l*6,d=s/l*6;return(0,i.jsx)(`path`,{d:`M ${String(n.x)} ${String(n.y)} Q ${String(t+u)} ${String(o+d)} ${String(r.x)} ${String(r.y)}`,fill:`none`,stroke:a.color,strokeWidth:a.width+1.2,strokeDasharray:a.dash,style:{transition:`stroke-width 200ms ease, d 240ms ease`},children:(0,i.jsx)(`title`,{children:`${n.title} --${e.type}--> ${r.title}`})},e.id)}return(0,i.jsx)(`line`,{x1:n.x,y1:n.y,x2:r.x,y2:r.y,stroke:a.color,strokeWidth:a.width,strokeDasharray:a.dash,opacity:c?.1:1,className:o.edgeFade,style:{transition:`opacity 200ms ease, stroke-width 200ms ease`,animationDelay:`${String(Math.min(t,24)*24)}ms`},children:(0,i.jsx)(`title`,{children:`${n.title} --${e.type}--> ${r.title}`})},e.id)}),x.map((e,t)=>{let n=f[e.kind]??`#7d8590`,r=c===e.id,a=w===e.id,l=D(e.id);return(0,i.jsxs)(`g`,{className:o.node,transform:`translate(${String(e.x)} ${String(e.y)})`,style:{cursor:A.current===e.id?`grabbing`:`grab`,opacity:l?.15:1,transition:`opacity 200ms ease`,animationDelay:`${String(Math.min(t,24)*24)}ms`},onMouseEnter:()=>{T(e.id)},onMouseLeave:()=>{T(t=>t===e.id?null:t)},onMouseDown:t=>M(t,e.id),onClick:()=>s?.(e.id),children:[(a||r)&&(0,i.jsx)(`circle`,{r:String(e.r+6),fill:n,fillOpacity:.18}),(0,i.jsx)(`circle`,{r:String(e.r),fill:n,fillOpacity:e.status===`active`?.88:.42,stroke:r?`var(--dsw-alias-brand-primary)`:a?n:`rgba(255,255,255,0.9)`,strokeWidth:r?2:a?1.5:1,style:{transition:`stroke 160ms ease, stroke-width 160ms ease`},children:(0,i.jsx)(`title`,{children:`${e.title}(${e.kind}/${e.status})`})}),r&&(0,i.jsx)(`circle`,{r:String(e.r+4),fill:`none`,stroke:n,strokeOpacity:.4,strokeWidth:1})]},e.id)}),w!==null&&(()=>{let e=S.get(w);if(e===void 0)return null;let t=Math.min(380,Math.max(8,e.x+14)),n=Math.min(260,Math.max(28,e.y-16)),r=(e.content??e.title).slice(0,120);return(0,i.jsxs)(`g`,{className:o.tooltip,transform:`translate(${String(t)} ${String(n)})`,children:[(0,i.jsx)(`rect`,{x:0,y:0,width:176,height:48,rx:6,ry:6,fill:`var(--dsw-alias-bg-base)`,stroke:`var(--dsw-alias-border-l2)`,strokeWidth:1,opacity:.96}),(0,i.jsx)(`text`,{x:8,y:16,fill:`var(--dsw-alias-label-primary)`,fontSize:`11`,fontWeight:600,fontFamily:`ui-sans-serif, system-ui`,children:d(l,e.kind)}),(0,i.jsx)(`text`,{x:8,y:32,fill:`var(--dsw-alias-label-secondary)`,fontSize:`10`,fontFamily:`ui-sans-serif, system-ui`,children:`${r}${(e.content??e.title).length>120?`…`:``}`})]})})()]},t),(0,i.jsxs)(`div`,{className:o.legend,children:[C.map(e=>(0,i.jsxs)(`span`,{className:o.legendItem,children:[(0,i.jsx)(`span`,{className:o.legendDot,style:{background:f[e]??`#7d8590`}}),d(l,e)]},e)),(0,i.jsx)(`span`,{className:o.legendItem,children:l(`corridorSummary`,{nodes:n.length,edges:a.length})})]}),(0,i.jsx)(`div`,{className:o.legend,style:{marginTop:2},children:Object.entries(p).map(([e,t])=>(0,i.jsxs)(`span`,{className:o.legendItem,children:[(0,i.jsx)(`svg`,{width:20,height:6,"aria-hidden":`true`,children:(0,i.jsx)(`line`,{x1:0,y1:3,x2:20,y2:3,stroke:t.color,strokeWidth:t.width,strokeDasharray:t.dash})}),(0,i.jsx)(`span`,{children:l(e===`supersedes`?`edgeSupersedes`:e===`contradicts`?`edgeContradicts`:`edgeOther`)})]},e))})]})}let _={info:3e3,success:3e3,warning:5e3,error:5e3},v=0;function y({items:e,onDismiss:t}){return(0,i.jsx)(`div`,{className:o.toastViewport,role:`region`,"aria-live":`polite`,"aria-label":`notifications`,children:e.map(e=>{let n=e.kind===`success`?o.toastSuccess:e.kind===`error`?o.toastError:e.kind===`warning`?o.toastWarning:o.toastInfo;return(0,i.jsxs)(`div`,{className:`${o.toast} ${n}`,role:e.kind===`error`||e.kind===`warning`?`alert`:`status`,children:[(0,i.jsx)(`span`,{className:o.toastBody,children:e.message}),(0,i.jsx)(`button`,{type:`button`,className:o.toastDismiss,"aria-label":`dismiss`,onClick:()=>{t(e.id)},children:`×`})]},e.id)})})}function b(){let[e,t]=(0,r.useState)([]),n=(0,r.useRef)(new Map),a=(0,r.useCallback)(e=>{t(t=>t.filter(t=>t.id!==e));let r=n.current.get(e);r!==void 0&&(clearTimeout(r),n.current.delete(e))},[]),o=(0,r.useCallback)((e,r,i)=>{v+=1;let o=v,s=i??_[e],c={id:o,kind:e,message:r,duration:s};t(e=>[...e,c]);let l=setTimeout(()=>{a(o)},s);n.current.set(o,l)},[a]);return(0,r.useEffect)(()=>()=>{for(let e of n.current.values())clearTimeout(e);n.current.clear()},[]),{toasts:e,push:o,dismiss:a,viewport:(0,i.jsx)(y,{items:e,onDismiss:a})}}let x=`dsh-engram.ui`;function S(e){try{return window.localStorage.getItem(e)??void 0}catch{return}}function C(e,t){try{window.localStorage.setItem(e,t)}catch{}}function w(e,t){return e!==void 0&&t.includes(e)}function T(e,t,n){let i=`${x}.${e}`,[a,o]=(0,r.useState)(()=>{let e=S(i);return w(e,n)?e:t});return(0,r.useEffect)(()=>{C(i,a)},[i,a]),[a,(0,r.useCallback)(e=>{o(e)},[])]}function E(e,t){let n=`${x}.${e}`,[i,a]=(0,r.useState)(()=>S(n)??t);return(0,r.useEffect)(()=>{C(n,i)},[n,i]),[i,(0,r.useCallback)(e=>{a(e)},[])]}let D=[`fact`,`preference`,`decision`,`episode`,`skill`],O={active:`statusActive`,archived:`statusArchived`,forgotten:`statusForgotten`},k={user:`scopeUser`,project:`scopeProject`,shared:`scopeShared`},A={fact:`roomFact`,preference:`roomPreference`,decision:`roomDecision`,episode:`roomEpisode`,skill:`roomSkill`},j={write:`opWrite`,"write-merge":`opWriteMerge`,update:`opUpdate`,forget:`opForget`,restore:`opRestore`,decay:`opDecay`,superseded:`opSuperseded`,"ingest-request":`opIngestRequest`,"ingest-done":`opIngestDone`,"outcome-report":`opOutcomeReport`,assess:`opAssess`,consolidation:`opConsolidation`,"review-answer":`opReviewAnswer`,"slot-assign":`opSlotAssign`,"slot-backfill":`opSlotBackfill`,"room-open":`opRoomOpen`,"search-rewrite-request":`opSearchRewrite`,"compress-request":`opCompressRequest`,"distill-request":`opDistillRequest`,"profile-edit":`opProfileEdit`},M={supersededBy:`relSupersededBy`,supersedes:`relSupersedes`,contradicts:`relContradicts`,related:`relRelated`},N={kind:`labelKind`,scope:`labelScope`,status:`labelStatus`};function P(e,t){let n=c[t];return n===void 0?t:e(n)}function ee(e){return`${o.pill} ${o[A[e]??`kind`]??``}`}function F(e,t){let n=j[t];return n===void 0?t:e(n)}function te(e,t,n){if(n===null)return``;if(t===`profile-edit`){try{let t=JSON.parse(n),r=Number(t.toVersion),i=Number(t.chars);if(t.action===`edit`&&t.fromVersion===null)return` `+e(`profileOpCreate`,{to:r,chars:i});let a=Number(t.fromVersion);if(t.action===`edit`)return` `+e(`profileOpEdit`,{from:a,to:r,chars:i});let o=Number(t.restoredFrom);if(t.action===`rollback`&&Number.isInteger(a)&&Number.isInteger(r)&&Number.isInteger(o))return` `+e(`profileOpRollback`,{from:a,to:r,restored:o,chars:i})}catch{}return` ${n}`}if(t!==`write`&&t!==`update`&&t!==`superseded`)return` ${n}`;try{let t=JSON.parse(n),r=Object.entries(t);return r.length===0?` ${n}`:` `+r.map(([t,n])=>{let r=N[t];return r===void 0?`${t}=${String(n)}`:t===`kind`&&typeof n==`string`?`${e(r)}=${P(e,n)}`:t===`scope`&&(n===`user`||n===`project`)?`${e(r)}=${e(k[n])}`:`${e(r)}=${String(n)}`}).join(` · `)}catch{return` ${n}`}}function ne(e,t){if(t.sourceSessionId===null)return e(`sourceExplicit`);let n=`${t.sourceSessionId.slice(0,16)}…`;return e(`sourceSession`,{id:t.sourceRound===null?n:`${n} ${e(`round`,{n:t.sourceRound})}`})}let re=null,ie=null;function I(e,t){if(/(?:^|[?&])scope=project(?:&|$)/.test(e))return!0;let n=t?.body;if(typeof n!=`string`||n===``)return!1;try{let e=JSON.parse(n);return typeof e==`object`&&!!e&&e.scope===`project`}catch{return!1}}function L(e,t){try{let n=JSON.parse(e);return typeof n!=`object`||!n||Array.isArray(n)?void 0:JSON.stringify({...n,project:t})}catch{return}}function R(e,t){return`${e}${e.includes(`?`)?`&`:`?`}project=${encodeURIComponent(t)}`}async function z(e,t,n=!1){let r=re,i=e,a=t,o=r!==null&&(n||I(e,t));if(o){let n=t?.body,o=typeof n==`string`&&n!==``?L(n,r):void 0;o!==void 0&&t!==void 0?a={...t,body:o}:i=R(e,r)}let s=await fetch(`/api/engram/${i}`,a),c=await s.json();if(!s.ok)throw o&&s.status===404&&c.error===`unknown project`&&ie?.(),Error(c.error??`HTTP ${String(s.status)}`);return c}let ae=[];function B(){}function V(e,t){if(e===void 0)return B;let n=e.subscribe(t);return typeof n==`function`?n:B}function oe(e,t){let n=(0,r.useCallback)(t=>V(e?.list,t),[e]),i=(0,r.useCallback)(e=>V(t?.list,e),[t]),a=(0,r.useSyncExternalStore)(i,()=>t?.list.getSnapshot().current??null),o=(0,r.useSyncExternalStore)(n,()=>e?.list.getSnapshot().items??ae),s=e!==void 0&&t!==void 0;return!s||a===null?{workspace:null,available:s}:{workspace:o.find(e=>e.sessionIds.includes(a))??null,available:s}}function H(e){return e.replace(/\//g,`\\`).replace(/\\+$/,``).toLowerCase()}function se(e){let t=e.replace(/[/\\]+$/,``),n=Math.max(t.lastIndexOf(`\\`),t.lastIndexOf(`/`));return n<0?t:t.slice(n+1)}function ce(e){let t=/^project-([0-9a-f]+)\.db$/i.exec(e);return t===null?e.slice(0,14):`project-${t[1].slice(0,8)}…`}function U(e){if(typeof e.path!=`string`||e.path===``)return{name:ce(e.dbName),unregistered:!0};let t=e.title?.trim()??``;return t===``?{name:se(e.path),unregistered:e.kind!==`workspace`}:{name:t,unregistered:e.kind!==`workspace`}}function le(e,t){let n=U(t),r=[n.unregistered?`${n.name} · ${e(`projectUnregistered`)}`:n.name];return r.push(t.memories===null?`—`:e(`projectMemories`,{n:t.memories})),r.join(` · `)}function ue(e,t){if(e===null||t===null)return;let n=e.items.find(e=>e.workspaceId===t.workspaceId);if(n!==void 0)return n;let r=H(t.path);return e.items.find(e=>typeof e.path==`string`&&H(e.path)===r)}function de(e,t){if(t.mode!==`follow`){let n=t.items.find(e=>e.dbName===t.mode);if(n===void 0)return{label:e(`projectPinned`,{name:`${ce(t.mode)} · ${e(`projectUnregistered`)}`}),title:t.mode,tone:`pinned`};let r=U(n);return{label:e(`projectPinned`,{name:r.unregistered?`${r.name} · ${e(`projectUnregistered`)}`:r.name}),title:n.path??n.dbName,tone:`pinned`}}if(!t.available)return{label:e(`projectNoWorkspace`),title:e(`projectFollowHint`),tone:`muted`};if(t.followed===void 0)return{label:e(`projectPinned`,{name:e(`projectProcessDefault`)}),title:t.processDefaultPath??e(`projectFollowHint`),tone:`pinned`};let n=U(t.followed);return{label:e(`projectFollowNamed`,{name:n.unregistered?`${n.name} · ${e(`projectUnregistered`)}`:n.name}),title:t.followed.path??e(`projectFollowHint`),tone:`follow`}}function W(e){return new Date(e).toLocaleString(navigator.language||`zh-CN`,{hour12:!1})}function fe(e,t){let n=Math.max(0,Date.now()-t),r=Math.floor(n/6e4);if(r<1)return e(`timeJustNow`);if(r<60)return e(`timeMinutesAgo`,{n:r});let i=Math.floor(r/60);return i<48?e(`timeHoursAgo`,{n:i}):e(`timeDaysAgo`,{n:Math.floor(i/24)})}function G({label:e,value:t,tail:n,secondary:r}){return(0,i.jsxs)(`div`,{className:o.metric,children:[(0,i.jsx)(`span`,{className:o.metricLabel,children:e}),(0,i.jsx)(`b`,{className:r===!0?`${o.metricValue} ${o.metricValueSecondary}`:o.metricValue,children:t}),n!==void 0&&(0,i.jsx)(`span`,{className:o.metricTail,children:n})]})}function K({score:e}){let t=2*Math.PI*24,n=Math.min(100,Math.max(0,e))/100*t,r=e>=80?`var(--dsw-alias-state-success-primary)`:e>=50?`var(--dsw-alias-state-warn-primary)`:`var(--dsw-alias-state-error-primary)`;return(0,i.jsxs)(`div`,{className:o.ring,role:`meter`,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":e,children:[(0,i.jsxs)(`svg`,{width:`56`,height:`56`,viewBox:`0 0 56 56`,"aria-hidden":`true`,children:[(0,i.jsx)(`circle`,{cx:`28`,cy:`28`,r:24,fill:`none`,stroke:`var(--dsw-alias-border-l2)`,strokeWidth:`4`}),(0,i.jsx)(`circle`,{cx:`28`,cy:`28`,r:24,fill:`none`,stroke:r,strokeWidth:`4`,strokeLinecap:`round`,strokeDasharray:`${n.toFixed(1)} ${t.toFixed(1)}`})]}),(0,i.jsx)(`b`,{children:e})]})}function pe({value:e,conf:t}){return(0,i.jsx)(`span`,{className:t===!0?`${o.meter} ${o.conf}`:o.meter,children:(0,i.jsx)(`i`,{style:{width:`${String(Math.round(Math.min(1,Math.max(0,e))*100))}%`}})})}function me({ids:e}){return(0,i.jsx)(`div`,{className:o.relChips,children:e.map(e=>(0,i.jsx)(`span`,{className:o.relChip,title:e,children:e.slice(0,18)},e))})}function he({t:e,recordId:t,scope:n,project:a}){let[s,c]=(0,r.useState)(null),[l,u]=(0,r.useState)(null);if((0,r.useEffect)(()=>{let e=!1;return z(`review?scope=${n}&id=${encodeURIComponent(t)}`).then(t=>{e||c(t)}).catch(t=>{e||u(t.message)}),()=>{e=!0}},[t,n,a,e]),l!==null)return(0,i.jsx)(`div`,{className:o.expandLoading,children:e(`loadFailed`,{msg:l})});if(s===null)return(0,i.jsx)(`div`,{className:o.expandLoading,children:e(`loading`)});let{record:d}=s,f=[`supersededBy`,`supersedes`,`contradicts`,`related`].map(e=>({key:e,label:M[e],ids:s[e]??[]})).filter(e=>e.ids.length>0),p=s.operations??[];return(0,i.jsxs)(`div`,{className:o.reviewGrid,children:[(0,i.jsxs)(`div`,{children:[(0,i.jsxs)(`dl`,{className:o.attrGrid,children:[(0,i.jsx)(`dt`,{children:e(`labelContent`)}),(0,i.jsx)(`dd`,{children:d.content}),(0,i.jsx)(`dt`,{children:e(`labelKind`)}),(0,i.jsx)(`dd`,{children:(0,i.jsx)(`span`,{className:ee(d.kind),children:P(e,d.kind)})}),(0,i.jsx)(`dt`,{children:e(`labelStatus`)}),(0,i.jsx)(`dd`,{children:(0,i.jsx)(`span`,{className:`${o.pill} ${o[`status${d.status.charAt(0).toUpperCase()}${d.status.slice(1)}`]??``}`,children:e(O[d.status])})}),(0,i.jsx)(`dt`,{children:e(`importance`)}),(0,i.jsxs)(`dd`,{children:[d.importance.toFixed(2),(0,i.jsx)(pe,{value:d.importance})]}),(0,i.jsx)(`dt`,{children:e(`confidence`)}),(0,i.jsxs)(`dd`,{children:[d.confidence.toFixed(2),(0,i.jsx)(pe,{value:d.confidence,conf:!0})]}),(0,i.jsx)(`dt`,{children:e(`detailSource`)}),(0,i.jsx)(`dd`,{children:ne(e,d)}),(0,i.jsx)(`dt`,{children:e(`labelCreated`)}),(0,i.jsx)(`dd`,{children:W(d.createdAt)})]}),f.map(({key:t,label:n,ids:r})=>(0,i.jsxs)(`div`,{className:o.relBlock,children:[(0,i.jsx)(`h5`,{children:n===void 0?t:e(n)}),(0,i.jsx)(me,{ids:r})]},t))]}),(0,i.jsxs)(`div`,{children:[(s.revisions??[]).length>0&&(0,i.jsxs)(`div`,{className:o.relBlock,children:[(0,i.jsx)(`h5`,{children:e(`detailRevisions`)}),(0,i.jsx)(`ul`,{className:o.timeline,children:s.revisions.map((t,n)=>(0,i.jsxs)(`li`,{children:[(0,i.jsx)(`time`,{children:W(t.supersededAt)}),(0,i.jsx)(`b`,{children:P(e,t.kind)}),` `,t.content]},n))})]}),p.length>0&&(0,i.jsxs)(`div`,{className:o.relBlock,children:[(0,i.jsx)(`h5`,{children:e(`detailOperations`)}),(0,i.jsx)(`ul`,{className:o.timeline,children:p.map((t,n)=>(0,i.jsxs)(`li`,{children:[(0,i.jsx)(`time`,{children:W(t.at)}),(0,i.jsx)(`b`,{children:F(e,t.op)}),te(e,t.op,t.detail)]},n))})]})]})]})}function ge({t:e,record:t,onClose:n,onSaved:a,toast:s}){let[c,l]=(0,r.useState)(t.content),[u,d]=(0,r.useState)(t.kind),[f,p]=(0,r.useState)(t.importance);return(0,i.jsxs)(`div`,{className:o.editForm,children:[(0,i.jsxs)(`div`,{children:[(0,i.jsx)(`label`,{className:o.fieldLabel,children:e(`labelContent`)}),(0,i.jsx)(`textarea`,{className:o.input,rows:3,value:c,onChange:e=>l(e.target.value)})]}),(0,i.jsxs)(`div`,{children:[(0,i.jsx)(`label`,{className:o.fieldLabel,children:e(`labelKind`)}),(0,i.jsx)(`select`,{className:o.input,value:u,onChange:e=>d(e.target.value),children:D.map(t=>(0,i.jsx)(`option`,{value:t,children:P(e,t)},t))})]}),(0,i.jsx)(`div`,{className:o.fieldRow,children:(0,i.jsxs)(`div`,{children:[(0,i.jsx)(`label`,{className:o.fieldLabel,children:`${e(`importance`)} ${f.toFixed(2)}`}),(0,i.jsx)(`input`,{type:`range`,min:0,max:1,step:.05,value:f,onChange:e=>p(Number(e.target.value))})]})}),(0,i.jsxs)(`div`,{className:o.modalFoot,children:[(0,i.jsx)(`button`,{type:`button`,className:o.button,onClick:n,children:e(`cancel`)}),(0,i.jsx)(`button`,{type:`button`,className:`${o.button} ${o.primary}`,onClick:()=>{z(`update`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({id:t.id,scope:t.scope,content:c,kind:u,importance:f})}).then(a).catch(e=>{s.push(`error`,e.message)})},children:e(`saveWithHint`)})]})]})}let q={fts:`viaFts`,vec:`viaVec`,both:`viaBoth`};function _e({t:e,scope:t}){let[n,a]=(0,r.useState)(``),[s,c]=(0,r.useState)(t),[l,u]=(0,r.useState)(null),[d,f]=(0,r.useState)(!1),[p,m]=(0,r.useState)(null);(0,r.useEffect)(()=>{c(t)},[t]);let h=()=>{n.trim()===``||d||(f(!0),z(`search-test?q=${encodeURIComponent(n.trim())}&scope=${s}`,void 0,!0).then(e=>{u(e),m(null)}).catch(e=>m(e.message)).finally(()=>f(!1)))},g=l?.hits??[];return(0,i.jsxs)(`div`,{children:[(0,i.jsxs)(`div`,{className:o.benchBar,children:[(0,i.jsx)(`input`,{className:`${o.input} ${o.search}`,placeholder:e(`benchPlaceholder`),value:n,onChange:e=>a(e.target.value),onKeyDown:e=>{e.key===`Enter`&&h()}}),(0,i.jsxs)(`select`,{className:o.input,value:s,onChange:e=>c(e.target.value),children:[(0,i.jsx)(`option`,{value:`all`,children:e(`benchScopeAll`)}),(0,i.jsx)(`option`,{value:`user`,children:e(`scopeUser`)}),(0,i.jsx)(`option`,{value:`project`,children:e(`scopeProject`)}),(0,i.jsx)(`option`,{value:`shared`,children:e(`scopeShared`)})]}),(0,i.jsx)(`button`,{type:`button`,className:`${o.button} ${o.primary}`,disabled:d||n.trim()===``,onClick:h,children:e(`benchRun`)})]}),p!==null&&(0,i.jsx)(`div`,{className:o.expandLoading,children:e(`loadFailed`,{msg:p})}),l!==null&&p===null&&(0,i.jsxs)(`div`,{className:o.benchMeta,children:[(0,i.jsx)(`span`,{children:e(`benchHits`,{n:g.length})}),l.degraded&&(0,i.jsx)(`span`,{className:o.degradedNote,children:e(`benchDegraded`)})]}),(0,i.jsx)(`div`,{className:o.benchList,children:g.map(t=>(0,i.jsxs)(`div`,{className:o.benchRow,children:[(0,i.jsxs)(`div`,{className:o.benchHead,children:[(0,i.jsx)(`span`,{className:o.viaChip,children:e(q[t.via])}),t.viaEdge!==void 0&&(0,i.jsxs)(`span`,{className:o.viaChip,title:`${t.viaEdge.type} ${t.viaEdge.from}`,children:[e(`viaEdgeLabel`),` · `,t.viaEdge.type]}),(0,i.jsx)(`span`,{className:ee(t.kind),children:P(e,t.kind)}),(0,i.jsx)(`span`,{className:o.benchScore,children:t.score.toFixed(4)})]}),(0,i.jsx)(`div`,{className:o.benchContent,children:t.content}),(0,i.jsx)(`span`,{className:o.benchId,title:t.id,children:t.id})]},t.id))}),l!==null&&g.length===0&&p===null&&(0,i.jsx)(`div`,{className:o.benchEmpty,children:e(`benchEmpty`)})]})}function ve(e,t){if(t===null)return``;try{let n=JSON.parse(t);if(typeof n.round==`number`&&typeof n.userText==`string`){let t=typeof n.mode==`string`?` · ${n.mode}`:``;return`${e(`round`,{n:n.round})}${t} · ${n.userText.slice(0,48)}`}if(typeof n.query==`string`&&Array.isArray(n.queries))return`${e(`benchRewrite`,{n:n.queries.length})} · ${n.query.slice(0,36)}`;if(typeof n.count==`number`&&Object.keys(n).length===1)return e(`benchCompress`,{n:n.count});if(typeof n.batchId==`string`&&typeof n.sufficient==`boolean`){let t=Array.isArray(n.refs)?n.refs.length:0;return`${n.batchId} · ${e(n.sufficient?`assessAdequate`:`assessInadequate`)} · ${e(`assessRefs`,{n:t})}`}if(typeof n.archived==`number`&&typeof n.merged==`number`&&typeof n.skipped==`number`)return`${n.scope===`project`?e(`scopeProject`):e(`scopeUser`)} · ${e(`consolidateArchived`,{n:n.archived})} · ${e(`consolidateMerged`,{n:n.merged})} · ${e(`consolidateSkipped`,{n:n.skipped})}`;if(typeof n.archived==`number`&&n.merged===void 0)return e(`decayArchived`,{n:n.archived});if(typeof n.assigned==`number`)return e(`slotBackfilled`,{n:n.assigned});if(typeof n.room==`string`)return e(`roomOpened`,{room:n.room});if(typeof n.grade==`number`&&typeof n.nextIntervalDays==`number`)return e(`reviewAnswered`,{grade:n.grade,days:n.nextIntervalDays})}catch{}return t.length>56?`${t.slice(0,56)}…`:t}let ye={all:null,write:[`write`,`update`,`forget`,`restore`,`decay`,`superseded`,`outcome-report`],ingest:[`ingest-request`,`ingest-done`],retrieve:[`search-rewrite-request`,`compress-request`,`assess`],organize:[`distill-request`,`consolidation`,`slot-assign`,`slot-backfill`,`room-open`,`review-answer`,`profile-edit`]},be={all:`logFilterAll`,write:`logFilterWrite`,ingest:`logFilterIngest`,retrieve:`logFilterRetrieve`,organize:`logFilterOrganize`},J={write:`logDotWrite`,ingest:`logDotIngest`,retrieve:`logDotRetrieve`,organize:`logDotOrganize`};function Y(e){for(let t of[`write`,`ingest`,`retrieve`,`organize`])if(ye[t]?.includes(e)===!0)return t;return`all`}function xe(e){let t=Y(e),n=o.logDot??``;return t===`all`?n:`${n} ${o[J[t]]??``}`}function Se(e,t){let n=e.split(`
1
+ window.__ModuleLoader__.load({id:`@kenz1117/dsh-engram`,factory:e=>{var t={exports:{}},n=t.exports;Object.defineProperty(n,Symbol.toStringTag,{value:`Module`});let r=e("react"),i=e("react/jsx-runtime"),a=`@kenz1117/dsh-engram/panel.module.css`;if(typeof document<`u`&&document.querySelector(`style[data-plugin-css=`+JSON.stringify(a)+`]`)===null){let e=document.createElement(`style`);e.dataset.plugin=`@kenz1117/dsh-engram`,e.dataset.pluginCss=a,e.textContent=`:root{--ease-spring:cubic-bezier(.32, .72, 0, 1);--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-in-out:cubic-bezier(.65, 0, .35, 1);--dur-fast:.14s;--dur-base:.22s;--dur-slow:.36s;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--radius-control:8px;--radius-card:12px;--fs-micro:11px;--fs-body:12px;--fs-ctrl:13px;--fs-display:14px;--fs-tag:10px;--brand-1:color-mix(in srgb, #f59e0b 90%, var(--dsw-alias-label-primary));--brand-2:color-mix(in srgb, #f43f5e 90%, var(--dsw-alias-label-primary));--brand-3:color-mix(in srgb, #fb923c 88%, var(--dsw-alias-label-primary));--brand-grad:linear-gradient(135deg, var(--brand-1) 0%, var(--brand-3) 48%, var(--brand-2) 100%);--brand-grad-line:linear-gradient(90deg, var(--brand-1) 0%, var(--brand-2) 100%)}.bWwFiW_panel{max-width:1240px;animation:bWwFiW_panelIn var(--dur-slow) var(--ease-out) both;isolation:isolate;margin:0 auto;position:relative}.bWwFiW_panel:before{content:"";background:radial-gradient(240px 240px at calc(100% - 120px) 100px, color-mix(in srgb, var(--brand-1) 85%, transparent) 0%, transparent 72%);opacity:.32;filter:blur(40px);pointer-events:none;z-index:-1;animation:bWwFiW_watermarkBreath 20s var(--ease-in-out) infinite alternate;position:absolute;inset:0}.bWwFiW_panel:after{content:"";background:radial-gradient(210px 210px at calc(0% + 80px) calc(100% - 60px), color-mix(in srgb, var(--brand-2) 80%, transparent) 0%, transparent 72%);opacity:.16;filter:blur(48px);pointer-events:none;z-index:-1;position:absolute;inset:0}@keyframes bWwFiW_watermarkBreath{0%{opacity:.26}to{opacity:.38}}@media (prefers-reduced-motion:reduce){.bWwFiW_panel:before{animation:none}}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:color-mix(in srgb, currentColor 20%, transparent);background-clip:padding-box;border:2px solid #0000;border-radius:4px}::-webkit-scrollbar-track{background:0 0}@keyframes bWwFiW_panelIn{0%{opacity:0;filter:blur(2px);transform:translateY(6px)}to{opacity:1;filter:blur();transform:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.bWwFiW_header{justify-content:space-between;align-items:center;gap:var(--space-3);margin-bottom:var(--space-4);z-index:5;flex-wrap:wrap;min-height:36px;display:flex;position:relative}.bWwFiW_headerActions{gap:var(--space-2);flex-shrink:0;align-items:center;display:flex}.bWwFiW_brandIcon{stroke:currentColor;stroke-width:1.75px;stroke-linecap:round;stroke-linejoin:round;fill:none;vertical-align:middle;flex:none;width:14px;height:14px;display:inline-block}.bWwFiW_brandIcon.bWwFiW_lg{width:16px;height:16px}.bWwFiW_brandIcon.bWwFiW_sm{width:12px;height:12px}.bWwFiW_wsSelect{flex:none;width:170px}.bWwFiW_dueBadge{height:28px;padding:0 var(--space-3);border-radius:var(--radius-control);border:1px solid color-mix(in srgb, var(--dsw-alias-state-error-primary) 38%, var(--dsw-alias-border-l2));background:color-mix(in srgb, var(--dsw-alias-state-error-primary) 8%, var(--dsw-alias-bg-layer-1));color:var(--dsw-alias-label-primary);font-size:var(--fs-body);font-variant-numeric:tabular-nums;cursor:pointer;transition:background var(--dur-fast) var(--ease-spring), border-color var(--dur-fast) var(--ease-spring), transform 80ms var(--ease-spring);align-items:center;gap:6px;line-height:1;display:inline-flex}.bWwFiW_dueBadge:hover{border-color:var(--dsw-alias-state-error-primary);background:color-mix(in srgb, var(--dsw-alias-state-error-primary) 14%, var(--dsw-alias-bg-layer-1))}.bWwFiW_dueBadge:active{transform:scale(.96)}.bWwFiW_dueIcon{stroke:currentColor;stroke-width:1.75px;stroke-linecap:round;stroke-linejoin:round;fill:none;opacity:.9;flex:none;width:12px;height:12px}.bWwFiW_dueDot{background:var(--dsw-alias-state-error-primary);border-radius:50%;flex:none;width:6px;height:6px}.bWwFiW_tabs{align-items:flex-end;gap:var(--space-3);border-bottom:1px solid var(--dsw-alias-border-l2);margin-bottom:var(--space-4);display:flex;position:relative;overflow-x:auto}.bWwFiW_tabs:after{content:"";background:var(--dsw-alias-border-l2);height:1px;position:absolute;bottom:-1px;left:0;right:0}.bWwFiW_tabItem{padding:var(--space-2) 0 var(--space-3);color:var(--dsw-alias-label-tertiary);font-size:var(--fs-ctrl);cursor:pointer;transition:color var(--dur-fast) var(--ease-spring);white-space:nowrap;background:0 0;border:0;flex:none;align-items:center;gap:6px;font-weight:500;display:inline-flex;position:relative}.bWwFiW_tabItem:hover{color:var(--dsw-alias-label-secondary)}.bWwFiW_tabItem.bWwFiW_on{color:var(--dsw-alias-label-primary)}.bWwFiW_tabItem.bWwFiW_on:after{content:"";background:var(--brand-grad-line);height:2px;box-shadow:0 1px 6px -1px color-mix(in srgb, var(--brand-2) 50%, transparent);animation:bWwFiW_tabUnderline var(--dur-base) var(--ease-spring) both;border-radius:2px 2px 0 0;position:absolute;bottom:-1px;left:-2px;right:-2px}.bWwFiW_tabIcon{stroke:currentColor;stroke-width:1.75px;stroke-linecap:round;stroke-linejoin:round;fill:none;flex:none;width:14px;height:14px}.bWwFiW_tabItem.bWwFiW_on .bWwFiW_tabIcon{color:color-mix(in srgb, var(--brand-2) 65%, var(--dsw-alias-label-primary))}@keyframes bWwFiW_tabUnderline{0%{opacity:0;transform:scaleX(.4)}to{opacity:1;transform:scaleX(1)}}.bWwFiW_tabItem small{margin-left:var(--space-2);font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums}.bWwFiW_tabPanel{animation:bWwFiW_fadeSoft var(--dur-base) var(--ease-spring) both}.bWwFiW_drawerLayer{z-index:41;height:0;position:sticky;top:0}.bWwFiW_drawerScrim{background:color-mix(in srgb, var(--dsw-alias-label-primary) 18%, transparent);z-index:40;animation:bWwFiW_scrimIn var(--dur-base) var(--ease-spring) both;position:absolute;inset:0}@keyframes bWwFiW_scrimIn{0%{opacity:0}to{opacity:1}}.bWwFiW_drawer{background:var(--dsw-alias-bg-base);border:1px solid var(--dsw-alias-border-l2);border-radius:var(--radius-card);max-width:560px;max-height:min(560px,100vh - 200px);box-shadow:0 24px 56px -20px color-mix(in srgb, var(--dsw-alias-label-primary) 38%, transparent);animation:bWwFiW_drawerIn var(--dur-base) var(--ease-spring) both;flex-direction:column;margin:0 auto;display:flex;position:absolute;top:12px;left:24px;right:24px;overflow:hidden}@keyframes bWwFiW_drawerIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.bWwFiW_drawerHead{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--dsw-alias-border-l2);flex-shrink:0;display:flex}.bWwFiW_drawerTitle{align-items:baseline;gap:var(--space-2);flex:1;min-width:0;display:flex}.bWwFiW_drawerTitle h3{font-size:var(--fs-display);color:var(--dsw-alias-label-primary);margin:0;font-weight:600}.bWwFiW_drawerTitle span{font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;max-width:240px;font-family:ui-monospace,SF Mono,Menlo,monospace;overflow:hidden}.bWwFiW_drawerClose{border-radius:var(--radius-control);width:28px;height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;transition:background var(--dur-fast) var(--ease-spring), color var(--dur-fast) var(--ease-spring), border-color var(--dur-fast) var(--ease-spring);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;display:inline-flex}.bWwFiW_drawerClose:hover{background:var(--dsw-alias-fill-tsp-secondary);border-color:var(--dsw-alias-border-l2);color:var(--dsw-alias-label-primary)}.bWwFiW_drawerClose svg{display:block}.bWwFiW_drawerBody{min-width:0;min-height:0;padding:var(--space-4);scrollbar-width:none;overflow-wrap:anywhere;flex:1;overflow:hidden auto}.bWwFiW_drawerBody::-webkit-scrollbar{display:none}.bWwFiW_reviewGrid{gap:var(--space-5);grid-template-columns:minmax(0,1fr) minmax(0,1fr);display:grid}@media (width<=720px){.bWwFiW_reviewGrid{grid-template-columns:1fr}}.bWwFiW_button{height:28px;padding:0 var(--space-3);background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-secondary);border:1px solid var(--dsw-alias-border-l2);border-radius:var(--radius-control);cursor:pointer;font-size:var(--fs-body);transition:color var(--dur-fast) var(--ease-spring), border-color var(--dur-fast) var(--ease-spring), background var(--dur-fast) var(--ease-spring), transform 80ms var(--ease-spring);justify-content:center;align-items:center;gap:5px;line-height:1;display:inline-flex}.bWwFiW_button:hover{color:var(--dsw-alias-label-primary);border-color:color-mix(in srgb, var(--dsw-alias-brand-primary) 55%, var(--dsw-alias-border-l2));background:color-mix(in srgb, var(--dsw-alias-brand-primary) 5%, var(--dsw-alias-bg-layer-1))}.bWwFiW_button:active{transform:scale(.96)}.bWwFiW_button:disabled{opacity:.45;cursor:default;transform:none}.bWwFiW_button.bWwFiW_danger{color:var(--dsw-alias-state-error-primary);border-color:color-mix(in srgb, var(--dsw-alias-state-error-primary) 35%, var(--dsw-alias-border-l2))}.bWwFiW_button.bWwFiW_danger:hover{color:var(--dsw-alias-state-error-primary);border-color:var(--dsw-alias-state-error-primary);background:color-mix(in srgb, var(--dsw-alias-state-error-primary) 6%, var(--dsw-alias-bg-layer-1))}.bWwFiW_button.bWwFiW_primary{background:var(--dsw-alias-brand-primary);border-color:var(--dsw-alias-brand-primary);color:var(--dsw-alias-label-primary-foreground)}.bWwFiW_button.bWwFiW_primary:hover{background:color-mix(in srgb, var(--dsw-alias-brand-primary) 88%, transparent);border-color:color-mix(in srgb, var(--dsw-alias-brand-primary) 88%, transparent);color:var(--dsw-alias-label-primary-foreground);filter:brightness(1.05)}.bWwFiW_button.bWwFiW_primary:disabled{background:color-mix(in srgb, var(--dsw-alias-brand-primary) 40%, transparent);opacity:.6;border-color:#0000}.bWwFiW_input{background:var(--dsw-alias-bg-layer-1);height:28px;color:var(--dsw-alias-label-primary);border:1px solid var(--dsw-alias-border-l2);transition:border-color var(--dur-fast) var(--ease-spring), box-shadow var(--dur-fast) var(--ease-spring);border-radius:8px;padding:0 10px;font-size:12px;line-height:1}.bWwFiW_input::placeholder{color:var(--dsw-alias-label-tertiary)}.bWwFiW_input:hover{border-color:color-mix(in srgb, var(--dsw-alias-label-primary) 22%, var(--dsw-alias-border-l2))}.bWwFiW_input:focus-visible{border-color:var(--dsw-alias-brand-primary);box-shadow:0 0 0 3px color-mix(in srgb, var(--dsw-alias-brand-primary) 18%, transparent);outline:none}.bWwFiW_search{flex:1;min-width:120px}select.bWwFiW_input{appearance:none;background-image:linear-gradient(45deg, transparent 50%, var(--dsw-alias-label-tertiary) 50%), linear-gradient(135deg, var(--dsw-alias-label-tertiary) 50%, transparent 50%);transition:background-position var(--dur-fast) var(--ease-spring);background-position:calc(100% - 13px) 12px,calc(100% - 8px) 12px;background-repeat:no-repeat;background-size:5px 5px;padding-right:24px}.bWwFiW_segGroup{background:var(--dsw-alias-fill-tsp-secondary);border-radius:9px;gap:2px;padding:2px;display:inline-flex;position:relative}.bWwFiW_segItem{height:24px;color:var(--dsw-alias-label-tertiary);cursor:pointer;font-size:var(--fs-body);transition:color var(--dur-fast) var(--ease-spring), transform 80ms var(--ease-spring);z-index:1;white-space:nowrap;background:0 0;border:0;border-radius:7px;align-items:center;gap:5px;padding:0 10px;line-height:1;display:inline-flex;position:relative}.bWwFiW_segItem:hover{color:var(--dsw-alias-label-secondary)}.bWwFiW_segItem:active{transform:scale(.96)}.bWwFiW_segItem.bWwFiW_on{color:var(--dsw-alias-label-primary)}.bWwFiW_scopeIcon{stroke:currentColor;stroke-width:1.75px;stroke-linecap:round;stroke-linejoin:round;fill:none;opacity:.85;flex:none;width:12px;height:12px}.bWwFiW_segIndicator{z-index:0;background:var(--dsw-alias-bg-layer-1);box-shadow:0 1px 2px color-mix(in srgb, var(--dsw-alias-label-primary) 10%, transparent), inset 0 0 0 1px color-mix(in srgb, var(--dsw-alias-border-l2) 60%, transparent);transition:left var(--dur-base) var(--ease-spring), width var(--dur-base) var(--ease-spring), opacity var(--dur-fast) var(--ease-spring);pointer-events:none;border-radius:7px;position:absolute;top:2px;bottom:2px}.bWwFiW_segScope{border-radius:10px;padding:3px}.bWwFiW_layout{gap:var(--space-5);margin-top:var(--space-5);grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);align-items:start;display:grid}.bWwFiW_mainCol{gap:var(--space-5);flex-direction:column;min-width:0;display:flex}.bWwFiW_sideCol{gap:var(--space-5);min-width:0;top:var(--space-3);flex-direction:column;display:flex;position:sticky}@media (width<=960px){.bWwFiW_layout{gap:var(--space-4);grid-template-columns:1fr}.bWwFiW_sideCol{position:static}}.bWwFiW_toolbarRow{gap:var(--space-2);margin-bottom:var(--space-2);flex-wrap:wrap;align-items:center;display:flex}.bWwFiW_toolbarRow .bWwFiW_search{flex:1;min-width:180px}.bWwFiW_chipRow{gap:var(--space-1);flex-wrap:wrap;display:flex}.bWwFiW_toolbarRow+.bWwFiW_chipRow{margin-bottom:var(--space-3)}.bWwFiW_chip{padding:3px var(--space-3);border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-tertiary);font-size:var(--fs-micro);letter-spacing:.02em;cursor:pointer;transition:background var(--dur-fast) var(--ease-spring), border-color var(--dur-fast) var(--ease-spring), color var(--dur-fast) var(--ease-spring);background:0 0;border-radius:999px}.bWwFiW_chip:hover{background:color-mix(in srgb, var(--dsw-alias-brand-primary) 6%, var(--dsw-alias-bg-layer-1));color:var(--dsw-alias-label-secondary)}.bWwFiW_chipOn{background:color-mix(in srgb, var(--dsw-alias-brand-primary) 14%, var(--dsw-alias-bg-layer-1));border-color:color-mix(in srgb, var(--dsw-alias-brand-primary) 45%, var(--dsw-alias-border-l2));color:var(--dsw-alias-label-primary)}.bWwFiW_chipOn:hover{background:color-mix(in srgb, var(--dsw-alias-brand-primary) 20%, var(--dsw-alias-bg-layer-1))}.bWwFiW_exportWrap{display:inline-flex;position:relative}.bWwFiW_exportCaret{opacity:.7;transition:transform var(--dur-fast) var(--ease-spring);margin-left:4px;font-size:9px}.bWwFiW_exportWrap button[aria-expanded=true] .bWwFiW_exportCaret{transform:rotate(180deg)}.bWwFiW_exportMenu{background:var(--dsw-alias-bg-base);border:1px solid var(--dsw-alias-border-l2);min-width:220px;box-shadow:0 8px 24px -10px color-mix(in srgb, var(--dsw-alias-label-primary) 30%, transparent);z-index:30;animation:bWwFiW_drawerIn var(--dur-base) var(--ease-spring) both;border-radius:10px;padding:4px;position:absolute;top:calc(100% + 4px);right:0}.bWwFiW_exportItem{color:var(--dsw-alias-label-primary);transition:background var(--dur-fast) var(--ease-spring);border-radius:7px;flex-direction:column;gap:2px;padding:8px 10px;text-decoration:none;display:flex}.bWwFiW_exportItem:hover{background:color-mix(in srgb, var(--dsw-alias-brand-primary) 8%, var(--dsw-alias-bg-layer-1))}.bWwFiW_exportItemLabel{font-size:13px;font-weight:500;line-height:1.2}.bWwFiW_exportItemHint{color:var(--dsw-alias-label-tertiary);font-size:11px;line-height:1.3}.bWwFiW_batchBar{bottom:var(--space-3);z-index:5;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) 88%, transparent);-webkit-backdrop-filter:blur(10px);border:1px solid color-mix(in srgb, var(--dsw-alias-brand-primary) 40%, var(--dsw-alias-border-l2));border-radius:var(--radius-card);box-shadow:0 8px 24px -12px color-mix(in srgb, var(--dsw-alias-label-primary) 30%, transparent);animation:bWwFiW_barUp var(--dur-base) var(--ease-spring) both;flex-wrap:wrap;align-items:center;display:flex;position:sticky}@keyframes bWwFiW_barUp{0%{opacity:0;transform:translateY(12px)scale(.98)}to{opacity:1;transform:none}}.bWwFiW_batchBar>span{color:var(--dsw-alias-label-primary);font-size:var(--fs-body);font-variant-numeric:tabular-nums;margin-right:auto}.bWwFiW_batchBar .bWwFiW_button{height:26px;padding:0 var(--space-2);font-size:var(--fs-micro)}.bWwFiW_itemList{border-top:1px solid var(--dsw-alias-border-l1);flex-direction:column;display:flex}.bWwFiW_item{gap:var(--space-3);padding:var(--space-3) var(--space-2);border-bottom:1px solid var(--dsw-alias-border-l1);border-radius:var(--radius-control);transition:background var(--dur-fast) var(--ease-spring);animation:bWwFiW_itemIn var(--dur-base) var(--ease-spring) both;grid-template-columns:20px minmax(0,1fr) auto;align-items:start;display:grid}.bWwFiW_itemList>.bWwFiW_item:last-child{border-bottom:0}@keyframes bWwFiW_itemIn{0%{opacity:0;transform:translateY(3px)}to{opacity:1;transform:none}}.bWwFiW_item:hover{background:var(--dsw-alias-bg-layer-1)}.bWwFiW_item.bWwFiW_selected{background:color-mix(in srgb, var(--dsw-alias-brand-primary) 6%, var(--dsw-alias-bg-layer-1));box-shadow:inset 2px 0 0 var(--dsw-alias-brand-primary)}.bWwFiW_itemCheck{width:14px;height:14px;accent-color:var(--dsw-alias-brand-primary);cursor:pointer;transition:transform 80ms var(--ease-spring);margin-top:3px}.bWwFiW_itemCheck:active{transform:scale(.85)}.bWwFiW_itemBody{flex-direction:column;gap:4px;min-width:0;display:flex}.bWwFiW_itemTags{gap:var(--space-1);flex-wrap:wrap;align-items:center;display:flex}.bWwFiW_itemStamp{font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);white-space:nowrap;margin-left:auto}.bWwFiW_content{white-space:pre-wrap;word-break:break-word;color:var(--dsw-alias-label-primary);font-size:var(--fs-body);-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.6;display:-webkit-box;overflow:hidden}.bWwFiW_itemMeta{gap:var(--space-3);font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);flex-wrap:wrap;align-items:center;display:flex}.bWwFiW_itemMeta b{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;font-weight:500}.bWwFiW_itemOps{gap:var(--space-1);opacity:0;visibility:hidden;transition:opacity var(--dur-fast) var(--ease-spring), visibility var(--dur-fast) var(--ease-spring);flex-shrink:0;align-items:center;display:flex}.bWwFiW_item:hover .bWwFiW_itemOps,.bWwFiW_item.bWwFiW_selected .bWwFiW_itemOps,.bWwFiW_item:focus-within .bWwFiW_itemOps{opacity:1;visibility:visible}.bWwFiW_itemOps .bWwFiW_button{height:24px;padding:0 var(--space-2);font-size:var(--fs-micro)}@media (hover:none){.bWwFiW_itemOps{opacity:1;visibility:visible}}@media (width<=720px){.bWwFiW_item{grid-template-columns:20px minmax(0,1fr)}.bWwFiW_itemOps{grid-column:2;justify-content:flex-end}}.bWwFiW_pill{height:18px;font-size:var(--fs-tag);background:color-mix(in srgb, var(--dsw-alias-label-tertiary) 14%, transparent);color:var(--dsw-alias-label-secondary);white-space:nowrap;animation:bWwFiW_pillIn var(--dur-base) var(--ease-spring) both;transition:transform var(--dur-fast) var(--ease-spring), background var(--dur-fast) var(--ease-spring);border-radius:999px;align-items:center;padding:0 7px;line-height:1;display:inline-flex}@keyframes bWwFiW_pillIn{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:none}}.bWwFiW_pill:hover{transform:translateY(-1px)}.bWwFiW_pill.bWwFiW_kind{background:color-mix(in srgb, var(--dsw-alias-brand-primary) 10%, transparent);color:var(--dsw-alias-brand-primary)}.bWwFiW_pill.bWwFiW_statusActive{background:color-mix(in srgb, var(--dsw-alias-state-success-primary) 12%, transparent);color:var(--dsw-alias-state-success-primary)}.bWwFiW_pill.bWwFiW_statusArchived{background:color-mix(in srgb, var(--dsw-alias-state-warn-primary) 12%, transparent);color:var(--dsw-alias-state-warn-primary)}.bWwFiW_pill.bWwFiW_statusForgotten{background:color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent);color:var(--dsw-alias-state-error-primary)}.bWwFiW_pill.bWwFiW_outcomeSuccess{background:color-mix(in srgb, var(--dsw-alias-state-success-primary) 12%, transparent);color:var(--dsw-alias-state-success-primary)}.bWwFiW_pill.bWwFiW_outcomeFailure{background:color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent);color:var(--dsw-alias-state-error-primary)}.bWwFiW_pill.bWwFiW_redacted{background:color-mix(in srgb, var(--dsw-alias-state-warn-primary) 12%, transparent);color:var(--dsw-alias-state-warn-primary)}.bWwFiW_expand{border-top:1px dashed var(--dsw-alias-border-l2);animation:bWwFiW_expandIn var(--dur-slow) var(--ease-spring) both;grid-column:1/-1;margin-top:4px;padding-top:10px;overflow:hidden}@keyframes bWwFiW_expandIn{0%{opacity:0;max-height:0;transform:translateY(-4px)}to{opacity:1;max-height:1200px;transform:none}}.bWwFiW_expandLoading{color:var(--dsw-alias-label-tertiary);animation:bWwFiW_fadeSoft var(--dur-base) var(--ease-spring) both;padding:6px 0;font-size:12px}@keyframes bWwFiW_fadeSoft{0%{opacity:0}to{opacity:1}}.bWwFiW_attrGrid{grid-template-columns:max-content minmax(0,1fr);align-items:center;gap:6px 14px;font-size:12px;display:grid}.bWwFiW_attrGrid>dt{color:var(--dsw-alias-label-tertiary);margin:0;font-size:11px}.bWwFiW_attrGrid>dd{color:var(--dsw-alias-label-primary);word-break:break-word;flex-wrap:wrap;align-items:center;gap:6px;min-width:0;margin:0;display:flex}.bWwFiW_relBlock{margin-top:10px}.bWwFiW_relBlock>h5{color:var(--dsw-alias-label-tertiary);letter-spacing:.04em;text-transform:uppercase;margin:0 0 4px;font-size:11px;font-weight:500}.bWwFiW_relChips{flex-wrap:wrap;gap:4px;display:flex}.bWwFiW_relChip{border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-base);text-overflow:ellipsis;white-space:nowrap;border-radius:4px;max-width:100%;padding:2px 6px;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:10px;overflow:hidden}.bWwFiW_timeline{margin:var(--space-2) 0 0;padding:0 0 0 var(--space-3);list-style:none;position:relative}.bWwFiW_timeline:before{background:var(--dsw-alias-border-l2);content:"";width:1px;position:absolute;top:6px;bottom:6px;left:3px}.bWwFiW_timeline li{padding:var(--space-1) 0 var(--space-1) var(--space-3);font-size:var(--fs-micro);color:var(--dsw-alias-label-secondary);line-height:1.55;position:relative}.bWwFiW_timeline li:before{background:var(--dsw-alias-bg-layer-1);border:1px solid var(--dsw-alias-brand-primary);content:"";border-radius:50%;width:6px;height:6px;position:absolute;top:8px;left:-10px}.bWwFiW_editForm{flex-direction:column;gap:10px;display:flex}.bWwFiW_editForm .bWwFiW_input{box-sizing:border-box;width:100%}.bWwFiW_editForm textarea.bWwFiW_input{resize:vertical;height:auto;min-height:64px;padding:8px 10px;line-height:1.55}.bWwFiW_fieldLabel{color:var(--dsw-alias-label-secondary);margin-bottom:4px;font-size:11px;display:block}.bWwFiW_fieldRow{flex-wrap:wrap;align-items:flex-start;gap:12px;display:flex}.bWwFiW_fieldRow .bWwFiW_fieldLabel{flex:1;min-width:120px}.bWwFiW_fieldRow input[type=range]{accent-color:var(--dsw-alias-brand-primary);width:100%}.bWwFiW_modalFoot{justify-content:flex-end;gap:8px;margin-top:6px;display:flex}.bWwFiW_pager{gap:var(--space-3);margin-top:var(--space-4);padding:var(--space-1) 0;color:var(--dsw-alias-label-secondary);font-size:var(--fs-body);font-variant-numeric:tabular-nums;animation:bWwFiW_fadeSoft var(--dur-base) var(--ease-spring) both;justify-content:center;align-items:center;display:flex}.bWwFiW_pager .bWwFiW_button{width:28px;transition:transform var(--dur-fast) var(--ease-spring), opacity var(--dur-fast) var(--ease-spring), background var(--dur-fast) var(--ease-spring);padding:0}.bWwFiW_pager .bWwFiW_button:not(:disabled):hover{transform:translateY(-1px)}.bWwFiW_pager .bWwFiW_button:disabled{opacity:.3}.bWwFiW_skeletonList{border-top:1px solid var(--dsw-alias-border-l1);flex-direction:column;display:flex}.bWwFiW_skeleton{padding:var(--space-3) var(--space-2);border-bottom:1px solid var(--dsw-alias-border-l1);gap:var(--space-2);animation:bWwFiW_itemIn var(--dur-base) var(--ease-spring) both;flex-direction:column;display:flex}.bWwFiW_skeleton i{background:linear-gradient(90deg, color-mix(in srgb, var(--dsw-alias-label-tertiary) 10%, transparent) 25%, color-mix(in srgb, var(--dsw-alias-label-tertiary) 22%, transparent) 50%, color-mix(in srgb, var(--dsw-alias-label-tertiary) 10%, transparent) 75%);background-size:200% 100%;border-radius:4px;height:10px;animation:1.6s linear infinite bWwFiW_shimmer;display:block}.bWwFiW_skeleton i:first-child{width:30%}.bWwFiW_skeleton i:nth-child(2){width:80%;animation-delay:80ms}.bWwFiW_skeleton i:last-child{width:55%;animation-delay:.16s}@keyframes bWwFiW_shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.bWwFiW_empty{text-align:center;color:var(--dsw-alias-label-secondary);font-size:var(--fs-ctrl);animation:bWwFiW_fadeSoft var(--dur-slow) var(--ease-spring) both;padding:56px 16px}.bWwFiW_empty b{color:var(--dsw-alias-label-primary);font-size:var(--fs-display);margin-bottom:var(--space-1);font-weight:500;display:block}.bWwFiW_empty span{color:var(--dsw-alias-label-tertiary);font-size:var(--fs-body)}.bWwFiW_empty:before{content:"";border:1px solid color-mix(in srgb, var(--dsw-alias-brand-primary) 35%, var(--dsw-alias-border-l2));background:linear-gradient(135deg, color-mix(in srgb, var(--dsw-alias-brand-primary) 18%, transparent), transparent 70%);border-radius:10px;width:36px;height:36px;margin:0 auto 14px;display:block}.bWwFiW_panelCard{background:var(--dsw-alias-bg-layer-1);border:1px solid var(--dsw-alias-border-l2);border-radius:var(--radius-card);padding:var(--space-4);animation:bWwFiW_cardIn var(--dur-slow) var(--ease-spring) both;position:relative}@keyframes bWwFiW_cardIn{0%{opacity:0;transform:scale(.99)}to{opacity:1;transform:none}}.bWwFiW_panelCard+.bWwFiW_panelCard{animation-delay:60ms}.bWwFiW_benchBar{gap:var(--space-2);margin-bottom:var(--space-3);display:flex}.bWwFiW_benchBar .bWwFiW_search{flex:1;min-width:0}.bWwFiW_benchBar .bWwFiW_button{flex:none}.bWwFiW_benchMeta{gap:var(--space-3);margin-bottom:var(--space-2);color:var(--dsw-alias-label-tertiary);font-size:var(--fs-micro);flex-wrap:wrap;align-items:baseline;display:flex}.bWwFiW_degradedNote{color:var(--dsw-alias-state-warn-primary)}.bWwFiW_benchEmpty{color:var(--dsw-alias-label-tertiary);font-size:var(--fs-body);padding:var(--space-2) 0}.bWwFiW_benchList{margin-top:var(--space-2);border-top:1px solid var(--dsw-alias-border-l1);flex-direction:column;display:flex}.bWwFiW_benchRow{padding:var(--space-3) var(--space-2);border-bottom:1px solid var(--dsw-alias-border-l1);transition:background var(--dur-fast) var(--ease-spring);animation:bWwFiW_itemIn var(--dur-base) var(--ease-spring) both}.bWwFiW_benchList>.bWwFiW_benchRow:last-child{border-bottom:0}.bWwFiW_benchRow:hover{background:var(--dsw-alias-bg-layer-1)}.bWwFiW_benchHead{gap:var(--space-2);flex-wrap:wrap;align-items:center;display:flex}.bWwFiW_viaChip{color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-fill-tsp-secondary);font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:var(--fs-tag);border-radius:4px;height:16px;padding:0 6px;line-height:16px}.bWwFiW_benchScore{color:var(--dsw-alias-label-tertiary);font-size:var(--fs-micro);font-variant-numeric:tabular-nums;margin-left:auto}.bWwFiW_benchContent{margin:var(--space-2) 0;color:var(--dsw-alias-label-primary);font-size:var(--fs-body);word-break:break-word;-webkit-line-clamp:3;-webkit-box-orient:vertical;line-height:1.55;display:-webkit-box;overflow:hidden}.bWwFiW_benchId{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.bWwFiW_mapWrap{gap:var(--space-3);flex-direction:column;display:flex}.bWwFiW_map{background:color-mix(in srgb, var(--dsw-alias-bg-base) 70%, transparent);border-radius:var(--radius-control);border:1px solid var(--dsw-alias-border-l2);user-select:none;width:100%;height:auto;display:block}.bWwFiW_node{cursor:grab;transition:transform var(--dur-fast) var(--ease-spring)}.bWwFiW_node:active{cursor:grabbing}.bWwFiW_tooltip{pointer-events:none}.bWwFiW_legend{gap:var(--space-3);font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);flex-wrap:wrap;align-items:center;display:flex}.bWwFiW_legendItem{align-items:center;gap:var(--space-1);display:inline-flex}.bWwFiW_legendDot{border-radius:50%;width:8px;height:8px;display:inline-block}.bWwFiW_node,.bWwFiW_edgeFade{animation:bWwFiW_corridorFadeIn var(--dur-slow) var(--ease-spring) backwards}@keyframes bWwFiW_corridorFadeIn{0%{opacity:0;filter:blur(2px)}to{opacity:1;filter:none}}.bWwFiW_progressBar{background:color-mix(in srgb, var(--dsw-alias-label-tertiary) 18%, transparent);border-radius:2px;height:4px;overflow:hidden}.bWwFiW_progressBar i{background:var(--dsw-alias-brand-primary);height:100%;transition:width var(--dur-slow) var(--ease-out);border-radius:2px;display:block}.bWwFiW_telePrivacy{align-items:center;gap:var(--space-1);border-radius:var(--radius-control);font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);cursor:help;transition:background var(--dur-fast) var(--ease-spring), color var(--dur-fast) var(--ease-spring), border-color var(--dur-fast) var(--ease-spring);background:0 0;border:1px solid #0000;outline:none;align-self:center;padding:4px 8px;display:inline-flex;position:relative}.bWwFiW_telePrivacy:hover,.bWwFiW_telePrivacy:focus-visible{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-fill-tsp-secondary);border-color:var(--dsw-alias-border-l2)}.bWwFiW_telePrivacy svg{opacity:.85;flex:none}.bWwFiW_telePrivacyHint{white-space:nowrap}.bWwFiW_telePrivacyTip{min-width:260px;max-width:320px;padding:var(--space-2) var(--space-3);background:var(--dsw-alias-bg-layer-1);border:1px solid var(--dsw-alias-border-l2);border-radius:var(--radius-control);box-shadow:0 6px 18px -8px color-mix(in srgb, var(--dsw-alias-label-primary) 24%, transparent);font-size:var(--fs-body);color:var(--dsw-alias-label-primary);white-space:normal;pointer-events:none;opacity:0;transition:opacity var(--dur-fast) var(--ease-spring), transform var(--dur-fast) var(--ease-spring);z-index:5;text-align:left;line-height:1.5;position:absolute;bottom:calc(100% + 6px);right:0;transform:translateY(2px)}.bWwFiW_telePrivacy:hover .bWwFiW_telePrivacyTip,.bWwFiW_telePrivacy:focus-visible .bWwFiW_telePrivacyTip{opacity:1;transform:translateY(0)}.bWwFiW_timeline li{animation:bWwFiW_itemIn var(--dur-base) var(--ease-spring) both}.bWwFiW_timeline li:nth-child(2){animation-delay:40ms}.bWwFiW_timeline li:nth-child(3){animation-delay:80ms}.bWwFiW_timeline li:nth-child(4){animation-delay:.12s}.bWwFiW_timeline li:nth-child(5){animation-delay:.16s}.bWwFiW_timeline li:nth-child(n+6){animation-delay:.2s}.bWwFiW_tourProposal{gap:var(--space-3);flex-direction:column;display:flex}.bWwFiW_tourGreeting{font-size:var(--fs-body);color:var(--dsw-alias-label-secondary);margin:0;line-height:1.55}.bWwFiW_tourStops{gap:var(--space-2);counter-reset:tour;flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.bWwFiW_tourStops li{animation:bWwFiW_tourItemIn var(--dur-base) var(--ease-spring) backwards}.bWwFiW_tourStops li:nth-child(2){animation-delay:40ms}.bWwFiW_tourStops li:nth-child(3){animation-delay:80ms}.bWwFiW_tourStops li:nth-child(4){animation-delay:.12s}.bWwFiW_tourStops li:nth-child(n+5){animation-delay:.16s}.bWwFiW_tourStop{align-items:center;gap:var(--space-2);width:100%;padding:var(--space-2);border-radius:var(--radius-control);color:inherit;text-align:left;cursor:pointer;transition:background var(--dur-fast) var(--ease-spring), border-color var(--dur-fast) var(--ease-spring), transform var(--dur-fast) var(--ease-spring);background:0 0;border:1px solid #0000;display:flex}.bWwFiW_tourStop:hover{background:color-mix(in srgb, var(--dsw-alias-brand-primary) 6%, var(--dsw-alias-bg-layer-1));border-color:color-mix(in srgb, var(--dsw-alias-brand-primary) 28%, var(--dsw-alias-border-l2));transform:translate(2px)}.bWwFiW_tourStop:active{transform:translate(2px)scale(.99)}@keyframes bWwFiW_tourItemIn{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}.bWwFiW_tourStopIndex{width:20px;height:20px;font-size:var(--fs-micro);color:var(--dsw-alias-label-primary-foreground);background:var(--dsw-alias-brand-primary);font-variant-numeric:tabular-nums;border-radius:50%;flex:none;justify-content:center;align-items:center;font-weight:600;display:inline-flex}.bWwFiW_tourStopBody{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.bWwFiW_tourStopKind{font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);letter-spacing:.04em;text-transform:uppercase}.bWwFiW_tourStopText{font-size:var(--fs-body);color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;line-height:1.4;overflow:hidden}.bWwFiW_tourHint{margin:var(--space-1) 0 0;font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);line-height:1.4}.bWwFiW_refurb{gap:var(--space-3);flex-direction:column;display:flex}.bWwFiW_refurbHead{justify-content:space-between;align-items:center;gap:var(--space-2);padding-bottom:var(--space-2);display:flex}.bWwFiW_refurbHead .bWwFiW_button{height:24px;padding:0 var(--space-2);font-size:var(--fs-micro)}.bWwFiW_refurbCount{font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums}.bWwFiW_refurbList{border-top:1px solid var(--dsw-alias-border-l1);animation:bWwFiW_refurbReflow var(--dur-slow) var(--ease-spring) backwards;flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.bWwFiW_refurbItem{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-2);border-bottom:1px solid var(--dsw-alias-border-l1);font-size:var(--fs-body);color:var(--dsw-alias-label-secondary);animation:bWwFiW_refurbItemIn var(--dur-base) var(--ease-spring) backwards;display:flex}.bWwFiW_refurbList>.bWwFiW_refurbItem:last-child{border-bottom:0}.bWwFiW_refurbItem:nth-child(2){animation-delay:40ms}.bWwFiW_refurbItem:nth-child(3){animation-delay:80ms}.bWwFiW_refurbItem:nth-child(4){animation-delay:.12s}.bWwFiW_refurbItem:nth-child(n+5){animation-delay:.16s}@keyframes bWwFiW_refurbReflow{0%{opacity:0;filter:blur(2px)}to{opacity:1;filter:none}}@keyframes bWwFiW_refurbItemIn{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:none}}.bWwFiW_refurbBadge{padding:2px var(--space-2);font-size:var(--fs-micro);letter-spacing:.04em;background:color-mix(in srgb, var(--dsw-alias-brand-primary) 14%, var(--dsw-alias-bg-layer-1));border:1px solid color-mix(in srgb, var(--dsw-alias-brand-primary) 30%, var(--dsw-alias-border-l2));color:var(--dsw-alias-label-primary);cursor:pointer;transition:background var(--dur-fast) var(--ease-spring);border-radius:999px;flex:none;font-weight:600}.bWwFiW_refurbBadge:hover{background:color-mix(in srgb, var(--dsw-alias-brand-primary) 22%, var(--dsw-alias-bg-layer-1))}.bWwFiW_refurbReason{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;line-height:1.45;overflow:hidden}.bWwFiW_refurbConfidence{font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;flex:none}.bWwFiW_refurbExec{height:24px;padding:0 var(--space-2);font-size:var(--fs-micro);flex:none;line-height:1}.bWwFiW_langSeg{border:1px solid var(--dsw-alias-border-l2);border-radius:var(--radius-control);flex:none;align-items:center;height:26px;display:inline-flex;overflow:hidden}.bWwFiW_langOpt{height:100%;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:0;padding:0 8px;font-family:inherit;font-size:11px;line-height:1}.bWwFiW_langOpt+.bWwFiW_langOpt{border-left:1px solid var(--dsw-alias-border-l2)}.bWwFiW_langOpt:hover{background:color-mix(in srgb, var(--dsw-alias-label-primary) 6%, transparent)}.bWwFiW_langOn{background:color-mix(in srgb, var(--dsw-alias-brand-primary) 12%, transparent);color:var(--dsw-alias-label-primary);font-weight:600}.bWwFiW_backfill{gap:var(--space-3);flex-direction:column;display:flex}.bWwFiW_backfillIntro{font-size:var(--fs-body);color:var(--dsw-alias-label-secondary);margin:0;line-height:1.6}.bWwFiW_backfillRules{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(180px,1fr));display:grid}.bWwFiW_backfillRule{gap:var(--space-1);font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);flex-direction:column;display:flex}.bWwFiW_backfillToggles{gap:var(--space-4);padding-top:var(--space-2);flex-wrap:wrap;display:flex}.bWwFiW_backfillToggle{align-items:center;gap:var(--space-2);font-size:var(--fs-body);color:var(--dsw-alias-label-secondary);cursor:pointer;display:inline-flex}.bWwFiW_backfillEstimate{gap:var(--space-2);padding-top:var(--space-4);border-top:1px solid var(--dsw-alias-border-l1);flex-direction:column;display:flex}.bWwFiW_backfillNumbers{gap:var(--space-5);flex-wrap:wrap;display:flex}.bWwFiW_backfillMetric{font-size:var(--fs-body);color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums}.bWwFiW_backfillMuted{font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);line-height:1.5}.bWwFiW_backfillActions{gap:var(--space-2);padding-top:var(--space-4);border-top:1px solid var(--dsw-alias-border-l1);flex-wrap:wrap;display:flex}.bWwFiW_backfillProgress{gap:var(--space-2);flex-direction:column;display:flex}.bWwFiW_backfillProgressHead{justify-content:space-between;align-items:baseline;gap:var(--space-2);font-size:var(--fs-micro);color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;display:flex}.bWwFiW_backfillMeta{gap:var(--space-4);font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;flex-wrap:wrap;display:flex}.bWwFiW_backfillFailures{font-size:var(--fs-micro);color:var(--dsw-alias-label-secondary);flex-direction:column;gap:2px;margin:0;padding:0;font-family:ui-monospace,SF Mono,Menlo,monospace;list-style:none;display:flex}.bWwFiW_jev{gap:var(--space-3);flex-direction:column;display:flex}.bWwFiW_jevIntro{font-size:var(--fs-body);color:var(--dsw-alias-label-secondary);margin:0;line-height:1.6}.bWwFiW_jevToggleRow{align-items:center;gap:var(--space-4);padding-top:var(--space-2);flex-wrap:wrap;display:flex}.bWwFiW_jevToggle{align-items:center;gap:var(--space-2);font-size:var(--fs-body);color:var(--dsw-alias-label-secondary);cursor:pointer;display:inline-flex}.bWwFiW_jevStatus{font-size:var(--fs-micro);color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-weight:600}.bWwFiW_jevForm{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));display:grid}.bWwFiW_jevField{gap:var(--space-1);font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);flex-direction:column;display:flex}.bWwFiW_jevMuted{font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);line-height:1.5}.bWwFiW_jevActions{gap:var(--space-2);padding-top:var(--space-4);border-top:1px solid var(--dsw-alias-border-l1);flex-wrap:wrap;display:flex}.bWwFiW_jevObs{gap:var(--space-2);padding-top:var(--space-4);border-top:1px solid var(--dsw-alias-border-l1);flex-direction:column;display:flex}.bWwFiW_jevObsHead{font-size:var(--fs-micro);color:var(--dsw-alias-label-secondary);font-weight:600}.bWwFiW_jevObsItem{align-items:baseline;gap:var(--space-3);font-size:var(--fs-micro);color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;flex-wrap:wrap;display:flex}.bWwFiW_jevObsTime{color:var(--dsw-alias-label-tertiary)}.bWwFiW_jevObsBadge{padding:0 var(--space-2);background:color-mix(in srgb, var(--dsw-alias-label-primary) 8%, transparent);color:var(--dsw-alias-label-primary);border-radius:3px;font-weight:600}.bWwFiW_jevObsBadgeGood{background:color-mix(in srgb, var(--dsw-alias-state-success-primary,#2da44e) 14%, transparent);color:var(--dsw-alias-state-success-primary,#2da44e)}.bWwFiW_jevObsBadgeWarn{background:color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent);color:var(--dsw-alias-state-error-primary)}.bWwFiW_jevObsError{color:var(--dsw-alias-state-error-primary);word-break:break-all}.bWwFiW_toastViewport{top:var(--space-4);right:var(--space-4);z-index:9999;gap:var(--space-2);pointer-events:none;flex-direction:column;max-width:min(360px,100vw - 32px);display:flex;position:fixed}.bWwFiW_toast{align-items:flex-start;gap:var(--space-2);padding:var(--space-3);border-radius:var(--radius-card);background:var(--dsw-alias-bg-layer-1);border:1px solid var(--dsw-alias-border-l2);box-shadow:0 6px 18px -8px color-mix(in srgb, var(--dsw-alias-label-primary) 24%, transparent);font-size:var(--fs-body);color:var(--dsw-alias-label-primary);pointer-events:auto;animation:bWwFiW_toastIn var(--dur-base) var(--ease-spring) both;line-height:1.5;display:flex}.bWwFiW_toastBody{word-break:break-word;flex:1;min-width:0}.bWwFiW_toastDismiss{color:var(--dsw-alias-label-tertiary);cursor:pointer;padding:0 var(--space-1);transition:color var(--dur-fast) var(--ease-spring);background:0 0;border:none;font-size:16px;line-height:1}.bWwFiW_toastDismiss:hover{color:var(--dsw-alias-label-primary)}.bWwFiW_toastInfo{border-left:3px solid var(--dsw-alias-brand-primary)}.bWwFiW_toastSuccess{border-left:3px solid color-mix(in srgb, var(--dsw-alias-state-success-primary,#2da44e) 80%, var(--dsw-alias-border-l2));background:color-mix(in srgb, var(--dsw-alias-state-success-primary,#2da44e) 6%, var(--dsw-alias-bg-layer-1))}.bWwFiW_toastError{border-left:3px solid color-mix(in srgb, var(--dsw-alias-state-error-primary) 80%, var(--dsw-alias-border-l2));background:color-mix(in srgb, var(--dsw-alias-state-error-primary) 6%, var(--dsw-alias-bg-layer-1))}.bWwFiW_toastWarning{border-left:3px solid color-mix(in srgb, #d4a017 80%, var(--dsw-alias-border-l2));background:color-mix(in srgb, #d4a017 6%, var(--dsw-alias-bg-layer-1))}@keyframes bWwFiW_toastIn{0%{opacity:0;transform:translate(8px)scale(.98)}to{opacity:1;transform:none}}.bWwFiW_section{min-width:0}.bWwFiW_sectionHead{align-items:baseline;gap:var(--space-3);margin-bottom:var(--space-3);display:flex}.bWwFiW_sectionTitle{font-size:var(--fs-ctrl);color:var(--dsw-alias-label-primary);margin:0;font-weight:600}.bWwFiW_sectionHint{font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);line-height:1.4}.bWwFiW_sectionAction{align-self:center;margin-left:auto}.bWwFiW_hero{gap:var(--space-5);grid-template-columns:minmax(0,1fr) auto;align-items:center;display:grid}.bWwFiW_heroMetrics{gap:var(--space-6);flex-wrap:wrap;min-width:0;display:flex}.bWwFiW_heroFoot{justify-content:space-between;align-items:center;gap:var(--space-3);margin-top:var(--space-4);padding-top:var(--space-3);border-top:1px solid var(--dsw-alias-border-l1);flex-wrap:wrap;display:flex}.bWwFiW_heroStats{align-items:center;gap:var(--space-4);flex-wrap:wrap;min-width:0;display:flex}.bWwFiW_heroStat{white-space:nowrap;align-items:baseline;gap:5px;display:inline-flex}.bWwFiW_heroStatLabel{font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary)}.bWwFiW_heroStatValue{font-size:var(--fs-ctrl);color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-weight:600;line-height:1}.bWwFiW_heroStatDue{color:var(--dsw-alias-state-error-primary)}.bWwFiW_heroFootDivider{background:var(--dsw-alias-border-l2);flex:none;width:1px;height:12px}.bWwFiW_metric{flex-direction:column;gap:2px;min-width:0;display:flex}.bWwFiW_metricLabel{font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);white-space:nowrap}.bWwFiW_metricValue{letter-spacing:-.02em;color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-size:28px;font-weight:600;line-height:1.1}.bWwFiW_metricTail{font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);white-space:nowrap}.bWwFiW_ring{flex-shrink:0;width:56px;height:56px;position:relative}.bWwFiW_ring svg{display:block;transform:rotate(-90deg)}.bWwFiW_ring b{font-size:var(--fs-display);font-variant-numeric:tabular-nums;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}:root{--room-fact:#3b6ef5;--room-preference:#a45cf0;--room-decision:#16a394;--room-episode:#e08a2e;--room-skill:#d94f8a}@media (prefers-color-scheme:dark){:root{--room-fact:#6b96ff;--room-preference:#bb86f7;--room-decision:#3fc7b5;--room-episode:#f0a95a;--room-skill:#f077a9}}.bWwFiW_pill.bWwFiW_roomFact{background:color-mix(in srgb, var(--room-fact) 12%, transparent);color:var(--room-fact)}.bWwFiW_pill.bWwFiW_roomPreference{background:color-mix(in srgb, var(--room-preference) 12%, transparent);color:var(--room-preference)}.bWwFiW_pill.bWwFiW_roomDecision{background:color-mix(in srgb, var(--room-decision) 12%, transparent);color:var(--room-decision)}.bWwFiW_pill.bWwFiW_roomEpisode{background:color-mix(in srgb, var(--room-episode) 12%, transparent);color:var(--room-episode)}.bWwFiW_pill.bWwFiW_roomSkill{background:color-mix(in srgb, var(--room-skill) 12%, transparent);color:var(--room-skill)}.bWwFiW_roomList{flex-direction:column;display:flex}.bWwFiW_roomRow{gap:var(--space-3);padding:var(--space-2) 0;font-size:var(--fs-body);grid-template-columns:10px minmax(0,1fr) auto;align-items:center;display:grid}.bWwFiW_roomSwatch{background:var(--room-fact);border-radius:3px;width:10px;height:10px}.bWwFiW_roomSwatch.bWwFiW_roomFact{background:var(--room-fact)}.bWwFiW_roomSwatch.bWwFiW_roomPreference{background:var(--room-preference)}.bWwFiW_roomSwatch.bWwFiW_roomDecision{background:var(--room-decision)}.bWwFiW_roomSwatch.bWwFiW_roomEpisode{background:var(--room-episode)}.bWwFiW_roomSwatch.bWwFiW_roomSkill{background:var(--room-skill)}.bWwFiW_roomCount{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums}.bWwFiW_logToolbar{align-items:center;gap:var(--space-3);margin-bottom:var(--space-3);flex-wrap:wrap;display:flex}.bWwFiW_logToolbar .bWwFiW_segGroup{margin-left:auto}.bWwFiW_logCounts{align-items:center;gap:var(--space-4);font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);display:flex}.bWwFiW_logCounts>span{align-items:center;gap:6px;display:inline-flex}.bWwFiW_logCounts b{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-weight:600}.bWwFiW_logDot{background:var(--dsw-alias-label-tertiary);border-radius:50%;flex:none;width:6px;height:6px}.bWwFiW_logDotWrite{background:var(--dsw-alias-brand-primary)}.bWwFiW_logDotIngest{background:var(--dsw-alias-state-success-primary)}.bWwFiW_logDotRetrieve{background:var(--dsw-alias-state-warn-primary)}.bWwFiW_logDotOrganize{background:var(--room-decision)}.bWwFiW_logList{flex-direction:column;padding:0;display:flex}.bWwFiW_logRow{gap:var(--space-3);padding:var(--space-2);border-bottom:1px solid var(--dsw-alias-border-l1);font-size:var(--fs-body);grid-template-columns:8px 76px 96px 60px minmax(0,1fr);align-items:center;display:grid}.bWwFiW_logRow:last-child{border-bottom:0}.bWwFiW_logRow:hover{background:var(--dsw-alias-bg-layer-1)}.bWwFiW_logTime{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;white-space:nowrap}.bWwFiW_logOp{color:var(--dsw-alias-label-primary);font-weight:500}.bWwFiW_logScope{color:var(--dsw-alias-label-tertiary)}.bWwFiW_logDetail{color:var(--dsw-alias-label-secondary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.bWwFiW_profileCard{gap:var(--space-3);flex-direction:column;display:flex}.bWwFiW_profileHeading{font-size:var(--fs-micro);color:var(--dsw-alias-label-secondary);margin:0;font-weight:600}.bWwFiW_profileContent{padding:var(--space-3);border:1px solid var(--dsw-alias-border-l1);border-radius:var(--radius-control);background:var(--dsw-alias-bg-layer-1);font-family:inherit;font-size:var(--fs-body);white-space:pre-wrap;word-break:break-word;max-height:200px;margin:0;line-height:1.6;overflow-y:auto}.bWwFiW_profilePickerRow{gap:var(--space-4);flex-wrap:wrap;display:flex}.bWwFiW_profilePickerRow label{gap:var(--space-1);flex-direction:column;display:flex}.bWwFiW_profileSelect{padding:var(--space-1) var(--space-2);border:1px solid var(--dsw-alias-border-l1);border-radius:var(--radius-control);background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);font-size:var(--fs-micro)}.bWwFiW_profileDiff{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--radius-control);font-size:var(--fs-micro);max-height:220px;line-height:1.6;overflow-y:auto}.bWwFiW_profileDiffAdd{padding:0 var(--space-2);background:color-mix(in srgb, var(--dsw-alias-state-success-primary) 12%, transparent);color:var(--dsw-alias-label-primary);white-space:pre-wrap;word-break:break-word}.bWwFiW_profileDiffDel{padding:0 var(--space-2);background:color-mix(in srgb, var(--dsw-alias-state-warn-primary) 12%, transparent);color:var(--dsw-alias-label-tertiary);white-space:pre-wrap;word-break:break-word;text-decoration:line-through}.bWwFiW_profileDiffSame{padding:0 var(--space-2);color:var(--dsw-alias-label-tertiary);white-space:pre-wrap;word-break:break-word}.bWwFiW_episodeRangeSep{color:var(--dsw-alias-label-tertiary);font-size:var(--fs-body)}.bWwFiW_episodeAround{border-color:color-mix(in srgb, var(--dsw-alias-brand-primary) 35%, var(--dsw-alias-border-l2))}.bWwFiW_episodeAroundHead{margin-bottom:var(--space-2);font-size:var(--fs-ctrl);color:var(--dsw-alias-label-primary);justify-content:space-between;align-items:center;display:flex}.bWwFiW_episodeHead{gap:var(--space-1);padding-bottom:var(--space-2);margin-bottom:var(--space-2);border-bottom:1px solid var(--dsw-alias-border-l2);flex-direction:column;display:flex}.bWwFiW_episodeSummary{font-size:var(--fs-ctrl);color:var(--dsw-alias-label-primary);margin:0;font-weight:500;line-height:1.5}.bWwFiW_episodeSummaryMissing{color:var(--dsw-alias-label-tertiary);font-weight:400}.bWwFiW_episodeHeadMeta{font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary)}.bWwFiW_episodeRow{align-items:baseline;gap:var(--space-2);padding:var(--space-1) 0;font-size:var(--fs-body);display:flex}.bWwFiW_episodeRow+.bWwFiW_episodeRow{border-top:1px solid color-mix(in srgb, var(--dsw-alias-border-l2) 55%, transparent)}.bWwFiW_episodeRowTime{font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;flex:none}.bWwFiW_episodeRowKind{font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);flex:none}.bWwFiW_episodeRowText{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-label-primary);flex:1;overflow:hidden}.bWwFiW_episodeRow .bWwFiW_button{height:22px;font-size:var(--fs-micro);flex:none;padding:0 8px}.bWwFiW_beliefCard{gap:var(--space-2);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-2);flex-direction:column;display:flex}.bWwFiW_beliefText{font-size:var(--fs-ctrl);color:var(--dsw-alias-label-primary);overflow-wrap:anywhere;margin:0;line-height:1.55}.bWwFiW_beliefMeta{align-items:center;gap:var(--space-2);display:flex}.bWwFiW_beliefTime{font-size:var(--fs-micro);color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;margin-left:auto}@media (width<=960px){.bWwFiW_hero{grid-template-columns:1fr}.bWwFiW_heroMetrics{gap:var(--space-5)}.bWwFiW_logRow{grid-template-columns:8px 64px 88px minmax(0,1fr)}.bWwFiW_logScope{display:none}}@media (width<=720px){.bWwFiW_metricValue{font-size:22px}}`,document.head.appendChild(e)}var o={benchScore:`bWwFiW_benchScore`,roomEpisode:`bWwFiW_roomEpisode`,logToolbar:`bWwFiW_logToolbar`,toastDismiss:`bWwFiW_toastDismiss`,node:`bWwFiW_node`,profileDiffAdd:`bWwFiW_profileDiffAdd`,exportItemHint:`bWwFiW_exportItemHint`,refurbCount:`bWwFiW_refurbCount`,episodeHead:`bWwFiW_episodeHead`,benchRow:`bWwFiW_benchRow`,tourProposal:`bWwFiW_tourProposal`,drawerBody:`bWwFiW_drawerBody`,roomFact:`bWwFiW_roomFact`,segScope:`bWwFiW_segScope`,redacted:`bWwFiW_redacted`,itemBody:`bWwFiW_itemBody`,pill:`bWwFiW_pill`,attrGrid:`bWwFiW_attrGrid`,drawerIn:`bWwFiW_drawerIn`,benchBar:`bWwFiW_benchBar`,benchId:`bWwFiW_benchId`,progressBar:`bWwFiW_progressBar`,edgeFade:`bWwFiW_edgeFade`,tooltip:`bWwFiW_tooltip`,episodeRowTime:`bWwFiW_episodeRowTime`,fadeSoft:`bWwFiW_fadeSoft`,logCounts:`bWwFiW_logCounts`,heroStatDue:`bWwFiW_heroStatDue`,jevStatus:`bWwFiW_jevStatus`,content:`bWwFiW_content`,itemOps:`bWwFiW_itemOps`,tourStopIndex:`bWwFiW_tourStopIndex`,toastBody:`bWwFiW_toastBody`,profileCard:`bWwFiW_profileCard`,tabPanel:`bWwFiW_tabPanel`,metricTail:`bWwFiW_metricTail`,section:`bWwFiW_section`,heroStatLabel:`bWwFiW_heroStatLabel`,tourStops:`bWwFiW_tourStops`,expand:`bWwFiW_expand`,refurbReflow:`bWwFiW_refurbReflow`,backfillToggles:`bWwFiW_backfillToggles`,brandIcon:`bWwFiW_brandIcon`,scrimIn:`bWwFiW_scrimIn`,mapWrap:`bWwFiW_mapWrap`,tourItemIn:`bWwFiW_tourItemIn`,map:`bWwFiW_map`,tabIcon:`bWwFiW_tabIcon`,tabItem:`bWwFiW_tabItem`,dueDot:`bWwFiW_dueDot`,watermarkBreath:`bWwFiW_watermarkBreath`,backfillNumbers:`bWwFiW_backfillNumbers`,backfillMetric:`bWwFiW_backfillMetric`,pillIn:`bWwFiW_pillIn`,tourHint:`bWwFiW_tourHint`,scopeIcon:`bWwFiW_scopeIcon`,langSeg:`bWwFiW_langSeg`,heroFootDivider:`bWwFiW_heroFootDivider`,lg:`bWwFiW_lg`,legend:`bWwFiW_legend`,input:`bWwFiW_input`,segItem:`bWwFiW_segItem`,backfillProgressHead:`bWwFiW_backfillProgressHead`,expandIn:`bWwFiW_expandIn`,segIndicator:`bWwFiW_segIndicator`,profileHeading:`bWwFiW_profileHeading`,logRow:`bWwFiW_logRow`,layout:`bWwFiW_layout`,tourStop:`bWwFiW_tourStop`,mainCol:`bWwFiW_mainCol`,backfillToggle:`bWwFiW_backfillToggle`,beliefCard:`bWwFiW_beliefCard`,danger:`bWwFiW_danger`,hero:`bWwFiW_hero`,item:`bWwFiW_item`,profileSelect:`bWwFiW_profileSelect`,backfillRules:`bWwFiW_backfillRules`,empty:`bWwFiW_empty`,jevActions:`bWwFiW_jevActions`,roomCount:`bWwFiW_roomCount`,roomSwatch:`bWwFiW_roomSwatch`,itemStamp:`bWwFiW_itemStamp`,tourGreeting:`bWwFiW_tourGreeting`,dueIcon:`bWwFiW_dueIcon`,tourStopKind:`bWwFiW_tourStopKind`,logDot:`bWwFiW_logDot`,chipOn:`bWwFiW_chipOn`,itemList:`bWwFiW_itemList`,jevObsHead:`bWwFiW_jevObsHead`,episodeSummary:`bWwFiW_episodeSummary`,jevObsBadgeGood:`bWwFiW_jevObsBadgeGood`,sm:`bWwFiW_sm`,logDotWrite:`bWwFiW_logDotWrite`,jevObsBadge:`bWwFiW_jevObsBadge`,selected:`bWwFiW_selected`,refurbExec:`bWwFiW_refurbExec`,ring:`bWwFiW_ring`,fieldRow:`bWwFiW_fieldRow`,degradedNote:`bWwFiW_degradedNote`,episodeHeadMeta:`bWwFiW_episodeHeadMeta`,backfillMuted:`bWwFiW_backfillMuted`,primary:`bWwFiW_primary`,langOn:`bWwFiW_langOn`,episodeAroundHead:`bWwFiW_episodeAroundHead`,jevMuted:`bWwFiW_jevMuted`,beliefTime:`bWwFiW_beliefTime`,editForm:`bWwFiW_editForm`,roomDecision:`bWwFiW_roomDecision`,beliefMeta:`bWwFiW_beliefMeta`,drawerLayer:`bWwFiW_drawerLayer`,reviewGrid:`bWwFiW_reviewGrid`,shimmer:`bWwFiW_shimmer`,refurbHead:`bWwFiW_refurbHead`,backfillIntro:`bWwFiW_backfillIntro`,logDotRetrieve:`bWwFiW_logDotRetrieve`,panelIn:`bWwFiW_panelIn`,chipRow:`bWwFiW_chipRow`,tourStopText:`bWwFiW_tourStopText`,benchList:`bWwFiW_benchList`,timeline:`bWwFiW_timeline`,exportItemLabel:`bWwFiW_exportItemLabel`,skeleton:`bWwFiW_skeleton`,pager:`bWwFiW_pager`,headerActions:`bWwFiW_headerActions`,refurbList:`bWwFiW_refurbList`,skeletonList:`bWwFiW_skeletonList`,exportItem:`bWwFiW_exportItem`,toast:`bWwFiW_toast`,toastSuccess:`bWwFiW_toastSuccess`,sectionAction:`bWwFiW_sectionAction`,roomSkill:`bWwFiW_roomSkill`,drawer:`bWwFiW_drawer`,backfillProgress:`bWwFiW_backfillProgress`,telePrivacy:`bWwFiW_telePrivacy`,metric:`bWwFiW_metric`,refurbConfidence:`bWwFiW_refurbConfidence`,search:`bWwFiW_search`,logDotIngest:`bWwFiW_logDotIngest`,profileContent:`bWwFiW_profileContent`,logList:`bWwFiW_logList`,benchContent:`bWwFiW_benchContent`,roomList:`bWwFiW_roomList`,toastWarning:`bWwFiW_toastWarning`,heroMetrics:`bWwFiW_heroMetrics`,episodeAround:`bWwFiW_episodeAround`,toastInfo:`bWwFiW_toastInfo`,cardIn:`bWwFiW_cardIn`,roomPreference:`bWwFiW_roomPreference`,button:`bWwFiW_button`,relChip:`bWwFiW_relChip`,backfillActions:`bWwFiW_backfillActions`,legendDot:`bWwFiW_legendDot`,backfillMeta:`bWwFiW_backfillMeta`,heroFoot:`bWwFiW_heroFoot`,chip:`bWwFiW_chip`,benchHead:`bWwFiW_benchHead`,fieldLabel:`bWwFiW_fieldLabel`,refurbItemIn:`bWwFiW_refurbItemIn`,refurb:`bWwFiW_refurb`,telePrivacyHint:`bWwFiW_telePrivacyHint`,logTime:`bWwFiW_logTime`,statusForgotten:`bWwFiW_statusForgotten`,logDetail:`bWwFiW_logDetail`,outcomeSuccess:`bWwFiW_outcomeSuccess`,relChips:`bWwFiW_relChips`,episodeRow:`bWwFiW_episodeRow`,itemMeta:`bWwFiW_itemMeta`,heroStats:`bWwFiW_heroStats`,statusArchived:`bWwFiW_statusArchived`,exportMenu:`bWwFiW_exportMenu`,logScope:`bWwFiW_logScope`,drawerScrim:`bWwFiW_drawerScrim`,refurbBadge:`bWwFiW_refurbBadge`,backfillEstimate:`bWwFiW_backfillEstimate`,episodeSummaryMissing:`bWwFiW_episodeSummaryMissing`,barUp:`bWwFiW_barUp`,drawerTitle:`bWwFiW_drawerTitle`,jevToggle:`bWwFiW_jevToggle`,jevField:`bWwFiW_jevField`,dueBadge:`bWwFiW_dueBadge`,segGroup:`bWwFiW_segGroup`,logDotOrganize:`bWwFiW_logDotOrganize`,logOp:`bWwFiW_logOp`,tourStopBody:`bWwFiW_tourStopBody`,toastIn:`bWwFiW_toastIn`,jevObsBadgeWarn:`bWwFiW_jevObsBadgeWarn`,drawerClose:`bWwFiW_drawerClose`,beliefText:`bWwFiW_beliefText`,heroStatValue:`bWwFiW_heroStatValue`,jevObsError:`bWwFiW_jevObsError`,jevObsTime:`bWwFiW_jevObsTime`,wsSelect:`bWwFiW_wsSelect`,sectionHint:`bWwFiW_sectionHint`,heroStat:`bWwFiW_heroStat`,sectionHead:`bWwFiW_sectionHead`,profileDiffSame:`bWwFiW_profileDiffSame`,benchMeta:`bWwFiW_benchMeta`,on:`bWwFiW_on`,benchEmpty:`bWwFiW_benchEmpty`,batchBar:`bWwFiW_batchBar`,header:`bWwFiW_header`,exportWrap:`bWwFiW_exportWrap`,telePrivacyTip:`bWwFiW_telePrivacyTip`,profileDiff:`bWwFiW_profileDiff`,jevObs:`bWwFiW_jevObs`,metricLabel:`bWwFiW_metricLabel`,drawerHead:`bWwFiW_drawerHead`,kind:`bWwFiW_kind`,toastViewport:`bWwFiW_toastViewport`,episodeRangeSep:`bWwFiW_episodeRangeSep`,viaChip:`bWwFiW_viaChip`,langOpt:`bWwFiW_langOpt`,legendItem:`bWwFiW_legendItem`,outcomeFailure:`bWwFiW_outcomeFailure`,backfillFailures:`bWwFiW_backfillFailures`,sectionTitle:`bWwFiW_sectionTitle`,profileDiffDel:`bWwFiW_profileDiffDel`,jevToggleRow:`bWwFiW_jevToggleRow`,exportCaret:`bWwFiW_exportCaret`,backfillRule:`bWwFiW_backfillRule`,panel:`bWwFiW_panel`,modalFoot:`bWwFiW_modalFoot`,backfill:`bWwFiW_backfill`,toastError:`bWwFiW_toastError`,episodeRowKind:`bWwFiW_episodeRowKind`,toolbarRow:`bWwFiW_toolbarRow`,expandLoading:`bWwFiW_expandLoading`,sideCol:`bWwFiW_sideCol`,metricValue:`bWwFiW_metricValue`,episodeRowText:`bWwFiW_episodeRowText`,jevObsItem:`bWwFiW_jevObsItem`,tabs:`bWwFiW_tabs`,refurbItem:`bWwFiW_refurbItem`,itemCheck:`bWwFiW_itemCheck`,itemIn:`bWwFiW_itemIn`,jev:`bWwFiW_jev`,roomRow:`bWwFiW_roomRow`,statusActive:`bWwFiW_statusActive`,tabUnderline:`bWwFiW_tabUnderline`,panelCard:`bWwFiW_panelCard`,refurbReason:`bWwFiW_refurbReason`,corridorFadeIn:`bWwFiW_corridorFadeIn`,profilePickerRow:`bWwFiW_profilePickerRow`,jevIntro:`bWwFiW_jevIntro`,jevForm:`bWwFiW_jevForm`,itemTags:`bWwFiW_itemTags`,relBlock:`bWwFiW_relBlock`};let s=`engram`,c={fact:`kindFact`,preference:`kindPreference`,decision:`kindDecision`,episode:`kindEpisode`,skill:`kindSkill`},l={nav:`记忆宫殿`,scopeUser:`私人`,scopeProject:`项目`,scopeShared:`共享`,projectFollow:`跟随当前工作区`,projectFollowHint:`项目宫殿跟随 GUI 当前选中的工作区(按会话归属判定)`,projectUnregistered:`未注册工作区`,projectSwitch:`项目宫殿来源`,projectMemories:`{n} 条记忆`,refresh:`重访`,exportMd:`导出 MD`,exportJson:`导出 JSON`,export:`导出`,exportMirror:`镜像目录`,exportMdHint:`单文件,可直接分享`,exportJsonHint:`结构化全文,便于程序处理`,exportMirrorHint:`每条记忆一个 .md,可用 Obsidian 漫游`,allStatuses:`全部状态`,allKinds:`全部房间`,redactedAll:`全部铭牌`,redactedOnly:`含涂改`,redactedNone:`无涂改`,tagRedacted:`已涂改`,tagOutcomeSuccess:`管家验证·有效`,tagOutcomeFailure:`管家验证·失效`,searchPlaceholder:`在宫殿里寻找…`,statusActive:`对外开放`,statusArchived:`展厅陈列`,statusForgotten:`已闭馆`,kindFact:`事实厅`,kindPreference:`偏好阁`,kindDecision:`决策堂`,kindEpisode:`往事廊`,kindSkill:`技法坊`,labelContent:`铭牌`,labelKind:`房间`,labelStatus:`状态`,labelScope:`宫殿归属`,importance:`地标亮度`,confidence:`考据可靠度`,accessCount:`参观 {n} 人次`,labelCreated:`开馆时间`,timeJustNow:`方才`,timeMinutesAgo:`{n} 分钟前`,timeHoursAgo:`{n} 小时前`,timeDaysAgo:`{n} 天前`,sourceExplicit:`管理员添置`,sourceSession:`发掘地 {id}`,round:`第 {n} 趟`,cardRedacted:`涂改 {n}`,detail:`参观`,edit:`修缮`,forget:`封门`,restore:`重开`,empty:`宫殿暂无可陈展的记忆`,emptyHint:`试试调整房间筛选,或新添一条`,loadFailed:`访客受挫:{msg}`,loading:`导览中…`,pagerInfo:`第 {page} / {pages} 页 · 共 {total} 条`,prevPage:`上一页`,nextPage:`下一页`,cancel:`作罢`,saveWithHint:`修缮(旧铭牌归展厅)`,detailAttributes:`铭牌`,detailSource:`发掘地`,detailRelations:`邻接走廊`,detailOperations:`管家日志`,relSupersededBy:`被替代`,relSupersedes:`替代`,relContradicts:`互斥`,relRelated:`相邻`,tabToday:`今日`,tabLibrary:`陈展`,tabCorridor:`走廊`,tabLog:`日志`,roomsTitle:`房间目录`,roomsHint:`每间满 9 个桩位后开新间`,healthEvaluatedAt:`诊脉于 {time}`,logFilterAll:`全部`,logFilterWrite:`落成类`,logFilterIngest:`发掘`,logFilterRetrieve:`检索`,logFilterOrganize:`整理`,logCount:`{n} 条 · 两库合并倒序`,benchTitle:`检索实验台`,drawerClose:`归殿`,drawerTitle:`记忆铭牌`,kpiTotal:`记忆`,kpiActive:`开放`,kpiForgotten:`闭馆`,kpiSignal:`清晰度`,opWrite:`落成`,opWriteMerge:`落成·并入`,opUpdate:`修缮`,opForget:`封门`,opRestore:`重开`,opDecay:`闭门陈列`,opSuperseded:`被替代`,opIngestRequest:`发掘请求`,opIngestDone:`发掘完成`,opOutcomeReport:`管家验证`,opAssess:`证据判定`,opConsolidation:`闭馆整理`,opReviewAnswer:`复习答题`,opSlotAssign:`排桩`,opSlotBackfill:`批量排桩`,opRoomOpen:`开新房`,consolidateArchived:`归档 {n}`,consolidateMerged:`合并 {n}`,consolidateSkipped:`跳过 {n}`,decayArchived:`归档 {n}`,slotBackfilled:`新排 {n} 个桩位`,roomOpened:`开新房 {room}`,reviewAnswered:`评分 {grade} · 下次 {days} 天后`,assessAdequate:`证据充足`,assessInadequate:`证据不足`,assessRefs:`{n} 条证据`,opSearchRewrite:`路线改写`,opCompressRequest:`导览压缩`,opDistillRequest:`合并房间`,selectAll:`本页全选`,deselectAll:`取消全选`,selectedCount:`已选 {n} 条`,batchForget:`批量封门({n})`,batchForgetConfirm:`确认封门 {n} 条?`,batchRestore:`批量重开({n})`,clearSelection:`清空所选`,sectionCorridor:`走廊鸟瞰`,corridorEmpty:`走廊空空如也,落成几条记忆后这里会出现鸟瞰图。`,corridorFailed:`走廊加载失败`,corridorLoad:`加载走廊鸟瞰…`,corridorAria:`走廊鸟瞰图`,corridorSummary:`{nodes} 条记忆 · {edges} 条走廊`,edgeSupersedes:`推陈出新`,edgeContradicts:`互斥`,edgeOther:`相邻 / 支持 / 提炼`,healthLoading:`正在诊脉…`,teleFailed:`遥测加载失败`,teleLoading:`聚合管家记录中…`,teleGroupRecent:`近 7 天`,telePrivacyHint:`数据仅在本机聚合`,telePrivacyTip:`所有 op_log 与遥测计数只在当前进程的 SQLite 里聚合,从未发送至任何外部服务;本机重启或卸载插件即清空。`,teleWrites:`落成`,teleIngest:`发掘`,teleConsolidate:`整理`,benchPlaceholder:`说出要找的房间关键词或语义…`,benchRun:`出发`,benchScopeAll:`全部宫殿`,benchHits:`到访 {n} 间`,benchDegraded:`语义灯熄,仅关键词引路`,benchEmpty:`此路不通`,benchNote:`试走与正式导览共用同一张地图,会计入参观人次`,viaFts:`关键词`,viaVec:`语义`,viaBoth:`双路`,viaEdgeLabel:`邻接走廊`,benchRewrite:`路线改写为 {n} 段`,benchCompress:`铭牌压缩 {n} 条`,activityEmpty:`暂无管家活动`,detailRevisions:`陈展沿革`,tourProposalTitle:`入殿导航`,tourProposalEmpty:`宫殿尚空,建议先放第一段记忆(调用 engram_save)`,tourProposalHint:`点击记忆可展开抽屉查看铭牌`,tourFocusAll:`全部`,refurbTitle:`翻新清单`,refurbEmpty:`所有房间状态健康,无翻新建议`,refurbRun:`重新扫描`,refurbActionDemote:`降级`,refurbActionMerge:`合并`,refurbActionReview:`复习`,refurbActionSplit:`拆分`,refurbCount:`{n} 条建议`,refurbExecute:`执行`,refurbConfirmDemote:`确认降级这条记忆?执行后状态转 archived,可在统计页恢复。`,refurbConfirmMerge:`确认合并 {n} 条相似记忆?将触发 engram_distill 把它们归纳为 1 条高层规律。`,refurbDemoteDone:`已降级`,refurbMergeDone:`合并任务已派发`,refurbActionFailed:`执行失败:{msg}`,refurbMergeEmpty:`无可合并的候选条目`,heroDue:`今日到期`,filterDueToday:`今日到期`,sortTime:`按时间`,sortTour:`按巡游路线`,dueBadgeLabel:`今日到期 {n} 条,点击在陈展中筛选`,tabBackfill:`回填`,backfillIntro:`把 dsh 的历史会话逐轮提炼进宫殿:每条会话写进它自己 cwd 对应的项目库;已摄取过的轮次按幂等键自动跳过,中断后再次开始即可续做。回填的条目不会进入今日复习队列。`,backfillRulesTitle:`导入规则`,backfillDays:`时间窗`,backfillDaysAll:`不限`,backfillDaysUnit:`{n} 天`,backfillMaxTurns:`单会话最多轮数`,backfillMaxTotal:`本次总轮数上限`,backfillModel:`辅助模型`,backfillModelAuto:`自动(用当前在用的模型)`,backfillIncludeSubagents:`包含子代理会话`,backfillIncludeSeeded:`包含种子会话`,backfillIncludeNoCwd:`包含无 cwd 会话(只能进私人宫殿)`,backfillReestimate:`重新估算`,backfillEstimateTitle:`估算`,backfillCandidates:`候选会话 {n}`,backfillPendingTurns:`待处理 {n} 轮`,backfillAlready:`已摄取跳过 {n} 轮`,backfillSkippedDetail:`已排除:子代理 {subagent} · 种子 {seeded} · 无 cwd {noCwd} · 超时间窗 {tooOld} · 日志不可读 {unreadable}`,backfillTruncated:`候选超出总轮数上限:本次只处理最近的一部分会话,可调大上限或分几次跑`,backfillStart:`开始回填`,backfillPause:`暂停`,backfillStateRunning:`回填中…`,backfillStateDone:`已完成`,backfillStateCancelled:`已中止(可再次开始续做)`,backfillStateFailed:`失败`,backfillProgressSessions:`会话 {done}/{total}`,backfillProgressTurns:`轮次 {done}/{total}`,backfillWritten:`写入 {n} 条`,backfillTurnsSkipped:`跳过 {n} 轮`,backfillTurnsFailed:`失败 {n} 轮`,backfillFailures:`失败明细`,backfillEstimating:`正在估算…`,backfillSkipReasons:`跳过原因`,backfillRouteHint:`失败多半是因为历史会话当时用的模型在当前环境不可用:可在 cordis.yml 配置 provider/model,或先用目标模型跑一轮会话(回填会复用当前在用的模型)再重试——已完成的轮次会自动跳过。`,skipLowActivity:`低活动轮`,skipChitchat:`寒暄轮`,skipForbidden:`显式禁记`,skipNoContent:`无用户内容`,skipAlready:`已摄取`,skipNoTurn:`无此轮`,skipNoRoute:`日志无路由`,skipUnparsable:`提炼输出不可解析`,opProfileEdit:`画像修订`,profileOpCreate:`创建 v{to} · {chars} 字`,profileOpEdit:`编辑 v{from}→v{to} · {chars} 字`,profileOpRollback:`回滚 v{from}→v{to}(还原 v{restored})· {chars} 字`,profileTitle:`常驻画像`,profileEmpty:`尚无常驻画像`,profileEmptyHint:`在会话里让 agent 调 engram_profile_edit 创建;创建后会话开始时优先于自动派生画像注入。`,profileCurrent:`当前内容 · v{n}`,profileHistory:`版本历史(新→旧)`,profileSourceEdit:`编辑`,profileSourceRollback:`回滚`,profileDiffBase:`基准版本`,profileDiffTarget:`对比版本`,profileDiffNone:`两个版本内容相同`,profileLoadFailed:`画像加载失败`,tabEpisodes:`往事`,episodeSince:`开始日期`,episodeUntil:`结束日期`,episodeSessionId:`会话 id(可选)`,episodeApply:`应用`,episodeReset:`重置`,episodeHint:`按会话分组浏览经历;组头是摄取时生成的一句话摘要,点条目的「邻近」看当时前后还发生了什么`,episodeNoGroups:`该范围内没有情景记忆`,episodeNoSession:`无会话来源`,episodeSummaryMissing:`(该会话尚未生成摘要:跑一次历史回填即可补上)`,episodeEntries:`{n} 条情景`,episodeNearby:`邻近`,episodeAroundTitle:`时间邻近扩展`,episodeAroundEmpty:`邻近窗口内没有其他情景`,episodeClose:`收起`,tabEntities:`实体`,tabBeliefs:`信念`,beliefHint:`管家从多条记忆自动巩固出的一句话结论;展开「证据」可回查支撑它的原始记忆`,beliefStatusAll:`全部`,beliefStatusActive:`成立`,beliefStatusStale:`待复核`,beliefStatusRefuted:`已否定`,beliefCount:`{n} 条信念`,beliefEvidence:`证据 {n} 条`,beliefEvidenceEmpty:`证据记忆已被清理,信念保留`,beliefNone:`还没有巩固出信念;管家会在记忆积累后自动归纳`,entityHint:`从记忆中抽取的人物、项目、工具与概念;点「查看」看一条实体牵出的所有记忆`,entityKindAll:`全部类别`,entityKindPerson:`人物`,entityKindProject:`项目`,entityKindTool:`工具`,entityKindConcept:`概念`,entityKindOther:`其他`,entitySearchPlaceholder:`搜索实体名或别名`,entityCount:`{n} 个实体`,entityMemories:`{n} 条关联记忆`,entityOpen:`查看`,entityAliases:`别名`,entityNoMemories:`暂无关联记忆`,entityEmpty:`该宫殿还没有实体;保存带实体提及的记忆后会自动出现`,factSection:`事实链({n} 条)`,factEmpty:`暂无事实;摄取时从记忆抽取的实体事实会出现在这里`,factValid:`生效`,factInvalid:`已失效`,tabJev:`裁决`,jevIntro:`Jev 系统一裁决:写入落库前对模糊记忆做三路判定(合并 / 接受 / 搁置)并确认矛盾边。密钥保存在本机数据目录(0600 文件),保存后立即生效,无需重启;Jev 不可用时自动回落纯规则四态。`,jevEnabled:`启用 Jev 裁决`,jevStatusOn:`Jev 裁决已生效`,jevStatusOff:`Jev 裁决未生效(纯规则四态)`,jevApiKey:`API 密钥`,jevApiKeyHint:`留空表示保留现有密钥;要清除已存密钥(回落 cordis.yml 配置)点「清除已存密钥」。`,jevApiKeyUnset:`未配置`,jevClearKey:`清除已存密钥`,jevKeyCleared:`已清除面板密钥,回落部署配置`,jevBaseUrl:`端点`,jevModel:`判决模型`,jevTimeoutMs:`超时(毫秒,1000-60000)`,jevThresholdsTitle:`裁决阈值(cordis.yml 高级配置,此处只读)`,jevThresholdLine:`判同一条 ≥{merge} · 判不同条 ≤{accept} · 矛盾确认 ≥{contradict}`,jevSave:`保存`,jevSaved:`已保存,配置即时生效`,jevLoadFailed:`加载失败`,jevTest:`测试连接`,jevTestOk:`连接正常:{ms} 毫秒,ping 概率 {p}`,jevTestFail:`连接失败:{error}`,jevObsTitle:`近期裁决(本进程,最多 50 条,重启清空)`,jevObsEmpty:`暂无记录;启用 Jev 后发生写入裁决时出现`,jevObsLoadFailed:`裁决记录加载失败`,jevObsSiteBand:`模糊带`,jevObsSiteContradiction:`矛盾确认`,jevObsVerdictMerge:`并入`,jevObsVerdictAccept:`放行`,jevObsVerdictDefer:`搁置`,jevObsVerdictConfirm:`确认矛盾`,jevObsVerdictReject:`非矛盾`,jevObsVerdictFallback:`回落`,jevObsNoAnswer:`无答案`,jevObsErrorLine:`错误:{error}`},u={nav:`Memory Palace`,scopeUser:`Private`,scopeProject:`Project`,scopeShared:`Shared`,projectFollow:`Follow the active workspace`,projectFollowHint:`The project palace follows the workspace selected in the GUI (by session ownership)`,projectUnregistered:`unregistered workspace`,projectSwitch:`Project palace source`,projectMemories:`{n} memories`,refresh:`Revisit`,exportMd:`Export MD`,exportJson:`Export JSON`,export:`Export`,exportMirror:`Mirror tree`,exportMdHint:`Single file, easy to share`,exportJsonHint:`Structured full dump for scripts`,exportMirrorHint:`One .md per memory, roamable in Obsidian`,allStatuses:`All statuses`,allKinds:`All rooms`,redactedAll:`All placards`,redactedOnly:`Redacted`,redactedNone:`Unredacted`,tagRedacted:`redacted`,tagOutcomeSuccess:`curator: worked`,tagOutcomeFailure:`curator: failed`,searchPlaceholder:`Wander the palace…`,statusActive:`open to public`,statusArchived:`on display`,statusForgotten:`closed`,kindFact:`Fact Hall`,kindPreference:`Preference Pavilion`,kindDecision:`Decision Chamber`,kindEpisode:`Episode Gallery`,kindSkill:`Skill Workshop`,labelContent:`Placard`,labelKind:`Room`,labelStatus:`Status`,labelScope:`Palace`,importance:`Beacon`,confidence:`Provenance`,accessCount:`{n} visits`,labelCreated:`Opened`,timeJustNow:`just now`,timeMinutesAgo:`{n} min ago`,timeHoursAgo:`{n} hr ago`,timeDaysAgo:`{n} d ago`,sourceExplicit:`Curator placed`,sourceSession:`Excavated at {id}`,round:`pass {n}`,cardRedacted:`{n} redacted`,detail:`Tour`,edit:`Renovate`,forget:`Close`,restore:`Reopen`,empty:`No memories to display`,emptyHint:`Adjust the rooms above, or place a new memory`,loadFailed:`Tour halted: {msg}`,loading:`Guiding…`,pagerInfo:`Page {page} / {pages} · {total} memories`,prevPage:`Previous page`,nextPage:`Next page`,cancel:`Cancel`,saveWithHint:`Renovate (archive old placard)`,detailAttributes:`Placard`,detailSource:`Excavation`,detailRelations:`Corridors`,detailOperations:`Curator log`,relSupersededBy:`Superseded by`,relSupersedes:`Supersedes`,relContradicts:`Contradicts`,relRelated:`Adjacent`,tabToday:`Today`,tabLibrary:`Palace`,tabCorridor:`Corridor`,tabLog:`Log`,roomsTitle:`Room directory`,roomsHint:`A new room opens once 9 slots fill`,healthEvaluatedAt:`Scored {time}`,logFilterAll:`All`,logFilterWrite:`Writes`,logFilterIngest:`Capture`,logFilterRetrieve:`Retrieval`,logFilterOrganize:`Organize`,logCount:`{n} entries · both stores merged, newest first`,benchTitle:`Retrieval bench`,drawerClose:`Return`,drawerTitle:`Memory placard`,kpiTotal:`Memories`,kpiActive:`Open`,kpiForgotten:`Closed`,kpiSignal:`Clarity`,opWrite:`opened`,opWriteMerge:`merged in`,opUpdate:`renovated`,opForget:`closed`,opRestore:`reopened`,opDecay:`archived`,opSuperseded:`superseded`,opIngestRequest:`excavation requested`,opIngestDone:`excavated`,opOutcomeReport:`curator report`,opAssess:`evidence check`,opConsolidation:`consolidation`,opReviewAnswer:`review answer`,opSlotAssign:`slot assigned`,opSlotBackfill:`slots backfilled`,opRoomOpen:`room opened`,consolidateArchived:`archived {n}`,consolidateMerged:`merged {n}`,consolidateSkipped:`skipped {n}`,decayArchived:`archived {n}`,slotBackfilled:`{n} slots assigned`,roomOpened:`opened room {room}`,reviewAnswered:`grade {grade} · next in {days}d`,assessAdequate:`evidence adequate`,assessInadequate:`evidence insufficient`,assessRefs:`{n} refs`,opSearchRewrite:`route rewritten`,opCompressRequest:`placard compressed`,opDistillRequest:`rooms merged`,selectAll:`Select all on page`,deselectAll:`Deselect all`,selectedCount:`{n} memories`,batchForget:`Close selected ({n})`,batchForgetConfirm:`Close {n} memories?`,batchRestore:`Reopen selected ({n})`,clearSelection:`Clear selection`,sectionCorridor:`Corridor overview`,corridorEmpty:`No memories yet — the bird’s-eye view appears after a few memories arrive.`,corridorFailed:`Failed to load corridor`,corridorLoad:`Loading corridor overview…`,corridorAria:`Corridor overview map`,corridorSummary:`{nodes} memories · {edges} corridors`,edgeSupersedes:`supersedes`,edgeContradicts:`contradicts`,edgeOther:`related / supports / refines`,healthLoading:`Taking pulse…`,teleFailed:`Telemetry failed`,teleLoading:`Aggregating curator events…`,teleGroupRecent:`Last 7 days`,telePrivacyHint:`Local aggregation only`,telePrivacyTip:`All op_log and telemetry counters are aggregated in this process’s SQLite only; nothing is sent to any external service. Clearing the plugin or restarting the host wipes the data.`,teleWrites:`Opened`,teleIngest:`Excavated`,teleConsolidate:`Consolidated`,benchPlaceholder:`Name a room by keyword or meaning…`,benchRun:`Walk`,benchScopeAll:`All palaces`,benchHits:`{n} rooms found`,benchDegraded:`Beacon dark · keyword lane only`,benchEmpty:`No route found`,benchNote:`Walk uses the same map as the guided tour and counts as a visit`,viaFts:`keyword`,viaVec:`semantic`,viaBoth:`dual`,viaEdgeLabel:`corridor`,benchRewrite:`route split into {n}`,benchCompress:`compressed {n} overflow placards`,activityEmpty:`No curator activity yet`,detailRevisions:`Exhibit history`,tourProposalTitle:`Tour proposal`,tourProposalEmpty:`The palace is empty — place a first memory via engram_save`,tourProposalHint:`Click a memory to open its placard`,tourFocusAll:`All`,refurbTitle:`Refurb suggestions`,refurbEmpty:`All rooms are healthy — no suggestions`,refurbRun:`Re-scan`,refurbActionDemote:`demote`,refurbActionMerge:`merge`,refurbActionReview:`review`,refurbActionSplit:`split`,refurbCount:`{n} suggestions`,refurbExecute:`Apply`,refurbConfirmDemote:`Demote this memory? Status will become archived; you can reopen it later.`,refurbConfirmMerge:`Merge {n} similar memories? This triggers engram_distill to fold them into one higher-level pattern.`,refurbDemoteDone:`Demoted`,refurbMergeDone:`Merge dispatched`,refurbActionFailed:`Action failed: {msg}`,refurbMergeEmpty:`No merge candidates`,heroDue:`Due today`,filterDueToday:`Due today`,sortTime:`By time`,sortTour:`By tour route`,dueBadgeLabel:`{n} due today — click to filter in the library`,tabBackfill:`Backfill`,backfillIntro:`Distils past dsh sessions into the palace, turn by turn: each session is written into the project store matching its own cwd. Turns already captured are skipped by idempotency key, so starting again resumes where it stopped. Backfilled memories never enter the due-today queue.`,backfillRulesTitle:`Import rules`,backfillDays:`Time window`,backfillDaysAll:`All`,backfillDaysUnit:`{n} days`,backfillMaxTurns:`Max turns per session`,backfillMaxTotal:`Total turn budget`,backfillModel:`Auxiliary model`,backfillModelAuto:`Auto (model currently in use)`,backfillIncludeSubagents:`Include subagent sessions`,backfillIncludeSeeded:`Include seeded sessions`,backfillIncludeNoCwd:`Include sessions without cwd (private palace only)`,backfillReestimate:`Re-estimate`,backfillEstimateTitle:`Estimate`,backfillCandidates:`{n} candidate sessions`,backfillPendingTurns:`{n} turns pending`,backfillAlready:`{n} turns already captured`,backfillSkippedDetail:`Excluded: subagent {subagent} · seeded {seeded} · no cwd {noCwd} · outside window {tooOld} · unreadable {unreadable}`,backfillTruncated:`Candidates exceed the total turn budget: only the most recent sessions run this time — raise the budget or run in batches`,backfillStart:`Start backfill`,backfillPause:`Pause`,backfillStateRunning:`Running…`,backfillStateDone:`Finished`,backfillStateCancelled:`Stopped (start again to resume)`,backfillStateFailed:`Failed`,backfillProgressSessions:`Sessions {done}/{total}`,backfillProgressTurns:`Turns {done}/{total}`,backfillWritten:`{n} memories written`,backfillTurnsSkipped:`{n} turns skipped`,backfillTurnsFailed:`{n} turns failed`,backfillFailures:`Failures`,backfillEstimating:`Estimating…`,backfillSkipReasons:`Skipped`,backfillRouteHint:`Failures are usually because the model a past session used is not available here: set provider/model in cordis.yml, or run one turn with the target model first (backfill reuses the model currently in use) and retry — finished turns are skipped automatically.`,skipLowActivity:`low activity`,skipChitchat:`chitchat`,skipForbidden:`capture forbidden`,skipNoContent:`no user content`,skipAlready:`already captured`,skipNoTurn:`no such turn`,skipNoRoute:`no route in log`,skipUnparsable:`unparsable output`,opProfileEdit:`profile revised`,profileOpCreate:`created v{to} · {chars} chars`,profileOpEdit:`edited v{from}→v{to} · {chars} chars`,profileOpRollback:`rolled back v{from}→v{to} (restored v{restored}) · {chars} chars`,profileTitle:`Curated profile block`,profileEmpty:`No curated profile yet`,profileEmptyHint:`Ask the agent to call engram_profile_edit in a session; once created it is injected ahead of the derived profile at session start.`,profileCurrent:`Current content · v{n}`,profileHistory:`Version history (newest first)`,profileSourceEdit:`edited`,profileSourceRollback:`rollback`,profileDiffBase:`Base version`,profileDiffTarget:`Compare version`,profileDiffNone:`The two versions are identical`,profileLoadFailed:`Failed to load profile`,tabEpisodes:`Episodes`,episodeSince:`From date`,episodeUntil:`To date`,episodeSessionId:`Session id (optional)`,episodeApply:`Apply`,episodeReset:`Reset`,episodeHint:`Browse experiences grouped by session; group heads carry a one-line summary generated at ingest. Click "Nearby" on an entry to see what else happened around that moment`,episodeNoGroups:`No episodes in this range`,episodeNoSession:`No session origin`,episodeSummaryMissing:`(No summary yet for this session: run a history backfill to add one)`,episodeEntries:`{n} episodes`,episodeNearby:`Nearby`,episodeAroundTitle:`Time proximity expansion`,episodeAroundEmpty:`No other episodes within the proximity window`,episodeClose:`Collapse`,tabEntities:`Entities`,tabBeliefs:`Beliefs`,beliefHint:`One-line conclusions the butler consolidated from multiple memories; expand the evidence to inspect the underlying memories`,beliefStatusAll:`All`,beliefStatusActive:`Held`,beliefStatusStale:`Stale`,beliefStatusRefuted:`Refuted`,beliefCount:`{n} beliefs`,beliefEvidence:`{n} evidence`,beliefEvidenceEmpty:`Evidence memories were purged; the belief is kept`,beliefNone:`No consolidated beliefs yet; the butler induces them once memories accumulate`,entityHint:`People, projects, tools and concepts extracted from memories; open one to see every memory that mentions it`,entityKindAll:`All kinds`,entityKindPerson:`People`,entityKindProject:`Projects`,entityKindTool:`Tools`,entityKindConcept:`Concepts`,entityKindOther:`Other`,entitySearchPlaceholder:`Search names or aliases`,entityCount:`{n} entities`,entityMemories:`{n} linked memories`,entityOpen:`View`,entityAliases:`Aliases`,entityNoMemories:`No linked memories`,entityEmpty:`No entities in this palace yet; they appear after you save memories that mention them`,factSection:`Facts ({n})`,factEmpty:`No facts yet; facts extracted from memories during ingestion will appear here`,factValid:`active`,factInvalid:`superseded`,tabJev:`Jev`,jevIntro:`Jev System-One adjudication: three-way ruling (merge / accept / defer) for ambiguous memories before they are written, plus contradiction confirmation. The key is stored in the local data directory (0600 file) and takes effect immediately after saving, no restart; when Jev is unavailable the plugin falls back to the pure four-rule disposition.`,jevEnabled:`Enable Jev adjudication`,jevStatusOn:`Jev adjudication active`,jevStatusOff:`Jev adjudication inactive (pure rule-based dispositions)`,jevApiKey:`API key`,jevApiKeyHint:`Leave empty to keep the stored key; click "Clear stored key" to remove it (falls back to cordis.yml).`,jevApiKeyUnset:`not configured`,jevClearKey:`Clear stored key`,jevKeyCleared:`Panel key cleared; falling back to deployment config`,jevBaseUrl:`Endpoint`,jevModel:`Adjudication model`,jevTimeoutMs:`Timeout (ms, 1000-60000)`,jevThresholdsTitle:`Adjudication thresholds (advanced cordis.yml config, read-only here)`,jevThresholdLine:`same memory ≥{merge} · new memory ≤{accept} · contradiction ≥{contradict}`,jevSave:`Save`,jevSaved:`Saved; config takes effect immediately`,jevLoadFailed:`Failed to load`,jevTest:`Test connection`,jevTestOk:`Connection OK: {ms} ms, ping probability {p}`,jevTestFail:`Connection failed: {error}`,jevObsTitle:`Recent adjudications (this process, up to 50, cleared on restart)`,jevObsEmpty:`No records yet; they appear when Jev adjudicates a write after being enabled`,jevObsLoadFailed:`Failed to load adjudication records`,jevObsSiteBand:`band`,jevObsSiteContradiction:`contradiction`,jevObsVerdictMerge:`merge`,jevObsVerdictAccept:`accept`,jevObsVerdictDefer:`defer`,jevObsVerdictConfirm:`confirm`,jevObsVerdictReject:`reject`,jevObsVerdictFallback:`fallback`,jevObsNoAnswer:`no answer`,jevObsErrorLine:`error: {error}`};function d(e,t){let n=c[t];return n===void 0?t:e(n)}let f={fact:`#5b8def`,preference:`#f0a85c`,decision:`#9b6bd9`,episode:`#3cb489`,skill:`#e26b86`},p={related:{color:`rgba(120, 130, 150, 0.6)`,dash:void 0,width:1},refines:{color:`rgba(120, 130, 150, 0.6)`,dash:void 0,width:1},supports:{color:`rgba(120, 130, 150, 0.6)`,dash:void 0,width:1},supersedes:{color:`rgba(91, 141, 239, 0.85)`,dash:void 0,width:1.8},contradicts:{color:`rgba(226, 107, 134, 0.9)`,dash:`4 4`,width:1.4}};function m(e){return Math.max(4,Math.min(14,4+10*e.importance*e.confidence))}function h(e,t,n,r,i){let a=.003;for(let t=0;t<e.length;t+=1){let n=e[t];for(let r=t+1;r<e.length;r+=1){let t=e[r],a=n.x-t.x,o=n.y-t.y,s=Math.sqrt(a*a+o*o)+.01,c=4800*i/(s*s),l=a/s*c,u=o/s*c;n.vx+=l,n.vy+=u,t.vx-=l,t.vy-=u}}let o=new Map(e.map(e=>[e.id,e]));for(let e of t){let t=o.get(e.from),n=o.get(e.to);if(t===void 0||n===void 0)continue;let r=n.x-t.x,a=n.y-t.y,s=Math.sqrt(r*r+a*a)+.01,c=(s-64)*.04*i,l=r/s*c,u=a/s*c;t.vx+=l,t.vy+=u,n.vx-=l,n.vy-=u}let s=[...new Set(e.map(e=>e.kind))],c=n/Math.max(s.length,1);for(let t of e){if(t.fixed)continue;t.vx+=(n/2-t.x)*a*i,t.vy+=(r/2-t.y)*a*i;let e=s.indexOf(t.kind);if(e>=0){let n=c*(e+.5);t.vx+=(n-t.x)*.005*i}}let l=.82;for(let t of e){if(t.fixed){t.vx=0,t.vy=0;continue}t.vx*=l,t.vy*=l,t.x=Math.max(20,Math.min(n-20,t.x+t.vx)),t.y=Math.max(20,Math.min(r-20,t.y+t.vy))}}function g(e){let{scope:t,nodes:n,edges:a,onSelect:s,selectedId:c,t:l}=e,u=(0,r.useMemo)(()=>{let e=new Map;for(let t of n)e.set(t.id,new Set);for(let t of a)e.has(t.from)||e.set(t.from,new Set),e.has(t.to)||e.set(t.to,new Set),e.get(t.from).add(t.to),e.get(t.to).add(t.from);return e},[n,a]),g=(0,r.useMemo)(()=>{let e=[...new Set(n.map(e=>e.kind))],t=560/Math.max(e.length,1);return n.map((n,r)=>({...n,x:e.indexOf(n.kind)>=0?t*(e.indexOf(n.kind)+.5):280,y:30+r*47%260,vx:0,vy:0,r:m(n),fixed:!1}))},[n,560,320]),_=(0,r.useRef)(g.map(e=>({...e}))),[,v]=(0,r.useState)(0),y=(0,r.useRef)(null),b=(0,r.useRef)(0);(0,r.useEffect)(()=>{_.current=g.map(e=>({...e})),b.current=0,v(e=>e+1)},[g]),(0,r.useEffect)(()=>{let e=()=>{let t=_.current;b.current+=1;let n=Math.max(.1,1-b.current/280*.9);h(t,a,560,320,n),_.current=t.map(e=>({...e})),v(e=>e+1),b.current<280&&(y.current=requestAnimationFrame(e))};return y.current=requestAnimationFrame(e),()=>{y.current!==null&&cancelAnimationFrame(y.current)}},[g,a]);let x=_.current,S=(0,r.useMemo)(()=>new Map(x.map(e=>[e.id,e])),[x]),C=(0,r.useMemo)(()=>[...new Set(n.map(e=>e.kind))],[n]),[w,T]=(0,r.useState)(null),E=(0,r.useMemo)(()=>w===null?null:u.get(w)??new Set,[w,u]),D=e=>w!==null&&e!==w&&!(E?.has(e)??!1),O=e=>w===null?!1:e.from===w||e.to===w,k=(0,r.useRef)(null),A=(0,r.useRef)(null),j=(e,t)=>{let n=k.current;if(n===null)return null;let r=n.getBoundingClientRect(),i=560/r.width,a=320/r.height;return{x:(e-r.left)*i,y:(t-r.top)*a}},M=(e,t)=>{e.preventDefault(),A.current=t;let n=_.current.find(e=>e.id===t);n!==void 0&&(n.fixed=!0)};return(0,r.useEffect)(()=>{let e=e=>{let t=A.current;if(t===null)return;let n=j(e.clientX,e.clientY);if(n===null)return;let r=_.current.find(e=>e.id===t);r!==void 0&&(r.x=Math.max(20,Math.min(540,n.x)),r.y=Math.max(20,Math.min(300,n.y)),r.vx=0,r.vy=0,v(e=>e+1))},t=()=>{let e=A.current;if(e===null)return;let t=_.current.find(t=>t.id===e);t!==void 0&&(t.fixed=!1),A.current=null};return window.addEventListener(`mousemove`,e),window.addEventListener(`mouseup`,t),()=>{window.removeEventListener(`mousemove`,e),window.removeEventListener(`mouseup`,t)}},[]),n.length===0?(0,i.jsx)(`div`,{className:o.empty,children:l(`corridorEmpty`)}):(0,i.jsxs)(`div`,{className:o.mapWrap,children:[(0,i.jsxs)(`svg`,{ref:k,viewBox:`0 0 560 320`,className:o.map,preserveAspectRatio:`xMidYMid meet`,role:`img`,"aria-label":l(`corridorAria`),children:[C.map((e,t)=>{let n=560/Math.max(C.length,1);return(0,i.jsx)(`rect`,{x:n*t,y:0,width:n,height:320,fill:t%2==0?`rgba(127,127,127,0.04)`:`transparent`},e)}),C.map((e,t)=>{let n=560/Math.max(C.length,1);return(0,i.jsx)(`text`,{x:n*(t+.5),y:14,textAnchor:`middle`,fill:`rgba(127,127,127,0.7)`,fontSize:`10`,fontFamily:`ui-sans-serif, system-ui`,children:d(l,e)},`${e}-label`)}),a.map((e,t)=>{let n=S.get(e.from),r=S.get(e.to);if(n===void 0||r===void 0)return null;let a=p[e.type]??p.related,s=O(e),c=w!==null&&!s;if(s){let t=(n.x+r.x)/2,o=(n.y+r.y)/2,s=r.x-n.x,c=r.y-n.y,l=Math.sqrt(s*s+c*c)||1,u=-c/l*6,d=s/l*6;return(0,i.jsx)(`path`,{d:`M ${String(n.x)} ${String(n.y)} Q ${String(t+u)} ${String(o+d)} ${String(r.x)} ${String(r.y)}`,fill:`none`,stroke:a.color,strokeWidth:a.width+1.2,strokeDasharray:a.dash,style:{transition:`stroke-width 200ms ease, d 240ms ease`},children:(0,i.jsx)(`title`,{children:`${n.title} --${e.type}--> ${r.title}`})},e.id)}return(0,i.jsx)(`line`,{x1:n.x,y1:n.y,x2:r.x,y2:r.y,stroke:a.color,strokeWidth:a.width,strokeDasharray:a.dash,opacity:c?.1:1,className:o.edgeFade,style:{transition:`opacity 200ms ease, stroke-width 200ms ease`,animationDelay:`${String(Math.min(t,24)*24)}ms`},children:(0,i.jsx)(`title`,{children:`${n.title} --${e.type}--> ${r.title}`})},e.id)}),x.map((e,t)=>{let n=f[e.kind]??`#7d8590`,r=c===e.id,a=w===e.id,l=D(e.id);return(0,i.jsxs)(`g`,{className:o.node,transform:`translate(${String(e.x)} ${String(e.y)})`,style:{cursor:A.current===e.id?`grabbing`:`grab`,opacity:l?.15:1,transition:`opacity 200ms ease`,animationDelay:`${String(Math.min(t,24)*24)}ms`},onMouseEnter:()=>{T(e.id)},onMouseLeave:()=>{T(t=>t===e.id?null:t)},onMouseDown:t=>M(t,e.id),onClick:()=>s?.(e.id),children:[(a||r)&&(0,i.jsx)(`circle`,{r:String(e.r+6),fill:n,fillOpacity:.18}),(0,i.jsx)(`circle`,{r:String(e.r),fill:n,fillOpacity:e.status===`active`?.88:.42,stroke:r?`var(--dsw-alias-brand-primary)`:a?n:`rgba(255,255,255,0.9)`,strokeWidth:r?2:a?1.5:1,style:{transition:`stroke 160ms ease, stroke-width 160ms ease`},children:(0,i.jsx)(`title`,{children:`${e.title}(${e.kind}/${e.status})`})}),r&&(0,i.jsx)(`circle`,{r:String(e.r+4),fill:`none`,stroke:n,strokeOpacity:.4,strokeWidth:1})]},e.id)}),w!==null&&(()=>{let e=S.get(w);if(e===void 0)return null;let t=Math.min(380,Math.max(8,e.x+14)),n=Math.min(260,Math.max(28,e.y-16)),r=(e.content??e.title).slice(0,120);return(0,i.jsxs)(`g`,{className:o.tooltip,transform:`translate(${String(t)} ${String(n)})`,children:[(0,i.jsx)(`rect`,{x:0,y:0,width:176,height:48,rx:6,ry:6,fill:`var(--dsw-alias-bg-base)`,stroke:`var(--dsw-alias-border-l2)`,strokeWidth:1,opacity:.96}),(0,i.jsx)(`text`,{x:8,y:16,fill:`var(--dsw-alias-label-primary)`,fontSize:`11`,fontWeight:600,fontFamily:`ui-sans-serif, system-ui`,children:d(l,e.kind)}),(0,i.jsx)(`text`,{x:8,y:32,fill:`var(--dsw-alias-label-secondary)`,fontSize:`10`,fontFamily:`ui-sans-serif, system-ui`,children:`${r}${(e.content??e.title).length>120?`…`:``}`})]})})()]},t),(0,i.jsxs)(`div`,{className:o.legend,children:[C.map(e=>(0,i.jsxs)(`span`,{className:o.legendItem,children:[(0,i.jsx)(`span`,{className:o.legendDot,style:{background:f[e]??`#7d8590`}}),d(l,e)]},e)),(0,i.jsx)(`span`,{className:o.legendItem,children:l(`corridorSummary`,{nodes:n.length,edges:a.length})})]}),(0,i.jsx)(`div`,{className:o.legend,style:{marginTop:2},children:Object.entries(p).map(([e,t])=>(0,i.jsxs)(`span`,{className:o.legendItem,children:[(0,i.jsx)(`svg`,{width:20,height:6,"aria-hidden":`true`,children:(0,i.jsx)(`line`,{x1:0,y1:3,x2:20,y2:3,stroke:t.color,strokeWidth:t.width,strokeDasharray:t.dash})}),(0,i.jsx)(`span`,{children:l(e===`supersedes`?`edgeSupersedes`:e===`contradicts`?`edgeContradicts`:`edgeOther`)})]},e))})]})}let _={info:3e3,success:3e3,warning:5e3,error:5e3},v=0;function y({items:e,onDismiss:t}){return(0,i.jsx)(`div`,{className:o.toastViewport,role:`region`,"aria-live":`polite`,"aria-label":`notifications`,children:e.map(e=>{let n=e.kind===`success`?o.toastSuccess:e.kind===`error`?o.toastError:e.kind===`warning`?o.toastWarning:o.toastInfo;return(0,i.jsxs)(`div`,{className:`${o.toast} ${n}`,role:e.kind===`error`||e.kind===`warning`?`alert`:`status`,children:[(0,i.jsx)(`span`,{className:o.toastBody,children:e.message}),(0,i.jsx)(`button`,{type:`button`,className:o.toastDismiss,"aria-label":`dismiss`,onClick:()=>{t(e.id)},children:`×`})]},e.id)})})}function b(){let[e,t]=(0,r.useState)([]),n=(0,r.useRef)(new Map),a=(0,r.useCallback)(e=>{t(t=>t.filter(t=>t.id!==e));let r=n.current.get(e);r!==void 0&&(clearTimeout(r),n.current.delete(e))},[]),o=(0,r.useCallback)((e,r,i)=>{v+=1;let o=v,s=i??_[e],c={id:o,kind:e,message:r,duration:s};t(e=>[...e,c]);let l=setTimeout(()=>{a(o)},s);n.current.set(o,l)},[a]);return(0,r.useEffect)(()=>()=>{for(let e of n.current.values())clearTimeout(e);n.current.clear()},[]),{toasts:e,push:o,dismiss:a,viewport:(0,i.jsx)(y,{items:e,onDismiss:a})}}let x=`dsh-engram.ui`;function S(e){try{return window.localStorage.getItem(e)??void 0}catch{return}}function C(e,t){try{window.localStorage.setItem(e,t)}catch{}}function w(e,t){return e!==void 0&&t.includes(e)}function T(e,t,n){let i=`${x}.${e}`,[a,o]=(0,r.useState)(()=>{let e=S(i);return w(e,n)?e:t});return(0,r.useEffect)(()=>{C(i,a)},[i,a]),[a,(0,r.useCallback)(e=>{o(e)},[])]}function E(e,t){let n=`${x}.${e}`,[i,a]=(0,r.useState)(()=>S(n)??t);return(0,r.useEffect)(()=>{C(n,i)},[n,i]),[i,(0,r.useCallback)(e=>{a(e)},[])]}let D={today:(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`circle`,{cx:`12`,cy:`12`,r:`3`}),(0,i.jsx)(`path`,{d:`M2 12h3M19 12h3M12 2v3M12 19v3`})]}),library:(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`rect`,{x:`4`,y:`4`,width:`9`,height:`9`,rx:`1`}),(0,i.jsx)(`rect`,{x:`11`,y:`11`,width:`9`,height:`9`,rx:`1`})]}),corridor:(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`circle`,{cx:`5`,cy:`6`,r:`1.8`}),(0,i.jsx)(`circle`,{cx:`19`,cy:`6`,r:`1.8`}),(0,i.jsx)(`circle`,{cx:`12`,cy:`18`,r:`1.8`}),(0,i.jsx)(`path`,{d:`M6.5 7.5L11 16.5M17.5 7.5L13 16.5M7 6h10`})]}),episodes:(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`circle`,{cx:`12`,cy:`12`,r:`8`}),(0,i.jsx)(`path`,{d:`M12 7v5l3 2`})]}),entities:(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`path`,{d:`M12 3 L21 12 L12 21 L3 12 Z`}),(0,i.jsx)(`circle`,{cx:`12`,cy:`12`,r:`2.5`})]}),beliefs:(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`path`,{d:`M9 18h6`}),(0,i.jsx)(`path`,{d:`M10 21h4`}),(0,i.jsx)(`path`,{d:`M12 3a6 6 0 00-3.5 10.9c.7.5 1.1 1.2 1.3 2.1h4.4c.2-.9.6-1.6 1.3-2.1A6 6 0 0012 3z`})]}),log:(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`line`,{x1:`5`,y1:`6`,x2:`19`,y2:`6`}),(0,i.jsx)(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`}),(0,i.jsx)(`line`,{x1:`5`,y1:`18`,x2:`13`,y2:`18`})]}),backfill:(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`path`,{d:`M12 4v11`}),(0,i.jsx)(`path`,{d:`M7 10l5 5 5-5`}),(0,i.jsx)(`line`,{x1:`4`,y1:`20`,x2:`20`,y2:`20`})]}),jev:(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`path`,{d:`M12 3 L4 8 V16 L12 21 L20 16 V8 Z`}),(0,i.jsx)(`path`,{d:`M9 12l2 2 4-4`})]}),user:(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`circle`,{cx:`12`,cy:`8`,r:`4`}),(0,i.jsx)(`path`,{d:`M4 20c0-4 4-6 8-6s8 2 8 6`})]}),project:(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`path`,{d:`M3 7 L9 7 L11 5 L21 5 L21 17 L3 17 Z`}),(0,i.jsx)(`line`,{x1:`3`,y1:`7`,x2:`3`,y2:`17`})]}),shared:(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`circle`,{cx:`12`,cy:`12`,r:`9`}),(0,i.jsx)(`path`,{d:`M3 12h18`}),(0,i.jsx)(`path`,{d:`M12 3a14 14 0 010 18`}),(0,i.jsx)(`path`,{d:`M12 3a14 14 0 000 18`})]}),folder:(0,i.jsx)(i.Fragment,{children:(0,i.jsx)(`path`,{d:`M3 7 L9 7 L11 5 L21 5 L21 17 L3 17 Z`})}),refresh:(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`path`,{d:`M3 12a9 9 0 0115-6.7L21 8`}),(0,i.jsx)(`path`,{d:`M21 3v5h-5`}),(0,i.jsx)(`path`,{d:`M21 12a9 9 0 01-15 6.7L3 16`}),(0,i.jsx)(`path`,{d:`M3 21v-5h5`})]}),export:(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`path`,{d:`M12 15V4`}),(0,i.jsx)(`path`,{d:`M8 8l4-4 4 4`}),(0,i.jsx)(`path`,{d:`M4 15v3a2 2 0 002 2h12a2 2 0 002-2v-3`})]}),clock:(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`circle`,{cx:`12`,cy:`12`,r:`9`}),(0,i.jsx)(`path`,{d:`M12 7v5l3 2`})]}),brand:(0,i.jsx)(i.Fragment,{children:(0,i.jsx)(`path`,{d:`M12 2 L14.5 9 L22 9.5 L16 14.5 L18 22 L12 17.5 L6 22 L8 14.5 L2 9.5 L9.5 9 Z`})})};function O({name:e,className:t}){return(0,i.jsx)(`svg`,{className:t,viewBox:`0 0 24 24`,"aria-hidden":`true`,focusable:`false`,children:D[e]})}let k={zh:l,en:u};function A(e){let t=k[e];return(e,n)=>(t[e]??String(e)).replace(/\{(\w+)\}/g,(e,t)=>{let r=n?.[t];return r===void 0?e:String(r)})}let j=[`fact`,`preference`,`decision`,`episode`,`skill`],M={active:`statusActive`,archived:`statusArchived`,forgotten:`statusForgotten`},N={user:`scopeUser`,project:`scopeProject`,shared:`scopeShared`},P={fact:`roomFact`,preference:`roomPreference`,decision:`roomDecision`,episode:`roomEpisode`,skill:`roomSkill`},ee={write:`opWrite`,"write-merge":`opWriteMerge`,update:`opUpdate`,forget:`opForget`,restore:`opRestore`,decay:`opDecay`,superseded:`opSuperseded`,"ingest-request":`opIngestRequest`,"ingest-done":`opIngestDone`,"outcome-report":`opOutcomeReport`,assess:`opAssess`,consolidation:`opConsolidation`,"review-answer":`opReviewAnswer`,"slot-assign":`opSlotAssign`,"slot-backfill":`opSlotBackfill`,"room-open":`opRoomOpen`,"search-rewrite-request":`opSearchRewrite`,"compress-request":`opCompressRequest`,"distill-request":`opDistillRequest`,"profile-edit":`opProfileEdit`},F={supersededBy:`relSupersededBy`,supersedes:`relSupersedes`,contradicts:`relContradicts`,related:`relRelated`},I={kind:`labelKind`,scope:`labelScope`,status:`labelStatus`};function L(e,t){let n=c[t];return n===void 0?t:e(n)}function te(e){return`${o.pill} ${o[P[e]??`kind`]??``}`}function R(e,t){let n=ee[t];return n===void 0?t:e(n)}function ne(e,t,n){if(n===null)return``;if(t===`profile-edit`){try{let t=JSON.parse(n),r=Number(t.toVersion),i=Number(t.chars);if(t.action===`edit`&&t.fromVersion===null)return` `+e(`profileOpCreate`,{to:r,chars:i});let a=Number(t.fromVersion);if(t.action===`edit`)return` `+e(`profileOpEdit`,{from:a,to:r,chars:i});let o=Number(t.restoredFrom);if(t.action===`rollback`&&Number.isInteger(a)&&Number.isInteger(r)&&Number.isInteger(o))return` `+e(`profileOpRollback`,{from:a,to:r,restored:o,chars:i})}catch{}return` ${n}`}if(t!==`write`&&t!==`update`&&t!==`superseded`)return` ${n}`;try{let t=JSON.parse(n),r=Object.entries(t);return r.length===0?` ${n}`:` `+r.map(([t,n])=>{let r=I[t];return r===void 0?`${t}=${String(n)}`:t===`kind`&&typeof n==`string`?`${e(r)}=${L(e,n)}`:t===`scope`&&(n===`user`||n===`project`)?`${e(r)}=${e(N[n])}`:`${e(r)}=${String(n)}`}).join(` · `)}catch{return` ${n}`}}function re(e,t){if(t.sourceSessionId===null)return e(`sourceExplicit`);let n=`${t.sourceSessionId.slice(0,16)}…`;return e(`sourceSession`,{id:t.sourceRound===null?n:`${n} ${e(`round`,{n:t.sourceRound})}`})}let ie=null,ae=null;function z(e,t){if(/(?:^|[?&])scope=project(?:&|$)/.test(e))return!0;let n=t?.body;if(typeof n!=`string`||n===``)return!1;try{let e=JSON.parse(n);return typeof e==`object`&&!!e&&e.scope===`project`}catch{return!1}}function oe(e,t){try{let n=JSON.parse(e);return typeof n!=`object`||!n||Array.isArray(n)?void 0:JSON.stringify({...n,project:t})}catch{return}}function B(e,t){return`${e}${e.includes(`?`)?`&`:`?`}project=${encodeURIComponent(t)}`}async function V(e,t,n=!1){let r=ie,i=e,a=t,o=r!==null&&(n||z(e,t));if(o){let n=t?.body,o=typeof n==`string`&&n!==``?oe(n,r):void 0;o!==void 0&&t!==void 0?a={...t,body:o}:i=B(e,r)}let s=await fetch(`/api/engram/${i}`,a),c=await s.json();if(!s.ok)throw o&&s.status===404&&c.error===`unknown project`&&ae?.(),Error(c.error??`HTTP ${String(s.status)}`);return c}let H=[];function U(){}function se(e,t){if(e===void 0)return U;let n=e.subscribe(t);return typeof n==`function`?n:U}function ce(e,t){let n=(0,r.useCallback)(t=>se(e?.list,t),[e]),i=(0,r.useCallback)(e=>se(t?.list,e),[t]),a=(0,r.useSyncExternalStore)(i,()=>t?.list.getSnapshot().current??null),o=(0,r.useSyncExternalStore)(n,()=>e?.list.getSnapshot().items??H),s=e!==void 0&&t!==void 0;return!s||a===null?{workspace:null,available:s}:{workspace:o.find(e=>e.sessionIds.includes(a))??null,available:s}}function W(e){return e.replace(/\//g,`\\`).replace(/\\+$/,``).toLowerCase()}function G(e){let t=e.replace(/[/\\]+$/,``),n=Math.max(t.lastIndexOf(`\\`),t.lastIndexOf(`/`));return n<0?t:t.slice(n+1)}function le(e){let t=/^project-([0-9a-f]+)\.db$/i.exec(e);return t===null?e.slice(0,14):`project-${t[1].slice(0,8)}…`}function ue(e){if(typeof e.path!=`string`||e.path===``)return{name:le(e.dbName),unregistered:!0};let t=e.title?.trim()??``;return t===``?{name:G(e.path),unregistered:e.kind!==`workspace`}:{name:t,unregistered:e.kind!==`workspace`}}function de(e,t){let n=ue(t),r=[n.unregistered?`${n.name} · ${e(`projectUnregistered`)}`:n.name];return r.push(t.memories===null?`—`:e(`projectMemories`,{n:t.memories})),r.join(` · `)}function fe(e,t){if(e===null||t===null)return;let n=e.items.find(e=>e.workspaceId===t.workspaceId);if(n!==void 0)return n;let r=W(t.path);return e.items.find(e=>typeof e.path==`string`&&W(e.path)===r)}function K(e){return new Date(e).toLocaleString(navigator.language||`zh-CN`,{hour12:!1})}function pe(e,t){let n=Math.max(0,Date.now()-t),r=Math.floor(n/6e4);if(r<1)return e(`timeJustNow`);if(r<60)return e(`timeMinutesAgo`,{n:r});let i=Math.floor(r/60);return i<48?e(`timeHoursAgo`,{n:i}):e(`timeDaysAgo`,{n:Math.floor(i/24)})}function me({label:e,value:t,tail:n}){return(0,i.jsxs)(`div`,{className:o.metric,children:[(0,i.jsx)(`span`,{className:o.metricLabel,children:e}),(0,i.jsx)(`b`,{className:o.metricValue,children:t}),n!==void 0&&(0,i.jsx)(`span`,{className:o.metricTail,children:n})]})}function q({score:e}){let t=2*Math.PI*24,n=Math.min(100,Math.max(0,e))/100*t,r=e>=80?`var(--dsw-alias-state-success-primary)`:e>=50?`var(--dsw-alias-state-warn-primary)`:`var(--dsw-alias-state-error-primary)`;return(0,i.jsxs)(`div`,{className:o.ring,role:`meter`,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":e,children:[(0,i.jsxs)(`svg`,{width:`56`,height:`56`,viewBox:`0 0 56 56`,"aria-hidden":`true`,children:[(0,i.jsx)(`circle`,{cx:`28`,cy:`28`,r:24,fill:`none`,stroke:`var(--dsw-alias-border-l2)`,strokeWidth:`4`}),(0,i.jsx)(`circle`,{cx:`28`,cy:`28`,r:24,fill:`none`,stroke:r,strokeWidth:`4`,strokeLinecap:`round`,strokeDasharray:`${n.toFixed(1)} ${t.toFixed(1)}`})]}),(0,i.jsx)(`b`,{children:e})]})}function J({value:e,conf:t}){return(0,i.jsx)(`span`,{className:t===!0?`${o.meter} ${o.conf}`:o.meter,children:(0,i.jsx)(`i`,{style:{width:`${String(Math.round(Math.min(1,Math.max(0,e))*100))}%`}})})}function Y({ids:e}){return(0,i.jsx)(`div`,{className:o.relChips,children:e.map(e=>(0,i.jsx)(`span`,{className:o.relChip,title:e,children:e.slice(0,18)},e))})}function he({t:e,recordId:t,scope:n,project:a}){let[s,c]=(0,r.useState)(null),[l,u]=(0,r.useState)(null);if((0,r.useEffect)(()=>{let e=!1;return V(`review?scope=${n}&id=${encodeURIComponent(t)}`).then(t=>{e||c(t)}).catch(t=>{e||u(t.message)}),()=>{e=!0}},[t,n,a,e]),l!==null)return(0,i.jsx)(`div`,{className:o.expandLoading,children:e(`loadFailed`,{msg:l})});if(s===null)return(0,i.jsx)(`div`,{className:o.expandLoading,children:e(`loading`)});let{record:d}=s,f=[`supersededBy`,`supersedes`,`contradicts`,`related`].map(e=>({key:e,label:F[e],ids:s[e]??[]})).filter(e=>e.ids.length>0),p=s.operations??[];return(0,i.jsxs)(`div`,{className:o.reviewGrid,children:[(0,i.jsxs)(`div`,{children:[(0,i.jsxs)(`dl`,{className:o.attrGrid,children:[(0,i.jsx)(`dt`,{children:e(`labelContent`)}),(0,i.jsx)(`dd`,{children:d.content}),(0,i.jsx)(`dt`,{children:e(`labelKind`)}),(0,i.jsx)(`dd`,{children:(0,i.jsx)(`span`,{className:te(d.kind),children:L(e,d.kind)})}),(0,i.jsx)(`dt`,{children:e(`labelStatus`)}),(0,i.jsx)(`dd`,{children:(0,i.jsx)(`span`,{className:`${o.pill} ${o[`status${d.status.charAt(0).toUpperCase()}${d.status.slice(1)}`]??``}`,children:e(M[d.status])})}),(0,i.jsx)(`dt`,{children:e(`importance`)}),(0,i.jsxs)(`dd`,{children:[d.importance.toFixed(2),(0,i.jsx)(J,{value:d.importance})]}),(0,i.jsx)(`dt`,{children:e(`confidence`)}),(0,i.jsxs)(`dd`,{children:[d.confidence.toFixed(2),(0,i.jsx)(J,{value:d.confidence,conf:!0})]}),(0,i.jsx)(`dt`,{children:e(`detailSource`)}),(0,i.jsx)(`dd`,{children:re(e,d)}),(0,i.jsx)(`dt`,{children:e(`labelCreated`)}),(0,i.jsx)(`dd`,{children:K(d.createdAt)})]}),f.map(({key:t,label:n,ids:r})=>(0,i.jsxs)(`div`,{className:o.relBlock,children:[(0,i.jsx)(`h5`,{children:n===void 0?t:e(n)}),(0,i.jsx)(Y,{ids:r})]},t))]}),(0,i.jsxs)(`div`,{children:[(s.revisions??[]).length>0&&(0,i.jsxs)(`div`,{className:o.relBlock,children:[(0,i.jsx)(`h5`,{children:e(`detailRevisions`)}),(0,i.jsx)(`ul`,{className:o.timeline,children:s.revisions.map((t,n)=>(0,i.jsxs)(`li`,{children:[(0,i.jsx)(`time`,{children:K(t.supersededAt)}),(0,i.jsx)(`b`,{children:L(e,t.kind)}),` `,t.content]},n))})]}),p.length>0&&(0,i.jsxs)(`div`,{className:o.relBlock,children:[(0,i.jsx)(`h5`,{children:e(`detailOperations`)}),(0,i.jsx)(`ul`,{className:o.timeline,children:p.map((t,n)=>(0,i.jsxs)(`li`,{children:[(0,i.jsx)(`time`,{children:K(t.at)}),(0,i.jsx)(`b`,{children:R(e,t.op)}),ne(e,t.op,t.detail)]},n))})]})]})]})}function ge({t:e,record:t,onClose:n,onSaved:a,toast:s}){let[c,l]=(0,r.useState)(t.content),[u,d]=(0,r.useState)(t.kind),[f,p]=(0,r.useState)(t.importance);return(0,i.jsxs)(`div`,{className:o.editForm,children:[(0,i.jsxs)(`div`,{children:[(0,i.jsx)(`label`,{className:o.fieldLabel,children:e(`labelContent`)}),(0,i.jsx)(`textarea`,{className:o.input,rows:3,value:c,onChange:e=>l(e.target.value)})]}),(0,i.jsxs)(`div`,{children:[(0,i.jsx)(`label`,{className:o.fieldLabel,children:e(`labelKind`)}),(0,i.jsx)(`select`,{className:o.input,value:u,onChange:e=>d(e.target.value),children:j.map(t=>(0,i.jsx)(`option`,{value:t,children:L(e,t)},t))})]}),(0,i.jsx)(`div`,{className:o.fieldRow,children:(0,i.jsxs)(`div`,{children:[(0,i.jsx)(`label`,{className:o.fieldLabel,children:`${e(`importance`)} ${f.toFixed(2)}`}),(0,i.jsx)(`input`,{type:`range`,min:0,max:1,step:.05,value:f,onChange:e=>p(Number(e.target.value))})]})}),(0,i.jsxs)(`div`,{className:o.modalFoot,children:[(0,i.jsx)(`button`,{type:`button`,className:o.button,onClick:n,children:e(`cancel`)}),(0,i.jsx)(`button`,{type:`button`,className:`${o.button} ${o.primary}`,onClick:()=>{V(`update`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({id:t.id,scope:t.scope,content:c,kind:u,importance:f})}).then(a).catch(e=>{s.push(`error`,e.message)})},children:e(`saveWithHint`)})]})]})}let _e={fts:`viaFts`,vec:`viaVec`,both:`viaBoth`};function ve({t:e,scope:t}){let[n,a]=(0,r.useState)(``),[s,c]=(0,r.useState)(t),[l,u]=(0,r.useState)(null),[d,f]=(0,r.useState)(!1),[p,m]=(0,r.useState)(null);(0,r.useEffect)(()=>{c(t)},[t]);let h=()=>{n.trim()===``||d||(f(!0),V(`search-test?q=${encodeURIComponent(n.trim())}&scope=${s}`,void 0,!0).then(e=>{u(e),m(null)}).catch(e=>m(e.message)).finally(()=>f(!1)))},g=l?.hits??[];return(0,i.jsxs)(`div`,{children:[(0,i.jsxs)(`div`,{className:o.benchBar,children:[(0,i.jsx)(`input`,{className:`${o.input} ${o.search}`,placeholder:e(`benchPlaceholder`),value:n,onChange:e=>a(e.target.value),onKeyDown:e=>{e.key===`Enter`&&h()}}),(0,i.jsxs)(`select`,{className:o.input,value:s,onChange:e=>c(e.target.value),children:[(0,i.jsx)(`option`,{value:`all`,children:e(`benchScopeAll`)}),(0,i.jsx)(`option`,{value:`user`,children:e(`scopeUser`)}),(0,i.jsx)(`option`,{value:`project`,children:e(`scopeProject`)}),(0,i.jsx)(`option`,{value:`shared`,children:e(`scopeShared`)})]}),(0,i.jsx)(`button`,{type:`button`,className:`${o.button} ${o.primary}`,disabled:d||n.trim()===``,onClick:h,children:e(`benchRun`)})]}),p!==null&&(0,i.jsx)(`div`,{className:o.expandLoading,children:e(`loadFailed`,{msg:p})}),l!==null&&p===null&&(0,i.jsxs)(`div`,{className:o.benchMeta,children:[(0,i.jsx)(`span`,{children:e(`benchHits`,{n:g.length})}),l.degraded&&(0,i.jsx)(`span`,{className:o.degradedNote,children:e(`benchDegraded`)})]}),(0,i.jsx)(`div`,{className:o.benchList,children:g.map(t=>(0,i.jsxs)(`div`,{className:o.benchRow,children:[(0,i.jsxs)(`div`,{className:o.benchHead,children:[(0,i.jsx)(`span`,{className:o.viaChip,children:e(_e[t.via])}),t.viaEdge!==void 0&&(0,i.jsxs)(`span`,{className:o.viaChip,title:`${t.viaEdge.type} ${t.viaEdge.from}`,children:[e(`viaEdgeLabel`),` · `,t.viaEdge.type]}),(0,i.jsx)(`span`,{className:te(t.kind),children:L(e,t.kind)}),(0,i.jsx)(`span`,{className:o.benchScore,children:t.score.toFixed(4)})]}),(0,i.jsx)(`div`,{className:o.benchContent,children:t.content}),(0,i.jsx)(`span`,{className:o.benchId,title:t.id,children:t.id})]},t.id))}),l!==null&&g.length===0&&p===null&&(0,i.jsx)(`div`,{className:o.benchEmpty,children:e(`benchEmpty`)})]})}function ye(e,t){if(t===null)return``;try{let n=JSON.parse(t);if(typeof n.round==`number`&&typeof n.userText==`string`){let t=typeof n.mode==`string`?` · ${n.mode}`:``;return`${e(`round`,{n:n.round})}${t} · ${n.userText.slice(0,48)}`}if(typeof n.query==`string`&&Array.isArray(n.queries))return`${e(`benchRewrite`,{n:n.queries.length})} · ${n.query.slice(0,36)}`;if(typeof n.count==`number`&&Object.keys(n).length===1)return e(`benchCompress`,{n:n.count});if(typeof n.batchId==`string`&&typeof n.sufficient==`boolean`){let t=Array.isArray(n.refs)?n.refs.length:0;return`${n.batchId} · ${e(n.sufficient?`assessAdequate`:`assessInadequate`)} · ${e(`assessRefs`,{n:t})}`}if(typeof n.archived==`number`&&typeof n.merged==`number`&&typeof n.skipped==`number`)return`${n.scope===`project`?e(`scopeProject`):e(`scopeUser`)} · ${e(`consolidateArchived`,{n:n.archived})} · ${e(`consolidateMerged`,{n:n.merged})} · ${e(`consolidateSkipped`,{n:n.skipped})}`;if(typeof n.archived==`number`&&n.merged===void 0)return e(`decayArchived`,{n:n.archived});if(typeof n.assigned==`number`)return e(`slotBackfilled`,{n:n.assigned});if(typeof n.room==`string`)return e(`roomOpened`,{room:n.room});if(typeof n.grade==`number`&&typeof n.nextIntervalDays==`number`)return e(`reviewAnswered`,{grade:n.grade,days:n.nextIntervalDays})}catch{}return t.length>56?`${t.slice(0,56)}…`:t}let be={all:null,write:[`write`,`update`,`forget`,`restore`,`decay`,`superseded`,`outcome-report`],ingest:[`ingest-request`,`ingest-done`],retrieve:[`search-rewrite-request`,`compress-request`,`assess`],organize:[`distill-request`,`consolidation`,`slot-assign`,`slot-backfill`,`room-open`,`review-answer`,`profile-edit`]},xe={all:`logFilterAll`,write:`logFilterWrite`,ingest:`logFilterIngest`,retrieve:`logFilterRetrieve`,organize:`logFilterOrganize`},Se={write:`logDotWrite`,ingest:`logDotIngest`,retrieve:`logDotRetrieve`,organize:`logDotOrganize`};function Ce(e){for(let t of[`write`,`ingest`,`retrieve`,`organize`])if(be[t]?.includes(e)===!0)return t;return`all`}function X(e){let t=Ce(e),n=o.logDot??``;return t===`all`?n:`${n} ${o[Se[t]]??``}`}function we(e,t){let n=e.split(`
2
2
  `),r=t.split(`
3
- `),i=n.length,a=r.length,o=Array.from({length:i+1},()=>Array(a+1).fill(0));for(let e=i-1;e>=0;e--)for(let t=a-1;t>=0;t--)o[e][t]=n[e]===r[t]?o[e+1][t+1]+1:Math.max(o[e+1][t],o[e][t+1]);let s=[],c=0,l=0;for(;c<i&&l<a;)n[c]===r[l]?(s.push({kind:`same`,text:n[c]}),c+=1,l+=1):o[c+1][l]>=o[c][l+1]?(s.push({kind:`del`,text:n[c]}),c+=1):(s.push({kind:`add`,text:r[l]}),l+=1);for(;c<i;)s.push({kind:`del`,text:n[c]}),c+=1;for(;l<a;)s.push({kind:`add`,text:r[l]}),l+=1;return s}function Ce({t:e,scope:t,project:n}){let[a,s]=(0,r.useState)(null),[c,l]=(0,r.useState)(!1),[u,d]=(0,r.useState)(null),[f,p]=(0,r.useState)(null);if((0,r.useEffect)(()=>{let e=!1;return z(`profile-block?scope=${t}`,void 0,!0).then(t=>{e||(s(t),l(!1),d(t.versions.length>1?t.versions[1].version:null),p(t.versions.length>0?t.versions[0].version:null))}).catch(()=>{e||l(!0)}),()=>{e=!0}},[t,n]),c)return(0,i.jsx)(`div`,{className:o.expandLoading,children:e(`profileLoadFailed`)});if(a===null)return(0,i.jsx)(`div`,{className:o.expandLoading,children:e(`loading`)});if(a.block===null)return(0,i.jsxs)(`div`,{className:o.expandLoading,children:[(0,i.jsx)(`p`,{children:e(`profileEmpty`)}),(0,i.jsx)(`p`,{className:o.sectionHint,children:e(`profileEmptyHint`)})]});let m=a.versions,h=new Map(m.map(e=>[e.version,e])),g=u===null?void 0:h.get(u),_=f===null?void 0:h.get(f),v=g!==void 0&&_!==void 0?Se(g.content,_.content):[],y=v.some(e=>e.kind!==`same`);return(0,i.jsxs)(`div`,{className:o.profileCard,children:[(0,i.jsx)(`h5`,{className:o.profileHeading,children:e(`profileCurrent`,{n:a.block.version})}),(0,i.jsx)(`pre`,{className:o.profileContent,children:a.block.content}),m.length>1&&(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`h5`,{className:o.profileHeading,children:e(`profileHistory`)}),(0,i.jsxs)(`div`,{className:o.profilePickerRow,children:[(0,i.jsxs)(`label`,{children:[(0,i.jsx)(`span`,{className:o.sectionHint,children:e(`profileDiffBase`)}),(0,i.jsx)(`select`,{className:o.profileSelect,value:u??void 0,onChange:e=>{d(Number(e.target.value))},children:m.map(t=>(0,i.jsxs)(`option`,{value:t.version,children:[`v`,t.version,` · `,t.source===`rollback`?e(`profileSourceRollback`):e(`profileSourceEdit`)]},t.version))})]}),(0,i.jsxs)(`label`,{children:[(0,i.jsx)(`span`,{className:o.sectionHint,children:e(`profileDiffTarget`)}),(0,i.jsx)(`select`,{className:o.profileSelect,value:f??void 0,onChange:e=>{p(Number(e.target.value))},children:m.map(t=>(0,i.jsxs)(`option`,{value:t.version,children:[`v`,t.version,` · `,t.source===`rollback`?e(`profileSourceRollback`):e(`profileSourceEdit`)]},t.version))})]})]}),g!==void 0&&_!==void 0&&(0,i.jsx)(`div`,{className:o.profileDiff,children:y?v.map((e,t)=>(0,i.jsxs)(`div`,{className:e.kind===`add`?o.profileDiffAdd:e.kind===`del`?o.profileDiffDel:o.profileDiffSame,children:[e.kind===`add`?`+ `:e.kind===`del`?`- `:` `,e.text]},t)):(0,i.jsx)(`div`,{className:o.sectionHint,children:e(`profileDiffNone`)})})]})]})}function we({t:e,telemetry:t,project:n}){let[a,s]=(0,r.useState)(null),[c,l]=(0,r.useState)(`all`);(0,r.useEffect)(()=>{let e=!1;return z(`activity?limit=50`,void 0,!0).then(t=>{e||s(t.operations)}).catch(()=>{e||s([])}),()=>{e=!0}},[n]);let u=ye[c],d=(a??[]).filter(e=>u===null||u.includes(e.op)),f=t?.counts;return(0,i.jsxs)(`section`,{className:o.section,children:[(0,i.jsxs)(`div`,{className:o.logToolbar,children:[(0,i.jsx)(`h4`,{className:o.sectionTitle,children:e(`tabLog`)}),(0,i.jsx)(`span`,{className:o.sectionHint,children:e(`logCount`,{n:d.length})}),(0,i.jsxs)(`span`,{className:o.logCounts,children:[(0,i.jsxs)(`span`,{children:[(0,i.jsx)(`i`,{className:`${o.logDot} ${o.logDotWrite}`,"aria-hidden":`true`}),e(`teleWrites`),` `,(0,i.jsx)(`b`,{children:f?.writes??0})]}),(0,i.jsxs)(`span`,{children:[(0,i.jsx)(`i`,{className:`${o.logDot} ${o.logDotIngest}`,"aria-hidden":`true`}),e(`teleIngest`),` `,(0,i.jsx)(`b`,{children:f?.ingestDones??0})]}),(0,i.jsxs)(`span`,{children:[(0,i.jsx)(`i`,{className:`${o.logDot} ${o.logDotOrganize}`,"aria-hidden":`true`}),e(`teleConsolidate`),` `,(0,i.jsx)(`b`,{children:f?.consolidations??0})]})]}),(0,i.jsx)(`div`,{className:o.segGroup,role:`tablist`,children:[`all`,`write`,`ingest`,`retrieve`,`organize`].map(t=>(0,i.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":c===t,className:c===t?`${o.segItem} ${o.on}`:o.segItem,onClick:()=>{l(t)},children:e(be[t])},t))})]}),(0,i.jsx)(`div`,{className:o.panelCard,children:a===null?(0,i.jsx)(`div`,{className:o.expandLoading,children:e(`loading`)}):d.length===0?(0,i.jsx)(`div`,{className:o.expandLoading,children:e(`activityEmpty`)}):(0,i.jsx)(`div`,{className:o.logList,children:d.map((t,n)=>(0,i.jsxs)(`div`,{className:o.logRow,children:[(0,i.jsx)(`i`,{className:xe(t.op),"aria-hidden":`true`}),(0,i.jsx)(`span`,{className:o.logTime,children:fe(e,t.at)}),(0,i.jsx)(`span`,{className:o.logOp,children:F(e,t.op)}),(0,i.jsx)(`span`,{className:o.logScope,children:t.scope===`user`?e(`scopeUser`):e(`scopeProject`)}),(0,i.jsx)(`span`,{className:o.logDetail,title:t.detail??``,children:ve(e,t.detail)})]},n))})})]})}function Te({t:e,scope:t,project:n,onSelect:a}){let s=[``,`fact`,`preference`,`decision`,`episode`,`skill`],[l,u]=T(`tour.focusKind`,``,s),[d,f]=(0,r.useState)(null);(0,r.useEffect)(()=>{let n=!1;return z(l===``?`tour-proposal?scope=${t}`:`tour-proposal?scope=${t}&focusKind=${l}`).then(e=>{n||f(e)}).catch(()=>{n||f({greeting:e(`tourProposalEmpty`),activeCount:0,empty:!0,suggestedStops:[]})}),()=>{n=!0}},[e,t,n,l]);let p=t=>{if(t===``)return e(`tourFocusAll`);let n=c[t];return n===void 0?t:e(n)};return d===null?(0,i.jsx)(`div`,{className:o.expandLoading,children:e(`loading`)}):(0,i.jsxs)(`div`,{className:o.tourProposal,children:[(0,i.jsx)(`div`,{className:o.chipRow,role:`tablist`,"aria-label":`focus-kind`,children:s.map(e=>(0,i.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":l===e,className:l===e?`${o.chip} ${o.chipOn}`:o.chip,onClick:()=>{u(e)},children:p(e)},e||`all`))}),d.empty?(0,i.jsx)(`div`,{className:o.expandLoading,children:e(`tourProposalEmpty`)}):(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`p`,{className:o.tourGreeting,children:d.greeting}),(0,i.jsx)(`ol`,{className:o.tourStops,children:d.suggestedStops.map((t,n)=>(0,i.jsx)(`li`,{children:(0,i.jsxs)(`button`,{type:`button`,className:o.tourStop,onClick:()=>{a(t.id)},children:[(0,i.jsx)(`span`,{className:o.tourStopIndex,children:n+1}),(0,i.jsxs)(`span`,{className:o.tourStopBody,children:[(0,i.jsx)(`span`,{className:o.tourStopKind,children:P(e,t.kind)}),(0,i.jsx)(`span`,{className:o.tourStopText,children:t.content.length>60?`${t.content.slice(0,60)}…`:t.content})]})]})},t.id))}),(0,i.jsx)(`p`,{className:o.tourHint,children:e(`tourProposalHint`)})]})]})}function Ee({t:e,scope:t,project:n,onSelect:a,onAfterAction:s,toast:c}){let[l,u]=(0,r.useState)(null),[d,f]=(0,r.useState)(!1),p=(0,r.useCallback)(()=>{f(!0),z(`refurb?scope=${t}`).then(e=>{u(e)}).catch(()=>{u({count:0,suggestions:[]})}).finally(()=>{f(!1)})},[t,n]);(0,r.useEffect)(()=>{p()},[p]);let m=t=>{switch(t){case`demote`:return e(`refurbActionDemote`);case`merge`:return e(`refurbActionMerge`);case`review`:return e(`refurbActionReview`);case`split`:return e(`refurbActionSplit`)}},h=(0,r.useCallback)(n=>{if(n.action===`review`||n.action===`split`){a(n.primaryId);return}if(n.action===`demote`){if(!window.confirm(e(`refurbConfirmDemote`)))return;f(!0),z(`forget`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({id:n.primaryId,scope:t,reason:`翻新清单降级`,affects:`无`,stillUseful:`可经 engram_restore 复原`})}).then(()=>{p(),s(),c.push(`success`,e(`refurbDemoteDone`))}).catch(t=>{c.push(`error`,e(`refurbActionFailed`,{msg:t.message}))}).finally(()=>{f(!1)});return}if(n.action===`merge`){let r=n.candidates.length+1;if(r<2){c.push(`warning`,e(`refurbMergeEmpty`));return}if(!window.confirm(e(`refurbConfirmMerge`,{n:r})))return;f(!0);let i=[n.primaryId,...n.candidates];z(`consolidate`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({scope:t,candidates:i})}).then(()=>{p(),s(),c.push(`success`,e(`refurbMergeDone`))}).catch(t=>{c.push(`error`,e(`refurbActionFailed`,{msg:t.message}))}).finally(()=>{f(!1)})}},[p,a,s,c,e,t]);return l===null?(0,i.jsx)(`div`,{className:o.expandLoading,children:e(`loading`)}):(0,i.jsxs)(`div`,{className:o.refurb,children:[(0,i.jsxs)(`div`,{className:o.refurbHead,children:[(0,i.jsx)(`span`,{className:o.refurbCount,children:e(`refurbCount`,{n:l.count})}),(0,i.jsx)(`button`,{type:`button`,className:o.button,disabled:d,onClick:p,children:e(`refurbRun`)})]}),l.count===0?(0,i.jsx)(`div`,{className:o.expandLoading,children:e(`refurbEmpty`)}):(0,i.jsx)(`ul`,{className:o.refurbList,children:l.suggestions.map((t,n)=>(0,i.jsxs)(`li`,{className:o.refurbItem,children:[(0,i.jsx)(`button`,{type:`button`,className:o.refurbBadge,onClick:()=>{a(t.primaryId)},children:m(t.action)}),(0,i.jsx)(`div`,{className:o.refurbReason,children:t.reason}),(0,i.jsxs)(`span`,{className:o.refurbConfidence,children:[(t.confidence*100).toFixed(0),`%`]}),(0,i.jsx)(`button`,{type:`button`,className:`${o.refurbExec} ${o.button}`,disabled:d,onClick:()=>{h(t)},children:e(`refurbExecute`)})]},`${t.action}-${t.primaryId}-${n}`))})]})}function De({t:e,scope:t,project:n,onSelect:a}){let[s,c]=(0,r.useState)(null),[l,u]=(0,r.useState)(null);return(0,r.useEffect)(()=>{let e=!1;return z(`corridor?status=active,archived&scope=${t}`).then(t=>{e||c(t),u(null)}).catch(t=>{e||u(t.message)}),()=>{e=!0}},[t,n]),l===null?s===null?(0,i.jsx)(`div`,{className:o.expandLoading,children:e(`corridorLoad`)}):s.nodes.length===0?(0,i.jsx)(`div`,{className:o.empty,children:e(`corridorEmpty`)}):(0,i.jsx)(g,{scope:t,nodes:s.nodes,edges:s.edges,onSelect:a,t:e}):(0,i.jsxs)(`div`,{className:o.expandLoading,children:[e(`corridorFailed`),`:`,l]})}function Oe({t:e,scope:t,project:n,reloadTick:a}){let[s,c]=(0,r.useState)(``),[l,u]=(0,r.useState)(``),[d,f]=(0,r.useState)(``),[p,m]=(0,r.useState)({since:``,until:``,sessionId:``}),[h,g]=(0,r.useState)(null),[_,v]=(0,r.useState)(null),[y,b]=(0,r.useState)(null),[x,S]=(0,r.useState)(!1);(0,r.useEffect)(()=>{let e=!1,n=new URLSearchParams({scope:t});return p.since!==``&&n.set(`since`,String(new Date(`${p.since}T00:00:00`).getTime())),p.until!==``&&n.set(`until`,String(new Date(`${p.until}T23:59:59.999`).getTime())),p.sessionId!==``&&n.set(`sessionId`,p.sessionId),z(`episode-timeline?${n.toString()}`).then(t=>{e||(g(t),v(null))}).catch(t=>{e||v(t.message)}),()=>{e=!0}},[t,n,p,a]);let C=e=>{S(!0),z(`episode-timeline?scope=${t}&around=${encodeURIComponent(e)}`).then(e=>{b(e),S(!1),v(null)}).catch(e=>{v(e.message),S(!1)})},w=t=>(0,i.jsxs)(`div`,{className:o.episodeRow,title:t.id,children:[(0,i.jsx)(`time`,{className:o.episodeRowTime,children:W(t.createdAt)}),(0,i.jsx)(`span`,{className:o.episodeRowKind,children:P(e,t.kind)}),(0,i.jsx)(`span`,{className:o.episodeRowText,children:t.content}),(0,i.jsx)(`button`,{type:`button`,className:o.button,disabled:x,onClick:()=>{C(t.id)},children:e(`episodeNearby`)})]},t.id);return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(`div`,{className:o.toolbarRow,children:[(0,i.jsx)(`input`,{type:`date`,className:o.input,value:s,"aria-label":e(`episodeSince`),onChange:e=>{c(e.target.value)}}),(0,i.jsx)(`span`,{className:o.episodeRangeSep,"aria-hidden":`true`,children:`–`}),(0,i.jsx)(`input`,{type:`date`,className:o.input,value:l,"aria-label":e(`episodeUntil`),onChange:e=>{u(e.target.value)}}),(0,i.jsx)(`input`,{className:`${o.input} ${o.search}`,placeholder:e(`episodeSessionId`),value:d,onChange:e=>{f(e.target.value)}}),(0,i.jsx)(`button`,{type:`button`,className:`${o.button} ${o.primary}`,onClick:()=>{m({since:s,until:l,sessionId:d.trim()}),b(null)},children:e(`episodeApply`)}),(0,i.jsx)(`button`,{type:`button`,className:o.button,onClick:()=>{c(``),u(``),f(``),m({since:``,until:``,sessionId:``}),b(null)},children:e(`episodeReset`)})]}),_!==null&&(0,i.jsx)(`div`,{className:o.expandLoading,children:e(`loadFailed`,{msg:_})}),y!==null&&(0,i.jsxs)(`section`,{className:`${o.panelCard} ${o.episodeAround}`,children:[(0,i.jsxs)(`header`,{className:o.episodeAroundHead,children:[(0,i.jsx)(`b`,{children:e(`episodeAroundTitle`)}),(0,i.jsx)(`button`,{type:`button`,className:o.button,onClick:()=>{b(null)},children:e(`episodeClose`)})]}),w(y.anchor),y.neighbors.length===0?(0,i.jsx)(`p`,{className:o.sectionHint,children:e(`episodeAroundEmpty`)}):y.neighbors.map(w)]}),h===null&&_===null&&(0,i.jsx)(`div`,{className:o.expandLoading,children:e(`loading`)}),h!==null&&h.groups.length===0&&(0,i.jsx)(`div`,{className:o.empty,children:e(`episodeNoGroups`)}),h?.groups.map(t=>(0,i.jsxs)(`section`,{className:o.panelCard,children:[(0,i.jsxs)(`header`,{className:o.episodeHead,children:[t.summary===void 0?(0,i.jsx)(`p`,{className:`${o.episodeSummary} ${o.episodeSummaryMissing}`,children:e(`episodeSummaryMissing`)}):(0,i.jsx)(`p`,{className:o.episodeSummary,children:t.summary}),(0,i.jsxs)(`span`,{className:o.episodeHeadMeta,children:[t.sessionId===null?e(`episodeNoSession`):`#${t.sessionId}`,` · `,new Date(t.startedAt).toLocaleDateString(),` ~ `,new Date(t.endedAt).toLocaleDateString(),` · `,e(`episodeEntries`,{n:t.episodes.length})]})]}),(0,i.jsx)(`div`,{children:t.episodes.map(w)})]},t.sessionId??`none`))]})}let X={person:`entityKindPerson`,project:`entityKindProject`,tool:`entityKindTool`,concept:`entityKindConcept`,other:`entityKindOther`},ke=[`person`,`project`,`tool`,`concept`,`other`];function Z(e,t){return e(X[t]??`entityKindOther`)}function Ae({t:e,scope:t,project:n,reloadTick:a}){let[s,c]=(0,r.useState)(`all`),[l,u]=(0,r.useState)(``),[d,f]=(0,r.useState)(null),[p,m]=(0,r.useState)(null),[h,g]=(0,r.useState)(null),[_,v]=(0,r.useState)(null),[y,b]=(0,r.useState)(!1);(0,r.useEffect)(()=>{let e=!1,n=new URLSearchParams({scope:t});return s!==`all`&&n.set(`kind`,s),l!==``&&n.set(`q`,l),z(`entities?${n.toString()}`).then(t=>{e||(f(t),m(null))}).catch(t=>{e||m(t.message)}),()=>{e=!0}},[t,n,s,l,a]);let x=e=>{b(!0),Promise.all([z(`entity?scope=${t}&id=${encodeURIComponent(e)}`),z(`facts?scope=${t}&entityId=${encodeURIComponent(e)}&includeInvalid=1`)]).then(([e,t])=>{g(e),v(t),b(!1),m(null)}).catch(e=>{m(e.message),b(!1)})},S=t=>(0,i.jsxs)(`div`,{className:o.episodeRow,title:t.id,children:[(0,i.jsx)(`time`,{className:o.episodeRowTime,children:W(t.createdAt)}),(0,i.jsx)(`span`,{className:o.episodeRowKind,children:P(e,t.kind)}),(0,i.jsx)(`span`,{className:o.episodeRowText,children:t.content})]},t.id),C=t=>(0,i.jsxs)(`div`,{className:o.episodeRow,title:t.id,children:[(0,i.jsx)(`time`,{className:o.episodeRowTime,children:new Date(t.validAt).toLocaleDateString()}),(0,i.jsx)(`span`,{className:o.episodeRowKind,children:t.invalidAt===null?e(`factValid`):e(`factInvalid`)}),(0,i.jsx)(`span`,{className:o.episodeRowText,children:t.content})]},t.id);return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`div`,{className:o.chipRow,children:[[`all`,e(`entityKindAll`)],...ke.map(t=>[t,e(X[t]??`entityKindOther`)])].map(([e,t])=>(0,i.jsx)(`button`,{type:`button`,"aria-pressed":s===e,className:s===e?`${o.chip} ${o.chipOn}`:o.chip,onClick:()=>{c(e),g(null),v(null)},children:t},e))}),(0,i.jsxs)(`div`,{className:o.toolbarRow,children:[(0,i.jsx)(`input`,{className:`${o.input} ${o.search}`,placeholder:e(`entitySearchPlaceholder`),value:l,onChange:e=>{u(e.target.value.trim()),g(null),v(null)}}),d!==null&&(0,i.jsx)(`span`,{className:o.sectionHint,children:e(`entityCount`,{n:d.total})})]}),p!==null&&(0,i.jsx)(`div`,{className:o.expandLoading,children:e(`loadFailed`,{msg:p})}),h!==null&&(0,i.jsxs)(`section`,{className:`${o.panelCard} ${o.episodeAround}`,children:[(0,i.jsxs)(`header`,{className:o.episodeAroundHead,children:[(0,i.jsx)(`b`,{children:h.entity.name}),(0,i.jsx)(`span`,{className:o.episodeRowKind,children:Z(e,h.entity.kind)}),(0,i.jsx)(`button`,{type:`button`,className:o.button,onClick:()=>{g(null),v(null)},children:e(`episodeClose`)})]}),h.entity.aliases.length>0&&(0,i.jsx)(`p`,{className:o.sectionHint,children:`${e(`entityAliases`)}:${h.entity.aliases.join(`、`)}`}),h.memories.length===0?(0,i.jsx)(`p`,{className:o.sectionHint,children:e(`entityNoMemories`)}):(0,i.jsx)(`div`,{children:h.memories.map(S)}),_!==null&&(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`p`,{className:o.sectionHint,children:e(`factSection`,{n:_.total})}),_.items.length===0?(0,i.jsx)(`p`,{className:o.sectionHint,children:e(`factEmpty`)}):(0,i.jsx)(`div`,{children:_.items.map(C)})]})]}),d===null&&p===null&&(0,i.jsx)(`div`,{className:o.expandLoading,children:e(`loading`)}),d!==null&&d.items.length===0&&(0,i.jsx)(`div`,{className:o.empty,children:e(`entityEmpty`)}),d!==null&&d.items.map(t=>(0,i.jsxs)(`div`,{className:o.episodeRow,title:t.entity.id,children:[(0,i.jsx)(`span`,{className:o.episodeRowKind,children:Z(e,t.entity.kind)}),(0,i.jsxs)(`span`,{className:o.episodeRowText,children:[t.entity.name,t.entity.aliases.length>0&&(0,i.jsx)(`small`,{className:o.sectionHint,children:`(${t.entity.aliases.join(`、`)})`})]}),(0,i.jsx)(`span`,{className:o.episodeRowTime,children:e(`entityMemories`,{n:t.memoryCount})}),(0,i.jsx)(`button`,{type:`button`,className:o.button,disabled:y,onClick:()=>{x(t.entity.id)},children:e(`entityOpen`)})]},t.entity.id))]})}function je({t:e,byKind:t}){return(0,i.jsx)(`div`,{className:o.roomList,children:D.map(n=>(0,i.jsxs)(`div`,{className:o.roomRow,children:[(0,i.jsx)(`span`,{className:`${o.roomSwatch} ${o[A[n]??``]??``}`,"aria-hidden":`true`}),(0,i.jsx)(`span`,{children:P(e,n)}),(0,i.jsx)(`b`,{className:o.roomCount,children:t[n]??0})]},n))})}function Me(e,t){let[n,i]=(0,r.useState)({stats:null,byKind:{},telemetry:null,health:null,failed:null});return(0,r.useEffect)(()=>{let t=!1;return Promise.all([z(`stats?scope=${e}`),z(`telemetry?days=7&scope=${e}`),z(`health?scope=${e}`)]).then(([n,r,a])=>{if(t)return;let o=n.parts.find(t=>t.scope===e)?.stats??null;i({stats:o,byKind:o?.byKind??{},telemetry:r,health:a,failed:null})}).catch(e=>{t||i(t=>({...t,failed:e.message}))}),()=>{t=!0}},[e,t]),n}function Ne({t:e,overview:t,dueCount:n}){let{stats:r,telemetry:a,health:s,failed:c}=t;if(c!==null)return(0,i.jsx)(`section`,{className:o.panelCard,children:(0,i.jsxs)(`div`,{className:o.expandLoading,children:[e(`teleFailed`),`:`,c]})});if(a===null)return(0,i.jsx)(`section`,{className:o.panelCard,children:(0,i.jsx)(`div`,{className:o.expandLoading,children:e(`teleLoading`)})});let l=a.counts;return(0,i.jsxs)(`section`,{className:o.panelCard,children:[(0,i.jsxs)(`div`,{className:o.hero,children:[(0,i.jsxs)(`div`,{className:o.heroMetrics,children:[(0,i.jsx)(G,{label:e(`kpiTotal`),value:r?.total??0,tail:`${e(`teleGroupRecent`)} +${String(l.writes)}`}),(0,i.jsx)(G,{label:e(`kpiActive`),value:r?.active??0,tail:`${e(`kpiForgotten`)} ${String(r?.forgotten??0)}`}),(0,i.jsx)(G,{label:e(`kpiSignal`),value:`${String(Math.round((r?.signalRatio??0)*100))}%`,tail:e(`cardRedacted`,{n:r?.redacted??0})})]}),(0,i.jsxs)(`div`,{className:o.heroSide,children:[(0,i.jsx)(G,{label:e(`teleWrites`),value:l.writes,secondary:!0}),(0,i.jsx)(G,{label:e(`teleIngest`),value:l.ingestRequests,secondary:!0}),(0,i.jsx)(G,{label:e(`teleConsolidate`),value:l.consolidations,secondary:!0}),(0,i.jsx)(G,{label:e(`heroDue`),value:n,secondary:!0}),(0,i.jsx)(K,{score:s?.overall??0})]})]}),(0,i.jsxs)(`div`,{className:o.heroFoot,children:[(0,i.jsx)(`span`,{className:o.sectionHint,children:s===null?e(`healthLoading`):e(`healthEvaluatedAt`,{time:fe(e,s.evaluatedAt)})}),(0,i.jsxs)(`span`,{className:o.telePrivacy,role:`note`,"aria-label":e(`telePrivacyHint`),tabIndex:0,children:[(0,i.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 14 14`,fill:`none`,"aria-hidden":`true`,children:[(0,i.jsx)(`circle`,{cx:`7`,cy:`7`,r:`5.5`,stroke:`currentColor`,strokeWidth:`1.2`}),(0,i.jsx)(`line`,{x1:`7`,y1:`6`,x2:`7`,y2:`10.5`,stroke:`currentColor`,strokeWidth:`1.4`,strokeLinecap:`round`}),(0,i.jsx)(`circle`,{cx:`7`,cy:`4.2`,r:`0.7`,fill:`currentColor`})]}),(0,i.jsx)(`span`,{className:o.telePrivacyHint,children:e(`telePrivacyHint`)}),(0,i.jsx)(`span`,{className:o.telePrivacyTip,role:`tooltip`,children:e(`telePrivacyTip`)})]})]})]})}let Pe={"low-activity":`skipLowActivity`,chitchat:`skipChitchat`,"capture-forbidden":`skipForbidden`,"no-user-content":`skipNoContent`,"already-ingested":`skipAlready`,"no-such-turn":`skipNoTurn`,"no-previous-turn":`skipNoTurn`,"no-route-in-log":`skipNoRoute`,unparsable:`skipUnparsable`};function Fe(e,t){let n=Pe[t];return n===void 0?t:e(n)}function Ie({t:e,toast:t}){let[n,a]=T(`backfill.days`,`7`,[`7`,`30`,`90`,`0`]),[s,c]=E(`backfill.maxTurns`,`20`),[l,u]=E(`backfill.maxTotal`,`200`),[d,f]=T(`backfill.subagents`,`false`,[`false`,`true`]),[p,m]=T(`backfill.seeded`,`false`,[`false`,`true`]),[h,g]=T(`backfill.noCwd`,`false`,[`false`,`true`]),[_,v]=E(`backfill.model`,``),[y,b]=(0,r.useState)(null),[x,S]=(0,r.useState)(null),[C,w]=(0,r.useState)(null),[D,O]=(0,r.useState)(!1);(0,r.useEffect)(()=>{let e=!1;return z(`models`).then(t=>{e||b(t)}).catch(()=>{e||b({providers:[],failures:[]})}),()=>{e=!0}},[]);let k=(()=>{if(_===``)return;let e=_.indexOf(`::`);if(!(e<=0))return{provider:_.slice(0,e),model:_.slice(e+2)}})(),A=new URLSearchParams({days:n,maxTurnsPerSession:s,maxTotalTurns:l,includeSubagents:d,includeSeeded:p,includeNoCwd:h});k!==void 0&&(A.set(`provider`,k.provider),A.set(`model`,k.model));let j=A.toString(),M=(0,r.useCallback)(()=>{O(!0),z(`history-backfill?${j}`).then(e=>{S(e.estimate)}).catch(e=>{t.push(`error`,e.message)}).finally(()=>{O(!1)})},[j,t]);(0,r.useEffect)(()=>{M()},[M]);let N=C?.progress.state===`running`;(0,r.useEffect)(()=>{let e=!1,t=()=>{z(`history-backfill/status`).then(t=>{e||w(t)}).catch(()=>{})};if(t(),!N)return()=>{e=!0};let n=window.setInterval(t,1500);return()=>{e=!0,window.clearInterval(n)}},[N]);let P=()=>{O(!0),z(`history-backfill/start`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({days:Number(n),maxTurnsPerSession:Number(s),maxTotalTurns:Number(l),includeSubagents:d===`true`,includeSeeded:p===`true`,includeNoCwd:h===`true`,...k===void 0?{}:{provider:k.provider,model:k.model}})}).then(e=>{w(e.status)}).catch(e=>{t.push(`error`,e.message)}).finally(()=>{O(!1)})},ee=()=>{z(`history-backfill/cancel`,{method:`POST`,headers:{"content-type":`application/json`},body:`{}`}).then(e=>{w(e.status)}).catch(e=>{t.push(`error`,e.message)})},F=C?.progress,te=F===void 0?``:F.state===`running`?e(`backfillStateRunning`):F.state===`done`?e(`backfillStateDone`):F.state===`cancelled`?e(`backfillStateCancelled`):e(`backfillStateFailed`),ne=F===void 0||F.turnsPlanned===0?0:Math.min(100,Math.round(F.turnsDone/F.turnsPlanned*100));return(0,i.jsxs)(`div`,{className:o.backfill,children:[(0,i.jsx)(`p`,{className:o.backfillIntro,children:e(`backfillIntro`)}),(0,i.jsxs)(`div`,{className:o.backfillRules,children:[(0,i.jsxs)(`label`,{className:o.backfillRule,children:[(0,i.jsx)(`span`,{children:e(`backfillDays`)}),(0,i.jsxs)(`select`,{className:o.input,value:n,onChange:e=>{a(e.target.value)},children:[(0,i.jsx)(`option`,{value:`7`,children:e(`backfillDaysUnit`,{n:7})}),(0,i.jsx)(`option`,{value:`30`,children:e(`backfillDaysUnit`,{n:30})}),(0,i.jsx)(`option`,{value:`90`,children:e(`backfillDaysUnit`,{n:90})}),(0,i.jsx)(`option`,{value:`0`,children:e(`backfillDaysAll`)})]})]}),(0,i.jsxs)(`label`,{className:o.backfillRule,children:[(0,i.jsx)(`span`,{children:e(`backfillMaxTurns`)}),(0,i.jsx)(`input`,{className:o.input,type:`number`,min:1,max:500,value:s,onChange:e=>{c(e.target.value)}})]}),(0,i.jsxs)(`label`,{className:o.backfillRule,children:[(0,i.jsx)(`span`,{children:e(`backfillMaxTotal`)}),(0,i.jsx)(`input`,{className:o.input,type:`number`,min:1,max:5e3,value:l,onChange:e=>{u(e.target.value)}})]}),(0,i.jsxs)(`label`,{className:o.backfillRule,children:[(0,i.jsx)(`span`,{children:e(`backfillModel`)}),(0,i.jsxs)(`select`,{className:o.input,value:_,onChange:e=>{v(e.target.value)},children:[(0,i.jsx)(`option`,{value:``,children:e(`backfillModelAuto`)}),(y?.providers??[]).map(e=>(0,i.jsx)(`optgroup`,{label:e.name,children:e.models.map(t=>(0,i.jsx)(`option`,{value:`${e.id}::${t.id}`,children:t.name},`${e.id}::${t.id}`))},e.id))]})]})]}),(0,i.jsxs)(`div`,{className:o.backfillToggles,children:[(0,i.jsxs)(`label`,{className:o.backfillToggle,children:[(0,i.jsx)(`input`,{type:`checkbox`,checked:d===`true`,onChange:e=>{f(e.target.checked?`true`:`false`)}}),e(`backfillIncludeSubagents`)]}),(0,i.jsxs)(`label`,{className:o.backfillToggle,children:[(0,i.jsx)(`input`,{type:`checkbox`,checked:p===`true`,onChange:e=>{m(e.target.checked?`true`:`false`)}}),e(`backfillIncludeSeeded`)]}),(0,i.jsxs)(`label`,{className:o.backfillToggle,children:[(0,i.jsx)(`input`,{type:`checkbox`,checked:h===`true`,onChange:e=>{g(e.target.checked?`true`:`false`)}}),e(`backfillIncludeNoCwd`)]})]}),(0,i.jsx)(`div`,{className:o.backfillEstimate,children:x===null?(0,i.jsx)(`span`,{className:o.backfillMuted,children:e(`backfillEstimating`)}):x.unavailable===void 0?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(`div`,{className:o.backfillNumbers,children:[(0,i.jsx)(`span`,{className:o.backfillMetric,children:e(`backfillCandidates`,{n:x.candidates})}),(0,i.jsx)(`span`,{className:o.backfillMetric,children:e(`backfillPendingTurns`,{n:x.pendingTurns})}),(0,i.jsx)(`span`,{className:o.backfillMetric,children:e(`backfillAlready`,{n:x.alreadyIngested})})]}),(0,i.jsx)(`div`,{className:o.backfillMuted,children:e(`backfillSkippedDetail`,{subagent:x.skipped.subagent,seeded:x.skipped.seeded,noCwd:x.skipped.noCwd,tooOld:x.skipped.tooOld,unreadable:x.skipped.unreadable})}),x.truncated&&(0,i.jsx)(`div`,{className:o.backfillMuted,children:e(`backfillTruncated`)})]}):(0,i.jsx)(`span`,{className:o.backfillMuted,children:x.unavailable})}),(0,i.jsxs)(`div`,{className:o.backfillActions,children:[(0,i.jsx)(`button`,{type:`button`,className:o.button,disabled:D,onClick:M,children:e(`backfillReestimate`)}),(0,i.jsx)(`button`,{type:`button`,className:`${o.button} ${o.primary}`,disabled:D||N||x===null||x.unavailable!==void 0||x.pendingTurns===0,onClick:P,children:e(`backfillStart`)}),(0,i.jsx)(`button`,{type:`button`,className:o.button,disabled:!N,onClick:ee,children:e(`backfillPause`)})]}),F!==void 0&&(0,i.jsxs)(`div`,{className:o.backfillProgress,children:[(0,i.jsxs)(`div`,{className:o.backfillProgressHead,children:[(0,i.jsx)(`span`,{children:te}),(0,i.jsx)(`span`,{children:e(`backfillProgressTurns`,{done:F.turnsDone,total:F.turnsPlanned})})]}),(0,i.jsx)(`div`,{className:o.progressBar,children:(0,i.jsx)(`i`,{style:{width:`${String(ne)}%`}})}),(0,i.jsxs)(`div`,{className:o.backfillMeta,children:[(0,i.jsx)(`span`,{children:e(`backfillProgressSessions`,{done:F.sessionsDone,total:F.sessionsTotal})}),(0,i.jsx)(`span`,{children:e(`backfillWritten`,{n:F.memoriesWritten})}),(0,i.jsx)(`span`,{children:e(`backfillTurnsSkipped`,{n:F.turnsSkipped})}),(0,i.jsx)(`span`,{children:e(`backfillTurnsFailed`,{n:F.turnsFailed})})]}),Object.keys(F.skipReasons).length>0&&(0,i.jsxs)(`div`,{className:o.backfillMeta,children:[(0,i.jsx)(`span`,{children:e(`backfillSkipReasons`)}),Object.entries(F.skipReasons).sort(([,e],[,t])=>t-e).map(([t,n])=>(0,i.jsx)(`span`,{children:`${Fe(e,t)} ${String(n)}`},t))]}),(C?.failures??[]).length>0&&(0,i.jsxs)(`ul`,{className:o.backfillFailures,children:[(0,i.jsx)(`li`,{className:o.backfillMuted,children:e(`backfillFailures`)}),C.failures.slice(0,3).map((e,t)=>(0,i.jsx)(`li`,{children:`${e.sessionId.slice(-12)} · ${String(e.turn)} · ${e.reason}`},`${e.sessionId}-${String(e.turn)}-${String(t)}`))]}),(C?.failures??[]).length>0&&(0,i.jsx)(`div`,{className:o.backfillMuted,children:e(`backfillRouteHint`)}),C?.error!==void 0&&(0,i.jsx)(`div`,{className:o.backfillMuted,children:C.error})]})]})}function Le({t:e,toast:t}){let[n,a]=(0,r.useState)(null),[s,c]=(0,r.useState)(!1),[l,u]=(0,r.useState)(``),[d,f]=(0,r.useState)(``),[p,m]=(0,r.useState)(``),[h,g]=(0,r.useState)(`3000`),[_,v]=(0,r.useState)(!1),[y,b]=(0,r.useState)(!1);return(0,r.useEffect)(()=>{let n=!1;return z(`jev-config`).then(e=>{n||(a(e),c(e.enabled),f(e.baseUrl),m(e.model),g(String(e.timeoutMs)))}).catch(r=>{n||t.push(`error`,`${e(`jevLoadFailed`)}: ${r.message}`)}),()=>{n=!0}},[e,t]),n===null?(0,i.jsx)(`span`,{className:o.jevMuted,children:e(`loading`)}):(0,i.jsxs)(`div`,{className:o.jev,children:[(0,i.jsx)(`p`,{className:o.jevIntro,children:e(`jevIntro`)}),(0,i.jsxs)(`div`,{className:o.jevToggleRow,children:[(0,i.jsxs)(`label`,{className:o.jevToggle,children:[(0,i.jsx)(`input`,{type:`checkbox`,checked:s,onChange:e=>c(e.target.checked)}),e(`jevEnabled`)]}),(0,i.jsx)(`span`,{className:o.jevStatus,children:n.enabled?e(`jevStatusOn`):e(`jevStatusOff`)})]}),(0,i.jsxs)(`div`,{className:o.jevForm,children:[(0,i.jsxs)(`label`,{className:o.jevField,children:[(0,i.jsx)(`span`,{children:e(`jevApiKey`)}),(0,i.jsx)(`input`,{className:o.input,type:`password`,value:l,autoComplete:`off`,placeholder:n.apiKeyMask??e(`jevApiKeyUnset`),onChange:e=>u(e.target.value)}),(0,i.jsx)(`span`,{className:o.jevMuted,children:e(`jevApiKeyHint`)})]}),(0,i.jsxs)(`label`,{className:o.jevField,children:[(0,i.jsx)(`span`,{children:e(`jevBaseUrl`)}),(0,i.jsx)(`input`,{className:o.input,value:d,onChange:e=>f(e.target.value)})]}),(0,i.jsxs)(`label`,{className:o.jevField,children:[(0,i.jsx)(`span`,{children:e(`jevModel`)}),(0,i.jsx)(`input`,{className:o.input,value:p,onChange:e=>m(e.target.value)})]}),(0,i.jsxs)(`label`,{className:o.jevField,children:[(0,i.jsx)(`span`,{children:e(`jevTimeoutMs`)}),(0,i.jsx)(`input`,{className:o.input,type:`number`,min:1e3,max:6e4,value:h,onChange:e=>g(e.target.value)})]})]}),(0,i.jsx)(`div`,{className:o.jevMuted,children:e(`jevThresholdsTitle`)}),(0,i.jsx)(`div`,{className:o.jevMuted,children:e(`jevThresholdLine`,{merge:n.deferMergeAbove,accept:n.deferAcceptBelow,contradict:n.contradictMinProbability})}),(0,i.jsxs)(`div`,{className:o.jevActions,children:[(0,i.jsx)(`button`,{type:`button`,className:`${o.button} ${o.primary}`,disabled:_,onClick:()=>{v(!0),z(`jev-config`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({enabled:s,baseUrl:d.trim(),model:p.trim(),timeoutMs:Number(h),...l.trim()===``?{}:{apiKey:l.trim()}})}).then(n=>{a(n.view),u(``),t.push(`success`,e(`jevSaved`))}).catch(e=>{t.push(`error`,e.message)}).finally(()=>{v(!1)})},children:e(`jevSave`)}),(0,i.jsx)(`button`,{type:`button`,className:o.button,disabled:_||y,onClick:()=>{b(!0),z(`jev-test`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({baseUrl:d.trim(),model:p.trim(),...l.trim()===``?{}:{apiKey:l.trim()}})}).then(n=>{n.ok?t.push(`success`,e(`jevTestOk`,{ms:n.elapsedMs,p:n.probability})):t.push(`error`,e(`jevTestFail`,{error:n.error??``}))}).catch(e=>{t.push(`error`,e.message)}).finally(()=>{b(!1)})},children:e(`jevTest`)}),n.apiKeySet&&(0,i.jsx)(`button`,{type:`button`,className:o.button,disabled:_,onClick:()=>{v(!0),z(`jev-config`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({apiKey:``})}).then(n=>{a(n.view),t.push(`success`,e(`jevKeyCleared`))}).catch(e=>{t.push(`error`,e.message)}).finally(()=>{v(!1)})},children:e(`jevClearKey`)})]})]})}let Re={merge:`jevObsVerdictMerge`,accept:`jevObsVerdictAccept`,defer:`jevObsVerdictDefer`,confirm:`jevObsVerdictConfirm`,reject:`jevObsVerdictReject`,fallback:`jevObsVerdictFallback`};function ze({t:e,toast:t}){let[n,a]=(0,r.useState)(null);return(0,r.useEffect)(()=>{let n=!1,r=r=>{z(`jev-observations`).then(e=>{n||a(e.items)}).catch(i=>{n||(a(e=>e??[]),r&&t.push(`error`,`${e(`jevObsLoadFailed`)}: ${i.message}`))})};r(!0);let i=window.setInterval(()=>r(!1),1500);return()=>{n=!0,window.clearInterval(i)}},[e,t]),n===null?(0,i.jsx)(`span`,{className:o.jevMuted,children:e(`loading`)}):n.length===0?(0,i.jsx)(`span`,{className:o.jevMuted,children:e(`jevObsEmpty`)}):(0,i.jsxs)(`div`,{className:o.jevObs,children:[(0,i.jsx)(`div`,{className:o.jevObsHead,children:e(`jevObsTitle`)}),n.map((t,n)=>(0,i.jsxs)(`div`,{className:o.jevObsItem,children:[(0,i.jsx)(`span`,{className:o.jevObsTime,children:new Date(t.at).toLocaleTimeString()}),(0,i.jsx)(`span`,{children:t.site===`band`?e(`jevObsSiteBand`):e(`jevObsSiteContradiction`)}),(0,i.jsx)(`span`,{className:t.verdict===`fallback`?o.jevObsBadgeWarn:t.verdict===`confirm`||t.verdict===`merge`?o.jevObsBadgeGood:o.jevObsBadge,children:e(Re[t.verdict])}),(0,i.jsx)(`span`,{children:t.answered?`p=${t.probability?.toFixed(3)}`:e(`jevObsNoAnswer`)}),(0,i.jsxs)(`span`,{children:[t.elapsedMs,`ms`]}),t.error!==void 0&&(0,i.jsx)(`span`,{className:o.jevObsError,children:e(`jevObsErrorLine`,{error:t.error})})]},`${t.at}-${t.site}-${n}`))]})}function Be({t:e,scope:t,project:n}){let[a,s]=(0,r.useState)(!1),c=(0,r.useRef)(null);(0,r.useEffect)(()=>{if(!a)return;let e=e=>{(c.current===null||!c.current.contains(e.target))&&s(!1)};return window.addEventListener(`mousedown`,e),()=>{window.removeEventListener(`mousedown`,e)}},[a]);let l=t===`project`&&n!==null?`&project=${encodeURIComponent(n)}`:``,u=[{label:e(`exportMd`),hint:e(`exportMdHint`),href:`/api/engram/export?scope=${t}${l}&format=markdown`},{label:e(`exportJson`),hint:e(`exportJsonHint`),href:`/api/engram/export?scope=${t}${l}&format=json`},{label:e(`exportMirror`),hint:e(`exportMirrorHint`),href:`/api/engram/mirror?scope=${t}${l}`}];return(0,i.jsxs)(`div`,{className:o.exportWrap,ref:c,children:[(0,i.jsxs)(`button`,{type:`button`,className:o.button,"aria-haspopup":`menu`,"aria-expanded":a,onClick:()=>{s(e=>!e)},children:[e(`export`),(0,i.jsx)(`span`,{className:o.exportCaret,"aria-hidden":`true`,children:`▾`})]}),a&&(0,i.jsx)(`div`,{className:o.exportMenu,role:`menu`,children:u.map(e=>(0,i.jsxs)(`a`,{role:`menuitem`,className:o.exportItem,href:e.href,onClick:()=>{s(!1)},children:[(0,i.jsx)(`span`,{className:o.exportItemLabel,children:e.label}),(0,i.jsx)(`span`,{className:o.exportItemHint,children:e.hint})]},e.href))})]})}function Ve({t:e,workspaces:t,sessions:n}){let a=b(),[s,c]=T(`library.scope`,`user`,[`user`,`project`,`shared`]),[l,u]=T(`library.status`,`all`,[`all`,`active`,`archived`,`forgotten`]),[d,f]=T(`library.kind`,`all`,[`all`,`fact`,`preference`,`decision`,`episode`,`skill`]),[p,m]=E(`library.q`,``),[h,g]=T(`library.sort`,`time`,[`time`,`tour`]),[_,v]=(0,r.useState)(0),[y,x]=(0,r.useState)(new Set),[S,C]=(0,r.useState)(!1),[w]=(0,r.useState)(`all`),[A,j]=(0,r.useState)(0),[M,N]=(0,r.useState)(null),[F,te]=(0,r.useState)(null),[I,L]=(0,r.useState)(null),[R,ae]=(0,r.useState)(0),[B,V]=(0,r.useState)(new Set),[H,se]=(0,r.useState)(!1),[U,G]=(0,r.useState)(`today`),[K,pe]=E(`library.project`,`follow`),me=oe(t,n),[q,ve]=(0,r.useState)(null),ye=me.workspace?.workspaceId??``;(0,r.useEffect)(()=>{let e=!1;return z(`workspaces`).then(t=>{e||ve(t)}).catch(()=>{}),()=>{e=!0}},[ye,K,R]);let be=ue(q,me.workspace),J=K===`follow`?be?.dbName??null:K;re=J;let Y=de(e,{mode:K,available:me.available,items:q?.items??[],followed:be,processDefaultPath:q?.processDefault?.path??null}),xe=K!==`follow`&&!(q?.items??[]).some(e=>e.dbName===K),Se=Me(s,J),X=(0,r.useCallback)(()=>{ae(e=>e+1)},[]),ke=(0,r.useRef)(!1);(0,r.useEffect)(()=>(ie=()=>{ke.current||K===`follow`||(ke.current=!0,pe(`follow`),j(0),L(null),V(new Set),X())},()=>{ie=null}),[K,X]),(0,r.useEffect)(()=>{K===`follow`&&(ke.current=!1)},[K]);let Z=(0,r.useCallback)(()=>{z(`review-due?scope=${s}&limit=50`).then(e=>{v(e.items.length),x(new Set(e.items.map(e=>e.id)))}).catch(()=>{v(0),x(new Set)})},[s,J]);(0,r.useEffect)(()=>{Z()},[Z]);let Pe=()=>{G(`library`),C(!0)},Fe=(0,r.useCallback)(e=>{let t=M?.records.find(t=>t.id===e);L({kind:`review`,record:t??{id:e,scope:s,kind:`fact`,content:``,importance:.5,confidence:.5,status:`active`,createdAt:Date.now(),accessCount:0,sourceSessionId:null,sourceRound:null}})},[M,s]);(0,r.useEffect)(()=>{let e=!1,t=new URLSearchParams({scope:s,status:l,kind:d,redacted:w,limit:`20`,offset:String(A)});return p!==``&&t.set(`q`,p),h===`tour`&&t.set(`sort`,`tour`),z(`list?${t.toString()}`).then(t=>{e||(N(t),te(null))}).catch(t=>{e||te(t.message)}),()=>{e=!0}},[s,l,d,w,p,h,A,R,J]);let Re=(0,r.useRef)(J);(0,r.useEffect)(()=>{Re.current!==J&&(Re.current=J,j(0),L(null),V(new Set))},[J]);let Ve=(e,t)=>{z(e,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({id:t.id,scope:t.scope})}).then(X).catch(e=>{a.push(`error`,e.message)})},He=(e,t)=>{L(n=>n!==null&&n.kind===e&&n.record.id===t.id?null:{kind:e,record:t})},Ue=M?.records??[],Q=S?Ue.filter(e=>y.has(e.id)):Ue,We=Q.filter(e=>B.has(e.id)),Ge=We.filter(e=>e.status===`active`).length,Ke=We.length-Ge,qe=Q.length>0&&Q.every(e=>B.has(e.id)),Je=e=>{V(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},$=()=>{V(new Set),se(!1)},Ye=()=>{V(e=>{let t=new Set(e);return qe?Q.forEach(e=>t.delete(e.id)):Q.forEach(e=>t.add(e.id)),t})},Xe=e=>{let t=e===`forget`?We.filter(e=>e.status===`active`):We.filter(e=>e.status!==`active`);t.length!==0&&Promise.allSettled(t.map(t=>z(e,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({id:t.id,scope:t.scope})}))).then(()=>{$(),X()})},Ze=()=>{if(H){Xe(`forget`);return}se(!0)},Qe=Math.floor(A/20)+1,$e=M===null?1:Math.max(1,Math.ceil(M.total/20)),et=(0,r.useRef)(new Map),[tt,nt]=(0,r.useState)({left:0,width:0,opacity:0}),rt=(0,r.useCallback)(()=>{let e=et.current.get(s);e!=null&&nt({left:e.offsetLeft,width:e.offsetWidth,opacity:1})},[s]);return(0,r.useEffect)(()=>{rt();let e=()=>rt();return window.addEventListener(`resize`,e),()=>{window.removeEventListener(`resize`,e)}},[rt]),(0,i.jsxs)(`div`,{className:o.panel,children:[(0,i.jsxs)(`div`,{className:o.header,children:[(0,i.jsxs)(`div`,{className:o.headerBrand,children:[(0,i.jsx)(`span`,{className:o.headerLogo,"aria-hidden":`true`,children:(0,i.jsxs)(`svg`,{width:`18`,height:`18`,viewBox:`0 0 48 48`,fill:`none`,children:[(0,i.jsx)(`path`,{d:`M6 20 L24 7 L42 20 Z`,fill:`currentColor`,fillOpacity:`0.9`}),(0,i.jsx)(`rect`,{x:`9`,y:`20`,width:`30`,height:`18`,rx:`1.5`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`}),(0,i.jsx)(`rect`,{x:`13`,y:`24`,width:`6`,height:`6`,rx:`1`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.6`}),(0,i.jsx)(`line`,{x1:`16`,y1:`24`,x2:`16`,y2:`30`,stroke:`currentColor`,strokeWidth:`1.2`}),(0,i.jsx)(`line`,{x1:`13`,y1:`27`,x2:`19`,y2:`27`,stroke:`currentColor`,strokeWidth:`1.2`}),(0,i.jsx)(`path`,{d:`M21 38 L21 28 Q21 25 24 25 Q27 25 27 28 L27 38`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.8`}),(0,i.jsx)(`rect`,{x:`29`,y:`24`,width:`6`,height:`6`,rx:`1`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.6`}),(0,i.jsx)(`line`,{x1:`32`,y1:`24`,x2:`32`,y2:`30`,stroke:`currentColor`,strokeWidth:`1.2`}),(0,i.jsx)(`line`,{x1:`29`,y1:`27`,x2:`35`,y2:`27`,stroke:`currentColor`,strokeWidth:`1.2`})]})}),(0,i.jsxs)(`div`,{className:o.headerTitle,children:[(0,i.jsx)(`h2`,{children:e(`headerTitle`)}),(0,i.jsx)(`p`,{children:e(`headerSubtitle`)})]})]}),(0,i.jsxs)(`div`,{className:o.headerActions,children:[(0,i.jsxs)(`div`,{className:`${o.segGroup} ${o.segScope}`,children:[(0,i.jsx)(`span`,{className:o.segIndicator,style:{left:`${String(tt.left)}px`,width:`${String(tt.width)}px`,opacity:tt.opacity}}),[`user`,`project`,`shared`].map(t=>(0,i.jsx)(`button`,{type:`button`,ref:e=>{et.current.set(t,e)},className:s===t?`${o.segItem} ${o.on}`:o.segItem,onClick:()=>{c(t),j(0),L(null),$()},children:e(k[t])},t))]}),_>0&&(0,i.jsxs)(`button`,{type:`button`,className:o.dueBadge,title:e(`dueBadgeLabel`,{n:_}),"aria-label":e(`dueBadgeLabel`,{n:_}),onClick:Pe,children:[(0,i.jsx)(`span`,{className:o.dueDot,"aria-hidden":`true`}),_]}),(0,i.jsx)(`button`,{type:`button`,className:o.button,onClick:()=>{X(),Z()},children:e(`refresh`)}),(0,i.jsx)(Be,{t:e,scope:s,project:J})]}),s===`project`&&(0,i.jsxs)(`div`,{className:o.wsBar,children:[(0,i.jsx)(`span`,{className:`${o.wsChip}${Y.tone===`follow`?` ${o.wsFollow}`:Y.tone===`muted`?` ${o.wsMuted}`:``}`,title:Y.title,children:Y.label}),(0,i.jsxs)(`select`,{className:`${o.input} ${o.wsSelect}`,value:K,"aria-label":e(`projectSwitch`),title:e(`projectSwitch`),onChange:e=>{pe(e.target.value),j(0),L(null),$()},children:[(0,i.jsx)(`option`,{value:`follow`,children:e(`projectFollow`)}),(q?.items??[]).map(t=>(0,i.jsx)(`option`,{value:t.dbName,children:le(e,t)},t.dbName)),xe&&(0,i.jsx)(`option`,{value:K,children:`${ce(K)} · ${e(`projectUnregistered`)}`})]})]})]}),(0,i.jsxs)(`div`,{className:o.tabs,role:`tablist`,children:[(0,i.jsx)(`button`,{type:`button`,role:`tab`,className:U===`today`?`${o.tabItem} ${o.on}`:o.tabItem,"aria-selected":U===`today`,onClick:()=>{G(`today`)},children:e(`tabToday`)}),(0,i.jsxs)(`button`,{type:`button`,role:`tab`,className:U===`library`?`${o.tabItem} ${o.on}`:o.tabItem,"aria-selected":U===`library`,onClick:()=>{G(`library`)},children:[e(`tabLibrary`),(0,i.jsx)(`small`,{children:e(`tabLibraryCount`,{n:M?.total??0})})]}),(0,i.jsx)(`button`,{type:`button`,role:`tab`,className:U===`corridor`?`${o.tabItem} ${o.on}`:o.tabItem,"aria-selected":U===`corridor`,onClick:()=>{G(`corridor`)},children:e(`tabCorridor`)}),(0,i.jsx)(`button`,{type:`button`,role:`tab`,className:U===`episodes`?`${o.tabItem} ${o.on}`:o.tabItem,"aria-selected":U===`episodes`,onClick:()=>{G(`episodes`)},children:e(`tabEpisodes`)}),(0,i.jsx)(`button`,{type:`button`,role:`tab`,className:U===`entities`?`${o.tabItem} ${o.on}`:o.tabItem,"aria-selected":U===`entities`,onClick:()=>{G(`entities`)},children:e(`tabEntities`)}),(0,i.jsx)(`button`,{type:`button`,role:`tab`,className:U===`log`?`${o.tabItem} ${o.on}`:o.tabItem,"aria-selected":U===`log`,onClick:()=>{G(`log`)},children:e(`tabLog`)}),(0,i.jsx)(`button`,{type:`button`,role:`tab`,className:U===`backfill`?`${o.tabItem} ${o.on}`:o.tabItem,"aria-selected":U===`backfill`,onClick:()=>{G(`backfill`)},children:e(`tabBackfill`)}),(0,i.jsx)(`button`,{type:`button`,role:`tab`,className:U===`jev`?`${o.tabItem} ${o.on}`:o.tabItem,"aria-selected":U===`jev`,onClick:()=>{G(`jev`)},children:e(`tabJev`)})]}),U===`library`&&(0,i.jsxs)(`div`,{className:o.tabPanel,children:[(0,i.jsx)(`div`,{className:o.sectionHead,children:(0,i.jsx)(`h4`,{className:o.sectionTitle,children:e(`tabLibrary`)})}),(0,i.jsxs)(`div`,{className:o.toolbarRow,children:[(0,i.jsx)(`input`,{className:`${o.input} ${o.search}`,placeholder:e(`searchPlaceholder`),value:p,onChange:e=>{m(e.target.value.trim()),j(0),L(null),$()}}),(0,i.jsx)(`div`,{className:o.segGroup,children:[[`all`,e(`allStatuses`)],[`active`,e(`statusActive`)],[`archived`,e(`statusArchived`)],[`forgotten`,e(`statusForgotten`)]].map(([e,t])=>(0,i.jsx)(`button`,{type:`button`,className:l===e?`${o.segItem} ${o.on}`:o.segItem,onClick:()=>{u(e),j(0),L(null),$()},children:t},e))}),(0,i.jsx)(`div`,{className:o.segGroup,children:(0,i.jsx)(`button`,{type:`button`,"aria-pressed":S,className:S?`${o.segItem} ${o.on}`:o.segItem,onClick:()=>{C(!S),j(0),L(null),$()},children:e(`filterDueToday`)})}),(0,i.jsx)(`div`,{className:o.segGroup,children:[[`time`,e(`sortTime`)],[`tour`,e(`sortTour`)]].map(([e,t])=>(0,i.jsx)(`button`,{type:`button`,className:h===e?`${o.segItem} ${o.on}`:o.segItem,onClick:()=>{g(e),j(0),L(null),$()},children:t},e))})]}),(0,i.jsx)(`div`,{className:o.chipRow,children:[[`all`,e(`allKinds`)],...D.map(t=>[t,P(e,t)])].map(([e,t])=>(0,i.jsx)(`button`,{type:`button`,"aria-pressed":d===e,className:d===e?`${o.chip} ${o.chipOn}`:o.chip,onClick:()=>{f(e),j(0),L(null),$()},children:t},e))}),B.size>0&&(0,i.jsxs)(`div`,{className:o.batchBar,children:[(0,i.jsx)(`span`,{children:e(`selectedCount`,{n:B.size})}),(0,i.jsx)(`button`,{type:`button`,className:o.button,onClick:Ye,children:e(qe?`deselectAll`:`selectAll`)}),(0,i.jsx)(`button`,{type:`button`,className:o.button,disabled:Ke===0,onClick:()=>Xe(`restore`),children:e(`batchRestore`,{n:Ke})}),(0,i.jsx)(`button`,{type:`button`,className:H?`${o.button} ${o.danger}`:o.button,disabled:Ge===0,onClick:Ze,children:e(H?`batchForgetConfirm`:`batchForget`,{n:Ge})}),(0,i.jsx)(`button`,{type:`button`,className:o.button,onClick:$,children:e(`clearSelection`)})]}),F!==null&&(0,i.jsxs)(`div`,{className:o.empty,children:[(0,i.jsx)(`b`,{children:e(`loadFailed`,{msg:F})}),(0,i.jsx)(`span`,{children:e(`emptyHint`)})]}),F===null&&M===null&&(0,i.jsx)(`div`,{className:o.skeletonList,children:[0,1,2,3].map(e=>(0,i.jsxs)(`div`,{className:o.skeleton,style:{animationDelay:`${String(e*60)}ms`},children:[(0,i.jsx)(`i`,{}),(0,i.jsx)(`i`,{}),(0,i.jsx)(`i`,{})]},e))}),F===null&&M!==null&&Q.length===0&&(0,i.jsxs)(`div`,{className:o.empty,children:[(0,i.jsx)(`b`,{children:e(`empty`)}),(0,i.jsx)(`span`,{children:e(`emptyHint`)})]}),Q.length>0&&(0,i.jsx)(`div`,{className:o.itemList,children:Q.map((t,n)=>(0,i.jsxs)(`div`,{className:B.has(t.id)?`${o.item} ${o.selected}`:o.item,style:{animationDelay:`${String(Math.min(n,12)*36)}ms`},children:[(0,i.jsx)(`input`,{type:`checkbox`,className:o.itemCheck,checked:B.has(t.id),"aria-label":t.content.slice(0,24),onChange:()=>Je(t.id)}),(0,i.jsxs)(`div`,{className:o.itemBody,children:[(0,i.jsxs)(`div`,{className:o.itemTags,children:[(0,i.jsx)(`span`,{className:`${o.pill} ${o[`status${t.status.charAt(0).toUpperCase()}${t.status.slice(1)}`]??``}`,children:e(O[t.status])}),(0,i.jsx)(`span`,{className:ee(t.kind),children:P(e,t.kind)}),t.slot!==void 0&&(0,i.jsxs)(`span`,{className:o.pill,children:[t.slot.room,`#`,t.slot.index]}),t.content.includes(`[REDACTED:`)&&(0,i.jsx)(`span`,{className:`${o.pill} ${o.redacted}`,children:e(`tagRedacted`)}),t.outcome!==void 0&&(0,i.jsx)(`span`,{className:`${o.pill} ${t.outcome===`success`?o.outcomeSuccess:o.outcomeFailure}`,children:t.outcome===`success`?e(`tagOutcomeSuccess`):e(`tagOutcomeFailure`)}),(0,i.jsxs)(`span`,{className:o.itemStamp,title:W(t.createdAt),children:[e(k[t.scope]),` · `,fe(e,t.createdAt)]})]}),(0,i.jsx)(`div`,{className:o.content,children:t.content}),(0,i.jsxs)(`div`,{className:o.itemMeta,children:[(0,i.jsxs)(`span`,{children:[(0,i.jsx)(`b`,{children:e(`importance`)}),` `,t.importance.toFixed(2)]}),(0,i.jsxs)(`span`,{children:[(0,i.jsx)(`b`,{children:e(`confidence`)}),` `,t.confidence.toFixed(2)]}),(0,i.jsx)(`span`,{children:e(`accessCount`,{n:t.accessCount})}),(0,i.jsx)(`span`,{children:ne(e,t)})]})]}),(0,i.jsxs)(`div`,{className:o.itemOps,children:[(0,i.jsx)(`button`,{type:`button`,className:o.button,onClick:()=>{He(`review`,t)},children:e(`detail`)}),(0,i.jsx)(`button`,{type:`button`,className:o.button,onClick:()=>{He(`edit`,t)},children:e(`edit`)}),t.status===`active`?(0,i.jsx)(`button`,{type:`button`,className:o.button,onClick:()=>{Ve(`forget`,t)},children:e(`forget`)}):(0,i.jsx)(`button`,{type:`button`,className:o.button,onClick:()=>{Ve(`restore`,t)},children:e(`restore`)})]})]},t.id))}),(0,i.jsxs)(`div`,{className:o.pager,children:[(0,i.jsx)(`button`,{type:`button`,className:o.button,disabled:A===0,"aria-label":e(`prevPage`),onClick:()=>{j(Math.max(0,A-20)),L(null),$()},children:`‹`}),(0,i.jsx)(`span`,{children:e(`pagerInfo`,{page:Qe,pages:$e,total:M?.total??0})}),(0,i.jsx)(`button`,{type:`button`,className:o.button,disabled:M===null||A+20>=M.total,"aria-label":e(`nextPage`),onClick:()=>{j(A+20),L(null),$()},children:`›`})]})]}),U===`today`&&(0,i.jsxs)(`div`,{className:o.tabPanel,children:[(0,i.jsx)(Ne,{t:e,overview:Se,dueCount:_}),(0,i.jsxs)(`div`,{className:o.layout,children:[(0,i.jsx)(`div`,{className:o.mainCol,children:(0,i.jsxs)(`section`,{className:o.section,children:[(0,i.jsx)(`div`,{className:o.sectionHead,children:(0,i.jsx)(`h4`,{className:o.sectionTitle,children:e(`tourProposalTitle`)})}),(0,i.jsx)(`div`,{className:o.panelCard,children:(0,i.jsx)(Te,{t:e,scope:s,project:J,onSelect:Fe})})]})}),(0,i.jsxs)(`aside`,{className:o.sideCol,children:[(0,i.jsxs)(`section`,{className:o.section,children:[(0,i.jsx)(`div`,{className:o.sectionHead,children:(0,i.jsx)(`h4`,{className:o.sectionTitle,children:e(`profileTitle`)})}),(0,i.jsx)(`div`,{className:o.panelCard,children:(0,i.jsx)(Ce,{t:e,scope:s,project:J})})]}),(0,i.jsxs)(`section`,{className:o.section,children:[(0,i.jsxs)(`div`,{className:o.sectionHead,children:[(0,i.jsx)(`h4`,{className:o.sectionTitle,children:e(`roomsTitle`)}),(0,i.jsx)(`span`,{className:o.sectionHint,children:e(`roomsHint`)})]}),(0,i.jsx)(`div`,{className:o.panelCard,children:(0,i.jsx)(je,{t:e,byKind:Se.byKind})})]}),(0,i.jsxs)(`section`,{className:o.section,children:[(0,i.jsx)(`div`,{className:o.sectionHead,children:(0,i.jsx)(`h4`,{className:o.sectionTitle,children:e(`refurbTitle`)})}),(0,i.jsx)(`div`,{className:o.panelCard,children:(0,i.jsx)(Ee,{t:e,scope:s,project:J,onSelect:Fe,onAfterAction:X,toast:a})})]})]})]})]}),U===`corridor`&&(0,i.jsx)(`div`,{className:o.tabPanel,children:(0,i.jsxs)(`div`,{className:o.mainCol,children:[(0,i.jsxs)(`section`,{className:o.section,children:[(0,i.jsx)(`div`,{className:o.sectionHead,children:(0,i.jsx)(`h4`,{className:o.sectionTitle,children:e(`sectionCorridor`)})}),(0,i.jsx)(`div`,{className:o.panelCard,children:(0,i.jsx)(De,{t:e,scope:s,project:J,onSelect:Fe})})]}),(0,i.jsxs)(`section`,{className:o.section,children:[(0,i.jsxs)(`div`,{className:o.sectionHead,children:[(0,i.jsx)(`h4`,{className:o.sectionTitle,children:e(`benchTitle`)}),(0,i.jsx)(`span`,{className:o.sectionHint,children:e(`benchNote`)})]}),(0,i.jsx)(`div`,{className:o.panelCard,children:(0,i.jsx)(_e,{t:e,scope:s})})]})]})}),U===`episodes`&&(0,i.jsx)(`div`,{className:o.tabPanel,children:(0,i.jsxs)(`section`,{className:o.section,children:[(0,i.jsxs)(`div`,{className:o.sectionHead,children:[(0,i.jsx)(`h4`,{className:o.sectionTitle,children:e(`tabEpisodes`)}),(0,i.jsx)(`span`,{className:o.sectionHint,children:e(`episodeHint`)})]}),(0,i.jsx)(Oe,{t:e,scope:s,project:J,reloadTick:R})]})}),U===`entities`&&(0,i.jsx)(`div`,{className:o.tabPanel,children:(0,i.jsxs)(`section`,{className:o.section,children:[(0,i.jsxs)(`div`,{className:o.sectionHead,children:[(0,i.jsx)(`h4`,{className:o.sectionTitle,children:e(`tabEntities`)}),(0,i.jsx)(`span`,{className:o.sectionHint,children:e(`entityHint`)})]}),(0,i.jsx)(Ae,{t:e,scope:s,project:J,reloadTick:R})]})}),U===`log`&&(0,i.jsx)(`div`,{className:o.tabPanel,children:(0,i.jsx)(we,{t:e,telemetry:Se.telemetry,project:J})}),U===`backfill`&&(0,i.jsx)(`div`,{className:o.tabPanel,children:(0,i.jsxs)(`section`,{className:o.section,children:[(0,i.jsx)(`div`,{className:o.sectionHead,children:(0,i.jsx)(`h4`,{className:o.sectionTitle,children:e(`backfillRulesTitle`)})}),(0,i.jsx)(`div`,{className:o.panelCard,children:(0,i.jsx)(Ie,{t:e,toast:a})})]})}),U===`jev`&&(0,i.jsxs)(`div`,{className:o.tabPanel,children:[(0,i.jsxs)(`section`,{className:o.section,children:[(0,i.jsx)(`div`,{className:o.sectionHead,children:(0,i.jsx)(`h4`,{className:o.sectionTitle,children:e(`tabJev`)})}),(0,i.jsx)(`div`,{className:o.panelCard,children:(0,i.jsx)(Le,{t:e,toast:a})})]}),(0,i.jsx)(`section`,{className:o.section,children:(0,i.jsx)(`div`,{className:o.panelCard,children:(0,i.jsx)(ze,{t:e,toast:a})})})]}),I!==null&&(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`div`,{className:o.drawerScrim,onClick:()=>{L(null)}}),(0,i.jsxs)(`aside`,{className:o.drawer,role:`dialog`,"aria-label":e(`drawerTitle`),children:[(0,i.jsxs)(`header`,{className:o.drawerHead,children:[(0,i.jsxs)(`div`,{className:o.drawerTitle,children:[(0,i.jsx)(`h3`,{children:e(`drawerTitle`)}),(0,i.jsx)(`span`,{title:I.record.id,children:`#${I.record.id.slice(0,8)}…`})]}),(0,i.jsx)(`button`,{type:`button`,className:o.drawerClose,"aria-label":e(`drawerClose`),onClick:()=>{L(null)},children:(0,i.jsx)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 14 14`,fill:`none`,"aria-hidden":`true`,children:(0,i.jsx)(`path`,{d:`M2 2 L12 12 M12 2 L2 12`,stroke:`currentColor`,strokeWidth:`1.6`,strokeLinecap:`round`})})})]}),(0,i.jsx)(`div`,{className:o.drawerBody,children:I.kind===`review`?(0,i.jsx)(he,{t:e,recordId:I.record.id,scope:I.record.scope,project:J}):(0,i.jsx)(ge,{t:e,record:I.record,onClose:()=>{L(null)},onSaved:()=>{L(null),X()},toast:a})})]})]}),a.viewport]})}function He(e){return function(t){return(0,i.jsx)(Ve,{...t,workspaces:e.workspaces(),sessions:e.sessions()})}}let Ue=[`slots`,`locale`];function Q(e){e.effect(()=>e.locale.register(s,{zh:l,en:u}),`dsh-engram: dictionaries`);let t=e.locale.bind(s),n=()=>e.get(`workspaces`),r=()=>e.get(`sessions`);e.slots.inject(`settings.section`,()=>e.slots.register({name:`settings.section`,id:`engram`,order:20,label:()=>t(`nav`),locale:s},He({workspaces:n,sessions:r})))}return n.apply=Q,n.inject=Ue,t.exports}});
3
+ `),i=n.length,a=r.length,o=Array.from({length:i+1},()=>Array(a+1).fill(0));for(let e=i-1;e>=0;e--)for(let t=a-1;t>=0;t--)o[e][t]=n[e]===r[t]?o[e+1][t+1]+1:Math.max(o[e+1][t],o[e][t+1]);let s=[],c=0,l=0;for(;c<i&&l<a;)n[c]===r[l]?(s.push({kind:`same`,text:n[c]}),c+=1,l+=1):o[c+1][l]>=o[c][l+1]?(s.push({kind:`del`,text:n[c]}),c+=1):(s.push({kind:`add`,text:r[l]}),l+=1);for(;c<i;)s.push({kind:`del`,text:n[c]}),c+=1;for(;l<a;)s.push({kind:`add`,text:r[l]}),l+=1;return s}function Te({t:e,scope:t,project:n}){let[a,s]=(0,r.useState)(null),[c,l]=(0,r.useState)(!1),[u,d]=(0,r.useState)(null),[f,p]=(0,r.useState)(null);if((0,r.useEffect)(()=>{let e=!1;return V(`profile-block?scope=${t}`,void 0,!0).then(t=>{e||(s(t),l(!1),d(t.versions.length>1?t.versions[1].version:null),p(t.versions.length>0?t.versions[0].version:null))}).catch(()=>{e||l(!0)}),()=>{e=!0}},[t,n]),c)return(0,i.jsx)(`div`,{className:o.expandLoading,children:e(`profileLoadFailed`)});if(a===null)return(0,i.jsx)(`div`,{className:o.expandLoading,children:e(`loading`)});if(a.block===null)return(0,i.jsxs)(`div`,{className:o.expandLoading,children:[(0,i.jsx)(`p`,{children:e(`profileEmpty`)}),(0,i.jsx)(`p`,{className:o.sectionHint,children:e(`profileEmptyHint`)})]});let m=a.versions,h=new Map(m.map(e=>[e.version,e])),g=u===null?void 0:h.get(u),_=f===null?void 0:h.get(f),v=g!==void 0&&_!==void 0?we(g.content,_.content):[],y=v.some(e=>e.kind!==`same`);return(0,i.jsxs)(`div`,{className:o.profileCard,children:[(0,i.jsx)(`h5`,{className:o.profileHeading,children:e(`profileCurrent`,{n:a.block.version})}),(0,i.jsx)(`pre`,{className:o.profileContent,children:a.block.content}),m.length>1&&(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`h5`,{className:o.profileHeading,children:e(`profileHistory`)}),(0,i.jsxs)(`div`,{className:o.profilePickerRow,children:[(0,i.jsxs)(`label`,{children:[(0,i.jsx)(`span`,{className:o.sectionHint,children:e(`profileDiffBase`)}),(0,i.jsx)(`select`,{className:o.profileSelect,value:u??void 0,onChange:e=>{d(Number(e.target.value))},children:m.map(t=>(0,i.jsxs)(`option`,{value:t.version,children:[`v`,t.version,` · `,t.source===`rollback`?e(`profileSourceRollback`):e(`profileSourceEdit`)]},t.version))})]}),(0,i.jsxs)(`label`,{children:[(0,i.jsx)(`span`,{className:o.sectionHint,children:e(`profileDiffTarget`)}),(0,i.jsx)(`select`,{className:o.profileSelect,value:f??void 0,onChange:e=>{p(Number(e.target.value))},children:m.map(t=>(0,i.jsxs)(`option`,{value:t.version,children:[`v`,t.version,` · `,t.source===`rollback`?e(`profileSourceRollback`):e(`profileSourceEdit`)]},t.version))})]})]}),g!==void 0&&_!==void 0&&(0,i.jsx)(`div`,{className:o.profileDiff,children:y?v.map((e,t)=>(0,i.jsxs)(`div`,{className:e.kind===`add`?o.profileDiffAdd:e.kind===`del`?o.profileDiffDel:o.profileDiffSame,children:[e.kind===`add`?`+ `:e.kind===`del`?`- `:` `,e.text]},t)):(0,i.jsx)(`div`,{className:o.sectionHint,children:e(`profileDiffNone`)})})]})]})}function Ee({t:e,telemetry:t,project:n}){let[a,s]=(0,r.useState)(null),[c,l]=(0,r.useState)(`all`);(0,r.useEffect)(()=>{let e=!1;return V(`activity?limit=50`,void 0,!0).then(t=>{e||s(t.operations)}).catch(()=>{e||s([])}),()=>{e=!0}},[n]);let u=be[c],d=(a??[]).filter(e=>u===null||u.includes(e.op)),f=t?.counts;return(0,i.jsxs)(`section`,{className:o.section,children:[(0,i.jsxs)(`div`,{className:o.logToolbar,children:[(0,i.jsx)(`h4`,{className:o.sectionTitle,children:e(`tabLog`)}),(0,i.jsx)(`span`,{className:o.sectionHint,children:e(`logCount`,{n:d.length})}),(0,i.jsxs)(`span`,{className:o.logCounts,children:[(0,i.jsxs)(`span`,{children:[(0,i.jsx)(`i`,{className:`${o.logDot} ${o.logDotWrite}`,"aria-hidden":`true`}),e(`teleWrites`),` `,(0,i.jsx)(`b`,{children:f?.writes??0})]}),(0,i.jsxs)(`span`,{children:[(0,i.jsx)(`i`,{className:`${o.logDot} ${o.logDotIngest}`,"aria-hidden":`true`}),e(`teleIngest`),` `,(0,i.jsx)(`b`,{children:f?.ingestDones??0})]}),(0,i.jsxs)(`span`,{children:[(0,i.jsx)(`i`,{className:`${o.logDot} ${o.logDotOrganize}`,"aria-hidden":`true`}),e(`teleConsolidate`),` `,(0,i.jsx)(`b`,{children:f?.consolidations??0})]})]}),(0,i.jsx)(`div`,{className:o.segGroup,role:`tablist`,children:[`all`,`write`,`ingest`,`retrieve`,`organize`].map(t=>(0,i.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":c===t,className:c===t?`${o.segItem} ${o.on}`:o.segItem,onClick:()=>{l(t)},children:e(xe[t])},t))})]}),(0,i.jsx)(`div`,{className:o.panelCard,children:a===null?(0,i.jsx)(`div`,{className:o.expandLoading,children:e(`loading`)}):d.length===0?(0,i.jsx)(`div`,{className:o.expandLoading,children:e(`activityEmpty`)}):(0,i.jsx)(`div`,{className:o.logList,children:d.map((t,n)=>(0,i.jsxs)(`div`,{className:o.logRow,children:[(0,i.jsx)(`i`,{className:X(t.op),"aria-hidden":`true`}),(0,i.jsx)(`span`,{className:o.logTime,children:pe(e,t.at)}),(0,i.jsx)(`span`,{className:o.logOp,children:R(e,t.op)}),(0,i.jsx)(`span`,{className:o.logScope,children:t.scope===`user`?e(`scopeUser`):e(`scopeProject`)}),(0,i.jsx)(`span`,{className:o.logDetail,title:t.detail??``,children:ye(e,t.detail)})]},n))})})]})}function De({t:e,scope:t,project:n,onSelect:a}){let s=[``,`fact`,`preference`,`decision`,`episode`,`skill`],[l,u]=T(`tour.focusKind`,``,s),[d,f]=(0,r.useState)(null);(0,r.useEffect)(()=>{let n=!1;return V(l===``?`tour-proposal?scope=${t}`:`tour-proposal?scope=${t}&focusKind=${l}`).then(e=>{n||f(e)}).catch(()=>{n||f({greeting:e(`tourProposalEmpty`),activeCount:0,empty:!0,suggestedStops:[]})}),()=>{n=!0}},[e,t,n,l]);let p=t=>{if(t===``)return e(`tourFocusAll`);let n=c[t];return n===void 0?t:e(n)};return d===null?(0,i.jsx)(`div`,{className:o.expandLoading,children:e(`loading`)}):(0,i.jsxs)(`div`,{className:o.tourProposal,children:[(0,i.jsx)(`div`,{className:o.chipRow,role:`tablist`,"aria-label":`focus-kind`,children:s.map(e=>(0,i.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":l===e,className:l===e?`${o.chip} ${o.chipOn}`:o.chip,onClick:()=>{u(e)},children:p(e)},e||`all`))}),d.empty?(0,i.jsx)(`div`,{className:o.expandLoading,children:e(`tourProposalEmpty`)}):(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`p`,{className:o.tourGreeting,children:d.greeting}),(0,i.jsx)(`ol`,{className:o.tourStops,children:d.suggestedStops.map((t,n)=>(0,i.jsx)(`li`,{children:(0,i.jsxs)(`button`,{type:`button`,className:o.tourStop,onClick:()=>{a(t.id)},children:[(0,i.jsx)(`span`,{className:o.tourStopIndex,children:n+1}),(0,i.jsxs)(`span`,{className:o.tourStopBody,children:[(0,i.jsx)(`span`,{className:o.tourStopKind,children:L(e,t.kind)}),(0,i.jsx)(`span`,{className:o.tourStopText,children:t.content.length>60?`${t.content.slice(0,60)}…`:t.content})]})]})},t.id))}),(0,i.jsx)(`p`,{className:o.tourHint,children:e(`tourProposalHint`)})]})]})}function Oe({t:e,scope:t,project:n,onSelect:a,onAfterAction:s,toast:c}){let[l,u]=(0,r.useState)(null),[d,f]=(0,r.useState)(!1),p=(0,r.useCallback)(()=>{f(!0),V(`refurb?scope=${t}`).then(e=>{u(e)}).catch(()=>{u({count:0,suggestions:[]})}).finally(()=>{f(!1)})},[t,n]);(0,r.useEffect)(()=>{p()},[p]);let m=t=>{switch(t){case`demote`:return e(`refurbActionDemote`);case`merge`:return e(`refurbActionMerge`);case`review`:return e(`refurbActionReview`);case`split`:return e(`refurbActionSplit`)}},h=(0,r.useCallback)(n=>{if(n.action===`review`||n.action===`split`){a(n.primaryId);return}if(n.action===`demote`){if(!window.confirm(e(`refurbConfirmDemote`)))return;f(!0),V(`forget`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({id:n.primaryId,scope:t,reason:`翻新清单降级`,affects:`无`,stillUseful:`可经 engram_restore 复原`})}).then(()=>{p(),s(),c.push(`success`,e(`refurbDemoteDone`))}).catch(t=>{c.push(`error`,e(`refurbActionFailed`,{msg:t.message}))}).finally(()=>{f(!1)});return}if(n.action===`merge`){let r=n.candidates.length+1;if(r<2){c.push(`warning`,e(`refurbMergeEmpty`));return}if(!window.confirm(e(`refurbConfirmMerge`,{n:r})))return;f(!0);let i=[n.primaryId,...n.candidates];V(`consolidate`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({scope:t,candidates:i})}).then(()=>{p(),s(),c.push(`success`,e(`refurbMergeDone`))}).catch(t=>{c.push(`error`,e(`refurbActionFailed`,{msg:t.message}))}).finally(()=>{f(!1)})}},[p,a,s,c,e,t]);return l===null?(0,i.jsx)(`div`,{className:o.expandLoading,children:e(`loading`)}):(0,i.jsxs)(`div`,{className:o.refurb,children:[(0,i.jsxs)(`div`,{className:o.refurbHead,children:[(0,i.jsx)(`span`,{className:o.refurbCount,children:e(`refurbCount`,{n:l.count})}),(0,i.jsx)(`button`,{type:`button`,className:o.button,disabled:d,onClick:p,children:e(`refurbRun`)})]}),l.count===0?(0,i.jsx)(`div`,{className:o.expandLoading,children:e(`refurbEmpty`)}):(0,i.jsx)(`ul`,{className:o.refurbList,children:l.suggestions.map((t,n)=>(0,i.jsxs)(`li`,{className:o.refurbItem,children:[(0,i.jsx)(`button`,{type:`button`,className:o.refurbBadge,onClick:()=>{a(t.primaryId)},children:m(t.action)}),(0,i.jsx)(`div`,{className:o.refurbReason,children:t.reason}),(0,i.jsxs)(`span`,{className:o.refurbConfidence,children:[(t.confidence*100).toFixed(0),`%`]}),(0,i.jsx)(`button`,{type:`button`,className:`${o.refurbExec} ${o.button}`,disabled:d,onClick:()=>{h(t)},children:e(`refurbExecute`)})]},`${t.action}-${t.primaryId}-${n}`))})]})}function ke({t:e,scope:t,project:n,onSelect:a}){let[s,c]=(0,r.useState)(null),[l,u]=(0,r.useState)(null);return(0,r.useEffect)(()=>{let e=!1;return V(`corridor?status=active,archived&scope=${t}`).then(t=>{e||c(t),u(null)}).catch(t=>{e||u(t.message)}),()=>{e=!0}},[t,n]),l===null?s===null?(0,i.jsx)(`div`,{className:o.expandLoading,children:e(`corridorLoad`)}):s.nodes.length===0?(0,i.jsx)(`div`,{className:o.empty,children:e(`corridorEmpty`)}):(0,i.jsx)(g,{scope:t,nodes:s.nodes,edges:s.edges,onSelect:a,t:e}):(0,i.jsxs)(`div`,{className:o.expandLoading,children:[e(`corridorFailed`),`:`,l]})}function Ae({t:e,scope:t,project:n,reloadTick:a}){let[s,c]=(0,r.useState)(``),[l,u]=(0,r.useState)(``),[d,f]=(0,r.useState)(``),[p,m]=(0,r.useState)({since:``,until:``,sessionId:``}),[h,g]=(0,r.useState)(null),[_,v]=(0,r.useState)(null),[y,b]=(0,r.useState)(null),[x,S]=(0,r.useState)(!1);(0,r.useEffect)(()=>{let e=!1,n=new URLSearchParams({scope:t});return p.since!==``&&n.set(`since`,String(new Date(`${p.since}T00:00:00`).getTime())),p.until!==``&&n.set(`until`,String(new Date(`${p.until}T23:59:59.999`).getTime())),p.sessionId!==``&&n.set(`sessionId`,p.sessionId),V(`episode-timeline?${n.toString()}`).then(t=>{e||(g(t),v(null))}).catch(t=>{e||v(t.message)}),()=>{e=!0}},[t,n,p,a]);let C=e=>{S(!0),V(`episode-timeline?scope=${t}&around=${encodeURIComponent(e)}`).then(e=>{b(e),S(!1),v(null)}).catch(e=>{v(e.message),S(!1)})},w=t=>(0,i.jsxs)(`div`,{className:o.episodeRow,title:t.id,children:[(0,i.jsx)(`time`,{className:o.episodeRowTime,children:K(t.createdAt)}),(0,i.jsx)(`span`,{className:o.episodeRowKind,children:L(e,t.kind)}),(0,i.jsx)(`span`,{className:o.episodeRowText,children:t.content}),(0,i.jsx)(`button`,{type:`button`,className:o.button,disabled:x,onClick:()=>{C(t.id)},children:e(`episodeNearby`)})]},t.id);return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(`div`,{className:o.toolbarRow,children:[(0,i.jsx)(`input`,{type:`date`,className:o.input,value:s,"aria-label":e(`episodeSince`),onChange:e=>{c(e.target.value)}}),(0,i.jsx)(`span`,{className:o.episodeRangeSep,"aria-hidden":`true`,children:`–`}),(0,i.jsx)(`input`,{type:`date`,className:o.input,value:l,"aria-label":e(`episodeUntil`),onChange:e=>{u(e.target.value)}}),(0,i.jsx)(`input`,{className:`${o.input} ${o.search}`,placeholder:e(`episodeSessionId`),value:d,onChange:e=>{f(e.target.value)}}),(0,i.jsx)(`button`,{type:`button`,className:`${o.button} ${o.primary}`,onClick:()=>{m({since:s,until:l,sessionId:d.trim()}),b(null)},children:e(`episodeApply`)}),(0,i.jsx)(`button`,{type:`button`,className:o.button,onClick:()=>{c(``),u(``),f(``),m({since:``,until:``,sessionId:``}),b(null)},children:e(`episodeReset`)})]}),_!==null&&(0,i.jsx)(`div`,{className:o.expandLoading,children:e(`loadFailed`,{msg:_})}),y!==null&&(0,i.jsxs)(`section`,{className:`${o.panelCard} ${o.episodeAround}`,children:[(0,i.jsxs)(`header`,{className:o.episodeAroundHead,children:[(0,i.jsx)(`b`,{children:e(`episodeAroundTitle`)}),(0,i.jsx)(`button`,{type:`button`,className:o.button,onClick:()=>{b(null)},children:e(`episodeClose`)})]}),w(y.anchor),y.neighbors.length===0?(0,i.jsx)(`p`,{className:o.sectionHint,children:e(`episodeAroundEmpty`)}):y.neighbors.map(w)]}),h===null&&_===null&&(0,i.jsx)(`div`,{className:o.expandLoading,children:e(`loading`)}),h!==null&&h.groups.length===0&&(0,i.jsx)(`div`,{className:o.empty,children:e(`episodeNoGroups`)}),h?.groups.map(t=>(0,i.jsxs)(`section`,{className:o.panelCard,children:[(0,i.jsxs)(`header`,{className:o.episodeHead,children:[t.summary===void 0?(0,i.jsx)(`p`,{className:`${o.episodeSummary} ${o.episodeSummaryMissing}`,children:e(`episodeSummaryMissing`)}):(0,i.jsx)(`p`,{className:o.episodeSummary,children:t.summary}),(0,i.jsxs)(`span`,{className:o.episodeHeadMeta,children:[t.sessionId===null?e(`episodeNoSession`):`#${t.sessionId}`,` · `,new Date(t.startedAt).toLocaleDateString(),` ~ `,new Date(t.endedAt).toLocaleDateString(),` · `,e(`episodeEntries`,{n:t.episodes.length})]})]}),(0,i.jsx)(`div`,{children:t.episodes.map(w)})]},t.sessionId??`none`))]})}let je={person:`entityKindPerson`,project:`entityKindProject`,tool:`entityKindTool`,concept:`entityKindConcept`,other:`entityKindOther`},Z=[`person`,`project`,`tool`,`concept`,`other`];function Me(e,t){return e(je[t]??`entityKindOther`)}function Ne({t:e,scope:t,project:n,reloadTick:a}){let[s,c]=(0,r.useState)(`all`),[l,u]=(0,r.useState)(``),[d,f]=(0,r.useState)(null),[p,m]=(0,r.useState)(null),[h,g]=(0,r.useState)(null),[_,v]=(0,r.useState)(null),[y,b]=(0,r.useState)(!1);(0,r.useEffect)(()=>{let e=!1,n=new URLSearchParams({scope:t});return s!==`all`&&n.set(`kind`,s),l!==``&&n.set(`q`,l),V(`entities?${n.toString()}`).then(t=>{e||(f(t),m(null))}).catch(t=>{e||m(t.message)}),()=>{e=!0}},[t,n,s,l,a]);let x=e=>{b(!0),Promise.all([V(`entity?scope=${t}&id=${encodeURIComponent(e)}`),V(`facts?scope=${t}&entityId=${encodeURIComponent(e)}&includeInvalid=1`)]).then(([e,t])=>{g(e),v(t),b(!1),m(null)}).catch(e=>{m(e.message),b(!1)})},S=t=>(0,i.jsxs)(`div`,{className:o.episodeRow,title:t.id,children:[(0,i.jsx)(`time`,{className:o.episodeRowTime,children:K(t.createdAt)}),(0,i.jsx)(`span`,{className:o.episodeRowKind,children:L(e,t.kind)}),(0,i.jsx)(`span`,{className:o.episodeRowText,children:t.content})]},t.id),C=t=>(0,i.jsxs)(`div`,{className:o.episodeRow,title:t.id,children:[(0,i.jsx)(`time`,{className:o.episodeRowTime,children:new Date(t.validAt).toLocaleDateString()}),(0,i.jsx)(`span`,{className:o.episodeRowKind,children:t.invalidAt===null?e(`factValid`):e(`factInvalid`)}),(0,i.jsx)(`span`,{className:o.episodeRowText,children:t.content})]},t.id);return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`div`,{className:o.chipRow,children:[[`all`,e(`entityKindAll`)],...Z.map(t=>[t,e(je[t]??`entityKindOther`)])].map(([e,t])=>(0,i.jsx)(`button`,{type:`button`,"aria-pressed":s===e,className:s===e?`${o.chip} ${o.chipOn}`:o.chip,onClick:()=>{c(e),g(null),v(null)},children:t},e))}),(0,i.jsxs)(`div`,{className:o.toolbarRow,children:[(0,i.jsx)(`input`,{className:`${o.input} ${o.search}`,placeholder:e(`entitySearchPlaceholder`),value:l,onChange:e=>{u(e.target.value.trim()),g(null),v(null)}}),d!==null&&(0,i.jsx)(`span`,{className:o.sectionHint,children:e(`entityCount`,{n:d.total})})]}),p!==null&&(0,i.jsx)(`div`,{className:o.expandLoading,children:e(`loadFailed`,{msg:p})}),h!==null&&(0,i.jsxs)(`section`,{className:`${o.panelCard} ${o.episodeAround}`,children:[(0,i.jsxs)(`header`,{className:o.episodeAroundHead,children:[(0,i.jsx)(`b`,{children:h.entity.name}),(0,i.jsx)(`span`,{className:o.episodeRowKind,children:Me(e,h.entity.kind)}),(0,i.jsx)(`button`,{type:`button`,className:o.button,onClick:()=>{g(null),v(null)},children:e(`episodeClose`)})]}),h.entity.aliases.length>0&&(0,i.jsx)(`p`,{className:o.sectionHint,children:`${e(`entityAliases`)}:${h.entity.aliases.join(`、`)}`}),h.memories.length===0?(0,i.jsx)(`p`,{className:o.sectionHint,children:e(`entityNoMemories`)}):(0,i.jsx)(`div`,{children:h.memories.map(S)}),_!==null&&(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`p`,{className:o.sectionHint,children:e(`factSection`,{n:_.total})}),_.items.length===0?(0,i.jsx)(`p`,{className:o.sectionHint,children:e(`factEmpty`)}):(0,i.jsx)(`div`,{children:_.items.map(C)})]})]}),d===null&&p===null&&(0,i.jsx)(`div`,{className:o.expandLoading,children:e(`loading`)}),d!==null&&d.items.length===0&&(0,i.jsx)(`div`,{className:o.empty,children:e(`entityEmpty`)}),d!==null&&d.items.map(t=>(0,i.jsxs)(`div`,{className:o.episodeRow,title:t.entity.id,children:[(0,i.jsx)(`span`,{className:o.episodeRowKind,children:Me(e,t.entity.kind)}),(0,i.jsxs)(`span`,{className:o.episodeRowText,children:[t.entity.name,t.entity.aliases.length>0&&(0,i.jsx)(`small`,{className:o.sectionHint,children:`(${t.entity.aliases.join(`、`)})`})]}),(0,i.jsx)(`span`,{className:o.episodeRowTime,children:e(`entityMemories`,{n:t.memoryCount})}),(0,i.jsx)(`button`,{type:`button`,className:o.button,disabled:y,onClick:()=>{x(t.entity.id)},children:e(`entityOpen`)})]},t.entity.id))]})}let Pe={active:{key:`beliefStatusActive`,pill:`statusActive`},stale:{key:`beliefStatusStale`,pill:`statusArchived`},refuted:{key:`beliefStatusRefuted`,pill:`statusForgotten`}};function Fe({t:e,scope:t,project:n,reloadTick:a}){let[s,c]=(0,r.useState)(`all`),[l,u]=(0,r.useState)(null),[d,f]=(0,r.useState)(null),[p,m]=(0,r.useState)(null),[h,g]=(0,r.useState)(null),[_,v]=(0,r.useState)(!1);(0,r.useEffect)(()=>{let e=!1,n=new URLSearchParams({scope:t});return s!==`all`&&n.set(`status`,s),V(`observations?${n.toString()}`).then(t=>{e||(u(t),f(null))}).catch(t=>{e||f(t.message)}),()=>{e=!0}},[t,n,s,a]);let y=e=>{if(p===e.id){m(null),g(null);return}m(e.id),g(null),v(!0),V(`observation-evidence?scope=${t}&ids=${encodeURIComponent(e.sourceIds.join(`,`))}`).then(e=>{g(e.items),v(!1),f(null)}).catch(e=>{f(e.message),v(!1)})};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(`div`,{className:o.chipRow,children:[[[`all`,e(`beliefStatusAll`)],[`active`,e(`beliefStatusActive`)],[`stale`,e(`beliefStatusStale`)],[`refuted`,e(`beliefStatusRefuted`)]].map(([e,t])=>(0,i.jsx)(`button`,{type:`button`,"aria-pressed":s===e,className:s===e?`${o.chip} ${o.chipOn}`:o.chip,onClick:()=>{c(e),m(null),g(null)},children:t},e)),l!==null&&(0,i.jsx)(`span`,{className:o.sectionHint,children:e(`beliefCount`,{n:l.total})})]}),d!==null&&(0,i.jsx)(`div`,{className:o.expandLoading,children:e(`loadFailed`,{msg:d})}),l===null&&d===null&&(0,i.jsx)(`div`,{className:o.expandLoading,children:e(`loading`)}),l!==null&&l.items.length===0&&(0,i.jsx)(`div`,{className:o.empty,children:e(`beliefNone`)}),l!==null&&l.items.map(t=>(0,i.jsxs)(`section`,{className:`${o.panelCard} ${o.beliefCard}`,children:[(0,i.jsx)(`p`,{className:o.beliefText,children:t.belief}),(0,i.jsxs)(`div`,{className:o.beliefMeta,children:[(0,i.jsx)(`span`,{className:`${o.pill} ${o[Pe[t.status].pill]}`,children:e(Pe[t.status].key)}),(0,i.jsx)(`button`,{type:`button`,"aria-expanded":p===t.id,className:p===t.id?`${o.button} ${o.chipOn}`:o.button,onClick:()=>{y(t)},children:e(`beliefEvidence`,{n:t.proofCount})}),(0,i.jsx)(`time`,{className:o.beliefTime,title:new Date(t.updatedAt).toLocaleString(),children:K(t.updatedAt)})]}),p===t.id&&(0,i.jsxs)(`div`,{className:o.expand,children:[_&&(0,i.jsx)(`div`,{className:o.expandLoading,children:e(`loading`)}),h!==null&&h.length===0&&(0,i.jsx)(`div`,{className:o.expandLoading,children:e(`beliefEvidenceEmpty`)}),h!==null&&h.map(t=>(0,i.jsxs)(`div`,{className:o.episodeRow,title:t.id,children:[(0,i.jsx)(`time`,{className:o.episodeRowTime,children:K(t.createdAt)}),(0,i.jsx)(`span`,{className:o.episodeRowKind,children:L(e,t.kind)}),(0,i.jsx)(`span`,{className:o.episodeRowText,children:t.content})]},t.id))]})]},t.id))]})}function Ie({t:e,byKind:t}){return(0,i.jsx)(`div`,{className:o.roomList,children:j.map(n=>(0,i.jsxs)(`div`,{className:o.roomRow,children:[(0,i.jsx)(`span`,{className:`${o.roomSwatch} ${o[P[n]??``]??``}`,"aria-hidden":`true`}),(0,i.jsx)(`span`,{children:L(e,n)}),(0,i.jsx)(`b`,{className:o.roomCount,children:t[n]??0})]},n))})}function Le(e,t){let[n,i]=(0,r.useState)({stats:null,byKind:{},telemetry:null,health:null,failed:null});return(0,r.useEffect)(()=>{let t=!1;return Promise.all([V(`stats?scope=${e}`),V(`telemetry?days=7&scope=${e}`),V(`health?scope=${e}`)]).then(([n,r,a])=>{if(t)return;let o=n.parts.find(t=>t.scope===e)?.stats??null;i({stats:o,byKind:o?.byKind??{},telemetry:r,health:a,failed:null})}).catch(e=>{t||i(t=>({...t,failed:e.message}))}),()=>{t=!0}},[e,t]),n}function Re({t:e,overview:t,dueCount:n}){let{stats:r,telemetry:a,health:s,failed:c}=t;if(c!==null)return(0,i.jsx)(`section`,{className:o.panelCard,children:(0,i.jsxs)(`div`,{className:o.expandLoading,children:[e(`teleFailed`),`:`,c]})});if(a===null)return(0,i.jsx)(`section`,{className:o.panelCard,children:(0,i.jsx)(`div`,{className:o.expandLoading,children:e(`teleLoading`)})});let l=a.counts;return(0,i.jsxs)(`section`,{className:o.panelCard,children:[(0,i.jsxs)(`div`,{className:o.hero,children:[(0,i.jsxs)(`div`,{className:o.heroMetrics,children:[(0,i.jsx)(me,{label:e(`kpiTotal`),value:r?.total??0,tail:`${e(`teleGroupRecent`)} +${String(l.writes)}`}),(0,i.jsx)(me,{label:e(`kpiActive`),value:r?.active??0,tail:`${e(`kpiForgotten`)} ${String(r?.forgotten??0)}`}),(0,i.jsx)(me,{label:e(`kpiSignal`),value:`${String(Math.round((r?.signalRatio??0)*100))}%`,tail:e(`cardRedacted`,{n:r?.redacted??0})})]}),(0,i.jsx)(q,{score:s?.overall??0})]}),(0,i.jsxs)(`div`,{className:o.heroFoot,children:[(0,i.jsxs)(`div`,{className:o.heroStats,children:[(0,i.jsxs)(`span`,{className:o.heroStat,children:[(0,i.jsx)(`span`,{className:o.heroStatLabel,children:e(`teleWrites`)}),(0,i.jsx)(`span`,{className:o.heroStatValue,children:l.writes})]}),(0,i.jsxs)(`span`,{className:o.heroStat,children:[(0,i.jsx)(`span`,{className:o.heroStatLabel,children:e(`teleIngest`)}),(0,i.jsx)(`span`,{className:o.heroStatValue,children:l.ingestRequests})]}),(0,i.jsxs)(`span`,{className:o.heroStat,children:[(0,i.jsx)(`span`,{className:o.heroStatLabel,children:e(`teleConsolidate`)}),(0,i.jsx)(`span`,{className:o.heroStatValue,children:l.consolidations})]}),(0,i.jsxs)(`span`,{className:o.heroStat,children:[(0,i.jsx)(`span`,{className:o.heroStatLabel,children:e(`heroDue`)}),(0,i.jsx)(`span`,{className:n>0?`${o.heroStatValue} ${o.heroStatDue}`:o.heroStatValue,children:n})]}),(0,i.jsx)(`span`,{className:o.heroFootDivider,"aria-hidden":`true`}),(0,i.jsx)(`span`,{className:o.sectionHint,children:s===null?e(`healthLoading`):e(`healthEvaluatedAt`,{time:pe(e,s.evaluatedAt)})})]}),(0,i.jsxs)(`span`,{className:o.telePrivacy,role:`note`,"aria-label":e(`telePrivacyHint`),tabIndex:0,children:[(0,i.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 14 14`,fill:`none`,"aria-hidden":`true`,children:[(0,i.jsx)(`circle`,{cx:`7`,cy:`7`,r:`5.5`,stroke:`currentColor`,strokeWidth:`1.2`}),(0,i.jsx)(`line`,{x1:`7`,y1:`6`,x2:`7`,y2:`10.5`,stroke:`currentColor`,strokeWidth:`1.4`,strokeLinecap:`round`}),(0,i.jsx)(`circle`,{cx:`7`,cy:`4.2`,r:`0.7`,fill:`currentColor`})]}),(0,i.jsx)(`span`,{className:o.telePrivacyHint,children:e(`telePrivacyHint`)}),(0,i.jsx)(`span`,{className:o.telePrivacyTip,role:`tooltip`,children:e(`telePrivacyTip`)})]})]})]})}let ze={"low-activity":`skipLowActivity`,chitchat:`skipChitchat`,"capture-forbidden":`skipForbidden`,"no-user-content":`skipNoContent`,"already-ingested":`skipAlready`,"no-such-turn":`skipNoTurn`,"no-previous-turn":`skipNoTurn`,"no-route-in-log":`skipNoRoute`,unparsable:`skipUnparsable`};function Be(e,t){let n=ze[t];return n===void 0?t:e(n)}function Ve({t:e,toast:t}){let[n,a]=T(`backfill.days`,`7`,[`7`,`30`,`90`,`0`]),[s,c]=E(`backfill.maxTurns`,`20`),[l,u]=E(`backfill.maxTotal`,`200`),[d,f]=T(`backfill.subagents`,`false`,[`false`,`true`]),[p,m]=T(`backfill.seeded`,`false`,[`false`,`true`]),[h,g]=T(`backfill.noCwd`,`false`,[`false`,`true`]),[_,v]=E(`backfill.model`,``),[y,b]=(0,r.useState)(null),[x,S]=(0,r.useState)(null),[C,w]=(0,r.useState)(null),[D,O]=(0,r.useState)(!1);(0,r.useEffect)(()=>{let e=!1;return V(`models`).then(t=>{e||b(t)}).catch(()=>{e||b({providers:[],failures:[]})}),()=>{e=!0}},[]);let k=(()=>{if(_===``)return;let e=_.indexOf(`::`);if(!(e<=0))return{provider:_.slice(0,e),model:_.slice(e+2)}})(),A=new URLSearchParams({days:n,maxTurnsPerSession:s,maxTotalTurns:l,includeSubagents:d,includeSeeded:p,includeNoCwd:h});k!==void 0&&(A.set(`provider`,k.provider),A.set(`model`,k.model));let j=A.toString(),M=(0,r.useCallback)(()=>{O(!0),V(`history-backfill?${j}`).then(e=>{S(e.estimate)}).catch(e=>{t.push(`error`,e.message)}).finally(()=>{O(!1)})},[j,t]);(0,r.useEffect)(()=>{M()},[M]);let N=C?.progress.state===`running`;(0,r.useEffect)(()=>{let e=!1,t=()=>{V(`history-backfill/status`).then(t=>{e||w(t)}).catch(()=>{})};if(t(),!N)return()=>{e=!0};let n=window.setInterval(t,1500);return()=>{e=!0,window.clearInterval(n)}},[N]);let P=()=>{O(!0),V(`history-backfill/start`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({days:Number(n),maxTurnsPerSession:Number(s),maxTotalTurns:Number(l),includeSubagents:d===`true`,includeSeeded:p===`true`,includeNoCwd:h===`true`,...k===void 0?{}:{provider:k.provider,model:k.model}})}).then(e=>{w(e.status)}).catch(e=>{t.push(`error`,e.message)}).finally(()=>{O(!1)})},ee=()=>{V(`history-backfill/cancel`,{method:`POST`,headers:{"content-type":`application/json`},body:`{}`}).then(e=>{w(e.status)}).catch(e=>{t.push(`error`,e.message)})},F=C?.progress,I=F===void 0?``:F.state===`running`?e(`backfillStateRunning`):F.state===`done`?e(`backfillStateDone`):F.state===`cancelled`?e(`backfillStateCancelled`):e(`backfillStateFailed`),L=F===void 0||F.turnsPlanned===0?0:Math.min(100,Math.round(F.turnsDone/F.turnsPlanned*100));return(0,i.jsxs)(`div`,{className:o.backfill,children:[(0,i.jsx)(`p`,{className:o.backfillIntro,children:e(`backfillIntro`)}),(0,i.jsxs)(`div`,{className:o.backfillRules,children:[(0,i.jsxs)(`label`,{className:o.backfillRule,children:[(0,i.jsx)(`span`,{children:e(`backfillDays`)}),(0,i.jsxs)(`select`,{className:o.input,value:n,onChange:e=>{a(e.target.value)},children:[(0,i.jsx)(`option`,{value:`7`,children:e(`backfillDaysUnit`,{n:7})}),(0,i.jsx)(`option`,{value:`30`,children:e(`backfillDaysUnit`,{n:30})}),(0,i.jsx)(`option`,{value:`90`,children:e(`backfillDaysUnit`,{n:90})}),(0,i.jsx)(`option`,{value:`0`,children:e(`backfillDaysAll`)})]})]}),(0,i.jsxs)(`label`,{className:o.backfillRule,children:[(0,i.jsx)(`span`,{children:e(`backfillMaxTurns`)}),(0,i.jsx)(`input`,{className:o.input,type:`number`,min:1,max:500,value:s,onChange:e=>{c(e.target.value)}})]}),(0,i.jsxs)(`label`,{className:o.backfillRule,children:[(0,i.jsx)(`span`,{children:e(`backfillMaxTotal`)}),(0,i.jsx)(`input`,{className:o.input,type:`number`,min:1,max:5e3,value:l,onChange:e=>{u(e.target.value)}})]}),(0,i.jsxs)(`label`,{className:o.backfillRule,children:[(0,i.jsx)(`span`,{children:e(`backfillModel`)}),(0,i.jsxs)(`select`,{className:o.input,value:_,onChange:e=>{v(e.target.value)},children:[(0,i.jsx)(`option`,{value:``,children:e(`backfillModelAuto`)}),(y?.providers??[]).map(e=>(0,i.jsx)(`optgroup`,{label:e.name,children:e.models.map(t=>(0,i.jsx)(`option`,{value:`${e.id}::${t.id}`,children:t.name},`${e.id}::${t.id}`))},e.id))]})]})]}),(0,i.jsxs)(`div`,{className:o.backfillToggles,children:[(0,i.jsxs)(`label`,{className:o.backfillToggle,children:[(0,i.jsx)(`input`,{type:`checkbox`,checked:d===`true`,onChange:e=>{f(e.target.checked?`true`:`false`)}}),e(`backfillIncludeSubagents`)]}),(0,i.jsxs)(`label`,{className:o.backfillToggle,children:[(0,i.jsx)(`input`,{type:`checkbox`,checked:p===`true`,onChange:e=>{m(e.target.checked?`true`:`false`)}}),e(`backfillIncludeSeeded`)]}),(0,i.jsxs)(`label`,{className:o.backfillToggle,children:[(0,i.jsx)(`input`,{type:`checkbox`,checked:h===`true`,onChange:e=>{g(e.target.checked?`true`:`false`)}}),e(`backfillIncludeNoCwd`)]})]}),(0,i.jsx)(`div`,{className:o.backfillEstimate,children:x===null?(0,i.jsx)(`span`,{className:o.backfillMuted,children:e(`backfillEstimating`)}):x.unavailable===void 0?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(`div`,{className:o.backfillNumbers,children:[(0,i.jsx)(`span`,{className:o.backfillMetric,children:e(`backfillCandidates`,{n:x.candidates})}),(0,i.jsx)(`span`,{className:o.backfillMetric,children:e(`backfillPendingTurns`,{n:x.pendingTurns})}),(0,i.jsx)(`span`,{className:o.backfillMetric,children:e(`backfillAlready`,{n:x.alreadyIngested})})]}),(0,i.jsx)(`div`,{className:o.backfillMuted,children:e(`backfillSkippedDetail`,{subagent:x.skipped.subagent,seeded:x.skipped.seeded,noCwd:x.skipped.noCwd,tooOld:x.skipped.tooOld,unreadable:x.skipped.unreadable})}),x.truncated&&(0,i.jsx)(`div`,{className:o.backfillMuted,children:e(`backfillTruncated`)})]}):(0,i.jsx)(`span`,{className:o.backfillMuted,children:x.unavailable})}),(0,i.jsxs)(`div`,{className:o.backfillActions,children:[(0,i.jsx)(`button`,{type:`button`,className:o.button,disabled:D,onClick:M,children:e(`backfillReestimate`)}),(0,i.jsx)(`button`,{type:`button`,className:`${o.button} ${o.primary}`,disabled:D||N||x===null||x.unavailable!==void 0||x.pendingTurns===0,onClick:P,children:e(`backfillStart`)}),(0,i.jsx)(`button`,{type:`button`,className:o.button,disabled:!N,onClick:ee,children:e(`backfillPause`)})]}),F!==void 0&&(0,i.jsxs)(`div`,{className:o.backfillProgress,children:[(0,i.jsxs)(`div`,{className:o.backfillProgressHead,children:[(0,i.jsx)(`span`,{children:I}),(0,i.jsx)(`span`,{children:e(`backfillProgressTurns`,{done:F.turnsDone,total:F.turnsPlanned})})]}),(0,i.jsx)(`div`,{className:o.progressBar,children:(0,i.jsx)(`i`,{style:{width:`${String(L)}%`}})}),(0,i.jsxs)(`div`,{className:o.backfillMeta,children:[(0,i.jsx)(`span`,{children:e(`backfillProgressSessions`,{done:F.sessionsDone,total:F.sessionsTotal})}),(0,i.jsx)(`span`,{children:e(`backfillWritten`,{n:F.memoriesWritten})}),(0,i.jsx)(`span`,{children:e(`backfillTurnsSkipped`,{n:F.turnsSkipped})}),(0,i.jsx)(`span`,{children:e(`backfillTurnsFailed`,{n:F.turnsFailed})})]}),Object.keys(F.skipReasons).length>0&&(0,i.jsxs)(`div`,{className:o.backfillMeta,children:[(0,i.jsx)(`span`,{children:e(`backfillSkipReasons`)}),Object.entries(F.skipReasons).sort(([,e],[,t])=>t-e).map(([t,n])=>(0,i.jsx)(`span`,{children:`${Be(e,t)} ${String(n)}`},t))]}),(C?.failures??[]).length>0&&(0,i.jsxs)(`ul`,{className:o.backfillFailures,children:[(0,i.jsx)(`li`,{className:o.backfillMuted,children:e(`backfillFailures`)}),C.failures.slice(0,3).map((e,t)=>(0,i.jsx)(`li`,{children:`${e.sessionId.slice(-12)} · ${String(e.turn)} · ${e.reason}`},`${e.sessionId}-${String(e.turn)}-${String(t)}`))]}),(C?.failures??[]).length>0&&(0,i.jsx)(`div`,{className:o.backfillMuted,children:e(`backfillRouteHint`)}),C?.error!==void 0&&(0,i.jsx)(`div`,{className:o.backfillMuted,children:C.error})]})]})}function He({t:e,toast:t}){let[n,a]=(0,r.useState)(null),[s,c]=(0,r.useState)(!1),[l,u]=(0,r.useState)(``),[d,f]=(0,r.useState)(``),[p,m]=(0,r.useState)(``),[h,g]=(0,r.useState)(`3000`),[_,v]=(0,r.useState)(!1),[y,b]=(0,r.useState)(!1);return(0,r.useEffect)(()=>{let n=!1;return V(`jev-config`).then(e=>{n||(a(e),c(e.enabled),f(e.baseUrl),m(e.model),g(String(e.timeoutMs)))}).catch(r=>{n||t.push(`error`,`${e(`jevLoadFailed`)}: ${r.message}`)}),()=>{n=!0}},[e,t]),n===null?(0,i.jsx)(`span`,{className:o.jevMuted,children:e(`loading`)}):(0,i.jsxs)(`div`,{className:o.jev,children:[(0,i.jsx)(`p`,{className:o.jevIntro,children:e(`jevIntro`)}),(0,i.jsxs)(`div`,{className:o.jevToggleRow,children:[(0,i.jsxs)(`label`,{className:o.jevToggle,children:[(0,i.jsx)(`input`,{type:`checkbox`,checked:s,onChange:e=>c(e.target.checked)}),e(`jevEnabled`)]}),(0,i.jsx)(`span`,{className:o.jevStatus,children:n.enabled?e(`jevStatusOn`):e(`jevStatusOff`)})]}),(0,i.jsxs)(`div`,{className:o.jevForm,children:[(0,i.jsxs)(`label`,{className:o.jevField,children:[(0,i.jsx)(`span`,{children:e(`jevApiKey`)}),(0,i.jsx)(`input`,{className:o.input,type:`password`,value:l,autoComplete:`off`,placeholder:n.apiKeyMask??e(`jevApiKeyUnset`),onChange:e=>u(e.target.value)}),(0,i.jsx)(`span`,{className:o.jevMuted,children:e(`jevApiKeyHint`)})]}),(0,i.jsxs)(`label`,{className:o.jevField,children:[(0,i.jsx)(`span`,{children:e(`jevBaseUrl`)}),(0,i.jsx)(`input`,{className:o.input,value:d,onChange:e=>f(e.target.value)})]}),(0,i.jsxs)(`label`,{className:o.jevField,children:[(0,i.jsx)(`span`,{children:e(`jevModel`)}),(0,i.jsx)(`input`,{className:o.input,value:p,onChange:e=>m(e.target.value)})]}),(0,i.jsxs)(`label`,{className:o.jevField,children:[(0,i.jsx)(`span`,{children:e(`jevTimeoutMs`)}),(0,i.jsx)(`input`,{className:o.input,type:`number`,min:1e3,max:6e4,value:h,onChange:e=>g(e.target.value)})]})]}),(0,i.jsx)(`div`,{className:o.jevMuted,children:e(`jevThresholdsTitle`)}),(0,i.jsx)(`div`,{className:o.jevMuted,children:e(`jevThresholdLine`,{merge:n.deferMergeAbove,accept:n.deferAcceptBelow,contradict:n.contradictMinProbability})}),(0,i.jsxs)(`div`,{className:o.jevActions,children:[(0,i.jsx)(`button`,{type:`button`,className:`${o.button} ${o.primary}`,disabled:_,onClick:()=>{v(!0),V(`jev-config`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({enabled:s,baseUrl:d.trim(),model:p.trim(),timeoutMs:Number(h),...l.trim()===``?{}:{apiKey:l.trim()}})}).then(n=>{a(n.view),u(``),t.push(`success`,e(`jevSaved`))}).catch(e=>{t.push(`error`,e.message)}).finally(()=>{v(!1)})},children:e(`jevSave`)}),(0,i.jsx)(`button`,{type:`button`,className:o.button,disabled:_||y,onClick:()=>{b(!0),V(`jev-test`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({baseUrl:d.trim(),model:p.trim(),...l.trim()===``?{}:{apiKey:l.trim()}})}).then(n=>{n.ok?t.push(`success`,e(`jevTestOk`,{ms:n.elapsedMs,p:n.probability})):t.push(`error`,e(`jevTestFail`,{error:n.error??``}))}).catch(e=>{t.push(`error`,e.message)}).finally(()=>{b(!1)})},children:e(`jevTest`)}),n.apiKeySet&&(0,i.jsx)(`button`,{type:`button`,className:o.button,disabled:_,onClick:()=>{v(!0),V(`jev-config`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({apiKey:``})}).then(n=>{a(n.view),t.push(`success`,e(`jevKeyCleared`))}).catch(e=>{t.push(`error`,e.message)}).finally(()=>{v(!1)})},children:e(`jevClearKey`)})]})]})}let Ue={merge:`jevObsVerdictMerge`,accept:`jevObsVerdictAccept`,defer:`jevObsVerdictDefer`,confirm:`jevObsVerdictConfirm`,reject:`jevObsVerdictReject`,fallback:`jevObsVerdictFallback`};function We({t:e,toast:t}){let[n,a]=(0,r.useState)(null);return(0,r.useEffect)(()=>{let n=!1,r=r=>{V(`jev-observations`).then(e=>{n||a(e.items)}).catch(i=>{n||(a(e=>e??[]),r&&t.push(`error`,`${e(`jevObsLoadFailed`)}: ${i.message}`))})};r(!0);let i=window.setInterval(()=>r(!1),1500);return()=>{n=!0,window.clearInterval(i)}},[e,t]),n===null?(0,i.jsx)(`span`,{className:o.jevMuted,children:e(`loading`)}):n.length===0?(0,i.jsx)(`span`,{className:o.jevMuted,children:e(`jevObsEmpty`)}):(0,i.jsxs)(`div`,{className:o.jevObs,children:[(0,i.jsx)(`div`,{className:o.jevObsHead,children:e(`jevObsTitle`)}),n.map((t,n)=>(0,i.jsxs)(`div`,{className:o.jevObsItem,children:[(0,i.jsx)(`span`,{className:o.jevObsTime,children:new Date(t.at).toLocaleTimeString()}),(0,i.jsx)(`span`,{children:t.site===`band`?e(`jevObsSiteBand`):e(`jevObsSiteContradiction`)}),(0,i.jsx)(`span`,{className:t.verdict===`fallback`?o.jevObsBadgeWarn:t.verdict===`confirm`||t.verdict===`merge`?o.jevObsBadgeGood:o.jevObsBadge,children:e(Ue[t.verdict])}),(0,i.jsx)(`span`,{children:t.answered?`p=${t.probability?.toFixed(3)}`:e(`jevObsNoAnswer`)}),(0,i.jsxs)(`span`,{children:[t.elapsedMs,`ms`]}),t.error!==void 0&&(0,i.jsx)(`span`,{className:o.jevObsError,children:e(`jevObsErrorLine`,{error:t.error})})]},`${t.at}-${t.site}-${n}`))]})}function Ge({t:e,scope:t,project:n}){let[a,s]=(0,r.useState)(!1),c=(0,r.useRef)(null);(0,r.useEffect)(()=>{if(!a)return;let e=e=>{(c.current===null||!c.current.contains(e.target))&&s(!1)};return window.addEventListener(`mousedown`,e),()=>{window.removeEventListener(`mousedown`,e)}},[a]);let l=t===`project`&&n!==null?`&project=${encodeURIComponent(n)}`:``,u=[{label:e(`exportMd`),hint:e(`exportMdHint`),href:`/api/engram/export?scope=${t}${l}&format=markdown`},{label:e(`exportJson`),hint:e(`exportJsonHint`),href:`/api/engram/export?scope=${t}${l}&format=json`},{label:e(`exportMirror`),hint:e(`exportMirrorHint`),href:`/api/engram/mirror?scope=${t}${l}`}];return(0,i.jsxs)(`div`,{className:o.exportWrap,ref:c,children:[(0,i.jsxs)(`button`,{type:`button`,className:o.button,"aria-haspopup":`menu`,"aria-expanded":a,title:e(`export`),"aria-label":e(`export`),onClick:()=>{s(e=>!e)},children:[(0,i.jsx)(O,{name:`export`,className:o.brandIcon}),(0,i.jsx)(`span`,{className:o.exportCaret,"aria-hidden":`true`,children:`▾`})]}),a&&(0,i.jsx)(`div`,{className:o.exportMenu,role:`menu`,children:u.map(e=>(0,i.jsxs)(`a`,{role:`menuitem`,className:o.exportItem,href:e.href,onClick:()=>{s(!1)},children:[(0,i.jsx)(`span`,{className:o.exportItemLabel,children:e.label}),(0,i.jsx)(`span`,{className:o.exportItemHint,children:e.hint})]},e.href))})]})}function Ke({t:e,workspaces:t,sessions:n}){let a=b(),[s,c]=T(`library.lang`,e(`scopeUser`)===l.scopeUser?`zh`:`en`,[`zh`,`en`]),u=(0,r.useMemo)(()=>A(s),[s]),[d,f]=T(`library.scope`,`user`,[`user`,`project`,`shared`]),[p,m]=T(`library.status`,`all`,[`all`,`active`,`archived`,`forgotten`]),[h,g]=T(`library.kind`,`all`,[`all`,`fact`,`preference`,`decision`,`episode`,`skill`]),[_,v]=E(`library.q`,``),[y,x]=T(`library.sort`,`time`,[`time`,`tour`]),[S,C]=(0,r.useState)(0),[w,D]=(0,r.useState)(new Set),[k,P]=(0,r.useState)(!1),[ee]=(0,r.useState)(`all`),[F,I]=(0,r.useState)(0),[R,ne]=(0,r.useState)(null),[z,oe]=(0,r.useState)(null),[B,H]=(0,r.useState)(null),[U,se]=(0,r.useState)(0),[W,G]=(0,r.useState)(new Set),[ue,me]=(0,r.useState)(!1),[q,J]=(0,r.useState)(`today`),[Y,_e]=E(`library.project`,`follow`),ye=ce(t,n),[be,xe]=(0,r.useState)(null),Se=ye.workspace?.workspaceId??``;(0,r.useEffect)(()=>{let e=!1;return V(`workspaces`).then(t=>{e||xe(t)}).catch(()=>{}),()=>{e=!0}},[Se,Y,U]);let Ce=fe(be,ye.workspace),X=Y===`follow`?Ce?.dbName??null:Y;ie=X;let we=Y!==`follow`&&!(be?.items??[]).some(e=>e.dbName===Y),je=Le(d,X),Z=(0,r.useCallback)(()=>{se(e=>e+1)},[]),Me=(0,r.useRef)(!1);(0,r.useEffect)(()=>(ae=()=>{Me.current||Y===`follow`||(Me.current=!0,_e(`follow`),I(0),H(null),G(new Set),Z())},()=>{ae=null}),[Y,Z]),(0,r.useEffect)(()=>{Y===`follow`&&(Me.current=!1)},[Y]);let Pe=(0,r.useCallback)(()=>{V(`review-due?scope=${d}&limit=50`).then(e=>{C(e.items.length),D(new Set(e.items.map(e=>e.id)))}).catch(()=>{C(0),D(new Set)})},[d,X]);(0,r.useEffect)(()=>{Pe()},[Pe]);let ze=()=>{J(`library`),P(!0)},Be=(0,r.useCallback)(e=>{let t=R?.records.find(t=>t.id===e);H({kind:`review`,record:t??{id:e,scope:d,kind:`fact`,content:``,importance:.5,confidence:.5,status:`active`,createdAt:Date.now(),accessCount:0,sourceSessionId:null,sourceRound:null}})},[R,d]);(0,r.useEffect)(()=>{let e=!1,t=new URLSearchParams({scope:d,status:p,kind:h,redacted:ee,limit:`20`,offset:String(F)});return _!==``&&t.set(`q`,_),y===`tour`&&t.set(`sort`,`tour`),V(`list?${t.toString()}`).then(t=>{e||(ne(t),oe(null))}).catch(t=>{e||oe(t.message)}),()=>{e=!0}},[d,p,h,ee,_,y,F,U,X]);let Ue=(0,r.useRef)(X);(0,r.useEffect)(()=>{Ue.current!==X&&(Ue.current=X,I(0),H(null),G(new Set))},[X]);let Ke=(e,t)=>{V(e,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({id:t.id,scope:t.scope})}).then(Z).catch(e=>{a.push(`error`,e.message)})},qe=(e,t)=>{H(n=>n!==null&&n.kind===e&&n.record.id===t.id?null:{kind:e,record:t})},Je=R?.records??[],Q=k?Je.filter(e=>w.has(e.id)):Je,Ye=Q.filter(e=>W.has(e.id)),Xe=Ye.filter(e=>e.status===`active`).length,Ze=Ye.length-Xe,Qe=Q.length>0&&Q.every(e=>W.has(e.id)),$e=e=>{G(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},$=()=>{G(new Set),me(!1)},et=()=>{G(e=>{let t=new Set(e);return Qe?Q.forEach(e=>t.delete(e.id)):Q.forEach(e=>t.add(e.id)),t})},tt=e=>{let t=e===`forget`?Ye.filter(e=>e.status===`active`):Ye.filter(e=>e.status!==`active`);t.length!==0&&Promise.allSettled(t.map(t=>V(e,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({id:t.id,scope:t.scope})}))).then(()=>{$(),Z()})},nt=()=>{if(ue){tt(`forget`);return}me(!0)},rt=Math.floor(F/20)+1,it=R===null?1:Math.max(1,Math.ceil(R.total/20)),at=(0,r.useRef)(new Map),[ot,st]=(0,r.useState)({left:0,width:0,opacity:0}),ct=(0,r.useCallback)(()=>{let e=at.current.get(d);e!=null&&st({left:e.offsetLeft,width:e.offsetWidth,opacity:1})},[d]);return(0,r.useEffect)(()=>{ct();let e=()=>ct();return window.addEventListener(`resize`,e),()=>{window.removeEventListener(`resize`,e)}},[ct]),(0,i.jsxs)(`div`,{className:o.panel,children:[B!==null&&(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`div`,{className:o.drawerScrim,onClick:()=>{H(null)}}),(0,i.jsx)(`div`,{className:o.drawerLayer,children:(0,i.jsxs)(`aside`,{className:o.drawer,role:`dialog`,"aria-label":u(`drawerTitle`),children:[(0,i.jsxs)(`header`,{className:o.drawerHead,children:[(0,i.jsxs)(`div`,{className:o.drawerTitle,children:[(0,i.jsx)(`h3`,{children:u(`drawerTitle`)}),(0,i.jsx)(`span`,{title:B.record.id,children:`#${B.record.id.slice(0,8)}…`})]}),(0,i.jsx)(`button`,{type:`button`,className:o.drawerClose,"aria-label":u(`drawerClose`),onClick:()=>{H(null)},children:(0,i.jsx)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 14 14`,fill:`none`,"aria-hidden":`true`,children:(0,i.jsx)(`path`,{d:`M2 2 L12 12 M12 2 L2 12`,stroke:`currentColor`,strokeWidth:`1.6`,strokeLinecap:`round`})})})]}),(0,i.jsx)(`div`,{className:o.drawerBody,children:B.kind===`review`?(0,i.jsx)(he,{t:u,recordId:B.record.id,scope:B.record.scope,project:X}):(0,i.jsx)(ge,{t:u,record:B.record,onClose:()=>{H(null)},onSaved:()=>{H(null),Z()},toast:a})})]})})]}),(0,i.jsxs)(`div`,{className:o.header,children:[(0,i.jsxs)(`div`,{className:o.headerActions,children:[(0,i.jsxs)(`div`,{className:`${o.segGroup} ${o.segScope}`,children:[(0,i.jsx)(`span`,{className:o.segIndicator,style:{left:`${String(ot.left)}px`,width:`${String(ot.width)}px`,opacity:ot.opacity}}),[`user`,`project`,`shared`].map(e=>(0,i.jsxs)(`button`,{type:`button`,ref:t=>{at.current.set(e,t)},className:d===e?`${o.segItem} ${o.on}`:o.segItem,onClick:()=>{f(e),I(0),H(null),$()},children:[(0,i.jsx)(O,{name:e===`user`?`user`:e===`project`?`project`:`shared`,className:o.scopeIcon}),u(N[e])]},e))]}),d===`project`&&(0,i.jsxs)(`select`,{className:`${o.input} ${o.wsSelect}`,value:Y,"aria-label":u(`projectSwitch`),title:u(`projectSwitch`),onChange:e=>{_e(e.target.value),I(0),H(null),$()},children:[(0,i.jsx)(`option`,{value:`follow`,children:u(`projectFollow`)}),(be?.items??[]).map(e=>(0,i.jsx)(`option`,{value:e.dbName,children:de(u,e)},e.dbName)),we&&(0,i.jsx)(`option`,{value:Y,children:`${le(Y)} · ${u(`projectUnregistered`)}`})]})]}),(0,i.jsxs)(`div`,{className:o.headerActions,children:[S>0&&(0,i.jsxs)(`button`,{type:`button`,className:o.dueBadge,title:u(`dueBadgeLabel`,{n:S}),"aria-label":u(`dueBadgeLabel`,{n:S}),onClick:ze,children:[(0,i.jsx)(O,{name:`clock`,className:o.dueIcon}),S]}),(0,i.jsx)(`button`,{type:`button`,className:o.button,title:u(`refresh`),"aria-label":u(`refresh`),onClick:()=>{Z(),Pe()},children:(0,i.jsx)(O,{name:`refresh`,className:o.brandIcon})}),(0,i.jsxs)(`div`,{className:o.langSeg,role:`group`,"aria-label":`Language`,children:[(0,i.jsx)(`button`,{type:`button`,className:s===`zh`?`${o.langOpt} ${o.langOn}`:o.langOpt,onClick:()=>{c(`zh`)},children:`中`}),(0,i.jsx)(`button`,{type:`button`,className:s===`en`?`${o.langOpt} ${o.langOn}`:o.langOpt,onClick:()=>{c(`en`)},children:`EN`})]}),(0,i.jsx)(Ge,{t:u,scope:d,project:X})]})]}),(0,i.jsxs)(`div`,{className:o.tabs,role:`tablist`,children:[(0,i.jsxs)(`button`,{type:`button`,role:`tab`,className:q===`today`?`${o.tabItem} ${o.on}`:o.tabItem,"aria-selected":q===`today`,onClick:()=>{J(`today`)},children:[(0,i.jsx)(O,{name:`today`,className:o.tabIcon}),u(`tabToday`)]}),(0,i.jsxs)(`button`,{type:`button`,role:`tab`,className:q===`library`?`${o.tabItem} ${o.on}`:o.tabItem,"aria-selected":q===`library`,onClick:()=>{J(`library`)},children:[(0,i.jsx)(O,{name:`library`,className:o.tabIcon}),u(`tabLibrary`)]}),(0,i.jsxs)(`button`,{type:`button`,role:`tab`,className:q===`corridor`?`${o.tabItem} ${o.on}`:o.tabItem,"aria-selected":q===`corridor`,onClick:()=>{J(`corridor`)},children:[(0,i.jsx)(O,{name:`corridor`,className:o.tabIcon}),u(`tabCorridor`)]}),(0,i.jsxs)(`button`,{type:`button`,role:`tab`,className:q===`episodes`?`${o.tabItem} ${o.on}`:o.tabItem,"aria-selected":q===`episodes`,onClick:()=>{J(`episodes`)},children:[(0,i.jsx)(O,{name:`episodes`,className:o.tabIcon}),u(`tabEpisodes`)]}),(0,i.jsxs)(`button`,{type:`button`,role:`tab`,className:q===`entities`?`${o.tabItem} ${o.on}`:o.tabItem,"aria-selected":q===`entities`,onClick:()=>{J(`entities`)},children:[(0,i.jsx)(O,{name:`entities`,className:o.tabIcon}),u(`tabEntities`)]}),(0,i.jsxs)(`button`,{type:`button`,role:`tab`,className:q===`beliefs`?`${o.tabItem} ${o.on}`:o.tabItem,"aria-selected":q===`beliefs`,onClick:()=>{J(`beliefs`)},children:[(0,i.jsx)(O,{name:`beliefs`,className:o.tabIcon}),u(`tabBeliefs`)]}),(0,i.jsxs)(`button`,{type:`button`,role:`tab`,className:q===`log`?`${o.tabItem} ${o.on}`:o.tabItem,"aria-selected":q===`log`,onClick:()=>{J(`log`)},children:[(0,i.jsx)(O,{name:`log`,className:o.tabIcon}),u(`tabLog`)]}),(0,i.jsxs)(`button`,{type:`button`,role:`tab`,className:q===`backfill`?`${o.tabItem} ${o.on}`:o.tabItem,"aria-selected":q===`backfill`,onClick:()=>{J(`backfill`)},children:[(0,i.jsx)(O,{name:`backfill`,className:o.tabIcon}),u(`tabBackfill`)]}),(0,i.jsxs)(`button`,{type:`button`,role:`tab`,className:q===`jev`?`${o.tabItem} ${o.on}`:o.tabItem,"aria-selected":q===`jev`,onClick:()=>{J(`jev`)},children:[(0,i.jsx)(O,{name:`jev`,className:o.tabIcon}),u(`tabJev`)]})]}),q===`library`&&(0,i.jsxs)(`div`,{className:o.tabPanel,children:[(0,i.jsx)(`div`,{className:o.sectionHead,children:(0,i.jsx)(`h4`,{className:o.sectionTitle,children:u(`tabLibrary`)})}),(0,i.jsxs)(`div`,{className:o.toolbarRow,children:[(0,i.jsx)(`input`,{className:`${o.input} ${o.search}`,placeholder:u(`searchPlaceholder`),value:_,onChange:e=>{v(e.target.value.trim()),I(0),H(null),$()}}),(0,i.jsx)(`div`,{className:o.segGroup,children:[[`all`,u(`allStatuses`)],[`active`,u(`statusActive`)],[`archived`,u(`statusArchived`)],[`forgotten`,u(`statusForgotten`)]].map(([e,t])=>(0,i.jsx)(`button`,{type:`button`,className:p===e?`${o.segItem} ${o.on}`:o.segItem,onClick:()=>{m(e),I(0),H(null),$()},children:t},e))}),(0,i.jsx)(`div`,{className:o.segGroup,children:(0,i.jsx)(`button`,{type:`button`,"aria-pressed":k,className:k?`${o.segItem} ${o.on}`:o.segItem,onClick:()=>{P(!k),I(0),H(null),$()},children:u(`filterDueToday`)})}),(0,i.jsx)(`div`,{className:o.segGroup,children:[[`time`,u(`sortTime`)],[`tour`,u(`sortTour`)]].map(([e,t])=>(0,i.jsx)(`button`,{type:`button`,className:y===e?`${o.segItem} ${o.on}`:o.segItem,onClick:()=>{x(e),I(0),H(null),$()},children:t},e))})]}),(0,i.jsx)(`div`,{className:o.chipRow,children:[[`all`,u(`allKinds`)],...j.map(e=>[e,L(u,e)])].map(([e,t])=>(0,i.jsx)(`button`,{type:`button`,"aria-pressed":h===e,className:h===e?`${o.chip} ${o.chipOn}`:o.chip,onClick:()=>{g(e),I(0),H(null),$()},children:t},e))}),W.size>0&&(0,i.jsxs)(`div`,{className:o.batchBar,children:[(0,i.jsx)(`span`,{children:u(`selectedCount`,{n:W.size})}),(0,i.jsx)(`button`,{type:`button`,className:o.button,onClick:et,children:u(Qe?`deselectAll`:`selectAll`)}),(0,i.jsx)(`button`,{type:`button`,className:o.button,disabled:Ze===0,onClick:()=>tt(`restore`),children:u(`batchRestore`,{n:Ze})}),(0,i.jsx)(`button`,{type:`button`,className:ue?`${o.button} ${o.danger}`:o.button,disabled:Xe===0,onClick:nt,children:u(ue?`batchForgetConfirm`:`batchForget`,{n:Xe})}),(0,i.jsx)(`button`,{type:`button`,className:o.button,onClick:$,children:u(`clearSelection`)})]}),z!==null&&(0,i.jsxs)(`div`,{className:o.empty,children:[(0,i.jsx)(`b`,{children:u(`loadFailed`,{msg:z})}),(0,i.jsx)(`span`,{children:u(`emptyHint`)})]}),z===null&&R===null&&(0,i.jsx)(`div`,{className:o.skeletonList,children:[0,1,2,3].map(e=>(0,i.jsxs)(`div`,{className:o.skeleton,style:{animationDelay:`${String(e*60)}ms`},children:[(0,i.jsx)(`i`,{}),(0,i.jsx)(`i`,{}),(0,i.jsx)(`i`,{})]},e))}),z===null&&R!==null&&Q.length===0&&(0,i.jsxs)(`div`,{className:o.empty,children:[(0,i.jsx)(`b`,{children:u(`empty`)}),(0,i.jsx)(`span`,{children:u(`emptyHint`)})]}),Q.length>0&&(0,i.jsx)(`div`,{className:o.itemList,children:Q.map((e,t)=>(0,i.jsxs)(`div`,{className:W.has(e.id)?`${o.item} ${o.selected}`:o.item,style:{animationDelay:`${String(Math.min(t,12)*36)}ms`},children:[(0,i.jsx)(`input`,{type:`checkbox`,className:o.itemCheck,checked:W.has(e.id),"aria-label":e.content.slice(0,24),onChange:()=>$e(e.id)}),(0,i.jsxs)(`div`,{className:o.itemBody,children:[(0,i.jsxs)(`div`,{className:o.itemTags,children:[(0,i.jsx)(`span`,{className:`${o.pill} ${o[`status${e.status.charAt(0).toUpperCase()}${e.status.slice(1)}`]??``}`,children:u(M[e.status])}),(0,i.jsx)(`span`,{className:te(e.kind),children:L(u,e.kind)}),e.slot!==void 0&&(0,i.jsxs)(`span`,{className:o.pill,children:[e.slot.room,`#`,e.slot.index]}),e.content.includes(`[REDACTED:`)&&(0,i.jsx)(`span`,{className:`${o.pill} ${o.redacted}`,children:u(`tagRedacted`)}),e.outcome!==void 0&&(0,i.jsx)(`span`,{className:`${o.pill} ${e.outcome===`success`?o.outcomeSuccess:o.outcomeFailure}`,children:e.outcome===`success`?u(`tagOutcomeSuccess`):u(`tagOutcomeFailure`)}),(0,i.jsxs)(`span`,{className:o.itemStamp,title:K(e.createdAt),children:[u(N[e.scope]),` · `,pe(u,e.createdAt)]})]}),(0,i.jsx)(`div`,{className:o.content,children:e.content}),(0,i.jsxs)(`div`,{className:o.itemMeta,children:[(0,i.jsxs)(`span`,{children:[(0,i.jsx)(`b`,{children:u(`importance`)}),` `,e.importance.toFixed(2)]}),(0,i.jsxs)(`span`,{children:[(0,i.jsx)(`b`,{children:u(`confidence`)}),` `,e.confidence.toFixed(2)]}),(0,i.jsx)(`span`,{children:u(`accessCount`,{n:e.accessCount})}),(0,i.jsx)(`span`,{children:re(u,e)})]})]}),(0,i.jsxs)(`div`,{className:o.itemOps,children:[(0,i.jsx)(`button`,{type:`button`,className:o.button,onClick:()=>{qe(`review`,e)},children:u(`detail`)}),(0,i.jsx)(`button`,{type:`button`,className:o.button,onClick:()=>{qe(`edit`,e)},children:u(`edit`)}),e.status===`active`?(0,i.jsx)(`button`,{type:`button`,className:o.button,onClick:()=>{Ke(`forget`,e)},children:u(`forget`)}):(0,i.jsx)(`button`,{type:`button`,className:o.button,onClick:()=>{Ke(`restore`,e)},children:u(`restore`)})]})]},e.id))}),(0,i.jsxs)(`div`,{className:o.pager,children:[(0,i.jsx)(`button`,{type:`button`,className:o.button,disabled:F===0,"aria-label":u(`prevPage`),onClick:()=>{I(Math.max(0,F-20)),H(null),$()},children:`‹`}),(0,i.jsx)(`span`,{children:u(`pagerInfo`,{page:rt,pages:it,total:R?.total??0})}),(0,i.jsx)(`button`,{type:`button`,className:o.button,disabled:R===null||F+20>=R.total,"aria-label":u(`nextPage`),onClick:()=>{I(F+20),H(null),$()},children:`›`})]})]}),q===`today`&&(0,i.jsxs)(`div`,{className:o.tabPanel,children:[(0,i.jsx)(Re,{t:u,overview:je,dueCount:S}),(0,i.jsxs)(`div`,{className:o.layout,children:[(0,i.jsx)(`div`,{className:o.mainCol,children:(0,i.jsxs)(`section`,{className:o.section,children:[(0,i.jsx)(`div`,{className:o.sectionHead,children:(0,i.jsx)(`h4`,{className:o.sectionTitle,children:u(`tourProposalTitle`)})}),(0,i.jsx)(`div`,{className:o.panelCard,children:(0,i.jsx)(De,{t:u,scope:d,project:X,onSelect:Be})})]})}),(0,i.jsxs)(`aside`,{className:o.sideCol,children:[(0,i.jsxs)(`section`,{className:o.section,children:[(0,i.jsx)(`div`,{className:o.sectionHead,children:(0,i.jsx)(`h4`,{className:o.sectionTitle,children:u(`profileTitle`)})}),(0,i.jsx)(`div`,{className:o.panelCard,children:(0,i.jsx)(Te,{t:u,scope:d,project:X})})]}),(0,i.jsxs)(`section`,{className:o.section,children:[(0,i.jsxs)(`div`,{className:o.sectionHead,children:[(0,i.jsx)(`h4`,{className:o.sectionTitle,children:u(`roomsTitle`)}),(0,i.jsx)(`span`,{className:o.sectionHint,children:u(`roomsHint`)})]}),(0,i.jsx)(`div`,{className:o.panelCard,children:(0,i.jsx)(Ie,{t:u,byKind:je.byKind})})]}),(0,i.jsxs)(`section`,{className:o.section,children:[(0,i.jsx)(`div`,{className:o.sectionHead,children:(0,i.jsx)(`h4`,{className:o.sectionTitle,children:u(`refurbTitle`)})}),(0,i.jsx)(`div`,{className:o.panelCard,children:(0,i.jsx)(Oe,{t:u,scope:d,project:X,onSelect:Be,onAfterAction:Z,toast:a})})]})]})]})]}),q===`corridor`&&(0,i.jsx)(`div`,{className:o.tabPanel,children:(0,i.jsxs)(`div`,{className:o.mainCol,children:[(0,i.jsxs)(`section`,{className:o.section,children:[(0,i.jsx)(`div`,{className:o.sectionHead,children:(0,i.jsx)(`h4`,{className:o.sectionTitle,children:u(`sectionCorridor`)})}),(0,i.jsx)(`div`,{className:o.panelCard,children:(0,i.jsx)(ke,{t:u,scope:d,project:X,onSelect:Be})})]}),(0,i.jsxs)(`section`,{className:o.section,children:[(0,i.jsxs)(`div`,{className:o.sectionHead,children:[(0,i.jsx)(`h4`,{className:o.sectionTitle,children:u(`benchTitle`)}),(0,i.jsx)(`span`,{className:o.sectionHint,children:u(`benchNote`)})]}),(0,i.jsx)(`div`,{className:o.panelCard,children:(0,i.jsx)(ve,{t:u,scope:d})})]})]})}),q===`episodes`&&(0,i.jsx)(`div`,{className:o.tabPanel,children:(0,i.jsxs)(`section`,{className:o.section,children:[(0,i.jsxs)(`div`,{className:o.sectionHead,children:[(0,i.jsx)(`h4`,{className:o.sectionTitle,children:u(`tabEpisodes`)}),(0,i.jsx)(`span`,{className:o.sectionHint,children:u(`episodeHint`)})]}),(0,i.jsx)(Ae,{t:u,scope:d,project:X,reloadTick:U})]})}),q===`entities`&&(0,i.jsx)(`div`,{className:o.tabPanel,children:(0,i.jsxs)(`section`,{className:o.section,children:[(0,i.jsxs)(`div`,{className:o.sectionHead,children:[(0,i.jsx)(`h4`,{className:o.sectionTitle,children:u(`tabEntities`)}),(0,i.jsx)(`span`,{className:o.sectionHint,children:u(`entityHint`)})]}),(0,i.jsx)(Ne,{t:u,scope:d,project:X,reloadTick:U})]})}),q===`beliefs`&&(0,i.jsx)(`div`,{className:o.tabPanel,children:(0,i.jsxs)(`section`,{className:o.section,children:[(0,i.jsxs)(`div`,{className:o.sectionHead,children:[(0,i.jsx)(`h4`,{className:o.sectionTitle,children:u(`tabBeliefs`)}),(0,i.jsx)(`span`,{className:o.sectionHint,children:u(`beliefHint`)})]}),(0,i.jsx)(Fe,{t:u,scope:d,project:X,reloadTick:U})]})}),q===`log`&&(0,i.jsx)(`div`,{className:o.tabPanel,children:(0,i.jsx)(Ee,{t:u,telemetry:je.telemetry,project:X})}),q===`backfill`&&(0,i.jsx)(`div`,{className:o.tabPanel,children:(0,i.jsxs)(`section`,{className:o.section,children:[(0,i.jsx)(`div`,{className:o.sectionHead,children:(0,i.jsx)(`h4`,{className:o.sectionTitle,children:u(`backfillRulesTitle`)})}),(0,i.jsx)(`div`,{className:o.panelCard,children:(0,i.jsx)(Ve,{t:u,toast:a})})]})}),q===`jev`&&(0,i.jsxs)(`div`,{className:o.tabPanel,children:[(0,i.jsxs)(`section`,{className:o.section,children:[(0,i.jsx)(`div`,{className:o.sectionHead,children:(0,i.jsx)(`h4`,{className:o.sectionTitle,children:u(`tabJev`)})}),(0,i.jsx)(`div`,{className:o.panelCard,children:(0,i.jsx)(He,{t:u,toast:a})})]}),(0,i.jsx)(`section`,{className:o.section,children:(0,i.jsx)(`div`,{className:o.panelCard,children:(0,i.jsx)(We,{t:u,toast:a})})})]}),a.viewport]})}function qe(e){return function(t){return(0,i.jsx)(Ke,{...t,workspaces:e.workspaces(),sessions:e.sessions()})}}let Je=[`slots`,`locale`];function Q(e){e.effect(()=>e.locale.register(s,{zh:l,en:u}),`dsh-engram: dictionaries`);let t=e.locale.bind(s),n=()=>e.get(`workspaces`),r=()=>e.get(`sessions`);e.slots.inject(`settings.section`,()=>e.slots.register({name:`settings.section`,id:`engram`,order:20,label:()=>t(`nav`),locale:s},qe({workspaces:n,sessions:r})))}return n.apply=Q,n.inject=Je,t.exports}});
4
4
  //# sourceMappingURL=client.js.map