opencode-haimati 1.4.0 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -21,10 +21,10 @@ import{tool as $}from"@opencode-ai/plugin";import v from"path";import pt from"os
21
21
  // \u542F\u52A8\u65F6\u68C0\u67E5 npm registry \u662F\u5426\u6709\u65B0\u7248\u672C
22
22
  // "autoUpdate": true
23
23
  }
24
- `,"utf-8")}catch{}}function O(t){Ht();let n={},e=Q(mt());if(e){let a=X(e);n=F(n,a)}let r=Ut();if(r){let a=Q(r);if(a){let o=X(a);n=F(n,o)}}let i=Q(Gt(t));if(i){let a=X(i);n=F(n,a)}return n}function ht(t,n,e){return t.haimatiPath?R.resolve(n,t.haimatiPath):e}function S(t){let n=O(t),e=v.join(t,lt);return ht(n,t,e)}function E(t){return v.join(S(t),dt)}function et(t){return v.join(S(t),".lock")}function nt(t){return v.join(S(t),"\u4E66\u9875")}function it(t,n){let e=parseInt(n,10),r=Math.floor((e-1)/50)*50+1,i=r+50-1,a=`${String(r).padStart(3,"0")}-${String(i).padStart(3,"0")}`;return v.join(nt(t),a)}function U(t,n){let e=String(parseInt(n,10)).padStart(3,"0");return v.join(it(t,n),`${e}.md`)}function rt(){let t=pt.homedir();return v.join(t,".opencode-haimati","log")}function ot(){let t={level:gt,logRetentionDays:180},n=v.join(pt.homedir(),".config","opencode"),e=[v.join(n,"haimati.jsonc"),v.join(n,"haimati.json")].find(r=>B.existsSync(r));if(e)try{let r=B.readFileSync(e,"utf-8"),i=Z(r);if(i?.log)return{level:i.log.level||t.level,logRetentionDays:i.log.logRetentionDays??t.logRetentionDays}}catch{}return t}function M(t){return B.promises.mkdir(t,{recursive:!0}).then(()=>{})}function x(t){return B.promises.access(t).then(()=>!0).catch(()=>!1)}import xt from"fs";import{promisify as bt}from"util";import H from"fs";import at from"path";import{promisify as V}from"util";var zt=V(H.appendFile),Kt=V(H.readdir),Yt=V(H.unlink),Qt=V(H.stat),yt={debug:0,info:1,warn:2,error:3};function Xt(t){let n=t.getFullYear(),e=String(t.getMonth()+1).padStart(2,"0"),r=String(t.getDate()).padStart(2,"0");return`${n}-${e}-${r}`}function Zt(t){let n=t.getFullYear(),e=String(t.getMonth()+1).padStart(2,"0"),r=String(t.getDate()).padStart(2,"0"),i=String(t.getHours()).padStart(2,"0"),a=String(t.getMinutes()).padStart(2,"0"),o=String(t.getSeconds()).padStart(2,"0");return`${n}-${e}-${r} ${i}:${a}:${o}`}function te(){let t=Xt(new Date);return at.join(rt(),`${t}.log`)}async function ee(t,n){try{let e=at.dirname(t);await x(e)||await M(e),await zt(t,n+`
25
- `,"utf-8")}catch(e){console.error("[haimati] \u5199\u5165\u65E5\u5FD7\u6587\u4EF6\u5931\u8D25:",e)}}async function wt(){try{let t=ot(),n=rt();if(!await x(n))return;let e=await Kt(n),i=new Date().getTime()-t.logRetentionDays*24*60*60*1e3;for(let a of e){if(!a.match(/^\d{4}-\d{2}-\d{2}\.log$/))continue;let o=at.join(n,a);(await Qt(o)).mtime.getTime()<i&&await Yt(o)}}catch(t){console.error("[haimati] \u6E05\u7406\u5386\u53F2\u65E5\u5FD7\u5931\u8D25:",t)}}async function G(t,n,e){try{let r=ot();if(yt[t]<yt[r.level])return;let a=Zt(new Date),o=e?`[${e}] `:"",c=`[${a}] [${t.toUpperCase()}] ${o}${n}`,s=te();await ee(s,c),wt().catch(m=>{console.error("[haimati] \u6E05\u7406\u5386\u53F2\u65E5\u5FD7\u5931\u8D25:",m)})}catch(r){console.error("[haimati] \u65E5\u5FD7\u8BB0\u5F55\u5931\u8D25:",r)}}var f={debug(t,n){return G("debug",t,n)},info(t,n){return G("info",t,n)},warn(t,n){return G("warn",t,n)},error(t,n){return G("error",t,n)}};async function $t(){await wt()}var _t=bt(xt.readFile),ne=bt(xt.writeFile);function J(t){let n=0,e=0,r=t.length;for(;e<r;)if(t[e]==="\u2502"&&e+3<r&&t.slice(e+1,e+4)===" ")n++,e+=4;else if(t.slice(e,e+4)===" ")n++,e+=4;else{if((t[e]==="\u251C"||t[e]==="\u2514")&&e+3<r&&t.slice(e+1,e+4)==="\u2500\u2500 ")break;break}return n}function z(t){let e=t.trim().replace(/^[│├└─\s]+/,"").trim();return e==="/"?"/":!e.endsWith("/")||(e=e.slice(0,-1),!e)?null:e}function ie(t){let n=[],e=t.split(`
26
- `),r=[];for(let i of e){if(!i.trim())continue;let a=J(i),o=i.match(/^\s*[│├└─\s]*(.+?)\s*-\s*(\d+)\s*$/);if(o){let c=o[1].trim(),s=String(parseInt(o[2],10)),u=r.slice(0,a).filter(l=>l!=="").join("/");n.push({id:s,category:u,title:c})}else{let c=z(i);if(c)if(c==="/"){r[a]="";for(let s=a+1;s<r.length;s++)delete r[s]}else{r[a]=c;for(let s=a+1;s<r.length;s++)delete r[s]}}}return n}function j(t,n){return t.find(e=>e.id===n)||null}function Pt(t,n,e){return t.find(r=>r.category===n&&r.title===e)||null}function Et(t,n){return t.filter(e=>e.id!==n)}function st(t){if(t.length===0)return"";let n={name:"/",children:[],entry:null};for(let a of t){let o=a.category.split("/"),c=n;for(let m=0;m<o.length;m++){let u=o[m];if(!u)continue;let l=c.children.find(h=>h.name===u);l||(l={name:u,children:[],entry:null},c.children.push(l)),c=l}let s={name:a.id,children:[],entry:a};c.children.push(s)}function e(a){a.children.sort((o,c)=>o.name.localeCompare(c.name,void 0,{sensitivity:"base"}));for(let o of a.children)e(o)}e(n);function r(a,o,c){let s=[],m=o+(c?"\u2514\u2500\u2500 ":"\u251C\u2500\u2500 "),u=a.name==="/"?"/":a.name+"/";s.push(`${m}${u}`),o=o+(c?" ":"\u2502 ");let l=a.children.filter(g=>g.entry===null),h=a.children.filter(g=>g.entry!==null),d=[...l,...h];for(let g=0;g<d.length;g++){let p=d[g],y=g===d.length-1;if(p.entry){let w=p.entry.id.padStart(3,"0"),b=o+(y?"\u2514\u2500\u2500 ":"\u251C\u2500\u2500 ");s.push(`${b}${p.entry.title} - ${w}`)}else s.push(...r(p,o,y))}return s}return r(n,"",!0).join(`
27
- `)}async function I(t){let n=E(t);if(!await x(n))return[];let e=await _t(n,"utf-8");return ie(e)}async function N(t,n){let e=S(t);await x(e)||await M(e);let r=st(n),i=E(t);await ne(i,r,"utf-8"),await f.debug(`[writeIndex] \u5199\u5165\u7D22\u5F15: ${i}, \u5171${n.length}\u6761`)}async function vt(t){let n=E(t);return await x(n)?await _t(n,"utf-8"):""}import K from"fs";import{promisify as Y}from"util";var re=Y(K.readFile),oe=Y(K.writeFile),ae=Y(K.unlink),St=Y(K.mkdir);async function P(t,n){let e=U(t,n);if(!await x(e))return null;let i=(await re(e,"utf-8")).split(`
24
+ `,"utf-8")}catch{}}function O(t){Ht();let n={},e=Q(mt());if(e){let a=X(e);n=F(n,a)}let r=Ut();if(r){let a=Q(r);if(a){let o=X(a);n=F(n,o)}}let i=Q(Gt(t));if(i){let a=X(i);n=F(n,a)}return n}function ht(t,n,e){return t.haimatiPath?R.resolve(n,t.haimatiPath):e}function S(t){let n=O(t),e=v.join(t,lt);return ht(n,t,e)}function E(t){return v.join(S(t),dt)}function et(t){return v.join(S(t),".lock")}function nt(t){return v.join(S(t),"\u4E66\u9875")}function it(t,n){let e=parseInt(n,10),r=Math.floor((e-1)/50)*50+1,i=r+50-1,a=`${String(r).padStart(3,"0")}-${String(i).padStart(3,"0")}`;return v.join(nt(t),a)}function U(t,n){let e=String(parseInt(n,10)).padStart(3,"0");return v.join(it(t,n),`${e}.md`)}function rt(){let t=pt.homedir();return v.join(t,".opencode-haimati","log")}function ot(){let t={level:gt,logRetentionDays:180},n=v.join(pt.homedir(),".config","opencode"),e=[v.join(n,"haimati.jsonc"),v.join(n,"haimati.json")].find(r=>B.existsSync(r));if(e)try{let r=B.readFileSync(e,"utf-8"),i=Z(r);if(i?.log)return{level:i.log.level||t.level,logRetentionDays:i.log.logRetentionDays??t.logRetentionDays}}catch{}return t}function M(t){return B.promises.mkdir(t,{recursive:!0}).then(()=>{})}function x(t){return B.promises.access(t).then(()=>!0).catch(()=>!1)}import xt from"fs";import{promisify as bt}from"util";import H from"fs";import at from"path";import{promisify as V}from"util";var zt=V(H.appendFile),Yt=V(H.readdir),Kt=V(H.unlink),Qt=V(H.stat),yt={debug:0,info:1,warn:2,error:3};function Xt(t){let n=t.getFullYear(),e=String(t.getMonth()+1).padStart(2,"0"),r=String(t.getDate()).padStart(2,"0");return`${n}-${e}-${r}`}function Zt(t){let n=t.getFullYear(),e=String(t.getMonth()+1).padStart(2,"0"),r=String(t.getDate()).padStart(2,"0"),i=String(t.getHours()).padStart(2,"0"),a=String(t.getMinutes()).padStart(2,"0"),o=String(t.getSeconds()).padStart(2,"0");return`${n}-${e}-${r} ${i}:${a}:${o}`}function te(){let t=Xt(new Date);return at.join(rt(),`${t}.log`)}async function ee(t,n){try{let e=at.dirname(t);await x(e)||await M(e),await zt(t,n+`
25
+ `,"utf-8")}catch(e){console.error("[haimati] \u5199\u5165\u65E5\u5FD7\u6587\u4EF6\u5931\u8D25:",e)}}async function wt(){try{let t=ot(),n=rt();if(!await x(n))return;let e=await Yt(n),i=new Date().getTime()-t.logRetentionDays*24*60*60*1e3;for(let a of e){if(!a.match(/^\d{4}-\d{2}-\d{2}\.log$/))continue;let o=at.join(n,a);(await Qt(o)).mtime.getTime()<i&&await Kt(o)}}catch(t){console.error("[haimati] \u6E05\u7406\u5386\u53F2\u65E5\u5FD7\u5931\u8D25:",t)}}async function G(t,n,e){try{let r=ot();if(yt[t]<yt[r.level])return;let a=Zt(new Date),o=e?`[${e}] `:"",c=`[${a}] [${t.toUpperCase()}] ${o}${n}`,s=te();await ee(s,c),wt().catch(m=>{console.error("[haimati] \u6E05\u7406\u5386\u53F2\u65E5\u5FD7\u5931\u8D25:",m)})}catch(r){console.error("[haimati] \u65E5\u5FD7\u8BB0\u5F55\u5931\u8D25:",r)}}var f={debug(t,n){return G("debug",t,n)},info(t,n){return G("info",t,n)},warn(t,n){return G("warn",t,n)},error(t,n){return G("error",t,n)}};async function $t(){await wt()}var Pt=bt(xt.readFile),ne=bt(xt.writeFile);function J(t){let n=0,e=0,r=t.length;for(;e<r;)if(t[e]==="\u2502"&&e+3<r&&t.slice(e+1,e+4)===" ")n++,e+=4;else if(t.slice(e,e+4)===" ")n++,e+=4;else{if((t[e]==="\u251C"||t[e]==="\u2514")&&e+3<r&&t.slice(e+1,e+4)==="\u2500\u2500 ")break;break}return n}function z(t){let e=t.trim().replace(/^[│├└─\s]+/,"").trim();return e==="/"?"/":!e.endsWith("/")||(e=e.slice(0,-1),!e)?null:e}function ie(t){let n=[],e=t.split(`
26
+ `),r=[];for(let i of e){if(!i.trim())continue;let a=J(i),o=i.match(/^\s*[│├└─\s]*(.+?)\s*-\s*(\d+)\s*$/);if(o){let c=o[1].trim(),s=String(parseInt(o[2],10)),u=r.slice(0,a).filter(l=>l!=="").join("/");n.push({id:s,category:u,title:c})}else{let c=z(i);if(c)if(c==="/"){r[a]="";for(let s=a+1;s<r.length;s++)delete r[s]}else{r[a]=c;for(let s=a+1;s<r.length;s++)delete r[s]}}}return n}function j(t,n){return t.find(e=>e.id===n)||null}function _t(t,n,e){return t.find(r=>r.category===n&&r.title===e)||null}function Et(t,n){return t.filter(e=>e.id!==n)}function st(t){if(t.length===0)return"";let n={name:"/",children:[],entry:null};for(let a of t){let o=a.category.split("/"),c=n;for(let m=0;m<o.length;m++){let u=o[m];if(!u)continue;let l=c.children.find(h=>h.name===u);l||(l={name:u,children:[],entry:null},c.children.push(l)),c=l}let s={name:a.id,children:[],entry:a};c.children.push(s)}function e(a){a.children.sort((o,c)=>o.name.localeCompare(c.name,void 0,{sensitivity:"base"}));for(let o of a.children)e(o)}e(n);function r(a,o,c){let s=[],m=o+(c?"\u2514\u2500\u2500 ":"\u251C\u2500\u2500 "),u=a.name==="/"?"/":a.name+"/";s.push(`${m}${u}`),o=o+(c?" ":"\u2502 ");let l=a.children.filter(g=>g.entry===null),h=a.children.filter(g=>g.entry!==null),d=[...l,...h];for(let g=0;g<d.length;g++){let p=d[g],y=g===d.length-1;if(p.entry){let w=p.entry.id.padStart(3,"0"),b=o+(y?"\u2514\u2500\u2500 ":"\u251C\u2500\u2500 ");s.push(`${b}${p.entry.title} - ${w}`)}else s.push(...r(p,o,y))}return s}return r(n,"",!0).join(`
27
+ `)}async function I(t){let n=E(t);if(!await x(n))return[];let e=await Pt(n,"utf-8");return ie(e)}async function N(t,n){let e=S(t);await x(e)||await M(e);let r=st(n),i=E(t);await ne(i,r,"utf-8"),await f.debug(`[writeIndex] \u5199\u5165\u7D22\u5F15: ${i}, \u5171${n.length}\u6761`)}async function vt(t){let n=E(t);return await x(n)?await Pt(n,"utf-8"):""}import Y from"fs";import{promisify as K}from"util";var re=K(Y.readFile),oe=K(Y.writeFile),ae=K(Y.unlink),St=K(Y.mkdir);async function _(t,n){let e=U(t,n);if(!await x(e))return null;let i=(await re(e,"utf-8")).split(`
28
28
  `),a="------system------",o=Math.max(0,i.length-5),c=-1;for(let d=i.length-1;d>=o;d--)if(i[d].trim()===a){c=d;break}if(c===-1)return{title:"",createdAt:"",content:i.join(`
29
29
  `),version:1};if(i.length<4)return await f.warn("[readPage] \u51FA\u53C2: \u65B0\u683C\u5F0F\u4E0D\u5B8C\u6574\uFF0C\u5C11\u4E8E4\u884C"),null;if(c+3>=i.length)return await f.warn("[readPage] \u51FA\u53C2: \u65B0\u683C\u5F0F\u4E0D\u5B8C\u6574"),null;let s=i.slice(0,c).join(`
30
30
  `),m=i[c+1],u=i[c+2],l=i[c+3],h=parseInt(l.substring(8).trim(),10)||1;return{title:m,createdAt:u,content:s,version:h}}async function q(t,n,e,r,i,a=1){let o=nt(t);await x(o)||await St(o,{recursive:!0});let c=it(t,n);await x(c)||await St(c,{recursive:!0});let s=U(t,n),u=`------system------
@@ -33,7 +33,7 @@ ${r}
33
33
  version:${a}`,l=i?`${i}
34
34
  ${u}`:u;await oe(s,l,"utf-8"),await f.debug(`[writePage] \u5199\u5165\u4E66\u9875: ${s}, version=${a}`)}async function Dt(t,n){let e=U(t,n);return await x(e)?(await ae(e),await f.debug(`[deletePage] \u5220\u9664\u4E66\u9875: ${e}`),!0):!1}function Ct(t,n,e,r){let i=t.split(`
35
35
  `),a=i.slice(0,n-1),o=i.slice(e);return[...a,r,...o].join(`
36
- `)}async function kt(t,n,e,r,i=!1){let a=n.toLowerCase().split(/\s+/).filter(s=>s.length>0);if(a.length===0)return[];let o=[];for(let s of t){let m=s.title.toLowerCase(),u=s.category.toLowerCase(),l=s.id.toLowerCase(),h=new Set,d=0;for(let g of a)(m.includes(g)||u.includes(g)||l.includes(g))&&(d++,h.add(g));if(i&&r){let g=await P(r,s.id);if(g&&g.content){let p=g.content.toLowerCase();for(let y of a)p.includes(y)&&(d++,h.add(y))}}e==="and"?h.size===a.length&&o.push({entry:s,score:d}):h.size>0&&o.push({entry:s,score:d})}o.sort((s,m)=>m.score-s.score);let c=o.map(s=>s.entry);return await f.debug(`[searchEntries] \u641C\u7D22\u5B8C\u6210: \u5173\u952E\u5B57="${n}", \u6A21\u5F0F=${e}, \u7ED3\u679C\u6570=${c.length}`),c}import Lt from"fs";import{promisify as Tt}from"util";var ce=Tt(Lt.writeFile),fe=Tt(Lt.unlink);async function Mt(t){let n=S(t);await x(n)||await M(n);let e=et(t),r=Date.now(),i=50+Math.random()*20,a=0;for(;await x(e);){if(a++,Date.now()-r>5e3)return await f.warn(`[acquireLock] \u51FA\u53C2: \u9501\u83B7\u53D6\u8D85\u65F6 (\u91CD\u8BD5${a}\u6B21)`),!1;await new Promise(o=>setTimeout(o,i))}return await ce(e,String(process.pid),"utf-8"),await f.debug(`[acquireLock] \u9501\u83B7\u53D6\u6210\u529F: ${e}`),!0}async function jt(t){let n=et(t);await x(n)&&(await fe(n),await f.debug(`[releaseLock] \u9501\u91CA\u653E\u6210\u529F: ${n}`))}async function qt(t,n,e,r,i,a=!1){if(/ - \d{3}$/.test(e))throw await f.warn(`[allocateIdWithLock] title \u683C\u5F0F\u4E0D\u5408\u89C4: "${e}", \u629B\u51FA\u9519\u8BEF`),new Error('\u6807\u9898\u4E0D\u80FD\u4EE5 " - \u5E8F\u53F7" \u683C\u5F0F\u7ED3\u5C3E\uFF0C\u5E8F\u53F7\u7531\u7CFB\u7EDF\u81EA\u52A8\u5206\u914D\uFF0C\u8BF7\u4FEE\u6539\u6807\u9898');if(await f.debug(`[allocateIdWithLock] \u5F00\u59CB\u5206\u914D\u5E8F\u53F7: category="${n}", title="${e}"`),!await Mt(t))return await f.warn(`[allocateIdWithLock] \u83B7\u53D6\u9501\u5931\u8D25: category="${n}", title="${e}"`),null;try{let o=await I(t),c=o.find(l=>l.category===n&&l.title===e);if(c){if(!a)throw new Error(`\u8BB0\u5FC6\u5DF2\u5B58\u5728: ${n}/${e}\uFF0C\u5982\u9700\u66F4\u65B0\u8BF7\u4F7F\u7528 haimati_edit \u5DE5\u5177`);let l=await P(t,c.id),h=l?l.createdAt:r,d=l?l.version+1:1;return await q(t,c.id,e,h,i,d),await f.debug(`[allocateIdWithLock] \u66F4\u65B0\u5DF2\u6709\u6761\u76EE: #${c.id} ${n}/${e}, \u65B0\u7248\u672C: ${d}`),null}let s=0;for(let l of o){let h=parseInt(l.id,10);h>s&&(s=h)}let m=String(s+1).padStart(3,"0");await q(t,m,e,r,i,1);let u={id:m,category:n,title:e};return o.push(u),await N(t,o),await f.debug(`[allocateIdWithLock] \u5206\u914D\u5E8F\u53F7\u6210\u529F: #${m} ${n}/${e}`),m}catch(o){let c=o instanceof Error?o.message:String(o);if(await f.error(`[allocateIdWithLock] \u5206\u914D\u5E8F\u53F7\u5931\u8D25: ${c}`),c.includes("\u8BB0\u5FC6\u5DF2\u5B58\u5728"))throw o;return null}finally{await jt(t)}}function D(t){let n=t;return typeof n?.directory=="string"&&n.directory?n.directory:null}function ue(t){let n=t.trim();if(!n)return null;if(/^\d+$/.test(n))return[String(parseInt(n,10))];let e=[],r=n.split(",");for(let i of r){let a=i.trim();if(!a)return null;let o=a.match(/^(\d+)\s*-\s*(\d+)$/);if(o){let c=parseInt(o[1],10),s=parseInt(o[2],10);if(c>s||c<=0)return null;for(let m=c;m<=s;m++)e.push(String(m))}else if(/^\d+$/.test(a))e.push(String(parseInt(a,10)));else return null}return e}function W(t,n,e){let r=n.content.split(`
36
+ `)}async function kt(t,n,e,r,i=!1){let a=n.toLowerCase().split(/\s+/).filter(s=>s.length>0);if(a.length===0)return[];let o=[];for(let s of t){let m=s.title.toLowerCase(),u=s.category.toLowerCase(),l=s.id.toLowerCase(),h=new Set,d=0;for(let g of a)(m.includes(g)||u.includes(g)||l.includes(g))&&(d++,h.add(g));if(i&&r){let g=await _(r,s.id);if(g&&g.content){let p=g.content.toLowerCase();for(let y of a)p.includes(y)&&(d++,h.add(y))}}e==="and"?h.size===a.length&&o.push({entry:s,score:d}):h.size>0&&o.push({entry:s,score:d})}o.sort((s,m)=>m.score-s.score);let c=o.map(s=>s.entry);return await f.debug(`[searchEntries] \u641C\u7D22\u5B8C\u6210: \u5173\u952E\u5B57="${n}", \u6A21\u5F0F=${e}, \u7ED3\u679C\u6570=${c.length}`),c}import Lt from"fs";import{promisify as Tt}from"util";var ce=Tt(Lt.writeFile),fe=Tt(Lt.unlink);async function Mt(t){let n=S(t);await x(n)||await M(n);let e=et(t),r=Date.now(),i=50+Math.random()*20,a=0;for(;await x(e);){if(a++,Date.now()-r>5e3)return await f.warn(`[acquireLock] \u51FA\u53C2: \u9501\u83B7\u53D6\u8D85\u65F6 (\u91CD\u8BD5${a}\u6B21)`),!1;await new Promise(o=>setTimeout(o,i))}return await ce(e,String(process.pid),"utf-8"),await f.debug(`[acquireLock] \u9501\u83B7\u53D6\u6210\u529F: ${e}`),!0}async function jt(t){let n=et(t);await x(n)&&(await fe(n),await f.debug(`[releaseLock] \u9501\u91CA\u653E\u6210\u529F: ${n}`))}async function qt(t,n,e,r,i,a=!1){if(/ - \d{3}$/.test(e))throw await f.warn(`[allocateIdWithLock] title \u683C\u5F0F\u4E0D\u5408\u89C4: "${e}", \u629B\u51FA\u9519\u8BEF`),new Error('\u6807\u9898\u4E0D\u80FD\u4EE5 " - \u5E8F\u53F7" \u683C\u5F0F\u7ED3\u5C3E\uFF0C\u5E8F\u53F7\u7531\u7CFB\u7EDF\u81EA\u52A8\u5206\u914D\uFF0C\u8BF7\u4FEE\u6539\u6807\u9898');if(await f.debug(`[allocateIdWithLock] \u5F00\u59CB\u5206\u914D\u5E8F\u53F7: category="${n}", title="${e}"`),!await Mt(t))return await f.warn(`[allocateIdWithLock] \u83B7\u53D6\u9501\u5931\u8D25: category="${n}", title="${e}"`),null;try{let o=await I(t),c=o.find(l=>l.category===n&&l.title===e);if(c){if(!a)throw new Error(`\u8BB0\u5FC6\u5DF2\u5B58\u5728: ${n}/${e}\uFF0C\u5982\u9700\u66F4\u65B0\u8BF7\u4F7F\u7528 haimati_edit \u5DE5\u5177`);let l=await _(t,c.id),h=l?l.createdAt:r,d=l?l.version+1:1;return await q(t,c.id,e,h,i,d),await f.debug(`[allocateIdWithLock] \u66F4\u65B0\u5DF2\u6709\u6761\u76EE: #${c.id} ${n}/${e}, \u65B0\u7248\u672C: ${d}`),null}let s=0;for(let l of o){let h=parseInt(l.id,10);h>s&&(s=h)}let m=String(s+1).padStart(3,"0");await q(t,m,e,r,i,1);let u={id:m,category:n,title:e};return o.push(u),await N(t,o),await f.debug(`[allocateIdWithLock] \u5206\u914D\u5E8F\u53F7\u6210\u529F: #${m} ${n}/${e}`),m}catch(o){let c=o instanceof Error?o.message:String(o);if(await f.error(`[allocateIdWithLock] \u5206\u914D\u5E8F\u53F7\u5931\u8D25: ${c}`),c.includes("\u8BB0\u5FC6\u5DF2\u5B58\u5728"))throw o;return null}finally{await jt(t)}}function D(t){let n=t;return typeof n?.directory=="string"&&n.directory?n.directory:null}function ue(t){let n=t.trim();if(!n)return null;if(/^\d+$/.test(n))return[String(parseInt(n,10))];let e=[],r=n.split(",");for(let i of r){let a=i.trim();if(!a)return null;let o=a.match(/^(\d+)\s*-\s*(\d+)$/);if(o){let c=parseInt(o[1],10),s=parseInt(o[2],10);if(c>s||c<=0)return null;for(let m=c;m<=s;m++)e.push(String(m))}else if(/^\d+$/.test(a))e.push(String(parseInt(a,10)));else return null}return e}function W(t,n,e){let r=n.content.split(`
37
37
  `),i=[],a=e?.offset?Math.max(0,e.offset-1):0,o=e?.limit?Math.min(r.length,a+e.limit):r.length;for(let c=a;c<o;c++)i.push(`${c+1}|${r[c]}`);return i.push("------system------"),i.push(`\u6807\u9898:${t.title}`),i.push(`\u521B\u5EFA\u65F6\u95F4:${n.createdAt}`),i.push(`version:${n.version}`),i.join(`
38
38
  `)}async function C(t,n){let e=t instanceof Error?t.message:String(t),r=t instanceof Error?t.stack:"";return await f.error(`[${n}] \u51FA\u53C2: \u9519\u8BEF: ${e}
39
39
  \u5806\u6808: ${r}`),`\u9519\u8BEF: ${e}`}function ct(t){return/^\d+$/.test(t.trim())?String(parseInt(t.trim(),10)):null}function At(){return{haimati_read:$({description:`\u4ECE\u6D77\u9A6C\u4F53\u8BB0\u5FC6\u7CFB\u7EDF\u8BFB\u53D6\u8BB0\u5FC6\u5185\u5BB9\u3002\u901A\u8FC7\u5E8F\u53F7\u5B9A\u4F4D\u8BB0\u5FC6\uFF0C\u652F\u6301\u5355\u6761\u548C\u6279\u91CF\u8BFB\u53D6\u3002
@@ -69,10 +69,10 @@ version:{version}
69
69
  - query="086-090" - \u6279\u91CF\u8BFB\u53D6\u5E8F\u53F7 086 \u5230 090\uFF08\u8303\u56F4\u8BED\u6CD5\uFF09
70
70
  - query="086-088,091" - \u6DF7\u5408\u4F7F\u7528\u8303\u56F4\u548C\u9017\u53F7`,args:{query:$.schema.string().describe("\u5E8F\u53F7\u3002\u5355\u6761\u5982 '086'\uFF0C\u6279\u91CF\u652F\u6301\u9017\u53F7\u5206\u9694\u5982 '086,087,088' \u6216\u8303\u56F4 '086-090'"),offset:$.schema.number().optional().default(1).describe("\u8D77\u59CB\u884C\u53F7\uFF08\u9ED8\u8BA4 1\uFF0C\u4EC5\u5355\u6761\u8BFB\u53D6\u751F\u6548\uFF09"),limit:$.schema.number().optional().default(2e3).describe("\u6700\u5927\u8BFB\u53D6\u884C\u6570\uFF08\u9ED8\u8BA4 2000\uFF0C\u4EC5\u5355\u6761\u8BFB\u53D6\u751F\u6548\uFF09")},async execute(t,n){let e=D(n);if(!e)return"\u9519\u8BEF\uFF1A\u7F3A\u5C11 directory \u914D\u7F6E";let r=E(e);if(await f.info(`[haimati_read] \u5F00\u59CB\u8BFB\u53D6 #${t.query}`),await f.debug(`[haimati_read] \u5165\u53C2: query="${t.query}", offset=${t.offset||1}, limit=${t.limit||2e3}`),!await x(r)){let i=`\u9519\u8BEF\uFF1A\u6D77\u9A6C\u4F53\u7D22\u5F15\u4E0D\u5B58\u5728\u4E8E ${r}`;return await f.debug(`[haimati_read] \u51FA\u53C2:
71
71
  ${i}`),i}try{let i=await I(e),a=t.query.trim(),o=ue(a);if(!o||o.length===0){let u=`\u9519\u8BEF\uFF1A\u65E0\u6548\u7684\u67E5\u8BE2\u683C\u5F0F "${a}"`;return await f.debug(`[haimati_read] \u51FA\u53C2:
72
- ${u}`),u}if(o.length===1){let u=o[0],l=j(i,u);if(!l)return await f.info(`[haimati_read] \u8BFB\u53D6\u5931\u8D25: \u672A\u627E\u5230\u8BB0\u5FC6 #${t.query}`),`\u672A\u627E\u5230\u8BB0\u5FC6: ${t.query}`;let h=await P(e,l.id);if(!h)return`\u672A\u627E\u5230\u4E66\u9875: #${l.id.padStart(3,"0")}`;let d=W(l,h,{offset:t.offset||1,limit:t.limit||2e3}),g=`===== #${l.id.padStart(3,"0")} =====
72
+ ${u}`),u}if(o.length===1){let u=o[0],l=j(i,u);if(!l)return await f.info(`[haimati_read] \u8BFB\u53D6\u5931\u8D25: \u672A\u627E\u5230\u8BB0\u5FC6 #${t.query}`),`\u672A\u627E\u5230\u8BB0\u5FC6: ${t.query}`;let h=await _(e,l.id);if(!h)return`\u672A\u627E\u5230\u4E66\u9875: #${l.id.padStart(3,"0")}`;let d=W(l,h,{offset:t.offset||1,limit:t.limit||2e3}),g=`===== #${l.id.padStart(3,"0")} =====
73
73
  ${d}`;return await f.debug(`[haimati_read] \u51FA\u53C2:
74
74
  ${g}`),await f.info(`[haimati_read] \u8BFB\u53D6\u6210\u529F: #${l.id} (${l.category}/${l.title}), version=${h.version}`),g}let c=[],s=0;for(let u of o){let l=j(i,u);if(!l){await f.warn(`[haimati_read] \u6279\u91CF: \u672A\u627E\u5230\u8BB0\u5FC6 #${u}`),c.push(`===== #${u.padStart(3,"0")} =====
75
- \u672A\u627E\u5230\u8BB0\u5FC6: ${u}`);continue}let h=await P(e,l.id);if(!h){await f.error(`[haimati_read] \u6279\u91CF: \u672A\u627E\u5230\u4E66\u9875 #${l.id}`),c.push(`===== #${l.id.padStart(3,"0")} =====
75
+ \u672A\u627E\u5230\u8BB0\u5FC6: ${u}`);continue}let h=await _(e,l.id);if(!h){await f.error(`[haimati_read] \u6279\u91CF: \u672A\u627E\u5230\u4E66\u9875 #${l.id}`),c.push(`===== #${l.id.padStart(3,"0")} =====
76
76
  \u672A\u627E\u5230\u4E66\u9875`);continue}let d=W(l,h);c.push(`===== #${l.id.padStart(3,"0")} =====
77
77
  ${d}`),s++}let m=c.join(`
78
78
 
@@ -113,7 +113,7 @@ ${d}`),s++}let m=c.join(`
113
113
  ${t.content}`);try{let r=new Date().toLocaleString("zh-CN",{hour12:!1}),i=null;for(let s=0;s<3;s++)try{if(i=await qt(e,t.category,t.title,r,t.content,!1),i)break;await f.warn(`[haimati_write] \u9501\u83B7\u53D6\u5931\u8D25\uFF0C\u91CD\u8BD5\u7B2C ${s+1} \u6B21`)}catch(m){let u=m instanceof Error?m.message:String(m);if(u.includes("\u8BB0\u5FC6\u5DF2\u5B58\u5728"))throw m;await f.warn(`[haimati_write] \u83B7\u53D6\u9501\u5F02\u5E38: ${u}, \u91CD\u8BD5\u7B2C ${s+1} \u6B21`)}if(i){let s=`\u5DF2\u5199\u5165\u6D77\u9A6C\u4F53 #${i}
114
114
  \u8DEF\u5F84: ${t.category}/${t.title}
115
115
  \u7248\u672C: 1`;return await f.debug(`[haimati_write] \u51FA\u53C2:
116
- ${s}`),await f.info(`[haimati_write] \u5199\u5165\u6210\u529F: #${i} (${t.category}/${t.title})`),s}let a=await I(e),o=Pt(a,t.category,t.title);if(o){let s=`\u9519\u8BEF\uFF1A\u8BB0\u5FC6\u5DF2\u5B58\u5728 #${o.id} (${t.category}/${t.title})\uFF0C\u5982\u9700\u66F4\u65B0\u8BF7\u4F7F\u7528 haimati_edit \u5DE5\u5177`;return await f.debug(`[haimati_write] \u51FA\u53C2:
116
+ ${s}`),await f.info(`[haimati_write] \u5199\u5165\u6210\u529F: #${i} (${t.category}/${t.title})`),s}let a=await I(e),o=_t(a,t.category,t.title);if(o){let s=`\u9519\u8BEF\uFF1A\u8BB0\u5FC6\u5DF2\u5B58\u5728 #${o.id} (${t.category}/${t.title})\uFF0C\u5982\u9700\u66F4\u65B0\u8BF7\u4F7F\u7528 haimati_edit \u5DE5\u5177`;return await f.debug(`[haimati_write] \u51FA\u53C2:
117
117
  ${s}`),s}let c="\u9519\u8BEF\uFF1A\u65E0\u6CD5\u5206\u914D\u5E8F\u53F7\uFF08\u9501\u7B49\u5F85\u8D85\u65F6\uFF09";return await f.debug(`[haimati_write] \u51FA\u53C2:
118
118
  ${c}`),c}catch(r){return await C(r,"haimati_write")}}}),haimati_search:$({description:`\u641C\u7D22\u6D77\u9A6C\u4F53\u8BB0\u5FC6\u7CFB\u7EDF\uFF08\u652F\u6301\u591A\u5173\u952E\u5B57\uFF0C\u7528\u7A7A\u683C\u5206\u9694\uFF09\u3002\u641C\u7D22\u8303\u56F4\u5305\u62EC\uFF1A\u6807\u9898\u3001\u5206\u7C7B\u3001\u5E8F\u53F7\u3001\u4E66\u9875\u5185\u5BB9\u3002\u8F93\u5165\u5173\u952E\u8BCD\uFF0C\u8FD4\u56DE\u5339\u914D\u7684\u6761\u76EE\u5217\u8868\u548C\u5185\u5BB9\u7247\u6BB5\uFF0C\u652F\u6301\u5206\u9875\uFF08limit/offset\uFF09\u3002
119
119
 
@@ -145,8 +145,8 @@ ${c}`),c}catch(r){return await C(r,"haimati_write")}}}),haimati_search:$({descri
145
145
  ${i}`),await f.info("[haimati_search] \u641C\u7D22\u5931\u8D25: \u7D22\u5F15\u4E0D\u5B58\u5728"),i}try{let i=await I(e),a=t.keyword.trim(),o=t.match,c=t.limit||10,s=t.offset||0,m=await kt(i,a,o,e,!0),u=m.length,l=m.slice(s,s+c);if(l.length===0){let y=`\u672A\u627E\u5230\u5305\u542B '${a}' \u7684\u8BB0\u5FC6`;return await f.debug(`[haimati_search] \u51FA\u53C2:
146
146
  ${y}`),await f.info("[haimati_search] \u641C\u7D22\u5B8C\u6210: \u672A\u627E\u5230\u5339\u914D"),y}let h=[],d=s+l.length<u,g=d?`${s+1}-${s+l.length}/${u}`:`${s+1}-${s+l.length}/${u}`;h.push(`\u627E\u5230 ${g} \u6761\u5339\u914D\uFF1A
147
147
  `),d&&h.push(`\uFF08\u5982\u9700\u83B7\u53D6\u66F4\u591A\uFF0C\u8BF7\u4F7F\u7528 offset=${s+c} \u7EE7\u7EED\u7FFB\u9875\uFF09
148
- `);for(let y of l){let w=await P(e,y.id),b=`${y.category}/${y.title}`,_="";w&&(_=w.content.split(`
149
- `).filter(Wt=>Wt.trim()).slice(0,3).join(" | ").substring(0,150),_.length===150&&(_+="...")),h.push(`## ${b} [${y.id}]`),_&&h.push(`> ${_}`),h.push("")}let p=h.join(`
148
+ `);for(let y of l){let w=await _(e,y.id),b=`${y.category}/${y.title}`,P="";w&&(P=w.content.split(`
149
+ `).filter(Wt=>Wt.trim()).slice(0,3).join(" | ").substring(0,150),P.length===150&&(P+="...")),h.push(`## ${b} [${y.id}]`),P&&h.push(`> ${P}`),h.push("")}let p=h.join(`
150
150
  `);return await f.debug(`[haimati_search] \u51FA\u53C2:
151
151
  ${p}`),await f.info(`[haimati_search] \u641C\u7D22\u5B8C\u6210: \u627E\u5230 ${u} \u6761\u5339\u914D`),p}catch(i){return await C(i,"haimati_search")}}}),haimati_edit:$({description:`\u4FEE\u6539\u6D77\u9A6C\u4F53\u8BB0\u5FC6\u7684\u90E8\u5206\u5185\u5BB9\u3002\u652F\u6301\u5355\u5904\u4FEE\u6539\u548C\u591A\u5904\u6279\u91CF\u4FEE\u6539\u3002
152
152
 
@@ -171,7 +171,7 @@ ${p}`),await f.info(`[haimati_search] \u641C\u7D22\u5B8C\u6210: \u627E\u5230 ${u
171
171
  - \u5355\u5904\u4FEE\u6539\uFF1Aquery="086", version=1, edits=[{offsetBegin:3,offsetEnd:5,content:"\u65B0\u5185\u5BB9"}]
172
172
  - \u591A\u5904\u4FEE\u6539\uFF1Aquery="086", version=1, edits=[{offsetBegin:3,offsetEnd:5,content:"\u65B0\u5185\u5BB91"},{offsetBegin:10,offsetEnd:15,content:"\u65B0\u5185\u5BB92"}]
173
173
  - \u66FF\u6362\u5355\u884C\uFF1Aedits=[{offsetBegin:3,offsetEnd:3,content:"\u65B0\u7684\u7B2C3\u884C"}]
174
- - \u5220\u9664\u884C\uFF1Aedits=[{offsetBegin:3,offsetEnd:5,content:""}]`,args:{query:$.schema.string().describe("\u5E8F\u53F7\uFF0C\u7528\u4E8E\u5B9A\u4F4D\u8981\u66F4\u65B0\u7684\u8BB0\u5FC6"),version:$.schema.number().describe("read \u65F6\u8FD4\u56DE\u7684 version\uFF0C\u7528\u4E8E\u5E76\u53D1\u63A7\u5236"),edits:$.schema.array($.schema.object({offsetBegin:$.schema.number().describe("\u8D77\u59CB\u884C\u53F7\uFF08\u5305\u62EC\uFF09"),offsetEnd:$.schema.number().describe("\u7ED3\u675F\u884C\u53F7\uFF08\u5305\u62EC\u6B64\u884C\uFF09"),content:$.schema.string().describe("\u66FF\u6362\u5185\u5BB9")})).describe("\u7F16\u8F91\u64CD\u4F5C\u6570\u7EC4")},async execute(t,n){let e=D(n);if(!e)return"\u9519\u8BEF\uFF1A\u7F3A\u5C11 directory \u914D\u7F6E";let r=E(e);if(await f.info(`[haimati_edit] \u5F00\u59CB\u7F16\u8F91 #${t.query}`),await f.debug(`[haimati_edit] \u5165\u53C2: query="${t.query}", version=${t.version}, edits=${JSON.stringify(t.edits)}`),!t.edits||t.edits.length===0)return await f.debug("[haimati_edit] \u51FA\u53C2: edits\u6570\u7EC4\u4E3A\u7A7A"),"\u9519\u8BEF\uFF1Aedits \u6570\u7EC4\u4E0D\u80FD\u4E3A\u7A7A";if(!await x(r))return await f.debug("[haimati_edit] \u51FA\u53C2: \u7D22\u5F15\u6587\u4EF6\u4E0D\u5B58\u5728"),"\u7D22\u5F15\u6587\u4EF6\u4E0D\u5B58\u5728";try{let i=await I(e),a=ct(t.query);if(!a)return"\u9519\u8BEF\uFF1Aquery \u5FC5\u987B\u662F\u5E8F\u53F7\uFF0C\u53EA\u652F\u6301\u5E8F\u53F7\u67E5\u8BE2";let o=j(i,a);if(!o)return await f.info("[haimati_edit] \u7F16\u8F91\u5931\u8D25: \u672A\u627E\u5230\u8BB0\u5FC6"),`\u672A\u627E\u5230\u4E0E '${t.query}' \u76F8\u5173\u7684\u8BB0\u5FC6`;let c=await P(e,o.id);if(!c)return await f.debug("[haimati_edit] \u51FA\u53C2: \u4E66\u9875\u4E0D\u5B58\u5728"),`\u672A\u627E\u5230\u4E66\u9875: #${o.id.padStart(3,"0")}`;if(c.version!==t.version)return await f.debug("[haimati_edit] \u51FA\u53C2: \u7248\u672C\u51B2\u7A81"),`\u9519\u8BEF\uFF1A\u7248\u672C\u51B2\u7A81\uFF0C\u5F53\u524D version=${c.version}\uFF0C\u4F20\u5165 version=${t.version}\uFF0C\u8BF7\u91CD\u65B0\u8BFB\u53D6\u540E\u518D\u64CD\u4F5C`;let s=c.content.split(`
174
+ - \u5220\u9664\u884C\uFF1Aedits=[{offsetBegin:3,offsetEnd:5,content:""}]`,args:{query:$.schema.string().describe("\u5E8F\u53F7\uFF0C\u7528\u4E8E\u5B9A\u4F4D\u8981\u66F4\u65B0\u7684\u8BB0\u5FC6"),version:$.schema.number().describe("read \u65F6\u8FD4\u56DE\u7684 version\uFF0C\u7528\u4E8E\u5E76\u53D1\u63A7\u5236"),edits:$.schema.array($.schema.object({offsetBegin:$.schema.number().describe("\u8D77\u59CB\u884C\u53F7\uFF08\u5305\u62EC\uFF09"),offsetEnd:$.schema.number().describe("\u7ED3\u675F\u884C\u53F7\uFF08\u5305\u62EC\u6B64\u884C\uFF09"),content:$.schema.string().describe("\u66FF\u6362\u5185\u5BB9")})).describe("\u7F16\u8F91\u64CD\u4F5C\u6570\u7EC4")},async execute(t,n){let e=D(n);if(!e)return"\u9519\u8BEF\uFF1A\u7F3A\u5C11 directory \u914D\u7F6E";let r=E(e);if(await f.info(`[haimati_edit] \u5F00\u59CB\u7F16\u8F91 #${t.query}`),await f.debug(`[haimati_edit] \u5165\u53C2: query="${t.query}", version=${t.version}, edits=${JSON.stringify(t.edits)}`),!t.edits||t.edits.length===0)return await f.debug("[haimati_edit] \u51FA\u53C2: edits\u6570\u7EC4\u4E3A\u7A7A"),"\u9519\u8BEF\uFF1Aedits \u6570\u7EC4\u4E0D\u80FD\u4E3A\u7A7A";if(!await x(r))return await f.debug("[haimati_edit] \u51FA\u53C2: \u7D22\u5F15\u6587\u4EF6\u4E0D\u5B58\u5728"),"\u7D22\u5F15\u6587\u4EF6\u4E0D\u5B58\u5728";try{let i=await I(e),a=ct(t.query);if(!a)return"\u9519\u8BEF\uFF1Aquery \u5FC5\u987B\u662F\u5E8F\u53F7\uFF0C\u53EA\u652F\u6301\u5E8F\u53F7\u67E5\u8BE2";let o=j(i,a);if(!o)return await f.info("[haimati_edit] \u7F16\u8F91\u5931\u8D25: \u672A\u627E\u5230\u8BB0\u5FC6"),`\u672A\u627E\u5230\u4E0E '${t.query}' \u76F8\u5173\u7684\u8BB0\u5FC6`;let c=await _(e,o.id);if(!c)return await f.debug("[haimati_edit] \u51FA\u53C2: \u4E66\u9875\u4E0D\u5B58\u5728"),`\u672A\u627E\u5230\u4E66\u9875: #${o.id.padStart(3,"0")}`;if(c.version!==t.version)return await f.debug("[haimati_edit] \u51FA\u53C2: \u7248\u672C\u51B2\u7A81"),`\u9519\u8BEF\uFF1A\u7248\u672C\u51B2\u7A81\uFF0C\u5F53\u524D version=${c.version}\uFF0C\u4F20\u5165 version=${t.version}\uFF0C\u8BF7\u91CD\u65B0\u8BFB\u53D6\u540E\u518D\u64CD\u4F5C`;let s=c.content.split(`
175
175
  `).length;for(let d=0;d<t.edits.length;d++){let g=t.edits[d];if(g.offsetBegin<1||g.offsetBegin>s||g.offsetBegin>g.offsetEnd||g.offsetEnd>s)return await f.debug("[haimati_edit] \u51FA\u53C2: offset\u975E\u6CD5"),`\u9519\u8BEF\uFF1A\u7B2C ${d+1} \u4E2A\u7F16\u8F91\u64CD\u4F5C\u7684 offset \u975E\u6CD5\uFF0CoffsetBegin=${g.offsetBegin}, offsetEnd=${g.offsetEnd}, \u6587\u4EF6\u603B\u884C\u6570=${s}\uFF0C\u6709\u6548\u8303\u56F4 offsetBegin=[1, ${s}], offsetEnd=[offsetBegin, ${s}]`}for(let d=0;d<t.edits.length;d++)for(let g=d+1;g<t.edits.length;g++){let p=t.edits[d],y=t.edits[g];if(!(p.offsetEnd<y.offsetBegin||y.offsetEnd<p.offsetBegin))return await f.debug("[haimati_edit] \u51FA\u53C2: \u884C\u53F7\u8303\u56F4\u91CD\u53E0"),`\u9519\u8BEF\uFF1A\u7B2C ${d+1} \u4E2A\u548C\u7B2C ${g+1} \u4E2A\u7F16\u8F91\u64CD\u4F5C\u7684\u884C\u53F7\u8303\u56F4\u91CD\u53E0\uFF08[${p.offsetBegin},${p.offsetEnd}] \u548C [${y.offsetBegin},${y.offsetEnd}]\uFF09\uFF0C\u8BF7\u4FEE\u6539\u540E\u91CD\u8BD5`}let m=[...t.edits].sort((d,g)=>g.offsetBegin-d.offsetBegin),u=c.content;for(let d of m)u=Ct(u,d.offsetBegin,d.offsetEnd,d.content);await q(e,o.id,o.title,c.createdAt,u,c.version+1);let l=`${o.category}/${o.title}`,h=t.edits.length===1?`\u5DF2\u66F4\u65B0\u6D77\u9A6C\u4F53 #${o.id.padStart(3,"0")}
176
176
  \u8DEF\u5F84: ${l}
177
177
  \u65B0\u7248\u672C: ${c.version+1}`:`\u5DF2\u66F4\u65B0\u6D77\u9A6C\u4F53 #${o.id.padStart(3,"0")}\uFF08\u5171 ${t.edits.length} \u5904\u4FEE\u6539\uFF09
@@ -223,7 +223,7 @@ ${m}`),await f.info(`[haimati_delete] \u5220\u9664\u6210\u529F: #${o.id.padStart
223
223
  - \u5982\u679C\u4E0D\u786E\u5B9A\u8981\u4FEE\u6539\u7684\u8BB0\u5FC6\u5E8F\u53F7\uFF0C\u8BF7\u5148\u4F7F\u7528 haimati_search \u6216 haimati_list \u67E5\u627E
224
224
  - \u4FEE\u6539\u4E0D\u4F1A\u5F71\u54CD\u8BB0\u5FC6\u7684\u5E8F\u53F7\u548C\u5185\u5BB9`,args:{query:$.schema.string().describe("\u5E8F\u53F7\u3002\u4F8B\u5982\uFF1A'086'"),newCategory:$.schema.string().optional().describe("\u65B0\u7684\u5206\u7C7B\u8DEF\u5F84\uFF0C\u5982 'xxx\u9879\u76EE/\u5BA2\u6237\u7AEF' \u6216 '\u901A\u7528'"),newTitle:$.schema.string().optional().describe("\u65B0\u7684\u6807\u9898\uFF0C\u5982 '\u7B7E\u7AE0\u670D\u52A1WS\u901A\u4FE1\u673A\u5236v2'")},async execute(t,n){let e=D(n);if(!e)return"\u9519\u8BEF\uFF1A\u7F3A\u5C11 directory \u914D\u7F6E";let r=E(e);if(await f.info(`[haimati_move] \u5F00\u59CB\u79FB\u52A8 ${t.query}`),await f.debug(`[haimati_move] \u5165\u53C2: query="${t.query}", newCategory="${t.newCategory}", newTitle="${t.newTitle}"`),!await x(r)){let i="\u9519\u8BEF\uFF1A\u6D77\u9A6C\u4F53\u7D22\u5F15\u4E0D\u5B58\u5728";return await f.debug(`[haimati_move] \u51FA\u53C2:
225
225
  ${i}`),i}try{let i=await I(e),a=ct(t.query);if(!a)return"\u9519\u8BEF\uFF1Aquery \u5FC5\u987B\u662F\u5E8F\u53F7\uFF0C\u53EA\u652F\u6301\u5E8F\u53F7\u67E5\u8BE2";let o=j(i,a);if(!o)return await f.info(`[haimati_move] \u79FB\u52A8\u5931\u8D25: \u672A\u627E\u5230\u8BB0\u5FC6 #${t.query}`),`\u672A\u627E\u5230\u8BB0\u5FC6: ${t.query}`;let c=t.newCategory?.trim(),s=t.newTitle?.trim();if(!c&&!s){let w="\u9519\u8BEF\uFF1A\u81F3\u5C11\u9700\u8981\u63D0\u4F9B newCategory \u6216 newTitle \u4E2D\u7684\u4E00\u4E2A";return await f.debug(`[haimati_move] \u51FA\u53C2:
226
- ${w}`),w}let m=o.category,u=o.title,l=c||m,h=s||u,d=`${m}/${u}`,g=`${l}/${h}`,p=i.map(w=>w.id===o.id?{...w,category:l,title:h}:w);if(await N(e,p),s){let w=await P(e,o.id);w&&await q(e,o.id,h,w.createdAt,w.content,w.version+1)}let y=`\u5DF2\u79FB\u52A8\u6D77\u9A6C\u4F53 #${o.id}
226
+ ${w}`),w}let m=o.category,u=o.title,l=c||m,h=s||u,d=`${m}/${u}`,g=`${l}/${h}`,p=i.map(w=>w.id===o.id?{...w,category:l,title:h}:w);if(await N(e,p),s){let w=await _(e,o.id);w&&await q(e,o.id,h,w.createdAt,w.content,w.version+1)}let y=`\u5DF2\u79FB\u52A8\u6D77\u9A6C\u4F53 #${o.id}
227
227
  \u65E7\u8DEF\u5F84: ${d}
228
228
  \u65B0\u8DEF\u5F84: ${g}`;return await f.debug(`[haimati_move] \u51FA\u53C2:
229
229
  ${y}`),await f.info(`[haimati_move] \u79FB\u52A8\u6210\u529F: #${o.id} ${d} -> ${g}`),y}catch(i){return await C(i,"haimati_move")}}}),haimati_list:$({description:`\u5217\u51FA\u6D77\u9A6C\u4F53\u8BB0\u5FC6\u7CFB\u7EDF\u7684\u7D22\u5F15\u7ED3\u6784\uFF0C\u652F\u6301\u6309\u5206\u7C7B\u6D4F\u89C8\u548C\u67E5\u770B\u8BE6\u7EC6\u5185\u5BB9\u3002
@@ -280,7 +280,7 @@ version:2
280
280
  - category="\u901A\u7528", recursive=true, detail=true \u2192 \u663E\u793A"\u901A\u7528"\u4E0B\u6240\u6709\u6761\u76EE\u7684\u5B8C\u6574\u5185\u5BB9
281
281
  - detail=true \u2192 \u663E\u793A\u6240\u6709\u6761\u76EE\u7684\u8BE6\u7EC6\u5185\u5BB9\uFF08\u6309\u9876\u7EA7\u5206\u7C7B\u5206\u7EC4\uFF09`,args:{category:$.schema.string().optional().describe("\u53EF\u9009\u7684\u5206\u7C7B\u8DEF\u5F84\uFF0C\u5217\u51FA\u8BE5\u5206\u7C7B\u4E0B\u7684\u6761\u76EE"),recursive:$.schema.boolean().optional().default(!1).describe("\u662F\u5426\u9012\u5F52\u904D\u5386\u5B50\u5206\u7C7B\uFF0C\u9ED8\u8BA4false"),detail:$.schema.boolean().optional().default(!1).describe("\u662F\u5426\u663E\u793A\u8BB0\u5FC6\u7684\u8BE6\u7EC6\u5185\u5BB9\uFF0C\u9ED8\u8BA4false")},async execute(t,n){let e=D(n);if(!e)return"\u9519\u8BEF\uFF1A\u7F3A\u5C11 directory \u914D\u7F6E";let r=E(e);if(await f.info(`[haimati_list] \u5F00\u59CB\u5217\u51FA${t.category?` ${t.category}`:" \u5168\u90E8"}${t.detail?" (\u8BE6\u7EC6\u6A21\u5F0F)":""}`),await f.debug(`[haimati_list] \u5165\u53C2: category="${t.category||"(\u65E0)"}, recursive=${t.recursive}, detail=${t.detail}`),!await x(r)){let i="\u9519\u8BEF\uFF1A\u6D77\u9A6C\u4F53\u7D22\u5F15\u4E0D\u5B58\u5728";return await f.debug(`[haimati_list] \u51FA\u53C2:
282
282
  ${i}`),i}try{let i=await I(e);if(t.category){let s=(await vt(e)).split(`
283
- `),m=0,u=[];for(let g of s){if(!g.trim())continue;let p=J(g);if(g.match(/^\s*[│├└─\s]*(.+?)\s*-\s*(\d+)\s*$/))continue;let w=z(g);if(w&&(w==="/"?u[p]="":u[p]=w,u=u.slice(0,p+1),u.filter(Boolean).join("/")===t.category)){m=p;break}}let l=[],h=[];u=[];for(let g of s){if(!g.trim())continue;let p=J(g),y=g.match(/^\s*[│├└─\s]*(.+?)\s*-\s*(\d+)\s*$/);if(y){let b=y[1].trim(),_=y[2];if(p===m+1){let L=u.slice(1,p).filter(Boolean).join("/");L===t.category&&h.push({category:L,title:b,id:_})}continue}let w=z(g);w&&(w==="/"?u[p]="":u[p]=w,u=u.slice(0,p+1),p===m+1&&u.filter(Boolean).join("/")===t.category&&l.push(w))}let d=`## ${t.category}
283
+ `),m=0,u=[];for(let g of s){if(!g.trim())continue;let p=J(g);if(g.match(/^\s*[│├└─\s]*(.+?)\s*-\s*(\d+)\s*$/))continue;let w=z(g);if(w&&(w==="/"?u[p]="":u[p]=w,u=u.slice(0,p+1),u.filter(Boolean).join("/")===t.category)){m=p;break}}let l=[],h=[];u=[];for(let g of s){if(!g.trim())continue;let p=J(g),y=g.match(/^\s*[│├└─\s]*(.+?)\s*-\s*(\d+)\s*$/);if(y){let b=y[1].trim(),P=y[2];if(p===m+1){let L=u.slice(1,p).filter(Boolean).join("/");L===t.category&&h.push({category:L,title:b,id:P})}continue}let w=z(g);w&&(w==="/"?u[p]="":u[p]=w,u=u.slice(0,p+1),p===m+1&&u.filter(Boolean).join("/")===t.category&&l.push(w))}let d=`## ${t.category}
284
284
 
285
285
  `;if(t.recursive){let g=i.filter(y=>y.category===t.category||y.category.startsWith(t.category+"/")),p=new Map;for(let y of g){let b=y.category.slice(t.category.length+1).split("/")[0]||"(\u76F4\u63A5)";p.has(b)||p.set(b,[]),p.get(b).push(y)}for(let[y,w]of p)d+=`### ${y}/
286
286
  `,d+=w.map(b=>`- ${b.title} - ${b.id.padStart(3,"0")}`).join(`
@@ -295,15 +295,15 @@ ${i}`),i}try{let i=await I(e);if(t.category){let s=(await vt(e)).split(`
295
295
  `));if(t.detail){let g=t.recursive?i.filter(p=>p.category===t.category||p.category.startsWith(t.category+"/")):i.filter(p=>p.category===t.category);if(g.length>0)if(t.recursive){let p=`## ${t.category}
296
296
 
297
297
  `,y=new Map;for(let w of g){let b=w.category.slice(t.category.length+1).split("/")[0]||"(\u76F4\u63A5)";y.has(b)||y.set(b,[]),y.get(b).push(w)}for(let[w,b]of y){p+=`### ${w}/
298
- `;for(let _ of b){let L=await P(e,_.id);if(!L){p+=`- ${_.title} - ${_.id.padStart(3,"0")} (\u4E66\u9875\u6587\u4EF6\u4E0D\u5B58\u5728)
298
+ `;for(let P of b){let L=await _(e,P.id);if(!L){p+=`- ${P.title} - ${P.id.padStart(3,"0")} (\u4E66\u9875\u6587\u4EF6\u4E0D\u5B58\u5728)
299
299
 
300
- `;continue}p+=`#### ${_.title} - ${_.id.padStart(3,"0")}
301
- `,p+=W(_,L)+`
300
+ `;continue}p+=`#### ${P.title} - ${P.id.padStart(3,"0")}
301
+ `,p+=W(P,L)+`
302
302
 
303
303
  `}}d=p}else{d+=`
304
304
  **\u8BE6\u7EC6\u5185\u5BB9\uFF1A**
305
305
 
306
- `;for(let p of g){let y=await P(e,p.id);if(!y){d+=`- ${p.title} - ${p.id.padStart(3,"0")} (\u4E66\u9875\u6587\u4EF6\u4E0D\u5B58\u5728)
306
+ `;for(let p of g){let y=await _(e,p.id);if(!y){d+=`- ${p.title} - ${p.id.padStart(3,"0")} (\u4E66\u9875\u6587\u4EF6\u4E0D\u5B58\u5728)
307
307
 
308
308
  `;continue}d+=`#### ${p.title} - ${p.id.padStart(3,"0")}
309
309
  `,d+=W(p,y)+`
@@ -313,14 +313,14 @@ ${d}`),await f.info(`[haimati_list] \u5217\u51FA\u6210\u529F: ${t.category}${t.d
313
313
 
314
314
  `,s=new Map;for(let u of i){let l=u.category.split("/")[0]||"(\u65E0\u5206\u7C7B)";s.has(l)||s.set(l,[]),s.get(l).push(u)}for(let[u,l]of s){c+=`### ${u}/
315
315
 
316
- `;for(let h of l){let d=await P(e,h.id);if(!d){await f.warn(`[haimati_list] detail: #${h.id} (${h.title}) \u4E66\u9875\u6587\u4EF6\u4E0D\u5B58\u5728`);continue}c+=`#### ${h.category}/${h.title} - ${h.id.padStart(3,"0")}
316
+ `;for(let h of l){let d=await _(e,h.id);if(!d){await f.warn(`[haimati_list] detail: #${h.id} (${h.title}) \u4E66\u9875\u6587\u4EF6\u4E0D\u5B58\u5728`);continue}c+=`#### ${h.category}/${h.title} - ${h.id.padStart(3,"0")}
317
317
  `,c+=W(h,d)+`
318
318
 
319
319
  `}}let m=c;return await f.debug(`[haimati_list] \u51FA\u53C2:
320
320
  ${m}`),await f.info("[haimati_list] \u5217\u51FA\u6210\u529F: \u5168\u90E8 (\u8BE6\u7EC6\u6A21\u5F0F)"),m}let o=`## \u6D77\u9A6C\u4F53\u7D22\u5F15
321
321
 
322
322
  ${st(i)||"(\u7A7A)"}`;return await f.debug(`[haimati_list] \u51FA\u53C2:
323
- ${o}`),await f.info("[haimati_list] \u5217\u51FA\u6210\u529F: \u5168\u90E8"),o}catch(i){return await C(i,"haimati_list")}}})}}import{readFile as le,rm as de}from"node:fs/promises";import{basename as A,dirname as k,join as ft}from"node:path";import{fileURLToPath as ge}from"node:url";var me="opencode-haimati";function Nt(t,n){if(!n)return;let e=new AbortController,r=setTimeout(()=>e.abort(),1e4);he(e.signal).then(i=>{i.updated&&(f.info(`[autoUpdate] \u53D1\u73B0\u65B0\u7248\u672C: ${i.current} \u2192 ${i.latest}`),setTimeout(()=>{t.client.tui.showToast({body:{title:"\u6D77\u9A6C\u4F53\u8BB0\u5FC6\u63D2\u4EF6\u66F4\u65B0",message:`${i.name} \u5DF2\u4ECE ${i.current} \u66F4\u65B0\u5230 ${i.latest}\uFF0C\u91CD\u542F OpenCode \u5B8C\u6210\u66F4\u65B0`,variant:"info"}})},5e3))}).catch(()=>{}).finally(()=>clearTimeout(r))}async function he(t){let n=await pe(me);if(!n)return{updated:!1};let e=await ut(ft(n,"package.json"));if(!e?.name||!e.version)return{updated:!1};let r=await xe(e.name,t);if(!r||!be(r,e.version))return{updated:!1};let i=await ye(n,e.name);if(!i)return{updated:!1};try{await de(i,{recursive:!0,force:!0})}catch{return{updated:!1,error:"remove_failed",name:e.name,current:e.version,latest:r}}return{updated:!0,name:e.name,current:e.version,latest:r}}async function pe(t){let n=k(ge(import.meta.url));for(;;){if((await ut(ft(n,"package.json")))?.name===t)return A(n)==="dist"?k(n):n;let r=k(n);if(r===n)return;n=r}}async function ye(t,n){let e=k(t),r=A(e).startsWith("@")?k(e):e;if(A(r)!=="node_modules")return;let i=k(r),a=await ut(ft(i,"package.json")),o=we(i,n)??a?.dependencies?.[n];if(!(!o||!$e(o)))return i}function we(t,n){if(n.startsWith("@")){let[i,a]=n.split("/");if(!i||!a||A(k(t))!==i)return;let o=`${a}@`,c=A(t);return c.startsWith(o)?c.slice(o.length):void 0}let e=`${n}@`,r=A(t);return r.startsWith(e)?r.slice(e.length):void 0}function $e(t){let n=t.trim();return n?!!(n==="latest"||n==="*"||/^[~^]/.test(n)||/^(?:>=|>|<=|<)/.test(n)||/\s+(?:\|\||-|[<>=])\s+/.test(n)):!1}async function ut(t){try{let n=JSON.parse(await le(t,"utf-8"));return n&&typeof n=="object"?n:void 0}catch{return}}async function xe(t,n){try{let e=await fetch(`https://registry.npmjs.org/${encodeURIComponent(t)}/latest`,{signal:n});if(!e.ok)return;let r=await e.json();if(!r||typeof r!="object")return;let i=r.version;return typeof i=="string"?i:void 0}catch{return}}function be(t,n){let e=Rt(t),r=Rt(n);if(!e||!r)return!1;for(let i=0;i<3;i++)if(e.parts[i]!==r.parts[i])return e.parts[i]>r.parts[i];if(!e.pre.length&&r.pre.length)return!0;if(e.pre.length&&!r.pre.length)return!1;for(let i=0;i<Math.max(e.pre.length,r.pre.length);i++){let a=e.pre[i],o=r.pre[i];if(a===void 0)return!1;if(o===void 0)return!0;if(a===o)continue;let c=/^\d+$/.test(a)?Number(a):void 0,s=/^\d+$/.test(o)?Number(o):void 0;return c!==void 0&&s!==void 0?c>s:c!==void 0?!1:s!==void 0?!0:a>o}return!1}function Rt(t){let n=t.match(/^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?(?:\+.+)?$/);if(n)return{parts:[Number(n[1]),Number(n[2]),Number(n[3])],pre:n[4]?.split(".")??[]}}function _e(t){return t.type==="text"}var Ln=async t=>{await $t();let n=O(t.directory),e=At(),r=new Set,i=new Set,a=new Set,o=new Map,c=1e4,s=new Set;return Nt(t,n.autoUpdate!==!1),{tool:e,event:async({event:m})=>{if(m.type==="message.updated"&&m.properties.info.role==="assistant"){let u=m.properties.info;if(u.finish==="stop"&&!r.has(u.id)){if(r.add(u.id),a.has(u.id)){a.delete(u.id);return}if(i.has(u.sessionID))return;let l=o.get(u.sessionID);if(l&&Date.now()<l)return;n.autoWrite===!0&&(i.add(u.sessionID),f.info(`[autoWrite] \u5F00\u59CB\u5F02\u6B65\u8BB0\u5FC6\u5199\u5165 session=${u.sessionID}`),t.client.session.prompt({path:{id:u.sessionID},body:{parts:[{type:"text",text:`\u56DE\u987E\u5F53\u524D\u4F1A\u8BDD\uFF0C\u5BF9\u6D77\u9A6C\u4F53\u8BB0\u5FC6\u8FDB\u884C\u7EF4\u62A4\u3002
323
+ ${o}`),await f.info("[haimati_list] \u5217\u51FA\u6210\u529F: \u5168\u90E8"),o}catch(i){return await C(i,"haimati_list")}}})}}import{readFile as le,rm as de}from"node:fs/promises";import{basename as A,dirname as k,join as ft}from"node:path";import{fileURLToPath as ge}from"node:url";var me="opencode-haimati";function Nt(t,n){if(!n)return;let e=new AbortController,r=setTimeout(()=>e.abort(),1e4);he(e.signal).then(i=>{i.updated&&(f.info(`[autoUpdate] \u53D1\u73B0\u65B0\u7248\u672C: ${i.current} \u2192 ${i.latest}`),setTimeout(()=>{t.client.tui.showToast({body:{title:"\u6D77\u9A6C\u4F53\u8BB0\u5FC6\u63D2\u4EF6\u66F4\u65B0",message:`${i.name} \u5DF2\u4ECE ${i.current} \u66F4\u65B0\u5230 ${i.latest}\uFF0C\u91CD\u542F OpenCode \u5B8C\u6210\u66F4\u65B0`,variant:"info"}})},5e3))}).catch(()=>{}).finally(()=>clearTimeout(r))}async function he(t){let n=await pe(me);if(!n)return{updated:!1};let e=await ut(ft(n,"package.json"));if(!e?.name||!e.version)return{updated:!1};let r=await xe(e.name,t);if(!r||!be(r,e.version))return{updated:!1};let i=await ye(n,e.name);if(!i)return{updated:!1};try{await de(i,{recursive:!0,force:!0})}catch{return{updated:!1,error:"remove_failed",name:e.name,current:e.version,latest:r}}return{updated:!0,name:e.name,current:e.version,latest:r}}async function pe(t){let n=k(ge(import.meta.url));for(;;){if((await ut(ft(n,"package.json")))?.name===t)return A(n)==="dist"?k(n):n;let r=k(n);if(r===n)return;n=r}}async function ye(t,n){let e=k(t),r=A(e).startsWith("@")?k(e):e;if(A(r)!=="node_modules")return;let i=k(r),a=await ut(ft(i,"package.json")),o=we(i,n)??a?.dependencies?.[n];if(!(!o||!$e(o)))return i}function we(t,n){if(n.startsWith("@")){let[i,a]=n.split("/");if(!i||!a||A(k(t))!==i)return;let o=`${a}@`,c=A(t);return c.startsWith(o)?c.slice(o.length):void 0}let e=`${n}@`,r=A(t);return r.startsWith(e)?r.slice(e.length):void 0}function $e(t){let n=t.trim();return n?!!(n==="latest"||n==="*"||/^[~^]/.test(n)||/^(?:>=|>|<=|<)/.test(n)||/\s+(?:\|\||-|[<>=])\s+/.test(n)):!1}async function ut(t){try{let n=JSON.parse(await le(t,"utf-8"));return n&&typeof n=="object"?n:void 0}catch{return}}async function xe(t,n){try{let e=await fetch(`https://registry.npmjs.org/${encodeURIComponent(t)}/latest`,{signal:n});if(!e.ok)return;let r=await e.json();if(!r||typeof r!="object")return;let i=r.version;return typeof i=="string"?i:void 0}catch{return}}function be(t,n){let e=Rt(t),r=Rt(n);if(!e||!r)return!1;for(let i=0;i<3;i++)if(e.parts[i]!==r.parts[i])return e.parts[i]>r.parts[i];if(!e.pre.length&&r.pre.length)return!0;if(e.pre.length&&!r.pre.length)return!1;for(let i=0;i<Math.max(e.pre.length,r.pre.length);i++){let a=e.pre[i],o=r.pre[i];if(a===void 0)return!1;if(o===void 0)return!0;if(a===o)continue;let c=/^\d+$/.test(a)?Number(a):void 0,s=/^\d+$/.test(o)?Number(o):void 0;return c!==void 0&&s!==void 0?c>s:c!==void 0?!1:s!==void 0?!0:a>o}return!1}function Rt(t){let n=t.match(/^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?(?:\+.+)?$/);if(n)return{parts:[Number(n[1]),Number(n[2]),Number(n[3])],pre:n[4]?.split(".")??[]}}function Pe(t){return t.type==="text"}var Ln=async t=>{await $t();let n=O(t.directory),e=At(),r=new Set,i=new Set,a=new Set,o=new Map,c=1e4,s=new Set;return Nt(t,n.autoUpdate!==!1),{tool:e,event:async({event:m})=>{if(m.type==="message.updated"&&m.properties.info.role==="assistant"){let u=m.properties.info;if(u.finish==="stop"&&!r.has(u.id)){if(r.add(u.id),a.has(u.id)){a.delete(u.id);return}if(i.has(u.sessionID))return;let l=o.get(u.sessionID);if(l&&Date.now()<l)return;n.autoWrite===!0&&(i.add(u.sessionID),f.info(`[autoWrite] \u5F00\u59CB\u5F02\u6B65\u8BB0\u5FC6\u5199\u5165 session=${u.sessionID}`),t.client.session.prompt({path:{id:u.sessionID},body:{parts:[{type:"text",text:`\u56DE\u987E\u5F53\u524D\u4F1A\u8BDD\uFF0C\u5BF9\u6D77\u9A6C\u4F53\u8BB0\u5FC6\u8FDB\u884C\u7EF4\u62A4\u3002
324
324
 
325
325
  \u4F60\u7684\u804C\u8D23\uFF1A
326
326
  1. \u5199\u5165\u65B0\u77E5\u8BC6 - \u67B6\u6784\u51B3\u7B56\u3001API\u7528\u6CD5\u3001Bug\u6839\u56E0\u4E0E\u4FEE\u590D\u3001\u914D\u7F6E\u65B9\u6CD5\u3001\u5F00\u53D1\u89C4\u8303\u7B49\u503C\u5F97\u957F\u671F\u8BB0\u5F55\u7684\u77E5\u8BC6
@@ -336,30 +336,17 @@ ${o}`),await f.info("[haimati_list] \u5217\u51FA\u6210\u529F: \u5168\u90E8"),o}c
336
336
  - \u9519\u8BEF\u6216\u8FC7\u671F\u7684\u4FE1\u606F\u76F4\u63A5\u5220\u9664\u6216\u4FEE\u6539
337
337
  - \u4E0D\u786E\u5B9A\u5206\u7C7B\u65F6\uFF0C\u5148\u7528 haimati_list \u67E5\u770B\u73B0\u6709\u7ED3\u6784
338
338
 
339
- \u5982\u679C\u6CA1\u4EC0\u4E48\u53EF\u505A\u7684\uFF0C\u56DE\u590D"\u65E0"`}]}}).then(h=>{let d=h?.data?.info?.id;d&&a.add(d),i.delete(u.sessionID),o.set(u.sessionID,Date.now()+c),f.info(`[autoWrite] AI\u8BB0\u5FC6\u5199\u5165\u5B8C\u6210 session=${u.sessionID}`)}).catch(h=>{i.delete(u.sessionID),o.set(u.sessionID,Date.now()+c);let d=h instanceof Error?h.message:String(h);f.error(`[autoWrite] \u5931\u8D25: ${d}`)})),await f.debug(`[message.updated] AI\u56DE\u590D\u7ED3\u675F messageID=${u.id}`)}}},"chat.message":async(m,u)=>{if(s.has(u.message.sessionID))return;s.add(u.message.sessionID);let l=u.parts.filter(_e);l.length!==0&&(u.parts.unshift({id:`prt_auto_reminder_${Date.now()}`,sessionID:l[0].sessionID??u.message.sessionID,messageID:l[0].messageID??u.message.id,type:"text",text:`<\u6D77\u9A6C\u4F53\u63D2\u4EF6\u81EA\u52A8\u63D0\u793A>
339
+ \u5982\u679C\u6CA1\u4EC0\u4E48\u53EF\u505A\u7684\uFF0C\u56DE\u590D"\u65E0"`}]}}).then(h=>{let d=h?.data?.info?.id;d&&a.add(d),i.delete(u.sessionID),o.set(u.sessionID,Date.now()+c),f.info(`[autoWrite] AI\u8BB0\u5FC6\u5199\u5165\u5B8C\u6210 session=${u.sessionID}`)}).catch(h=>{i.delete(u.sessionID),o.set(u.sessionID,Date.now()+c);let d=h instanceof Error?h.message:String(h);f.error(`[autoWrite] \u5931\u8D25: ${d}`)})),await f.debug(`[message.updated] AI\u56DE\u590D\u7ED3\u675F messageID=${u.id}`)}}},"chat.message":async(m,u)=>{if(s.has(u.message.sessionID))return;s.add(u.message.sessionID);let l=u.parts.filter(Pe);l.length!==0&&(u.parts.unshift({id:`prt_auto_reminder_${Date.now()}`,sessionID:l[0].sessionID??u.message.sessionID,messageID:l[0].messageID??u.message.id,type:"text",text:`<\u6D77\u9A6C\u4F53\u63D2\u4EF6\u81EA\u52A8\u63D0\u793A>
340
340
  \u4F60\u6709\u4E00\u5957\u6D77\u9A6C\u4F53\u8BB0\u5FC6\u63D2\u4EF6\u53EF\u7528
341
341
 
342
342
  # \u5DE5\u4F5C\u6D41\u7A0B
343
343
 
344
- 1\u3001\u5DE5\u4F5C\u5F00\u59CB\u524D\u8BFB\u53D6\u8BB0\u5FC6\uFF1A
345
- - \u4ECE\u7528\u6237\u63D0\u793A\u8BCD\u4E2D\u63D0\u53D6\u5173\u952E\u8BCD -> haimati_search \u641C\u7D22 -> haimati_read \u8BFB\u53D6\u6240\u6709\u76F8\u5173\u8BB0\u5FC6
346
- - \u5982\u679C\u63D0\u53D6\u5230\u7684\u5173\u952E\u8BCD\u4E3A\u7A7A\uFF0C\u5219\u4E0D\u8BFB\u53D6\u6D77\u9A6C\u4F53
344
+ 1\u3001\u786E\u8BA4\u6D77\u9A6C\u4F53\u4E2D\u662F\u5426\u5B58\u5728\u76F8\u5173\u8BB0\u5FC6\uFF0C\u5982\u679C\u5B58\u5728\uFF0C\u5219\u8BFB\u53D6\u6D77\u9A6C\u4F53\u4E2D\u7684\u76F8\u5173\u8BB0\u5FC6
347
345
 
348
- 2\u3001\u5DE5\u4F5C\u65F6\u8BFB\u53D6\u8BB0\u5FC6\uFF1A
349
- - \u5206\u6790\u9879\u76EE\u3001\u63A2\u7D22\u9879\u76EE
350
- - \u63D0\u53D6\u5728\u5DE5\u4F5C\u4E2D\u9047\u5230\u7684\u6A21\u5757\u3001\u4E1A\u52A1\u3001\u5904\u7406\u903B\u8F91\u65B9\u6CD5\u7684\u5173\u952E\u8BCD -> haimati_search \u641C\u7D22 -> haimati_read \u8BFB\u53D6\u6240\u6709\u76F8\u5173\u8BB0\u5FC6
351
- - \u5B9E\u73B0\u7528\u6237\u9700\u6C42
352
-
353
- 3\u3001\u5DE5\u4F5C\u7ED3\u675F\u540E\u603B\u7ED3\u8BB0\u5FC6\uFF1A
346
+ 2\u3001\u5DE5\u4F5C\u7ED3\u675F\u540E\u603B\u7ED3\u8BB0\u5FC6\uFF1A
354
347
  - \u5C06\u5DE5\u4F5C\u4E2D\u5B66\u4E60\u7684\u65B0\u77E5\u8BC6\u3001\u7ECF\u9A8C\u5199\u5165\u6D77\u9A6C\u4F53
355
348
  - \u4FEE\u6539\u9519\u8BEF\u7684\u6D77\u9A6C\u4F53\u8BB0\u5FC6
356
349
  - \u5220\u9664\u8FC7\u671F\u7684\u4FE1\u606F
357
350
  - \u6574\u5408\u91CD\u590D\u7684\u8BB0\u5FC6
358
351
  - \u5982\u679C\u5B58\u5728\u672A\u4EE5\u9879\u76EE\u540D\u4F5C\u4E3A\u6839\u8282\u70B9\u7684\u6D77\u9A6C\u4F53\u6761\u76EE\uFF0C\u5219\u8C03\u6574
359
-
360
- \u6D77\u9A6C\u4F53\u8BB0\u5FC6\u539F\u5219\uFF1A
361
- - \u8BB0\u5FC6\u5185\u5BB9\u4E0D\u91CD\u590D
362
- - \u5206\u7C7B\u4EE5\u9879\u76EE\u540D\u4F5C\u4E3A\u6839\u8282\u70B9
363
- - \u8282\u7EA6TOKEN\uFF0C\u7CBE\u7B80\u63CF\u8FF0
364
- - \u9519\u8BEF\u6216\u8FC7\u671F\u7684\u4FE1\u606F\u76F4\u63A5\u5220\u9664
365
352
  </\u6D77\u9A6C\u4F53\u63D2\u4EF6\u81EA\u52A8\u63D0\u793A>`,synthetic:!0}),await f.info("[chat.message] \u6CE8\u5165\u5DE5\u4F5C\u89C4\u5219\u63D0\u793A"))}}};export{Ln as HaimatiPlugin};
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-haimati",
3
- "version": "1.4.0",
3
+ "version": "1.4.1",
4
4
  "description": "OpenCode plugin for a file-based memory system inspired by the hippocampus, providing long-term memory storage and retrieval across sessions.",
5
5
  "main": "./dist/index.js",
6
6
  "type": "module",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-haimati",
3
- "version": "1.4.0",
3
+ "version": "1.4.1",
4
4
  "description": "OpenCode plugin for a file-based memory system inspired by the hippocampus, providing long-term memory storage and retrieval across sessions.",
5
5
  "main": "./dist/index.js",
6
6
  "type": "module",