shennian 0.2.94 → 0.2.95

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.
@@ -211,8 +211,8 @@
211
211
  },
212
212
  {
213
213
  "file": "src/channels/wechat-channel/fingerprint.js",
214
- "beforeBytes": 3903,
215
- "afterBytes": 1919
214
+ "beforeBytes": 4353,
215
+ "afterBytes": 2143
216
216
  },
217
217
  {
218
218
  "file": "src/channels/wechat-channel/helper-assets.js",
@@ -1 +1 @@
1
- function l(n){return[n.title,n.preview,n.timeText,n.unreadText].map(e=>a(e)).filter(Boolean).join("|")}function h(n){const e=n.minScore??.72,t=n.visibleItems.map(o=>({...o,fingerprint:o.fingerprint||l(o)})),i=[];for(const o of n.targets){let r=null;for(const s of t){const c=d(o,s);(!r||c.score>r.score)&&(r=c)}if(r&&r.score>=e&&r.reason!=="none"){i.push(r);const s=t.findIndex(c=>c===r.item);s>=0&&t.splice(s,1)}}return i}function d(n,e){const t=e.fingerprint||l(e);if(n.lastConversationFingerprint&&t&&n.lastConversationFingerprint===t)return{bindingId:n.bindingId,item:e,score:1,reason:"fingerprint"};if(p(n.conversationDisplayName)&&!g(e.title,n.conversationDisplayName))return{bindingId:n.bindingId,item:e,score:0,reason:"none"};const i=f(n.conversationDisplayName,e.title),o=n.lastPreview?f(n.lastPreview,e.preview):0;return i>=.8&&o>=.55?{bindingId:n.bindingId,item:e,score:i*.7+o*.3,reason:"title-preview"}:i>=.88?{bindingId:n.bindingId,item:e,score:i*.86,reason:"title"}:{bindingId:n.bindingId,item:e,score:i*.5+o*.2,reason:"none"}}function a(n){return typeof n=="string"?n.trim().replace(/\s+/g," ").toLowerCase():""}function p(n){const e=typeof n=="string"?n.trim():"";return/^[A-Z0-9_-]{1,6}$/.test(e)&&/[A-Z]/.test(e)}function g(n,e){const t=typeof n=="string"?n.trim().replace(/\s+/g," "):"",i=typeof e=="string"?e.trim().replace(/\s+/g," "):"";return!t||!i?!1:t===i?!0:t.replace(/\d+$/u,"")===i}function f(n,e){const t=a(n),i=a(e);return!t||!i?0:t===i?1:1-u(t,i)/Math.max(t.length,i.length)}function u(n,e){const t=Array.from({length:e.length+1},(o,r)=>r),i=Array.from({length:e.length+1},()=>0);for(let o=1;o<=n.length;o+=1){i[0]=o;for(let r=1;r<=e.length;r+=1)i[r]=Math.min(t[r]+1,i[r-1]+1,t[r-1]+(n[o-1]===e[r-1]?0:1));for(let r=0;r<=e.length;r+=1)t[r]=i[r]}return t[e.length]}export{l as buildWeChatConversationFingerprint,h as matchWeChatConversationFingerprints,d as scoreConversationFingerprint};
1
+ function l(n){return[n.title,n.preview,n.timeText,n.unreadText].map(e=>a(e)).filter(Boolean).join("|")}function h(n){const e=n.minScore??.72,t=n.visibleItems.map(o=>({...o,fingerprint:o.fingerprint||l(o)})),r=[];for(const o of n.targets){let i=null;for(const s of t){const c=u(o,s);(!i||c.score>i.score)&&(i=c)}if(i&&i.score>=e&&i.reason!=="none"){r.push(i);const s=t.findIndex(c=>c===i.item);s>=0&&t.splice(s,1)}}return r}function u(n,e){const t=e.fingerprint||l(e);if(n.lastConversationFingerprint&&t&&n.lastConversationFingerprint===t)return{bindingId:n.bindingId,item:e,score:1,reason:"fingerprint"};if(f(n.conversationDisplayName)&&d(e.title,n.conversationDisplayName))return{bindingId:n.bindingId,item:e,score:1,reason:"title"};if(f(n.conversationDisplayName)&&!d(e.title,n.conversationDisplayName))return{bindingId:n.bindingId,item:e,score:0,reason:"none"};const r=p(n.conversationDisplayName,e.title),o=n.lastPreview?p(n.lastPreview,e.preview):0;return r>=.8&&o>=.55?{bindingId:n.bindingId,item:e,score:r*.7+o*.3,reason:"title-preview"}:r>=.88?{bindingId:n.bindingId,item:e,score:r*.86,reason:"title"}:{bindingId:n.bindingId,item:e,score:r*.5+o*.2,reason:"none"}}function a(n){return typeof n=="string"?n.trim().replace(/\s+/g," ").toLowerCase():""}function f(n){const e=typeof n=="string"?n.trim():"";return/^[A-Z0-9_-]{1,6}$/.test(e)&&/[A-Z]/.test(e)}function d(n,e){const t=typeof n=="string"?n.trim().replace(/\s+/g," "):"",r=typeof e=="string"?e.trim().replace(/\s+/g," "):"";return!t||!r?!1:t===r?!0:g(t)===r}function g(n){return n.normalize("NFKC").replace(/\s*[\((][0-9]+[\))]\s*$/u,"").replace(/\s+/g," ").trim()}function p(n,e){const t=a(n),r=a(e);return!t||!r?0:t===r?1:1-v(t,r)/Math.max(t.length,r.length)}function v(n,e){const t=Array.from({length:e.length+1},(o,i)=>i),r=Array.from({length:e.length+1},()=>0);for(let o=1;o<=n.length;o+=1){r[0]=o;for(let i=1;i<=e.length;i+=1)r[i]=Math.min(t[i]+1,r[i-1]+1,t[i-1]+(n[o-1]===e[i-1]?0:1));for(let i=0;i<=e.length;i+=1)t[i]=r[i]}return t[e.length]}export{l as buildWeChatConversationFingerprint,h as matchWeChatConversationFingerprints,u as scoreConversationFingerprint};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shennian",
3
- "version": "0.2.94",
3
+ "version": "0.2.95",
4
4
  "description": "Shennian — AI Agent Control Plane CLI",
5
5
  "type": "module",
6
6
  "bin": {