feihong-code 0.5.1 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +486 -405
- package/README.md +59 -0
- package/dist/agent/code-writer.js +6 -3
- package/dist/agent/code-writer.js.map +1 -1
- package/dist/agent/experience.js +105 -70
- package/dist/agent/experience.js.map +1 -1
- package/dist/agent/orchestrator.js +103 -21
- package/dist/agent/orchestrator.js.map +1 -1
- package/dist/agent/parallel-orchestrator.js +6 -3
- package/dist/agent/parallel-orchestrator.js.map +1 -1
- package/dist/agent/planner.js +30 -7
- package/dist/agent/planner.js.map +1 -1
- package/dist/agent/prompts.js +27 -8
- package/dist/agent/prompts.js.map +1 -1
- package/dist/agent/self-heal.js +43 -13
- package/dist/agent/self-heal.js.map +1 -1
- package/dist/cli/repl.js +10 -9
- package/dist/cli/repl.js.map +1 -1
- package/dist/cli/run.js +39 -37
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/version.js +1 -1
- package/dist/enterprise/audit.js +70 -11
- package/dist/enterprise/audit.js.map +1 -1
- package/dist/models/model-router.js +83 -23
- package/dist/models/model-router.js.map +1 -1
- package/dist/models/model.dto.js +25 -3
- package/dist/models/model.dto.js.map +1 -1
- package/dist/models/providers/ollama.provider.js +12 -0
- package/dist/models/providers/ollama.provider.js.map +1 -1
- package/dist/models/providers/openai-compatible.provider.js +14 -1
- package/dist/models/providers/openai-compatible.provider.js.map +1 -1
- package/dist/self-evolve/hook.js +2 -2
- package/dist/self-evolve/hook.js.map +1 -1
- package/dist/self-evolve/hook.ts +80 -0
- package/dist/self-evolve/manager.d.ts +8 -0
- package/dist/self-evolve/manager.js +401 -0
- package/dist/shared/concurrency.js +80 -0
- package/dist/shared/concurrency.js.map +1 -0
- package/dist/shared/errors.js +6 -2
- package/dist/shared/errors.js.map +1 -1
- package/dist/shared/secure-store.js +117 -0
- package/dist/shared/secure-store.js.map +1 -0
- package/dist/tools/mcp/mcp-client.js +35 -13
- package/dist/tools/mcp/mcp-client.js.map +1 -1
- package/dist/tools/shell/exec.js +47 -3
- package/dist/tools/shell/exec.js.map +1 -1
- package/dist/tools/shell/run-shell.tool.js +33 -6
- package/dist/tools/shell/run-shell.tool.js.map +1 -1
- package/dist/tools/tool.registry.js +32 -0
- package/dist/tools/tool.registry.js.map +1 -1
- package/dist/web/auth.js +143 -7
- package/dist/web/auth.js.map +1 -1
- package/dist/web/public/css/style.css +1546 -0
- package/dist/web/public/index.html +806 -3253
- package/dist/web/public/js/api.js +309 -0
- package/dist/web/public/js/app.js +1483 -0
- package/dist/web/public/js/ui.js +764 -0
- package/dist/web/public/js/utils.js +214 -0
- package/dist/web/server.js +224 -77
- package/dist/web/server.js.map +1 -1
- package/dist/web/task-queue.js +140 -14
- package/dist/web/task-queue.js.map +1 -1
- package/docs/App/344/275/277/347/224/250/350/257/264/346/230/216/344/271/246.md +299 -0
- package/docs/App/346/212/200/346/234/257/350/257/264/346/230/216/344/271/246.md +554 -0
- package/docs/SELF-EVOLVE-GUIDE.md +313 -0
- package/docs/error-codes.md +198 -0
- package/docs/screenshots/cli-demo.png +0 -0
- package/docs/screenshots/feature-comparison.png +0 -0
- package/docs/screenshots/web-console.png +0 -0
- package/docs//351/241/265/351/235/242/345/212/237/350/203/275/345/244/215/347/233/230/344/270/216/345/206/222/347/203/237/346/265/213/350/257/225/346/212/245/345/221/212.html +117 -0
- package/package.json +9 -15
- package/tool-schema.json +198 -127
- package/dist/web/public/index.html.tmp +0 -3117
- package/dist/web/public/index_new.html +0 -3196
package/README.md
CHANGED
|
@@ -1,5 +1,58 @@
|
|
|
1
1
|
> **English / 英文文档**:[README_EN.md](README_EN.md) · [FAQ (English)](FAQ_EN.md)
|
|
2
2
|
|
|
3
|
+
<!-- Schema.org JSON-LD for GEO optimization -->
|
|
4
|
+
<script type="application/ld+json">
|
|
5
|
+
{
|
|
6
|
+
"@context": "https://schema.org",
|
|
7
|
+
"@type": "SoftwareSourceCode",
|
|
8
|
+
"name": "飞虹 Code (fhcode)",
|
|
9
|
+
"description": "终端 AI 编程智能体,对标 Meta Muse Code。多模型路由、企业级 RBAC/审计/多租户、全自动 SWE Agent、离线私有化。支持 DeepSeek/通义/Ollama/OpenAI 兼容网关。",
|
|
10
|
+
"url": "https://github.com/wch887292/feihong-code",
|
|
11
|
+
"license": "https://opensource.org/licenses/MIT",
|
|
12
|
+
"programmingLanguage": {
|
|
13
|
+
"@type": "ProgrammingLanguage",
|
|
14
|
+
"name": "TypeScript"
|
|
15
|
+
},
|
|
16
|
+
"operatingSystem": "Cross-platform (Windows, Linux, macOS)",
|
|
17
|
+
"softwareVersion": "0.6.0",
|
|
18
|
+
"dateCreated": "2026-08-12",
|
|
19
|
+
"datePublished": "2026-08-22",
|
|
20
|
+
"author": {
|
|
21
|
+
"@type": "Organization",
|
|
22
|
+
"name": "晋江市飞虹智科技企业管理有限公司",
|
|
23
|
+
"url": "https://www.klai.top"
|
|
24
|
+
},
|
|
25
|
+
"developer": {
|
|
26
|
+
"@type": "Organization",
|
|
27
|
+
"name": "飞扬企源研发中心",
|
|
28
|
+
"url": "https://www.klai.top"
|
|
29
|
+
},
|
|
30
|
+
"keywords": [
|
|
31
|
+
"AI Agent", "SWE Agent", "CLI", "多模型路由", "DeepSeek", "Ollama",
|
|
32
|
+
"企业级权限", "RBAC", "审计链", "多租户", "自我进化", "自愈循环",
|
|
33
|
+
"代码生成", "typescript", "nodejs", "open source"
|
|
34
|
+
],
|
|
35
|
+
"sameAs": [
|
|
36
|
+
"https://www.npmjs.com/package/feihong-code",
|
|
37
|
+
"https://www.klai.top/opensource.html"
|
|
38
|
+
],
|
|
39
|
+
"featureList": [
|
|
40
|
+
"M0-M9.1 全功能里程碑",
|
|
41
|
+
"多模型路由 (DeepSeek/通义/Ollama/OpenAI)",
|
|
42
|
+
"企业级 RBAC 权限矩阵",
|
|
43
|
+
"防篡改审计哈希链",
|
|
44
|
+
"多租户物理隔离",
|
|
45
|
+
"配额成本熔断",
|
|
46
|
+
"自我进化与自愈循环",
|
|
47
|
+
"上下文智能压缩",
|
|
48
|
+
"多子代理并行 (git worktree)",
|
|
49
|
+
"Web 管理控制台 (BETA)",
|
|
50
|
+
"全自动 SWE Agent",
|
|
51
|
+
"离线私有化部署"
|
|
52
|
+
]
|
|
53
|
+
}
|
|
54
|
+
</script>
|
|
55
|
+
|
|
3
56
|
# 飞虹 Code(fhcode)
|
|
4
57
|
|
|
5
58
|
> **终端 AI 编程智能体** · 对标 Meta Muse Code · 全功能 M0→M9.1 完成 · 企业级 RBAC/审计/SWE Agent
|
|
@@ -93,6 +146,12 @@ export FH_ROLE=developer
|
|
|
93
146
|
|
|
94
147
|
> 最适合:**数据不出内网**、需要**企业权限审计**、希望**混合调度多家大模型**的团队与个人开发者。
|
|
95
148
|
|
|
149
|
+
### 📸 产品截图
|
|
150
|
+
|
|
151
|
+
| CLI 终端 | Web 控制台 | 功能对比 |
|
|
152
|
+
|---------|-----------|---------|
|
|
153
|
+
|  |  |  |
|
|
154
|
+
|
|
96
155
|
## 二、核心特性
|
|
97
156
|
|
|
98
157
|
### 🔥 主要亮点
|
|
@@ -71,7 +71,8 @@ class CodeWriter {
|
|
|
71
71
|
}
|
|
72
72
|
code = result.content;
|
|
73
73
|
if (template === 'api-route') {
|
|
74
|
-
|
|
74
|
+
// Windows 文件名不含 ':',将路径段中非法字符替换为 '-'
|
|
75
|
+
filename = params.path.replace(/^\//, '').replace(/[^a-zA-Z0-9-]/g, '-').replace(/-+/g, '-').replace(/-$/, '') + '.ts';
|
|
75
76
|
}
|
|
76
77
|
else if (template === 'model') {
|
|
77
78
|
filename = params.name + '.ts';
|
|
@@ -258,9 +259,11 @@ class CodeWriter {
|
|
|
258
259
|
*/
|
|
259
260
|
issueToSafeFix(issue) {
|
|
260
261
|
if (/硬编码|密码|密钥|secret|token|api[_-]?key/i.test(issue.message)) {
|
|
262
|
+
// 匹配变量名含敏感关键词(password/secret/token/apiKey)且赋值为字符串字面量的模式
|
|
263
|
+
// 例如:const dbPassword = "password-abc-123"; 或 const apiKey = 'sk-123';
|
|
261
264
|
return {
|
|
262
|
-
pattern: /([
|
|
263
|
-
replacement: 'process.env.FH_SECRET',
|
|
265
|
+
pattern: /(\w*[Pp]assword\w*|\w*[Ss]ecret\w*|\w*[Tt]oken\w*|\w*[Aa][Pp][Ii]?\w*[Kk]ey\w*)\s*=\s*(['"`])([^'"`]+)\2/gi,
|
|
266
|
+
replacement: '$1 = process.env.FH_SECRET',
|
|
264
267
|
};
|
|
265
268
|
}
|
|
266
269
|
if (/sql/i.test(issue.message)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-writer.js","sourceRoot":"","sources":["../../src/agent/code-writer.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"code-writer.js","sourceRoot":"","sources":["../../src/agent/code-writer.ts"],"names":[],"mappings":"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"}
|
package/dist/agent/experience.js
CHANGED
|
@@ -26,6 +26,27 @@ const fs_1 = require("fs");
|
|
|
26
26
|
const path_1 = require("path");
|
|
27
27
|
const logger_1 = require("../shared/logger");
|
|
28
28
|
const self_heal_1 = require("./self-heal");
|
|
29
|
+
/**
|
|
30
|
+
* 文件级 Promise 锁:防止两个 run 同时完成时 upsertExperience 互相覆盖。
|
|
31
|
+
* 同一 experiences.jsonl 路径的写入串行化,不同路径互不阻塞。
|
|
32
|
+
*/
|
|
33
|
+
const fileLocks = new Map();
|
|
34
|
+
async function withFileLock(filePath, fn) {
|
|
35
|
+
const prev = fileLocks.get(filePath) ?? Promise.resolve();
|
|
36
|
+
let release;
|
|
37
|
+
const next = new Promise((resolve) => { release = resolve; });
|
|
38
|
+
fileLocks.set(filePath, prev.then(() => next, () => next));
|
|
39
|
+
try {
|
|
40
|
+
await prev;
|
|
41
|
+
return await fn();
|
|
42
|
+
}
|
|
43
|
+
finally {
|
|
44
|
+
release();
|
|
45
|
+
// 锁队列空时清理 Map 条目,避免内存泄漏
|
|
46
|
+
if (fileLocks.get(filePath) === next)
|
|
47
|
+
fileLocks.delete(filePath);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
29
50
|
/** 稳定短哈希(用于经验去重 id) */
|
|
30
51
|
function shortHash(s) {
|
|
31
52
|
let h = 5381;
|
|
@@ -98,18 +119,27 @@ const EXTRACTORS = [
|
|
|
98
119
|
];
|
|
99
120
|
function extractExperience(messages, runId) {
|
|
100
121
|
const experiences = [];
|
|
122
|
+
// 通过 toolCallId 精确关联工具调用与结果,替代脆弱的顺序匹配
|
|
123
|
+
const toolCallMap = new Map();
|
|
101
124
|
const toolCalls = [];
|
|
102
|
-
// 提取工具调用序列及成败
|
|
103
125
|
for (const msg of messages) {
|
|
104
126
|
if (msg.role === 'assistant' && msg.toolCalls) {
|
|
105
127
|
for (const tc of msg.toolCalls) {
|
|
106
|
-
|
|
128
|
+
const entry = { name: tc.name, args: tc.arguments, success: true };
|
|
129
|
+
toolCalls.push(entry);
|
|
130
|
+
if (tc.id)
|
|
131
|
+
toolCallMap.set(tc.id, entry);
|
|
107
132
|
}
|
|
108
133
|
}
|
|
109
134
|
if (msg.role === 'tool') {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
135
|
+
// 优先通过 toolCallId 精确匹配;无 id 时回退到最后一个调用(兼容旧数据)
|
|
136
|
+
const matched = msg.toolCallId ? toolCallMap.get(msg.toolCallId) : toolCalls[toolCalls.length - 1];
|
|
137
|
+
if (matched) {
|
|
138
|
+
const content = msg.content || '';
|
|
139
|
+
// 工具失败标记:内容以"错误:"开头,或包含 exit code 非 0
|
|
140
|
+
if (content.startsWith('错误:') || /exit code [1-9]/.test(content)) {
|
|
141
|
+
matched.success = false;
|
|
142
|
+
}
|
|
113
143
|
}
|
|
114
144
|
}
|
|
115
145
|
}
|
|
@@ -148,50 +178,53 @@ async function saveExperience(experienceDir, experience) {
|
|
|
148
178
|
*/
|
|
149
179
|
async function upsertExperience(experienceDir, experience) {
|
|
150
180
|
const file = (0, path_1.join)(experienceDir, 'experiences.jsonl');
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
const
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
181
|
+
// 文件锁:防止并发 run 同时读写导致互相覆盖
|
|
182
|
+
await withFileLock(file, async () => {
|
|
183
|
+
if (!(0, fs_1.existsSync)(file)) {
|
|
184
|
+
await saveExperience(experienceDir, experience);
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
try {
|
|
188
|
+
const content = await (0, promises_1.readFile)(file, 'utf8');
|
|
189
|
+
const lines = content.split('\n').filter(Boolean);
|
|
190
|
+
let merged = false;
|
|
191
|
+
const out = [];
|
|
192
|
+
for (const line of lines) {
|
|
193
|
+
try {
|
|
194
|
+
const e = JSON.parse(line);
|
|
195
|
+
if (e.id === experience.id) {
|
|
196
|
+
const prev = e.metadata.sessionCount;
|
|
197
|
+
const mergedExp = {
|
|
198
|
+
...e,
|
|
199
|
+
content: experience.content.length >= e.content.length ? experience.content : e.content,
|
|
200
|
+
metadata: {
|
|
201
|
+
sessionCount: prev + 1,
|
|
202
|
+
successRate: (e.metadata.successRate * prev + experience.metadata.successRate) / (prev + 1),
|
|
203
|
+
tags: [...new Set([...e.metadata.tags, ...experience.metadata.tags])],
|
|
204
|
+
createdAt: e.metadata.createdAt,
|
|
205
|
+
lastUsedAt: new Date().toISOString(),
|
|
206
|
+
},
|
|
207
|
+
};
|
|
208
|
+
out.push(JSON.stringify(mergedExp));
|
|
209
|
+
merged = true;
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
out.push(line);
|
|
213
|
+
}
|
|
178
214
|
}
|
|
179
|
-
|
|
215
|
+
catch {
|
|
180
216
|
out.push(line);
|
|
181
217
|
}
|
|
182
218
|
}
|
|
183
|
-
|
|
184
|
-
out.push(
|
|
185
|
-
|
|
219
|
+
if (!merged)
|
|
220
|
+
out.push(JSON.stringify(experience));
|
|
221
|
+
await (0, promises_1.writeFile)(file, out.join('\n') + '\n', 'utf8');
|
|
222
|
+
logger_1.logger.info('experience upserted', { id: experience.id, merged, type: experience.type });
|
|
186
223
|
}
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
}
|
|
192
|
-
catch {
|
|
193
|
-
await saveExperience(experienceDir, experience);
|
|
194
|
-
}
|
|
224
|
+
catch {
|
|
225
|
+
await saveExperience(experienceDir, experience);
|
|
226
|
+
}
|
|
227
|
+
});
|
|
195
228
|
}
|
|
196
229
|
/** 关键词分词的轻量实现(用于检索打分) */
|
|
197
230
|
function tokenize(s) {
|
|
@@ -282,33 +315,35 @@ async function updateExperienceUsage(experienceDir, experienceId) {
|
|
|
282
315
|
const file = (0, path_1.join)(experienceDir, 'experiences.jsonl');
|
|
283
316
|
if (!(0, fs_1.existsSync)(file))
|
|
284
317
|
return;
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
318
|
+
await withFileLock(file, async () => {
|
|
319
|
+
try {
|
|
320
|
+
const content = await (0, promises_1.readFile)(file, 'utf8');
|
|
321
|
+
const lines = content.split('\n').filter(Boolean);
|
|
322
|
+
const updatedLines = lines.map((line) => {
|
|
323
|
+
try {
|
|
324
|
+
const exp = JSON.parse(line);
|
|
325
|
+
if (exp.id === experienceId) {
|
|
326
|
+
return JSON.stringify({
|
|
327
|
+
...exp,
|
|
328
|
+
metadata: {
|
|
329
|
+
...exp.metadata,
|
|
330
|
+
sessionCount: exp.metadata.sessionCount + 1,
|
|
331
|
+
lastUsedAt: new Date().toISOString(),
|
|
332
|
+
},
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
return line;
|
|
300
336
|
}
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
}
|
|
337
|
+
catch {
|
|
338
|
+
return line;
|
|
339
|
+
}
|
|
340
|
+
});
|
|
341
|
+
await (0, promises_1.writeFile)(file, updatedLines.join('\n') + '\n', 'utf8');
|
|
342
|
+
}
|
|
343
|
+
catch {
|
|
344
|
+
// 静默失败
|
|
345
|
+
}
|
|
346
|
+
});
|
|
312
347
|
}
|
|
313
348
|
/**
|
|
314
349
|
* extractFixPattern:从「自愈成功」的会话中提取可复用修复经验。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"experience.js","sourceRoot":"","sources":["../../src/agent/experience.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"experience.js","sourceRoot":"","sources":["../../src/agent/experience.ts"],"names":[],"mappings":";;AAmEA,sDAEC;AAuED,8CAgDC;AAGD,wCAKC;AAQD,4CA6CC;AAaD,0CA+BC;AAWD,kEAsDC;AAGD,sDAgCC;AAOD,8CAmCC;AAGD,4DAoBC;AAGD,0CAcC;AA3dD;;;;;;;;;;GAUG;AACH,0CAAqE;AACrE,2BAAgC;AAChC,+BAA4B;AAE5B,6CAA0C;AAC1C,2CAA4C;AAE5C;;;GAGG;AACH,MAAM,SAAS,GAAG,IAAI,GAAG,EAA4B,CAAC;AACtD,KAAK,UAAU,YAAY,CAAI,QAAgB,EAAE,EAAoB;IACnE,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAC1D,IAAI,OAAoB,CAAC;IACzB,MAAM,IAAI,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,IAAI,CAAC;QACH,MAAM,IAAI,CAAC;QACX,OAAO,MAAM,EAAE,EAAE,CAAC;IACpB,CAAC;YAAS,CAAC;QACT,OAAO,EAAE,CAAC;QACV,wBAAwB;QACxB,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,IAAI;YAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACnE,CAAC;AACH,CAAC;AAuBD,uBAAuB;AACvB,SAAS,SAAS,CAAC,CAAS;IAC1B,IAAI,CAAC,GAAG,IAAI,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC5E,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAChC,CAAC;AAED,iDAAiD;AACjD,SAAgB,qBAAqB,CAAC,IAAoB,EAAE,GAAW;IACrE,OAAO,OAAO,SAAS,CAAC,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC;AAC9C,CAAC;AAgBD,MAAM,UAAU,GAA0B;IACxC;QACE,uBAAuB;QACvB,GAAG,EAAE,iBAAiB;QACtB,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE;YACjC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;YACtC,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;YAC7D,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC5C,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjE,OAAO;gBACL,EAAE,EAAE,qBAAqB,CAAC,iBAAiB,EAAE,OAAO,CAAC;gBACrD,IAAI,EAAE,iBAAiB;gBACvB,KAAK,EAAE,WAAW,OAAO,EAAE;gBAC3B,OAAO,EAAE,2BAA2B,OAAO,8BAA8B;gBACzE,QAAQ,EAAE,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;aAClG,CAAC;QACJ,CAAC;KACF;IACD;QACE,sCAAsC;QACtC,GAAG,EAAE,eAAe;QACpB,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE;YAC9B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YACrC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;YACrC,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBACvB,MAAM,QAAQ,GAAG,IAAA,yBAAa,EAAC,CAAC,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;gBACjE,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,IAAI,SAAS,CAAC,CAAC;YAClD,CAAC;YACD,MAAM,YAAY,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC;YACrC,OAAO;gBACL,EAAE,EAAE,qBAAqB,CAAC,eAAe,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClE,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,WAAW,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC3C,OAAO,EAAE,kBAAkB,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,wDAAwD;gBAC/H,QAAQ,EAAE,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC;aAClC,CAAC;QACJ,CAAC;KACF;IACD;QACE,2BAA2B;QAC3B,GAAG,EAAE,eAAe;QACpB,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE;YACzC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;YACnC,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;YACjE,OAAO;gBACL,EAAE,EAAE,qBAAqB,CAAC,iBAAiB,EAAE,WAAW,CAAC;gBACzD,IAAI,EAAE,iBAAiB;gBACvB,KAAK,EAAE,eAAe;gBACtB,OAAO,EAAE,4DAA4D;gBACrE,QAAQ,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;aACnD,CAAC;QACJ,CAAC;KACF;CACF,CAAC;AAEF,SAAgB,iBAAiB,CAAC,QAAuB,EAAE,KAAa;IACtE,MAAM,WAAW,GAAiB,EAAE,CAAC;IACrC,sCAAsC;IACtC,MAAM,WAAW,GAAG,IAAI,GAAG,EAA6D,CAAC;IACzF,MAAM,SAAS,GAA6D,EAAE,CAAC;IAE/E,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAC9C,KAAK,MAAM,EAAE,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;gBAC/B,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBACnE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACtB,IAAI,EAAE,CAAC,EAAE;oBAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACxB,8CAA8C;YAC9C,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACnG,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;gBAClC,sCAAsC;gBACtC,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;oBACjE,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC;gBAC1B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,MAAM,GAAG,CAAC,WAAmB,EAAE,IAAc,EAA0B,EAAE,CAAC,CAAC;QAC/E,YAAY,EAAE,CAAC;QACf,WAAW;QACX,IAAI;QACJ,SAAS,EAAE,GAAG;QACd,UAAU,EAAE,GAAG;KAChB,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAChG,MAAM,GAAG,GAAe,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IAE3D,sCAAsC;IACtC,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,GAAG;YAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,yBAAyB;IACzB,KAAK,KAAK,CAAC;IACX,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,qBAAqB;AACd,KAAK,UAAU,cAAc,CAAC,aAAqB,EAAE,UAAsB;IAChF,MAAM,IAAA,gBAAK,EAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,IAAA,WAAI,EAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;IACtD,MAAM,IAAA,qBAAU,EAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;IAClE,eAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;AAChF,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,gBAAgB,CAAC,aAAqB,EAAE,UAAsB;IAClF,MAAM,IAAI,GAAG,IAAA,WAAI,EAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;IACtD,0BAA0B;IAC1B,MAAM,YAAY,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;QAClC,IAAI,CAAC,IAAA,eAAU,EAAC,IAAI,CAAC,EAAE,CAAC;YACtB,MAAM,cAAc,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;YAChD,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAQ,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAClD,IAAI,MAAM,GAAG,KAAK,CAAC;YACnB,MAAM,GAAG,GAAa,EAAE,CAAC;YACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC;oBACH,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAe,CAAC;oBACzC,IAAI,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,EAAE,CAAC;wBAC3B,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;wBACrC,MAAM,SAAS,GAAe;4BAC5B,GAAG,CAAC;4BACJ,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO;4BACvF,QAAQ,EAAE;gCACR,YAAY,EAAE,IAAI,GAAG,CAAC;gCACtB,WAAW,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;gCAC3F,IAAI,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;gCACrE,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,SAAS;gCAC/B,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;6BACrC;yBACF,CAAC;wBACF,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;wBACpC,MAAM,GAAG,IAAI,CAAC;oBAChB,CAAC;yBAAM,CAAC;wBACN,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACjB,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjB,CAAC;YACH,CAAC;YACD,IAAI,CAAC,MAAM;gBAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;YAClD,MAAM,IAAA,oBAAS,EAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;YACrD,eAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3F,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,cAAc,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,yBAAyB;AACzB,SAAS,QAAQ,CAAC,CAAS;IACzB,OAAO,CAAC;SACL,WAAW,EAAE;SACb,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC;SACjC,KAAK,CAAC,KAAK,CAAC;SACZ,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;SAC5B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,4BAA4B;AACrB,KAAK,UAAU,eAAe,CAAC,aAAqB,EAAE,QAAkB;IAC7E,MAAM,IAAI,GAAG,IAAA,WAAI,EAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;IACtD,IAAI,CAAC,IAAA,eAAU,EAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAEjC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAQ,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACzD,MAAM,WAAW,GAAiB,EAAE,CAAC;QAErC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAe,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAC3B,CAAC,EAAE,EAAE,EAAE,CACL,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACtB,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACxB,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CACpD,CAAC;gBACF,IAAI,OAAO;oBAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACrC,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY;YACd,CAAC;QACH,CAAC;QAED,iBAAiB;QACjB,OAAO,WAAW;aACf,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;aAC/D,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAWM,KAAK,UAAU,2BAA2B,CAC/C,aAAqB,EACrB,IAAY,EACZ,OAAwB,EAAE;IAE1B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;IAC9B,MAAM,IAAI,GAAG,IAAA,WAAI,EAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;IACtD,IAAI,CAAC,IAAA,eAAU,EAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAEjC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAErC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAQ,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACzD,MAAM,MAAM,GAA8C,EAAE,CAAC;QAE7D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAe,CAAC;gBAC3C,IAAI,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,OAAO;gBAEjD,OAAO;gBACP,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;gBAC5F,KAAK,IAAI,UAAU,GAAG,CAAC,CAAC;gBAExB,YAAY;gBACZ,IACE,SAAS;oBACT,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAC9F,CAAC;oBACD,KAAK,IAAI,CAAC,CAAC;gBACb,CAAC;gBAED,WAAW;gBACX,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;oBACxB,IAAI,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;wBAAE,KAAK,IAAI,GAAG,CAAC;gBACnG,CAAC;gBAED,uBAAuB;gBACvB,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,UAAU,CAAC;gBACxF,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC;gBAEzC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9B,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QACzC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,qCAAqC;AAC9B,KAAK,UAAU,qBAAqB,CAAC,aAAqB,EAAE,YAAoB;IACrF,MAAM,IAAI,GAAG,IAAA,WAAI,EAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;IACtD,IAAI,CAAC,IAAA,eAAU,EAAC,IAAI,CAAC;QAAE,OAAO;IAE9B,MAAM,YAAY,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;QAClC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAQ,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAClD,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACtC,IAAI,CAAC;oBACH,MAAM,GAAG,GAAe,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACzC,IAAI,GAAG,CAAC,EAAE,KAAK,YAAY,EAAE,CAAC;wBAC5B,OAAO,IAAI,CAAC,SAAS,CAAC;4BACpB,GAAG,GAAG;4BACN,QAAQ,EAAE;gCACR,GAAG,GAAG,CAAC,QAAQ;gCACf,YAAY,EAAE,GAAG,CAAC,QAAQ,CAAC,YAAY,GAAG,CAAC;gCAC3C,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;6BACrC;yBACF,CAAC,CAAC;oBACL,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,MAAM,IAAA,oBAAS,EAAC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;QAChE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,QAAuB;IACvD,IAAI,QAAQ,GAAkB,IAAI,CAAC;IACnC,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7D,IAAI,CAAC,QAAQ;gBAAE,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC;QACtC,CAAC;QACD,IACE,CAAC,CAAC,IAAI,KAAK,WAAW;YACtB,wCAAwC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,EAC9D,CAAC;YACD,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;IACH,CAAC;IACD,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAExC,MAAM,QAAQ,GAAG,IAAA,yBAAa,EAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,QAAQ,EAAE,QAAQ,IAAI,SAAS,CAAC;IACjD,MAAM,GAAG,GAAG,eAAe,QAAQ,EAAE,CAAC;IACtC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,OAAO;QACL,EAAE,EAAE,qBAAqB,CAAC,iBAAiB,EAAE,GAAG,CAAC;QACjD,IAAI,EAAE,iBAAiB;QACvB,KAAK,EAAE,WAAW,QAAQ,EAAE;QAC5B,OAAO,EACL,UAAU,QAAQ,wCAAwC;YAC1D,0BAA0B;QAC5B,QAAQ,EAAE;YACR,YAAY,EAAE,CAAC;YACf,WAAW,EAAE,GAAG;YAChB,IAAI,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC;YACpC,SAAS,EAAE,GAAG;YACd,UAAU,EAAE,GAAG;SAChB;KACF,CAAC;AACJ,CAAC;AAED,oCAAoC;AACpC,SAAgB,wBAAwB,CAAC,WAAyB;IAChE,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAExC,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,iBAAiB,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;IACxG,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC;IAErE,MAAM,KAAK,GAAG;QACZ,6CAA6C;KAC9C,CAAC;IAEF,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC7B,KAAK,MAAM,GAAG,IAAI,OAAO;YAAE,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,KAAK,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5F,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC/B,KAAK,MAAM,GAAG,IAAI,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,KAAK,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3F,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,aAAa;AACN,KAAK,UAAU,eAAe,CAAC,aAAqB;IACzD,MAAM,IAAI,GAAG,IAAA,WAAI,EAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;IACtD,IAAI,CAAC,IAAA,eAAU,EAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAEjC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAQ,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC7C,OAAO,OAAO;aACX,KAAK,CAAC,IAAI,CAAC;aACX,MAAM,CAAC,OAAO,CAAC;aACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAe,CAAC;aAC7C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,GAAG,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACvE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -14,11 +14,15 @@ class Orchestrator {
|
|
|
14
14
|
constructor(deps) {
|
|
15
15
|
this.deps = deps;
|
|
16
16
|
}
|
|
17
|
+
/** 成功工具调用结果缓存:key = toolName + JSON.stringify(args),防止模型重复调用相同工具 */
|
|
18
|
+
toolResultCache = new Map();
|
|
17
19
|
async run(goal, resume) {
|
|
18
20
|
const { router, tools, eventLog, session, cwd, security, approve, persist, guard, maxRetryErrors = 3, contextCompactEvery, experienceDir, } = this.deps;
|
|
19
|
-
const maxIter = this.deps.maxIterations ??
|
|
21
|
+
const maxIter = this.deps.maxIterations ?? 50;
|
|
20
22
|
const maxCost = this.deps.maxCostUsd ?? 0;
|
|
21
23
|
const compactThreshold = (0, context_compactor_1.getCompactionThreshold)({ compactEvery: contextCompactEvery });
|
|
24
|
+
// 每次 run 重置工具结果缓存
|
|
25
|
+
this.toolResultCache.clear();
|
|
22
26
|
let messages;
|
|
23
27
|
let loadedExperiences = [];
|
|
24
28
|
let baselineIterations = 0;
|
|
@@ -77,8 +81,58 @@ class Orchestrator {
|
|
|
77
81
|
if (!resume)
|
|
78
82
|
await emitCheckpoint('running');
|
|
79
83
|
for (; calls < maxIter; calls++) {
|
|
84
|
+
// P9:任务停止——检查外部中断信号,触发即终止编排循环
|
|
85
|
+
if (this.deps.signal?.aborted) {
|
|
86
|
+
await emitCheckpoint('crashed');
|
|
87
|
+
return {
|
|
88
|
+
ok: false,
|
|
89
|
+
finalAnswer: '任务已被用户中断',
|
|
90
|
+
iterations: baselineIterations + calls,
|
|
91
|
+
costUsd: cost,
|
|
92
|
+
logFile: '',
|
|
93
|
+
runId: session.snapshot().runId,
|
|
94
|
+
selfHealed,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
80
97
|
const startTime = Date.now();
|
|
81
|
-
|
|
98
|
+
// P9:模型调用失败轮询重试(应对 429 限流 / 瞬时网络抖动),最多 maxModelRetries 次,指数退避
|
|
99
|
+
let resp;
|
|
100
|
+
let lastChatErr;
|
|
101
|
+
const maxModelRetries = this.deps.maxModelRetries ?? 3;
|
|
102
|
+
for (let attempt = 0; attempt <= maxModelRetries; attempt++) {
|
|
103
|
+
// 重试前再次检查中断信号
|
|
104
|
+
if (this.deps.signal?.aborted) {
|
|
105
|
+
await emitCheckpoint('crashed');
|
|
106
|
+
return {
|
|
107
|
+
ok: false,
|
|
108
|
+
finalAnswer: '任务已被用户中断',
|
|
109
|
+
iterations: baselineIterations + calls,
|
|
110
|
+
costUsd: cost,
|
|
111
|
+
logFile: '',
|
|
112
|
+
runId: session.snapshot().runId,
|
|
113
|
+
selfHealed,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
try {
|
|
117
|
+
resp = await router.chat({ messages, tools: tools.definitions(), temperature: 0, timeoutMs: 180000, signal: this.deps.signal }, this.deps.tags ?? ['code-gen']);
|
|
118
|
+
break; // 成功,跳出重试
|
|
119
|
+
}
|
|
120
|
+
catch (e) {
|
|
121
|
+
lastChatErr = e;
|
|
122
|
+
logger_1.logger.warn('model call failed, will retry', {
|
|
123
|
+
attempt: attempt + 1,
|
|
124
|
+
maxRetries: maxModelRetries,
|
|
125
|
+
error: e instanceof Error ? e.message : String(e),
|
|
126
|
+
});
|
|
127
|
+
if (attempt < maxModelRetries) {
|
|
128
|
+
// 指数退避:1s, 2s, 4s...
|
|
129
|
+
await new Promise((r) => setTimeout(r, 1000 * Math.pow(2, attempt)));
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
if (!resp) {
|
|
134
|
+
throw lastChatErr instanceof Error ? lastChatErr : new Error('模型调用失败');
|
|
135
|
+
}
|
|
82
136
|
const latency = Date.now() - startTime;
|
|
83
137
|
cost += resp.costUsd;
|
|
84
138
|
const msg = resp.message;
|
|
@@ -159,9 +213,12 @@ class Orchestrator {
|
|
|
159
213
|
}
|
|
160
214
|
}
|
|
161
215
|
if (baselineIterations + calls >= maxIter && !finalAnswer) {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
216
|
+
const hint = touchedFiles.length > 0
|
|
217
|
+
? `可在对话区继续发送"继续"二字,让任务以 resume 方式接着跑(已生成/修改的文件位于工作区)。`
|
|
218
|
+
: `可点击「继续」按钮让任务接着执行,或在对话区细化任务目标重新提交。`;
|
|
219
|
+
finalAnswer = `已达到最大迭代次数 ${maxIter} 轮,任务可能未完全完成。${hint}`;
|
|
220
|
+
await eventLog.append('error', { reason: 'max-iterations-reached', maxIter, touchedFiles });
|
|
221
|
+
logger_1.logger.warn('orchestrator reached max iterations', { runId: session.runId, maxIter });
|
|
165
222
|
}
|
|
166
223
|
// M6: 提取经验并以 upsert 强化写入(同一模式多次验证会累积权重,而非无限追加)
|
|
167
224
|
let experiencesExtracted = 0;
|
|
@@ -237,19 +294,35 @@ class Orchestrator {
|
|
|
237
294
|
}
|
|
238
295
|
await ctx.eventLog.append('tool.call', { name: tc.name, args: tc.arguments });
|
|
239
296
|
this.deps.onEvent?.({ type: 'tool.call', name: tc.name, args: tc.arguments });
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
name: tc.name,
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
297
|
+
// 去重检测:相同工具+相同参数如果之前已成功,直接返回缓存结果并警告模型不要重复调用
|
|
298
|
+
const cacheKey = tc.name + '::' + JSON.stringify(tc.arguments ?? {});
|
|
299
|
+
const cached = this.toolResultCache.get(cacheKey);
|
|
300
|
+
let result;
|
|
301
|
+
if (cached && cached.ok) {
|
|
302
|
+
const warning = `[重复调用警告] 工具 ${tc.name} 用相同参数之前已成功执行过,以下是缓存的结果。请不要重复调用相同工具,直接利用已有信息推进任务。\n`;
|
|
303
|
+
result = { ok: true, output: warning + cached.output };
|
|
304
|
+
await ctx.eventLog.append('tool.result', { name: tc.name, ok: true, output: result.output.slice(0, 500) });
|
|
305
|
+
this.deps.onEvent?.({ type: 'tool.result', name: tc.name, ok: true, output: result.output.slice(0, 500) });
|
|
306
|
+
}
|
|
307
|
+
else {
|
|
308
|
+
result = await ctx.tools.execute(tc.name, tc.arguments, {
|
|
309
|
+
runId: ctx.session.runId,
|
|
310
|
+
cwd: ctx.cwd,
|
|
311
|
+
security: ctx.security,
|
|
312
|
+
approve: ctx.approve,
|
|
313
|
+
guard: ctx.guard,
|
|
314
|
+
});
|
|
315
|
+
// 成功结果写入缓存(失败的不缓存,允许模型重试修复)
|
|
316
|
+
if (result.ok) {
|
|
317
|
+
this.toolResultCache.set(cacheKey, { ok: result.ok, output: result.output, error: result.error });
|
|
318
|
+
}
|
|
319
|
+
await ctx.eventLog.append('tool.result', {
|
|
320
|
+
name: tc.name,
|
|
321
|
+
ok: result.ok,
|
|
322
|
+
output: result.output.slice(0, 500),
|
|
323
|
+
});
|
|
324
|
+
this.deps.onEvent?.({ type: 'tool.result', name: tc.name, ok: result.ok, output: result.output.slice(0, 500) });
|
|
325
|
+
}
|
|
253
326
|
const content = result.ok ? result.output : `错误: ${result.error}`;
|
|
254
327
|
const toolMsg = { role: 'tool', content, toolCallId: tc.id };
|
|
255
328
|
messages.push(toolMsg);
|
|
@@ -267,9 +340,18 @@ class Orchestrator {
|
|
|
267
340
|
return { signal: 'none', messages, consecutiveErrors: input.consecutiveErrors, selfHealed: false, finalAnswer: '' };
|
|
268
341
|
}
|
|
269
342
|
const lastToolMsg = messages[messages.length - 1];
|
|
343
|
+
// classifyError 现在对未匹配错误返回 'unknown' 兜底,永不返回 null,
|
|
344
|
+
// 确保达到 maxRetryErrors 时 failed 分支一定能 break,不会被绕过。
|
|
270
345
|
const errorAnalysis = (0, self_heal_1.classifyError)(lastToolMsg.content || '', '');
|
|
271
|
-
|
|
272
|
-
|
|
346
|
+
// 从消息历史中提取最后一次工具调用(工具名+参数),用于生成更精准的反思提示
|
|
347
|
+
let lastToolCall;
|
|
348
|
+
for (let i = messages.length - 2; i >= 0; i--) {
|
|
349
|
+
const m = messages[i];
|
|
350
|
+
if (m.role === 'assistant' && m.toolCalls && m.toolCalls.length > 0) {
|
|
351
|
+
const tc = m.toolCalls[m.toolCalls.length - 1];
|
|
352
|
+
lastToolCall = { name: tc.name, args: tc.arguments ?? {} };
|
|
353
|
+
break;
|
|
354
|
+
}
|
|
273
355
|
}
|
|
274
356
|
input.errorHistory.push(errorAnalysis);
|
|
275
357
|
await (0, self_heal_1.logRecoveryAttempt)(input.eventLog, input.iteration, errorAnalysis, false);
|
|
@@ -281,7 +363,7 @@ class Orchestrator {
|
|
|
281
363
|
return { signal: 'break', messages, consecutiveErrors, selfHealed: false, finalAnswer };
|
|
282
364
|
}
|
|
283
365
|
const selfHealed = true;
|
|
284
|
-
const newMessages = (0, self_heal_1.injectReflection)(messages, errorAnalysis, input.goal);
|
|
366
|
+
const newMessages = (0, self_heal_1.injectReflection)(messages, errorAnalysis, input.goal, lastToolCall);
|
|
285
367
|
await input.eventLog.append('self-heal', { category: errorAnalysis.category, iteration: input.iteration });
|
|
286
368
|
this.deps.onEvent?.({ type: 'self-heal', category: errorAnalysis.category, iteration: input.iteration });
|
|
287
369
|
logger_1.logger.info('self-heal: injected reflection', { iteration: input.iteration, category: errorAnalysis.category });
|