merge: preserve existing business features on new foundation

This commit is contained in:
张胜宇
2026-09-10 17:26:52 +08:00
56 changed files with 6923 additions and 20 deletions
+15 -1
View File
@@ -93,13 +93,27 @@ class ToolExecutor:
record = ToolCallRecord(
tool_name=name, status="succeeded",
input_summary={key: "[redacted]" for key in arguments},
output_summary={"result_type": type(output).__name__},
output_summary=self._output_summary(output),
)
await self._audit(name, intent, context, "succeeded", "ok")
reference = SourceReference(source_type="tool", source_id=f"{context.trace_id}:{name}",
title=name)
return ToolExecution(output=output, record=record, references=(reference,))
@staticmethod
def _output_summary(output: Any) -> dict[str, Any]:
summary: dict[str, Any] = {"result_type": type(output).__name__}
if not isinstance(output, dict):
return summary
summary["status"] = output.get("status")
audit = output.get("audit")
if isinstance(audit, dict):
summary["query_plan"] = audit.get("query_plan")
summary["generated_sql"] = audit.get("generated_sql")
summary["permission_check"] = audit.get("permission_check")
summary["execution"] = audit.get("execution")
return summary
async def _audit(
self, name: str, intent: str, context: RequestContext, status: str, reason: str
) -> None: