@openclaw-china/shared 0.1.30 → 0.1.31

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.
@@ -1,82 +1,82 @@
1
- /**
2
- * DM 策略引擎
3
- *
4
- * 实现 open/pairing/allowlist 策略检查
5
- */
6
-
7
- /**
8
- * DM 策略类型
9
- * - open: 允许所有单聊消息
10
- * - pairing: 配对模式(允许所有,配对逻辑由上层处理)
11
- * - allowlist: 仅允许白名单中的发送者
12
- */
13
- export type DmPolicyType = "open" | "pairing" | "allowlist";
14
-
15
- /**
16
- * 策略检查结果
17
- */
18
- export interface PolicyCheckResult {
19
- /** 是否允许处理该消息 */
20
- allowed: boolean;
21
- /** 拒绝原因(如果被拒绝) */
22
- reason?: string;
23
- }
24
-
25
- /**
26
- * DM 策略检查参数
27
- */
28
- export interface DmPolicyCheckParams {
29
- /** DM 策略类型 */
30
- dmPolicy: DmPolicyType;
31
- /** 发送者 ID */
32
- senderId: string;
33
- /** 白名单(allowlist 策略时使用) */
34
- allowFrom?: string[];
35
- }
36
-
37
- /**
38
- * 检查单聊策略
39
- *
40
- * @param params 检查参数
41
- * @returns 策略检查结果
42
- *
43
- * @example
44
- * ```ts
45
- * // 开放策略
46
- * checkDmPolicy({ dmPolicy: "open", senderId: "user1" });
47
- * // => { allowed: true }
48
- *
49
- * // 白名单策略
50
- * checkDmPolicy({ dmPolicy: "allowlist", senderId: "user1", allowFrom: ["user1", "user2"] });
51
- * // => { allowed: true }
52
- *
53
- * checkDmPolicy({ dmPolicy: "allowlist", senderId: "user3", allowFrom: ["user1", "user2"] });
54
- * // => { allowed: false, reason: "sender user3 not in DM allowlist" }
55
- * ```
56
- */
57
- export function checkDmPolicy(params: DmPolicyCheckParams): PolicyCheckResult {
58
- const { dmPolicy, senderId, allowFrom = [] } = params;
59
-
60
- switch (dmPolicy) {
61
- case "open":
62
- // 开放策略:允许所有单聊消息
63
- return { allowed: true };
64
-
65
- case "pairing":
66
- // 配对策略:允许所有单聊消息(配对逻辑由上层处理)
67
- return { allowed: true };
68
-
69
- case "allowlist":
70
- // 白名单策略:仅允许 allowFrom 中的发送者
71
- if (allowFrom.includes(senderId)) {
72
- return { allowed: true };
73
- }
74
- return {
75
- allowed: false,
76
- reason: `sender ${senderId} not in DM allowlist`,
77
- };
78
-
79
- default:
80
- return { allowed: true };
81
- }
82
- }
1
+ /**
2
+ * DM 策略引擎
3
+ *
4
+ * 实现 open/pairing/allowlist 策略检查
5
+ */
6
+
7
+ /**
8
+ * DM 策略类型
9
+ * - open: 允许所有单聊消息
10
+ * - pairing: 配对模式(允许所有,配对逻辑由上层处理)
11
+ * - allowlist: 仅允许白名单中的发送者
12
+ */
13
+ export type DmPolicyType = "open" | "pairing" | "allowlist";
14
+
15
+ /**
16
+ * 策略检查结果
17
+ */
18
+ export interface PolicyCheckResult {
19
+ /** 是否允许处理该消息 */
20
+ allowed: boolean;
21
+ /** 拒绝原因(如果被拒绝) */
22
+ reason?: string;
23
+ }
24
+
25
+ /**
26
+ * DM 策略检查参数
27
+ */
28
+ export interface DmPolicyCheckParams {
29
+ /** DM 策略类型 */
30
+ dmPolicy: DmPolicyType;
31
+ /** 发送者 ID */
32
+ senderId: string;
33
+ /** 白名单(allowlist 策略时使用) */
34
+ allowFrom?: string[];
35
+ }
36
+
37
+ /**
38
+ * 检查单聊策略
39
+ *
40
+ * @param params 检查参数
41
+ * @returns 策略检查结果
42
+ *
43
+ * @example
44
+ * ```ts
45
+ * // 开放策略
46
+ * checkDmPolicy({ dmPolicy: "open", senderId: "user1" });
47
+ * // => { allowed: true }
48
+ *
49
+ * // 白名单策略
50
+ * checkDmPolicy({ dmPolicy: "allowlist", senderId: "user1", allowFrom: ["user1", "user2"] });
51
+ * // => { allowed: true }
52
+ *
53
+ * checkDmPolicy({ dmPolicy: "allowlist", senderId: "user3", allowFrom: ["user1", "user2"] });
54
+ * // => { allowed: false, reason: "sender user3 not in DM allowlist" }
55
+ * ```
56
+ */
57
+ export function checkDmPolicy(params: DmPolicyCheckParams): PolicyCheckResult {
58
+ const { dmPolicy, senderId, allowFrom = [] } = params;
59
+
60
+ switch (dmPolicy) {
61
+ case "open":
62
+ // 开放策略:允许所有单聊消息
63
+ return { allowed: true };
64
+
65
+ case "pairing":
66
+ // 配对策略:允许所有单聊消息(配对逻辑由上层处理)
67
+ return { allowed: true };
68
+
69
+ case "allowlist":
70
+ // 白名单策略:仅允许 allowFrom 中的发送者
71
+ if (allowFrom.includes(senderId)) {
72
+ return { allowed: true };
73
+ }
74
+ return {
75
+ allowed: false,
76
+ reason: `sender ${senderId} not in DM allowlist`,
77
+ };
78
+
79
+ default:
80
+ return { allowed: true };
81
+ }
82
+ }
@@ -1,93 +1,93 @@
1
- /**
2
- * 群组策略引擎
3
- *
4
- * 实现 open/allowlist/disabled 策略检查
5
- */
6
-
7
- import type { PolicyCheckResult } from "./dm-policy.js";
8
-
9
- /**
10
- * 群组策略类型
11
- * - open: 允许所有群聊消息
12
- * - allowlist: 仅允许白名单中的群组
13
- * - disabled: 禁用所有群聊消息
14
- */
15
- export type GroupPolicyType = "open" | "allowlist" | "disabled";
16
-
17
- /**
18
- * 群组策略检查参数
19
- */
20
- export interface GroupPolicyCheckParams {
21
- /** 群组策略类型 */
22
- groupPolicy: GroupPolicyType;
23
- /** 会话 ID(群组 ID) */
24
- conversationId: string;
25
- /** 群组白名单(allowlist 策略时使用) */
26
- groupAllowFrom?: string[];
27
- /** 是否要求 @提及机器人 */
28
- requireMention: boolean;
29
- /** 是否 @提及了机器人 */
30
- mentionedBot: boolean;
31
- }
32
-
33
- /**
34
- * 检查群聊策略
35
- *
36
- * @param params 检查参数
37
- * @returns 策略检查结果
38
- *
39
- * @example
40
- * ```ts
41
- * // 禁用策略
42
- * checkGroupPolicy({ groupPolicy: "disabled", conversationId: "g1", requireMention: false, mentionedBot: false });
43
- * // => { allowed: false, reason: "group messages disabled" }
44
- *
45
- * // 开放策略 + 要求 @提及
46
- * checkGroupPolicy({ groupPolicy: "open", conversationId: "g1", requireMention: true, mentionedBot: false });
47
- * // => { allowed: false, reason: "message did not mention bot" }
48
- *
49
- * // 白名单策略
50
- * checkGroupPolicy({ groupPolicy: "allowlist", conversationId: "g1", groupAllowFrom: ["g1"], requireMention: false, mentionedBot: false });
51
- * // => { allowed: true }
52
- * ```
53
- */
54
- export function checkGroupPolicy(params: GroupPolicyCheckParams): PolicyCheckResult {
55
- const { groupPolicy, conversationId, groupAllowFrom = [], requireMention, mentionedBot } = params;
56
-
57
- // 首先检查群聊策略
58
- switch (groupPolicy) {
59
- case "disabled":
60
- // 禁用策略:拒绝所有群聊消息
61
- return {
62
- allowed: false,
63
- reason: "group messages disabled",
64
- };
65
-
66
- case "allowlist":
67
- // 白名单策略:仅允许 groupAllowFrom 中的群组
68
- if (!groupAllowFrom.includes(conversationId)) {
69
- return {
70
- allowed: false,
71
- reason: `group ${conversationId} not in allowlist`,
72
- };
73
- }
74
- break;
75
-
76
- case "open":
77
- // 开放策略:允许所有群聊
78
- break;
79
-
80
- default:
81
- break;
82
- }
83
-
84
- // 然后检查 @提及要求
85
- if (requireMention && !mentionedBot) {
86
- return {
87
- allowed: false,
88
- reason: "message did not mention bot",
89
- };
90
- }
91
-
92
- return { allowed: true };
93
- }
1
+ /**
2
+ * 群组策略引擎
3
+ *
4
+ * 实现 open/allowlist/disabled 策略检查
5
+ */
6
+
7
+ import type { PolicyCheckResult } from "./dm-policy.js";
8
+
9
+ /**
10
+ * 群组策略类型
11
+ * - open: 允许所有群聊消息
12
+ * - allowlist: 仅允许白名单中的群组
13
+ * - disabled: 禁用所有群聊消息
14
+ */
15
+ export type GroupPolicyType = "open" | "allowlist" | "disabled";
16
+
17
+ /**
18
+ * 群组策略检查参数
19
+ */
20
+ export interface GroupPolicyCheckParams {
21
+ /** 群组策略类型 */
22
+ groupPolicy: GroupPolicyType;
23
+ /** 会话 ID(群组 ID) */
24
+ conversationId: string;
25
+ /** 群组白名单(allowlist 策略时使用) */
26
+ groupAllowFrom?: string[];
27
+ /** 是否要求 @提及机器人 */
28
+ requireMention: boolean;
29
+ /** 是否 @提及了机器人 */
30
+ mentionedBot: boolean;
31
+ }
32
+
33
+ /**
34
+ * 检查群聊策略
35
+ *
36
+ * @param params 检查参数
37
+ * @returns 策略检查结果
38
+ *
39
+ * @example
40
+ * ```ts
41
+ * // 禁用策略
42
+ * checkGroupPolicy({ groupPolicy: "disabled", conversationId: "g1", requireMention: false, mentionedBot: false });
43
+ * // => { allowed: false, reason: "group messages disabled" }
44
+ *
45
+ * // 开放策略 + 要求 @提及
46
+ * checkGroupPolicy({ groupPolicy: "open", conversationId: "g1", requireMention: true, mentionedBot: false });
47
+ * // => { allowed: false, reason: "message did not mention bot" }
48
+ *
49
+ * // 白名单策略
50
+ * checkGroupPolicy({ groupPolicy: "allowlist", conversationId: "g1", groupAllowFrom: ["g1"], requireMention: false, mentionedBot: false });
51
+ * // => { allowed: true }
52
+ * ```
53
+ */
54
+ export function checkGroupPolicy(params: GroupPolicyCheckParams): PolicyCheckResult {
55
+ const { groupPolicy, conversationId, groupAllowFrom = [], requireMention, mentionedBot } = params;
56
+
57
+ // 首先检查群聊策略
58
+ switch (groupPolicy) {
59
+ case "disabled":
60
+ // 禁用策略:拒绝所有群聊消息
61
+ return {
62
+ allowed: false,
63
+ reason: "group messages disabled",
64
+ };
65
+
66
+ case "allowlist":
67
+ // 白名单策略:仅允许 groupAllowFrom 中的群组
68
+ if (!groupAllowFrom.includes(conversationId)) {
69
+ return {
70
+ allowed: false,
71
+ reason: `group ${conversationId} not in allowlist`,
72
+ };
73
+ }
74
+ break;
75
+
76
+ case "open":
77
+ // 开放策略:允许所有群聊
78
+ break;
79
+
80
+ default:
81
+ break;
82
+ }
83
+
84
+ // 然后检查 @提及要求
85
+ if (requireMention && !mentionedBot) {
86
+ return {
87
+ allowed: false,
88
+ reason: "message did not mention bot",
89
+ };
90
+ }
91
+
92
+ return { allowed: true };
93
+ }
@@ -1,2 +1,2 @@
1
- export * from "./dm-policy.js";
2
- export * from "./group-policy.js";
1
+ export * from "./dm-policy.js";
2
+ export * from "./group-policy.js";
@@ -1,24 +1,24 @@
1
- // 共享类型定义
2
-
3
- export type DmPolicy = "open" | "pairing" | "allowlist";
4
- export type GroupPolicy = "open" | "allowlist" | "disabled";
5
-
6
- export interface ParsedMessage {
7
- chatId: string;
8
- messageId: string;
9
- senderId: string;
10
- senderName?: string;
11
- chatType: "direct" | "group";
12
- content: string;
13
- contentType: string;
14
- mentionedBot: boolean;
15
- replyToMessageId?: string;
16
- timestamp: number;
17
- }
18
-
19
- export interface HistoryEntry {
20
- sender: string;
21
- body: string;
22
- timestamp: number;
23
- messageId: string;
24
- }
1
+ // 共享类型定义
2
+
3
+ export type DmPolicy = "open" | "pairing" | "allowlist";
4
+ export type GroupPolicy = "open" | "allowlist" | "disabled";
5
+
6
+ export interface ParsedMessage {
7
+ chatId: string;
8
+ messageId: string;
9
+ senderId: string;
10
+ senderName?: string;
11
+ chatType: "direct" | "group";
12
+ content: string;
13
+ contentType: string;
14
+ mentionedBot: boolean;
15
+ replyToMessageId?: string;
16
+ timestamp: number;
17
+ }
18
+
19
+ export interface HistoryEntry {
20
+ sender: string;
21
+ body: string;
22
+ timestamp: number;
23
+ messageId: string;
24
+ }
package/tsconfig.json CHANGED
@@ -1,8 +1,8 @@
1
- {
2
- "extends": "../../tsconfig.base.json",
3
- "compilerOptions": {
4
- "outDir": "dist",
5
- "rootDir": "src"
6
- },
7
- "include": ["src"]
8
- }
1
+ {
2
+ "extends": "../../tsconfig.base.json",
3
+ "compilerOptions": {
4
+ "outDir": "dist",
5
+ "rootDir": "src"
6
+ },
7
+ "include": ["src"]
8
+ }
package/vitest.config.ts CHANGED
@@ -1,8 +1,8 @@
1
- import { defineConfig } from "vitest/config";
2
-
3
- export default defineConfig({
4
- test: {
5
- include: ["src/**/*.test.ts"],
6
- globals: false,
7
- },
8
- });
1
+ import { defineConfig } from "vitest/config";
2
+
3
+ export default defineConfig({
4
+ test: {
5
+ include: ["src/**/*.test.ts"],
6
+ globals: false,
7
+ },
8
+ });