Skip to content

agent-session-kit 0.5.0

Choose a tag to compare

@github-actions github-actions released this 21 Aug 10:15
· 53 commits to main since this release

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_metadata record names, without the rest of the turn having to decode.
    decodeTurn(blob:) answers nil for 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 — field 1.9 carries no 4 — while 1.19 and 1.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.display orders the three names for a reader — label, router
    alias, internal enum — rather than for a price list, which is Turn.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. steps does 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_uris is 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.model from the conversation's own gen_metadata, cached
    against the store and its WAL. Nothing else in the live layer could: the
    tailer reads steps, and the summaries index records no model at all.

Changed

  • The live layer names an Auto Review run the same way the index does.
    CodexLiveAdapter seeds a guardian rollout's SessionIdentity.variant with
    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.providerVariant only, 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_id is 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.