1 // Did Klippy stop to ask before using a tool (needsApproval)? Then ask you, send the answer, and print the rest.
2 for (;;) {
3 const last = (await load()).at(-1);
4 const part = last?.parts.find((p) => isToolUIPart(p) && p.state === 'approval-requested');
5 if (!last || !part || !isToolUIPart(part)) break;
6 const approved = (await ask(`Klippy wants to use ${getToolName(part)} with ${JSON.stringify(part.input)}. Allow? (y/n) `)) === 'y';
7 transport.expectToolContinuation();
8 agent.send(JSON.stringify({ type: MessageType.CF_AGENT_TOOL_APPROVAL, toolCallId: part.toolCallId, approved, autoContinue: true }));
9 await print(await transport.reconnectToStream({ chatId: name }), last);
10 }