@xwang152/claw-lark 0.1.24 → 0.1.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +2 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/src/policy.d.ts +84 -0
- package/dist/src/policy.js +137 -0
- package/dist/src/policy.js.map +1 -0
- package/dist/src/types.d.ts +15 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -19,7 +19,8 @@ export { addTypingIndicator, removeTypingIndicator, createTypingController, } fr
|
|
|
19
19
|
export type { TypingIndicatorState } from "./src/typing.js";
|
|
20
20
|
export { resolveLarkSenderName, clearSenderNameCache, getSenderNameCacheStats, prefetchLarkSenderNames, } from "./src/sender-name.js";
|
|
21
21
|
export { getLarkMessage, formatQuotedContext, isReplyMessage, buildMessageContextWithQuote, } from "./src/message-context.js";
|
|
22
|
-
export type { LarkDomain, LarkConnectionMode, LarkAccountConfig, ResolvedLarkAccount, LarkChannelConfig, LarkMessageEvent, ParsedMessage, SendResult, } from "./src/types.js";
|
|
22
|
+
export type { LarkDomain, LarkConnectionMode, DmPolicy, GroupPolicy, RenderMode, LarkAccountConfig, ResolvedLarkAccount, LarkChannelConfig, LarkGroupConfig, LarkMessageEvent, LarkMention, ParsedMessage, SendResult, } from "./src/types.js";
|
|
23
|
+
export { resolveLarkAllowlistMatch, resolveLarkGroupConfig, resolveLarkGroupToolPolicy, isLarkGroupAllowed, resolveLarkGroupRequireMention, resolveLarkReplyToMode, } from "./src/policy.js";
|
|
23
24
|
declare const plugin: {
|
|
24
25
|
id: string;
|
|
25
26
|
name: string;
|
package/dist/index.js
CHANGED
|
@@ -22,6 +22,7 @@ export { extractMentionTargets, extractMessageBody, isMentionForwardRequest, for
|
|
|
22
22
|
export { addTypingIndicator, removeTypingIndicator, createTypingController, } from "./src/typing.js";
|
|
23
23
|
export { resolveLarkSenderName, clearSenderNameCache, getSenderNameCacheStats, prefetchLarkSenderNames, } from "./src/sender-name.js";
|
|
24
24
|
export { getLarkMessage, formatQuotedContext, isReplyMessage, buildMessageContextWithQuote, } from "./src/message-context.js";
|
|
25
|
+
export { resolveLarkAllowlistMatch, resolveLarkGroupConfig, resolveLarkGroupToolPolicy, isLarkGroupAllowed, resolveLarkGroupRequireMention, resolveLarkReplyToMode, } from "./src/policy.js";
|
|
25
26
|
const plugin = {
|
|
26
27
|
id: "claw-lark",
|
|
27
28
|
name: "Lark",
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,mCAAmC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,aAAa,EACb,YAAY,EACZ,aAAa,EACb,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5F,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,4BAA4B,GAC7B,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,mCAAmC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,aAAa,EACb,YAAY,EACZ,aAAa,EACb,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5F,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,4BAA4B,GAC7B,MAAM,0BAA0B,CAAC;AAgBlC,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,0BAA0B,EAC1B,kBAAkB,EAClB,8BAA8B,EAC9B,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,GAAG;IACb,EAAE,EAAE,WAAW;IACf,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,4CAA4C;IACzD,YAAY,EAAE,uBAAuB,EAAE;IACvC,QAAQ,CAAC,GAAsB;QAC7B,cAAc,CAAC,GAAG,CAAC,CAAC;QACpB,wCAAwC;QACxC,GAAG,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QAC5C,GAAG,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;IAC3C,CAAC;CACF,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Group-level Policy and Access Control
|
|
3
|
+
*
|
|
4
|
+
* Handles per-group configuration for Lark/Feishu integration.
|
|
5
|
+
* Supports group-specific tool policies, mention requirements, and access control.
|
|
6
|
+
*/
|
|
7
|
+
import type { OpenClawConfig } from "openclaw/plugin-sdk";
|
|
8
|
+
import type { LarkGroupConfig } from "./types.js";
|
|
9
|
+
export type LarkAllowlistMatch = {
|
|
10
|
+
allowed: boolean;
|
|
11
|
+
matchKey?: string;
|
|
12
|
+
matchSource?: "wildcard" | "id" | "name";
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Resolve allowlist match for a sender.
|
|
16
|
+
*
|
|
17
|
+
* Checks if a sender is allowed based on allowlist configuration.
|
|
18
|
+
* Supports wildcards, IDs, and names.
|
|
19
|
+
*/
|
|
20
|
+
export declare function resolveLarkAllowlistMatch(params: {
|
|
21
|
+
allowFrom: Array<string | number>;
|
|
22
|
+
senderId: string;
|
|
23
|
+
senderName?: string | null;
|
|
24
|
+
}): LarkAllowlistMatch;
|
|
25
|
+
/**
|
|
26
|
+
* Resolve group configuration for a specific group.
|
|
27
|
+
*
|
|
28
|
+
* Looks up group-specific settings from the configuration.
|
|
29
|
+
* Supports case-insensitive group ID matching.
|
|
30
|
+
*/
|
|
31
|
+
export declare function resolveLarkGroupConfig(params: {
|
|
32
|
+
cfg?: OpenClawConfig;
|
|
33
|
+
groupId?: string | null;
|
|
34
|
+
accountId?: string;
|
|
35
|
+
}): LarkGroupConfig | undefined;
|
|
36
|
+
/**
|
|
37
|
+
* Resolve group tool policy for agent tool access control.
|
|
38
|
+
*
|
|
39
|
+
* Returns the tools configuration for a specific group.
|
|
40
|
+
*/
|
|
41
|
+
export declare function resolveLarkGroupToolPolicy(params: {
|
|
42
|
+
cfg?: OpenClawConfig;
|
|
43
|
+
groupId?: string | null;
|
|
44
|
+
accountId?: string;
|
|
45
|
+
}): {
|
|
46
|
+
allow?: string[];
|
|
47
|
+
deny?: string[];
|
|
48
|
+
} | undefined;
|
|
49
|
+
/**
|
|
50
|
+
* Check if a group is allowed based on policy.
|
|
51
|
+
*
|
|
52
|
+
* @param groupPolicy - "open" | "allowlist" | "disabled"
|
|
53
|
+
* @param allowFrom - Allowlist configuration
|
|
54
|
+
* @param senderId - Sender's ID
|
|
55
|
+
* @param senderName - Sender's display name (optional)
|
|
56
|
+
*/
|
|
57
|
+
export declare function isLarkGroupAllowed(params: {
|
|
58
|
+
groupPolicy: "open" | "allowlist" | "disabled";
|
|
59
|
+
allowFrom: Array<string | number>;
|
|
60
|
+
senderId: string;
|
|
61
|
+
senderName?: string | null;
|
|
62
|
+
}): boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Resolve mention requirement for a group.
|
|
65
|
+
*
|
|
66
|
+
* Determines if @mention is required in a group based on
|
|
67
|
+
* group configuration or global default.
|
|
68
|
+
*/
|
|
69
|
+
export declare function resolveLarkGroupRequireMention(params: {
|
|
70
|
+
cfg?: OpenClawConfig;
|
|
71
|
+
groupId?: string | null;
|
|
72
|
+
accountId?: string;
|
|
73
|
+
groupConfig?: LarkGroupConfig;
|
|
74
|
+
}): boolean;
|
|
75
|
+
/**
|
|
76
|
+
* Resolve reply-to mode for a group.
|
|
77
|
+
*
|
|
78
|
+
* Determines how replies should be threaded in a group chat.
|
|
79
|
+
*/
|
|
80
|
+
export declare function resolveLarkReplyToMode(params: {
|
|
81
|
+
cfg?: OpenClawConfig;
|
|
82
|
+
groupId?: string | null;
|
|
83
|
+
accountId?: string;
|
|
84
|
+
}): "first" | "last" | "off";
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Group-level Policy and Access Control
|
|
3
|
+
*
|
|
4
|
+
* Handles per-group configuration for Lark/Feishu integration.
|
|
5
|
+
* Supports group-specific tool policies, mention requirements, and access control.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Extract Lark channel config from OpenClaw config
|
|
9
|
+
*/
|
|
10
|
+
function getChannelConfig(cfg) {
|
|
11
|
+
return cfg.channels?.lark ?? {};
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Resolve allowlist match for a sender.
|
|
15
|
+
*
|
|
16
|
+
* Checks if a sender is allowed based on allowlist configuration.
|
|
17
|
+
* Supports wildcards, IDs, and names.
|
|
18
|
+
*/
|
|
19
|
+
export function resolveLarkAllowlistMatch(params) {
|
|
20
|
+
const allowFrom = params.allowFrom
|
|
21
|
+
.map((entry) => String(entry).trim().toLowerCase())
|
|
22
|
+
.filter(Boolean);
|
|
23
|
+
if (allowFrom.length === 0)
|
|
24
|
+
return { allowed: false };
|
|
25
|
+
if (allowFrom.includes("*")) {
|
|
26
|
+
return { allowed: true, matchKey: "*", matchSource: "wildcard" };
|
|
27
|
+
}
|
|
28
|
+
const senderId = params.senderId.toLowerCase();
|
|
29
|
+
if (allowFrom.includes(senderId)) {
|
|
30
|
+
return { allowed: true, matchKey: senderId, matchSource: "id" };
|
|
31
|
+
}
|
|
32
|
+
const senderName = params.senderName?.toLowerCase();
|
|
33
|
+
if (senderName && allowFrom.includes(senderName)) {
|
|
34
|
+
return { allowed: true, matchKey: senderName, matchSource: "name" };
|
|
35
|
+
}
|
|
36
|
+
return { allowed: false };
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Resolve group configuration for a specific group.
|
|
40
|
+
*
|
|
41
|
+
* Looks up group-specific settings from the configuration.
|
|
42
|
+
* Supports case-insensitive group ID matching.
|
|
43
|
+
*/
|
|
44
|
+
export function resolveLarkGroupConfig(params) {
|
|
45
|
+
const channelConfig = getChannelConfig(params.cfg ?? {});
|
|
46
|
+
const groupId = params.groupId?.trim();
|
|
47
|
+
const accountId = params.accountId ?? "default";
|
|
48
|
+
if (!groupId)
|
|
49
|
+
return undefined;
|
|
50
|
+
// First check account-level groups configuration
|
|
51
|
+
const accountConfig = channelConfig.accounts?.[accountId];
|
|
52
|
+
if (accountConfig?.groups) {
|
|
53
|
+
const direct = accountConfig.groups[groupId];
|
|
54
|
+
if (direct)
|
|
55
|
+
return direct;
|
|
56
|
+
// Try case-insensitive match
|
|
57
|
+
const lowered = groupId.toLowerCase();
|
|
58
|
+
const matchKey = Object.keys(accountConfig.groups).find((key) => key.toLowerCase() === lowered);
|
|
59
|
+
if (matchKey) {
|
|
60
|
+
return accountConfig.groups[matchKey];
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// Then check channel-level groups configuration
|
|
64
|
+
if (channelConfig.groups) {
|
|
65
|
+
const direct = channelConfig.groups[groupId];
|
|
66
|
+
if (direct)
|
|
67
|
+
return direct;
|
|
68
|
+
// Try case-insensitive match
|
|
69
|
+
const lowered = groupId.toLowerCase();
|
|
70
|
+
const matchKey = Object.keys(channelConfig.groups).find((key) => key.toLowerCase() === lowered);
|
|
71
|
+
if (matchKey) {
|
|
72
|
+
return channelConfig.groups[matchKey];
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return undefined;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Resolve group tool policy for agent tool access control.
|
|
79
|
+
*
|
|
80
|
+
* Returns the tools configuration for a specific group.
|
|
81
|
+
*/
|
|
82
|
+
export function resolveLarkGroupToolPolicy(params) {
|
|
83
|
+
const groupConfig = resolveLarkGroupConfig(params);
|
|
84
|
+
return groupConfig?.tools;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Check if a group is allowed based on policy.
|
|
88
|
+
*
|
|
89
|
+
* @param groupPolicy - "open" | "allowlist" | "disabled"
|
|
90
|
+
* @param allowFrom - Allowlist configuration
|
|
91
|
+
* @param senderId - Sender's ID
|
|
92
|
+
* @param senderName - Sender's display name (optional)
|
|
93
|
+
*/
|
|
94
|
+
export function isLarkGroupAllowed(params) {
|
|
95
|
+
const { groupPolicy, allowFrom, senderId, senderName } = params;
|
|
96
|
+
if (groupPolicy === "disabled")
|
|
97
|
+
return false;
|
|
98
|
+
if (groupPolicy === "open")
|
|
99
|
+
return true;
|
|
100
|
+
return resolveLarkAllowlistMatch({
|
|
101
|
+
allowFrom,
|
|
102
|
+
senderId,
|
|
103
|
+
senderName,
|
|
104
|
+
}).allowed;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Resolve mention requirement for a group.
|
|
108
|
+
*
|
|
109
|
+
* Determines if @mention is required in a group based on
|
|
110
|
+
* group configuration or global default.
|
|
111
|
+
*/
|
|
112
|
+
export function resolveLarkGroupRequireMention(params) {
|
|
113
|
+
// If explicit group config is provided, use it
|
|
114
|
+
if (params.groupConfig) {
|
|
115
|
+
return params.groupConfig.requireMention ?? true;
|
|
116
|
+
}
|
|
117
|
+
// Otherwise, resolve from config
|
|
118
|
+
const groupConfig = resolveLarkGroupConfig(params);
|
|
119
|
+
if (groupConfig) {
|
|
120
|
+
return groupConfig.requireMention ?? true;
|
|
121
|
+
}
|
|
122
|
+
// Fall back to channel/account default
|
|
123
|
+
const channelConfig = getChannelConfig(params.cfg ?? {});
|
|
124
|
+
const accountId = params.accountId ?? "default";
|
|
125
|
+
const accountConfig = channelConfig.accounts?.[accountId];
|
|
126
|
+
return accountConfig?.requireMention ?? true;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Resolve reply-to mode for a group.
|
|
130
|
+
*
|
|
131
|
+
* Determines how replies should be threaded in a group chat.
|
|
132
|
+
*/
|
|
133
|
+
export function resolveLarkReplyToMode(params) {
|
|
134
|
+
const groupConfig = resolveLarkGroupConfig(params);
|
|
135
|
+
return groupConfig?.replyToMode ?? "first";
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/policy.ts"],"names":[],"mappings":"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"}
|
package/dist/src/types.d.ts
CHANGED
|
@@ -30,6 +30,7 @@ export interface LarkAccountConfig {
|
|
|
30
30
|
mediaMaxMb?: number;
|
|
31
31
|
renderMode?: RenderMode;
|
|
32
32
|
historyLimit?: number;
|
|
33
|
+
groups?: Record<string, LarkGroupConfig>;
|
|
33
34
|
}
|
|
34
35
|
/**
|
|
35
36
|
* Fully resolved account with all defaults applied.
|
|
@@ -61,6 +62,20 @@ export interface ResolvedLarkAccount {
|
|
|
61
62
|
export interface LarkChannelConfig {
|
|
62
63
|
enabled?: boolean;
|
|
63
64
|
accounts?: Record<string, LarkAccountConfig>;
|
|
65
|
+
groups?: Record<string, LarkGroupConfig>;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Group-level configuration for specific Lark groups
|
|
69
|
+
*/
|
|
70
|
+
export interface LarkGroupConfig {
|
|
71
|
+
enabled?: boolean;
|
|
72
|
+
requireMention?: boolean;
|
|
73
|
+
replyToMode?: "first" | "last" | "off";
|
|
74
|
+
tools?: {
|
|
75
|
+
allow?: string[];
|
|
76
|
+
deny?: string[];
|
|
77
|
+
};
|
|
78
|
+
allowFrom?: string[];
|
|
64
79
|
}
|
|
65
80
|
/**
|
|
66
81
|
* Lark message event payload from im.message.receive_v1
|