Skip to content

checkpoints updates - #2798

Closed
Charlesthebird wants to merge 2 commits into
mainfrom
charlesthebird/snapshotsPage
Closed

Charlesthebird wants to merge 2 commits into
mainfrom
charlesthebird/snapshotsPage

Conversation

@Charlesthebird

@Charlesthebird Charlesthebird commented Sep 10, 2026 •

Copy link
Copy Markdown
Collaborator

Removing this in favor of the inline checkpoint deletion

@github-actions github-actions Bot added the enhancement New feature or request label Sep 10, 2026
Base automatically changed from charlesthebird/chatCheckpoints to main September 11, 2026 13:34
@github-actions github-actions Bot added enhancement New feature or request and removed enhancement New feature or request labels Sep 11, 2026
Charlesthebird and others added 2 commits September 11, 2026 09:40
… and sorts

Closes #2783.

A checkpoint pins a copy of the conversation's runtime in the substrate. They were
reachable only from inside the conversation they belong to and could not be removed
at all, while duplicating a chat takes one every time — so a cluster accumulated
snapshots nobody had asked for and nobody could find.

The page lists them, searches them, and deletes them singly or in a batch. A batch
is one request each, sequential, under one `toast.promise`; a failure does not stop
the run, each is logged, and the toast says how it went.

`ListCheckpoints` does the narrowing: it takes a filter, a sort column and an
offset, answers with the count the filter matched, and `agent_instance_id` became
optional so one request spans a caller's conversations. Reading everything into the
browser and filtering there reports "no matches" about rows it never fetched.

Rows are named, searched and sorted by the conversation's name as recorded when the
snapshot was taken — the only name a query can reach, since the current one lives
inside an encoded payload.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Nicholas Bucher <behappy54321@gmail.com>
…lper

The three `check()` calls on that table are the pattern that failed the merge
queue: antd's control ticks on a later commit than the click, and `check()`
re-reads too early, clicks again, and toggles it back off.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Nicholas Bucher <behappy54321@gmail.com>
@Charlesthebird
Charlesthebird force-pushed the charlesthebird/snapshotsPage branch from dba9d71 to 3c9fbf7 Compare September 11, 2026 13:42
@github-actions github-actions Bot added enhancement New feature or request and removed enhancement New feature or request labels Sep 11, 2026
ricardomiguel-os pushed a commit to ricardomiguel-os/kagent that referenced this pull request Sep 11, 2026
…te a chat (kagent-dev#2775)

---
*🤖 written by Claude (start)*

Checkpoint a turn in a chat, fork from a checkpoint, duplicate a chat,
and the agent rail work that came out of using it.

The Snapshots page and the `ListCheckpoints` change it needs are stacked
on top, in kagent-dev#2798.

## Checkpoints and forks

- The Checkpoint button beside Send saves the conversation's current
turn boundary. It belongs on the composer rather than a message because
`CreateCheckpoint` takes no cutoff — what it saves is always "as it
stands now" — and it is disabled during a turn and once the latest
boundary is saved.
- A saved boundary is a line under the turn it was taken at, with `Fork`
on it. The line is the promise: everything above it travels into a fork
and nothing below it does. Matched by `headTaskId` against the turn each
message carries, so the lines survive a reload.
- `Duplicate chat` in each rail row's menu is a checkpoint of the
conversation plus a fork of it, and the copy opens.
- A fork refetches its own transcript rather than inheriting the page's,
so it never shows its source's boundaries as its own.

## The agent rail

Rows gained the room and the states they were missing: a menu on every
row carrying Chat details and Share chat as well as rename, duplicate
and delete; checkbox hover and press states; controls that line up
whether or not the list scrolls. The three columns fold as the window
narrows — the agent panel at 1440, the application sidebar at antd's
`xl`, the rail at 1040 — and unfold again. The agent panel's drag handle
is gone with `ResizableAside`: its wrapper clipped to a fixed width, so
dragging widened an aside inside a box that never grew.

The create buttons on the list pages are title-cased, which is unrelated
to the rest and was asked for separately.

## Testing

1. `ENABLE_MOCK_UI=true yarn dev`, open a conversation, and press
Checkpoint beside Send. A line appears under the last turn and is still
there after a reload.
2. Press `Fork` on an early line. The fork opens holding what was above
it and nothing below.
3. Open a rail row's menu and choose `Duplicate chat`. The copy opens
with the whole transcript.
4. Narrow the window from wide: the agent panel folds, then the sidebar,
then the rail.

The reel in the comments shows this against a real cluster: two
checkpoints three turns apart, a fork from each, and the earlier fork
knowing only what was above its line. Reels about the Snapshots page
moved with it to kagent-dev#2798 and are marked outdated here.

---
*🤖 written by Claude (end)*

---------

Signed-off-by: Nicholas Bucher <behappy54321@gmail.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
@github-actions github-actions Bot removed the enhancement New feature or request label Sep 14, 2026
@github-actions github-actions Bot added the enhancement New feature or request label Sep 14, 2026
@Charlesthebird
Charlesthebird deleted the charlesthebird/snapshotsPage branch September 14, 2026 15:24
@Charlesthebird
Charlesthebird restored the charlesthebird/snapshotsPage branch September 14, 2026 15:24
@Charlesthebird Charlesthebird changed the title feat: a Snapshots page, and a checkpoint listing that pages, searches and sorts checkpoints updates Sep 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant