@zhin.js/adapter-lark 4.0.0 → 4.0.2
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 +26 -0
- package/README.md +7 -3
- package/{skills/lark → agent}/PERMITS.md +1 -1
- package/agent/tools/add_members.ts +22 -0
- package/agent/tools/create_chat.ts +20 -0
- package/agent/tools/dissolve_chat.ts +18 -0
- package/agent/tools/get_user.ts +18 -0
- package/agent/tools/remove_managers.ts +22 -0
- package/agent/tools/set_managers.ts +22 -0
- package/agent/tools/update_chat.ts +23 -0
- package/agent/tools/upload_file.ts +27 -0
- package/lib/agent/tools/add_members.js +21 -0
- package/lib/agent/tools/add_members.js.map +1 -0
- package/lib/agent/tools/create_chat.js +20 -0
- package/lib/agent/tools/create_chat.js.map +1 -0
- package/lib/agent/tools/dissolve_chat.js +18 -0
- package/lib/agent/tools/dissolve_chat.js.map +1 -0
- package/lib/agent/tools/get_user.js +17 -0
- package/lib/agent/tools/get_user.js.map +1 -0
- package/lib/agent/tools/remove_managers.js +21 -0
- package/lib/agent/tools/remove_managers.js.map +1 -0
- package/lib/agent/tools/set_managers.js +21 -0
- package/lib/agent/tools/set_managers.js.map +1 -0
- package/lib/agent/tools/update_chat.js +22 -0
- package/lib/agent/tools/update_chat.js.map +1 -0
- package/lib/agent/tools/upload_file.js +19 -0
- package/lib/agent/tools/upload_file.js.map +1 -0
- package/lib/{adapter.js → src/adapter.js} +5 -4
- package/lib/src/adapter.js.map +1 -0
- package/lib/{endpoint.js → src/endpoint.js} +10 -6
- package/lib/src/endpoint.js.map +1 -0
- package/lib/src/index.js +43 -0
- package/lib/src/index.js.map +1 -0
- package/lib/src/lark-agent-deps.js +10 -0
- package/lib/src/lark-agent-deps.js.map +1 -0
- package/lib/{platform-permit.js → src/platform-permit.js} +5 -2
- package/lib/src/platform-permit.js.map +1 -0
- package/lib/src/segment-mapper.js +2 -0
- package/lib/src/segment-mapper.js.map +1 -0
- package/lib/src/types.js.map +1 -0
- package/package.json +17 -7
- package/src/adapter.ts +5 -4
- package/src/endpoint.ts +10 -6
- package/src/index.ts +13 -189
- package/src/lark-agent-deps.ts +18 -0
- package/src/platform-permit.ts +3 -4
- package/src/segment-mapper.ts +1 -0
- package/lib/adapter.d.ts +0 -19
- package/lib/adapter.d.ts.map +0 -1
- package/lib/adapter.js.map +0 -1
- package/lib/endpoint.d.ts +0 -84
- package/lib/endpoint.d.ts.map +0 -1
- package/lib/endpoint.js.map +0 -1
- package/lib/index.d.ts +0 -15
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js +0 -216
- package/lib/index.js.map +0 -1
- package/lib/platform-permit.d.ts +0 -16
- package/lib/platform-permit.d.ts.map +0 -1
- package/lib/platform-permit.js.map +0 -1
- package/lib/types.d.ts +0 -63
- package/lib/types.d.ts.map +0 -1
- package/lib/types.js.map +0 -1
- /package/{skills/lark/SKILL.md → agent/skills/lark.md} +0 -0
- /package/lib/{types.js → src/types.js} +0 -0
package/lib/src/index.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 飞书/Lark 适配器入口:类型扩展、导出、注册
|
|
3
|
+
*/
|
|
4
|
+
import { usePlugin, createSceneManagementTools } from "zhin.js";
|
|
5
|
+
import { LarkAdapter } from "./adapter.js";
|
|
6
|
+
import { larkGroupPermitResolver, registerLarkPlatformPermitChecker, } from "./platform-permit.js";
|
|
7
|
+
import { setLarkAgentDeps } from "./lark-agent-deps.js";
|
|
8
|
+
export * from "./types.js";
|
|
9
|
+
export { LarkEndpoint } from "./endpoint.js";
|
|
10
|
+
export { LarkAdapter } from "./adapter.js";
|
|
11
|
+
const plugin = usePlugin();
|
|
12
|
+
const { provide, useContext } = plugin;
|
|
13
|
+
useContext("router", (router) => {
|
|
14
|
+
provide({
|
|
15
|
+
name: "lark",
|
|
16
|
+
description: "Lark/Feishu Endpoint Adapter",
|
|
17
|
+
mounted: async (p) => {
|
|
18
|
+
const adapter = new LarkAdapter(p, router);
|
|
19
|
+
await adapter.start();
|
|
20
|
+
return adapter;
|
|
21
|
+
},
|
|
22
|
+
dispose: async (adapter) => {
|
|
23
|
+
await adapter.stop();
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
useContext('tool', 'lark', (toolService, lark) => {
|
|
28
|
+
const disposers = [];
|
|
29
|
+
disposers.push(registerLarkPlatformPermitChecker());
|
|
30
|
+
setLarkAgentDeps({
|
|
31
|
+
getEndpoint: (endpointId) => {
|
|
32
|
+
const endpoint = lark.endpoints.get(endpointId);
|
|
33
|
+
if (!endpoint)
|
|
34
|
+
throw new Error(`Endpoint ${endpointId} 不存在`);
|
|
35
|
+
return endpoint;
|
|
36
|
+
},
|
|
37
|
+
getAdapter: () => lark,
|
|
38
|
+
});
|
|
39
|
+
const sceneTools = createSceneManagementTools(lark, 'lark', { permitResolver: larkGroupPermitResolver, registerChecker: false });
|
|
40
|
+
disposers.push(...sceneTools.map(t => toolService.addTool(t, plugin.name)));
|
|
41
|
+
return () => disposers.forEach(d => d());
|
|
42
|
+
});
|
|
43
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,SAAS,EAAoD,0BAA0B,EAAoB,MAAM,SAAS,CAAC;AACpI,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EACL,uBAAuB,EACvB,iCAAiC,GAClC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAaxD,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;AAC3B,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;AAEtC,UAA+D,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;IACpF,OAAO,CAAC;QACN,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,8BAA8B;QAC3C,OAAO,EAAE,KAAK,EAAE,CAAS,EAAE,EAAE;YAC3B,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YAC3C,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,OAAoB,EAAE,EAAE;YACtC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC;KACiB,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;AAEH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,WAAwB,EAAE,IAAiB,EAAE,EAAE;IACzE,MAAM,SAAS,GAAmB,EAAE,CAAC;IACrC,SAAS,CAAC,IAAI,CAAC,iCAAiC,EAAE,CAAC,CAAC;IACpD,gBAAgB,CAAC;QACf,WAAW,EAAE,CAAC,UAAU,EAAE,EAAE;YAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAChD,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,YAAY,UAAU,MAAM,CAAC,CAAC;YAC7D,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI;KACvB,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,0BAA0B,CAC3C,IAAmC,EACnC,MAAM,EACN,EAAE,cAAc,EAAE,uBAAuB,EAAE,eAAe,EAAE,KAAK,EAAE,CACpE,CAAC;IACF,SAAS,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5E,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3C,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lark-agent-deps.js","sourceRoot":"","sources":["../../src/lark-agent-deps.ts"],"names":[],"mappings":"AAQA,IAAI,KAAK,GAAyB,IAAI,CAAC;AAEvC,MAAM,UAAU,gBAAgB,CAAC,IAAmB;IAClD,KAAK,GAAG,IAAI,CAAC;AACf,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAC/D,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 飞书 Lark platform permit
|
|
3
|
+
*/
|
|
1
4
|
import { registerPlatformPermitChecker } from 'zhin.js';
|
|
2
5
|
const ADAPTER = 'lark';
|
|
3
6
|
export function platformPermit(perm) {
|
|
4
7
|
return `platform(${ADAPTER},${perm})`;
|
|
5
8
|
}
|
|
6
9
|
const FACTORY_PERM_MAP = {
|
|
7
|
-
|
|
8
|
-
|
|
10
|
+
scene_admin: 'chat_admin',
|
|
11
|
+
scene_owner: 'chat_owner',
|
|
9
12
|
};
|
|
10
13
|
export function larkGroupPermitResolver(logicalPerm) {
|
|
11
14
|
return platformPermit(FACTORY_PERM_MAP[logicalPerm] ?? logicalPerm);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform-permit.js","sourceRoot":"","sources":["../../src/platform-permit.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,6BAA6B,EAAgB,MAAM,SAAS,CAAC;AAEtE,MAAM,OAAO,GAAG,MAAM,CAAC;AAEvB,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,YAAY,OAAO,IAAI,IAAI,GAAG,CAAC;AACxC,CAAC;AAED,MAAM,gBAAgB,GAA2B;IAC/C,WAAW,EAAE,YAAY;IACzB,WAAW,EAAE,YAAY;CAC1B,CAAC;AAEF,MAAM,UAAU,uBAAuB,CAAC,WAAmB;IACzD,OAAO,cAAc,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,KAG5C;IACC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,iBAAiB,CAAC,EAAE,CAAC;IACzF,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC;IACxD,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,IAAY,EAAE,OAAqB;IACzE,MAAM,MAAM,GAAG,OAAO,CAAC,OAAoD,CAAC;IAC5E,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;IAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEnD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,YAAY;YACf,OAAO,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;QAC/C,KAAK,YAAY;YACf,OAAO,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;QACxF,KAAK,iBAAiB;YACpB,OAAO,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;QAC/C;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iCAAiC;IAC/C,OAAO,6BAA6B,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;AACzE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"segment-mapper.js","sourceRoot":"","sources":["../../src/segment-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zhin.js/adapter-lark",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.2",
|
|
4
4
|
"description": "Zhin.js adapter for Lark/Feishu (飞书)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./lib/index.js",
|
|
@@ -38,26 +38,36 @@
|
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@types/koa": "^3.0.3",
|
|
41
|
-
"@types/node": "^
|
|
41
|
+
"@types/node": "^26.1.0",
|
|
42
42
|
"typescript": "^6.0.3",
|
|
43
|
-
"
|
|
44
|
-
"zhin.js": "
|
|
43
|
+
"zod": "^4.4.3",
|
|
44
|
+
"@zhin.js/host-router": "2.0.3",
|
|
45
|
+
"zhin.js": "4.1.2",
|
|
46
|
+
"@zhin.js/agent": "1.0.3"
|
|
45
47
|
},
|
|
46
48
|
"peerDependencies": {
|
|
47
|
-
"
|
|
48
|
-
"@zhin.js/
|
|
49
|
+
"zod": "^4.0.0",
|
|
50
|
+
"@zhin.js/agent": "1.0.3",
|
|
51
|
+
"@zhin.js/host-router": "2.0.3",
|
|
52
|
+
"zhin.js": "4.1.2"
|
|
49
53
|
},
|
|
50
54
|
"peerDependenciesMeta": {
|
|
55
|
+
"@zhin.js/agent": {
|
|
56
|
+
"optional": true
|
|
57
|
+
},
|
|
51
58
|
"@zhin.js/host-router": {
|
|
52
59
|
"optional": false
|
|
60
|
+
},
|
|
61
|
+
"zod": {
|
|
62
|
+
"optional": true
|
|
53
63
|
}
|
|
54
64
|
},
|
|
55
65
|
"files": [
|
|
56
66
|
"src",
|
|
57
67
|
"lib",
|
|
68
|
+
"agent",
|
|
58
69
|
"client",
|
|
59
70
|
"dist",
|
|
60
|
-
"skills",
|
|
61
71
|
"plugin.yml",
|
|
62
72
|
"README.md",
|
|
63
73
|
"node",
|
package/src/adapter.ts
CHANGED
|
@@ -9,6 +9,7 @@ import type { LarkEndpointConfig } from "./types.js";
|
|
|
9
9
|
export class LarkAdapter extends Adapter<LarkEndpoint> {
|
|
10
10
|
static override readonly capabilities = ['inbound', 'outbound'] as const;
|
|
11
11
|
static override outboundRichSegmentPolicy = OUTBOUND_RICH_SEGMENT_POLICY_IM_FULL;
|
|
12
|
+
static override interactivePolicy = 'native' as const;
|
|
12
13
|
|
|
13
14
|
#router: any;
|
|
14
15
|
|
|
@@ -21,9 +22,9 @@ export class LarkAdapter extends Adapter<LarkEndpoint> {
|
|
|
21
22
|
return new LarkEndpoint(this, this.#router, config);
|
|
22
23
|
}
|
|
23
24
|
|
|
24
|
-
// ──
|
|
25
|
+
// ── ISceneManagement 标准群管方法 ──────────────────────────────────
|
|
25
26
|
|
|
26
|
-
async
|
|
27
|
+
async removeMember(endpointId: string, sceneId: string, userId: string) {
|
|
27
28
|
const endpoint = this.endpoints.get(endpointId);
|
|
28
29
|
if (!endpoint) throw new Error(`Endpoint ${endpointId} 不存在`);
|
|
29
30
|
return endpoint.removeChatMembers(sceneId, [userId]);
|
|
@@ -35,13 +36,13 @@ export class LarkAdapter extends Adapter<LarkEndpoint> {
|
|
|
35
36
|
return endpoint.getChatMembers(sceneId);
|
|
36
37
|
}
|
|
37
38
|
|
|
38
|
-
async
|
|
39
|
+
async getSceneInfo(endpointId: string, sceneId: string) {
|
|
39
40
|
const endpoint = this.endpoints.get(endpointId);
|
|
40
41
|
if (!endpoint) throw new Error(`Endpoint ${endpointId} 不存在`);
|
|
41
42
|
return endpoint.getChatInfo(sceneId);
|
|
42
43
|
}
|
|
43
44
|
|
|
44
|
-
async
|
|
45
|
+
async renameScene(endpointId: string, sceneId: string, name: string) {
|
|
45
46
|
const endpoint = this.endpoints.get(endpointId);
|
|
46
47
|
if (!endpoint) throw new Error(`Endpoint ${endpointId} 不存在`);
|
|
47
48
|
return endpoint.updateChatInfo(sceneId, { name });
|
package/src/endpoint.ts
CHANGED
|
@@ -4,10 +4,11 @@
|
|
|
4
4
|
import { registerFetchRoute, type Router, type RouterContext } from "@zhin.js/host-router/router";
|
|
5
5
|
import axios, { type AxiosInstance } from "axios";
|
|
6
6
|
import { createHash } from "crypto";
|
|
7
|
-
import { formatCompact, Endpoint, Message, MessageSegment, segment, SendContent, SendOptions,} from 'zhin.js';
|
|
7
|
+
import { formatCompact, Endpoint, Message, MessageSegment, segment, SendContent, SendOptions, expandInteractiveSegmentsInContent,} from 'zhin.js';
|
|
8
8
|
import type { LarkEndpointConfig, LarkMessage, LarkEvent, AccessToken } from "./types.js";
|
|
9
9
|
import type { LarkAdapter } from "./adapter.js";
|
|
10
10
|
import { normalizeLarkSenderForPermit } from "./platform-permit.js";
|
|
11
|
+
import { fromCanonicalSegments, toCanonicalSegments } from './segment-mapper.js';
|
|
11
12
|
|
|
12
13
|
export class LarkEndpoint implements Endpoint<LarkEndpointConfig, LarkMessage> {
|
|
13
14
|
$connected: boolean
|
|
@@ -221,7 +222,8 @@ export class LarkEndpoint implements Endpoint<LarkEndpointConfig, LarkMessage> {
|
|
|
221
222
|
// ================================================================================================
|
|
222
223
|
|
|
223
224
|
$formatMessage(msg: LarkMessage, event?: any): Message<LarkMessage> {
|
|
224
|
-
const
|
|
225
|
+
const wire = this.parseMessageContent(msg);
|
|
226
|
+
const content = toCanonicalSegments(wire);
|
|
225
227
|
|
|
226
228
|
// 确定聊天类型
|
|
227
229
|
const chatType = msg.chat_id?.startsWith('oc_') ? 'group' : 'private';
|
|
@@ -373,7 +375,9 @@ export class LarkEndpoint implements Endpoint<LarkEndpointConfig, LarkMessage> {
|
|
|
373
375
|
|
|
374
376
|
async $sendMessage(options: SendOptions): Promise<string> {
|
|
375
377
|
const chatId = options.id;
|
|
376
|
-
const
|
|
378
|
+
const canonical = expandInteractiveSegmentsInContent(options.content);
|
|
379
|
+
const wire = fromCanonicalSegments(canonical);
|
|
380
|
+
const content = this.formatSendContent(wire);
|
|
377
381
|
|
|
378
382
|
try {
|
|
379
383
|
const response = await this.axiosInstance.post('/im/v1/messages', {
|
|
@@ -492,8 +496,8 @@ export class LarkEndpoint implements Endpoint<LarkEndpointConfig, LarkMessage> {
|
|
|
492
496
|
await this.refreshAccessToken();
|
|
493
497
|
|
|
494
498
|
this.$connected = true;
|
|
495
|
-
this.logger.
|
|
496
|
-
this.logger.
|
|
499
|
+
this.logger.debug(formatCompact({ endpoint: this.$config.name }));
|
|
500
|
+
this.logger.debug(formatCompact( { op: 'webhook', path: this.$config.webhookPath }));
|
|
497
501
|
|
|
498
502
|
} catch (error) {
|
|
499
503
|
this.logger.error('Failed to connect Lark bot:', error);
|
|
@@ -504,7 +508,7 @@ export class LarkEndpoint implements Endpoint<LarkEndpointConfig, LarkMessage> {
|
|
|
504
508
|
async $disconnect(): Promise<void> {
|
|
505
509
|
try {
|
|
506
510
|
this.$connected = false;
|
|
507
|
-
this.logger.
|
|
511
|
+
this.logger.debug(formatCompact( { op: 'disconnect', endpoint: this.$config.name }));
|
|
508
512
|
} catch (error) {
|
|
509
513
|
this.logger.error('Error disconnecting Lark bot:', error);
|
|
510
514
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 飞书/Lark 适配器入口:类型扩展、导出、注册
|
|
3
3
|
*/
|
|
4
|
-
import { usePlugin, type Plugin, type Context, type
|
|
4
|
+
import { usePlugin, type Plugin, type Context, type ISceneManagement, createSceneManagementTools, type ToolFeature } from "zhin.js";
|
|
5
5
|
import { LarkAdapter } from "./adapter.js";
|
|
6
6
|
import {
|
|
7
7
|
larkGroupPermitResolver,
|
|
8
|
-
platformPermit,
|
|
9
8
|
registerLarkPlatformPermitChecker,
|
|
10
9
|
} from "./platform-permit.js";
|
|
10
|
+
import { setLarkAgentDeps } from "./lark-agent-deps.js";
|
|
11
11
|
|
|
12
12
|
declare module "zhin.js" {
|
|
13
13
|
namespace Plugin {
|
|
@@ -45,195 +45,19 @@ const { provide, useContext } = plugin;
|
|
|
45
45
|
useContext('tool', 'lark', (toolService: ToolFeature, lark: LarkAdapter) => {
|
|
46
46
|
const disposers: (() => void)[] = [];
|
|
47
47
|
disposers.push(registerLarkPlatformPermitChecker());
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
setLarkAgentDeps({
|
|
49
|
+
getEndpoint: (endpointId) => {
|
|
50
|
+
const endpoint = lark.endpoints.get(endpointId);
|
|
51
|
+
if (!endpoint) throw new Error(`Endpoint ${endpointId} 不存在`);
|
|
52
|
+
return endpoint;
|
|
53
|
+
},
|
|
54
|
+
getAdapter: () => lark,
|
|
55
|
+
});
|
|
56
|
+
const sceneTools = createSceneManagementTools(
|
|
57
|
+
lark as unknown as ISceneManagement,
|
|
50
58
|
'lark',
|
|
51
59
|
{ permitResolver: larkGroupPermitResolver, registerChecker: false },
|
|
52
60
|
);
|
|
53
|
-
disposers.push(...
|
|
54
|
-
|
|
55
|
-
disposers.push(toolService.addTool({
|
|
56
|
-
name: 'lark_get_user',
|
|
57
|
-
description: '获取飞书用户信息',
|
|
58
|
-
parameters: {
|
|
59
|
-
type: 'object',
|
|
60
|
-
properties: {
|
|
61
|
-
endpoint_id: { type: 'string', description: 'Endpoint 名称', contextKey: 'endpointId' },
|
|
62
|
-
user_id: { type: 'string', description: '用户 ID (open_id)' },
|
|
63
|
-
},
|
|
64
|
-
required: ['endpoint_id', 'user_id'],
|
|
65
|
-
},
|
|
66
|
-
platforms: ['lark'],
|
|
67
|
-
tags: ['lark'],
|
|
68
|
-
execute: async (args: Record<string, any>) => {
|
|
69
|
-
const endpoint = lark.endpoints.get(args.endpoint_id);
|
|
70
|
-
if (!endpoint) throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
|
|
71
|
-
return await endpoint.getUserInfo(args.user_id);
|
|
72
|
-
},
|
|
73
|
-
}, plugin.name));
|
|
74
|
-
|
|
75
|
-
disposers.push(toolService.addTool({
|
|
76
|
-
name: 'lark_create_chat',
|
|
77
|
-
description: '创建飞书群聊',
|
|
78
|
-
parameters: {
|
|
79
|
-
type: 'object',
|
|
80
|
-
properties: {
|
|
81
|
-
endpoint_id: { type: 'string', description: 'Endpoint 名称', contextKey: 'endpointId' },
|
|
82
|
-
name: { type: 'string', description: '群名' },
|
|
83
|
-
members: { type: 'string', description: '成员 open_id 列表,逗号分隔' },
|
|
84
|
-
owner: { type: 'string', description: '群主 open_id(可选)' },
|
|
85
|
-
},
|
|
86
|
-
required: ['endpoint_id', 'name', 'members'],
|
|
87
|
-
},
|
|
88
|
-
platforms: ['lark'],
|
|
89
|
-
tags: ['lark'],
|
|
90
|
-
execute: async (args: Record<string, any>) => {
|
|
91
|
-
const endpoint = lark.endpoints.get(args.endpoint_id);
|
|
92
|
-
if (!endpoint) throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
|
|
93
|
-
const chatId = await endpoint.createChat(args.name, args.members.split(','), args.owner);
|
|
94
|
-
return { success: !!chatId, chat_id: chatId, message: chatId ? `群聊创建成功: ${chatId}` : '创建失败' };
|
|
95
|
-
},
|
|
96
|
-
}, plugin.name));
|
|
97
|
-
|
|
98
|
-
disposers.push(toolService.addTool({
|
|
99
|
-
name: 'lark_update_chat',
|
|
100
|
-
description: '更新飞书群聊信息(群名、描述)',
|
|
101
|
-
parameters: {
|
|
102
|
-
type: 'object',
|
|
103
|
-
properties: {
|
|
104
|
-
endpoint_id: { type: 'string', description: 'Endpoint 名称', contextKey: 'endpointId' },
|
|
105
|
-
chat_id: { type: 'string', description: '群聊 ID' },
|
|
106
|
-
name: { type: 'string', description: '新群名(可选)' },
|
|
107
|
-
description: { type: 'string', description: '新描述(可选)' },
|
|
108
|
-
},
|
|
109
|
-
required: ['endpoint_id', 'chat_id'],
|
|
110
|
-
},
|
|
111
|
-
platforms: ['lark'],
|
|
112
|
-
tags: ['lark'],
|
|
113
|
-
permissions: [platformPermit('chat_admin')],
|
|
114
|
-
execute: async (args: Record<string, any>) => {
|
|
115
|
-
const endpoint = lark.endpoints.get(args.endpoint_id);
|
|
116
|
-
if (!endpoint) throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
|
|
117
|
-
const success = await endpoint.updateChatInfo(args.chat_id, { name: args.name, description: args.description });
|
|
118
|
-
return { success, message: success ? '群信息更新成功' : '更新失败' };
|
|
119
|
-
},
|
|
120
|
-
}, plugin.name));
|
|
121
|
-
|
|
122
|
-
disposers.push(toolService.addTool({
|
|
123
|
-
name: 'lark_add_members',
|
|
124
|
-
description: '添加飞书群成员',
|
|
125
|
-
parameters: {
|
|
126
|
-
type: 'object',
|
|
127
|
-
properties: {
|
|
128
|
-
endpoint_id: { type: 'string', description: 'Endpoint 名称', contextKey: 'endpointId' },
|
|
129
|
-
chat_id: { type: 'string', description: '群聊 ID' },
|
|
130
|
-
user_ids: { type: 'string', description: '用户 open_id 列表,逗号分隔' },
|
|
131
|
-
},
|
|
132
|
-
required: ['endpoint_id', 'chat_id', 'user_ids'],
|
|
133
|
-
},
|
|
134
|
-
platforms: ['lark'],
|
|
135
|
-
tags: ['lark'],
|
|
136
|
-
permissions: [platformPermit('chat_admin')],
|
|
137
|
-
execute: async (args: Record<string, any>) => {
|
|
138
|
-
const endpoint = lark.endpoints.get(args.endpoint_id);
|
|
139
|
-
if (!endpoint) throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
|
|
140
|
-
const success = await endpoint.addChatMembers(args.chat_id, args.user_ids.split(','));
|
|
141
|
-
return { success, message: success ? '成员添加成功' : '添加失败' };
|
|
142
|
-
},
|
|
143
|
-
}, plugin.name));
|
|
144
|
-
|
|
145
|
-
disposers.push(toolService.addTool({
|
|
146
|
-
name: 'lark_set_managers',
|
|
147
|
-
description: '设置飞书群管理员',
|
|
148
|
-
parameters: {
|
|
149
|
-
type: 'object',
|
|
150
|
-
properties: {
|
|
151
|
-
endpoint_id: { type: 'string', description: 'Endpoint 名称', contextKey: 'endpointId' },
|
|
152
|
-
chat_id: { type: 'string', description: '群聊 ID' },
|
|
153
|
-
user_ids: { type: 'string', description: '用户 open_id 列表,逗号分隔' },
|
|
154
|
-
},
|
|
155
|
-
required: ['endpoint_id', 'chat_id', 'user_ids'],
|
|
156
|
-
},
|
|
157
|
-
platforms: ['lark'],
|
|
158
|
-
tags: ['lark'],
|
|
159
|
-
permissions: [platformPermit('manage_managers')],
|
|
160
|
-
execute: async (args: Record<string, any>) => {
|
|
161
|
-
const endpoint = lark.endpoints.get(args.endpoint_id);
|
|
162
|
-
if (!endpoint) throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
|
|
163
|
-
const success = await endpoint.setChatManagers(args.chat_id, args.user_ids.split(','));
|
|
164
|
-
return { success, message: success ? '管理员设置成功' : '设置失败' };
|
|
165
|
-
},
|
|
166
|
-
}, plugin.name));
|
|
167
|
-
|
|
168
|
-
disposers.push(toolService.addTool({
|
|
169
|
-
name: 'lark_remove_managers',
|
|
170
|
-
description: '移除飞书群管理员',
|
|
171
|
-
parameters: {
|
|
172
|
-
type: 'object',
|
|
173
|
-
properties: {
|
|
174
|
-
endpoint_id: { type: 'string', description: 'Endpoint 名称', contextKey: 'endpointId' },
|
|
175
|
-
chat_id: { type: 'string', description: '群聊 ID' },
|
|
176
|
-
user_ids: { type: 'string', description: '用户 open_id 列表,逗号分隔' },
|
|
177
|
-
},
|
|
178
|
-
required: ['endpoint_id', 'chat_id', 'user_ids'],
|
|
179
|
-
},
|
|
180
|
-
platforms: ['lark'],
|
|
181
|
-
tags: ['lark'],
|
|
182
|
-
permissions: [platformPermit('manage_managers')],
|
|
183
|
-
execute: async (args: Record<string, any>) => {
|
|
184
|
-
const endpoint = lark.endpoints.get(args.endpoint_id);
|
|
185
|
-
if (!endpoint) throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
|
|
186
|
-
const success = await endpoint.removeChatManagers(args.chat_id, args.user_ids.split(','));
|
|
187
|
-
return { success, message: success ? '管理员移除成功' : '移除失败' };
|
|
188
|
-
},
|
|
189
|
-
}, plugin.name));
|
|
190
|
-
|
|
191
|
-
disposers.push(toolService.addTool({
|
|
192
|
-
name: 'lark_dissolve_chat',
|
|
193
|
-
description: '解散飞书群聊(需要群主权限)',
|
|
194
|
-
parameters: {
|
|
195
|
-
type: 'object',
|
|
196
|
-
properties: {
|
|
197
|
-
endpoint_id: { type: 'string', description: 'Endpoint 名称', contextKey: 'endpointId' },
|
|
198
|
-
chat_id: { type: 'string', description: '群聊 ID' },
|
|
199
|
-
},
|
|
200
|
-
required: ['endpoint_id', 'chat_id'],
|
|
201
|
-
},
|
|
202
|
-
platforms: ['lark'],
|
|
203
|
-
tags: ['lark'],
|
|
204
|
-
execute: async (args: Record<string, any>) => {
|
|
205
|
-
const endpoint = lark.endpoints.get(args.endpoint_id);
|
|
206
|
-
if (!endpoint) throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
|
|
207
|
-
const success = await endpoint.dissolveChat(args.chat_id);
|
|
208
|
-
return { success, message: success ? '群聊已解散' : '解散失败' };
|
|
209
|
-
},
|
|
210
|
-
}, plugin.name));
|
|
211
|
-
|
|
212
|
-
disposers.push(toolService.addTool({
|
|
213
|
-
name: 'lark_upload_file',
|
|
214
|
-
description: '上传文件到飞书(opus/mp4/pdf/doc/xls/ppt/stream)',
|
|
215
|
-
parameters: {
|
|
216
|
-
type: 'object',
|
|
217
|
-
properties: {
|
|
218
|
-
endpoint_id: { type: 'string', description: 'Endpoint 名称', contextKey: 'endpointId' },
|
|
219
|
-
file_path: { type: 'string', description: '本地文件路径' },
|
|
220
|
-
file_type: { type: 'string', description: '文件类型', enum: ['opus', 'mp4', 'pdf', 'doc', 'xls', 'ppt', 'stream'] },
|
|
221
|
-
},
|
|
222
|
-
required: ['endpoint_id', 'file_path', 'file_type'],
|
|
223
|
-
},
|
|
224
|
-
platforms: ['lark'],
|
|
225
|
-
tags: ['lark'],
|
|
226
|
-
execute: async (args: Record<string, any>) => {
|
|
227
|
-
const validTypes = ['opus', 'mp4', 'pdf', 'doc', 'xls', 'ppt', 'stream'];
|
|
228
|
-
if (!validTypes.includes(args.file_type)) {
|
|
229
|
-
throw new Error(`不支持的文件类型: ${args.file_type},支持: ${validTypes.join(', ')}`);
|
|
230
|
-
}
|
|
231
|
-
const endpoint = lark.endpoints.get(args.endpoint_id);
|
|
232
|
-
if (!endpoint) throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
|
|
233
|
-
const result = await endpoint.uploadFile(args.file_path, args.file_type);
|
|
234
|
-
return { success: true, file_key: result, message: `文件已上传,file_key: ${result}` };
|
|
235
|
-
},
|
|
236
|
-
}, plugin.name));
|
|
237
|
-
|
|
61
|
+
disposers.push(...sceneTools.map(t => toolService.addTool(t, plugin.name)));
|
|
238
62
|
return () => disposers.forEach(d => d());
|
|
239
63
|
});
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { LarkAdapter } from './adapter.js';
|
|
2
|
+
import type { LarkEndpoint } from './endpoint.js';
|
|
3
|
+
|
|
4
|
+
export interface LarkAgentDeps {
|
|
5
|
+
getEndpoint: (endpointId: string) => LarkEndpoint;
|
|
6
|
+
getAdapter: () => LarkAdapter;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
let _deps: LarkAgentDeps | null = null;
|
|
10
|
+
|
|
11
|
+
export function setLarkAgentDeps(deps: LarkAgentDeps): void {
|
|
12
|
+
_deps = deps;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function getLarkAgentDeps(): LarkAgentDeps {
|
|
16
|
+
if (!_deps) throw new Error('lark agent deps not initialized');
|
|
17
|
+
return _deps;
|
|
18
|
+
}
|
package/src/platform-permit.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 飞书 Lark platform permit
|
|
3
3
|
*/
|
|
4
|
-
import type
|
|
5
|
-
import { registerPlatformPermitChecker } from 'zhin.js';
|
|
4
|
+
import { registerPlatformPermitChecker, type Message } from 'zhin.js';
|
|
6
5
|
|
|
7
6
|
const ADAPTER = 'lark';
|
|
8
7
|
|
|
@@ -11,8 +10,8 @@ export function platformPermit(perm: string): string {
|
|
|
11
10
|
}
|
|
12
11
|
|
|
13
12
|
const FACTORY_PERM_MAP: Record<string, string> = {
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
scene_admin: 'chat_admin',
|
|
14
|
+
scene_owner: 'chat_owner',
|
|
16
15
|
};
|
|
17
16
|
|
|
18
17
|
export function larkGroupPermitResolver(logicalPerm: string): string {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { toCanonicalSegments, fromCanonicalSegments } from 'zhin.js';
|
package/lib/adapter.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 飞书/Lark 适配器
|
|
3
|
-
*/
|
|
4
|
-
import { Adapter, Plugin } from 'zhin.js';
|
|
5
|
-
import { LarkEndpoint } from "./endpoint.js";
|
|
6
|
-
import type { LarkEndpointConfig } from "./types.js";
|
|
7
|
-
export declare class LarkAdapter extends Adapter<LarkEndpoint> {
|
|
8
|
-
#private;
|
|
9
|
-
static readonly capabilities: readonly ["inbound", "outbound"];
|
|
10
|
-
static outboundRichSegmentPolicy: import("zhin.js").OutboundRichSegmentPolicy;
|
|
11
|
-
constructor(plugin: Plugin, router: any);
|
|
12
|
-
createEndpoint(config: LarkEndpointConfig): LarkEndpoint;
|
|
13
|
-
kickMember(endpointId: string, sceneId: string, userId: string): Promise<boolean>;
|
|
14
|
-
listMembers(endpointId: string, sceneId: string): Promise<any[]>;
|
|
15
|
-
getGroupInfo(endpointId: string, sceneId: string): Promise<any>;
|
|
16
|
-
setGroupName(endpointId: string, sceneId: string, name: string): Promise<boolean>;
|
|
17
|
-
start(): Promise<void>;
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=adapter.d.ts.map
|
package/lib/adapter.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,OAAO,EACd,MAAM,EAAwC,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,qBAAa,WAAY,SAAQ,OAAO,CAAC,YAAY,CAAC;;IACpD,gBAAyB,YAAY,mCAAoC;IACzE,OAAgB,yBAAyB,8CAAwC;gBAInE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG;IAKvC,cAAc,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY;IAMlD,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAM9D,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAM/C,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAMhD,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAQ9D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAI/B"}
|
package/lib/adapter.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,OAAO,EACN,oCAAoC,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C,MAAM,OAAO,WAAY,SAAQ,OAAqB;IACpD,MAAM,CAAmB,YAAY,GAAG,CAAC,SAAS,EAAE,UAAU,CAAU,CAAC;IACzE,MAAM,CAAU,yBAAyB,GAAG,oCAAoC,CAAC;IAE/E,OAAO,CAAM;IAEb,YAAY,MAAc,EAAE,MAAW;QACnC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IAC1B,CAAC;IAED,cAAc,CAAC,MAA0B;QACrC,OAAO,IAAI,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,gEAAgE;IAEhE,KAAK,CAAC,UAAU,CAAC,UAAkB,EAAE,OAAe,EAAE,MAAc;QAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,YAAY,UAAU,MAAM,CAAC,CAAC;QAC7D,OAAO,QAAQ,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,UAAkB,EAAE,OAAe;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,YAAY,UAAU,MAAM,CAAC,CAAC;QAC7D,OAAO,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,UAAkB,EAAE,OAAe;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,YAAY,UAAU,MAAM,CAAC,CAAC;QAC7D,OAAO,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,UAAkB,EAAE,OAAe,EAAE,IAAY;QAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,YAAY,UAAU,MAAM,CAAC,CAAC;QAC7D,OAAO,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,kEAAkE;IAElE,KAAK,CAAC,KAAK;QACP,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC"}
|
package/lib/endpoint.d.ts
DELETED
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import { Endpoint, Message, SendOptions } from 'zhin.js';
|
|
2
|
-
import type { LarkEndpointConfig, LarkMessage } from "./types.js";
|
|
3
|
-
import type { LarkAdapter } from "./adapter.js";
|
|
4
|
-
export declare class LarkEndpoint implements Endpoint<LarkEndpointConfig, LarkMessage> {
|
|
5
|
-
adapter: LarkAdapter;
|
|
6
|
-
$config: LarkEndpointConfig;
|
|
7
|
-
$connected: boolean;
|
|
8
|
-
private router;
|
|
9
|
-
private accessToken;
|
|
10
|
-
private axiosInstance;
|
|
11
|
-
get logger(): import("zhin.js").Logger;
|
|
12
|
-
get $id(): string;
|
|
13
|
-
constructor(adapter: LarkAdapter, router: any, $config: LarkEndpointConfig);
|
|
14
|
-
private setupWebhookRoute;
|
|
15
|
-
private handleWebhook;
|
|
16
|
-
private verifySignature;
|
|
17
|
-
private chatPermitCache;
|
|
18
|
-
private enrichGroupSender;
|
|
19
|
-
private handleEvent;
|
|
20
|
-
private ensureAccessToken;
|
|
21
|
-
private refreshAccessToken;
|
|
22
|
-
$formatMessage(msg: LarkMessage, event?: any): Message<LarkMessage>;
|
|
23
|
-
private parseMessageContent;
|
|
24
|
-
private parseRichTextContent;
|
|
25
|
-
$sendMessage(options: SendOptions): Promise<string>;
|
|
26
|
-
$recallMessage(id: string): Promise<void>;
|
|
27
|
-
private formatSendContent;
|
|
28
|
-
$connect(): Promise<void>;
|
|
29
|
-
$disconnect(): Promise<void>;
|
|
30
|
-
getUserInfo(userId: string, userIdType?: 'open_id' | 'user_id' | 'union_id'): Promise<any>;
|
|
31
|
-
getChatInfo(chatId: string): Promise<any>;
|
|
32
|
-
uploadFile(filePath: string, fileType?: 'image' | 'file' | 'video' | 'audio'): Promise<string | null>;
|
|
33
|
-
/**
|
|
34
|
-
* 创建群聊
|
|
35
|
-
* @param name 群名
|
|
36
|
-
* @param userIds 成员 open_id 列表
|
|
37
|
-
* @param ownerId 群主 open_id
|
|
38
|
-
*/
|
|
39
|
-
createChat(name: string, userIds: string[], ownerId?: string): Promise<string | null>;
|
|
40
|
-
/**
|
|
41
|
-
* 更新群信息
|
|
42
|
-
* @param chatId 群聊 ID
|
|
43
|
-
* @param options 更新选项
|
|
44
|
-
*/
|
|
45
|
-
updateChatInfo(chatId: string, options: {
|
|
46
|
-
name?: string;
|
|
47
|
-
description?: string;
|
|
48
|
-
}): Promise<boolean>;
|
|
49
|
-
/**
|
|
50
|
-
* 添加群成员
|
|
51
|
-
* @param chatId 群聊 ID
|
|
52
|
-
* @param userIds 用户 ID 列表
|
|
53
|
-
*/
|
|
54
|
-
addChatMembers(chatId: string, userIds: string[]): Promise<boolean>;
|
|
55
|
-
/**
|
|
56
|
-
* 移除群成员
|
|
57
|
-
* @param chatId 群聊 ID
|
|
58
|
-
* @param userIds 用户 ID 列表
|
|
59
|
-
*/
|
|
60
|
-
removeChatMembers(chatId: string, userIds: string[]): Promise<boolean>;
|
|
61
|
-
/**
|
|
62
|
-
* 获取群成员列表
|
|
63
|
-
* @param chatId 群聊 ID
|
|
64
|
-
*/
|
|
65
|
-
getChatMembers(chatId: string): Promise<any[]>;
|
|
66
|
-
/**
|
|
67
|
-
* 解散群聊
|
|
68
|
-
* @param chatId 群聊 ID
|
|
69
|
-
*/
|
|
70
|
-
dissolveChat(chatId: string): Promise<boolean>;
|
|
71
|
-
/**
|
|
72
|
-
* 设置群管理员
|
|
73
|
-
* @param chatId 群聊 ID
|
|
74
|
-
* @param userIds 用户 ID 列表
|
|
75
|
-
*/
|
|
76
|
-
setChatManagers(chatId: string, userIds: string[]): Promise<boolean>;
|
|
77
|
-
/**
|
|
78
|
-
* 移除群管理员
|
|
79
|
-
* @param chatId 群聊 ID
|
|
80
|
-
* @param userIds 用户 ID 列表
|
|
81
|
-
*/
|
|
82
|
-
removeChatManagers(chatId: string, userIds: string[]): Promise<boolean>;
|
|
83
|
-
}
|
|
84
|
-
//# sourceMappingURL=endpoint.d.ts.map
|
package/lib/endpoint.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"endpoint.d.ts","sourceRoot":"","sources":["../src/endpoint.ts"],"names":[],"mappings":"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"}
|