feat: 升级至 v0.3.16 — 工单修复 51 项 + 审查修复 30 项(安全加固/适配器/工具系统/数据层/前端)
This commit is contained in:
@@ -20,16 +20,24 @@ export class AuditLogHook implements PostToolHook {
|
||||
constructor(private auditService: AuditService) {}
|
||||
|
||||
async afterExecute(toolCall: MetonaToolCall, result: MetonaToolResult, sessionId: string): Promise<void> {
|
||||
this.auditService.logToolCall({
|
||||
sessionId,
|
||||
iteration: toolCall.iteration,
|
||||
toolName: toolCall.name,
|
||||
args: toolCall.args,
|
||||
outcome: result.success ? 'success' : 'error',
|
||||
result: result.result,
|
||||
error: result.error,
|
||||
durationMs: result.durationMs,
|
||||
});
|
||||
// #17 修复: AuditHook 应为 "fire and forget",hook 失败不应影响工具执行链
|
||||
// 虽然 AuditService.log() 内部已 try-catch,但 hook 层再加一层防御,
|
||||
// 确保任何意外异常(如 getDB 抛错、JSON.stringify 失败)都不会冒泡到 ToolRegistry
|
||||
try {
|
||||
this.auditService.logToolCall({
|
||||
sessionId,
|
||||
iteration: toolCall.iteration,
|
||||
toolName: toolCall.name,
|
||||
args: toolCall.args,
|
||||
outcome: result.success ? 'success' : 'error',
|
||||
result: result.result,
|
||||
error: result.error,
|
||||
durationMs: result.durationMs,
|
||||
});
|
||||
} catch (err) {
|
||||
log.error('[AuditLogHook] Failed to log audit:', err);
|
||||
// 不抛出,让工具执行链继续
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user