<!-- Generated by scripts/gen-docs.ts from the TSDoc in src/. Do not edit by hand. -->

# `reporters/herdr-probe`

Source: [`src/reporters/herdr-probe.ts`](https://github.com/AI-for-dev/combo/blob/main/src/reporters/herdr-probe.ts)

Asking herdr whether it would open a pane, without opening one.

`/herdr on` used to answer one question - are we inside herdr - and that was
the wrong one. A herdr that is there and refuses every request looks exactly
like a herdr that is there and works: the reporter drops a pane it cannot
open, silently, because display is an observer and an observer that warns is
a participant. `agent.start` changed shape between protocols and nothing said
a word for two releases.

So the command asks, and the trick is the pane it names. Sent with a
`target_pane_id` that cannot exist, `pane.split` separates the two answers
herdr gives: `invalid_request` when the request itself is wrong, and
`pane_not_found` when the request was understood and only that pane was
missing. The second is the one we are fishing for, and neither opens
anything.

It probes `pane.split` alone, because nothing else runs without the pane id
it returns. `scripts/check-herdr.ts` is what covers the other five, against
the schema rather than against a live server.

## `probeHerdr`

*function*

```typescript
export async function probeHerdr(send: HerdrSend): Promise<string | undefined> { /* … */ }
```

Why a pane would not open, or `undefined` when one would.

Never throws: a broken probe must not be worse than no probe.
