Smith::LLM::Message
Inherits JSON::Serializable < Struct < Value < Object
Constructors
Class methods
Instance methods
Identity, so anything that wants to point at a message can survive compaction moving it. A position cannot: replacing a prefix with a summary shifts every index behind it, and whoever stored one has to be told. Nothing outside smith ever sees this — every provider builds its request from the role and the blocks.
Random per message rather than a counter: a fork copies a transcript, and two sessions handing out the same numbers would collide. Defaulted so messages saved before ids existed load and get one.
True for a user message the agent wrote, not the user: the stop-hook continuation and the output-limit continuation. Anything reasoning about turn boundaries has to skip these — three of them can sit inside a single real turn. Defaulted so sessions saved before the flag existed load.