@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.
- package/CHANGELOG.md +15 -0
- package/README.md +6 -6
- package/client/LoginAssistPanel.tsx +2 -2
- package/client/WeixinIlinkManagement.tsx +13 -13
- package/dist/index.js +1 -1
- package/lib/adapter.d.ts +5 -4
- package/lib/adapter.d.ts.map +1 -1
- package/lib/adapter.js +4 -3
- package/lib/adapter.js.map +1 -1
- package/lib/credentials.d.ts +6 -6
- package/lib/credentials.d.ts.map +1 -1
- package/lib/credentials.js +12 -12
- package/lib/credentials.js.map +1 -1
- package/lib/{bot.d.ts → endpoint.d.ts} +6 -6
- package/lib/endpoint.d.ts.map +1 -0
- package/lib/{bot.js → endpoint.js} +6 -6
- package/lib/endpoint.js.map +1 -0
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -2
- package/lib/index.js.map +1 -1
- package/lib/login.d.ts +3 -3
- package/lib/login.d.ts.map +1 -1
- package/lib/login.js +2 -2
- package/lib/login.js.map +1 -1
- package/lib/routes.js +7 -7
- package/lib/routes.js.map +1 -1
- package/lib/types.d.ts +1 -1
- package/lib/types.d.ts.map +1 -1
- package/lib/typing-indicator.d.ts +4 -4
- package/lib/typing-indicator.d.ts.map +1 -1
- package/lib/typing-indicator.js +10 -10
- package/lib/typing-indicator.js.map +1 -1
- package/package.json +16 -12
- package/src/adapter.ts +7 -5
- package/src/credentials.ts +12 -12
- package/src/{bot.ts → endpoint.ts} +8 -8
- package/src/index.ts +2 -2
- package/src/login.ts +6 -6
- package/src/routes.ts +7 -7
- package/src/types.ts +1 -1
- package/src/typing-indicator.ts +11 -11
- package/lib/bot.d.ts.map +0 -1
- 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
|
|
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
|
-
|
|
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
|
-
-
|
|
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`(按 `
|
|
75
|
+
回复必须携带入站时缓存的 `context_token`(按 `endpointId + peerUserId`)。若用户久未发消息导致 token 缺失,出站会拒绝并打 warn。
|
|
76
76
|
|
|
77
|
-
所有出站走标准链路:`Message.$reply` / `Adapter.sendMessage` → `before.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
|
-
| 二维码过期 | 重启
|
|
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
|
-
|
|
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.
|
|
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
|
|
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 [
|
|
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/
|
|
26
|
-
const json = (await res.json()) as { success?: boolean; data?:
|
|
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
|
-
|
|
28
|
+
setEndpoints(Array.isArray(json.data) ? json.data : []);
|
|
29
29
|
} catch (e) {
|
|
30
30
|
setErr((e as Error).message);
|
|
31
|
-
|
|
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
|
-
) :
|
|
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
|
-
{
|
|
109
|
-
<div key={
|
|
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">{
|
|
111
|
+
<div className="font-semibold">{endpoint.name}</div>
|
|
112
112
|
<div className="text-xs text-muted-foreground mt-1">
|
|
113
|
-
凭证:{
|
|
113
|
+
凭证:{endpoint.hasCredentials ? "已保存" : "未登录"}
|
|
114
114
|
</div>
|
|
115
115
|
</div>
|
|
116
116
|
<div className="flex items-center gap-2 text-sm">
|
|
117
|
-
{
|
|
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 {
|
|
6
|
-
import type {
|
|
7
|
-
export declare class WeixinIlinkAdapter extends Adapter<
|
|
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
|
-
|
|
10
|
+
createEndpoint(config: WeixinIlinkEndpointConfig): WeixinIlinkEndpoint;
|
|
10
11
|
}
|
|
11
12
|
//# sourceMappingURL=adapter.d.ts.map
|
package/lib/adapter.d.ts.map
CHANGED
|
@@ -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,
|
|
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 {
|
|
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
|
-
|
|
11
|
-
return new
|
|
11
|
+
createEndpoint(config) {
|
|
12
|
+
return new WeixinIlinkEndpoint(this, config);
|
|
12
13
|
}
|
|
13
14
|
}
|
|
14
15
|
//# sourceMappingURL=adapter.js.map
|
package/lib/adapter.js.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/lib/credentials.d.ts
CHANGED
|
@@ -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(
|
|
10
|
-
export declare function loadCredentials(
|
|
11
|
-
export declare function saveCredentials(
|
|
12
|
-
export declare function syncBufPath(
|
|
13
|
-
export declare function loadSyncBuf(
|
|
14
|
-
export declare function saveSyncBuf(
|
|
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
|
package/lib/credentials.d.ts.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/lib/credentials.js
CHANGED
|
@@ -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(
|
|
10
|
-
return path.join(resolveStateDir(), `${
|
|
9
|
+
export function credentialsPath(endpointName) {
|
|
10
|
+
return path.join(resolveStateDir(), `${endpointName}.json`);
|
|
11
11
|
}
|
|
12
|
-
export function loadCredentials(
|
|
13
|
-
const file = credentialsPath(
|
|
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(
|
|
28
|
-
const file = credentialsPath(
|
|
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(
|
|
33
|
-
return path.join(resolveStateDir(), `${
|
|
32
|
+
export function syncBufPath(endpointName) {
|
|
33
|
+
return path.join(resolveStateDir(), `${endpointName}.sync-buf`);
|
|
34
34
|
}
|
|
35
|
-
export function loadSyncBuf(
|
|
36
|
-
const file = syncBufPath(
|
|
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(
|
|
45
|
-
const file = syncBufPath(
|
|
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
|
}
|
package/lib/credentials.js.map
CHANGED
|
@@ -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,
|
|
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 {
|
|
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 {
|
|
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
|
|
10
|
+
export declare class WeixinIlinkEndpoint implements Endpoint<WeixinIlinkEndpointConfig, WeixinMessage> {
|
|
11
11
|
adapter: WeixinIlinkAdapter;
|
|
12
|
-
$config:
|
|
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:
|
|
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=
|
|
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
|
|
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
|
|
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
|
|
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
|
-
$
|
|
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
|
-
|
|
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=
|
|
383
|
+
//# sourceMappingURL=endpoint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../src/endpoint.ts"],"names":[],"mappings":"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"}
|
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 {
|
|
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";
|
package/lib/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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 {
|
|
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
|
|
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,
|
|
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 {
|
|
4
|
-
export declare function resolveCredentials(plugin: Plugin, config:
|
|
5
|
-
export declare function loginWithQr(plugin: Plugin, config:
|
|
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
|
package/lib/login.d.ts.map
CHANGED
|
@@ -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,
|
|
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.
|
|
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.
|
|
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":"AACA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EACL,eAAe,EACf,eAAe,GAEhB,MAAM,kBAAkB,CAAC;AAG1B,MAAM,sBAAsB,GAAG,GAAG,CAAC;AACnC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AACvC,MAAM,gBAAgB,GAAG,OAAO,CAAC;AAwBjC,SAAS,oBAAoB;IAC3B,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,UAAkB,EAAE,OAAe;IAC5D,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC;QACjC,OAAO,EAAE,UAAU;QACnB,QAAQ,EAAE,qCAAqC,kBAAkB,CAAC,OAAO,CAAC,EAAE;QAC5E,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE,CAAC;QAC9F,KAAK,EAAE,aAAa;KACrB,CAAC,CAAC;IACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAmB,CAAC;AAC/C,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,UAAkB,EAClB,MAAc;IAEd,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,sCAAsC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;QACpF,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC;YAChC,OAAO,EAAE,UAAU;YACnB,QAAQ;YACR,SAAS,EAAE,uBAAuB;YAClC,KAAK,EAAE,cAAc;SACtB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAmB,CAAC;IAC/C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACtD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAC5B,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,uBAAuB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAc,EACd,
|
|
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/
|
|
4
|
+
router.get("/api/weixin-ilink/endpoints", async (ctx) => {
|
|
5
5
|
try {
|
|
6
|
-
const
|
|
7
|
-
const data =
|
|
8
|
-
name:
|
|
9
|
-
connected:
|
|
10
|
-
status:
|
|
11
|
-
hasCredentials: Boolean(
|
|
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,
|
|
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
package/lib/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,
|
|
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 {
|
|
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
|
|
16
|
-
constructor(
|
|
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(
|
|
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,
|
|
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"}
|
package/lib/typing-indicator.js
CHANGED
|
@@ -12,9 +12,9 @@ const DEFAULT_CONFIG = {
|
|
|
12
12
|
export class WeixinIlinkTypingIndicatorManager {
|
|
13
13
|
manager;
|
|
14
14
|
config;
|
|
15
|
-
|
|
16
|
-
constructor(
|
|
17
|
-
this.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
91
|
-
const manager = new WeixinIlinkTypingIndicatorManager(
|
|
92
|
-
|
|
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":"AAIA,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,GAIvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAShD,MAAM,cAAc,GAAqC;IACvD,OAAO,EAAE,IAAI;IACb,mBAAmB,EAAE,KAAK;IAC1B,aAAa,EAAE;QACb,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,IAAI;QAChB,cAAc,EAAE,EAAE,mBAAmB,EAAE,KAAK,EAAE;KAC/C;CACF,CAAC;AAEF,MAAM,OAAO,iCAAiC;IACpC,OAAO,CAAyB;IAChC,MAAM,CAAmC;IACzC,
|
|
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.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"description": "Zhin.js adapter for WeChat personal account via Tencent iLink
|
|
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.
|
|
55
|
+
"radix-ui": "^1.5.0",
|
|
56
56
|
"typescript": "^6.0.3",
|
|
57
|
-
"@zhin.js/
|
|
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.
|
|
60
|
-
"@zhin.js/host-api": "1.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.
|
|
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/
|
|
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 {
|
|
6
|
-
import type {
|
|
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
|
-
|
|
14
|
-
return new
|
|
15
|
+
createEndpoint(config: WeixinIlinkEndpointConfig): WeixinIlinkEndpoint {
|
|
16
|
+
return new WeixinIlinkEndpoint(this, config);
|
|
15
17
|
}
|
|
16
18
|
}
|
package/src/credentials.ts
CHANGED
|
@@ -17,12 +17,12 @@ export function resolveStateDir(): string {
|
|
|
17
17
|
: DEFAULT_DATA_DIR;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
export function credentialsPath(
|
|
21
|
-
return path.join(resolveStateDir(), `${
|
|
20
|
+
export function credentialsPath(endpointName: string): string {
|
|
21
|
+
return path.join(resolveStateDir(), `${endpointName}.json`);
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
export function loadCredentials(
|
|
25
|
-
const file = credentialsPath(
|
|
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(
|
|
38
|
-
const file = credentialsPath(
|
|
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(
|
|
48
|
-
return path.join(resolveStateDir(), `${
|
|
47
|
+
export function syncBufPath(endpointName: string): string {
|
|
48
|
+
return path.join(resolveStateDir(), `${endpointName}.sync-buf`);
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
export function loadSyncBuf(
|
|
52
|
-
const file = syncBufPath(
|
|
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(
|
|
61
|
-
const file = syncBufPath(
|
|
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
|
-
|
|
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 {
|
|
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
|
|
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:
|
|
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
|
|
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
|
|
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
|
-
$
|
|
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
|
-
|
|
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 {
|
|
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
|
|
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 {
|
|
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
|
-
|
|
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:
|
|
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:
|
|
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.
|
|
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.
|
|
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/
|
|
16
|
+
router.get("/api/weixin-ilink/endpoints", async (ctx) => {
|
|
17
17
|
try {
|
|
18
|
-
const
|
|
19
|
-
const data =
|
|
20
|
-
name:
|
|
21
|
-
connected:
|
|
22
|
-
status:
|
|
23
|
-
hasCredentials: Boolean(
|
|
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
package/src/typing-indicator.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 微信 iLink Typing Indicator(iLink sendTyping API → 微信「正在输入」)
|
|
3
3
|
*/
|
|
4
|
-
import type {
|
|
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
|
|
34
|
+
private endpoint: WeixinIlinkEndpoint;
|
|
35
35
|
|
|
36
|
-
constructor(
|
|
37
|
-
this.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
133
|
+
endpoint: WeixinIlinkEndpoint,
|
|
134
134
|
config?: WeixinIlinkTypingIndicatorConfig,
|
|
135
135
|
): WeixinIlinkTypingIndicatorManager {
|
|
136
|
-
const manager = new WeixinIlinkTypingIndicatorManager(
|
|
137
|
-
|
|
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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"}
|