import type { PendingToolInterrupt } from '#src/core/types.js'; /** * The opening sentence of the approval prompt for one gated call, **without** any surface's own * punctuation or styling. * * Three arms, one per subject kind: * * - `shell` — *The agent wants to run a shell command via ``*, unchanged, so the case that was * already clear stays clear. * - `mcpTool` — *The agent wants to call `` on the MCP server ``, via ``*. * **Naming the server is a deliberate addition rather than a side effect**: the subject already * carries it, and which server a call reaches is the one load-bearing fact the old prompt hid. * - `tool` — *The agent wants to use the `` tool*. * * **An MCP call whose server would print as a blank falls to the `tool` arm.** The `mcpTool` * sentence would otherwise read "on the MCP server , via …" — nothing where the decisive word goes. * The `tool` arm names the full registered name instead, which still carries the visible `mcp__` * namespace, and invents no prose claiming a server nothing could attribute. * * **A pending call with no subject also falls to the `tool` arm**, which is true of any gated call * and false of none. The runner attaches a subject to every interrupt it hands the approval * callback (asserted in `packages/core/spec/approvalPromptHeader.spec.ts`), so this is a floor * rather than a path: a surface handed a hand-built interrupt gets the vague sentence, never a * wrong one. * * @param pending The gated call — its registered name, and the subject the gate decided on. */ export declare function approvalPromptHeader(pending: Pick): string;