Merge pull request #187 from pikasTech/fix/issue-1297-tool-summary-fields
fix: 保留截断工具调用的识别字段
This commit is contained in:
+34
-1
@@ -86,7 +86,7 @@ function normalizeToolCallPayload(payload: JsonRecord): JsonRecord {
|
||||
const summary = boundedTextSummary(json);
|
||||
if (summary.outputTruncated !== true) return { ...redacted, summary, outputBytes: summary.outputBytes, outputTruncated: false };
|
||||
return {
|
||||
method: typeof payload.method === "string" ? payload.method : null,
|
||||
...preservedToolCallSummaryFields(redacted),
|
||||
itemPreview: summary.text,
|
||||
summary,
|
||||
outputBytes: summary.outputBytes,
|
||||
@@ -94,6 +94,39 @@ function normalizeToolCallPayload(payload: JsonRecord): JsonRecord {
|
||||
};
|
||||
}
|
||||
|
||||
function preservedToolCallSummaryFields(payload: JsonRecord): JsonRecord {
|
||||
const result: JsonRecord = {};
|
||||
copyToolCallPrimitive(result, payload, "method");
|
||||
copyToolCallPrimitive(result, payload, "itemId");
|
||||
copyToolCallPrimitive(result, payload, "type");
|
||||
copyToolCallPrimitive(result, payload, "toolName");
|
||||
copyToolCallPrimitive(result, payload, "name");
|
||||
copyToolCallPrimitive(result, payload, "status");
|
||||
copyToolCallPrimitive(result, payload, "exitCode");
|
||||
copyToolCallPrimitive(result, payload, "durationMs");
|
||||
copyToolCallPrimitive(result, payload, "outputBytes");
|
||||
copyToolCallPrimitive(result, payload, "outputTruncated");
|
||||
copyToolCallSummaryText(result, payload, "command", 600);
|
||||
copyToolCallSummaryText(result, payload, "commandLine", 600);
|
||||
copyToolCallSummaryText(result, payload, "outputSummary", 1_000);
|
||||
copyToolCallSummaryText(result, payload, "stdoutSummary", 1_000);
|
||||
return result;
|
||||
}
|
||||
|
||||
function copyToolCallPrimitive(target: JsonRecord, source: JsonRecord, key: string): void {
|
||||
const value = source[key];
|
||||
if (typeof value === "string" && value.trim().length > 0) target[key] = value;
|
||||
else if (typeof value === "number" && Number.isFinite(value)) target[key] = value;
|
||||
else if (typeof value === "boolean") target[key] = value;
|
||||
}
|
||||
|
||||
function copyToolCallSummaryText(target: JsonRecord, source: JsonRecord, key: string, limitChars: number): void {
|
||||
const value = source[key];
|
||||
if (typeof value !== "string" || value.trim().length === 0) return;
|
||||
const summary = boundedTextSummary(value, { limitChars });
|
||||
target[key] = summary.text;
|
||||
}
|
||||
|
||||
function isCommandExecutionToolCall(payload: JsonRecord): boolean {
|
||||
return payload.toolName === "commandExecution" || payload.type === "commandExecution";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user