Agent Observe
Observe the current agent's nuclear family through the local daemon: parent,
siblings, direct children, and self. list_agents is the one family roster and
covers every member agent_message.send can reach. get_agent and
recent_messages hydrate an inactive child before reading it. They cannot read
a root sibling that has no live session in this worker.
This skill is read-only: it can list family sessions, inspect one session, and fetch
bounded recent message previews. It cannot prompt, steer, clear, kill, rename, or
otherwise mutate another session.
Call directly from the kernel:
children = await rlm.list_subagents()
child = next((item for item in children if item.active_session_id), None)
if child is not None:
worker = await agent_observe.get_agent(child.session_name)
recent = await agent_observe.recent_messages(child.session_name, limit=6)
# Deletion is a parent-owned RLM operation, not an observe mutation:
await rlm.delete_subagent(child)
API
await agent_observe.list_agents() returns current and agents, the full
nuclear family: parent, siblings, and direct children, active or not. Each
agent carries sessionId, optional sessionName, relationship
(parent/sibling/child), status, isSessionActive, and the counts and
message previews known for it: latestMessage for a live session,
firstMessage for an inactive child. A member with no live session has
no activeSessionId and no live detail; address it with agent_message.send
using its relationship plus its sessionName, or its sessionId when the
member has no name. For direct children,
await rlm.list_subagents() also exposes parent-owned lifecycle handles.
await agent_observe.get_agent(target) returns agent, where agent
contains one live agent summary. target is resolved like other live-session
selectors: active id, session id/name, or unambiguous suffix.
await agent_observe.recent_messages(target, limit=8, max_chars=800)
returns up to limit recent bounded message previews for the target session.
limit must be 1-50, and max_chars must be 80-2000.
Safety
- This skill is read-only and exposes no mutation commands.
- Targets outside the nuclear family are rejected; transcript reads follow the
same family rule as messaging.
- Message access is bounded by count and per-message character limit.
- Prefer status and recent previews for orchestration. Ask the user before
using observed context to steer or message another session.
1---2name: agent-observe3description: Read-only roster and observation of an agent's parent, siblings, and direct children. Use to discover reachable agents and to inspect family status and bounded recent-message previews without mutating sessions.4---56# Agent Observe78Observe the current agent's nuclear family through the local daemon: parent,9siblings, direct children, and self. `list_agents` is the one family roster and10covers every member `agent_message.send` can reach. `get_agent` and11`recent_messages` hydrate an inactive child before reading it. They cannot read12a root sibling that has no live session in this worker.13This skill is read-only: it can list family sessions, inspect one session, and fetch14bounded recent message previews. It cannot prompt, steer, clear, kill, rename, or15otherwise mutate another session.1617Call directly from the kernel:1819```python20children = await rlm.list_subagents()21child = next((item for item in children if item.active_session_id), None)22if child is not None:23 worker = await agent_observe.get_agent(child.session_name)24 recent = await agent_observe.recent_messages(child.session_name, limit=6)25 # Deletion is a parent-owned RLM operation, not an observe mutation:26 await rlm.delete_subagent(child)27```2829## API3031- `await agent_observe.list_agents()` returns `current` and `agents`, the full32 nuclear family: parent, siblings, and direct children, active or not. Each33 agent carries `sessionId`, optional `sessionName`, `relationship`34 (`parent`/`sibling`/`child`), `status`, `isSessionActive`, and the counts and35 message previews known for it: `latestMessage` for a live session,36 `firstMessage` for an inactive child. A member with no live session has37 no `activeSessionId` and no live detail; address it with `agent_message.send`38 using its `relationship` plus its `sessionName`, or its `sessionId` when the39 member has no name. For direct children,40 `await rlm.list_subagents()` also exposes parent-owned lifecycle handles.41- `await agent_observe.get_agent(target)` returns `agent`, where `agent`42 contains one live agent summary. `target` is resolved like other live-session43 selectors: active id, session id/name, or unambiguous suffix.44- `await agent_observe.recent_messages(target, limit=8, max_chars=800)`45 returns up to `limit` recent bounded message previews for the target session.46 `limit` must be 1-50, and `max_chars` must be 80-2000.4748## Safety4950- This skill is read-only and exposes no mutation commands.51- Targets outside the nuclear family are rejected; transcript reads follow the52 same family rule as messaging.53- Message access is bounded by count and per-message character limit.54- Prefer status and recent previews for orchestration. Ask the user before55 using observed context to steer or message another session.