Dashboard › opencode › Distillation
fd0e9b98-6c63-4c2b-b065-31ad6b05c7bd["lore_tm_v1_fCjWtz7lG0HzGIrTtDrXll13R9V3TPxvEDB3bnc14Sk","lore_tm_v1_o9jGBu2_1xVKgTbsIlBHjmVXA5_GYfASkMzRJhDwD5g","lore_tm_v1_NS-3FonU1ExCG_HZvfZ6D2GoTcQtdpt_V5ae3NgfnbA","lore_tm_v1_lvDE-lr3AwGIIcSlhan2gwdy_FJn0LuGxqJlDXD853Y","lore_tm_v1_mK-HeYulJ8RMuLjySCNAKToUo2GYJLIIHNWb8rI7veM","lore_tm_v1_TFLXaHeuF2ubwp4NcFxKX0dDNUxp32f94goS2qTdKEQ","lore_tm_v1_ghEcfm0vUAkataCnNSvXPzR9XF1uQbpRFyuFlmvalT4"]
Date: Sep 17, 2026
createLLMEventPublisher implementation for review. It lazily creates an assistant message, tracks text and tool state by event/call ID, publishes text/tool lifecycle events, settles tool outputs, and exposes assistant failure and interruption handling.createLLMEventPublisher treats invalid event ordering as fatal programmer-state errors, including Tool input end before start: ${callID} and Tool input delta before start: ${event.id}./tmp/opencode/session-recovery-v23-review/packages/core/src/event.ts.packages/core/src/event.ts, publishEvent() rejects commit hooks for non-durable definitions with InvalidDurableEventError and message "Local commit hooks require a durable event".commit(seq) hook, upsert EventSequenceTable, insert into EventTable, wake subscribers for the committed aggregate, attach { aggregateID, seq, version } to the payload, and notify listeners.InvalidDurableEventError stating Replay diverged at aggregate ${aggregateID} sequence ${input.seq}.packages/core/src/event.ts: replay can claim an unowned EventSequenceTable row using input.ownerID; when a row already has a different ownerID, the commit returns without appending; newly inserted sequence rows store owner_id: input?.ownerID.Sequence mismatch for aggregate ${aggregateID}: expected ${latest + 1}, got ${seq} and rejects reuse of an event ID at another aggregate/sequence with Event ${event.id} already exists at aggregate ${stored.aggregateID} sequence ${stored.seq}.observe(): non-interruption listener failures are logged as "Event listener failed" with eventID, eventType, and cause; typed and global PubSub channels are then notified.SessionAlreadyProjected, SessionMessageTable, recovery continuation projection based on executionID, usage accounting through applyUsage, and projectors for events including SessionV1.Event.Updated, SessionEvent.ModelSwitched, SessionEvent.Prompted, and SessionEvent.Tool.Called.