summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authort <t@tjp.lol>2026-08-18 14:45:03 -0600
committert <t@tjp.lol>2026-08-18 14:45:08 -0600
commit2acd6b0e38e4af1fd13bad1cef8af7407b20684c (patch)
treee95c6a20a8b96bab627ef3974b7c355faba4d66a /README.md
initial commit
Diffstat (limited to 'README.md')
-rw-r--r--README.md45
1 files changed, 45 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..18e221e
--- /dev/null
+++ b/README.md
@@ -0,0 +1,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
+```