Owned event types
events.iterate.com/agent/binding-setSets or enriches the typed external object this agent represents. Bindings are normally emitted atomically with integration agent creation, never inferred from paths. Contract-owned but reduced by integration processors, not by the agent.payload: { type, connection, channelId, threadTs, channelName?, url? } | { type, connection, cha…emitted by 3events.iterate.com/agent/configuredMerges a partial configuration into the agent's config; omitted keys keep their current values.payload: { config }emitted by 2 · consumed by 1events.iterate.com/agent/createdThe agent exists. Payload is open — provenance may ride along.payload: { …any }emitted by 2 · consumed by 1events.iterate.com/agent/llm-request-requestedThe recorded INTENT to run one LLM turn. Carries no id: the request's identity is the offset this event gets on commit. The reduce ignores it when no trigger is pending or a request already is open — a late debounced intent is a harmless stream fact.payload: { model, contractVersion?, expiresAt }emitted by 1 · consumed by 2events.iterate.com/agent/llm-request-settledThe ONE terminal fact for an LLM request (succeeded | failed | cancelled), pointing back at the requested event's offset. Idempotency-keyed on that offset, so a zombie driver racing a fresh incarnation or an interrupt collapses to one settlement.payload: { requestOffset, durationMs?, result }emitted by 1 · consumed by 1events.iterate.com/agent/llm-response-chunksA coalescing window of streamed chunks received from the transport, verbatim and in provider order. One event per flush (~150ms of streaming), not per chunk: journaling each chunk individually awaited a Durable Object commit per token and capped streaming at the append round-trip (~17 tok/s). Ephemeral: it reaches open browser/TUI connections but is excluded from default reads and durable subscriptions, and may be evicted — the durable truth is the assistant context item / llm-request-settled pair.payload: { chunks, llmRequestOffset, sequence }emitted by 1 · consumed by 1events.iterate.com/agent/pausedThe agent stopped scheduling turns (autonomous-loop breaker, or an operator). Mirrors stream/paused. A breaker pause names its causal trigger and reduces to nothing if newer external input already superseded it. The next external message resumes an applied pause; self-driven triggers stay parked.payload: { reason?, triggerOffset? }emitted by 1 · consumed by 1events.iterate.com/agent/resumedThe agent resumed scheduling turns. Mirrors stream/resumed.payload: { reason? }emitted by 1 · consumed by 1events.iterate.com/agent/runtime-changedThe agent's committed runtime transition, used to finalize server-owned feed presentation.payload: { runtime, sinceOffset, since }emitted by 1events.iterate.com/agent/summary-updatedUpdates the agent's human-readable summary. Omitted fields remain unchanged, null clears an optional field, and pinned false unpins. The same event is used whether an agent or a human initiated the edit; the processor's own conditional waiting clear ({ waitingFor: null, clearWaitingForThroughOffset }) only clears a wait established at or before the waking input's offset.payload: { title?, description?, activity?, waitingFor?, pinned? } | { waitingFor, clearWaitingF…emitted by 1 · consumed by 2events.iterate.com/agent/token-usage-reportedNormalized token counts and the model's context window for a successful LLM request. The processor translates vendor usage dialects (input_tokens vs prompt_tokens) at source, so consumers — the state tally, cost views, and compaction — see one shape.payload: { llmRequestOffset, model, maxContextTokens, inputTokens, outputTokens, cachedInputToke…emitted by 1 · consumed by 1events.iterate.com/agents/context-addedModel-visible context arrived (user message, developer note, assistant output, system item) — the everyday event, the only one most authors ever use. With `key`: keyed standing content, one event per section, and RE-ADDING A KEY IS THE UPDATE — an occurrence no request has sent yet coalesces in place (free; the whole birth window), a sent one appends at the tail at its moment in time with `supersedes` stamped by the fold. A multi-section write (a parsed prompt file) is a BATCH of these, one per section: the batch commits atomically in input order, so file order becomes offset order becomes document order. Without a key: one turn at its offset.payload: { role, content, mentions?, mentionResolution?, key?, files?, refs?, actor?, llmRequest…emitted by 5 · consumed by 1events.iterate.com/agents/context-rewrittenDeliberate HISTORY REWRITING — rare, audited, named to discourage casual use: it changes what PAST render positions contain, busting the provider cache from the standing document down, and a replaced covered behavioral rule leaves visible history contradicting the instruction (the scenario-3a anti-pattern in docs/prompt-sections-demo.html). For redaction (the author supplies the replacement text) and un-saying; the everyday update is re-adding the key on agents/context-added. `key: "*"` with delete removes EVERYTHING — standing document and timeline both — (guidance: don't, unless you want a lobotomised agent; the event's audit trail is the safeguard). Never triggers a turn by itself.payload: { op, key, content? }consumed by 1events.iterate.com/agents/web-message-sentA visible agent message was sent to the web UI — by a script (itx.chat.sendMessage), or by a userland response interpreter delivering prose extracted straight from an assistant output. The processor mirrors script-sent messages back into context as assistant history so the model sees what it sent; extracted messages carry llmRequestOffset and are NOT mirrored — their raw text is already in history as the assistant context item.payload: { message, files?, llmRequestOffset? }emitted by 1 · consumed by 1
Consumes
events.iterate.com/agent/createdThe agent exists. Payload is open — provenance may ride along.events.iterate.com/agent/configuredMerges a partial configuration into the agent's config; omitted keys keep their current values.events.iterate.com/agents/context-addedModel-visible context arrived (user message, developer note, assistant output, system item) — the everyday event, the only one most authors ever use. With `key`: keyed standing content, one event per section, and RE-ADDING A KEY IS THE UPDATE — an occurrence no request has sent yet coalesces in place (free; the whole birth window), a sent one appends at the tail at its moment in time with `supersedes` stamped by the fold. A multi-section write (a parsed prompt file) is a BATCH of these, one per section: the batch commits atomically in input order, so file order becomes offset order becomes document order. Without a key: one turn at its offset.events.iterate.com/agents/context-rewrittenDeliberate HISTORY REWRITING — rare, audited, named to discourage casual use: it changes what PAST render positions contain, busting the provider cache from the standing document down, and a replaced covered behavioral rule leaves visible history contradicting the instruction (the scenario-3a anti-pattern in docs/prompt-sections-demo.html). For redaction (the author supplies the replacement text) and un-saying; the everyday update is re-adding the key on agents/context-added. `key: "*"` with delete removes EVERYTHING — standing document and timeline both — (guidance: don't, unless you want a lobotomised agent; the event's audit trail is the safeguard). Never triggers a turn by itself.events.iterate.com/agents/web-message-sentA visible agent message was sent to the web UI — by a script (itx.chat.sendMessage), or by a userland response interpreter delivering prose extracted straight from an assistant output. The processor mirrors script-sent messages back into context as assistant history so the model sees what it sent; extracted messages carry llmRequestOffset and are NOT mirrored — their raw text is already in history as the assistant context item.events.iterate.com/agent/llm-request-requestedThe recorded INTENT to run one LLM turn. Carries no id: the request's identity is the offset this event gets on commit. The reduce ignores it when no trigger is pending or a request already is open — a late debounced intent is a harmless stream fact.events.iterate.com/agent/llm-request-settledThe ONE terminal fact for an LLM request (succeeded | failed | cancelled), pointing back at the requested event's offset. Idempotency-keyed on that offset, so a zombie driver racing a fresh incarnation or an interrupt collapses to one settlement.events.iterate.com/agent/token-usage-reportedNormalized token counts and the model's context window for a successful LLM request. The processor translates vendor usage dialects (input_tokens vs prompt_tokens) at source, so consumers — the state tally, cost views, and compaction — see one shape.events.iterate.com/agent/summary-updatedUpdates the agent's human-readable summary. Omitted fields remain unchanged, null clears an optional field, and pinned false unpins. The same event is used whether an agent or a human initiated the edit; the processor's own conditional waiting clear ({ waitingFor: null, clearWaitingForThroughOffset }) only clears a wait established at or before the waking input's offset.events.iterate.com/agent/pausedThe agent stopped scheduling turns (autonomous-loop breaker, or an operator). Mirrors stream/paused. A breaker pause names its causal trigger and reduces to nothing if newer external input already superseded it. The next external message resumes an applied pause; self-driven triggers stay parked.events.iterate.com/agent/resumedThe agent resumed scheduling turns. Mirrors stream/resumed.events.iterate.com/capability-host/script-run-requestedowned by capability-hostA script should run in this capability scope. Before any attempt starts, the code is typechecked against the scope's capability types: a script with a PROVABLE error — a syntax error, or a near-miss typo where the compiler names the fix ("Did you mean 'get'?") — settles straight to an error completion carrying the compiler errors, without ever running (no started event). Everything less certain runs: capabilities are provided dynamically and declared types can lag the runtime, so bare property/argument mismatches, unknown/untyped capabilities, non-async block shapes, and checker failures all let the script run unchecked.events.iterate.com/capability-host/script-run-settledowned by capability-hostThe one durable settlement for a script obligation. Failures classify where execution stopped, whether script code may have run, and whether cancellation can prove external work ended.events.iterate.com/capability-host/preamble-setowned by capability-hostUpserts one preamble entry: TypeScript injected above every later script in this scope, at typecheck and at execution. Keyed — a re-set at the same key replaces the code but keeps the entry's injection position (first-set offset). Entries recorded through setPreamble were compiled against the scope's assembled preamble at set time; a stale entry that stops compiling later never blocks a script (the run gate downgrades preamble-line errors to unchecked).events.iterate.com/capability-host/preamble-removedowned by capability-hostRemoves one preamble entry by key; unknown keys reduce to a no-op.events.iterate.com/stream/error-occurredowned by coreRecords a structured stream or processor runner error.
Emits
events.iterate.com/agent/runtime-changedThe agent's committed runtime transition, used to finalize server-owned feed presentation.events.iterate.com/agents/context-addedModel-visible context arrived (user message, developer note, assistant output, system item) — the everyday event, the only one most authors ever use. With `key`: keyed standing content, one event per section, and RE-ADDING A KEY IS THE UPDATE — an occurrence no request has sent yet coalesces in place (free; the whole birth window), a sent one appends at the tail at its moment in time with `supersedes` stamped by the fold. A multi-section write (a parsed prompt file) is a BATCH of these, one per section: the batch commits atomically in input order, so file order becomes offset order becomes document order. Without a key: one turn at its offset.events.iterate.com/agents/web-message-sentA visible agent message was sent to the web UI — by a script (itx.chat.sendMessage), or by a userland response interpreter delivering prose extracted straight from an assistant output. The processor mirrors script-sent messages back into context as assistant history so the model sees what it sent; extracted messages carry llmRequestOffset and are NOT mirrored — their raw text is already in history as the assistant context item.events.iterate.com/agent/llm-request-requestedThe recorded INTENT to run one LLM turn. Carries no id: the request's identity is the offset this event gets on commit. The reduce ignores it when no trigger is pending or a request already is open — a late debounced intent is a harmless stream fact.events.iterate.com/agent/llm-request-settledThe ONE terminal fact for an LLM request (succeeded | failed | cancelled), pointing back at the requested event's offset. Idempotency-keyed on that offset, so a zombie driver racing a fresh incarnation or an interrupt collapses to one settlement.events.iterate.com/agent/llm-response-chunksA coalescing window of streamed chunks received from the transport, verbatim and in provider order. One event per flush (~150ms of streaming), not per chunk: journaling each chunk individually awaited a Durable Object commit per token and capped streaming at the append round-trip (~17 tok/s). Ephemeral: it reaches open browser/TUI connections but is excluded from default reads and durable subscriptions, and may be evicted — the durable truth is the assistant context item / llm-request-settled pair.events.iterate.com/agent/token-usage-reportedNormalized token counts and the model's context window for a successful LLM request. The processor translates vendor usage dialects (input_tokens vs prompt_tokens) at source, so consumers — the state tally, cost views, and compaction — see one shape.events.iterate.com/agent/summary-updatedUpdates the agent's human-readable summary. Omitted fields remain unchanged, null clears an optional field, and pinned false unpins. The same event is used whether an agent or a human initiated the edit; the processor's own conditional waiting clear ({ waitingFor: null, clearWaitingForThroughOffset }) only clears a wait established at or before the waking input's offset.events.iterate.com/agent/pausedThe agent stopped scheduling turns (autonomous-loop breaker, or an operator). Mirrors stream/paused. A breaker pause names its causal trigger and reduces to nothing if newer external input already superseded it. The next external message resumes an applied pause; self-driven triggers stay parked.events.iterate.com/agent/resumedThe agent resumed scheduling turns. Mirrors stream/resumed.events.iterate.com/capability-host/script-run-requestedowned by capability-hostA script should run in this capability scope. Before any attempt starts, the code is typechecked against the scope's capability types: a script with a PROVABLE error — a syntax error, or a near-miss typo where the compiler names the fix ("Did you mean 'get'?") — settles straight to an error completion carrying the compiler errors, without ever running (no started event). Everything less certain runs: capabilities are provided dynamically and declared types can lag the runtime, so bare property/argument mismatches, unknown/untyped capabilities, non-async block shapes, and checker failures all let the script run unchecked.events.iterate.com/stream/error-occurredowned by coreRecords a structured stream or processor runner error.