workerclaw 0.2.0
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/LICENSE +21 -0
- package/README.md +129 -0
- package/dist/active-behavior/behavior-scheduler.d.ts +119 -0
- package/dist/active-behavior/behavior-scheduler.d.ts.map +1 -0
- package/dist/active-behavior/behavior-scheduler.js +297 -0
- package/dist/active-behavior/behavior-scheduler.js.map +1 -0
- package/dist/active-behavior/frequency-control.d.ts +72 -0
- package/dist/active-behavior/frequency-control.d.ts.map +1 -0
- package/dist/active-behavior/frequency-control.js +206 -0
- package/dist/active-behavior/frequency-control.js.map +1 -0
- package/dist/active-behavior/index.d.ts +8 -0
- package/dist/active-behavior/index.d.ts.map +1 -0
- package/dist/active-behavior/index.js +6 -0
- package/dist/active-behavior/index.js.map +1 -0
- package/dist/agent/agent-engine.d.ts +122 -0
- package/dist/agent/agent-engine.d.ts.map +1 -0
- package/dist/agent/agent-engine.js +380 -0
- package/dist/agent/agent-engine.js.map +1 -0
- package/dist/agent/context-window.d.ts +69 -0
- package/dist/agent/context-window.d.ts.map +1 -0
- package/dist/agent/context-window.js +210 -0
- package/dist/agent/context-window.js.map +1 -0
- package/dist/agent/llm-client.d.ts +37 -0
- package/dist/agent/llm-client.d.ts.map +1 -0
- package/dist/agent/llm-client.js +155 -0
- package/dist/agent/llm-client.js.map +1 -0
- package/dist/agent/personality.d.ts +71 -0
- package/dist/agent/personality.d.ts.map +1 -0
- package/dist/agent/personality.js +147 -0
- package/dist/agent/personality.js.map +1 -0
- package/dist/agent/session-manager.d.ts +111 -0
- package/dist/agent/session-manager.d.ts.map +1 -0
- package/dist/agent/session-manager.js +205 -0
- package/dist/agent/session-manager.js.map +1 -0
- package/dist/agent/tool-executor.d.ts +34 -0
- package/dist/agent/tool-executor.d.ts.map +1 -0
- package/dist/agent/tool-executor.js +145 -0
- package/dist/agent/tool-executor.js.map +1 -0
- package/dist/agent/tool-registry.d.ts +67 -0
- package/dist/agent/tool-registry.d.ts.map +1 -0
- package/dist/agent/tool-registry.js +272 -0
- package/dist/agent/tool-registry.js.map +1 -0
- package/dist/cli/configure.d.ts +16 -0
- package/dist/cli/configure.d.ts.map +1 -0
- package/dist/cli/configure.js +212 -0
- package/dist/cli/configure.js.map +1 -0
- package/dist/cli/index.d.ts +17 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +256 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/prompter.d.ts +59 -0
- package/dist/cli/prompter.d.ts.map +1 -0
- package/dist/cli/prompter.js +120 -0
- package/dist/cli/prompter.js.map +1 -0
- package/dist/cli/sections/index.d.ts +9 -0
- package/dist/cli/sections/index.d.ts.map +1 -0
- package/dist/cli/sections/index.js +9 -0
- package/dist/cli/sections/index.js.map +1 -0
- package/dist/cli/sections/llm.d.ts +14 -0
- package/dist/cli/sections/llm.d.ts.map +1 -0
- package/dist/cli/sections/llm.js +155 -0
- package/dist/cli/sections/llm.js.map +1 -0
- package/dist/cli/sections/personality.d.ts +14 -0
- package/dist/cli/sections/personality.d.ts.map +1 -0
- package/dist/cli/sections/personality.js +90 -0
- package/dist/cli/sections/personality.js.map +1 -0
- package/dist/cli/sections/platform.d.ts +14 -0
- package/dist/cli/sections/platform.d.ts.map +1 -0
- package/dist/cli/sections/platform.js +179 -0
- package/dist/cli/sections/platform.js.map +1 -0
- package/dist/cli/sections/security.d.ts +14 -0
- package/dist/cli/sections/security.d.ts.map +1 -0
- package/dist/cli/sections/security.js +106 -0
- package/dist/cli/sections/security.js.map +1 -0
- package/dist/cli/sections/skills.d.ts +10 -0
- package/dist/cli/sections/skills.d.ts.map +1 -0
- package/dist/cli/sections/skills.js +149 -0
- package/dist/cli/sections/skills.js.map +1 -0
- package/dist/cli.d.ts +8 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +116 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/config.d.ts +175 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +109 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/events.d.ts +211 -0
- package/dist/core/events.d.ts.map +1 -0
- package/dist/core/events.js +152 -0
- package/dist/core/events.js.map +1 -0
- package/dist/core/logger.d.ts +23 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +53 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/workerclaw.d.ts +83 -0
- package/dist/core/workerclaw.d.ts.map +1 -0
- package/dist/core/workerclaw.js +161 -0
- package/dist/core/workerclaw.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/ingress/message-parser.d.ts +36 -0
- package/dist/ingress/message-parser.d.ts.map +1 -0
- package/dist/ingress/message-parser.js +107 -0
- package/dist/ingress/message-parser.js.map +1 -0
- package/dist/ingress/miniabc-client.d.ts +109 -0
- package/dist/ingress/miniabc-client.d.ts.map +1 -0
- package/dist/ingress/miniabc-client.js +345 -0
- package/dist/ingress/miniabc-client.js.map +1 -0
- package/dist/ingress/platform-api.d.ts +82 -0
- package/dist/ingress/platform-api.d.ts.map +1 -0
- package/dist/ingress/platform-api.js +209 -0
- package/dist/ingress/platform-api.js.map +1 -0
- package/dist/sandbox/command-sandbox.d.ts +46 -0
- package/dist/sandbox/command-sandbox.d.ts.map +1 -0
- package/dist/sandbox/command-sandbox.js +144 -0
- package/dist/sandbox/command-sandbox.js.map +1 -0
- package/dist/sandbox/fs-sandbox.d.ts +56 -0
- package/dist/sandbox/fs-sandbox.d.ts.map +1 -0
- package/dist/sandbox/fs-sandbox.js +119 -0
- package/dist/sandbox/fs-sandbox.js.map +1 -0
- package/dist/sandbox/network-sandbox.d.ts +41 -0
- package/dist/sandbox/network-sandbox.d.ts.map +1 -0
- package/dist/sandbox/network-sandbox.js +114 -0
- package/dist/sandbox/network-sandbox.js.map +1 -0
- package/dist/security/content-scanner.d.ts +59 -0
- package/dist/security/content-scanner.d.ts.map +1 -0
- package/dist/security/content-scanner.js +289 -0
- package/dist/security/content-scanner.js.map +1 -0
- package/dist/security/gate.d.ts +78 -0
- package/dist/security/gate.d.ts.map +1 -0
- package/dist/security/gate.js +150 -0
- package/dist/security/gate.js.map +1 -0
- package/dist/security/permission-level.d.ts +68 -0
- package/dist/security/permission-level.d.ts.map +1 -0
- package/dist/security/permission-level.js +191 -0
- package/dist/security/permission-level.js.map +1 -0
- package/dist/security/rate-limiter.d.ts +52 -0
- package/dist/security/rate-limiter.d.ts.map +1 -0
- package/dist/security/rate-limiter.js +133 -0
- package/dist/security/rate-limiter.js.map +1 -0
- package/dist/security/source-verifier.d.ts +33 -0
- package/dist/security/source-verifier.d.ts.map +1 -0
- package/dist/security/source-verifier.js +106 -0
- package/dist/security/source-verifier.js.map +1 -0
- package/dist/skills/builtin/code.d.ts +27 -0
- package/dist/skills/builtin/code.d.ts.map +1 -0
- package/dist/skills/builtin/code.js +132 -0
- package/dist/skills/builtin/code.js.map +1 -0
- package/dist/skills/builtin/index.d.ts +12 -0
- package/dist/skills/builtin/index.d.ts.map +1 -0
- package/dist/skills/builtin/index.js +16 -0
- package/dist/skills/builtin/index.js.map +1 -0
- package/dist/skills/builtin/search.d.ts +27 -0
- package/dist/skills/builtin/search.d.ts.map +1 -0
- package/dist/skills/builtin/search.js +105 -0
- package/dist/skills/builtin/search.js.map +1 -0
- package/dist/skills/builtin/writing.d.ts +22 -0
- package/dist/skills/builtin/writing.d.ts.map +1 -0
- package/dist/skills/builtin/writing.js +93 -0
- package/dist/skills/builtin/writing.js.map +1 -0
- package/dist/skills/index.d.ts +11 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +10 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/pack-loader.d.ts +31 -0
- package/dist/skills/pack-loader.d.ts.map +1 -0
- package/dist/skills/pack-loader.js +167 -0
- package/dist/skills/pack-loader.js.map +1 -0
- package/dist/skills/pack-registry.d.ts +40 -0
- package/dist/skills/pack-registry.d.ts.map +1 -0
- package/dist/skills/pack-registry.js +80 -0
- package/dist/skills/pack-registry.js.map +1 -0
- package/dist/skills/pack-types.d.ts +64 -0
- package/dist/skills/pack-types.d.ts.map +1 -0
- package/dist/skills/pack-types.js +7 -0
- package/dist/skills/pack-types.js.map +1 -0
- package/dist/skills/skill-registry.d.ts +83 -0
- package/dist/skills/skill-registry.d.ts.map +1 -0
- package/dist/skills/skill-registry.js +206 -0
- package/dist/skills/skill-registry.js.map +1 -0
- package/dist/skills/skill-runner.d.ts +49 -0
- package/dist/skills/skill-runner.d.ts.map +1 -0
- package/dist/skills/skill-runner.js +128 -0
- package/dist/skills/skill-runner.js.map +1 -0
- package/dist/skills/types.d.ts +94 -0
- package/dist/skills/types.d.ts.map +1 -0
- package/dist/skills/types.js +7 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/task/concurrency.d.ts +87 -0
- package/dist/task/concurrency.d.ts.map +1 -0
- package/dist/task/concurrency.js +269 -0
- package/dist/task/concurrency.js.map +1 -0
- package/dist/task/task-evaluator.d.ts +52 -0
- package/dist/task/task-evaluator.d.ts.map +1 -0
- package/dist/task/task-evaluator.js +141 -0
- package/dist/task/task-evaluator.js.map +1 -0
- package/dist/task/task-manager.d.ts +112 -0
- package/dist/task/task-manager.d.ts.map +1 -0
- package/dist/task/task-manager.js +382 -0
- package/dist/task/task-manager.js.map +1 -0
- package/dist/task/task-state-machine.d.ts +63 -0
- package/dist/task/task-state-machine.d.ts.map +1 -0
- package/dist/task/task-state-machine.js +149 -0
- package/dist/task/task-state-machine.js.map +1 -0
- package/dist/types/agent.d.ts +79 -0
- package/dist/types/agent.d.ts.map +1 -0
- package/dist/types/agent.js +7 -0
- package/dist/types/agent.js.map +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/message.d.ts +87 -0
- package/dist/types/message.d.ts.map +1 -0
- package/dist/types/message.js +30 -0
- package/dist/types/message.js.map +1 -0
- package/dist/types/task.d.ts +176 -0
- package/dist/types/task.d.ts.map +1 -0
- package/dist/types/task.js +5 -0
- package/dist/types/task.js.map +1 -0
- package/package.json +57 -0
- package/workerclaw.config.example.json +78 -0
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 频率控制器
|
|
3
|
+
*
|
|
4
|
+
* 控制智能行为的发布频率
|
|
5
|
+
* 防止过于频繁或过于沉默
|
|
6
|
+
*/
|
|
7
|
+
import { createLogger } from '../core/logger.js';
|
|
8
|
+
export const DEFAULT_FREQUENCY_CONFIG = {
|
|
9
|
+
limits: {
|
|
10
|
+
tweet: {
|
|
11
|
+
minIntervalMs: 30 * 60 * 1000, // 最少 30 分钟
|
|
12
|
+
maxIntervalMs: 4 * 60 * 60 * 1000, // 最多 4 小时
|
|
13
|
+
maxPerHour: 3,
|
|
14
|
+
maxPerDay: 10,
|
|
15
|
+
},
|
|
16
|
+
browse: {
|
|
17
|
+
minIntervalMs: 10 * 60 * 1000, // 最少 10 分钟
|
|
18
|
+
maxIntervalMs: 2 * 60 * 60 * 1000, // 最多 2 小时
|
|
19
|
+
maxPerHour: 10,
|
|
20
|
+
maxPerDay: 50,
|
|
21
|
+
},
|
|
22
|
+
comment: {
|
|
23
|
+
minIntervalMs: 20 * 60 * 1000, // 最少 20 分钟
|
|
24
|
+
maxIntervalMs: 3 * 60 * 60 * 1000, // 最多 3 小时
|
|
25
|
+
maxPerHour: 5,
|
|
26
|
+
maxPerDay: 20,
|
|
27
|
+
},
|
|
28
|
+
like: {
|
|
29
|
+
minIntervalMs: 2 * 60 * 1000, // 最少 2 分钟
|
|
30
|
+
maxIntervalMs: 30 * 60 * 1000, // 最多 30 分钟
|
|
31
|
+
maxPerHour: 20,
|
|
32
|
+
maxPerDay: 100,
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
dailyLimit: 100,
|
|
36
|
+
};
|
|
37
|
+
// ==================== FrequencyController ====================
|
|
38
|
+
export class FrequencyController {
|
|
39
|
+
logger;
|
|
40
|
+
config;
|
|
41
|
+
records = [];
|
|
42
|
+
dailyCount = new Map();
|
|
43
|
+
currentDay = '';
|
|
44
|
+
constructor(config) {
|
|
45
|
+
this.config = {
|
|
46
|
+
...DEFAULT_FREQUENCY_CONFIG,
|
|
47
|
+
limits: { ...DEFAULT_FREQUENCY_CONFIG.limits, ...config?.limits },
|
|
48
|
+
...config,
|
|
49
|
+
};
|
|
50
|
+
this.logger = createLogger('FrequencyController');
|
|
51
|
+
this.currentDay = this.getToday();
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* 检查行为是否允许执行
|
|
55
|
+
*/
|
|
56
|
+
canPerform(type) {
|
|
57
|
+
const now = Date.now();
|
|
58
|
+
// 检查每日限额
|
|
59
|
+
if (!this.isSameDay(now)) {
|
|
60
|
+
this.resetDaily();
|
|
61
|
+
}
|
|
62
|
+
// 1. 每日总限额
|
|
63
|
+
const totalToday = this.getTodayTotal();
|
|
64
|
+
if (totalToday >= this.config.dailyLimit) {
|
|
65
|
+
return { allowed: false, reason: '已达到每日行为上限' };
|
|
66
|
+
}
|
|
67
|
+
// 2. 行为类型每日限额
|
|
68
|
+
const typeConfig = this.config.limits[type];
|
|
69
|
+
if (!typeConfig) {
|
|
70
|
+
return { allowed: true };
|
|
71
|
+
}
|
|
72
|
+
const typeToday = this.dailyCount.get(type) || 0;
|
|
73
|
+
if (typeToday >= typeConfig.maxPerDay) {
|
|
74
|
+
return { allowed: false, reason: `${type} 已达到每日上限 (${typeConfig.maxPerDay})` };
|
|
75
|
+
}
|
|
76
|
+
// 3. 每小时限额
|
|
77
|
+
const hourAgo = now - 60 * 60 * 1000;
|
|
78
|
+
const hourCount = this.records.filter(r => r.type === type && r.timestamp >= hourAgo).length;
|
|
79
|
+
if (hourCount >= typeConfig.maxPerHour) {
|
|
80
|
+
return { allowed: false, reason: `${type} 已达到每小时上限 (${typeConfig.maxPerHour})` };
|
|
81
|
+
}
|
|
82
|
+
// 4. 最小间隔
|
|
83
|
+
const lastRecord = this.getLastRecord(type);
|
|
84
|
+
if (lastRecord && now - lastRecord.timestamp < typeConfig.minIntervalMs) {
|
|
85
|
+
const waitMs = typeConfig.minIntervalMs - (now - lastRecord.timestamp);
|
|
86
|
+
return {
|
|
87
|
+
allowed: false,
|
|
88
|
+
reason: `${type} 需要等待 ${Math.round(waitMs / 1000)} 秒`,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
return { allowed: true };
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* 记录行为执行
|
|
95
|
+
*/
|
|
96
|
+
record(type) {
|
|
97
|
+
const now = Date.now();
|
|
98
|
+
if (!this.isSameDay(now)) {
|
|
99
|
+
this.resetDaily();
|
|
100
|
+
}
|
|
101
|
+
this.records.push({ type, timestamp: now });
|
|
102
|
+
this.dailyCount.set(type, (this.dailyCount.get(type) || 0) + 1);
|
|
103
|
+
// 清理旧记录(保留最近 24 小时)
|
|
104
|
+
const cutoff = now - 24 * 60 * 60 * 1000;
|
|
105
|
+
this.records = this.records.filter(r => r.timestamp >= cutoff);
|
|
106
|
+
this.logger.debug(`记录行为: ${type}`, {
|
|
107
|
+
today: this.dailyCount.get(type),
|
|
108
|
+
total: this.getTodayTotal(),
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* 检查是否应该主动执行某种行为(超过最大间隔)
|
|
113
|
+
*/
|
|
114
|
+
shouldAct(type) {
|
|
115
|
+
const typeConfig = this.config.limits[type];
|
|
116
|
+
if (!typeConfig)
|
|
117
|
+
return false;
|
|
118
|
+
const lastRecord = this.getLastRecord(type);
|
|
119
|
+
if (!lastRecord)
|
|
120
|
+
return true; // 从未执行过,应该执行
|
|
121
|
+
return Date.now() - lastRecord.timestamp >= typeConfig.maxIntervalMs;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* 获取下次建议执行的行为类型
|
|
125
|
+
* 返回最需要执行的行为(距上次执行最久的)
|
|
126
|
+
*/
|
|
127
|
+
getNextSuggested() {
|
|
128
|
+
const suggestions = [];
|
|
129
|
+
for (const type of ['tweet', 'browse', 'comment', 'like']) {
|
|
130
|
+
const check = this.canPerform(type);
|
|
131
|
+
if (!check.allowed)
|
|
132
|
+
continue;
|
|
133
|
+
const typeConfig = this.config.limits[type];
|
|
134
|
+
if (!typeConfig)
|
|
135
|
+
continue;
|
|
136
|
+
const lastRecord = this.getLastRecord(type);
|
|
137
|
+
const elapsed = lastRecord ? Date.now() - lastRecord.timestamp : Infinity;
|
|
138
|
+
// 紧迫度 = 已过时间 / 最大间隔(超过 1.0 表示应该执行)
|
|
139
|
+
const urgency = Math.min(elapsed / typeConfig.maxIntervalMs, 2.0);
|
|
140
|
+
if (urgency > 0.5) { // 超过一半间隔就开始考虑
|
|
141
|
+
suggestions.push({ type, urgency });
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
if (suggestions.length === 0)
|
|
145
|
+
return null;
|
|
146
|
+
// 返回紧迫度最高的
|
|
147
|
+
suggestions.sort((a, b) => b.urgency - a.urgency);
|
|
148
|
+
return suggestions[0];
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* 获取距离下次可执行的最短等待时间
|
|
152
|
+
*/
|
|
153
|
+
getTimeUntilNext(type) {
|
|
154
|
+
const typeConfig = this.config.limits[type];
|
|
155
|
+
if (!typeConfig)
|
|
156
|
+
return 0;
|
|
157
|
+
const lastRecord = this.getLastRecord(type);
|
|
158
|
+
if (!lastRecord)
|
|
159
|
+
return 0;
|
|
160
|
+
const remaining = typeConfig.minIntervalMs - (Date.now() - lastRecord.timestamp);
|
|
161
|
+
return Math.max(0, remaining);
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* 获取统计信息
|
|
165
|
+
*/
|
|
166
|
+
getStats() {
|
|
167
|
+
const today = {
|
|
168
|
+
tweet: 0, browse: 0, comment: 0, like: 0,
|
|
169
|
+
};
|
|
170
|
+
for (const [type, count] of this.dailyCount) {
|
|
171
|
+
today[type] = count;
|
|
172
|
+
}
|
|
173
|
+
return {
|
|
174
|
+
today,
|
|
175
|
+
totalToday: this.getTodayTotal(),
|
|
176
|
+
dailyLimit: this.config.dailyLimit,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
// ==================== 私有方法 ====================
|
|
180
|
+
getLastRecord(type) {
|
|
181
|
+
for (let i = this.records.length - 1; i >= 0; i--) {
|
|
182
|
+
if (this.records[i].type === type)
|
|
183
|
+
return this.records[i];
|
|
184
|
+
}
|
|
185
|
+
return undefined;
|
|
186
|
+
}
|
|
187
|
+
getTodayTotal() {
|
|
188
|
+
let total = 0;
|
|
189
|
+
for (const count of this.dailyCount.values()) {
|
|
190
|
+
total += count;
|
|
191
|
+
}
|
|
192
|
+
return total;
|
|
193
|
+
}
|
|
194
|
+
getToday() {
|
|
195
|
+
return new Date().toISOString().slice(0, 10);
|
|
196
|
+
}
|
|
197
|
+
isSameDay(timestamp) {
|
|
198
|
+
return new Date(timestamp).toISOString().slice(0, 10) === this.currentDay;
|
|
199
|
+
}
|
|
200
|
+
resetDaily() {
|
|
201
|
+
this.currentDay = this.getToday();
|
|
202
|
+
this.dailyCount.clear();
|
|
203
|
+
this.logger.debug('频率控制器:重置每日计数');
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
//# sourceMappingURL=frequency-control.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frequency-control.js","sourceRoot":"","sources":["../../src/active-behavior/frequency-control.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAe,MAAM,mBAAmB,CAAC;AAwB9D,MAAM,CAAC,MAAM,wBAAwB,GAAoB;IACvD,MAAM,EAAE;QACN,KAAK,EAAE;YACL,aAAa,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAI,WAAW;YAC5C,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,UAAU;YAC7C,UAAU,EAAE,CAAC;YACb,SAAS,EAAE,EAAE;SACd;QACD,MAAM,EAAE;YACN,aAAa,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAI,WAAW;YAC5C,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,UAAU;YAC7C,UAAU,EAAE,EAAE;YACd,SAAS,EAAE,EAAE;SACd;QACD,OAAO,EAAE;YACP,aAAa,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAI,WAAW;YAC5C,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,UAAU;YAC7C,UAAU,EAAE,CAAC;YACb,SAAS,EAAE,EAAE;SACd;QACD,IAAI,EAAE;YACJ,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAK,UAAU;YAC3C,aAAa,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAK,WAAW;YAC7C,UAAU,EAAE,EAAE;YACd,SAAS,EAAE,GAAG;SACf;KACF;IACD,UAAU,EAAE,GAAG;CAChB,CAAC;AASF,gEAAgE;AAEhE,MAAM,OAAO,mBAAmB;IACtB,MAAM,CAAS;IACf,MAAM,CAAkB;IACxB,OAAO,GAAqB,EAAE,CAAC;IAC/B,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvC,UAAU,GAAG,EAAE,CAAC;IAExB,YAAY,MAAiC;QAC3C,IAAI,CAAC,MAAM,GAAG;YACZ,GAAG,wBAAwB;YAC3B,MAAM,EAAE,EAAE,GAAG,wBAAwB,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE;YACjE,GAAG,MAAM;SACV,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,qBAAqB,CAAC,CAAC;QAClD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,IAAkB;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,SAAS;QACT,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,CAAC;QAED,WAAW;QACX,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACxC,IAAI,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACzC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QACjD,CAAC;QAED,cAAc;QACd,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3B,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,SAAS,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;YACtC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,aAAa,UAAU,CAAC,SAAS,GAAG,EAAE,CAAC;QACjF,CAAC;QAED,WAAW;QACX,MAAM,OAAO,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CACnC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,SAAS,IAAI,OAAO,CAC/C,CAAC,MAAM,CAAC;QAET,IAAI,SAAS,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;YACvC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,cAAc,UAAU,CAAC,UAAU,GAAG,EAAE,CAAC;QACnF,CAAC;QAED,UAAU;QACV,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,UAAU,IAAI,GAAG,GAAG,UAAU,CAAC,SAAS,GAAG,UAAU,CAAC,aAAa,EAAE,CAAC;YACxE,MAAM,MAAM,GAAG,UAAU,CAAC,aAAa,GAAG,CAAC,GAAG,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;YACvE,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,GAAG,IAAI,SAAS,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI;aACtD,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,IAAkB;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAEhE,oBAAoB;QACpB,MAAM,MAAM,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QACzC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC;QAE/D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,EAAE;YACjC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;YAChC,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE;SAC5B,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,IAAkB;QAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,UAAU;YAAE,OAAO,KAAK,CAAC;QAE9B,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC,CAAC,aAAa;QAE3C,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,SAAS,IAAI,UAAU,CAAC,aAAa,CAAC;IACvE,CAAC;IAED;;;OAGG;IACH,gBAAgB;QACd,MAAM,WAAW,GAAmD,EAAE,CAAC;QAEvE,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAmB,EAAE,CAAC;YAC5E,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,CAAC,KAAK,CAAC,OAAO;gBAAE,SAAS;YAE7B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,CAAC,UAAU;gBAAE,SAAS;YAE1B,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;YAE1E,mCAAmC;YACnC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,UAAU,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;YAElE,IAAI,OAAO,GAAG,GAAG,EAAE,CAAC,CAAC,cAAc;gBACjC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAED,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAE1C,WAAW;QACX,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;QAClD,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,IAAkB;QACjC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,UAAU;YAAE,OAAO,CAAC,CAAC;QAE1B,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,UAAU;YAAE,OAAO,CAAC,CAAC;QAE1B,MAAM,SAAS,GAAG,UAAU,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;QACjF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,QAAQ;QAKN,MAAM,KAAK,GAAiC;YAC1C,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;SACzC,CAAC;QAEF,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAC5C,KAAK,CAAC,IAAoB,CAAC,GAAG,KAAK,CAAC;QACtC,CAAC;QAED,OAAO;YACL,KAAK;YACL,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE;YAChC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;SACnC,CAAC;IACJ,CAAC;IAED,iDAAiD;IAEzC,aAAa,CAAC,IAAkB;QACtC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAClD,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,aAAa;QACnB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;YAC7C,KAAK,IAAI,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,QAAQ;QACd,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/C,CAAC;IAEO,SAAS,CAAC,SAAiB;QACjC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC;IAC5E,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACpC,CAAC;CACF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 智能活跃行为模块导出
|
|
3
|
+
*/
|
|
4
|
+
export { FrequencyController, DEFAULT_FREQUENCY_CONFIG } from './frequency-control.js';
|
|
5
|
+
export type { FrequencyConfig, BehaviorType } from './frequency-control.js';
|
|
6
|
+
export { BehaviorScheduler, DEFAULT_BEHAVIOR_CONFIG } from './behavior-scheduler.js';
|
|
7
|
+
export type { BehaviorSchedulerConfig, BehaviorCallbacks, BehaviorResult } from './behavior-scheduler.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/active-behavior/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACvF,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACrF,YAAY,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/active-behavior/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAEvF,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent 引擎 (Phase 4 完整版)
|
|
3
|
+
*
|
|
4
|
+
* WorkerClaw 的核心执行引擎
|
|
5
|
+
* 集成人格系统、会话管理、上下文窗口、技能系统和工具调用循环
|
|
6
|
+
*
|
|
7
|
+
* 执行流程:
|
|
8
|
+
* 1. 构建系统提示(人格 + 技能提示 + 权限信息)
|
|
9
|
+
* 2. 获取/创建会话
|
|
10
|
+
* 3. 添加用户消息
|
|
11
|
+
* 4. 上下文窗口适配
|
|
12
|
+
* 5. 调用 LLM
|
|
13
|
+
* 6. 处理工具调用(循环直到完成)
|
|
14
|
+
* 7. 返回结果
|
|
15
|
+
*/
|
|
16
|
+
import { EventBus } from '../core/events.js';
|
|
17
|
+
import { Personality } from './personality.js';
|
|
18
|
+
import { SessionManager } from './session-manager.js';
|
|
19
|
+
import { type SkillRunnerConfig } from '../skills/skill-runner.js';
|
|
20
|
+
import { SkillRegistry } from '../skills/skill-registry.js';
|
|
21
|
+
import type { LLMConfig, SecurityConfig } from '../core/config.js';
|
|
22
|
+
import type { Task, TaskResult, TaskExecutionContext } from '../types/task.js';
|
|
23
|
+
import type { PermissionLevel } from '../types/agent.js';
|
|
24
|
+
import type { PersonalityConfig } from './personality.js';
|
|
25
|
+
export interface AgentEngineConfig {
|
|
26
|
+
llm: LLMConfig;
|
|
27
|
+
personality: PersonalityConfig;
|
|
28
|
+
security: SecurityConfig;
|
|
29
|
+
/** 会话管理配置 */
|
|
30
|
+
session?: {
|
|
31
|
+
maxActiveSessions?: number;
|
|
32
|
+
sessionTTL?: number;
|
|
33
|
+
maxTokens?: number;
|
|
34
|
+
};
|
|
35
|
+
/** 技能执行配置 */
|
|
36
|
+
skillRunner?: Partial<SkillRunnerConfig>;
|
|
37
|
+
}
|
|
38
|
+
export declare class AgentEngine {
|
|
39
|
+
private logger;
|
|
40
|
+
private config;
|
|
41
|
+
private eventBus;
|
|
42
|
+
private llm;
|
|
43
|
+
private personality;
|
|
44
|
+
private sessionManager;
|
|
45
|
+
private toolExecutor;
|
|
46
|
+
private skillRunner;
|
|
47
|
+
private skillRegistry;
|
|
48
|
+
constructor(config: AgentEngineConfig, eventBus: EventBus);
|
|
49
|
+
/**
|
|
50
|
+
* 执行任务(Phase 4 完整版)
|
|
51
|
+
*/
|
|
52
|
+
executeTask(task: Task, context: TaskExecutionContext): Promise<TaskResult>;
|
|
53
|
+
/**
|
|
54
|
+
* LLM 调用循环(支持工具调用)
|
|
55
|
+
*/
|
|
56
|
+
private llmLoop;
|
|
57
|
+
/**
|
|
58
|
+
* 处理单个工具调用
|
|
59
|
+
*/
|
|
60
|
+
private handleToolCall;
|
|
61
|
+
/**
|
|
62
|
+
* 获取任务可用的工具
|
|
63
|
+
*/
|
|
64
|
+
private getToolsForTask;
|
|
65
|
+
/**
|
|
66
|
+
* 构建系统提示(人格 + 技能 + 权限)
|
|
67
|
+
*/
|
|
68
|
+
private buildSystemPrompt;
|
|
69
|
+
/**
|
|
70
|
+
* 构建用户消息
|
|
71
|
+
*/
|
|
72
|
+
private buildUserMessage;
|
|
73
|
+
/**
|
|
74
|
+
* 构建任务输出
|
|
75
|
+
*/
|
|
76
|
+
private buildOutputs;
|
|
77
|
+
/**
|
|
78
|
+
* 获取人格实例
|
|
79
|
+
*/
|
|
80
|
+
getPersonality(): Personality;
|
|
81
|
+
/**
|
|
82
|
+
* 获取会话管理器
|
|
83
|
+
*/
|
|
84
|
+
getSessionManager(): SessionManager;
|
|
85
|
+
/**
|
|
86
|
+
* 获取技能注册表
|
|
87
|
+
*/
|
|
88
|
+
getSkillRegistry(): SkillRegistry;
|
|
89
|
+
/**
|
|
90
|
+
* 注册技能
|
|
91
|
+
*/
|
|
92
|
+
registerSkill(skill: import('../skills/types.js').Skill): void;
|
|
93
|
+
/**
|
|
94
|
+
* 初始化所有技能
|
|
95
|
+
*/
|
|
96
|
+
initializeSkills(): Promise<{
|
|
97
|
+
success: number;
|
|
98
|
+
failed: number;
|
|
99
|
+
}>;
|
|
100
|
+
/**
|
|
101
|
+
* 获取会话统计
|
|
102
|
+
*/
|
|
103
|
+
getSessionStats(): {
|
|
104
|
+
totalSessions: number;
|
|
105
|
+
activeSessions: number;
|
|
106
|
+
completedSessions: number;
|
|
107
|
+
totalTokensUsed: number;
|
|
108
|
+
};
|
|
109
|
+
/**
|
|
110
|
+
* 获取技能统计
|
|
111
|
+
*/
|
|
112
|
+
getSkillStats(): {
|
|
113
|
+
total: number;
|
|
114
|
+
byState: Record<import("../skills/types.js").SkillState, number>;
|
|
115
|
+
byLevel: Record<PermissionLevel, number>;
|
|
116
|
+
};
|
|
117
|
+
/**
|
|
118
|
+
* 清理资源
|
|
119
|
+
*/
|
|
120
|
+
dispose(): void;
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=agent-engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-engine.d.ts","sourceRoot":"","sources":["../../src/agent/agent-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,QAAQ,EAAmB,MAAM,mBAAmB,CAAC;AAE9D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAe,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,EACV,IAAI,EAAE,UAAU,EAAE,oBAAoB,EACvC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACyB,eAAe,EACnD,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,SAAS,CAAC;IACf,WAAW,EAAE,iBAAiB,CAAC;IAC/B,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa;IACb,OAAO,CAAC,EAAE;QACR,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,aAAa;IACb,WAAW,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC1C;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,QAAQ,CAAW;IAE3B,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,aAAa,CAAgB;gBAEzB,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,QAAQ;IAmCzD;;OAEG;IACG,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC;IAkFjF;;OAEG;YACW,OAAO;IAyGrB;;OAEG;YACW,cAAc;IAgE5B;;OAEG;IACH,OAAO,CAAC,eAAe;IAkBvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoBzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAyBxB;;OAEG;IACH,OAAO,CAAC,YAAY;IAIpB;;OAEG;IACH,cAAc,IAAI,WAAW;IAI7B;;OAEG;IACH,iBAAiB,IAAI,cAAc;IAInC;;OAEG;IACH,gBAAgB,IAAI,aAAa;IAIjC;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,OAAO,oBAAoB,EAAE,KAAK,GAAG,IAAI;IAI9D;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAItE;;OAEG;IACH,eAAe;;;;;;IAIf;;OAEG;IACH,aAAa;;;;;IAIb;;OAEG;IACH,OAAO,IAAI,IAAI;CAIhB"}
|