181
}
182
183
>
function makeToolStartInfo(toolName: string, rawArguments: unknown, parentToolCallId: string | undefined, workingDirectory: URI | undefined, source: unknown): IToolStartInfo | undefined {
mapSessionEvents.ts
184
>
if (isHiddenTool(toolName)) {
185
return undefined;
186
}
187
>
const rawArgs = rawArguments !== undefined ? tryStringify(rawArguments) : undefined;
mapSessionEvents.ts
188
>
let parameters: Record<string, unknown> | undefined;
189
>
if (rawArgs) {
190
try { parameters = JSON.parse(rawArgs) as Record<string, unknown>; } catch { /* ignore */ }
191
}
193
>
// return value. We re-stringify only when it changed something so
194
>
// `getToolInputString` sees the cleaned command line.
195
>
const cleaned = stripRedundantCdPrefix(toolName, parameters, workingDirectory) ? tryStringify(parameters) : undefined;
196
>
const toolArgs = cleaned ?? rawArgs;
197
>
const toolKind = getToolKind(toolName);
198
>
const subagentMeta = toolKind === 'subagent' ? getSubagentMetadata(parameters) : undefined;
199
>
const displayName = getToolDisplayName(toolName);
200
>
return {
201
>
toolName,
202
>
displayName,
203
>
invocationMessage: getInvocationMessage(toolName, displayName, parameters),
204
>
toolInput: getToolInputString(toolName, parameters, toolArgs),
205
>
toolKind,
206
>
language: toolKind === 'terminal' ? getShellLanguage(toolName) : undefined,
207
>
intention: getShellIntention(toolName, parameters),
208
>
subagentAgentName: subagentMeta?.agentName,
209
>
subagentDescription: subagentMeta?.description,
210
>
parameters,
211
>
parentToolCallId,
212
>
mcpServerName: readStringProperty(source, 'mcpServerName'),
213
>
mcpToolName: readStringProperty(source, 'mcpToolName'),
214
>
mcpUiResourceUri: readMcpUiResourceUri(source),
215
>
};
216
>
}
217
218
function finalizeTurn(builder: ITurnBuilder, state: TurnState): Turn {