opencode-haimati 2.0.4 → 2.1.0
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 +2 -2
- package/dist/package.json +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -118,7 +118,7 @@ ${h}`),await s.info(`[haimati_list] \u5217\u51FA\u6210\u529F: ${t.category}${t.d
|
|
|
118
118
|
${g}`),await s.info("[haimati_list] \u5217\u51FA\u6210\u529F: \u5168\u90E8 (\u8BE6\u7EC6\u6A21\u5F0F)"),g}let a=`## \u6D77\u9A6C\u4F53\u7D22\u5F15
|
|
119
119
|
|
|
120
120
|
${$t(i)||"(\u7A7A)"}`;return await s.debug(`[haimati_list] \u51FA\u53C2:
|
|
121
|
-
${a}`),await s.info("[haimati_list] \u5217\u51FA\u6210\u529F: \u5168\u90E8"),a}catch(i){return await R(i,"haimati_list")}}})}}import{readFile as He,rm as Ge}from"node:fs/promises";import{basename as z,dirname as N,join as Mt}from"node:path";import{fileURLToPath as ze}from"node:url";var Je="opencode-haimati";function se(t,n){if(!n)return;let e=new AbortController,r=setTimeout(()=>e.abort(),1e4);Ke(e.signal).then(i=>{i.updated&&(s.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 Ke(t){let n=await Be(Je);if(!n)return{updated:!1};let e=await _t(Mt(n,"package.json"));if(!e?.name||!e.version)return{updated:!1};let r=await Xe(e.name,t);if(!r||!Ze(r,e.version))return{updated:!1};let i=await Qe(n,e.name);if(!i)return{updated:!1};try{await Ge(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 Be(t){let n=N(ze(import.meta.url));for(;;){if((await _t(Mt(n,"package.json")))?.name===t)return z(n)==="dist"?N(n):n;let r=N(n);if(r===n)return;n=r}}async function Qe(t,n){let e=N(t),r=z(e).startsWith("@")?N(e):e;if(z(r)!=="node_modules")return;let i=N(r),o=await _t(Mt(i,"package.json")),a=Ve(i,n)??o?.dependencies?.[n];if(!(!a||!Ye(a)))return i}function Ve(t,n){if(n.startsWith("@")){let[i,o]=n.split("/");if(!i||!o||z(N(t))!==i)return;let a=`${o}@`,l=z(t);return l.startsWith(a)?l.slice(a.length):void 0}let e=`${n}@`,r=z(t);return r.startsWith(e)?r.slice(e.length):void 0}function Ye(t){let n=t.trim();return n?!!(n==="latest"||n==="*"||/^[~^]/.test(n)||/^(?:>=|>|<=|<)/.test(n)||/\s+(?:\|\||-|[<>=])\s+/.test(n)):!1}async function _t(t){try{let n=JSON.parse(await He(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 Ze(t,n){let e=ae(t),r=ae(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 o=e.pre[i],a=r.pre[i];if(o===void 0)return!1;if(a===void 0)return!0;if(o===a)continue;let l=/^\d+$/.test(o)?Number(o):void 0,u=/^\d+$/.test(a)?Number(a):void 0;return l!==void 0&&u!==void 0?l>u:l!==void 0?!1:u!==void 0?!0:o>a}return!1}function ae(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(".")??[]}}var tn="2026-06-03 15:
|
|
121
|
+
${a}`),await s.info("[haimati_list] \u5217\u51FA\u6210\u529F: \u5168\u90E8"),a}catch(i){return await R(i,"haimati_list")}}})}}import{readFile as He,rm as Ge}from"node:fs/promises";import{basename as z,dirname as N,join as Mt}from"node:path";import{fileURLToPath as ze}from"node:url";var Je="opencode-haimati";function se(t,n){if(!n)return;let e=new AbortController,r=setTimeout(()=>e.abort(),1e4);Ke(e.signal).then(i=>{i.updated&&(s.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 Ke(t){let n=await Be(Je);if(!n)return{updated:!1};let e=await _t(Mt(n,"package.json"));if(!e?.name||!e.version)return{updated:!1};let r=await Xe(e.name,t);if(!r||!Ze(r,e.version))return{updated:!1};let i=await Qe(n,e.name);if(!i)return{updated:!1};try{await Ge(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 Be(t){let n=N(ze(import.meta.url));for(;;){if((await _t(Mt(n,"package.json")))?.name===t)return z(n)==="dist"?N(n):n;let r=N(n);if(r===n)return;n=r}}async function Qe(t,n){let e=N(t),r=z(e).startsWith("@")?N(e):e;if(z(r)!=="node_modules")return;let i=N(r),o=await _t(Mt(i,"package.json")),a=Ve(i,n)??o?.dependencies?.[n];if(!(!a||!Ye(a)))return i}function Ve(t,n){if(n.startsWith("@")){let[i,o]=n.split("/");if(!i||!o||z(N(t))!==i)return;let a=`${o}@`,l=z(t);return l.startsWith(a)?l.slice(a.length):void 0}let e=`${n}@`,r=z(t);return r.startsWith(e)?r.slice(e.length):void 0}function Ye(t){let n=t.trim();return n?!!(n==="latest"||n==="*"||/^[~^]/.test(n)||/^(?:>=|>|<=|<)/.test(n)||/\s+(?:\|\||-|[<>=])\s+/.test(n)):!1}async function _t(t){try{let n=JSON.parse(await He(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 Ze(t,n){let e=ae(t),r=ae(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 o=e.pre[i],a=r.pre[i];if(o===void 0)return!1;if(a===void 0)return!0;if(o===a)continue;let l=/^\d+$/.test(o)?Number(o):void 0,u=/^\d+$/.test(a)?Number(a):void 0;return l!==void 0&&u!==void 0?l>u:l!==void 0?!1:u!==void 0?!0:o>a}return!1}function ae(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(".")??[]}}var tn="2026-06-03 15:29:12",ce=!1;function en(t){return t.type==="text"&&t.ignored!==!0}var $i=async t=>{await Tt(),ce||(ce=!0,await s.debug(`[HaimatiPlugin] \u4EE3\u7801\u6700\u540E\u4FEE\u6539\u65E5\u671F: ${tn}`));let n=Y(t.directory),e=oe(),r=new Set,i=new Set,o=new Set,a=new Map,l=1e4,u=new Set,g=new Map;function d(c){let f=g.get(c);return f||(f=new Map,g.set(c,f)),f}return se(t,n.autoUpdate!==!1),ie(t.directory).then(c=>{c>0&&s.info(`[HaimatiPlugin] \u542F\u52A8\u65F6\u6E05\u7406\u4E86 ${c} \u4E2A\u4E0D\u5B58\u5728\u7684\u6587\u4EF6\u5173\u8054`)}).catch(c=>{s.warn(`[HaimatiPlugin] \u6E05\u7406\u8FC7\u671F\u6587\u4EF6\u5173\u8054\u5931\u8D25: ${c instanceof Error?c.message:String(c)}`)}),{tool:e,event:async({event:c})=>{if(c.type==="message.updated"&&c.properties.info.role==="assistant"){let f=c.properties.info;if(f.finish==="stop"&&!r.has(f.id)){if(r.add(f.id),o.has(f.id)){o.delete(f.id);return}if(i.has(f.sessionID))return;let h=a.get(f.sessionID);if(h&&Date.now()<h)return;n.autoWrite===!0&&(i.add(f.sessionID),s.info(`[autoWrite] \u5F00\u59CB\u5F02\u6B65\u8BB0\u5FC6\u5199\u5165 session=${f.sessionID}`),t.client.session.prompt({path:{id:f.sessionID},body:{parts:[{type:"text",text:`\u56DE\u987E\u5F53\u524D\u4F1A\u8BDD\uFF0C\u5BF9\u6D77\u9A6C\u4F53\u8BB0\u5FC6\u8FDB\u884C\u7EF4\u62A4\u3002
|
|
122
122
|
|
|
123
123
|
\u4F60\u7684\u804C\u8D23\uFF1A
|
|
124
124
|
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
|
|
@@ -159,4 +159,4 @@ ${le}`),_.set(O,q.updatedAt)}if(C.length>0){f.output+=`
|
|
|
159
159
|
${C.join(`
|
|
160
160
|
|
|
161
161
|
`)}
|
|
162
|
-
</system-reminder>`,await s.debug(`[tool.execute.after] \u6CE8\u5165${C.length}\u6761\u8BB0\u5FC6: ${y}`);let O=St.map(I=>`#${I.padStart(3,"0")}`).join("\u3001");t.client.session.prompt({path:{id:p},body:{noReply:!0,parts:[{type:"text",text:`\u6D77\u9A6C\u4F53: \u6587\u4EF6 ${y} \
|
|
162
|
+
</system-reminder>`,await s.debug(`[tool.execute.after] \u6CE8\u5165${C.length}\u6761\u8BB0\u5FC6: ${y}`);let O=St.map(I=>`#${I.padStart(3,"0")}`).join("\u3001");t.client.session.prompt({path:{id:p},body:{noReply:!0,parts:[{type:"text",text:`\u6D77\u9A6C\u4F53: \u8BFB\u53D6\u6587\u4EF6 ${y} \uFF0C\u672C\u6B21\u6CE8\u5165\u4E86 ${O}\uFF08\u4E4B\u524D\u5DF2\u6CE8\u5165\u8FC7\u7684\u4E0D\u518D\u91CD\u590D\u6CE8\u5165\uFF09`,ignored:!0}]}}).catch(I=>{s.warn(`[tool.execute.after] \u53D1\u9001\u7528\u6237\u901A\u77E5\u5931\u8D25: ${I instanceof Error?I.message:String(I)}`)})}}catch(m){await s.warn(`[tool.execute.after] \u68C0\u67E5\u6587\u4EF6\u5173\u8054\u5931\u8D25: ${m instanceof Error?m.message:String(m)}`)}}}};export{$i as HaimatiPlugin};
|
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opencode-haimati",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.1.0",
|
|
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": "2.0
|
|
3
|
+
"version": "2.1.0",
|
|
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",
|