aws-runtime-bridge 1.9.60 → 1.9.61
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/routes/sub-agents.js +12 -23
- package/package/acode/dist/fs-utils.d.ts +9 -0
- package/package/acode/dist/fs-utils.d.ts.map +1 -1
- package/package/acode/dist/fs-utils.js +22 -1
- package/package/acode/dist/sub-agent-manager.d.ts +36 -0
- package/package/acode/dist/sub-agent-manager.d.ts.map +1 -1
- package/package/acode/dist/sub-agent-manager.js +141 -100
- package/package/acode/dist/sub-agent-store.d.ts +10 -1
- package/package/acode/dist/sub-agent-store.d.ts.map +1 -1
- package/package/acode/dist/sub-agent-store.js +10 -1
- package/package/aws-client-agent-mcp/dist/agent-client.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/agent-client.js +5 -1
- package/package/aws-client-agent-mcp/dist/agent-client.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/logger.d.ts +12 -2
- package/package/aws-client-agent-mcp/dist/logger.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/logger.js +53 -12
- package/package/aws-client-agent-mcp/dist/logger.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/logger.test.js +5 -8
- package/package/aws-client-agent-mcp/dist/logger.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -30,30 +30,15 @@ subAgentsRouter.get("/sub-agents/:agentId", validateToken, async (req, res) => {
|
|
|
30
30
|
return;
|
|
31
31
|
}
|
|
32
32
|
try {
|
|
33
|
-
//
|
|
34
|
-
|
|
35
|
-
//
|
|
33
|
+
// ★ 内存态是运行态的唯一真相源:pending/running 只信 SubAgentManager。
|
|
34
|
+
// 磁盘 store 只做历史归档,不再参与运行态判定。
|
|
35
|
+
// 之前在列表接口里做"磁盘 running/pending + 内存无 → 改写 failed"的兜底,
|
|
36
|
+
// 会把"终态写入超时/EPERM 失败但内存已 completed"的 sub-agent 误判为 failed,
|
|
37
|
+
// 覆盖真实结果。现在直接从 history 过滤掉这类残留,磁盘不写、前端不展示,
|
|
38
|
+
// 由 bridge 启动时的 reconcileZombies() 一次性清理(已存在逻辑)。
|
|
39
|
+
const allRecords = await subAgentStore.list(agentId);
|
|
36
40
|
const runningEntries = subAgentManager.listActiveByParent(agentId);
|
|
37
41
|
const runningIds = new Set(runningEntries.map((e) => e.subId));
|
|
38
|
-
// 修正数据不一致:持久化记录中 status 为 running/pending 但不在内存活跃列表中的条目,
|
|
39
|
-
// 说明 store 状态未同步(如 store.updateStatus 超时失败、或 bridge 重启后 entry 丢失)。
|
|
40
|
-
// 修正为 failed 并重新读取,避免前端"历史"列表中混入异常的 running 条目。
|
|
41
|
-
let dirty = false;
|
|
42
|
-
for (const record of allRecords) {
|
|
43
|
-
if ((record.status === "running" || record.status === "pending") && !runningIds.has(record.subId)) {
|
|
44
|
-
dirty = true;
|
|
45
|
-
await subAgentStore.updateStatus(agentId, record.subId, {
|
|
46
|
-
status: "failed",
|
|
47
|
-
errorMessage: "sub-agent status mismatch: store says running/pending but not in memory",
|
|
48
|
-
endedAt: record.startedAt,
|
|
49
|
-
durationMs: 0,
|
|
50
|
-
contextSnapshot: undefined,
|
|
51
|
-
}).catch(() => { });
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
if (dirty) {
|
|
55
|
-
allRecords = await subAgentStore.list(agentId);
|
|
56
|
-
}
|
|
57
42
|
// 合并:运行中的用 manager 的实时状态覆盖 store 的记录
|
|
58
43
|
const running = runningEntries.map((e) => ({
|
|
59
44
|
subId: e.subId,
|
|
@@ -67,7 +52,11 @@ subAgentsRouter.get("/sub-agents/:agentId", validateToken, async (req, res) => {
|
|
|
67
52
|
contextSnapshot: e.contextSnapshot,
|
|
68
53
|
availableTools: e.availableTools,
|
|
69
54
|
}));
|
|
70
|
-
|
|
55
|
+
// history 过滤逻辑:
|
|
56
|
+
// - runningIds 中的(运行中)已挪到 running 数组,不重复进 history
|
|
57
|
+
// - 磁盘上残留的 running/pending(终态写入失败/进程重启残留)直接丢弃,
|
|
58
|
+
// 不展示为 failed——真实状态未知,不能编造错误信息
|
|
59
|
+
const history = allRecords.filter((r) => !runningIds.has(r.subId) && r.status !== "running" && r.status !== "pending");
|
|
71
60
|
const doc = await subAgentStore.read(agentId);
|
|
72
61
|
res.json({
|
|
73
62
|
ok: true,
|
|
@@ -4,6 +4,15 @@
|
|
|
4
4
|
*
|
|
5
5
|
* 其他错误(ENOENT 源不存在、ENOSPC 磁盘满等)直接抛出,不重试。
|
|
6
6
|
*
|
|
7
|
+
* ★ Windows EPERM 终极兜底:若全部重试仍失败(target 持续被 reader 持有 fd),
|
|
8
|
+
* fallback 到 `fs.copyFile(src, dest) + fs.unlink(src)`。
|
|
9
|
+
* - `fs.copyFile` 在 Windows 上走 `CopyFileEx` API,允许覆盖被其他进程打开的
|
|
10
|
+
* target(只要 reader 共享模式允许读,fs.readFile 默认如此),能绕开 EPERM。
|
|
11
|
+
* - 代价是失去原子性:写入过程中崩溃可能产生半成品 dest。
|
|
12
|
+
* 但 sub-agent 记录非关键数据,配合 SubAgentStore.read() 的
|
|
13
|
+
* `SyntaxError → empty` 容错已够用(最坏情况是列表暂时少一条历史)。
|
|
14
|
+
* - POSIX 上 rename 重试一般不会失败(原子操作),fallback 路径极少触发。
|
|
15
|
+
*
|
|
7
16
|
* @param src 源文件路径(通常是 `.tmp` 临时文件)
|
|
8
17
|
* @param dest 目标文件路径
|
|
9
18
|
* @returns 成功时 resolve,全部重试都失败时 reject 最后一次错误
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs-utils.d.ts","sourceRoot":"","sources":["../src/fs-utils.ts"],"names":[],"mappings":"AA6BA
|
|
1
|
+
{"version":3,"file":"fs-utils.d.ts","sourceRoot":"","sources":["../src/fs-utils.ts"],"names":[],"mappings":"AA6BA;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgC9E"}
|
|
@@ -29,6 +29,15 @@ const RENAME_BACKOFF_MS = [50, 150, 400, 800];
|
|
|
29
29
|
*
|
|
30
30
|
* 其他错误(ENOENT 源不存在、ENOSPC 磁盘满等)直接抛出,不重试。
|
|
31
31
|
*
|
|
32
|
+
* ★ Windows EPERM 终极兜底:若全部重试仍失败(target 持续被 reader 持有 fd),
|
|
33
|
+
* fallback 到 `fs.copyFile(src, dest) + fs.unlink(src)`。
|
|
34
|
+
* - `fs.copyFile` 在 Windows 上走 `CopyFileEx` API,允许覆盖被其他进程打开的
|
|
35
|
+
* target(只要 reader 共享模式允许读,fs.readFile 默认如此),能绕开 EPERM。
|
|
36
|
+
* - 代价是失去原子性:写入过程中崩溃可能产生半成品 dest。
|
|
37
|
+
* 但 sub-agent 记录非关键数据,配合 SubAgentStore.read() 的
|
|
38
|
+
* `SyntaxError → empty` 容错已够用(最坏情况是列表暂时少一条历史)。
|
|
39
|
+
* - POSIX 上 rename 重试一般不会失败(原子操作),fallback 路径极少触发。
|
|
40
|
+
*
|
|
32
41
|
* @param src 源文件路径(通常是 `.tmp` 临时文件)
|
|
33
42
|
* @param dest 目标文件路径
|
|
34
43
|
* @returns 成功时 resolve,全部重试都失败时 reject 最后一次错误
|
|
@@ -54,5 +63,17 @@ export async function renameWithRetry(src, dest) {
|
|
|
54
63
|
}
|
|
55
64
|
}
|
|
56
65
|
}
|
|
57
|
-
|
|
66
|
+
// ★ rename 重试都失败(Windows target 持续被持有 fd),fallback 到 copyFile + unlink。
|
|
67
|
+
// copyFile 不要求 target 未被打开,能绕开 EPERM/EBUSY/EACCES。
|
|
68
|
+
try {
|
|
69
|
+
await fs.copyFile(src, dest);
|
|
70
|
+
await fs.unlink(src).catch(() => {
|
|
71
|
+
/* src 删除失败不影响 dest 已写入,下次写会覆盖 tmp */
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
catch (copyErr) {
|
|
75
|
+
// copyFile 也失败(极少见,如磁盘满/权限问题),抛出最后一次 rename 错误
|
|
76
|
+
// (保持原有错误语义,调用方按 RENAME_RETRYABLE_CODES 判断)
|
|
77
|
+
throw lastErr;
|
|
78
|
+
}
|
|
58
79
|
}
|
|
@@ -125,6 +125,16 @@ export declare class SubAgentManager {
|
|
|
125
125
|
* null 表示当前没有等待者。
|
|
126
126
|
*/
|
|
127
127
|
private completionWaiterResolve;
|
|
128
|
+
/**
|
|
129
|
+
* 正在执行的异步终态落盘 Promise 集合。
|
|
130
|
+
*
|
|
131
|
+
* 用于:
|
|
132
|
+
* - 测试等待异步落盘完成后再读取 store 验证状态
|
|
133
|
+
* - dispose 时确保所有落盘完成后再清理(避免文件句柄占用导致目录非空)
|
|
134
|
+
*
|
|
135
|
+
* persistFinalStatus 启动时入集,resolve/reject 后出集。
|
|
136
|
+
*/
|
|
137
|
+
private readonly pendingPersists;
|
|
128
138
|
constructor(opts: SubAgentManagerOptions);
|
|
129
139
|
/** 创建 sub-agent(不立即运行;调 start 才执行) */
|
|
130
140
|
spawn(opts: SubAgentSpawnOptions): Promise<string>;
|
|
@@ -239,6 +249,32 @@ export declare class SubAgentManager {
|
|
|
239
249
|
subscribe(subId: string, cb: EventSubscriber): () => void;
|
|
240
250
|
/** 清理所有运行中的 sub-agent(bridge 关闭时调用) */
|
|
241
251
|
dispose(): Promise<void>;
|
|
252
|
+
/**
|
|
253
|
+
* 异步落盘终态记录(指数退避重试),不阻塞主流程。
|
|
254
|
+
*
|
|
255
|
+
* 设计要点:
|
|
256
|
+
* - 内存态已是终态(completed/failed/cancelled),落盘只做历史归档
|
|
257
|
+
* - 落盘失败不回滚内存态,前端看到的是真实终态
|
|
258
|
+
* - 重试覆盖瞬时错误:Windows fs.rename EPERM、writeChain 拥堵、磁盘瞬时不可用
|
|
259
|
+
* - 全部重试失败后仅打日志,下次 bridge 启动时 reconcileZombies 会清理残留
|
|
260
|
+
*
|
|
261
|
+
* 调用方约定:必须用 `void this.persistFinalStatus(...)` 触发,不 await。
|
|
262
|
+
* entry.completionResolve 与 enqueueCompletion 应在此调用之前完成,
|
|
263
|
+
* 保证主流程不被落盘 IO 阻塞。
|
|
264
|
+
*
|
|
265
|
+
* Promise 加入 pendingPersists 集合,供 flushPendingPersists / dispose 等待。
|
|
266
|
+
*/
|
|
267
|
+
private persistFinalStatus;
|
|
268
|
+
/**
|
|
269
|
+
* 等待所有正在执行的异步终态落盘完成。
|
|
270
|
+
*
|
|
271
|
+
* 主要用途:
|
|
272
|
+
* - 测试在终态后读取 store 前调用,确保落盘已完成
|
|
273
|
+
* - dispose 前调用,避免文件句柄占用导致目录清理失败
|
|
274
|
+
*
|
|
275
|
+
* 生产环境一般不需要调用——落盘失败不影响内存态正确性。
|
|
276
|
+
*/
|
|
277
|
+
flushPendingPersists(): Promise<void>;
|
|
242
278
|
/**
|
|
243
279
|
* 将子 agent 终态事件入队并通知等待者。
|
|
244
280
|
* 主流程:构建通知对象 -> 入队 completionQueue -> 若有 waitForAnyCompletion 等待者则立即 resolve。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sub-agent-manager.d.ts","sourceRoot":"","sources":["../src/sub-agent-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EACV,uBAAuB,EACvB,aAAa,EAEb,cAAc,EACd,YAAY,EACb,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"sub-agent-manager.d.ts","sourceRoot":"","sources":["../src/sub-agent-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,8 +28,23 @@ const SUBAGENT_RUNNING_ZOMBIE_MS = 12 * 60 * 1000;
|
|
|
28
28
|
* (磁盘 IO 慢、tmp 文件 rename 卡住、文件系统问题等),后续所有 write 都会
|
|
29
29
|
* 被永久阻塞,导致 sub-agent 卡在 store.updateStatus 处无法继续 start()。
|
|
30
30
|
* 5s 超时足够覆盖正常文件 IO(通常 < 100ms),超时后放弃落盘(不影响内存态)。
|
|
31
|
+
*
|
|
32
|
+
* ★ 仅用于 running 态写入(非阻塞路径不需要超时)。
|
|
33
|
+
* 终态写入走 persistFinalStatus 的指数退避重试,不再使用 withTimeout。
|
|
31
34
|
*/
|
|
32
35
|
const STORE_WRITE_TIMEOUT_MS = 5_000;
|
|
36
|
+
/**
|
|
37
|
+
* 终态落盘的指数退避序列(毫秒)。
|
|
38
|
+
*
|
|
39
|
+
* 终态写入失败时按此序列重试,覆盖以下瞬时错误场景:
|
|
40
|
+
* - Windows fs.rename EPERM(reader 持有 fd,退避后释放即可成功)
|
|
41
|
+
* - writeChain 临时拥堵(前一个 write 慢,退避后队列消化)
|
|
42
|
+
* - 磁盘瞬时不可用
|
|
43
|
+
*
|
|
44
|
+
* 总耗时 ≈ 100+500+2000+8000 = 10.6s,远大于 EPERM 退避窗口和 writeChain 排队时长,
|
|
45
|
+
* 同时不至过长影响 bridge 关闭时的 dispose 流程。
|
|
46
|
+
*/
|
|
47
|
+
const PERSIST_BACKOFF_MS = [100, 500, 2_000, 8_000];
|
|
33
48
|
/**
|
|
34
49
|
* 子 agent runtime.start() 整体超时兜底(毫秒)。
|
|
35
50
|
* start() 内部正常路径秒级完成(loadSkills/resolveProvider/filterMcp/fetchProfile/emitStatus),
|
|
@@ -87,6 +102,16 @@ export class SubAgentManager {
|
|
|
87
102
|
* null 表示当前没有等待者。
|
|
88
103
|
*/
|
|
89
104
|
this.completionWaiterResolve = null;
|
|
105
|
+
/**
|
|
106
|
+
* 正在执行的异步终态落盘 Promise 集合。
|
|
107
|
+
*
|
|
108
|
+
* 用于:
|
|
109
|
+
* - 测试等待异步落盘完成后再读取 store 验证状态
|
|
110
|
+
* - dispose 时确保所有落盘完成后再清理(避免文件句柄占用导致目录非空)
|
|
111
|
+
*
|
|
112
|
+
* persistFinalStatus 启动时入集,resolve/reject 后出集。
|
|
113
|
+
*/
|
|
114
|
+
this.pendingPersists = new Set();
|
|
90
115
|
this.store = opts.store;
|
|
91
116
|
this.maxConcurrent = opts.maxConcurrent ?? 5;
|
|
92
117
|
// 启动定期清理已完成 entry 的定时器(每 5 分钟扫一次)
|
|
@@ -383,30 +408,23 @@ export class SubAgentManager {
|
|
|
383
408
|
// ★ emit 前置:先把 completed 事件发出,让前端 modal 立即看到状态变化
|
|
384
409
|
// (subscribers 同步执行,SSE 路由立即推送)。
|
|
385
410
|
this.emitEvent(entry.subId, "completed", { result: output });
|
|
386
|
-
// ★
|
|
387
|
-
//
|
|
388
|
-
//
|
|
389
|
-
//
|
|
390
|
-
try {
|
|
391
|
-
await withTimeout(this.store.updateStatus(entry.parentAgentId, entry.subId, {
|
|
392
|
-
status: "completed",
|
|
393
|
-
result: output,
|
|
394
|
-
endedAt: entry.endedAt,
|
|
395
|
-
durationMs: entry.durationMs,
|
|
396
|
-
// ★ 持久化 availableTools:start() 后才填充,必须随终态落盘,
|
|
397
|
-
// 否则 entry 从内存清理后 store 永远是 spawn 时的空数组,
|
|
398
|
-
// 前端 modal "可用工具" tab 始终显示"暂无工具信息"。
|
|
399
|
-
availableTools: entry.availableTools,
|
|
400
|
-
contextSnapshot: undefined, // 完成后清空快照
|
|
401
|
-
}), STORE_WRITE_TIMEOUT_MS, `sub-agent ${entry.subId} store.updateStatus(completed)`);
|
|
402
|
-
}
|
|
403
|
-
catch (storeErr) {
|
|
404
|
-
console.error(`[SubAgentManager] store.updateStatus(completed) failed for subId=${entry.subId}: ` +
|
|
405
|
-
`${storeErr instanceof Error ? storeErr.message : String(storeErr)}`);
|
|
406
|
-
}
|
|
407
|
-
// 持久化完成(或超时放弃)后,settle completionPromise + 入队通知
|
|
411
|
+
// ★ 终态落盘改为非阻塞:内存已置 completed,立即 settle completionPromise
|
|
412
|
+
// + 入队通知,磁盘写入走 persistFinalStatus 的指数退避重试,不阻塞主流程。
|
|
413
|
+
// 即使落盘最终失败,前端看到的仍是真实 completed 状态(内存态是真相源),
|
|
414
|
+
// 不会触发列表接口的 "status mismatch" 兜底(兜底逻辑已移除)。
|
|
408
415
|
entry.completionResolve?.({ output });
|
|
409
416
|
this.enqueueCompletion(entry, output, undefined);
|
|
417
|
+
void this.persistFinalStatus(entry, {
|
|
418
|
+
status: "completed",
|
|
419
|
+
result: output,
|
|
420
|
+
endedAt: entry.endedAt,
|
|
421
|
+
durationMs: entry.durationMs,
|
|
422
|
+
// ★ 持久化 availableTools:start() 后才填充,必须随终态落盘,
|
|
423
|
+
// 否则 entry 从内存清理后 store 永远是 spawn 时的空数组,
|
|
424
|
+
// 前端 modal "可用工具" tab 始终显示"暂无工具信息"。
|
|
425
|
+
availableTools: entry.availableTools,
|
|
426
|
+
contextSnapshot: undefined, // 完成后清空快照
|
|
427
|
+
});
|
|
410
428
|
}
|
|
411
429
|
catch (err) {
|
|
412
430
|
const errorMessage = err instanceof Error ? err.message : String(err);
|
|
@@ -414,24 +432,18 @@ export class SubAgentManager {
|
|
|
414
432
|
entry.errorMessage = errorMessage;
|
|
415
433
|
entry.endedAt = Date.now();
|
|
416
434
|
entry.durationMs = entry.endedAt - entry.startedAt;
|
|
417
|
-
// ★ emit 前置 +
|
|
435
|
+
// ★ emit 前置 + 终态非阻塞落盘(同 completed 路径的设计理由)
|
|
418
436
|
this.emitEvent(entry.subId, "failed", { error: errorMessage });
|
|
419
|
-
try {
|
|
420
|
-
await withTimeout(this.store.updateStatus(entry.parentAgentId, entry.subId, {
|
|
421
|
-
status: "failed",
|
|
422
|
-
errorMessage,
|
|
423
|
-
endedAt: entry.endedAt,
|
|
424
|
-
durationMs: entry.durationMs,
|
|
425
|
-
availableTools: entry.availableTools,
|
|
426
|
-
contextSnapshot: undefined,
|
|
427
|
-
}), STORE_WRITE_TIMEOUT_MS, `sub-agent ${entry.subId} store.updateStatus(failed)`);
|
|
428
|
-
}
|
|
429
|
-
catch (storeErr) {
|
|
430
|
-
console.error(`[SubAgentManager] store.updateStatus(failed) failed for subId=${entry.subId}: ` +
|
|
431
|
-
`${storeErr instanceof Error ? storeErr.message : String(storeErr)}`);
|
|
432
|
-
}
|
|
433
437
|
entry.completionResolve?.({ output: "", error: errorMessage });
|
|
434
438
|
this.enqueueCompletion(entry, "", errorMessage);
|
|
439
|
+
void this.persistFinalStatus(entry, {
|
|
440
|
+
status: "failed",
|
|
441
|
+
errorMessage,
|
|
442
|
+
endedAt: entry.endedAt,
|
|
443
|
+
durationMs: entry.durationMs,
|
|
444
|
+
availableTools: entry.availableTools,
|
|
445
|
+
contextSnapshot: undefined,
|
|
446
|
+
});
|
|
435
447
|
}
|
|
436
448
|
finally {
|
|
437
449
|
// 移除临时监听器
|
|
@@ -564,26 +576,19 @@ export class SubAgentManager {
|
|
|
564
576
|
entry.result = output;
|
|
565
577
|
entry.endedAt = Date.now();
|
|
566
578
|
entry.durationMs = entry.endedAt - entry.startedAt;
|
|
567
|
-
// ★ emit 前置 +
|
|
568
|
-
// (设计理由同 runEntryToCompletion
|
|
569
|
-
// 与 store.updateStatus 的 fs.rename 并发触发 Windows EPERM)
|
|
579
|
+
// ★ emit 前置 + 终态非阻塞落盘 + 立即 settle completionPromise
|
|
580
|
+
// (设计理由同 runEntryToCompletion:内存态是真相源,磁盘写入不阻塞主流程)
|
|
570
581
|
this.emitEvent(entry.subId, "completed", { result: output });
|
|
571
|
-
try {
|
|
572
|
-
await withTimeout(this.store.updateStatus(entry.parentAgentId, entry.subId, {
|
|
573
|
-
status: "completed",
|
|
574
|
-
result: output,
|
|
575
|
-
endedAt: entry.endedAt,
|
|
576
|
-
durationMs: entry.durationMs,
|
|
577
|
-
availableTools: entry.availableTools,
|
|
578
|
-
contextSnapshot: undefined,
|
|
579
|
-
}), STORE_WRITE_TIMEOUT_MS, `sub-agent ${entry.subId} store.updateStatus(completed)`);
|
|
580
|
-
}
|
|
581
|
-
catch (storeErr) {
|
|
582
|
-
console.error(`[SubAgentManager] store.updateStatus(completed) failed for subId=${entry.subId}: ` +
|
|
583
|
-
`${storeErr instanceof Error ? storeErr.message : String(storeErr)}`);
|
|
584
|
-
}
|
|
585
582
|
entry.completionResolve?.({ output });
|
|
586
583
|
this.enqueueCompletion(entry, output, undefined);
|
|
584
|
+
void this.persistFinalStatus(entry, {
|
|
585
|
+
status: "completed",
|
|
586
|
+
result: output,
|
|
587
|
+
endedAt: entry.endedAt,
|
|
588
|
+
durationMs: entry.durationMs,
|
|
589
|
+
availableTools: entry.availableTools,
|
|
590
|
+
contextSnapshot: undefined,
|
|
591
|
+
});
|
|
587
592
|
}
|
|
588
593
|
catch (err) {
|
|
589
594
|
const errorMessage = err instanceof Error ? err.message : String(err);
|
|
@@ -591,24 +596,18 @@ export class SubAgentManager {
|
|
|
591
596
|
entry.errorMessage = errorMessage;
|
|
592
597
|
entry.endedAt = Date.now();
|
|
593
598
|
entry.durationMs = entry.endedAt - entry.startedAt;
|
|
594
|
-
// ★ emit 前置 +
|
|
599
|
+
// ★ emit 前置 + 终态非阻塞落盘(同 completed 路径的设计理由)
|
|
595
600
|
this.emitEvent(entry.subId, "failed", { error: errorMessage });
|
|
596
|
-
try {
|
|
597
|
-
await withTimeout(this.store.updateStatus(entry.parentAgentId, entry.subId, {
|
|
598
|
-
status: "failed",
|
|
599
|
-
errorMessage,
|
|
600
|
-
endedAt: entry.endedAt,
|
|
601
|
-
durationMs: entry.durationMs,
|
|
602
|
-
availableTools: entry.availableTools,
|
|
603
|
-
contextSnapshot: undefined,
|
|
604
|
-
}), STORE_WRITE_TIMEOUT_MS, `sub-agent ${entry.subId} store.updateStatus(failed)`);
|
|
605
|
-
}
|
|
606
|
-
catch (storeErr) {
|
|
607
|
-
console.error(`[SubAgentManager] store.updateStatus(failed) failed for subId=${entry.subId}: ` +
|
|
608
|
-
`${storeErr instanceof Error ? storeErr.message : String(storeErr)}`);
|
|
609
|
-
}
|
|
610
601
|
entry.completionResolve?.({ output: "", error: errorMessage });
|
|
611
602
|
this.enqueueCompletion(entry, "", errorMessage);
|
|
603
|
+
void this.persistFinalStatus(entry, {
|
|
604
|
+
status: "failed",
|
|
605
|
+
errorMessage,
|
|
606
|
+
endedAt: entry.endedAt,
|
|
607
|
+
durationMs: entry.durationMs,
|
|
608
|
+
availableTools: entry.availableTools,
|
|
609
|
+
contextSnapshot: undefined,
|
|
610
|
+
});
|
|
612
611
|
}
|
|
613
612
|
finally {
|
|
614
613
|
// 移除临时监听器
|
|
@@ -664,25 +663,18 @@ export class SubAgentManager {
|
|
|
664
663
|
entry.status = "cancelled";
|
|
665
664
|
entry.endedAt = Date.now();
|
|
666
665
|
entry.durationMs = entry.endedAt - entry.startedAt;
|
|
667
|
-
// ★ emit 前置 +
|
|
668
|
-
// (设计理由同 completed
|
|
666
|
+
// ★ emit 前置 + 终态非阻塞落盘 + 立即 settle completionPromise
|
|
667
|
+
// (设计理由同 completed 路径:内存态是真相源,磁盘写入不阻塞主流程)
|
|
669
668
|
this.emitEvent(subId, "cancelled", {});
|
|
670
|
-
try {
|
|
671
|
-
await withTimeout(this.store.updateStatus(entry.parentAgentId, subId, {
|
|
672
|
-
status: "cancelled",
|
|
673
|
-
endedAt: entry.endedAt,
|
|
674
|
-
durationMs: entry.durationMs,
|
|
675
|
-
availableTools: entry.availableTools,
|
|
676
|
-
contextSnapshot: undefined,
|
|
677
|
-
}), STORE_WRITE_TIMEOUT_MS, `sub-agent ${subId} store.updateStatus(cancelled)`);
|
|
678
|
-
}
|
|
679
|
-
catch (storeErr) {
|
|
680
|
-
console.error(`[SubAgentManager] store.updateStatus(cancelled) failed for subId=${subId}: ` +
|
|
681
|
-
`${storeErr instanceof Error ? storeErr.message : String(storeErr)}`);
|
|
682
|
-
}
|
|
683
|
-
// settle completionPromise(cancelled 视为 error)
|
|
684
669
|
entry.completionResolve?.({ output: "", error: "aborted" });
|
|
685
670
|
this.enqueueCompletion(entry, "", "aborted");
|
|
671
|
+
void this.persistFinalStatus(entry, {
|
|
672
|
+
status: "cancelled",
|
|
673
|
+
endedAt: entry.endedAt,
|
|
674
|
+
durationMs: entry.durationMs,
|
|
675
|
+
availableTools: entry.availableTools,
|
|
676
|
+
contextSnapshot: undefined,
|
|
677
|
+
});
|
|
686
678
|
}
|
|
687
679
|
/** 获取内存中的 entry */
|
|
688
680
|
getSubAgent(subId) {
|
|
@@ -774,11 +766,66 @@ export class SubAgentManager {
|
|
|
774
766
|
}
|
|
775
767
|
const entries = Array.from(this.subAgents.values());
|
|
776
768
|
await Promise.allSettled(entries.map((e) => this.abort(e.subId)));
|
|
769
|
+
// 等待所有异步终态落盘完成(abort 触发的 cancelled 落盘是异步的),
|
|
770
|
+
// 避免文件句柄占用导致测试 cleanup 时目录非空
|
|
771
|
+
await this.flushPendingPersists();
|
|
777
772
|
this.subAgents.clear();
|
|
778
773
|
this.parentToSubs.clear();
|
|
779
774
|
this.subscribers.clear();
|
|
780
775
|
}
|
|
781
776
|
// ---------- 内部方法 ----------
|
|
777
|
+
/**
|
|
778
|
+
* 异步落盘终态记录(指数退避重试),不阻塞主流程。
|
|
779
|
+
*
|
|
780
|
+
* 设计要点:
|
|
781
|
+
* - 内存态已是终态(completed/failed/cancelled),落盘只做历史归档
|
|
782
|
+
* - 落盘失败不回滚内存态,前端看到的是真实终态
|
|
783
|
+
* - 重试覆盖瞬时错误:Windows fs.rename EPERM、writeChain 拥堵、磁盘瞬时不可用
|
|
784
|
+
* - 全部重试失败后仅打日志,下次 bridge 启动时 reconcileZombies 会清理残留
|
|
785
|
+
*
|
|
786
|
+
* 调用方约定:必须用 `void this.persistFinalStatus(...)` 触发,不 await。
|
|
787
|
+
* entry.completionResolve 与 enqueueCompletion 应在此调用之前完成,
|
|
788
|
+
* 保证主流程不被落盘 IO 阻塞。
|
|
789
|
+
*
|
|
790
|
+
* Promise 加入 pendingPersists 集合,供 flushPendingPersists / dispose 等待。
|
|
791
|
+
*/
|
|
792
|
+
persistFinalStatus(entry, patch) {
|
|
793
|
+
const run = (async () => {
|
|
794
|
+
let lastErr;
|
|
795
|
+
for (let attempt = 0; attempt <= PERSIST_BACKOFF_MS.length; attempt++) {
|
|
796
|
+
try {
|
|
797
|
+
await this.store.updateStatus(entry.parentAgentId, entry.subId, patch);
|
|
798
|
+
return;
|
|
799
|
+
}
|
|
800
|
+
catch (err) {
|
|
801
|
+
lastErr = err;
|
|
802
|
+
if (attempt < PERSIST_BACKOFF_MS.length) {
|
|
803
|
+
await new Promise((r) => setTimeout(r, PERSIST_BACKOFF_MS[attempt]));
|
|
804
|
+
}
|
|
805
|
+
}
|
|
806
|
+
}
|
|
807
|
+
console.error(`[SubAgentManager] persistFinalStatus(${patch.status}) failed after ${PERSIST_BACKOFF_MS.length + 1} attempts ` +
|
|
808
|
+
`for subId=${entry.subId}: ${lastErr instanceof Error ? lastErr.message : String(lastErr)}`);
|
|
809
|
+
})();
|
|
810
|
+
// 入集供测试/dispose 等待
|
|
811
|
+
this.pendingPersists.add(run);
|
|
812
|
+
run.finally(() => this.pendingPersists.delete(run));
|
|
813
|
+
return run;
|
|
814
|
+
}
|
|
815
|
+
/**
|
|
816
|
+
* 等待所有正在执行的异步终态落盘完成。
|
|
817
|
+
*
|
|
818
|
+
* 主要用途:
|
|
819
|
+
* - 测试在终态后读取 store 前调用,确保落盘已完成
|
|
820
|
+
* - dispose 前调用,避免文件句柄占用导致目录清理失败
|
|
821
|
+
*
|
|
822
|
+
* 生产环境一般不需要调用——落盘失败不影响内存态正确性。
|
|
823
|
+
*/
|
|
824
|
+
async flushPendingPersists() {
|
|
825
|
+
if (this.pendingPersists.size === 0)
|
|
826
|
+
return;
|
|
827
|
+
await Promise.allSettled(Array.from(this.pendingPersists));
|
|
828
|
+
}
|
|
782
829
|
/**
|
|
783
830
|
* 将子 agent 终态事件入队并通知等待者。
|
|
784
831
|
* 主流程:构建通知对象 -> 入队 completionQueue -> 若有 waitForAnyCompletion 等待者则立即 resolve。
|
|
@@ -875,26 +922,20 @@ export class SubAgentManager {
|
|
|
875
922
|
entry.errorMessage = errorMessage;
|
|
876
923
|
entry.endedAt = Date.now();
|
|
877
924
|
entry.durationMs = entry.endedAt - entry.startedAt;
|
|
878
|
-
// ★ emit 前置 +
|
|
925
|
+
// ★ emit 前置 + 终态非阻塞落盘 + 立即 settle completionPromise
|
|
879
926
|
// (与其他终态路径保持一致,zombie 回收路径若 writeChain 卡住,
|
|
880
927
|
// 也应保证 runtime 收到 failed 事件从而释放 pendingMemorySubAgents URI 锁)
|
|
881
928
|
this.emitEvent(entry.subId, "failed", { error: errorMessage });
|
|
882
|
-
try {
|
|
883
|
-
await withTimeout(this.store.updateStatus(entry.parentAgentId, entry.subId, {
|
|
884
|
-
status: "failed",
|
|
885
|
-
errorMessage,
|
|
886
|
-
endedAt: entry.endedAt,
|
|
887
|
-
durationMs: entry.durationMs,
|
|
888
|
-
availableTools: entry.availableTools,
|
|
889
|
-
contextSnapshot: undefined,
|
|
890
|
-
}), STORE_WRITE_TIMEOUT_MS, `sub-agent ${entry.subId} store.updateStatus(zombie-failed)`);
|
|
891
|
-
}
|
|
892
|
-
catch (storeErr) {
|
|
893
|
-
console.error(`[SubAgentManager] store.updateStatus(zombie-failed) failed for subId=${entry.subId}: ` +
|
|
894
|
-
`${storeErr instanceof Error ? storeErr.message : String(storeErr)}`);
|
|
895
|
-
}
|
|
896
929
|
entry.completionResolve?.({ output: "", error: errorMessage });
|
|
897
930
|
this.enqueueCompletion(entry, "", errorMessage);
|
|
931
|
+
void this.persistFinalStatus(entry, {
|
|
932
|
+
status: "failed",
|
|
933
|
+
errorMessage,
|
|
934
|
+
endedAt: entry.endedAt,
|
|
935
|
+
durationMs: entry.durationMs,
|
|
936
|
+
availableTools: entry.availableTools,
|
|
937
|
+
contextSnapshot: undefined,
|
|
938
|
+
});
|
|
898
939
|
try {
|
|
899
940
|
await entry.runtime.stop();
|
|
900
941
|
}
|
|
@@ -12,12 +12,21 @@ import type { SubAgentDocument, SubAgentEvent, SubAgentRecord } from "./sub-agen
|
|
|
12
12
|
* - 不依赖 agent 工作目录,避免 workspacePath 错误时读取失败
|
|
13
13
|
* - sub-agent 跟随 agent(agentId),不跟随项目工作区
|
|
14
14
|
* - 主记录写操作通过 Promise 链串行化,tmp + rename 原子替换
|
|
15
|
-
* (rename 在 Windows 上目标被打开时会 EPERM,使用 renameWithRetry
|
|
15
|
+
* (rename 在 Windows 上目标被打开时会 EPERM,使用 renameWithRetry 退避重试,
|
|
16
|
+
* 重试仍失败时 fallback 到 copyFile + unlink,彻底规避 EPERM 持续场景)
|
|
16
17
|
* - events 走独立文件,避免 tool_start/tool_end 高频落盘阻塞终态 updateStatus
|
|
17
18
|
* (历史教训:events 与 updateStatus 共用 writeChain 时,memory delegate
|
|
18
19
|
* 一次跑数十个工具调用,appendEvent 排队导致 updateStatus 超 5s 超时,
|
|
19
20
|
* 内存已翻终态但 store 仍 running,触发 "status mismatch" 兜底误报)
|
|
20
21
|
*
|
|
22
|
+
* ★ 终态一致性架构(治本方案):
|
|
23
|
+
* - 内存态(SubAgentManager)是运行态的唯一真相源
|
|
24
|
+
* - 终态写入通过 persistFinalStatus 异步重试落盘,不阻塞 completionResolve
|
|
25
|
+
* - 落盘失败不回滚内存态,前端看到的是真实终态
|
|
26
|
+
* - 列表接口不再做"磁盘 running/pending + 内存无 → 改写 failed"的兜底
|
|
27
|
+
* (该兜底是 "status mismatch" 误报的直接来源,已移除)
|
|
28
|
+
* - bridge 启动时 reconcileZombies 一次性清理上次进程残留的僵尸记录
|
|
29
|
+
*
|
|
21
30
|
* 历史保留策略:全部 sub-agent 记录都持久化(含 completed/failed/cancelled),
|
|
22
31
|
* 按 startedAt 倒序排列。dashboard 按需分页读取。
|
|
23
32
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sub-agent-store.d.ts","sourceRoot":"","sources":["../src/sub-agent-store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG5F
|
|
1
|
+
{"version":3,"file":"sub-agent-store.d.ts","sourceRoot":"","sources":["../src/sub-agent-store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG5F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,UAAU,CAAoC;;IAMtD,kCAAkC;IAClC,OAAO,CAAC,QAAQ;IAKhB,2CAA2C;IAC3C,OAAO,CAAC,cAAc;IAMtB,wCAAwC;IAClC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAoBtD,wBAAwB;IAClB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAKzE,oCAAoC;IAC9B,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBxE,wBAAwB;IAClB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAWpE,eAAe;IACT,YAAY,CAChB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,OAAO,CAAC,cAAc,CAAC,GAC7B,OAAO,CAAC,IAAI,CAAC;IAQhB,+CAA+C;IACzC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAItD;;;;;;;;;;OAUG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAOtF;;;;;;OAMG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAyB1E;;;OAGG;IACG,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;CAmC1C"}
|
|
@@ -15,12 +15,21 @@ import { renameWithRetry } from "./fs-utils.js";
|
|
|
15
15
|
* - 不依赖 agent 工作目录,避免 workspacePath 错误时读取失败
|
|
16
16
|
* - sub-agent 跟随 agent(agentId),不跟随项目工作区
|
|
17
17
|
* - 主记录写操作通过 Promise 链串行化,tmp + rename 原子替换
|
|
18
|
-
* (rename 在 Windows 上目标被打开时会 EPERM,使用 renameWithRetry
|
|
18
|
+
* (rename 在 Windows 上目标被打开时会 EPERM,使用 renameWithRetry 退避重试,
|
|
19
|
+
* 重试仍失败时 fallback 到 copyFile + unlink,彻底规避 EPERM 持续场景)
|
|
19
20
|
* - events 走独立文件,避免 tool_start/tool_end 高频落盘阻塞终态 updateStatus
|
|
20
21
|
* (历史教训:events 与 updateStatus 共用 writeChain 时,memory delegate
|
|
21
22
|
* 一次跑数十个工具调用,appendEvent 排队导致 updateStatus 超 5s 超时,
|
|
22
23
|
* 内存已翻终态但 store 仍 running,触发 "status mismatch" 兜底误报)
|
|
23
24
|
*
|
|
25
|
+
* ★ 终态一致性架构(治本方案):
|
|
26
|
+
* - 内存态(SubAgentManager)是运行态的唯一真相源
|
|
27
|
+
* - 终态写入通过 persistFinalStatus 异步重试落盘,不阻塞 completionResolve
|
|
28
|
+
* - 落盘失败不回滚内存态,前端看到的是真实终态
|
|
29
|
+
* - 列表接口不再做"磁盘 running/pending + 内存无 → 改写 failed"的兜底
|
|
30
|
+
* (该兜底是 "status mismatch" 误报的直接来源,已移除)
|
|
31
|
+
* - bridge 启动时 reconcileZombies 一次性清理上次进程残留的僵尸记录
|
|
32
|
+
*
|
|
24
33
|
* 历史保留策略:全部 sub-agent 记录都持久化(含 completed/failed/cancelled),
|
|
25
34
|
* 按 startedAt 倒序排列。dashboard 按需分页读取。
|
|
26
35
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-client.d.ts","sourceRoot":"","sources":["../src/agent-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EACV,WAAW,EAEX,aAAa,EAEb,iBAAiB,EACjB,0BAA0B,EAC1B,sBAAsB,EACtB,oBAAoB,EAGpB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,cAAc,EAEd,YAAY,EACZ,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAGpB,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;AAE5D,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,mBAAmB,CAA6B;IACxD,+CAA+C;IAC/C,OAAO,CAAC,wBAAwB,CAA+B;IAE/D;;;OAGG;IACH,OAAO,CAAC,aAAa,CAA4B;;IAW3C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBjC,OAAO,CAAC,uBAAuB;IA6C/B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC;IAUzC,OAAO,CAAC,gBAAgB;IAMxB;;OAEG;YACW,2BAA2B;
|
|
1
|
+
{"version":3,"file":"agent-client.d.ts","sourceRoot":"","sources":["../src/agent-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import { configManager } from "./config.js";
|
|
6
6
|
import { MESSAGE_POLL_INTERVAL_MS } from "./constants.js";
|
|
7
7
|
import { HttpClient } from "./http-client.js";
|
|
8
|
-
import { logger, setMcpNodeLogSink } from "./logger.js";
|
|
8
|
+
import { logger, setMcpNodeLogSink, updateStartupLogIdentity } from "./logger.js";
|
|
9
9
|
import { claimRuntimeLaunchBinding } from "./runtime-launch-binding.js";
|
|
10
10
|
import { StatusReporter } from "./status-reporter.js";
|
|
11
11
|
import { WebSocketClient } from "./websocket-client.js";
|
|
@@ -132,6 +132,8 @@ export class AgentClient {
|
|
|
132
132
|
const refreshedProfile = await this.getProfileByAgentId(this.agentId);
|
|
133
133
|
this.displayName = refreshedProfile.displayName;
|
|
134
134
|
this.projectName = refreshedProfile.projectName || null;
|
|
135
|
+
// 用真实的角色名和实例名更新 MCP 启动日志文件路径
|
|
136
|
+
updateStartupLogIdentity(refreshedProfile.roleName || "unknown-role", refreshedProfile.instanceName || this.agentId);
|
|
135
137
|
return {
|
|
136
138
|
agentId: this.agentId,
|
|
137
139
|
displayName: this.displayName,
|
|
@@ -160,6 +162,8 @@ export class AgentClient {
|
|
|
160
162
|
this.agentId = agentId;
|
|
161
163
|
this.displayName = result.displayName;
|
|
162
164
|
this.projectName = result.projectName || null; // 保存服务端返回的项目名
|
|
165
|
+
// 用真实的角色名和实例名更新 MCP 启动日志文件路径
|
|
166
|
+
updateStartupLogIdentity(this.agentConfig.roleName || "unknown-role", result.instanceName || agentId);
|
|
163
167
|
logger.info(`[AgentClient] 注册成功: ${this.displayName} (${this.agentId})`);
|
|
164
168
|
logger.info(`[AgentClient] 状态: ${result.status}`);
|
|
165
169
|
logger.info(`[AgentClient] 所属项目: ${this.projectName || "(未设置)"}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-client.js","sourceRoot":"","sources":["../src/agent-client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent-client.js","sourceRoot":"","sources":["../src/agent-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,15 +6,25 @@ export interface McpNodeLogEntry {
|
|
|
6
6
|
}
|
|
7
7
|
export type McpNodeLogSink = (entry: McpNodeLogEntry) => void;
|
|
8
8
|
export declare function formatStartupTimestamp(date: Date): string;
|
|
9
|
-
export declare function getStartupPathName(startupPath: string | undefined): string;
|
|
10
9
|
export declare function sanitizeLogFileNameSegment(segment: string): string;
|
|
10
|
+
/**
|
|
11
|
+
* 构建 MCP 启动日志文件路径。
|
|
12
|
+
* 路径格式:{logDir}/{roleName}-{instanceName}/{startupTimestamp}.log
|
|
13
|
+
* roleName/instanceName 优先使用传入值,未传入时使用环境变量或 "unknown-*" 兜底。
|
|
14
|
+
*/
|
|
11
15
|
export declare function buildStartupLogFilePath(options?: {
|
|
12
16
|
homeDir?: string;
|
|
13
17
|
logDir?: string;
|
|
14
|
-
|
|
18
|
+
roleName?: string;
|
|
19
|
+
instanceName?: string;
|
|
15
20
|
startupTime?: Date;
|
|
16
21
|
}): string;
|
|
17
22
|
export declare function initializeStartupLogFile(): string | null;
|
|
23
|
+
/**
|
|
24
|
+
* 在 Agent 注册后更新日志文件路径的角色-实例标识。
|
|
25
|
+
* 主流程:使用真实的 roleName/instanceName 重新计算路径,若与原路径不同则创建新目录并移动文件。
|
|
26
|
+
*/
|
|
27
|
+
export declare function updateStartupLogIdentity(roleName: string, instanceName: string): void;
|
|
18
28
|
/**
|
|
19
29
|
* 绑定 MCP Node.js 日志上报通道。
|
|
20
30
|
* 主流程:设置实时 sink -> 回放启动以来的缓冲日志 -> 后续日志实时推送。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEjD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEjD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;AAe9D,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAYzD;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CASlE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,GAAE;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,IAAI,CAAC;CACf,GAAG,MAAM,CAed;AAED,wBAAgB,wBAAwB,IAAI,MAAM,GAAG,IAAI,CA2BxD;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CA+BrF;AA2CD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,GAAG,IAAI,CAQnE;AAaD,eAAO,MAAM,MAAM;oBACD,OAAO,EAAE,KAAG,IAAI;oBAChB,OAAO,EAAE,KAAG,IAAI;qBACf,OAAO,EAAE,KAAG,IAAI;CAClC,CAAC"}
|
|
@@ -6,6 +6,7 @@ const STARTUP_TIME = new Date();
|
|
|
6
6
|
const DISABLE_FILE_LOG_VALUES = new Set(["0", "false", "off", "no"]);
|
|
7
7
|
const MAX_BUFFERED_NODE_LOGS = 200;
|
|
8
8
|
let startupLogFilePath;
|
|
9
|
+
let startupLogBaseDir = null;
|
|
9
10
|
let nodeLogSink = null;
|
|
10
11
|
const bufferedNodeLogs = [];
|
|
11
12
|
function pad(value, length = 2) {
|
|
@@ -24,14 +25,6 @@ export function formatStartupTimestamp(date) {
|
|
|
24
25
|
pad(date.getMilliseconds(), 3),
|
|
25
26
|
].join("");
|
|
26
27
|
}
|
|
27
|
-
export function getStartupPathName(startupPath) {
|
|
28
|
-
const normalized = String(startupPath || "").trim().replace(/[\\/]+$/, "");
|
|
29
|
-
if (!normalized) {
|
|
30
|
-
return "workspace";
|
|
31
|
-
}
|
|
32
|
-
const parts = normalized.split(/[\\/]+/).filter(Boolean);
|
|
33
|
-
return parts[parts.length - 1] || "workspace";
|
|
34
|
-
}
|
|
35
28
|
export function sanitizeLogFileNameSegment(segment) {
|
|
36
29
|
const controlCharactersPattern = new RegExp(`[${String.fromCharCode(0)}-${String.fromCharCode(31)}]`, "g");
|
|
37
30
|
const sanitized = segment
|
|
@@ -42,11 +35,19 @@ export function sanitizeLogFileNameSegment(segment) {
|
|
|
42
35
|
.replace(/[. ]+$/g, "");
|
|
43
36
|
return sanitized || "workspace";
|
|
44
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* 构建 MCP 启动日志文件路径。
|
|
40
|
+
* 路径格式:{logDir}/{roleName}-{instanceName}/{startupTimestamp}.log
|
|
41
|
+
* roleName/instanceName 优先使用传入值,未传入时使用环境变量或 "unknown-*" 兜底。
|
|
42
|
+
*/
|
|
45
43
|
export function buildStartupLogFilePath(options = {}) {
|
|
46
|
-
const
|
|
47
|
-
const
|
|
44
|
+
const baseDir = options.logDir || path.join(options.homeDir || os.homedir(), ".aws-bridge", "log");
|
|
45
|
+
const roleName = sanitizeLogFileNameSegment(options.roleName || process.env.AWS_ROLE_NAME || "unknown-role");
|
|
46
|
+
const instanceName = sanitizeLogFileNameSegment(options.instanceName || process.env.AWS_AGENT_ID || "unknown-instance");
|
|
47
|
+
const identityDir = `${roleName}-${instanceName}`;
|
|
48
|
+
const logDir = path.join(baseDir, identityDir);
|
|
48
49
|
const startupTime = formatStartupTimestamp(options.startupTime || STARTUP_TIME);
|
|
49
|
-
return path.join(logDir, `${
|
|
50
|
+
return path.join(logDir, `${startupTime}.log`);
|
|
50
51
|
}
|
|
51
52
|
export function initializeStartupLogFile() {
|
|
52
53
|
if (startupLogFilePath !== undefined) {
|
|
@@ -58,18 +59,58 @@ export function initializeStartupLogFile() {
|
|
|
58
59
|
return null;
|
|
59
60
|
}
|
|
60
61
|
try {
|
|
62
|
+
const envLogDir = process.env.AWS_MCP_LOG_DIR || undefined;
|
|
63
|
+
startupLogBaseDir = envLogDir || path.join(os.homedir(), ".aws-bridge", "log");
|
|
61
64
|
startupLogFilePath = buildStartupLogFilePath({
|
|
62
|
-
logDir:
|
|
65
|
+
logDir: startupLogBaseDir,
|
|
66
|
+
roleName: process.env.AWS_ROLE_NAME || undefined,
|
|
67
|
+
instanceName: process.env.AWS_AGENT_ID || undefined,
|
|
63
68
|
});
|
|
64
69
|
fs.mkdirSync(path.dirname(startupLogFilePath), { recursive: true });
|
|
65
70
|
return startupLogFilePath;
|
|
66
71
|
}
|
|
67
72
|
catch (error) {
|
|
68
73
|
startupLogFilePath = null;
|
|
74
|
+
startupLogBaseDir = null;
|
|
69
75
|
console.warn("[Logger] 无法创建 MCP 启动日志文件:", error);
|
|
70
76
|
return null;
|
|
71
77
|
}
|
|
72
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* 在 Agent 注册后更新日志文件路径的角色-实例标识。
|
|
81
|
+
* 主流程:使用真实的 roleName/instanceName 重新计算路径,若与原路径不同则创建新目录并移动文件。
|
|
82
|
+
*/
|
|
83
|
+
export function updateStartupLogIdentity(roleName, instanceName) {
|
|
84
|
+
if (startupLogFilePath === undefined || startupLogFilePath === null || !startupLogBaseDir) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const oldPath = startupLogFilePath;
|
|
88
|
+
const newPath = buildStartupLogFilePath({
|
|
89
|
+
logDir: startupLogBaseDir,
|
|
90
|
+
roleName,
|
|
91
|
+
instanceName,
|
|
92
|
+
startupTime: STARTUP_TIME,
|
|
93
|
+
});
|
|
94
|
+
if (oldPath === newPath) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
try {
|
|
98
|
+
fs.mkdirSync(path.dirname(newPath), { recursive: true });
|
|
99
|
+
fs.renameSync(oldPath, newPath);
|
|
100
|
+
startupLogFilePath = newPath;
|
|
101
|
+
// 清理 rename 后留下的空旧目录
|
|
102
|
+
try {
|
|
103
|
+
fs.rmdirSync(path.dirname(oldPath));
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
// 目录非空或其它原因,忽略
|
|
107
|
+
}
|
|
108
|
+
console.log(`[Logger] MCP 启动日志路径已更新: ${oldPath} -> ${newPath}`);
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
console.warn("[Logger] 无法更新 MCP 启动日志身份标识:", error);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
73
114
|
function writeFileLog(level, args) {
|
|
74
115
|
if (startupLogFilePath === undefined) {
|
|
75
116
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAYnC,MAAM,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC;AAChC,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AACrE,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAEnC,IAAI,kBAA6C,CAAC;AAClD,IAAI,WAAW,GAA0B,IAAI,CAAC;AAC9C,MAAM,gBAAgB,GAAsB,EAAE,CAAC;AAE/C,SAAS,GAAG,CAAC,KAAa,EAAE,MAAM,GAAG,CAAC;IACpC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,IAAU;IAC/C,OAAO;QACL,IAAI,CAAC,WAAW,EAAE;QAClB,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACxB,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACnB,GAAG;QACH,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpB,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACtB,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACtB,GAAG;QACH,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;KAC/B,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACb,CAAC;AAED,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,27 +1,24 @@
|
|
|
1
1
|
import assert from "node:assert/strict";
|
|
2
2
|
import * as path from "node:path";
|
|
3
3
|
import { describe, it } from "node:test";
|
|
4
|
-
import { buildStartupLogFilePath, formatStartupTimestamp,
|
|
4
|
+
import { buildStartupLogFilePath, formatStartupTimestamp, sanitizeLogFileNameSegment, } from "./logger.js";
|
|
5
5
|
describe("logger startup log path", () => {
|
|
6
6
|
it("formats startup time for log filenames", () => {
|
|
7
7
|
const startupTime = new Date(2026, 4, 5, 9, 8, 7, 6);
|
|
8
8
|
assert.equal(formatStartupTimestamp(startupTime), "20260505-090807-006");
|
|
9
9
|
});
|
|
10
|
-
it("uses the last startup path segment", () => {
|
|
11
|
-
assert.equal(getStartupPathName("D:/code/AgentsWorkStudio/demo-project/"), "demo-project");
|
|
12
|
-
assert.equal(getStartupPathName("D:\\code\\AgentsWorkStudio\\demo-project\\"), "demo-project");
|
|
13
|
-
});
|
|
14
10
|
it("sanitizes unsafe filename characters", () => {
|
|
15
11
|
assert.equal(sanitizeLogFileNameSegment('demo:bad*name?'), "demo_bad_name_");
|
|
16
12
|
});
|
|
17
|
-
it("builds log path under the aws bridge log directory", () => {
|
|
13
|
+
it("builds log path under the aws bridge log directory with role-instance subdirectory", () => {
|
|
18
14
|
const startupTime = new Date(2026, 4, 5, 9, 8, 7, 6);
|
|
19
15
|
const logFilePath = buildStartupLogFilePath({
|
|
20
16
|
homeDir: "C:/Users/dev",
|
|
21
|
-
|
|
17
|
+
roleName: "测试助手",
|
|
18
|
+
instanceName: "128M",
|
|
22
19
|
startupTime,
|
|
23
20
|
});
|
|
24
|
-
assert.equal(logFilePath, path.join("C:/Users/dev", ".aws-bridge", "log", "
|
|
21
|
+
assert.equal(logFilePath, path.join("C:/Users/dev", ".aws-bridge", "log", "测试助手-128M", "20260505-090807-006.log"));
|
|
25
22
|
});
|
|
26
23
|
});
|
|
27
24
|
//# sourceMappingURL=logger.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.test.js","sourceRoot":"","sources":["../src/logger.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,
|
|
1
|
+
{"version":3,"file":"logger.test.js","sourceRoot":"","sources":["../src/logger.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,aAAa,CAAC;AAErB,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAErD,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,WAAW,CAAC,EAAE,qBAAqB,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oFAAoF,EAAE,GAAG,EAAE;QAC5F,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACrD,MAAM,WAAW,GAAG,uBAAuB,CAAC;YAC1C,OAAO,EAAE,cAAc;YACvB,QAAQ,EAAE,MAAM;YAChB,YAAY,EAAE,MAAM;YACpB,WAAW;SACZ,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CACV,WAAW,EACX,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE,yBAAyB,CAAC,CACxF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|