Persist entries immediately, structured-clone ModelMessage, and add migration for new message format#7
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
ModelMessageJSON directly, which is incompatible with older payloads and requires a DB reset.Description
packages/core/migrations/0002_drop_incompatible_sessions.sqlthat deletesentriesandsessionsto reset persisted state for the new format.Messagesto structured-clone and validate incomingModelMessageinstances, exposepushAllreturning cloned messages, and addslice,replace, and helper cloning logic inpackages/core/src/messages.ts.packages/core/src/db/entry-types.tssoMessageEntry.dataisModelMessage | { type: "system"; content: string }to support legacy system entries.packages/core/src/session/context.tsso they map toModelMessagewithrole: "system".AgentSessionDO(packages/core/src/agent-session-do.ts) to remove deferredpendingEntriesbatching and instead: ensure thesessionsrow is committed lazily via#ensureSessionCommitted, persist each new entry immediately withappendEntry(renamed importpersistEntry), update#leafId/#updatedAton write, map in-memory cloned messages to persisted entry IDs, and persist compaction entries immediately.specs/core.mdto document immediate persistence and the new message format behaviour.Testing
npm run build(typecheck) and the command completed successfully.npm testand all tests passed.Codex Task