Verbose: include tool arg metadata in prefixes

This commit is contained in:
Peter Steinberger
2025-12-03 09:57:41 +00:00
parent 318166f8b0
commit 527bed2b53
8 changed files with 70 additions and 13 deletions

View File

@@ -18,6 +18,8 @@ type PiAssistantMessage = {
toolName?: string;
tool_call_id?: string;
toolCallId?: string;
details?: Record<string, unknown>;
arguments?: Record<string, unknown>;
};
function inferToolName(msg: PiAssistantMessage): string | undefined {
@@ -39,6 +41,23 @@ function inferToolName(msg: PiAssistantMessage): string | undefined {
return undefined;
}
function deriveToolMeta(msg: PiAssistantMessage): string | undefined {
const details = msg.details ?? msg.arguments;
const pathVal = details && typeof details.path === "string" ? details.path : undefined;
const offset = details && typeof details.offset === "number" ? details.offset : undefined;
const limit = details && typeof details.limit === "number" ? details.limit : undefined;
const command = details && typeof details.command === "string" ? details.command : undefined;
if (pathVal) {
if (offset !== undefined && limit !== undefined) {
return `${pathVal}:${offset}-${offset + limit}`;
}
return pathVal;
}
if (command) return command;
return undefined;
}
function parsePiJson(raw: string): AgentParseResult {
const lines = raw.split(/\n+/).filter((l) => l.trim().startsWith("{"));
@@ -87,7 +106,11 @@ function parsePiJson(raw: string): AgentParseResult {
.join("\n")
.trim();
if (toolText) {
toolResults.push({ text: toolText, toolName: inferToolName(msg) });
toolResults.push({
text: toolText,
toolName: inferToolName(msg),
meta: deriveToolMeta(msg),
});
}
}
} catch {