@zhin.js/adapter-weixin-ilink 1.0.0 → 1.0.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.
Files changed (44) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +6 -6
  3. package/client/LoginAssistPanel.tsx +2 -2
  4. package/client/WeixinIlinkManagement.tsx +13 -13
  5. package/dist/index.js +1 -1
  6. package/lib/adapter.d.ts +5 -4
  7. package/lib/adapter.d.ts.map +1 -1
  8. package/lib/adapter.js +4 -3
  9. package/lib/adapter.js.map +1 -1
  10. package/lib/credentials.d.ts +6 -6
  11. package/lib/credentials.d.ts.map +1 -1
  12. package/lib/credentials.js +12 -12
  13. package/lib/credentials.js.map +1 -1
  14. package/lib/{bot.d.ts → endpoint.d.ts} +6 -6
  15. package/lib/endpoint.d.ts.map +1 -0
  16. package/lib/{bot.js → endpoint.js} +6 -6
  17. package/lib/endpoint.js.map +1 -0
  18. package/lib/index.d.ts +1 -1
  19. package/lib/index.d.ts.map +1 -1
  20. package/lib/index.js +2 -2
  21. package/lib/index.js.map +1 -1
  22. package/lib/login.d.ts +3 -3
  23. package/lib/login.d.ts.map +1 -1
  24. package/lib/login.js +2 -2
  25. package/lib/login.js.map +1 -1
  26. package/lib/routes.js +7 -7
  27. package/lib/routes.js.map +1 -1
  28. package/lib/types.d.ts +1 -1
  29. package/lib/types.d.ts.map +1 -1
  30. package/lib/typing-indicator.d.ts +4 -4
  31. package/lib/typing-indicator.d.ts.map +1 -1
  32. package/lib/typing-indicator.js +10 -10
  33. package/lib/typing-indicator.js.map +1 -1
  34. package/package.json +16 -12
  35. package/src/adapter.ts +7 -5
  36. package/src/credentials.ts +12 -12
  37. package/src/{bot.ts → endpoint.ts} +8 -8
  38. package/src/index.ts +2 -2
  39. package/src/login.ts +6 -6
  40. package/src/routes.ts +7 -7
  41. package/src/types.ts +1 -1
  42. package/src/typing-indicator.ts +11 -11
  43. package/lib/bot.d.ts.map +0 -1
  44. package/lib/bot.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # @zhin.js/adapter-weixin-ilink
2
2
 
3
+ ## 1.0.1
4
+
5
+ ### Patch Changes
6
+
7
+ - d8def69: fix: 性能优化
8
+ - 2ef4896: fix: 更新概念 Bot=>Endpoint,已适配后续更多的业务场景;统一角色权限
9
+ - Updated dependencies [d8def69]
10
+ - Updated dependencies [2ef4896]
11
+ - @zhin.js/host-router@1.0.1
12
+ - @zhin.js/host-api@1.0.1
13
+ - @zhin.js/agent@0.2.1
14
+ - @zhin.js/core@1.2.1
15
+ - zhin.js@2.0.1
16
+ - @zhin.js/client@2.0.3
17
+
3
18
  ## 1.0.0
4
19
 
5
20
  ### Patch Changes
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @zhin.js/adapter-weixin-ilink
2
2
 
3
- 通过微信 **iLink Bot API**(ClawBot 灰度入口)接入**个人微信**,支持文本与全量媒体收发、输入状态提示。
3
+ 通过微信 **iLink Endpoint API**(ClawBot 灰度入口)接入**个人微信**,支持文本与全量媒体收发、输入状态提示。
4
4
 
5
5
  协议实现移植自 [Tencent/openclaw-weixin](https://github.com/Tencent/openclaw-weixin)(MIT),已去除 OpenClaw 耦合,`bot_agent` 默认为 `Zhin.js/<version>`。
6
6
 
@@ -24,7 +24,7 @@
24
24
  ## 最小配置
25
25
 
26
26
  ```yaml
27
- bots:
27
+ endpoints:
28
28
  - context: weixin-ilink
29
29
  name: my-wechat
30
30
  # botAgent: "Zhin.js/1.0.0" # 可选,观测用
@@ -56,7 +56,7 @@ data/weixin-ilink/<bot-name>.json
56
56
 
57
57
  - Console 页面:`/weixin-ilink`(概览 + 登录辅助)
58
58
  - HTTP API:`GET /api/login-assist/pending`、`POST /api/login-assist/submit`、`POST /api/login-assist/cancel`
59
- - Bot 状态:`GET /api/weixin-ilink/bots`
59
+ - Endpoint 状态:`GET /api/weixin-ilink/endpoints`
60
60
 
61
61
  ## Typing Indicator
62
62
 
@@ -72,9 +72,9 @@ typingIndicator:
72
72
 
73
73
  ## 出站说明
74
74
 
75
- 回复必须携带入站时缓存的 `context_token`(按 `botId + peerUserId`)。若用户久未发消息导致 token 缺失,出站会拒绝并打 warn。
75
+ 回复必须携带入站时缓存的 `context_token`(按 `endpointId + peerUserId`)。若用户久未发消息导致 token 缺失,出站会拒绝并打 warn。
76
76
 
77
- 所有出站走标准链路:`Message.$reply` / `Adapter.sendMessage` → `before.sendMessage` → `bot.$sendMessage`。
77
+ 所有出站走标准链路:`Message.$reply` / `Adapter.sendMessage` → `before.sendMessage` → `endpoint.$sendMessage`。
78
78
 
79
79
  **图文限制**:微信单条消息不支持图文混排。适配器会自动:
80
80
  - **出站**:先单独发文本,再发纯媒体(不带 caption)
@@ -85,7 +85,7 @@ typingIndicator:
85
85
  | 现象 | 可能原因 |
86
86
  |---|---|
87
87
  | 无法扫码 / 无 ClawBot 入口 | 未灰度;需最新微信 + 灰度资格 |
88
- | 二维码过期 | 重启 bot 重新获取 |
88
+ | 二维码过期 | 重启 Endpoint 重新获取 |
89
89
  | 发不出消息 | 缺少 `context_token`;让用户先发一条消息 |
90
90
  | `errcode -14` | 会话过期,适配器自动暂停 1 小时后重试 |
91
91
  | Console 无待办 | 确认 `host-router` 已加载且访问 `/weixin-ilink` |
@@ -11,7 +11,7 @@ import { apiFetch } from "./utils/api";
11
11
  interface PendingLoginTask {
12
12
  id: string;
13
13
  adapter: string;
14
- botId: string;
14
+ endpointId: string;
15
15
  type: string;
16
16
  payload?: {
17
17
  message?: string;
@@ -141,7 +141,7 @@ export default function LoginAssistPanel() {
141
141
  </div>
142
142
  <div className="flex gap-1 text-xs">
143
143
  <span className="px-2 py-0.5 rounded border">{task.adapter}</span>
144
- <span className="px-2 py-0.5 rounded bg-muted">{task.botId}</span>
144
+ <span className="px-2 py-0.5 rounded bg-muted">{task.endpointId}</span>
145
145
  </div>
146
146
  </div>
147
147
 
@@ -3,7 +3,7 @@ import { Bot, LogIn, RefreshCw, Wifi, WifiOff, Loader2 } from "lucide-react";
3
3
  import LoginAssistPanel from "./LoginAssistPanel";
4
4
  import { apiFetch } from "./utils/api";
5
5
 
6
- interface BotRow {
6
+ interface EndpointRow {
7
7
  name: string;
8
8
  connected: boolean;
9
9
  status: string;
@@ -14,7 +14,7 @@ type Tab = "overview" | "login";
14
14
 
15
15
  export default function WeixinIlinkManagement() {
16
16
  const [tab, setTab] = useState<Tab>("overview");
17
- const [bots, setBots] = useState<BotRow[]>([]);
17
+ const [endpoints, setEndpoints] = useState<EndpointRow[]>([]);
18
18
  const [loading, setLoading] = useState(true);
19
19
  const [err, setErr] = useState<string | null>(null);
20
20
 
@@ -22,13 +22,13 @@ export default function WeixinIlinkManagement() {
22
22
  setLoading(true);
23
23
  setErr(null);
24
24
  try {
25
- const res = await apiFetch("/api/weixin-ilink/bots");
26
- const json = (await res.json()) as { success?: boolean; data?: BotRow[]; message?: string };
25
+ const res = await apiFetch("/api/weixin-ilink/endpoints");
26
+ const json = (await res.json()) as { success?: boolean; data?: EndpointRow[]; message?: string };
27
27
  if (!res.ok || !json.success) throw new Error(json.message || "加载失败");
28
- setBots(Array.isArray(json.data) ? json.data : []);
28
+ setEndpoints(Array.isArray(json.data) ? json.data : []);
29
29
  } catch (e) {
30
30
  setErr((e as Error).message);
31
- setBots([]);
31
+ setEndpoints([]);
32
32
  } finally {
33
33
  setLoading(false);
34
34
  }
@@ -99,22 +99,22 @@ export default function WeixinIlinkManagement() {
99
99
  <div className="flex justify-center py-12">
100
100
  <Loader2 className="w-6 h-6 animate-spin text-blue-500" />
101
101
  </div>
102
- ) : bots.length === 0 ? (
102
+ ) : endpoints.length === 0 ? (
103
103
  <div className="border rounded-lg p-8 text-center text-muted-foreground">
104
- 暂无 weixin-ilink 机器人实例
104
+ 暂无 weixin-ilink Endpoint 实例
105
105
  </div>
106
106
  ) : (
107
107
  <div className="grid gap-3">
108
- {bots.map((bot) => (
109
- <div key={bot.name} className="border rounded-lg p-4 flex items-center justify-between">
108
+ {endpoints.map((endpoint) => (
109
+ <div key={endpoint.name} className="border rounded-lg p-4 flex items-center justify-between">
110
110
  <div>
111
- <div className="font-semibold">{bot.name}</div>
111
+ <div className="font-semibold">{endpoint.name}</div>
112
112
  <div className="text-xs text-muted-foreground mt-1">
113
- 凭证:{bot.hasCredentials ? "已保存" : "未登录"}
113
+ 凭证:{endpoint.hasCredentials ? "已保存" : "未登录"}
114
114
  </div>
115
115
  </div>
116
116
  <div className="flex items-center gap-2 text-sm">
117
- {bot.connected ? (
117
+ {endpoint.connected ? (
118
118
  <>
119
119
  <Wifi className="w-4 h-4 text-green-500" />
120
120
  <span className="text-green-600">在线</span>
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import{useCallback as he,useEffect as ge,useState as q}from"react";import{forwardRef as ae,createElement as te}from"react";var y=(...e)=>e.filter((t,l,f)=>!!t&&t.trim()!==""&&f.indexOf(t)===l).join(" ").trim();var W=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();var E=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(t,l,f)=>f?f.toUpperCase():l.toLowerCase());var U=e=>{let t=E(e);return t.charAt(0).toUpperCase()+t.slice(1)};import{forwardRef as ee,createElement as z}from"react";var R={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var V=e=>{for(let t in e)if(t.startsWith("aria-")||t==="role"||t==="title")return!0;return!1};import{createContext as j,useContext as Y,useMemo as De,createElement as ye}from"react";var $=j({});var N=()=>Y($);var X=ee(({color:e,size:t,strokeWidth:l,absoluteStrokeWidth:f,className:n="",children:r,iconNode:m,...x},p)=>{let{size:s=24,strokeWidth:i=2,absoluteStrokeWidth:P=!1,color:b="currentColor",className:v=""}=N()??{},a=f??P?Number(l??i)*24/Number(t??s):l??i;return z("svg",{ref:p,...R,width:t??s??R.width,height:t??s??R.height,stroke:e??b,strokeWidth:a,className:y("lucide",v,n),...!r&&!V(x)&&{"aria-hidden":"true"},...x},[...m.map(([g,I])=>z(g,I)),...Array.isArray(r)?r:[r]])});var d=(e,t)=>{let l=ae(({className:f,...n},r)=>te(X,{ref:r,iconNode:t,className:y(`lucide-${W(U(e))}`,`lucide-${e}`,f),...n}));return l.displayName=U(e),l};var oe=[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]],k=d("bot",oe);var ue=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]],C=d("circle-alert",ue);var de=[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],L=d("loader-circle",de);var le=[["path",{d:"m10 17 5-5-5-5",key:"1bsop3"}],["path",{d:"M15 12H3",key:"6jk70r"}],["path",{d:"M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4",key:"u53s6r"}]],S=d("log-in",le);var fe=[["rect",{width:"5",height:"5",x:"3",y:"3",rx:"1",key:"1tu5fj"}],["rect",{width:"5",height:"5",x:"16",y:"3",rx:"1",key:"1v8r4q"}],["rect",{width:"5",height:"5",x:"3",y:"16",rx:"1",key:"1x03jg"}],["path",{d:"M21 16h-3a2 2 0 0 0-2 2v3",key:"177gqh"}],["path",{d:"M21 21v.01",key:"ents32"}],["path",{d:"M12 7v3a2 2 0 0 1-2 2H7",key:"8crl2c"}],["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M12 3h.01",key:"n36tog"}],["path",{d:"M12 16v.01",key:"133mhm"}],["path",{d:"M16 12h1",key:"1slzba"}],["path",{d:"M21 12v.01",key:"1lwtk9"}],["path",{d:"M12 21v-1",key:"1880an"}]],A=d("qr-code",fe);var re=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],B=d("refresh-cw",re);var se=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],M=d("wifi-off",se);var ie=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M2 8.82a15 15 0 0 1 20 0",key:"dnpr2z"}],["path",{d:"M5 12.859a10 10 0 0 1 14 0",key:"1x1e6c"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}]],F=d("wifi",ie);var ce=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],D=d("x",ce);import{useCallback as Z,useEffect as Le,useRef as Q,useState as T}from"react";var K="zhin_api_token",ne="zhin_api_base";function pe(){let e=localStorage.getItem(ne)?.trim();return e?e.replace(/\/$/,""):typeof window<"u"?window.location.origin:""}function me(){return localStorage.getItem(K)}async function w(e,t){let l=me(),f=new Headers(t?.headers);l&&f.set("Authorization",`Bearer ${l}`);let n=pe(),r=typeof e=="string"&&e.startsWith("/")?`${n}${e}`:e,m=await fetch(r,{...t,headers:f});return m.status===401&&(localStorage.removeItem(K),window.dispatchEvent(new CustomEvent("zhin:auth-required"))),m}import{jsx as o,jsxs as h}from"react/jsx-runtime";var Ie=2e3,xe=15e3,Ce="weixin-ilink";function O(){let[e,t]=T([]),[l,f]=T(!0),[n,r]=T(null),[m,x]=T({}),p=Q(0),s=Q(),i=Z(async()=>{try{let a=await w("/api/login-assist/pending");if(!a.ok)throw new Error("\u83B7\u53D6\u5F85\u529E\u5931\u8D25");let g=await a.json(),G=(Array.isArray(g)?g:[]).filter(_=>_.adapter===Ce);t(G),r(null),p.current=G.length>0?0:p.current+1}catch(a){r(a.message),p.current++}finally{f(!1)}},[]),P=Z(()=>{let a=Math.min(Ie*Math.pow(1.5,p.current),xe);s.current=setTimeout(async()=>{await i(),P()},a)},[i]);Le(()=>(i().then(P),()=>clearTimeout(s.current)),[i,P]);let b=async(a,g)=>{x(I=>({...I,[a]:!0}));try{if(!(await w("/api/login-assist/submit",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:a,value:g})})).ok)throw new Error("\u63D0\u4EA4\u5931\u8D25");p.current=0,await i()}catch(I){r(I.message)}finally{x(I=>({...I,[a]:!1}))}},v=async a=>{try{(await w("/api/login-assist/cancel",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:a})})).ok&&await i()}catch{}};return l&&e.length===0?o("div",{className:"flex justify-center py-12",children:o(L,{className:"w-6 h-6 animate-spin text-blue-500"})}):h("div",{className:"space-y-4",children:[o("p",{className:"text-sm text-muted-foreground",children:"\u9996\u6B21\u542F\u52A8\u65E0\u51ED\u8BC1\u65F6\uFF0C\u8BF7\u7528\u5FAE\u4FE1\u626B\u63CF ClawBot \u4E8C\u7EF4\u7801\uFF1B\u5237\u65B0\u9875\u9762\u540E\u4ECD\u53EF\u7EE7\u7EED\u67E5\u770B\u5F85\u529E\u3002"}),n&&h("div",{className:"flex items-center gap-2 p-3 rounded border border-red-200 bg-red-50 text-red-600 text-sm dark:bg-red-900/20 dark:text-red-400 dark:border-red-800",children:[o(C,{className:"w-4 h-4 shrink-0"}),o("span",{children:n}),o("button",{type:"button",onClick:()=>r(null),className:"ml-auto",children:o(D,{className:"w-3.5 h-3.5"})})]}),e.length===0?h("div",{className:"border rounded-lg bg-card p-12 text-center",children:[o(S,{className:"w-16 h-16 mx-auto mb-4 opacity-25"}),o("h3",{className:"text-lg font-semibold mb-1",children:"\u6682\u65E0\u5F85\u529E"}),o("p",{className:"text-sm text-muted-foreground",children:"\u9700\u8981\u626B\u7801\u767B\u5F55\u65F6\uFF0C\u4E8C\u7EF4\u7801\u5C06\u663E\u793A\u5728\u6B64\u5904"})]}):o("div",{className:"space-y-4",children:e.map(a=>h("div",{className:"border rounded-lg bg-card p-4 shadow-sm",children:[h("div",{className:"flex items-start justify-between flex-wrap gap-2 mb-2",children:[h("div",{className:"flex items-center gap-2 font-semibold",children:[o(A,{className:"w-4 h-4"})," \u626B\u7801\u767B\u5F55"]}),h("div",{className:"flex gap-1 text-xs",children:[o("span",{className:"px-2 py-0.5 rounded border",children:a.adapter}),o("span",{className:"px-2 py-0.5 rounded bg-muted",children:a.botId})]})]}),a.payload?.message&&o("p",{className:"text-sm text-muted-foreground mb-3",children:a.payload.message}),a.type==="qrcode"&&a.payload?.image&&o("div",{className:"flex justify-center p-4 bg-muted/30 rounded-lg mb-3",children:o("img",{src:String(a.payload.image),alt:"\u767B\u5F55\u4E8C\u7EF4\u7801",className:"max-w-[200px] w-full h-auto"})}),a.type==="qrcode"&&!a.payload?.image&&a.payload?.url&&o("p",{className:"text-sm break-all mb-3",children:o("a",{href:String(a.payload.url),target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:"\u6253\u5F00\u4E8C\u7EF4\u7801\u94FE\u63A5"})}),a.type==="qrcode"&&h("div",{className:"flex gap-2 mt-3",children:[o("button",{type:"button",className:"h-9 px-4 rounded-md bg-primary text-primary-foreground text-sm disabled:opacity-50",disabled:!!m[a.id],onClick:()=>{b(a.id,{done:!0})},children:m[a.id]?"\u63D0\u4EA4\u4E2D\u2026":"\u6211\u5DF2\u626B\u7801"}),o("button",{type:"button",className:"h-9 px-4 rounded-md border text-sm hover:bg-accent transition-colors",onClick:()=>{v(a.id)},children:"\u53D6\u6D88"})]})]},a.id))})]})}import{Fragment as J,jsx as u,jsxs as c}from"react/jsx-runtime";function H(){let[e,t]=q("overview"),[l,f]=q([]),[n,r]=q(!0),[m,x]=q(null),p=he(async()=>{r(!0),x(null);try{let s=await w("/api/weixin-ilink/bots"),i=await s.json();if(!s.ok||!i.success)throw new Error(i.message||"\u52A0\u8F7D\u5931\u8D25");f(Array.isArray(i.data)?i.data:[])}catch(s){x(s.message),f([])}finally{r(!1)}},[]);return ge(()=>{e==="overview"&&p()},[e,p]),c("div",{className:"p-6 max-w-5xl mx-auto space-y-5",children:[c("div",{className:"flex items-center justify-between",children:[c("div",{children:[c("h1",{className:"text-2xl font-bold flex items-center gap-2",children:[u(k,{className:"w-6 h-6"})," \u5FAE\u4FE1 iLink\uFF08ClawBot\uFF09"]}),u("p",{className:"text-sm text-muted-foreground mt-1",children:"\u4E2A\u4EBA\u5FAE\u4FE1\u957F\u8F6E\u8BE2\u9002\u914D\u5668\uFF1A\u6982\u89C8\u4E0E\u626B\u7801\u767B\u5F55\u8F85\u52A9"})]}),e==="overview"&&c("button",{type:"button",onClick:()=>{p()},disabled:n,className:"flex items-center gap-1 px-3 py-1.5 rounded bg-blue-500 text-white hover:bg-blue-600 disabled:opacity-50 text-sm",children:[u(B,{className:`w-4 h-4 ${n?"animate-spin":""}`})," \u5237\u65B0"]})]}),c("div",{className:"flex gap-1 border-b",children:[u("button",{type:"button",onClick:()=>t("overview"),className:`px-4 py-2 text-sm font-medium border-b-2 transition-colors ${e==="overview"?"border-blue-500 text-blue-600":"border-transparent text-gray-500 hover:text-gray-700"}`,children:c("span",{className:"flex items-center gap-1.5",children:[u(k,{className:"w-4 h-4"})," \u6982\u89C8"]})}),u("button",{type:"button",onClick:()=>t("login"),className:`px-4 py-2 text-sm font-medium border-b-2 transition-colors ${e==="login"?"border-blue-500 text-blue-600":"border-transparent text-gray-500 hover:text-gray-700"}`,children:c("span",{className:"flex items-center gap-1.5",children:[u(S,{className:"w-4 h-4"})," \u767B\u5F55\u8F85\u52A9"]})})]}),e==="overview"&&c("div",{className:"space-y-4",children:[m&&u("p",{className:"text-sm text-red-600",children:m}),n?u("div",{className:"flex justify-center py-12",children:u(L,{className:"w-6 h-6 animate-spin text-blue-500"})}):l.length===0?u("div",{className:"border rounded-lg p-8 text-center text-muted-foreground",children:"\u6682\u65E0 weixin-ilink \u673A\u5668\u4EBA\u5B9E\u4F8B"}):u("div",{className:"grid gap-3",children:l.map(s=>c("div",{className:"border rounded-lg p-4 flex items-center justify-between",children:[c("div",{children:[u("div",{className:"font-semibold",children:s.name}),c("div",{className:"text-xs text-muted-foreground mt-1",children:["\u51ED\u8BC1\uFF1A",s.hasCredentials?"\u5DF2\u4FDD\u5B58":"\u672A\u767B\u5F55"]})]}),u("div",{className:"flex items-center gap-2 text-sm",children:s.connected?c(J,{children:[u(F,{className:"w-4 h-4 text-green-500"}),u("span",{className:"text-green-600",children:"\u5728\u7EBF"})]}):c(J,{children:[u(M,{className:"w-4 h-4 text-gray-400"}),u("span",{className:"text-gray-500",children:"\u79BB\u7EBF"})]})})]},s.name))})]}),e==="login"&&u(O,{})]})}function Ra(e){e.addRoute({path:"/console/weixin-ilink",name:"\u5FAE\u4FE1 iLink",element:e.React.createElement(H,{hostReact:e.React})}),e.addTool({id:"weixin-ilink",name:"\u5FAE\u4FE1 iLink",path:"/console/weixin-ilink"})}export{Ra as register};
1
+ import{useCallback as he,useEffect as ge,useState as q}from"react";import{forwardRef as ae,createElement as te}from"react";var y=(...e)=>e.filter((t,l,f)=>!!t&&t.trim()!==""&&f.indexOf(t)===l).join(" ").trim();var W=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();var E=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(t,l,f)=>f?f.toUpperCase():l.toLowerCase());var U=e=>{let t=E(e);return t.charAt(0).toUpperCase()+t.slice(1)};import{forwardRef as ee,createElement as z}from"react";var R={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var V=e=>{for(let t in e)if(t.startsWith("aria-")||t==="role"||t==="title")return!0;return!1};import{createContext as j,useContext as Y,useMemo as De,createElement as ye}from"react";var $=j({});var N=()=>Y($);var X=ee(({color:e,size:t,strokeWidth:l,absoluteStrokeWidth:f,className:n="",children:r,iconNode:m,...x},p)=>{let{size:s=24,strokeWidth:i=2,absoluteStrokeWidth:P=!1,color:b="currentColor",className:v=""}=N()??{},a=f??P?Number(l??i)*24/Number(t??s):l??i;return z("svg",{ref:p,...R,width:t??s??R.width,height:t??s??R.height,stroke:e??b,strokeWidth:a,className:y("lucide",v,n),...!r&&!V(x)&&{"aria-hidden":"true"},...x},[...m.map(([g,I])=>z(g,I)),...Array.isArray(r)?r:[r]])});var d=(e,t)=>{let l=ae(({className:f,...n},r)=>te(X,{ref:r,iconNode:t,className:y(`lucide-${W(U(e))}`,`lucide-${e}`,f),...n}));return l.displayName=U(e),l};var oe=[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]],k=d("bot",oe);var ue=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]],C=d("circle-alert",ue);var de=[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],L=d("loader-circle",de);var le=[["path",{d:"m10 17 5-5-5-5",key:"1bsop3"}],["path",{d:"M15 12H3",key:"6jk70r"}],["path",{d:"M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4",key:"u53s6r"}]],S=d("log-in",le);var fe=[["rect",{width:"5",height:"5",x:"3",y:"3",rx:"1",key:"1tu5fj"}],["rect",{width:"5",height:"5",x:"16",y:"3",rx:"1",key:"1v8r4q"}],["rect",{width:"5",height:"5",x:"3",y:"16",rx:"1",key:"1x03jg"}],["path",{d:"M21 16h-3a2 2 0 0 0-2 2v3",key:"177gqh"}],["path",{d:"M21 21v.01",key:"ents32"}],["path",{d:"M12 7v3a2 2 0 0 1-2 2H7",key:"8crl2c"}],["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M12 3h.01",key:"n36tog"}],["path",{d:"M12 16v.01",key:"133mhm"}],["path",{d:"M16 12h1",key:"1slzba"}],["path",{d:"M21 12v.01",key:"1lwtk9"}],["path",{d:"M12 21v-1",key:"1880an"}]],A=d("qr-code",fe);var re=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],B=d("refresh-cw",re);var se=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],M=d("wifi-off",se);var ie=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M2 8.82a15 15 0 0 1 20 0",key:"dnpr2z"}],["path",{d:"M5 12.859a10 10 0 0 1 14 0",key:"1x1e6c"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}]],F=d("wifi",ie);var ce=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],D=d("x",ce);import{useCallback as Z,useEffect as Le,useRef as Q,useState as T}from"react";var K="zhin_api_token",ne="zhin_api_base";function pe(){let e=localStorage.getItem(ne)?.trim();return e?e.replace(/\/$/,""):typeof window<"u"?window.location.origin:""}function me(){return localStorage.getItem(K)}async function w(e,t){let l=me(),f=new Headers(t?.headers);l&&f.set("Authorization",`Bearer ${l}`);let n=pe(),r=typeof e=="string"&&e.startsWith("/")?`${n}${e}`:e,m=await fetch(r,{...t,headers:f});return m.status===401&&(localStorage.removeItem(K),window.dispatchEvent(new CustomEvent("zhin:auth-required"))),m}import{jsx as o,jsxs as h}from"react/jsx-runtime";var Ie=2e3,xe=15e3,Ce="weixin-ilink";function O(){let[e,t]=T([]),[l,f]=T(!0),[n,r]=T(null),[m,x]=T({}),p=Q(0),s=Q(),i=Z(async()=>{try{let a=await w("/api/login-assist/pending");if(!a.ok)throw new Error("\u83B7\u53D6\u5F85\u529E\u5931\u8D25");let g=await a.json(),G=(Array.isArray(g)?g:[]).filter(_=>_.adapter===Ce);t(G),r(null),p.current=G.length>0?0:p.current+1}catch(a){r(a.message),p.current++}finally{f(!1)}},[]),P=Z(()=>{let a=Math.min(Ie*Math.pow(1.5,p.current),xe);s.current=setTimeout(async()=>{await i(),P()},a)},[i]);Le(()=>(i().then(P),()=>clearTimeout(s.current)),[i,P]);let b=async(a,g)=>{x(I=>({...I,[a]:!0}));try{if(!(await w("/api/login-assist/submit",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:a,value:g})})).ok)throw new Error("\u63D0\u4EA4\u5931\u8D25");p.current=0,await i()}catch(I){r(I.message)}finally{x(I=>({...I,[a]:!1}))}},v=async a=>{try{(await w("/api/login-assist/cancel",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:a})})).ok&&await i()}catch{}};return l&&e.length===0?o("div",{className:"flex justify-center py-12",children:o(L,{className:"w-6 h-6 animate-spin text-blue-500"})}):h("div",{className:"space-y-4",children:[o("p",{className:"text-sm text-muted-foreground",children:"\u9996\u6B21\u542F\u52A8\u65E0\u51ED\u8BC1\u65F6\uFF0C\u8BF7\u7528\u5FAE\u4FE1\u626B\u63CF ClawBot \u4E8C\u7EF4\u7801\uFF1B\u5237\u65B0\u9875\u9762\u540E\u4ECD\u53EF\u7EE7\u7EED\u67E5\u770B\u5F85\u529E\u3002"}),n&&h("div",{className:"flex items-center gap-2 p-3 rounded border border-red-200 bg-red-50 text-red-600 text-sm dark:bg-red-900/20 dark:text-red-400 dark:border-red-800",children:[o(C,{className:"w-4 h-4 shrink-0"}),o("span",{children:n}),o("button",{type:"button",onClick:()=>r(null),className:"ml-auto",children:o(D,{className:"w-3.5 h-3.5"})})]}),e.length===0?h("div",{className:"border rounded-lg bg-card p-12 text-center",children:[o(S,{className:"w-16 h-16 mx-auto mb-4 opacity-25"}),o("h3",{className:"text-lg font-semibold mb-1",children:"\u6682\u65E0\u5F85\u529E"}),o("p",{className:"text-sm text-muted-foreground",children:"\u9700\u8981\u626B\u7801\u767B\u5F55\u65F6\uFF0C\u4E8C\u7EF4\u7801\u5C06\u663E\u793A\u5728\u6B64\u5904"})]}):o("div",{className:"space-y-4",children:e.map(a=>h("div",{className:"border rounded-lg bg-card p-4 shadow-sm",children:[h("div",{className:"flex items-start justify-between flex-wrap gap-2 mb-2",children:[h("div",{className:"flex items-center gap-2 font-semibold",children:[o(A,{className:"w-4 h-4"})," \u626B\u7801\u767B\u5F55"]}),h("div",{className:"flex gap-1 text-xs",children:[o("span",{className:"px-2 py-0.5 rounded border",children:a.adapter}),o("span",{className:"px-2 py-0.5 rounded bg-muted",children:a.endpointId})]})]}),a.payload?.message&&o("p",{className:"text-sm text-muted-foreground mb-3",children:a.payload.message}),a.type==="qrcode"&&a.payload?.image&&o("div",{className:"flex justify-center p-4 bg-muted/30 rounded-lg mb-3",children:o("img",{src:String(a.payload.image),alt:"\u767B\u5F55\u4E8C\u7EF4\u7801",className:"max-w-[200px] w-full h-auto"})}),a.type==="qrcode"&&!a.payload?.image&&a.payload?.url&&o("p",{className:"text-sm break-all mb-3",children:o("a",{href:String(a.payload.url),target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:"\u6253\u5F00\u4E8C\u7EF4\u7801\u94FE\u63A5"})}),a.type==="qrcode"&&h("div",{className:"flex gap-2 mt-3",children:[o("button",{type:"button",className:"h-9 px-4 rounded-md bg-primary text-primary-foreground text-sm disabled:opacity-50",disabled:!!m[a.id],onClick:()=>{b(a.id,{done:!0})},children:m[a.id]?"\u63D0\u4EA4\u4E2D\u2026":"\u6211\u5DF2\u626B\u7801"}),o("button",{type:"button",className:"h-9 px-4 rounded-md border text-sm hover:bg-accent transition-colors",onClick:()=>{v(a.id)},children:"\u53D6\u6D88"})]})]},a.id))})]})}import{Fragment as J,jsx as u,jsxs as c}from"react/jsx-runtime";function H(){let[e,t]=q("overview"),[l,f]=q([]),[n,r]=q(!0),[m,x]=q(null),p=he(async()=>{r(!0),x(null);try{let s=await w("/api/weixin-ilink/endpoints"),i=await s.json();if(!s.ok||!i.success)throw new Error(i.message||"\u52A0\u8F7D\u5931\u8D25");f(Array.isArray(i.data)?i.data:[])}catch(s){x(s.message),f([])}finally{r(!1)}},[]);return ge(()=>{e==="overview"&&p()},[e,p]),c("div",{className:"p-6 max-w-5xl mx-auto space-y-5",children:[c("div",{className:"flex items-center justify-between",children:[c("div",{children:[c("h1",{className:"text-2xl font-bold flex items-center gap-2",children:[u(k,{className:"w-6 h-6"})," \u5FAE\u4FE1 iLink\uFF08ClawBot\uFF09"]}),u("p",{className:"text-sm text-muted-foreground mt-1",children:"\u4E2A\u4EBA\u5FAE\u4FE1\u957F\u8F6E\u8BE2\u9002\u914D\u5668\uFF1A\u6982\u89C8\u4E0E\u626B\u7801\u767B\u5F55\u8F85\u52A9"})]}),e==="overview"&&c("button",{type:"button",onClick:()=>{p()},disabled:n,className:"flex items-center gap-1 px-3 py-1.5 rounded bg-blue-500 text-white hover:bg-blue-600 disabled:opacity-50 text-sm",children:[u(B,{className:`w-4 h-4 ${n?"animate-spin":""}`})," \u5237\u65B0"]})]}),c("div",{className:"flex gap-1 border-b",children:[u("button",{type:"button",onClick:()=>t("overview"),className:`px-4 py-2 text-sm font-medium border-b-2 transition-colors ${e==="overview"?"border-blue-500 text-blue-600":"border-transparent text-gray-500 hover:text-gray-700"}`,children:c("span",{className:"flex items-center gap-1.5",children:[u(k,{className:"w-4 h-4"})," \u6982\u89C8"]})}),u("button",{type:"button",onClick:()=>t("login"),className:`px-4 py-2 text-sm font-medium border-b-2 transition-colors ${e==="login"?"border-blue-500 text-blue-600":"border-transparent text-gray-500 hover:text-gray-700"}`,children:c("span",{className:"flex items-center gap-1.5",children:[u(S,{className:"w-4 h-4"})," \u767B\u5F55\u8F85\u52A9"]})})]}),e==="overview"&&c("div",{className:"space-y-4",children:[m&&u("p",{className:"text-sm text-red-600",children:m}),n?u("div",{className:"flex justify-center py-12",children:u(L,{className:"w-6 h-6 animate-spin text-blue-500"})}):l.length===0?u("div",{className:"border rounded-lg p-8 text-center text-muted-foreground",children:"\u6682\u65E0 weixin-ilink Endpoint \u5B9E\u4F8B"}):u("div",{className:"grid gap-3",children:l.map(s=>c("div",{className:"border rounded-lg p-4 flex items-center justify-between",children:[c("div",{children:[u("div",{className:"font-semibold",children:s.name}),c("div",{className:"text-xs text-muted-foreground mt-1",children:["\u51ED\u8BC1\uFF1A",s.hasCredentials?"\u5DF2\u4FDD\u5B58":"\u672A\u767B\u5F55"]})]}),u("div",{className:"flex items-center gap-2 text-sm",children:s.connected?c(J,{children:[u(F,{className:"w-4 h-4 text-green-500"}),u("span",{className:"text-green-600",children:"\u5728\u7EBF"})]}):c(J,{children:[u(M,{className:"w-4 h-4 text-gray-400"}),u("span",{className:"text-gray-500",children:"\u79BB\u7EBF"})]})})]},s.name))})]}),e==="login"&&u(O,{})]})}function Ra(e){e.addRoute({path:"/console/weixin-ilink",name:"\u5FAE\u4FE1 iLink",element:e.React.createElement(H,{hostReact:e.React})}),e.addTool({id:"weixin-ilink",name:"\u5FAE\u4FE1 iLink",path:"/console/weixin-ilink"})}export{Ra as register};
2
2
  /*! Bundled license information:
3
3
 
4
4
  lucide-react/dist/esm/shared/src/utils/mergeClasses.mjs:
package/lib/adapter.d.ts CHANGED
@@ -2,10 +2,11 @@
2
2
  * 微信 iLink(ClawBot)适配器
3
3
  */
4
4
  import { Adapter, type Plugin } from "zhin.js";
5
- import { WeixinIlinkBot } from "./bot.js";
6
- import type { WeixinIlinkBotConfig } from "./types.js";
7
- export declare class WeixinIlinkAdapter extends Adapter<WeixinIlinkBot> {
5
+ import { WeixinIlinkEndpoint } from "./endpoint.js";
6
+ import type { WeixinIlinkEndpointConfig } from "./types.js";
7
+ export declare class WeixinIlinkAdapter extends Adapter<WeixinIlinkEndpoint> {
8
+ static readonly capabilities: readonly ["inbound", "outbound"];
8
9
  constructor(plugin: Plugin);
9
- createBot(config: WeixinIlinkBotConfig): WeixinIlinkBot;
10
+ createEndpoint(config: WeixinIlinkEndpointConfig): WeixinIlinkEndpoint;
10
11
  }
11
12
  //# sourceMappingURL=adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD,qBAAa,kBAAmB,SAAQ,OAAO,CAAC,cAAc,CAAC;gBACjD,MAAM,EAAE,MAAM;IAI1B,SAAS,CAAC,MAAM,EAAE,oBAAoB,GAAG,cAAc;CAGxD"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAE5D,qBAAa,kBAAmB,SAAQ,OAAO,CAAC,mBAAmB,CAAC;IAClE,gBAAyB,YAAY,mCAAoC;gBAE7D,MAAM,EAAE,MAAM;IAI1B,cAAc,CAAC,MAAM,EAAE,yBAAyB,GAAG,mBAAmB;CAGvE"}
package/lib/adapter.js CHANGED
@@ -2,13 +2,14 @@
2
2
  * 微信 iLink(ClawBot)适配器
3
3
  */
4
4
  import { Adapter } from "zhin.js";
5
- import { WeixinIlinkBot } from "./bot.js";
5
+ import { WeixinIlinkEndpoint } from "./endpoint.js";
6
6
  export class WeixinIlinkAdapter extends Adapter {
7
+ static capabilities = ['inbound', 'outbound'];
7
8
  constructor(plugin) {
8
9
  super(plugin, "weixin-ilink", []);
9
10
  }
10
- createBot(config) {
11
- return new WeixinIlinkBot(this, config);
11
+ createEndpoint(config) {
12
+ return new WeixinIlinkEndpoint(this, config);
12
13
  }
13
14
  }
14
15
  //# sourceMappingURL=adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,OAAO,EAAe,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG1C,MAAM,OAAO,kBAAmB,SAAQ,OAAuB;IAC7D,YAAY,MAAc;QACxB,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,SAAS,CAAC,MAA4B;QACpC,OAAO,IAAI,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;CACF"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,OAAO,EAAe,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAGpD,MAAM,OAAO,kBAAmB,SAAQ,OAA4B;IAClE,MAAM,CAAmB,YAAY,GAAG,CAAC,SAAS,EAAE,UAAU,CAAU,CAAC;IAEzE,YAAY,MAAc;QACxB,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,cAAc,CAAC,MAAiC;QAC9C,OAAO,IAAI,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC"}
@@ -6,10 +6,10 @@ export interface WeixinIlinkCredentials {
6
6
  updatedAt?: string;
7
7
  }
8
8
  export declare function resolveStateDir(): string;
9
- export declare function credentialsPath(botName: string): string;
10
- export declare function loadCredentials(botName: string): WeixinIlinkCredentials | null;
11
- export declare function saveCredentials(botName: string, creds: WeixinIlinkCredentials): void;
12
- export declare function syncBufPath(botName: string): string;
13
- export declare function loadSyncBuf(botName: string): string;
14
- export declare function saveSyncBuf(botName: string, buf: string): void;
9
+ export declare function credentialsPath(endpointName: string): string;
10
+ export declare function loadCredentials(endpointName: string): WeixinIlinkCredentials | null;
11
+ export declare function saveCredentials(endpointName: string, creds: WeixinIlinkCredentials): void;
12
+ export declare function syncBufPath(endpointName: string): string;
13
+ export declare function loadSyncBuf(endpointName: string): string;
14
+ export declare function saveSyncBuf(endpointName: string, buf: string): void;
15
15
  //# sourceMappingURL=credentials.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID,wBAAgB,eAAe,IAAI,MAAM,CAIxC;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,sBAAsB,GAAG,IAAI,CAW9E;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,sBAAsB,GAAG,IAAI,CAQpF;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAOnD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAI9D"}
1
+ {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID,wBAAgB,eAAe,IAAI,MAAM,CAIxC;AAED,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,sBAAsB,GAAG,IAAI,CAWnF;AAED,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,sBAAsB,GAAG,IAAI,CAQzF;AAED,wBAAgB,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAOxD;AAED,wBAAgB,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAInE"}
@@ -6,11 +6,11 @@ export function resolveStateDir() {
6
6
  ? path.join(process.env.ZHIN_DATA_DIR, "weixin-ilink")
7
7
  : DEFAULT_DATA_DIR;
8
8
  }
9
- export function credentialsPath(botName) {
10
- return path.join(resolveStateDir(), `${botName}.json`);
9
+ export function credentialsPath(endpointName) {
10
+ return path.join(resolveStateDir(), `${endpointName}.json`);
11
11
  }
12
- export function loadCredentials(botName) {
13
- const file = credentialsPath(botName);
12
+ export function loadCredentials(endpointName) {
13
+ const file = credentialsPath(endpointName);
14
14
  try {
15
15
  if (!fs.existsSync(file))
16
16
  return null;
@@ -24,16 +24,16 @@ export function loadCredentials(botName) {
24
24
  return null;
25
25
  }
26
26
  }
27
- export function saveCredentials(botName, creds) {
28
- const file = credentialsPath(botName);
27
+ export function saveCredentials(endpointName, creds) {
28
+ const file = credentialsPath(endpointName);
29
29
  fs.mkdirSync(path.dirname(file), { recursive: true });
30
30
  fs.writeFileSync(file, JSON.stringify({ ...creds, updatedAt: new Date().toISOString() }, null, 2), "utf-8");
31
31
  }
32
- export function syncBufPath(botName) {
33
- return path.join(resolveStateDir(), `${botName}.sync-buf`);
32
+ export function syncBufPath(endpointName) {
33
+ return path.join(resolveStateDir(), `${endpointName}.sync-buf`);
34
34
  }
35
- export function loadSyncBuf(botName) {
36
- const file = syncBufPath(botName);
35
+ export function loadSyncBuf(endpointName) {
36
+ const file = syncBufPath(endpointName);
37
37
  try {
38
38
  return fs.existsSync(file) ? fs.readFileSync(file, "utf-8") : "";
39
39
  }
@@ -41,8 +41,8 @@ export function loadSyncBuf(botName) {
41
41
  return "";
42
42
  }
43
43
  }
44
- export function saveSyncBuf(botName, buf) {
45
- const file = syncBufPath(botName);
44
+ export function saveSyncBuf(endpointName, buf) {
45
+ const file = syncBufPath(endpointName);
46
46
  fs.mkdirSync(path.dirname(file), { recursive: true });
47
47
  fs.writeFileSync(file, buf, "utf-8");
48
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAU7B,MAAM,gBAAgB,GAAG,qBAAqB,CAAC;AAE/C,MAAM,UAAU,eAAe;IAC7B,OAAO,OAAO,CAAC,GAAG,CAAC,aAAa;QAC9B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,cAAc,CAAC;QACtD,CAAC,CAAC,gBAAgB,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,GAAG,OAAO,OAAO,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACtC,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA2B,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE;YAAE,OAAO,IAAI,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAe,EAAE,KAA6B;IAC5E,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACtC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,EAAE,CAAC,aAAa,CACd,IAAI,EACJ,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAC1E,OAAO,CACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,GAAG,OAAO,WAAW,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,GAAW;IACtD,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAClC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAU7B,MAAM,gBAAgB,GAAG,qBAAqB,CAAC;AAE/C,MAAM,UAAU,eAAe;IAC7B,OAAO,OAAO,CAAC,GAAG,CAAC,aAAa;QAC9B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,cAAc,CAAC;QACtD,CAAC,CAAC,gBAAgB,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,YAAoB;IAClD,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,GAAG,YAAY,OAAO,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,YAAoB;IAClD,MAAM,IAAI,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC;IAC3C,IAAI,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACtC,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA2B,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE;YAAE,OAAO,IAAI,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,YAAoB,EAAE,KAA6B;IACjF,MAAM,IAAI,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC;IAC3C,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,EAAE,CAAC,aAAa,CACd,IAAI,EACJ,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAC1E,OAAO,CACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,YAAoB;IAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,GAAG,YAAY,WAAW,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,YAAoB;IAC9C,MAAM,IAAI,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;IACvC,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,YAAoB,EAAE,GAAW;IAC3D,MAAM,IAAI,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;IACvC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AACvC,CAAC"}
@@ -1,15 +1,15 @@
1
- import { Bot, Message, type SendOptions } from "zhin.js";
1
+ import { Endpoint, Message, type SendOptions } from "zhin.js";
2
2
  import type { WeixinMessage } from "./ilink-types.js";
3
3
  import type { WeixinInboundMediaOpts } from "./weixin-inbound.js";
4
- import type { WeixinIlinkBotConfig } from "./types.js";
4
+ import type { WeixinIlinkEndpointConfig } from "./types.js";
5
5
  import type { WeixinIlinkAdapter } from "./adapter.js";
6
6
  import { WeixinIlinkTypingIndicatorManager } from "./typing-indicator.js";
7
7
  export type WeixinMessageWithMedia = WeixinMessage & {
8
8
  _media?: WeixinInboundMediaOpts;
9
9
  };
10
- export declare class WeixinIlinkBot implements Bot<WeixinIlinkBotConfig, WeixinMessage> {
10
+ export declare class WeixinIlinkEndpoint implements Endpoint<WeixinIlinkEndpointConfig, WeixinMessage> {
11
11
  adapter: WeixinIlinkAdapter;
12
- $config: WeixinIlinkBotConfig;
12
+ $config: WeixinIlinkEndpointConfig;
13
13
  $connected: boolean;
14
14
  $typingIndicator?: WeixinIlinkTypingIndicatorManager;
15
15
  private creds;
@@ -19,7 +19,7 @@ export declare class WeixinIlinkBot implements Bot<WeixinIlinkBotConfig, WeixinM
19
19
  get $id(): string;
20
20
  get hasCredentials(): boolean;
21
21
  get pluginLogger(): import("zhin.js").Logger;
22
- constructor(adapter: WeixinIlinkAdapter, $config: WeixinIlinkBotConfig);
22
+ constructor(adapter: WeixinIlinkAdapter, $config: WeixinIlinkEndpointConfig);
23
23
  apiBaseUrl(): string;
24
24
  cdnBaseUrl(): string;
25
25
  $connect(): Promise<void>;
@@ -34,4 +34,4 @@ export declare class WeixinIlinkBot implements Bot<WeixinIlinkBotConfig, WeixinM
34
34
  private downloadInboundMedia;
35
35
  private saveInboundMedia;
36
36
  }
37
- //# sourceMappingURL=bot.d.ts.map
37
+ //# sourceMappingURL=endpoint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint.d.ts","sourceRoot":"","sources":["../src/endpoint.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,QAAQ,EACR,OAAO,EAGP,KAAK,WAAW,EAEjB,MAAM,SAAS,CAAC;AAgCjB,OAAO,KAAK,EAAe,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGnE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EACL,iCAAiC,EAElC,MAAM,uBAAuB,CAAC;AAQ/B,MAAM,MAAM,sBAAsB,GAAG,aAAa,GAAG;IACnD,MAAM,CAAC,EAAE,sBAAsB,CAAC;CACjC,CAAC;AA4BF,qBAAa,mBAAoB,YAAW,QAAQ,CAAC,yBAAyB,EAAE,aAAa,CAAC;IAsBnF,OAAO,EAAE,kBAAkB;IAC3B,OAAO,EAAE,yBAAyB;IAtB3C,UAAU,UAAS;IACnB,gBAAgB,CAAC,EAAE,iCAAiC,CAAC;IAErD,OAAO,CAAC,KAAK,CAAuC;IACpD,OAAO,CAAC,SAAS,CAAC,CAAkB;IACpC,OAAO,CAAC,WAAW,CAAC,CAAgB;IACpC,OAAO,CAAC,aAAa,CAAC,CAAsB;IAE5C,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED,IAAI,YAAY,6BAEf;gBAGQ,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,yBAAyB;IAG3C,UAAU,IAAI,MAAM;IAIpB,UAAU,IAAI,MAAM;IAId,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IA4BzB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB5B,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB/D,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD,cAAc,CAAC,GAAG,EAAE,sBAAsB,GAAG,OAAO,CAAC,aAAa,CAAC;IAqCnE,OAAO,CAAC,mBAAmB;IAwBrB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;YA8E3C,QAAQ;YAwER,oBAAoB;YAgBpB,oBAAoB;YA8BpB,gBAAgB;CA0B/B"}
@@ -44,7 +44,7 @@ function segmentLocalPath(seg) {
44
44
  }
45
45
  return ref.replace(/^file:\/\//, "");
46
46
  }
47
- export class WeixinIlinkBot {
47
+ export class WeixinIlinkEndpoint {
48
48
  adapter;
49
49
  $config;
50
50
  $connected = false;
@@ -87,7 +87,7 @@ export class WeixinIlinkBot {
87
87
  this.pollAbort = new AbortController();
88
88
  this.pollPromise = this.pollLoop(this.pollAbort.signal);
89
89
  this.$connected = true;
90
- this.pluginLogger.info(`weixin-ilink bot ${this.$id} connected`);
90
+ this.pluginLogger.info(`weixin-ilink endpoint ${this.$id} connected`);
91
91
  }
92
92
  async $disconnect() {
93
93
  this.pollAbort?.abort();
@@ -106,7 +106,7 @@ export class WeixinIlinkBot {
106
106
  }
107
107
  }
108
108
  this.$connected = false;
109
- this.pluginLogger.info(`weixin-ilink bot ${this.$id} disconnected`);
109
+ this.pluginLogger.info(`weixin-ilink endpoint ${this.$id} disconnected`);
110
110
  }
111
111
  async sendTypingToUser(userId, status) {
112
112
  if (!this.creds?.botToken || !this.configManager)
@@ -139,7 +139,7 @@ export class WeixinIlinkBot {
139
139
  return Message.from(msg, {
140
140
  $id: msgId,
141
141
  $adapter: "weixin-ilink",
142
- $bot: this.$config.name,
142
+ $endpoint: this.$config.name,
143
143
  $sender: {
144
144
  id: userId,
145
145
  name: userId,
@@ -158,7 +158,7 @@ export class WeixinIlinkBot {
158
158
  replyContent = [replyContent];
159
159
  return this.adapter.sendMessage({
160
160
  context: "weixin-ilink",
161
- bot: this.$config.name,
161
+ endpoint: this.$config.name,
162
162
  id: userId,
163
163
  type: "private",
164
164
  content: replyContent,
@@ -380,4 +380,4 @@ export class WeixinIlinkBot {
380
380
  function fromUserIdLabel(msg) {
381
381
  return msg.from_user_id ?? "unknown";
382
382
  }
383
- //# sourceMappingURL=bot.js.map
383
+ //# sourceMappingURL=endpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../src/endpoint.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAEL,OAAO,EAIP,OAAO,GACR,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,WAAW,EACX,eAAe,EACf,WAAW,GAEZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,oBAAoB,EACpB,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,YAAY,EACZ,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEhF,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAItE,OAAO,EACL,iCAAiC,GAElC,MAAM,uBAAuB,CAAC;AAE/B,MAAM,4BAA4B,GAAG,MAAM,CAAC;AAC5C,MAAM,wBAAwB,GAAG,CAAC,CAAC;AACnC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAChC,MAAM,cAAc,GAAG,KAAK,CAAC;AAC7B,MAAM,sBAAsB,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AAMjD,SAAS,KAAK,CAAC,EAAU,EAAE,MAAoB;IAC7C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACtC,MAAM,EAAE,gBAAgB,CACtB,OAAO,EACP,GAAG,EAAE;YACH,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,EAAE,CAAC;QACZ,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,CACf,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAmB;IAC3C,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3F,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,OAAO,mBAAmB;IAsBrB;IACA;IAtBT,UAAU,GAAG,KAAK,CAAC;IACnB,gBAAgB,CAAqC;IAE7C,KAAK,GAAkC,IAAI,CAAC;IAC5C,SAAS,CAAmB;IAC5B,WAAW,CAAiB;IAC5B,aAAa,CAAuB;IAE5C,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;IACpC,CAAC;IAED,YACS,OAA2B,EAC3B,OAAkC;QADlC,YAAO,GAAP,OAAO,CAAoB;QAC3B,YAAO,GAAP,OAAO,CAA2B;IACxC,CAAC;IAEJ,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,oBAAoB,CAAC;IAC7E,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,oBAAoB,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,kBAAkB,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,KAAK,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACzE,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAE/B,MAAM,WAAW,CAAC;YAChB,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;YAC1B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;SAC3B,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,GAAG,IAAI,mBAAmB,CAC1C,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EAC1D,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CACtC,CAAC;QAEF,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,KAAK,KAAK,EAAE,CAAC;YACpD,IAAI,CAAC,gBAAgB,GAAG,IAAI,iCAAiC,CAC3D,IAAI,EACJ,IAAI,CAAC,OAAO,CAAC,eAA+D,CAC7E,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;QACvC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,yBAAyB,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,WAAW;QACf,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,WAAW,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACP,oBAAoB;QACtB,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC/E,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,sBAAsB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,yBAAyB,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,MAAc,EAAE,MAAc;QACnD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,OAAO;QACzD,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QACtE,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,yCAAyC,MAAM,EAAE,CAAC,CAAC;YAC3E,OAAO;QACT,CAAC;QACD,MAAM,UAAU,CAAC;YACf,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;YAC1B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;YAC1B,IAAI,EAAE;gBACJ,aAAa,EAAE,MAAM;gBACrB,aAAa,EAAE,GAAG,CAAC,YAAY;gBAC/B,MAAM;aACP;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,GAAW;QAC9B,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAC1E,CAAC;IAED,cAAc,CAAC,GAA2B;QACxC,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACpD,OAAO,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAE/E,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE;YACvB,GAAG,EAAE,KAAK;YACV,QAAQ,EAAE,cAAc;YACxB,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;YAC5B,OAAO,EAAE;gBACP,EAAE,EAAE,MAAM;gBACV,IAAI,EAAE,MAAM;aACb;YACD,QAAQ,EAAE;gBACR,EAAE,EAAE,MAAM;gBACV,IAAI,EAAE,SAAS;aAChB;YACD,QAAQ,EAAE,OAAO;YACjB,SAAS,EAAE,OAAO;YAClB,IAAI,EAAE,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC;YACrC,UAAU,EAAE,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC,GAAG,EAAE;YAC5C,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;YAC/C,MAAM,EAAE,KAAK,EAAE,YAAyB,EAAE,MAAyB,EAAE,EAAE;gBACrE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;oBAAE,YAAY,GAAG,CAAC,YAAY,CAAC,CAAC;gBAChE,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;oBAC9B,OAAO,EAAE,cAAc;oBACvB,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;oBAC3B,EAAE,EAAE,MAAM;oBACV,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,YAAY;iBACtB,CAAC,CAAC;YACL,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAEO,mBAAmB,CAAC,GAA2B;QACrD,MAAM,QAAQ,GAAqB,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,IAAI;YAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAE5C,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC;QACzB,IAAI,KAAK,EAAE,gBAAgB,EAAE,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;QACpE,CAAC;aAAM,IAAI,KAAK,EAAE,kBAAkB,EAAE,CAAC;YACrC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;QACtE,CAAC;aAAM,IAAI,KAAK,EAAE,iBAAiB,EAAE,CAAC;YACpC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBAC5B,IAAI,EAAE,KAAK,CAAC,iBAAiB;gBAC7B,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC;aAC7C,CAAC,CAAC,CAAC;QACN,CAAC;aAAM,IAAI,KAAK,EAAE,kBAAkB,EAAE,CAAC;YACrC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;QACvE,CAAC;aAAM,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QACxC,CAAC;QAED,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAoB;QACrC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;QAC1B,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,kCAAkC,MAAM,iBAAiB,CAAC,CAAC;YAClF,MAAM,IAAI,KAAK,CAAC,kCAAkC,MAAM,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,OAAO,GAAG;YACd,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;YAC1B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;YAC1B,YAAY;SACb,CAAC;QAEF,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QACtE,MAAM,YAAY,GAAG,MAAM,wBAAwB,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAClF,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QAC7E,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,WAAW,GAAG,EAAE,CAAC;QAErB,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC5B,WAAW,IAAI,GAAG,CAAC;gBACnB,SAAS;YACX,CAAC;YACD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC;gBAChE,SAAS;YACX,CAAC;YACD,MAAM,GAAG,GAAG,GAAqB,CAAC;YAClC,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACnD,MAAM,CAAC,GAAI,GAAG,CAAC,IAA0B,CAAC,IAAI,IAAI,EAAE,CAAC;gBACrD,WAAW,IAAI,CAAC,CAAC;gBACjB,SAAS;YACX,CAAC;YAED,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;YACvC,IAAI,QAAQ,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACxC,6CAA6C;gBAC7C,IAAI,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;oBACvB,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC;wBACzC,EAAE,EAAE,MAAM;wBACV,IAAI,EAAE,WAAW;wBACjB,IAAI,EAAE,OAAO;qBACd,CAAC,CAAC;oBACH,WAAW,GAAG,EAAE,CAAC;oBACjB,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC;gBAChC,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC;oBACvC,QAAQ;oBACR,EAAE,EAAE,MAAM;oBACV,IAAI,EAAE,EAAE;oBACR,IAAI,EAAE,OAAO;oBACb,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;iBAC9B,CAAC,CAAC;gBACH,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;gBAC1B,SAAS;YACX,CAAC;YAED,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACjG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,sBAAsB,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;QAED,IAAI,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC;gBACrC,EAAE,EAAE,MAAM;gBACV,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,OAAO;aACd,CAAC,CAAC;YACH,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;QAC5B,CAAC;QAED,OAAO,MAAM,IAAI,gBAAgB,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IAChD,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,WAAwB;QAC7C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ;YAAE,OAAO;QAElC,IAAI,aAAa,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,IAAI,4BAA4B,CAAC;QACnF,IAAI,mBAAmB,GAAG,CAAC,CAAC;QAE5B,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YAC5B,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC9B,MAAM,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC;gBACxD,SAAS;YACX,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC;oBAC5B,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;oBAC1B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;oBAC1B,eAAe,EAAE,aAAa;oBAC9B,SAAS,EAAE,aAAa;oBACxB,WAAW;iBACZ,CAAC,CAAC;gBAEH,IAAI,IAAI,CAAC,sBAAsB,IAAI,IAAI,IAAI,IAAI,CAAC,sBAAsB,GAAG,CAAC,EAAE,CAAC;oBAC3E,aAAa,GAAG,IAAI,CAAC,sBAAsB,CAAC;gBAC9C,CAAC;gBAED,MAAM,UAAU,GACd,CAAC,IAAI,CAAC,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;oBAC1C,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC;gBAErD,IAAI,UAAU,EAAE,CAAC;oBACf,MAAM,cAAc,GAClB,IAAI,CAAC,OAAO,KAAK,uBAAuB,IAAI,IAAI,CAAC,GAAG,KAAK,uBAAuB,CAAC;oBACnF,IAAI,cAAc,EAAE,CAAC;wBACnB,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACvB,mBAAmB,GAAG,CAAC,CAAC;wBACxB,MAAM,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC;wBACxD,SAAS;oBACX,CAAC;oBACD,mBAAmB,IAAI,CAAC,CAAC;oBACzB,IAAI,mBAAmB,IAAI,wBAAwB,EAAE,CAAC;wBACpD,mBAAmB,GAAG,CAAC,CAAC;wBACxB,MAAM,KAAK,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;oBAC7C,CAAC;yBAAM,CAAC;wBACN,MAAM,KAAK,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;oBAC3C,CAAC;oBACD,SAAS;gBACX,CAAC;gBAED,mBAAmB,GAAG,CAAC,CAAC;gBACxB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;oBACzB,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC;oBACrC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;gBACvC,CAAC;gBAED,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;oBACtC,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,WAAW,CAAC,OAAO;oBAAE,OAAO;gBAChC,mBAAmB,IAAI,CAAC,CAAC;gBACzB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,4BAA4B,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACnE,IAAI,mBAAmB,IAAI,wBAAwB,EAAE,CAAC;oBACpD,mBAAmB,GAAG,CAAC,CAAC;oBACxB,MAAM,KAAK,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;gBAC7C,CAAC;qBAAM,CAAC;oBACN,MAAM,KAAK,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,IAAmB;QACpD,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;QAC3C,IAAI,IAAI,CAAC,aAAa,IAAI,UAAU,EAAE,CAAC;YACrC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACxD,qFAAqF;QACrF,+BAA+B;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QACpE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,YAAY,CAAC,KAAK,CACrB,GAAG,IAAI,CAAC,GAAG,iBAAiB,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CACrF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,IAAmB;QACpD,MAAM,oBAAoB,GAAG,CAAC,CAAuD,EAAE,EAAE,CACvF,OAAO,CAAC,CAAC,EAAE,mBAAmB,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC;QAEjD,MAAM,SAAS,GACb,IAAI,CAAC,SAAS,EAAE,IAAI,CAClB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,KAAK,IAAI,oBAAoB,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,CACrF;YACD,IAAI,CAAC,SAAS,EAAE,IAAI,CAClB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,KAAK,IAAI,oBAAoB,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,CACrF;YACD,IAAI,CAAC,SAAS,EAAE,IAAI,CAClB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,IAAI,IAAI,oBAAoB,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CACnF;YACD,IAAI,CAAC,SAAS,EAAE,IAAI,CAClB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,KAAK,IAAI,oBAAoB,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,CACrF,CAAC;QAEJ,IAAI,CAAC,SAAS;YAAE,OAAO,EAAE,CAAC;QAE1B,OAAO,qBAAqB,CAAC,SAAS,EAAE;YACtC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;YAC7B,SAAS,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,EAAE,CACrE,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,CAAC;YAChF,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC;YAC1C,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;YAC5C,KAAK,EAAE,WAAW,eAAe,CAAC,IAAI,CAAC,EAAE;SAC1C,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAC5B,MAAc,EACd,WAAoB,EACpB,MAAM,GAAG,SAAS,EAClB,QAAQ,GAAG,sBAAsB,EACjC,gBAAyB;QAEzB,IAAI,MAAM,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1D,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,MAAM,YAAY,GAAG,WAAW,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAChE,MAAM,GAAG,GAAG,gBAAgB;YAC1B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;YAChC,CAAC,CAAC,YAAY;gBACZ,CAAC,CAAC,oBAAoB,CAAC,YAAY,CAAC;gBACpC,CAAC,CAAC,MAAM,CAAC;QACb,MAAM,IAAI,GAAG,gBAAgB;YAC3B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,GAAG,CAAC;YACtC,CAAC,CAAC,OAAO,CAAC;QACZ,MAAM,QAAQ,GAAG,GAAG,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC;QACxF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC1C,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACnC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC5B,CAAC;CACF;AAED,SAAS,eAAe,CAAC,GAAkB;IACzC,OAAO,GAAG,CAAC,YAAY,IAAI,SAAS,CAAC;AACvC,CAAC"}
package/lib/index.d.ts CHANGED
@@ -13,7 +13,7 @@ declare module "zhin.js" {
13
13
  }
14
14
  }
15
15
  export * from "./types.js";
16
- export { WeixinIlinkBot } from "./bot.js";
16
+ export { WeixinIlinkEndpoint } from "./endpoint.js";
17
17
  export { WeixinIlinkAdapter } from "./adapter.js";
18
18
  export { WeixinIlinkTypingIndicatorManager, enableTypingIndicator, type WeixinIlinkTypingIndicatorConfig, } from "./typing-indicator.js";
19
19
  export { registerLoginAssistRoutes } from "./login-assist-routes.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGlD,OAAO,QAAQ,SAAS,CAAC;IACvB,UAAU,MAAM,CAAC;QACf,UAAU,QAAQ;YAChB,GAAG,EAAE,WAAW,CAAC;YACjB,MAAM,EAAE,MAAM,CAAC;SAChB;KACF;IACD,UAAU,QAAQ;QAChB,cAAc,EAAE,kBAAkB,CAAC;KACpC;CACF;AAED,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EACL,iCAAiC,EACjC,qBAAqB,EACrB,KAAK,gCAAgC,GACtC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGlD,OAAO,QAAQ,SAAS,CAAC;IACvB,UAAU,MAAM,CAAC;QACf,UAAU,QAAQ;YAChB,GAAG,EAAE,WAAW,CAAC;YACjB,MAAM,EAAE,MAAM,CAAC;SAChB;KACF;IACD,UAAU,QAAQ;QAChB,cAAc,EAAE,kBAAkB,CAAC;KACpC;CACF;AAED,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EACL,iCAAiC,EACjC,qBAAqB,EACrB,KAAK,gCAAgC,GACtC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC"}
package/lib/index.js CHANGED
@@ -6,7 +6,7 @@ import { usePlugin } from "zhin.js";
6
6
  import { WeixinIlinkAdapter } from "./adapter.js";
7
7
  import { registerRoutes } from "./routes.js";
8
8
  export * from "./types.js";
9
- export { WeixinIlinkBot } from "./bot.js";
9
+ export { WeixinIlinkEndpoint } from "./endpoint.js";
10
10
  export { WeixinIlinkAdapter } from "./adapter.js";
11
11
  export { WeixinIlinkTypingIndicatorManager, enableTypingIndicator, } from "./typing-indicator.js";
12
12
  export { registerLoginAssistRoutes } from "./login-assist-routes.js";
@@ -14,7 +14,7 @@ const plugin = usePlugin();
14
14
  const { provide, useContext, root } = plugin;
15
15
  provide({
16
16
  name: "weixin-ilink",
17
- description: "WeChat personal account via Tencent iLink Bot API (ClawBot)",
17
+ description: "WeChat personal account via Tencent iLink Endpoint API (ClawBot)",
18
18
  mounted: async (p) => {
19
19
  const adapter = new WeixinIlinkAdapter(p);
20
20
  await adapter.start();
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAe,MAAM,SAAS,CAAC;AAGjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAc7C,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EACL,iCAAiC,EACjC,qBAAqB,GAEtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAErE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;AAC3B,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;AAE7C,OAAO,CAAC;IACN,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,6DAA6D;IAC1E,OAAO,EAAE,KAAK,EAAE,CAAS,EAAE,EAAE;QAC3B,MAAM,OAAO,GAAG,IAAI,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACtB,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,OAA2B,EAAE,EAAE;QAC7C,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;CACK,CAAC,CAAC;AAEV,UAAU,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,EAAE;IAChC,WAAW,CAAC,QAAQ,CAAC;QACnB,EAAE,EAAE,cAAc;QAClB,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,qBAAqB,CAAC;QACrE,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC;QACjE,IAAI,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;KAC3B,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,UAAU,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,MAAc,EAAE,OAA2B,EAAE,EAAE;IACzF,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAe,MAAM,SAAS,CAAC;AAGjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAc7C,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EACL,iCAAiC,EACjC,qBAAqB,GAEtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAErE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;AAC3B,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;AAE7C,OAAO,CAAC;IACN,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,kEAAkE;IAC/E,OAAO,EAAE,KAAK,EAAE,CAAS,EAAE,EAAE;QAC3B,MAAM,OAAO,GAAG,IAAI,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACtB,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,OAA2B,EAAE,EAAE;QAC7C,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;CACK,CAAC,CAAC;AAEV,UAAU,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,EAAE;IAChC,WAAW,CAAC,QAAQ,CAAC;QACnB,EAAE,EAAE,cAAc;QAClB,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,qBAAqB,CAAC;QACrE,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC;QACjE,IAAI,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;KAC3B,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,UAAU,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,MAAc,EAAE,OAA2B,EAAE,EAAE;IACzF,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC"}
package/lib/login.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import type { Plugin } from "zhin.js";
2
2
  import { type WeixinIlinkCredentials } from "./credentials.js";
3
- import type { WeixinIlinkBotConfig } from "./types.js";
4
- export declare function resolveCredentials(plugin: Plugin, config: WeixinIlinkBotConfig): Promise<WeixinIlinkCredentials>;
5
- export declare function loginWithQr(plugin: Plugin, config: WeixinIlinkBotConfig): Promise<WeixinIlinkCredentials>;
3
+ import type { WeixinIlinkEndpointConfig } from "./types.js";
4
+ export declare function resolveCredentials(plugin: Plugin, config: WeixinIlinkEndpointConfig): Promise<WeixinIlinkCredentials>;
5
+ export declare function loginWithQr(plugin: Plugin, config: WeixinIlinkEndpointConfig): Promise<WeixinIlinkCredentials>;
6
6
  //# sourceMappingURL=login.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAItC,OAAO,EAGL,KAAK,sBAAsB,EAC5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAgEvD,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,sBAAsB,CAAC,CAqBjC;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,sBAAsB,CAAC,CA+DjC"}
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAItC,OAAO,EAGL,KAAK,sBAAsB,EAC5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAgE5D,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,yBAAyB,GAChC,OAAO,CAAC,sBAAsB,CAAC,CAqBjC;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,yBAAyB,GAChC,OAAO,CAAC,sBAAsB,CAAC,CA+DjC"}
package/lib/login.js CHANGED
@@ -72,7 +72,7 @@ export async function loginWithQr(plugin, config) {
72
72
  });
73
73
  const assistTask = loginAssist
74
74
  .listPending()
75
- .find((t) => t.adapter === "weixin-ilink" && t.botId === config.name);
75
+ .find((t) => t.adapter === "weixin-ilink" && t.endpointId === config.name);
76
76
  const deadline = Date.now() + LOGIN_TIMEOUT_MS;
77
77
  let currentBaseUrl = apiBaseUrl;
78
78
  try {
@@ -90,7 +90,7 @@ export async function loginWithQr(plugin, config) {
90
90
  const creds = {
91
91
  botToken: status.bot_token ?? loadCredentials(config.name)?.botToken ?? "",
92
92
  ilinkUserId: status.ilink_user_id,
93
- ilinkBotId: status.ilink_bot_id,
93
+ ilinkBotId: status.ilink_endpoint_id,
94
94
  baseUrl: status.baseurl ?? currentBaseUrl,
95
95
  };
96
96
  if (!creds.botToken) {
package/lib/login.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":"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"}
package/lib/routes.js CHANGED
@@ -1,14 +1,14 @@
1
1
  import { registerLoginAssistRoutes } from "./login-assist-routes.js";
2
2
  export function registerRoutes(router, adapter, root) {
3
3
  registerLoginAssistRoutes(router, root);
4
- router.get("/api/weixin-ilink/bots", async (ctx) => {
4
+ router.get("/api/weixin-ilink/endpoints", async (ctx) => {
5
5
  try {
6
- const bots = Array.from(adapter.bots.values());
7
- const data = bots.map((bot) => ({
8
- name: bot.$config.name,
9
- connected: bot.$connected,
10
- status: bot.$connected ? "online" : "offline",
11
- hasCredentials: Boolean(bot.hasCredentials),
6
+ const endpoints = Array.from(adapter.endpoints.values());
7
+ const data = endpoints.map((endpoint) => ({
8
+ name: endpoint.$config.name,
9
+ connected: endpoint.$connected,
10
+ status: endpoint.$connected ? "online" : "offline",
11
+ hasCredentials: Boolean(endpoint.hasCredentials),
12
12
  }));
13
13
  ctx.body = {
14
14
  success: true,
package/lib/routes.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAErE,MAAM,UAAU,cAAc,CAC5B,MAAc,EACd,OAA2B,EAC3B,IAAY;IAEZ,yBAAyB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAExC,MAAM,CAAC,GAAG,CAAC,wBAAwB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACjD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC9B,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI;gBACtB,SAAS,EAAE,GAAG,CAAC,UAAU;gBACzB,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;gBAC7C,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;aAC5C,CAAC,CAAC,CAAC;YACJ,GAAG,CAAC,IAAI,GAAG;gBACT,OAAO,EAAE,IAAI;gBACb,IAAI;gBACJ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;YACjB,GAAG,CAAC,IAAI,GAAG;gBACT,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,wBAAwB;gBAC/B,OAAO,EAAG,KAAe,CAAC,OAAO;aAClC,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAErE,MAAM,UAAU,cAAc,CAC5B,MAAc,EACd,OAA2B,EAC3B,IAAY;IAEZ,yBAAyB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAExC,MAAM,CAAC,GAAG,CAAC,6BAA6B,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACtD,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;YACzD,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBACxC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI;gBAC3B,SAAS,EAAE,QAAQ,CAAC,UAAU;gBAC9B,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;gBAClD,cAAc,EAAE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;aACjD,CAAC,CAAC,CAAC;YACJ,GAAG,CAAC,IAAI,GAAG;gBACT,OAAO,EAAE,IAAI;gBACb,IAAI;gBACJ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;YACjB,GAAG,CAAC,IAAI,GAAG;gBACT,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,wBAAwB;gBAC/B,OAAO,EAAG,KAAe,CAAC,OAAO;aAClC,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
package/lib/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export interface WeixinIlinkBotConfig {
1
+ export interface WeixinIlinkEndpointConfig {
2
2
  context: "weixin-ilink";
3
3
  name: string;
4
4
  /** 观测用 bot_agent,默认 Zhin.js/<version> */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE;QAChB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,0BAA0B;QAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,aAAa,CAAC,EAAE;YACd,IAAI,CAAC,EAAE,QAAQ,CAAC;YAChB,UAAU,CAAC,EAAE,OAAO,CAAC;YACrB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SAC1C,CAAC;KACH,CAAC;CACH;AAED,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE;QAChB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,0BAA0B;QAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,aAAa,CAAC,EAAE;YACd,IAAI,CAAC,EAAE,QAAQ,CAAC;YAChB,UAAU,CAAC,EAAE,OAAO,CAAC;YACrB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SAC1C,CAAC;KACH,CAAC;CACH;AAED,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * 微信 iLink Typing Indicator(iLink sendTyping API → 微信「正在输入」)
3
3
  */
4
- import type { WeixinIlinkBot } from "./bot.js";
4
+ import type { WeixinIlinkEndpoint } from "./endpoint.js";
5
5
  import { type TypingIndicator, type TypingIndicatorConfig } from "@zhin.js/agent";
6
6
  export interface WeixinIlinkTypingIndicatorConfig {
7
7
  enabled?: boolean;
@@ -12,8 +12,8 @@ export interface WeixinIlinkTypingIndicatorConfig {
12
12
  export declare class WeixinIlinkTypingIndicatorManager {
13
13
  private manager;
14
14
  private config;
15
- private bot;
16
- constructor(bot: WeixinIlinkBot, config?: WeixinIlinkTypingIndicatorConfig);
15
+ private endpoint;
16
+ constructor(endpoint: WeixinIlinkEndpoint, config?: WeixinIlinkTypingIndicatorConfig);
17
17
  private registerAdapter;
18
18
  start(options: {
19
19
  messageId?: string;
@@ -28,5 +28,5 @@ export declare class WeixinIlinkTypingIndicatorManager {
28
28
  groupId?: string;
29
29
  }): Promise<void>;
30
30
  }
31
- export declare function enableTypingIndicator(bot: WeixinIlinkBot, config?: WeixinIlinkTypingIndicatorConfig): WeixinIlinkTypingIndicatorManager;
31
+ export declare function enableTypingIndicator(endpoint: WeixinIlinkEndpoint, config?: WeixinIlinkTypingIndicatorConfig): WeixinIlinkTypingIndicatorManager;
32
32
  //# sourceMappingURL=typing-indicator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"typing-indicator.d.ts","sourceRoot":"","sources":["../src/typing-indicator.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAE3B,MAAM,gBAAgB,CAAC;AAGxB,MAAM,WAAW,gCAAgC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,4CAA4C;IAC5C,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;CAChD;AAYD,qBAAa,iCAAiC;IAC5C,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,GAAG,CAAiB;gBAEhB,GAAG,EAAE,cAAc,EAAE,MAAM,GAAE,gCAAqC;IAsB9E,OAAO,CAAC,eAAe;IAiBjB,KAAK,CAAC,OAAO,EAAE;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC;KAChC,GAAG,OAAO,CAAC,eAAe,CAAC;IAuBtB,IAAI,CAAC,OAAO,EAAE;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,IAAI,CAAC;CAWlB;AAaD,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,cAAc,EACnB,MAAM,CAAC,EAAE,gCAAgC,GACxC,iCAAiC,CAInC"}
1
+ {"version":3,"file":"typing-indicator.d.ts","sourceRoot":"","sources":["../src/typing-indicator.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAE3B,MAAM,gBAAgB,CAAC;AAGxB,MAAM,WAAW,gCAAgC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,4CAA4C;IAC5C,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;CAChD;AAYD,qBAAa,iCAAiC;IAC5C,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,QAAQ,CAAsB;gBAE1B,QAAQ,EAAE,mBAAmB,EAAE,MAAM,GAAE,gCAAqC;IAsBxF,OAAO,CAAC,eAAe;IAiBjB,KAAK,CAAC,OAAO,EAAE;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC;KAChC,GAAG,OAAO,CAAC,eAAe,CAAC;IAuBtB,IAAI,CAAC,OAAO,EAAE;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,IAAI,CAAC;CAWlB;AAaD,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,mBAAmB,EAC7B,MAAM,CAAC,EAAE,gCAAgC,GACxC,iCAAiC,CAInC"}
@@ -12,9 +12,9 @@ const DEFAULT_CONFIG = {
12
12
  export class WeixinIlinkTypingIndicatorManager {
13
13
  manager;
14
14
  config;
15
- bot;
16
- constructor(bot, config = {}) {
17
- this.bot = bot;
15
+ endpoint;
16
+ constructor(endpoint, config = {}) {
17
+ this.endpoint = endpoint;
18
18
  this.config = {
19
19
  ...DEFAULT_CONFIG,
20
20
  ...config,
@@ -38,12 +38,12 @@ export class WeixinIlinkTypingIndicatorManager {
38
38
  const peerId = resolvePeerId(options);
39
39
  if (!peerId)
40
40
  return;
41
- await this.bot.sendTypingToUser(peerId, TypingStatus.TYPING);
41
+ await this.endpoint.sendTypingToUser(peerId, TypingStatus.TYPING);
42
42
  }, async (options) => {
43
43
  const peerId = resolvePeerId(options);
44
44
  if (!peerId)
45
45
  return;
46
- await this.bot.sendTypingToUser(peerId, TypingStatus.CANCEL);
46
+ await this.endpoint.sendTypingToUser(peerId, TypingStatus.CANCEL);
47
47
  });
48
48
  this.manager.registerAdapter(adapter);
49
49
  }
@@ -62,7 +62,7 @@ export class WeixinIlinkTypingIndicatorManager {
62
62
  userId: peerId,
63
63
  groupId: options.groupId,
64
64
  platform: "weixin-ilink",
65
- botId: this.bot.$id,
65
+ endpointId: this.endpoint.$id,
66
66
  sceneType: "private",
67
67
  };
68
68
  return this.manager.start(typingOptions, this.config.privateConfig);
@@ -74,7 +74,7 @@ export class WeixinIlinkTypingIndicatorManager {
74
74
  userId: peerId,
75
75
  groupId: options.groupId,
76
76
  platform: "weixin-ilink",
77
- botId: this.bot.$id,
77
+ endpointId: this.endpoint.$id,
78
78
  sceneType: "private",
79
79
  });
80
80
  }
@@ -87,9 +87,9 @@ function resolvePeerId(options) {
87
87
  const hash = raw.indexOf("#");
88
88
  return hash >= 0 ? raw.slice(0, hash) : raw;
89
89
  }
90
- export function enableTypingIndicator(bot, config) {
91
- const manager = new WeixinIlinkTypingIndicatorManager(bot, config);
92
- bot.$typingIndicator = manager;
90
+ export function enableTypingIndicator(endpoint, config) {
91
+ const manager = new WeixinIlinkTypingIndicatorManager(endpoint, config);
92
+ endpoint.$typingIndicator = manager;
93
93
  return manager;
94
94
  }
95
95
  //# sourceMappingURL=typing-indicator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"typing-indicator.js","sourceRoot":"","sources":["../src/typing-indicator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"typing-indicator.js","sourceRoot":"","sources":["../src/typing-indicator.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@zhin.js/adapter-weixin-ilink",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "type": "module",
5
- "description": "Zhin.js adapter for WeChat personal account via Tencent iLink Bot API (ClawBot)",
5
+ "description": "Zhin.js adapter for WeChat personal account via Tencent iLink Endpoint API (ClawBot)",
6
6
  "main": "./lib/index.js",
7
7
  "types": "./lib/index.d.ts",
8
8
  "keywords": [
@@ -52,21 +52,25 @@
52
52
  "@types/react": "^19.2.15",
53
53
  "@types/react-dom": "^19.2.3",
54
54
  "lucide-react": "^1.17.0",
55
- "radix-ui": "^1.4.3",
55
+ "radix-ui": "^1.5.0",
56
56
  "typescript": "^6.0.3",
57
- "@zhin.js/cli": "1.0.88",
57
+ "@zhin.js/agent": "0.2.1",
58
+ "@zhin.js/cli": "1.0.89",
59
+ "@zhin.js/client": "2.0.3",
58
60
  "@zhin.js/contract": "1.0.1",
59
- "zhin.js": "2.0.0",
60
- "@zhin.js/host-api": "1.0.0"
61
+ "@zhin.js/core": "1.2.1",
62
+ "@zhin.js/host-api": "1.0.1",
63
+ "@zhin.js/host-router": "1.0.1",
64
+ "zhin.js": "2.0.1"
61
65
  },
62
66
  "peerDependencies": {
63
- "@zhin.js/agent": "0.2.0",
64
- "@zhin.js/client": "2.0.2",
65
- "@zhin.js/host-api": "1.0.0",
66
- "@zhin.js/host-router": "1.0.0",
67
- "zhin.js": "2.0.0",
67
+ "@zhin.js/agent": "0.2.1",
68
68
  "@zhin.js/contract": "1.0.1",
69
- "@zhin.js/core": "1.2.0"
69
+ "@zhin.js/client": "2.0.3",
70
+ "@zhin.js/core": "1.2.1",
71
+ "@zhin.js/host-router": "1.0.1",
72
+ "@zhin.js/host-api": "1.0.1",
73
+ "zhin.js": "2.0.1"
70
74
  },
71
75
  "peerDependenciesMeta": {
72
76
  "@zhin.js/agent": {
package/src/adapter.ts CHANGED
@@ -2,15 +2,17 @@
2
2
  * 微信 iLink(ClawBot)适配器
3
3
  */
4
4
  import { Adapter, type Plugin } from "zhin.js";
5
- import { WeixinIlinkBot } from "./bot.js";
6
- import type { WeixinIlinkBotConfig } from "./types.js";
5
+ import { WeixinIlinkEndpoint } from "./endpoint.js";
6
+ import type { WeixinIlinkEndpointConfig } from "./types.js";
7
+
8
+ export class WeixinIlinkAdapter extends Adapter<WeixinIlinkEndpoint> {
9
+ static override readonly capabilities = ['inbound', 'outbound'] as const;
7
10
 
8
- export class WeixinIlinkAdapter extends Adapter<WeixinIlinkBot> {
9
11
  constructor(plugin: Plugin) {
10
12
  super(plugin, "weixin-ilink", []);
11
13
  }
12
14
 
13
- createBot(config: WeixinIlinkBotConfig): WeixinIlinkBot {
14
- return new WeixinIlinkBot(this, config);
15
+ createEndpoint(config: WeixinIlinkEndpointConfig): WeixinIlinkEndpoint {
16
+ return new WeixinIlinkEndpoint(this, config);
15
17
  }
16
18
  }
@@ -17,12 +17,12 @@ export function resolveStateDir(): string {
17
17
  : DEFAULT_DATA_DIR;
18
18
  }
19
19
 
20
- export function credentialsPath(botName: string): string {
21
- return path.join(resolveStateDir(), `${botName}.json`);
20
+ export function credentialsPath(endpointName: string): string {
21
+ return path.join(resolveStateDir(), `${endpointName}.json`);
22
22
  }
23
23
 
24
- export function loadCredentials(botName: string): WeixinIlinkCredentials | null {
25
- const file = credentialsPath(botName);
24
+ export function loadCredentials(endpointName: string): WeixinIlinkCredentials | null {
25
+ const file = credentialsPath(endpointName);
26
26
  try {
27
27
  if (!fs.existsSync(file)) return null;
28
28
  const raw = fs.readFileSync(file, "utf-8");
@@ -34,8 +34,8 @@ export function loadCredentials(botName: string): WeixinIlinkCredentials | null
34
34
  }
35
35
  }
36
36
 
37
- export function saveCredentials(botName: string, creds: WeixinIlinkCredentials): void {
38
- const file = credentialsPath(botName);
37
+ export function saveCredentials(endpointName: string, creds: WeixinIlinkCredentials): void {
38
+ const file = credentialsPath(endpointName);
39
39
  fs.mkdirSync(path.dirname(file), { recursive: true });
40
40
  fs.writeFileSync(
41
41
  file,
@@ -44,12 +44,12 @@ export function saveCredentials(botName: string, creds: WeixinIlinkCredentials):
44
44
  );
45
45
  }
46
46
 
47
- export function syncBufPath(botName: string): string {
48
- return path.join(resolveStateDir(), `${botName}.sync-buf`);
47
+ export function syncBufPath(endpointName: string): string {
48
+ return path.join(resolveStateDir(), `${endpointName}.sync-buf`);
49
49
  }
50
50
 
51
- export function loadSyncBuf(botName: string): string {
52
- const file = syncBufPath(botName);
51
+ export function loadSyncBuf(endpointName: string): string {
52
+ const file = syncBufPath(endpointName);
53
53
  try {
54
54
  return fs.existsSync(file) ? fs.readFileSync(file, "utf-8") : "";
55
55
  } catch {
@@ -57,8 +57,8 @@ export function loadSyncBuf(botName: string): string {
57
57
  }
58
58
  }
59
59
 
60
- export function saveSyncBuf(botName: string, buf: string): void {
61
- const file = syncBufPath(botName);
60
+ export function saveSyncBuf(endpointName: string, buf: string): void {
61
+ const file = syncBufPath(endpointName);
62
62
  fs.mkdirSync(path.dirname(file), { recursive: true });
63
63
  fs.writeFileSync(file, buf, "utf-8");
64
64
  }
@@ -5,7 +5,7 @@ import crypto from "node:crypto";
5
5
  import fs from "node:fs";
6
6
  import path from "node:path";
7
7
  import {
8
- Bot,
8
+ Endpoint,
9
9
  Message,
10
10
  type MessageSegment,
11
11
  type SendContent,
@@ -47,7 +47,7 @@ import type { MessageItem, WeixinMessage } from "./ilink-types.js";
47
47
  import { MessageItemType } from "./ilink-types.js";
48
48
  import { getExtensionFromMime, sniffMimeFromBuffer } from "./mime.js";
49
49
  import type { WeixinInboundMediaOpts } from "./weixin-inbound.js";
50
- import type { WeixinIlinkBotConfig } from "./types.js";
50
+ import type { WeixinIlinkEndpointConfig } from "./types.js";
51
51
  import type { WeixinIlinkAdapter } from "./adapter.js";
52
52
  import {
53
53
  WeixinIlinkTypingIndicatorManager,
@@ -90,7 +90,7 @@ function segmentLocalPath(seg: MessageSegment): string | undefined {
90
90
  return ref.replace(/^file:\/\//, "");
91
91
  }
92
92
 
93
- export class WeixinIlinkBot implements Bot<WeixinIlinkBotConfig, WeixinMessage> {
93
+ export class WeixinIlinkEndpoint implements Endpoint<WeixinIlinkEndpointConfig, WeixinMessage> {
94
94
  $connected = false;
95
95
  $typingIndicator?: WeixinIlinkTypingIndicatorManager;
96
96
 
@@ -113,7 +113,7 @@ export class WeixinIlinkBot implements Bot<WeixinIlinkBotConfig, WeixinMessage>
113
113
 
114
114
  constructor(
115
115
  public adapter: WeixinIlinkAdapter,
116
- public $config: WeixinIlinkBotConfig,
116
+ public $config: WeixinIlinkEndpointConfig,
117
117
  ) {}
118
118
 
119
119
  apiBaseUrl(): string {
@@ -149,7 +149,7 @@ export class WeixinIlinkBot implements Bot<WeixinIlinkBotConfig, WeixinMessage>
149
149
  this.pollAbort = new AbortController();
150
150
  this.pollPromise = this.pollLoop(this.pollAbort.signal);
151
151
  this.$connected = true;
152
- this.pluginLogger.info(`weixin-ilink bot ${this.$id} connected`);
152
+ this.pluginLogger.info(`weixin-ilink endpoint ${this.$id} connected`);
153
153
  }
154
154
 
155
155
  async $disconnect(): Promise<void> {
@@ -167,7 +167,7 @@ export class WeixinIlinkBot implements Bot<WeixinIlinkBotConfig, WeixinMessage>
167
167
  }
168
168
  }
169
169
  this.$connected = false;
170
- this.pluginLogger.info(`weixin-ilink bot ${this.$id} disconnected`);
170
+ this.pluginLogger.info(`weixin-ilink endpoint ${this.$id} disconnected`);
171
171
  }
172
172
 
173
173
  async sendTypingToUser(userId: string, status: number): Promise<void> {
@@ -203,7 +203,7 @@ export class WeixinIlinkBot implements Bot<WeixinIlinkBotConfig, WeixinMessage>
203
203
  return Message.from(msg, {
204
204
  $id: msgId,
205
205
  $adapter: "weixin-ilink",
206
- $bot: this.$config.name,
206
+ $endpoint: this.$config.name,
207
207
  $sender: {
208
208
  id: userId,
209
209
  name: userId,
@@ -221,7 +221,7 @@ export class WeixinIlinkBot implements Bot<WeixinIlinkBotConfig, WeixinMessage>
221
221
  if (!Array.isArray(replyContent)) replyContent = [replyContent];
222
222
  return this.adapter.sendMessage({
223
223
  context: "weixin-ilink",
224
- bot: this.$config.name,
224
+ endpoint: this.$config.name,
225
225
  id: userId,
226
226
  type: "private",
227
227
  content: replyContent,
package/src/index.ts CHANGED
@@ -21,7 +21,7 @@ declare module "zhin.js" {
21
21
  }
22
22
 
23
23
  export * from "./types.js";
24
- export { WeixinIlinkBot } from "./bot.js";
24
+ export { WeixinIlinkEndpoint } from "./endpoint.js";
25
25
  export { WeixinIlinkAdapter } from "./adapter.js";
26
26
  export {
27
27
  WeixinIlinkTypingIndicatorManager,
@@ -35,7 +35,7 @@ const { provide, useContext, root } = plugin;
35
35
 
36
36
  provide({
37
37
  name: "weixin-ilink",
38
- description: "WeChat personal account via Tencent iLink Bot API (ClawBot)",
38
+ description: "WeChat personal account via Tencent iLink Endpoint API (ClawBot)",
39
39
  mounted: async (p: Plugin) => {
40
40
  const adapter = new WeixinIlinkAdapter(p);
41
41
  await adapter.start();
package/src/login.ts CHANGED
@@ -7,7 +7,7 @@ import {
7
7
  saveCredentials,
8
8
  type WeixinIlinkCredentials,
9
9
  } from "./credentials.js";
10
- import type { WeixinIlinkBotConfig } from "./types.js";
10
+ import type { WeixinIlinkEndpointConfig } from "./types.js";
11
11
 
12
12
  const DEFAULT_ILINK_BOT_TYPE = "3";
13
13
  const QR_LONG_POLL_TIMEOUT_MS = 35_000;
@@ -29,7 +29,7 @@ interface StatusResponse {
29
29
  | "verify_code_blocked"
30
30
  | "binded_redirect";
31
31
  bot_token?: string;
32
- ilink_bot_id?: string;
32
+ ilink_endpoint_id?: string;
33
33
  baseurl?: string;
34
34
  ilink_user_id?: string;
35
35
  redirect_host?: string;
@@ -73,7 +73,7 @@ async function pollQRStatus(
73
73
 
74
74
  export async function resolveCredentials(
75
75
  plugin: Plugin,
76
- config: WeixinIlinkBotConfig,
76
+ config: WeixinIlinkEndpointConfig,
77
77
  ): Promise<WeixinIlinkCredentials> {
78
78
  const envToken = process.env.WEIXIN_ILINK_TOKEN?.trim() || config.botToken?.trim();
79
79
  if (envToken) {
@@ -99,7 +99,7 @@ export async function resolveCredentials(
99
99
 
100
100
  export async function loginWithQr(
101
101
  plugin: Plugin,
102
- config: WeixinIlinkBotConfig,
102
+ config: WeixinIlinkEndpointConfig,
103
103
  ): Promise<WeixinIlinkCredentials> {
104
104
  const apiBaseUrl = config.baseUrl ?? DEFAULT_API_BASE_URL;
105
105
  const qr = await fetchQRCode(apiBaseUrl, DEFAULT_ILINK_BOT_TYPE);
@@ -117,7 +117,7 @@ export async function loginWithQr(
117
117
  });
118
118
  const assistTask = loginAssist
119
119
  .listPending()
120
- .find((t) => t.adapter === "weixin-ilink" && t.botId === config.name);
120
+ .find((t) => t.adapter === "weixin-ilink" && t.endpointId === config.name);
121
121
 
122
122
  const deadline = Date.now() + LOGIN_TIMEOUT_MS;
123
123
  let currentBaseUrl = apiBaseUrl;
@@ -139,7 +139,7 @@ export async function loginWithQr(
139
139
  const creds: WeixinIlinkCredentials = {
140
140
  botToken: status.bot_token ?? loadCredentials(config.name)?.botToken ?? "",
141
141
  ilinkUserId: status.ilink_user_id,
142
- ilinkBotId: status.ilink_bot_id,
142
+ ilinkBotId: status.ilink_endpoint_id,
143
143
  baseUrl: status.baseurl ?? currentBaseUrl,
144
144
  };
145
145
  if (!creds.botToken) {
package/src/routes.ts CHANGED
@@ -13,14 +13,14 @@ export function registerRoutes(
13
13
  ): void {
14
14
  registerLoginAssistRoutes(router, root);
15
15
 
16
- router.get("/api/weixin-ilink/bots", async (ctx) => {
16
+ router.get("/api/weixin-ilink/endpoints", async (ctx) => {
17
17
  try {
18
- const bots = Array.from(adapter.bots.values());
19
- const data = bots.map((bot) => ({
20
- name: bot.$config.name,
21
- connected: bot.$connected,
22
- status: bot.$connected ? "online" : "offline",
23
- hasCredentials: Boolean(bot.hasCredentials),
18
+ const endpoints = Array.from(adapter.endpoints.values());
19
+ const data = endpoints.map((endpoint) => ({
20
+ name: endpoint.$config.name,
21
+ connected: endpoint.$connected,
22
+ status: endpoint.$connected ? "online" : "offline",
23
+ hasCredentials: Boolean(endpoint.hasCredentials),
24
24
  }));
25
25
  ctx.body = {
26
26
  success: true,
package/src/types.ts CHANGED
@@ -1,4 +1,4 @@
1
- export interface WeixinIlinkBotConfig {
1
+ export interface WeixinIlinkEndpointConfig {
2
2
  context: "weixin-ilink";
3
3
  name: string;
4
4
  /** 观测用 bot_agent,默认 Zhin.js/<version> */
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * 微信 iLink Typing Indicator(iLink sendTyping API → 微信「正在输入」)
3
3
  */
4
- import type { WeixinIlinkBot } from "./bot.js";
4
+ import type { WeixinIlinkEndpoint } from "./endpoint.js";
5
5
  import {
6
6
  NativeTypingIndicatorAdapter,
7
7
  TypingIndicatorManager,
@@ -31,10 +31,10 @@ const DEFAULT_CONFIG: WeixinIlinkTypingIndicatorConfig = {
31
31
  export class WeixinIlinkTypingIndicatorManager {
32
32
  private manager: TypingIndicatorManager;
33
33
  private config: WeixinIlinkTypingIndicatorConfig;
34
- private bot: WeixinIlinkBot;
34
+ private endpoint: WeixinIlinkEndpoint;
35
35
 
36
- constructor(bot: WeixinIlinkBot, config: WeixinIlinkTypingIndicatorConfig = {}) {
37
- this.bot = bot;
36
+ constructor(endpoint: WeixinIlinkEndpoint, config: WeixinIlinkTypingIndicatorConfig = {}) {
37
+ this.endpoint = endpoint;
38
38
  this.config = {
39
39
  ...DEFAULT_CONFIG,
40
40
  ...config,
@@ -61,12 +61,12 @@ export class WeixinIlinkTypingIndicatorManager {
61
61
  async (options: TypingIndicatorOptions) => {
62
62
  const peerId = resolvePeerId(options);
63
63
  if (!peerId) return;
64
- await this.bot.sendTypingToUser(peerId, TypingStatus.TYPING);
64
+ await this.endpoint.sendTypingToUser(peerId, TypingStatus.TYPING);
65
65
  },
66
66
  async (options: TypingIndicatorOptions) => {
67
67
  const peerId = resolvePeerId(options);
68
68
  if (!peerId) return;
69
- await this.bot.sendTypingToUser(peerId, TypingStatus.CANCEL);
69
+ await this.endpoint.sendTypingToUser(peerId, TypingStatus.CANCEL);
70
70
  },
71
71
  );
72
72
  this.manager.registerAdapter(adapter);
@@ -94,7 +94,7 @@ export class WeixinIlinkTypingIndicatorManager {
94
94
  userId: peerId,
95
95
  groupId: options.groupId,
96
96
  platform: "weixin-ilink",
97
- botId: this.bot.$id,
97
+ endpointId: this.endpoint.$id,
98
98
  sceneType: "private",
99
99
  };
100
100
 
@@ -112,7 +112,7 @@ export class WeixinIlinkTypingIndicatorManager {
112
112
  userId: peerId,
113
113
  groupId: options.groupId,
114
114
  platform: "weixin-ilink",
115
- botId: this.bot.$id,
115
+ endpointId: this.endpoint.$id,
116
116
  sceneType: "private",
117
117
  });
118
118
  }
@@ -130,10 +130,10 @@ function resolvePeerId(options: {
130
130
  }
131
131
 
132
132
  export function enableTypingIndicator(
133
- bot: WeixinIlinkBot,
133
+ endpoint: WeixinIlinkEndpoint,
134
134
  config?: WeixinIlinkTypingIndicatorConfig,
135
135
  ): WeixinIlinkTypingIndicatorManager {
136
- const manager = new WeixinIlinkTypingIndicatorManager(bot, config);
137
- bot.$typingIndicator = manager;
136
+ const manager = new WeixinIlinkTypingIndicatorManager(endpoint, config);
137
+ endpoint.$typingIndicator = manager;
138
138
  return manager;
139
139
  }
package/lib/bot.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,GAAG,EACH,OAAO,EAGP,KAAK,WAAW,EAEjB,MAAM,SAAS,CAAC;AAgCjB,OAAO,KAAK,EAAe,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGnE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EACL,iCAAiC,EAElC,MAAM,uBAAuB,CAAC;AAQ/B,MAAM,MAAM,sBAAsB,GAAG,aAAa,GAAG;IACnD,MAAM,CAAC,EAAE,sBAAsB,CAAC;CACjC,CAAC;AA4BF,qBAAa,cAAe,YAAW,GAAG,CAAC,oBAAoB,EAAE,aAAa,CAAC;IAsBpE,OAAO,EAAE,kBAAkB;IAC3B,OAAO,EAAE,oBAAoB;IAtBtC,UAAU,UAAS;IACnB,gBAAgB,CAAC,EAAE,iCAAiC,CAAC;IAErD,OAAO,CAAC,KAAK,CAAuC;IACpD,OAAO,CAAC,SAAS,CAAC,CAAkB;IACpC,OAAO,CAAC,WAAW,CAAC,CAAgB;IACpC,OAAO,CAAC,aAAa,CAAC,CAAsB;IAE5C,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED,IAAI,YAAY,6BAEf;gBAGQ,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,oBAAoB;IAGtC,UAAU,IAAI,MAAM;IAIpB,UAAU,IAAI,MAAM;IAId,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IA4BzB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB5B,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB/D,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD,cAAc,CAAC,GAAG,EAAE,sBAAsB,GAAG,OAAO,CAAC,aAAa,CAAC;IAqCnE,OAAO,CAAC,mBAAmB;IAwBrB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;YA8E3C,QAAQ;YAwER,oBAAoB;YAgBpB,oBAAoB;YA8BpB,gBAAgB;CA0B/B"}
package/lib/bot.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"bot.js","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"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"}