@kenz1117/dsh-engram 0.4.6 → 0.4.7
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 +1 -1
- package/package.json +2 -2
package/lib/client.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
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=`.bWwFiW_panel{max-width:980px}.bWwFiW_toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:14px;display:flex}.bWwFiW_scopeTabs{border-bottom:1px solid var(--dsw-alias-border-l2);align-items:flex-end;gap:18px;margin-right:auto;display:flex}.bWwFiW_scopeOn,.bWwFiW_scopeOff{color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:0;padding:7px 1px 9px;font-size:13px;line-height:20px;position:relative}.bWwFiW_scopeOn,.bWwFiW_scopeOff:hover{color:var(--dsw-alias-label-primary)}.bWwFiW_scopeOn:after{background:var(--dsw-alias-brand-primary);content:"";border-radius:2px 2px 0 0;height:2px;position:absolute;bottom:-1px;left:0;right:0}.bWwFiW_button{background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;border-radius:8px;padding:5px 12px;font-size:13px}.bWwFiW_button:hover{border-color:var(--dsw-alias-brand-primary)}.bWwFiW_button:disabled{opacity:.45;cursor:default}.bWwFiW_primary{background:var(--dsw-alias-button-primary-fill);border-color:var(--dsw-alias-button-primary-fill);color:var(--dsw-alias-label-primary-foreground)}.bWwFiW_cards{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin-bottom:14px;display:grid}.bWwFiW_card{background:var(--dsw-alias-bg-layer-1);border:1px solid var(--dsw-alias-border-l2);text-align:left;cursor:pointer;color:var(--dsw-alias-label-primary);font:inherit;border-radius:10px;padding:10px 14px}.bWwFiW_card b{font-size:20px;display:block}.bWwFiW_card span{color:var(--dsw-alias-label-secondary);font-size:12px}.bWwFiW_filters{flex-wrap:wrap;gap:8px;margin-bottom:14px;display:flex}.bWwFiW_input{background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);border:1px solid var(--dsw-alias-border-l2);border-radius:8px;padding:6px 10px;font-size:13px}.bWwFiW_filters .bWwFiW_input{flex:1;min-width:160px}.bWwFiW_item{background:var(--dsw-alias-bg-layer-1);border:1px solid var(--dsw-alias-border-l2);border-radius:10px;margin-bottom:10px;padding:12px 14px;transition:border-color .12s}.bWwFiW_itemSelected{border-color:var(--dsw-alias-brand-primary)}.bWwFiW_row1{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:6px;display:flex}.bWwFiW_badge{border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-fill-tsp-secondary);border-radius:99px;padding:1px 8px;font-size:11px}.bWwFiW_active{color:var(--dsw-alias-state-success-primary);border-color:var(--dsw-alias-state-success-primary)}.bWwFiW_archived{color:var(--dsw-alias-state-warn-primary);border-color:var(--dsw-alias-state-warn-primary)}.bWwFiW_forgotten{color:var(--dsw-alias-state-error-primary);border-color:var(--dsw-alias-state-error-primary)}.bWwFiW_content{white-space:pre-wrap;word-break:break-word;color:var(--dsw-alias-label-primary)}.bWwFiW_meta{color:var(--dsw-alias-label-secondary);flex-wrap:wrap;gap:14px;margin-top:6px;font-size:12px;display:flex}.bWwFiW_ops{gap:8px;margin-top:8px;display:flex}.bWwFiW_itemCheck{accent-color:var(--dsw-alias-brand-primary);cursor:pointer;flex:none;width:15px;height:15px;margin-top:2px}.bWwFiW_batchBar{background:var(--dsw-alias-bg-layer-1);border:1px solid var(--dsw-alias-border-l2);border-radius:10px;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;padding:8px 12px;display:flex}.bWwFiW_batchBar span{color:var(--dsw-alias-label-primary);margin-right:auto;font-size:13px}.bWwFiW_danger{background:var(--dsw-alias-state-error-primary);border-color:var(--dsw-alias-state-error-primary);color:var(--dsw-alias-label-primary-foreground)}.bWwFiW_pager{color:var(--dsw-alias-label-secondary);justify-content:center;align-items:center;gap:10px;margin-top:14px;display:flex}.bWwFiW_empty{text-align:center;color:var(--dsw-alias-label-secondary);padding:40px 0}.bWwFiW_expand{border-top:1px dashed var(--dsw-alias-border-l2);margin-top:10px;padding-top:10px}.bWwFiW_expandLoading{color:var(--dsw-alias-label-secondary);font-size:13px}.bWwFiW_editForm{flex-direction:column;display:flex}.bWwFiW_editForm .bWwFiW_input{box-sizing:border-box;width:100%}.bWwFiW_fieldLabel{color:var(--dsw-alias-label-secondary);margin:10px 0 4px;font-size:12px;display:block}.bWwFiW_modalFoot{justify-content:flex-end;gap:8px;margin-top:12px;display:flex}.bWwFiW_review{background:var(--dsw-alias-bg-base);border:1px solid var(--dsw-alias-border-l2);white-space:pre-wrap;max-height:320px;color:var(--dsw-alias-label-primary);border-radius:8px;margin:0;padding:10px;font-size:12px;overflow:auto}`,document.head.appendChild(e)}var o={
|
|
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=`.bWwFiW_panel{max-width:980px}.bWwFiW_toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:14px;display:flex}.bWwFiW_scopeTabs{border-bottom:1px solid var(--dsw-alias-border-l2);align-items:flex-end;gap:18px;margin-right:auto;display:flex}.bWwFiW_scopeOn,.bWwFiW_scopeOff{color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:0;padding:7px 1px 9px;font-size:13px;line-height:20px;position:relative}.bWwFiW_scopeOn,.bWwFiW_scopeOff:hover{color:var(--dsw-alias-label-primary)}.bWwFiW_scopeOn:after{background:var(--dsw-alias-brand-primary);content:"";border-radius:2px 2px 0 0;height:2px;position:absolute;bottom:-1px;left:0;right:0}.bWwFiW_button{background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;border-radius:8px;padding:5px 12px;font-size:13px}.bWwFiW_button:hover{border-color:var(--dsw-alias-brand-primary)}.bWwFiW_button:disabled{opacity:.45;cursor:default}.bWwFiW_primary{background:var(--dsw-alias-button-primary-fill);border-color:var(--dsw-alias-button-primary-fill);color:var(--dsw-alias-label-primary-foreground)}.bWwFiW_cards{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin-bottom:14px;display:grid}.bWwFiW_card{background:var(--dsw-alias-bg-layer-1);border:1px solid var(--dsw-alias-border-l2);text-align:left;cursor:pointer;color:var(--dsw-alias-label-primary);font:inherit;border-radius:10px;padding:10px 14px}.bWwFiW_card b{font-size:20px;display:block}.bWwFiW_card span{color:var(--dsw-alias-label-secondary);font-size:12px}.bWwFiW_filters{flex-wrap:wrap;gap:8px;margin-bottom:14px;display:flex}.bWwFiW_input{background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);border:1px solid var(--dsw-alias-border-l2);border-radius:8px;padding:6px 10px;font-size:13px}.bWwFiW_filters .bWwFiW_input{flex:1;min-width:160px}.bWwFiW_item{background:var(--dsw-alias-bg-layer-1);border:1px solid var(--dsw-alias-border-l2);border-radius:10px;margin-bottom:10px;padding:12px 14px;transition:border-color .12s}.bWwFiW_itemSelected{border-color:var(--dsw-alias-brand-primary)}.bWwFiW_row1{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:6px;display:flex}.bWwFiW_badge{border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-fill-tsp-secondary);border-radius:99px;padding:1px 8px;font-size:11px}.bWwFiW_active{color:var(--dsw-alias-state-success-primary);border-color:var(--dsw-alias-state-success-primary)}.bWwFiW_archived{color:var(--dsw-alias-state-warn-primary);border-color:var(--dsw-alias-state-warn-primary)}.bWwFiW_forgotten{color:var(--dsw-alias-state-error-primary);border-color:var(--dsw-alias-state-error-primary)}.bWwFiW_content{white-space:pre-wrap;word-break:break-word;color:var(--dsw-alias-label-primary)}.bWwFiW_meta{color:var(--dsw-alias-label-secondary);flex-wrap:wrap;gap:14px;margin-top:6px;font-size:12px;display:flex}.bWwFiW_ops{gap:8px;margin-top:8px;display:flex}.bWwFiW_itemCheck{accent-color:var(--dsw-alias-brand-primary);cursor:pointer;flex:none;width:15px;height:15px;margin-top:2px}.bWwFiW_batchBar{background:var(--dsw-alias-bg-layer-1);border:1px solid var(--dsw-alias-border-l2);border-radius:10px;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;padding:8px 12px;display:flex}.bWwFiW_batchBar span{color:var(--dsw-alias-label-primary);margin-right:auto;font-size:13px}.bWwFiW_danger{background:var(--dsw-alias-state-error-primary);border-color:var(--dsw-alias-state-error-primary);color:var(--dsw-alias-label-primary-foreground)}.bWwFiW_pager{color:var(--dsw-alias-label-secondary);justify-content:center;align-items:center;gap:10px;margin-top:14px;display:flex}.bWwFiW_empty{text-align:center;color:var(--dsw-alias-label-secondary);padding:40px 0}.bWwFiW_expand{border-top:1px dashed var(--dsw-alias-border-l2);margin-top:10px;padding-top:10px}.bWwFiW_expandLoading{color:var(--dsw-alias-label-secondary);font-size:13px}.bWwFiW_editForm{flex-direction:column;display:flex}.bWwFiW_editForm .bWwFiW_input{box-sizing:border-box;width:100%}.bWwFiW_fieldLabel{color:var(--dsw-alias-label-secondary);margin:10px 0 4px;font-size:12px;display:block}.bWwFiW_modalFoot{justify-content:flex-end;gap:8px;margin-top:12px;display:flex}.bWwFiW_review{background:var(--dsw-alias-bg-base);border:1px solid var(--dsw-alias-border-l2);white-space:pre-wrap;max-height:320px;color:var(--dsw-alias-label-primary);border-radius:8px;margin:0;padding:10px;font-size:12px;overflow:auto}`,document.head.appendChild(e)}var o={cards:`bWwFiW_cards`,ops:`bWwFiW_ops`,scopeTabs:`bWwFiW_scopeTabs`,button:`bWwFiW_button`,modalFoot:`bWwFiW_modalFoot`,expandLoading:`bWwFiW_expandLoading`,editForm:`bWwFiW_editForm`,active:`bWwFiW_active`,expand:`bWwFiW_expand`,toolbar:`bWwFiW_toolbar`,scopeOn:`bWwFiW_scopeOn`,input:`bWwFiW_input`,meta:`bWwFiW_meta`,pager:`bWwFiW_pager`,fieldLabel:`bWwFiW_fieldLabel`,primary:`bWwFiW_primary`,itemCheck:`bWwFiW_itemCheck`,forgotten:`bWwFiW_forgotten`,panel:`bWwFiW_panel`,batchBar:`bWwFiW_batchBar`,empty:`bWwFiW_empty`,review:`bWwFiW_review`,card:`bWwFiW_card`,content:`bWwFiW_content`,item:`bWwFiW_item`,scopeOff:`bWwFiW_scopeOff`,row1:`bWwFiW_row1`,danger:`bWwFiW_danger`,filters:`bWwFiW_filters`,archived:`bWwFiW_archived`,itemSelected:`bWwFiW_itemSelected`,badge:`bWwFiW_badge`};let s=[`fact`,`preference`,`decision`,`episode`,`skill`],c={active:`statusActive`,archived:`statusArchived`,forgotten:`statusForgotten`},l={fact:`kindFact`,preference:`kindPreference`,decision:`kindDecision`,episode:`kindEpisode`,skill:`kindSkill`},u={user:`scopeUser`,project:`scopeProject`},d={write:`opWrite`,update:`opUpdate`,forget:`opForget`,restore:`opRestore`,decay:`opDecay`,superseded:`opSuperseded`,"ingest-request":`opIngestRequest`,"distill-request":`opDistillRequest`},f={supersededBy:`relSupersededBy`,supersedes:`relSupersedes`,contradicts:`relContradicts`,related:`relRelated`},p={kind:`labelKind`,scope:`labelScope`,status:`labelStatus`};function m(e,t){let n=l[t];return n===void 0?t:e(n)}function h(e,t){let n=d[t];return n===void 0?t:e(n)}function g(e,t,n){if(n===null)return``;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=p[t];return r===void 0?`${t}=${String(n)}`:t===`kind`&&typeof n==`string`?`${e(r)}=${m(e,n)}`:t===`scope`&&(n===`user`||n===`project`)?`${e(r)}=${e(u[n])}`:`${e(r)}=${String(n)}`}).join(` · `)}catch{return` ${n}`}}function _(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})}`})}async function v(e,t){let n=await fetch(`/api/engram/${e}`,t),r=await n.json();if(!n.ok)throw Error(r.error??`HTTP ${String(n.status)}`);return r}function y(e){return new Date(e).toLocaleString(navigator.language||`zh-CN`,{hour12:!1})}function b({t:e,recordId:t,scope:n}){let[a,s]=(0,r.useState)(null);return(0,r.useEffect)(()=>{let r=!1;return v(`review?scope=${n}&id=${encodeURIComponent(t)}`).then(t=>{if(r)return;let n=t.record,i=[`${e(`labelContent`)}: ${n.content}`,`${e(`detailAttributes`)}: ${e(`labelKind`)}=${m(e,n.kind)}, ${e(`labelStatus`)}=${e(c[n.status])}, ${e(`importance`)}=${n.importance.toFixed(2)}, ${e(`confidence`)}=${n.confidence.toFixed(2)}, ${e(`accessCount`,{n:n.accessCount})}`,`${e(`detailSource`)}: ${_(e,n)}`];for(let n of[`supersededBy`,`supersedes`,`contradicts`,`related`]){let r=t[n],a=f[n];r!==void 0&&r.length>0&&i.push(`${a===void 0?n:e(a)}: ${r.join(`, `)}`)}let a=t.operations;a!==void 0&&a.length>0&&(i.push(`${e(`detailOperations`)}:`),a.forEach(t=>i.push(` ${y(t.at)} ${h(e,t.op)}${g(e,t.op,t.detail)}`))),s(i.join(`
|
|
2
2
|
`))}).catch(t=>{r||s(e(`loadFailed`,{msg:t.message}))}),()=>{r=!0}},[t,n,e]),a===null?(0,i.jsx)(`div`,{className:o.expandLoading,children:e(`loading`)}):(0,i.jsx)(`pre`,{className:o.review,children:a})}function x({t:e,record:t,onClose:n,onSaved:a}){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.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.jsx)(`label`,{className:o.fieldLabel,children:e(`labelKind`)}),(0,i.jsx)(`select`,{className:o.input,value:u,onChange:e=>d(e.target.value),children:s.map(t=>(0,i.jsx)(`option`,{value:t,children:m(e,t)},t))}),(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=>{alert(e.message)})},children:e(`saveWithHint`)})]})]})}function S({t:e}){let[t,n]=(0,r.useState)(`user`),[a,l]=(0,r.useState)(`all`),[d,f]=(0,r.useState)(`all`),[p,h]=(0,r.useState)(``),[g,S]=(0,r.useState)(0),[C,w]=(0,r.useState)(null),[T,E]=(0,r.useState)(null),[D,O]=(0,r.useState)(null),[k,A]=(0,r.useState)(null),[j,M]=(0,r.useState)(0),[N,P]=(0,r.useState)(new Set),[F,I]=(0,r.useState)(!1),L=(0,r.useCallback)(()=>{M(e=>e+1)},[]);(0,r.useEffect)(()=>{let e=!1,n=new URLSearchParams({scope:t,status:a,kind:d,limit:`20`,offset:String(g)});return p!==``&&n.set(`q`,p),v(`list?${n.toString()}`).then(t=>{e||(w(t),O(null))}).catch(t=>{e||O(t.message)}),v(`stats`).then(t=>{e||E(t.parts)}).catch(()=>{}),()=>{e=!0}},[t,a,d,p,g,j]);let R=(e,t)=>{v(e,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({id:t.id,scope:t.scope})}).then(L).catch(e=>{alert(e.message)})},z=(e,t)=>{A(n=>n!==null&&n.kind===e&&n.record.id===t.id?null:{kind:e,record:t})},B=C?.records??[],V=B.filter(e=>N.has(e.id)),H=V.filter(e=>e.status===`active`).length,U=V.length-H,W=B.length>0&&B.every(e=>N.has(e.id)),G=e=>{P(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},K=()=>{P(new Set),I(!1)},q=()=>{P(e=>{let t=new Set(e);return W?B.forEach(e=>t.delete(e.id)):B.forEach(e=>t.add(e.id)),t})},J=e=>{let t=e===`forget`?V.filter(e=>e.status===`active`):V.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(()=>{K(),L()})},Y=()=>{if(F){J(`forget`);return}I(!0)},X=Math.floor(g/20)+1,Z=C===null?1:Math.max(1,Math.ceil(C.total/20));return(0,i.jsxs)(`div`,{className:o.panel,children:[(0,i.jsxs)(`div`,{className:o.toolbar,children:[(0,i.jsx)(`div`,{className:o.scopeTabs,children:[`user`,`project`].map(r=>(0,i.jsx)(`button`,{type:`button`,className:t===r?o.scopeOn:o.scopeOff,onClick:()=>{n(r),S(0),A(null),K()},children:e(u[r])},r))}),(0,i.jsx)(`button`,{type:`button`,className:o.button,onClick:L,children:e(`refresh`)}),(0,i.jsx)(`button`,{type:`button`,className:o.button,onClick:()=>{location.href=`/api/engram/export?scope=${t}&format=markdown`},children:e(`exportMd`)}),(0,i.jsx)(`button`,{type:`button`,className:o.button,onClick:()=>{location.href=`/api/engram/export?scope=${t}&format=json`},children:e(`exportJson`)})]}),(0,i.jsx)(`div`,{className:o.cards,children:(T??[]).map(r=>(0,i.jsxs)(`button`,{type:`button`,className:o.card,style:r.scope===t?{borderColor:`var(--dsw-alias-brand-primary)`}:void 0,onClick:()=>{n(r.scope),S(0),K()},children:[(0,i.jsx)(`b`,{children:r.stats.total}),(0,i.jsx)(`span`,{children:`${e(u[r.scope])} · ${e(`cardActive`,{n:r.stats.active})} · ${e(`signalRatio`,{n:Math.round(r.stats.signalRatio*100)})}`})]},r.scope))}),(0,i.jsxs)(`div`,{className:o.filters,children:[(0,i.jsxs)(`select`,{className:o.input,value:a,onChange:e=>{l(e.target.value),S(0),A(null),K()},children:[(0,i.jsx)(`option`,{value:`all`,children:e(`allStatuses`)}),(0,i.jsx)(`option`,{value:`active`,children:e(`statusActive`)}),(0,i.jsx)(`option`,{value:`archived`,children:e(`statusArchived`)}),(0,i.jsx)(`option`,{value:`forgotten`,children:e(`statusForgotten`)})]}),(0,i.jsxs)(`select`,{className:o.input,value:d,onChange:e=>{f(e.target.value),S(0),A(null),K()},children:[(0,i.jsx)(`option`,{value:`all`,children:e(`allKinds`)}),s.map(t=>(0,i.jsx)(`option`,{value:t,children:m(e,t)},t))]}),(0,i.jsx)(`input`,{className:o.input,placeholder:e(`searchPlaceholder`),value:p,onChange:e=>{h(e.target.value.trim()),S(0),A(null),K()}})]}),N.size>0&&(0,i.jsxs)(`div`,{className:o.batchBar,children:[(0,i.jsx)(`span`,{children:e(`selectedCount`,{n:N.size})}),(0,i.jsx)(`button`,{type:`button`,className:o.button,onClick:q,children:e(W?`deselectAll`:`selectAll`)}),(0,i.jsx)(`button`,{type:`button`,className:o.button,disabled:U===0,onClick:()=>J(`restore`),children:e(`batchRestore`,{n:U})}),(0,i.jsx)(`button`,{type:`button`,className:F?`${o.button} ${o.danger}`:o.button,disabled:H===0,onClick:Y,children:e(F?`batchForgetConfirm`:`batchForget`,{n:H})}),(0,i.jsx)(`button`,{type:`button`,className:o.button,onClick:K,children:e(`clearSelection`)})]}),D!==null&&(0,i.jsx)(`div`,{className:o.empty,children:e(`loadFailed`,{msg:D})}),D===null&&C!==null&&C.records.length===0&&(0,i.jsx)(`div`,{className:o.empty,children:e(`empty`)}),(C?.records??[]).map(t=>(0,i.jsxs)(`div`,{className:N.has(t.id)?`${o.item} ${o.itemSelected}`:o.item,children:[(0,i.jsxs)(`div`,{className:o.row1,children:[(0,i.jsx)(`input`,{type:`checkbox`,className:o.itemCheck,checked:N.has(t.id),"aria-label":t.content.slice(0,24),onChange:()=>G(t.id)}),(0,i.jsx)(`span`,{className:`${o.badge} ${o[t.status]}`,children:e(c[t.status])}),(0,i.jsx)(`span`,{className:o.badge,children:m(e,t.kind)}),(0,i.jsx)(`span`,{className:o.badge,children:e(u[t.scope])})]}),(0,i.jsx)(`div`,{className:o.content,children:t.content}),(0,i.jsxs)(`div`,{className:o.meta,children:[(0,i.jsx)(`span`,{children:`${e(`importance`)} ${t.importance.toFixed(2)}`}),(0,i.jsx)(`span`,{children:`${e(`confidence`)} ${t.confidence.toFixed(2)}`}),(0,i.jsx)(`span`,{children:e(`accessCount`,{n:t.accessCount})}),(0,i.jsx)(`span`,{children:_(e,t)}),(0,i.jsx)(`span`,{children:y(t.createdAt)})]}),(0,i.jsxs)(`div`,{className:o.ops,children:[(0,i.jsx)(`button`,{type:`button`,className:o.button,onClick:()=>{z(`review`,t)},children:e(`detail`)}),(0,i.jsx)(`button`,{type:`button`,className:o.button,onClick:()=>{z(`edit`,t)},children:e(`edit`)}),t.status===`active`?(0,i.jsx)(`button`,{type:`button`,className:o.button,onClick:()=>{R(`forget`,t)},children:e(`forget`)}):(0,i.jsx)(`button`,{type:`button`,className:o.button,onClick:()=>{R(`restore`,t)},children:e(`restore`)})]}),k!==null&&k.record.id===t.id&&(0,i.jsx)(`div`,{className:o.expand,children:k.kind===`review`?(0,i.jsx)(b,{t:e,recordId:t.id,scope:t.scope}):(0,i.jsx)(x,{t:e,record:t,onClose:()=>{A(null)},onSaved:()=>{A(null),L()}})})]},t.id)),(0,i.jsxs)(`div`,{className:o.pager,children:[(0,i.jsx)(`button`,{type:`button`,className:o.button,disabled:g===0,onClick:()=>{S(Math.max(0,g-20)),A(null),K()},children:e(`prevPage`)}),(0,i.jsx)(`span`,{children:e(`pagerInfo`,{page:X,pages:Z,total:C?.total??0})}),(0,i.jsx)(`button`,{type:`button`,className:o.button,disabled:C===null||g+20>=C.total,onClick:()=>{S(g+20),A(null),K()},children:e(`nextPage`)})]})]})}let C=`engram`,w={nav:`记忆库`,scopeUser:`用户级`,scopeProject:`项目级`,refresh:`刷新`,exportMd:`导出 MD`,exportJson:`导出 JSON`,allStatuses:`全部状态`,allKinds:`全部种类`,searchPlaceholder:`按内容搜索…`,statusActive:`生效中`,statusArchived:`已归档`,statusForgotten:`已遗忘`,kindFact:`事实`,kindPreference:`偏好`,kindDecision:`决策`,kindEpisode:`事件`,kindSkill:`技能`,labelContent:`内容`,labelKind:`种类`,labelStatus:`状态`,labelScope:`作用域`,importance:`重要性`,confidence:`置信`,accessCount:`访问 {n} 次`,sourceExplicit:`显式保存`,sourceSession:`来源 {id}`,round:`第 {n} 轮`,cardActive:`生效 {n}`,signalRatio:`信噪比 {n}%`,detail:`详情`,edit:`编辑`,forget:`遗忘`,restore:`恢复`,empty:`没有符合条件的记忆`,loadFailed:`加载失败:{msg}`,loading:`加载中…`,pagerInfo:`第 {page} / {pages} 页 · 共 {total} 条`,prevPage:`上一页`,nextPage:`下一页`,cancel:`取消`,saveWithHint:`保存(旧条目归档)`,detailAttributes:`属性`,detailSource:`来源`,detailRelations:`关系`,detailOperations:`最近操作`,relSupersededBy:`被取代`,relSupersedes:`取代`,relContradicts:`矛盾`,relRelated:`关联`,opWrite:`写入`,opUpdate:`更新`,opForget:`遗忘`,opRestore:`恢复`,opDecay:`衰减归档`,opSuperseded:`被取代`,opIngestRequest:`摄取请求`,opDistillRequest:`蒸馏请求`,selectAll:`全选本页`,deselectAll:`取消全选`,selectedCount:`已选 {n} 条`,batchForget:`批量遗忘({n})`,batchForgetConfirm:`确认遗忘 {n} 条?`,batchRestore:`批量恢复({n})`,clearSelection:`取消选择`},T={nav:`Memory Library`,scopeUser:`User`,scopeProject:`Project`,refresh:`Refresh`,exportMd:`Export MD`,exportJson:`Export JSON`,allStatuses:`All statuses`,allKinds:`All kinds`,searchPlaceholder:`Search content…`,statusActive:`active`,statusArchived:`archived`,statusForgotten:`forgotten`,kindFact:`fact`,kindPreference:`preference`,kindDecision:`decision`,kindEpisode:`episode`,kindSkill:`skill`,labelContent:`Content`,labelKind:`Kind`,labelStatus:`Status`,labelScope:`Scope`,importance:`Importance`,confidence:`Confidence`,accessCount:`{n}× accessed`,sourceExplicit:`Explicitly saved`,sourceSession:`Source {id}`,round:`round {n}`,cardActive:`{n} active`,signalRatio:`signal {n}%`,detail:`Details`,edit:`Edit`,forget:`Forget`,restore:`Restore`,empty:`No matching memories`,loadFailed:`Failed to load: {msg}`,loading:`Loading…`,pagerInfo:`Page {page} / {pages} · {total} records`,prevPage:`Prev`,nextPage:`Next`,cancel:`Cancel`,saveWithHint:`Save (archives old entry)`,detailAttributes:`Attributes`,detailSource:`Source`,detailRelations:`Relations`,detailOperations:`Recent operations`,relSupersededBy:`Superseded by`,relSupersedes:`Supersedes`,relContradicts:`Contradicts`,relRelated:`Related`,opWrite:`write`,opUpdate:`update`,opForget:`forget`,opRestore:`restore`,opDecay:`decay`,opSuperseded:`superseded`,opIngestRequest:`ingest-request`,opDistillRequest:`distill-request`,selectAll:`Select all on page`,deselectAll:`Deselect all`,selectedCount:`{n} selected`,batchForget:`Forget selected ({n})`,batchForgetConfirm:`Forget {n} entries?`,batchRestore:`Restore selected ({n})`,clearSelection:`Clear selection`},E=[`slots`,`locale`];function D(e){e.effect(()=>e.locale.register(C,{zh:w,en:T}),`dsh-engram: dictionaries`);let t=e.locale.bind(C);e.slots.inject(`settings.section`,()=>e.slots.register({name:`settings.section`,id:`engram`,order:20,label:()=>t(`nav`),locale:C},S))}return n.apply=D,n.inject=E,t.exports}});
|
|
3
3
|
//# sourceMappingURL=client.js.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kenz1117/dsh-engram",
|
|
3
3
|
"description": "Cross-session long-term memory for DeepSeek Harness: dual-scope SQLite memory graph, hybrid retrieval, provenance audit, and a knowledge flywheel.",
|
|
4
|
-
"version": "0.4.
|
|
4
|
+
"version": "0.4.7",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
}
|
|
39
39
|
},
|
|
40
40
|
"scripts": {
|
|
41
|
-
"
|
|
41
|
+
"prepare": "node scripts/link-peers.mjs",
|
|
42
42
|
"bundle": "tsdown",
|
|
43
43
|
"watch": "tsdown --watch",
|
|
44
44
|
"test": "vitest run",
|