mirror of
https://github.com/fabro-sh/fabro.git
synced 2026-08-28 05:27:41 +00:00
`agent.output.start` was not the only phantom entry in the event catalog. Cross-checking every documented `### \`name\`` heading against `is_known_event_name()` turned up six more, in three kinds: Filtered before the durable pipeline. `agent.output.replace`, `agent.text.delta`, `agent.reasoning.delta`, and `agent.tool.output.delta` are real `AgentEvent` variants, but `is_streaming_noise()` drops them before the emitter builds a `RunEvent`, so they never reach the run store, SSE, `fabro events`, or a JSONL sink. Each was documented with a full envelope example including `id`, `ts`, and `node_id` — fields they never get. Replaced with one section that names them and says why they have no envelope, since their existence is worth knowing and their non-durability is exactly what the examples obscured. Does not exist at all. `agent.skill.expanded` had its own section, and a note elsewhere claiming `AgentEvent::SkillExpanded` "remains classified as streaming noise". That variant was removed from the code; `rg SkillExpanded lib/` returns nothing. Slash-skill expansion is reported through the durable `agent.skill.activated` with `source == "slash"`. Wrong name. `asset.captured` documents properties that match `ArtifactCapturedProps` field for field, but the emitted name is `artifact.captured`. A consumer matching the documented string would silently never fire. The catalog opens by describing itself as every serialized envelope, so an entry in it is a claim a consumer can write code against. All documented names now resolve. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| brainstorms | ||
| ideation | ||
| internal | ||
| plans | ||
| public | ||
| superpowers | ||