Skip to content

feat(sessions): list and resume past sessions - #51

Merged
danielkov merged 1 commit into
mainfrom
feat/session-listing
Aug 29, 2026
Merged

feat(sessions): list and resume past sessions#51
danielkov merged 1 commit into
mainfrom
feat/session-listing

Conversation

@danielkov

Copy link
Copy Markdown
Contributor

Summary

Adds a workspace-scoped catalog of durable sessions and exposes it through kit sessions, the TUI /sessions picker, and ACP v1/v2 session/list. Session listings are newest-first and include stable titles, current previews where supported, and updated timestamps.

Motivation

Persisted sessions were resumable only when the caller already knew the session ID. This makes past sessions discoverable from Kit's local interfaces and from protocol clients.

Impact

Users can list and resume prior sessions without copying IDs from earlier output. ACP v1 clients can use the advertised optional list capability, while ACP v2 clients use the standard session listing method. Unbound legacy transcripts remain resumable by a known ID but are excluded from discovery until they are bound to a workspace.

Technical details

Catalog isolation and compatibility

The shared catalog resolves scoped, global, and legacy transcript authorities without changing the persistent schema. It preserves stable titles through compaction and migration, skips malformed individual entries, sanitizes display metadata, and prevents metadata from leaking across workspaces.

Non-blocking protocol and TUI discovery

ACP handlers and the TUI run filesystem discovery off their async event paths. TUI updates and catalog responses carry attachment generations so stale events cannot cross session transitions.

ACP behavior

ACP v1 advertises sessionCapabilities.list and implements exact cwd filtering plus opaque cursor pagination. ACP v2 reuses the same catalog. Both versions report malformed cursors as invalid parameters.

@danielkov
danielkov force-pushed the feat/session-listing branch from d843226 to ab3f010 Compare August 29, 2026 13:03
@danielkov
danielkov enabled auto-merge (squash) August 29, 2026 13:04
@danielkov
danielkov merged commit a9f7d41 into main Aug 29, 2026
2 checks passed
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