ollie/doc/event-topics.md

85 lines
2.3 KiB
Markdown

# Event Topics Reference
All events published to the `event` stream follow hierarchical topic naming.
## Topic Format
```
session.{sessionId}.{type}
session.{sessionId}.agent.{agentId}.{type}
```
## Session Events
| Topic | Payload | Description |
|-------|---------|-------------|
| `session.{sid}.new` | `{name}` | Session created |
| `session.{sid}.kill` | — | Session destroyed |
| `session.{sid}.rename` | `{oldName} {newName}` | Session renamed |
| `session.{sid}.pause` | — | Session paused |
| `session.{sid}.resume` | — | Session resumed |
## Agent Events
| Topic | Payload | Description |
|-------|---------|-------------|
| `session.{sid}.agent.{aid}.new` | — | Agent created |
| `session.{sid}.agent.{aid}.kill` | — | Agent destroyed |
| `session.{sid}.agent.{aid}.state` | `{state}` | State changed (idle, calling, thinking, paused) |
| `session.{sid}.agent.{aid}.bypass.request` | `{id}\t{cmd}\t{cwd}` | Bypass approval requested |
| `session.{sid}.agent.{aid}.bypass.resolved` | `{id}\t{action}` | Bypass resolved (approved/denied) |
## Process Events
| Topic | Payload | Description |
|-------|---------|-------------|
| `session.{sid}.agent.{aid}.proc.start` | `{pid}\t{tool}\t{cmd}` | Background process started |
| `session.{sid}.agent.{aid}.proc.exit` | `{pid}\t{exit_code}\t{tool}\t{cmd}` | Background process exited |
## Filter Patterns
Subscribe to specific events using the streaming rdwr pattern:
```bash
# All events
ollie-9p read event
# All session events
echo "session.*" | ollie-9p rdwrs event
# State changes for all agents
echo "session.*.agent.*.state" | ollie-9p rdwrs event
# All events for one session
echo "session.abc123.>" | ollie-9p rdwrs event
# Bypass requests only
echo "session.*.agent.*.bypass.request" | ollie-9p rdwrs event
# All bypass events (request + resolved)
echo "session.*.agent.*.bypass.>" | ollie-9p rdwrs event
```
## Filter Syntax
| Pattern | Matches |
|---------|---------|
| `*` | Exactly one segment |
| `>` | One or more segments (must be last) |
| `literal` | Exact match |
## Hierarchical Publishing
Events are published to their topic and all parent wildcards:
```
session.abc.agent.xyz.state
→ session.abc.agent.xyz.*
→ session.abc.agent.*
→ session.abc.*
→ session.*
→ *
```
This allows subscribing at any level of granularity.