258
* matches on `toolCall.toolCallId`.
259
*/
261
>
state: ChatState,
262
>
turnId: string,
263
>
partId: string,
264
>
updater: (part: ResponsePart) => ResponsePart,
265
>
): ChatState {
266
>
const activeTurn = state.activeTurn;
267
>
if (!activeTurn || activeTurn.id !== turnId) {
268
return state;
269
}
271
>
let found = false;
272
>
const responseParts = activeTurn.responseParts.map(part => {
273
>
if (!found) {
274
>
const id = part.kind === ResponsePartKind.ToolCall
275
? part.toolCall.toolCallId
276
>
: 'id' in part ? part.id : undefined;
reducer.ts
277
>
if (id === partId) {
278
>
found = true;
279
>
return updater(part);
280
>
}
281
>
}
282
return part;
284
>
285
>
if (!found) {
286
return state;
287
}
289
>
return {
290
>
...state,
291
>
activeTurn: { ...activeTurn, responseParts },
292
>
};
293
>
}
294
295