summaryrefslogtreecommitdiff
path: root/README.md
blob: 18e221e36b7eef28e03ae0cbc34633aa008a8d6d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# panto-herdr

`panto-herdr` reports panto lifecycle state to [Herdr](https://herdr.dev/) when
panto is running in a Herdr pane. It reports `panto` as the agent label and
uses `thinking`, `responding`, `compacting`, and `tool:<name>` as short status
labels.

Install it through panto's rock loader:

```toml
[extensions]
rocks = ["panto-herdr"]
```

Then run `panto update`. Start panto in Herdr, for example:

```sh
herdr agent start panto --cwd "$PWD" -- panto
```

The extension is inert outside Herdr: it only activates when `HERDR_PANE_ID`
is set. It invokes the local `herdr` executable asynchronously and discards
its JSON output, so reporting does not affect the panto terminal UI.

## State mapping

| panto event | Herdr state |
| --- | --- |
| `session_start` | `idle` |
| `user_message`, `thinking`, `compaction`, `tool_details`, `assistant_text` | `working` |
| `assistant_text_complete` | `idle` |

Current panto extensions do not receive a turn-complete or interrupt event.
`assistant_text_complete` is therefore the best available idle boundary; an
assistant text block followed by a tool call can show `idle` briefly before
the next lifecycle event restores `working`. Native session restore is also
out of scope until panto exposes a stable session reference to extensions.

## Check

Run the module-level check with panto's Lua runtime:

```sh
panto lua _selfcheck.lua
```