Skip to content

feat(convo): emit model on conversation.append; kind agent-coding-session v1.2.0#132

Open
akesling wants to merge 1 commit into
mainfrom
akesling/append-model-field
Open

feat(convo): emit model on conversation.append; kind agent-coding-session v1.2.0#132
akesling wants to merge 1 commit into
mainfrom
akesling/append-model-field

Conversation

@akesling

@akesling akesling commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Reported by Pathbase: empathic/pathbase#225 — consumers reading structural.model on conversation.append always get null, because the model is encoded only in the actor string (agent:<model>) and meta.actors.

Change

  • Emit model on conversation.append (toolpath-convo::derive): the structural payload carries the model that produced the turn whenever the source session records one; the key is omitted otherwise — no "unknown" sentinel in payloads. Single emitter, so all seven providers (claude, gemini, codex, pi, cursor, opencode, copilot) gain it at once. Actor strings (including agent:unknown) and meta.actors are unchanged.
  • Extraction round-trips it: extract now prefers the payload model and falls back to parsing the agent:<model> actor for pre-v1.2.0 documents.
  • Kind agent-coding-session v1.2.0: new bundled schema documenting the optional model property on conversationAppend (only semantic delta from v1.1.0), registered in BUNDLED_KINDS; PATH_KIND_AGENT_CODING_SESSION now stamps the v1.2.0 URI with the previous URI preserved as ..._V1_1_0; site spec page + indices updated. Consumers that match the kind by slug/major (pathbase does) are unaffected.
  • Crate versions bumped in-commit per the kind-URI-change policy established by the v1.1.0 adoption: toolpath 0.8.0, toolpath-convo 0.12.0, toolpath-claude 0.13.0, remaining derivers and CLIs accordingly; Cargo.lock, site/_data/crates.json, and the toolpath-cli shim kept in sync. All bumps are breaking-level under 0.x caret semantics, so downstream pins do not auto-flow.

The companion read-side change (model resolution with actor-def and actor-suffix fallbacks, which also fixes already-uploaded documents retroactively) is empathic/pathbase#304.

Testing

Full quality gate green: cargo test --workspace (1786 tests) with -D warnings, clippy (workspace + all-targets), fmt, rustdoc -D warnings, path p validate examples/*.json, site build (12 pages, v1.2.0 schema materialized), shim cargo check. New tests pin: payload model present when the session records one, absent otherwise (actor stays agent:unknown), payload preferred over actor parse on extract, v1.2.0 bundled/newest-resolution alongside exact-version pinning of v1.0.0/v1.1.0.


View with Codesmith Autofix with Codesmith
Need help on this PR? Tag /codesmith with what you need. Autofix is disabled.

…sion v1.2.0

Assistant turns' structural payloads now carry the model that produced
them, so documents are self-describing without parsing the actor
string. The key is emitted only when the source session records a
model; extraction prefers the payload field and falls back to the
agent:<model> actor parse for pre-v1.2.0 documents. Actor strings and
meta.actors are unchanged.

The optional model field is documented in a new agent-coding-session
v1.2.0 kind (bundled schema, site spec page); derived documents are
stamped with the v1.2.0 URI. Crates bumped per the kind-URI-change
policy: every deriver and the CLIs.

Reported by Pathbase (pathbase#225).
@github-actions

Copy link
Copy Markdown

🔍 Preview deployed: https://40a73a38.toolpath.pages.dev

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant