agent-session-kit 0.5.0
AntiGravity sessions arrive with a workspace and a model again, and a Codex
Auto Review names the thread it reviewed in its live identity.
Added
AntigravityGenMetadataReader.modelNames(blob:)— the model a
gen_metadatarecord names, without the rest of the turn having to decode.
decodeTurn(blob:)answersnilfor a record with no wall-clock timestamp,
which is right for a cost scanner: a usage row that cannot be placed in a day
cannot be billed to one. AntiGravity builds from 2026-08 write exactly that
record — field1.9carries no4— while1.19and1.20["model_enum"]
name the model as they always did, so every recent conversation on the corpus
this was found on answered "no model" to a question its store could answer.
ModelNames.displayorders the three names for a reader — label, router
alias, internal enum — rather than for a price list, which isTurn.model's
order and is unchanged.AntigravityConversationReader.recentModel(limit:)— the newest model a
conversation billed against, decoded from a bounded window at the end of
gen_metadata.stepsdoes not record it: a reply and a tool call look the
same whichever model served them.
Fixed
- An AntiGravity session arrives with the directory it was launched in.
conversation_summaries.workspace_urisis the conversation's own row and
still wins, but it is populated for a fraction of the databases on disk — the
store goes stale, and a conversation the CLI opened non-interactively never
reaches it — so a live board filed most of a day's AntiGravity work under no
project at all. Two side files the CLI writes answer for the rest:
history.jsonl, which records the directory a person typed a prompt in, and
log/cli-<stamp>.log, whose startup banner names the directories the server
was launched over and whose body names every conversation that run handled.
One server, one workspace. Both are read bounded and cached against their own
mtimes, so the run still being written is the only one re-read, a sweep that
changes nothing reads nothing, and a conversation whose row already had a
workspace costs neither. The conversation database is not a third source — it
records a trajectory, a cascade, and a project label, and nowhere in it is the
directory the CLI was launched in. - A live AntiGravity identity carries its model. Discovery seeds
SessionIdentity.modelfrom the conversation's owngen_metadata, cached
against the store and its WAL. Nothing else in the live layer could: the
tailer readssteps, and the summaries index records no model at all.
Changed
- The live layer names an Auto Review run the same way the index does.
CodexLiveAdapterseeds a guardian rollout'sSessionIdentity.variantwith
auto-review:<root session id>rather than its originator, so
CodexSessionAdapter.autoReviewParentSessionID(providerVariant:)is one
parse for a session whichever layer produced it. 0.4.0 added the encoding to
SessionSummary.providerVariantonly, which left a host tailing live
sessions unable to tell a review from an ordinary thread without reading the
rollout header itself. An ordinary thread still carries its originator, and
nothing consults the variant for a Codex resume.parent_thread_idis now
read as the root as well — but only for a rollout whose header already
identifies it as a guardian run, where it is the last thing pointing
anywhere; on an ordinary thread it can name an intermediate sub-agent and is
still not trusted.