fix(tui): restore compaction model marker

This commit is contained in:
Kit Langton 2026-07-14 11:35:12 -04:00
commit 76f205d260
13 changed files with 105 additions and 19 deletions

View file

@ -69,6 +69,7 @@ export type AutoInput = {
readonly sessionID: SessionSchema.ID
readonly messages: readonly SessionMessage.Info[]
readonly model: Model
readonly ref: SessionMessage.Assistant["model"]
}
export type ManualInput = {
@ -80,6 +81,7 @@ export type ManualInput = {
type Plan = {
readonly sessionID: SessionSchema.ID
readonly model: Model
readonly ref: SessionMessage.Assistant["model"]
readonly reason: SessionMessage.Compaction["reason"]
readonly prompt: string
readonly recent: string
@ -291,6 +293,7 @@ const make = (dependencies: Dependencies) => {
yield* dependencies.events.publish(SessionEvent.Compaction.Ended, {
sessionID: plan.sessionID,
reason: plan.reason,
model: plan.ref,
text: summary,
recent: plan.recent,
})
@ -302,6 +305,7 @@ const make = (dependencies: Dependencies) => {
return yield* execute({
sessionID: input.sessionID,
model: input.model,
ref: input.ref,
reason: "auto",
...content,
})
@ -350,6 +354,7 @@ const make = (dependencies: Dependencies) => {
return yield* execute({
sessionID: input.session.id,
model: resolved.model,
ref: resolved.ref,
reason: "manual",
inputID: input.inputID,
...content,

View file

@ -470,6 +470,7 @@ export function update(adapter: Adapter, event: SessionEvent.Event) {
...current,
status: "completed",
reason: event.data.reason,
model: event.data.model,
summary: event.data.text,
recent: event.data.recent,
})
@ -482,6 +483,7 @@ export function update(adapter: Adapter, event: SessionEvent.Event) {
status: "completed",
metadata: event.metadata,
reason: event.data.reason,
model: event.data.model,
summary: event.data.text,
recent: event.data.recent,
time: { created: event.created },

View file

@ -187,7 +187,7 @@ const layer = Layer.effect(
const providerMetadataKey = model.route.providerMetadataKey ?? model.provider
const history = yield* SessionHistory.entriesForRunner(db, session.id, instructions)
const context = history.entries.map((entry) => entry.message)
const compactionInput = { sessionID: session.id, messages: context, model }
const compactionInput = { sessionID: session.id, messages: context, model, ref: resolved.ref }
if (compaction.required(compactionInput) && !(yield* SessionPending.compaction(db, session.id))) {
const compacted = yield* compaction.compact(compactionInput)
if (compacted.status === "completed") return { _tag: "RestartAfterCompaction", step: currentStep } as const
@ -331,8 +331,8 @@ const layer = Layer.effect(
recoverOverflow &&
!publisher.hasRetryEvidence() &&
isContextOverflowFailure(overflowFailure ?? streamFailure) &&
(yield* restore(recoverOverflow({ sessionID: session.id, messages: context, model }))).status ===
"completed"
(yield* restore(recoverOverflow({ sessionID: session.id, messages: context, model, ref: resolved.ref })))
.status === "completed"
)
return { _tag: "RestartAfterOverflowCompaction", step: currentStep } as const