3299
const tracked = this._activeToolCalls.get(e.data.toolCallId);
3300
if (tracked) {
3302
>
}
3303
>
3304
>
this._emitAction({
3305
>
type: ActionType.ChatToolCallStart,
3306
>
turnId: this._turnId,
3307
>
toolCallId: e.data.toolCallId,
3308
>
toolName: e.data.toolName,
3309
>
displayName,
3310
>
intention: getShellIntention(e.data.toolName, parameters),
3311
>
contributor,
3312
>
_meta: toToolCallMeta(meta),
3313
>
}, parentToolCallId);
3314
>
3315
>
// No client is connected to run this client tool. Fail it
3316
>
// immediately instead of leaving it pending until the
3317
>
// server-side disconnect timeout fires. We emit the completion
3318
>
// ourselves and drop the active-tool entry so the SDK's own
3319
>
// tool.execution_complete for this id is suppressed.
3320
if (isClientTool && !contributor) {
3321
this._logService.warn(`[Copilot:${sessionId}] Client tool '${e.data.toolName}' started with no connected client; failing it immediately.`);